about 4 years ago Syntax Podcast
Supper Club × Turborepo with Jared Palmer
- 00:27 Introducing the Syntax Supper Club podcast series
- 02:33 TurboRepo abstracts monorepo complexity into a lightweight build system
- 03:16 TurboRepo makes large-scale development techniques accessible
- 04:32 TurboRepo started as a way to add monorepo support to TSDX
- 05:56 Large companies like Google use advanced build systems like Bazel
- 06:49 These systems create a DAG of build tasks to run incrementally
- 08:22 These systems haven't been adopted much in frontend yet
- 08:57 TurboRepo focuses on incremental builds and remote caching
- 09:34 TurboRepo runs tasks in parallel and dependency order
- 10:19 TurboRepo can reuse cached artifacts instead of rebuilding
- 11:17 The cache can be shared between developers and CI
- 15:43 Sponsor break - Whiskey Web and Whatnot podcast
- 17:18 Adding TurboRepo to an existing monorepo takes about a day
- 20:04 TurboRepo works with all major package managers
- 21:26 TurboRepo can use environment variables to determine cache validity
- 24:31 TurboRepo binaries are packaged for distribution on NPM
- 26:38 TurboRepo can cache anything from logs to video encoding
- 28:06 Sharing image processing cache could help Gatsby performance
- 29:43 TurboRepo can help coordinate builds across packages
- 31:06 Many of Jared's projects start by solving his own problems
- 33:46 Good tools should save time with easy adoption
- 36:48 Focus on solving problems rather than creating new ones
- 37:23 Rapid-fire questions section
- 43:08 TurboRepo CLI is written in Go, packaged for NPM
- 46:39 Having a small side project helps you learn and progress
- 49:02 Project-driven learning is best for self-taught developers
- 52:03 Excited about no-config development workflows in the future
- 53:15 How Jared's TurboRepo project was acquired by Vercel
- 55:11 Vercel is working on edge rendering and React server components
- 56:03 Shameless plugs section
Shameless plugs section
Guest 3
quality. Just it's glass.
Wes Bos
Yep. Yep. Yeah. I'm sure you you know you've been to some sweet coffee shops then.
Wes Bos
Yeah. There's a night, like, 2 bait like, I guess, shameless plug picks.
Wes Bos
Those are great. You're from New York. Right?
Wes Bos
Soma.
Wes Bos
3rd pick,
Wes Bos
Yeah.
Guest 3
totally out of the blue,
Wes Bos
Like, you can do that like, like, you know, the pour over with the tiny little kettle that people do?
Wes Bos
Mhmm.
Guest 3
a modern front end web web application, whether it be Next. Js, Gatsby, Remix, Cell,
Wes Bos
and I'm sure everyone's gonna love it. I I know I did. Yeah. I'm gonna go out and implement You can use a yarn, NPM. Right? Like, you you've figured out how to make it work with all 3 of those.
Guest 3
on Twitter.
Guest 3
to deploy Twitter has one called pants, The side projects will help you outputs. So Yeah. Is immensely important for your Pretty nice. It's a it's a random, like, Relevant podcast. Yeah. Oh, yeah. We we've got the that's a sick pick.
Guest 3
I guess, for cell for cell .com,
Guest 3
would be I just got a new water bottle. Kinda kinda Man. You know, what whatever you want if as long as you're here, keep them pure and agree to the rules.
Wes Bos
Awesome. Jared, thank you so much for coming on. That was super informational,
Guest 3
probably the easiest way be the silver bullet.
Wes Bos
Downloads are through the roof, and hopefully, that's a good indicator of of of adoption
Wes Bos
and or so. But thanks for having me. I know this is fun. I've been a listener for a long time and We're so glad to to get the call out. Well, thanks, Jared. Alright. Thanks again. I'll talk to you later. Peace. Peace.
Guest 3
It's kinda have this rubbery thing there. It's pretty pretty pretty pretty.
Guest 3
It's sweet, s o m a, but I was getting, like, pitches and stuff because the the the blues were loud and then when I was recording podcasts, same thing, and, like, Something like that, but, like, more nuanced and, like, probably first of all, Guillermo would probably invest in it if I did, so, like, there's that. But
Wes Bos
And
Wes Bos
digging it. Yeah.
Wes Bos
You seen that? Have you seen these? Soma? No. No? How do you smell the ice?
Scott Tolinski
Yeah. Yeah. Yeah. Yeah.
Scott Tolinski
Turbo repo right now to just give it a try. Give it a whirl. Give it a whirl. See how see how it goes. We're, we're we're we're standing rapidly.
Guest 3
in my opinion. I'm very biased.
Sharing image processing cache could help Gatsby performance
Guest 3
caching and stuff like that. We are working with the Next. Js and Svelte teams because they're at Vercel you know, even Python or Go and the work phone is the mini. I like it. It's it's, like, incremental that's what Turbo is, is where it started out as. And versus
Scott Tolinski
I want my That's several salt kit packages.
Scott Tolinski
would be able to step in and assist with? Eventually, yes.
Guest 3
You know, for Bill, but also maybe even for dev. And, like, how does that how does that how does that work, right, with all these with all these processing and stuff. But, yeah, it would be cool to one of the ideas would be, like, Okay. If you are image processing locally, like, do you really need to rerun that? So one one thing I I'm wondering here, so I have a PNPM monorepo I don't know. I just got it the other day.
Scott Tolinski
or
Scott Tolinski
Right? Anytime we we make any sort of library, internal, external, we make it into its own salt kit package. But the the pain in the workflow right now comes from if I'm working in a package, So it's it's funny that they you seem to have a good eye for Identifying
Scott Tolinski
repo to Either wait for that package to complete before recompiling On Whiskey Web and whatnot, they discuss all sorts of things from everything from Next. Js and TypeScript to Chuck's past life as a blackjack dealer,
Scott Tolinski
theoretically, is this something that Turborepo would step in to help orchestrate to say, alright. You package, Then you go. You package, then you go. Or can it not get in the way of even, like, re re
Scott Tolinski
Is this a is this is this essentially a feature that Turborepo,
Scott Tolinski
root
Guest 3
we're working with the Next. Js and sell teams on on this kind of stuff. How do we share caches both in, and it will expose you to new new new problems we were the problem there was we were pretty sure that Well, we weren't 1, we weren't using Redux, so Redux form was out of the question.
Guest 3
Yeah. On these kinds of things.
Scott Tolinski
what's happening right now is everything fights for a little bit, and then you hit a couple refreshes, and eventually, it's fine If you're rebuilding the package and you're running the main site. So,
Rapid-fire questions section
Wes Bos
And turbo repos is written in what TypeScript?
Guest 3
Apple
Guest 3
It's cool. It's underrated. I'd say it's underrated.
Guest 3
but, basically, which is,
Scott Tolinski
it's great. It's great. It's great. Super super super powered stuff there. Yeah. Last time I wrote Java, it was A very long time ago
Guest 3
Yeah. Exactly.
Wes Bos
the next $1,000,000 idea and you did it on Vercel's phone, then Then they own it or something like that?
Wes Bos
So what what do you write in Kotlin? Like, are you talking to 2 guys? Used to do stuff. Yeah. Yeah. Like, what kinds of stuff? I don't know, maybe
Guest 3
back allies, and But on platforms that don't or,
Wes Bos
Text editor theme and font.
Guest 3
Operator mono, SSM.
Guest 3
oh, like, I I say I've learned some of those themes. Like, absolute on Vercel, and then immediately, you have this, like, drop box almost for your for your build, test, and ship their code. You you're talking about, like, Google, Netflix, things like that? Yeah. Yeah. Yeah. Exactly. So Google has a tool internally called Blaze,
Guest 3
It's good. It's some some apps are, like, a little too small, but it's it's okay.
Scott Tolinski
Alright. Next question here.
Guest 3
And, Yeah.
Guest 3
In Go, actually.
Guest 3
And keyboard do you use? I use a MacBook Air M1 So if you or your team or your CI has ever executed a task, It's actually a sort of a shell package, and what it does Yeah. That seems like it will help, but it's it's new problem entirely
Guest 3
I really wish. So my goal my my my my wish is that, like, I could tweak my Apple an ounce to be a little cooler, but How do I stay up to date? I'd say
Wes Bos
That makes sense. It's because you if you come up with the
Guest 3
I'm not I'm not advocating, oh, Jared's at Java's amazing. Everything in Java. No. I'm just like, it's So, like, Java there's flavors of this. So Java was, like, spring and it was bloated and all the classic stuff. Right? thing. Whatever that thing is, if you save or really not just developers, Save anybody 30 minutes a day or Yeah. With TXDX, it's, like, saves you an afternoon of config. Yeah. Yeah. You could use Rollup, you could do it yourself, and you could, like, go search And turbo is like
Guest 3
The
Guest 3
the little the little one because I carry 2 phones.
Guest 3
And as much as I think it's awesome and they're Super stylish, and I see them all, and I want all these cool stuff. Like, Get getting involved in the community. So even if that's through Twitter, but then get you're going to meet ups and hosting meet ups, then speaking at meet ups and conferences. And and I know that's been hard with the pandemic, but it is coming back. So just being involved in the community helps you stay up to date, right, I think.
Guest 3
Yeah. Turbos in Go. It's distributed as an NPM package even though it's written in Golang, The same way that you spilled is written in Go and distributed as an NPM package. Mhmm.
Scott Tolinski
on a trip. And That sounds like it would be great. Yeah. It's pretty nice.
Guest 3
I keep my the devices that So if you have a All of the all of these, replacement. They just want faster, better design system. They want workflow there. And they're it's likely a smaller it's a team inside of a large of a company. It's 1 monorepo inside of company that maybe has multiple monorepos.
Guest 3
the MX Blues, which are, like, really loud, Yeah. And it's not you got This doesn't rely on this one. Everything relies on each other. Right. And so if it's just a straight line where everything does rely on each other, yes, it could help. Right? You just start later down in that line, but it really shines where you've got this, like, oh, I've got The doc site, I mean, like, Wes, in your in in your app where it's, like, we've got the admin panel. Right? And we when we don't touch the admin panel, we do not need to deploy and redeploy the admin now we're touching. Right? Like, it doesn't make any sense. So that's where it really can shine, where you have multiple sort of projects in one
Guest 3
Kotlin's great. It's like a super supercharged TypeScript if you, like, Interesting. Kevin. Like, worth yeah. Java is, like, low key awesome.
Wes Bos
Yeah. Good. Good. That's a great great answer.
Guest 3
And recently, I was on well, I was on on Oceanic Next for many years As a theme, I'm now on GitHub dark,
Scott Tolinski
I don't know. Yeah. That's great. Yeah. In the same way.
Guest 3
Really? Oh, wow. Yeah. So turbo is written in that on that native run. So turbo CLI is written in Go. There are, like, create turbos in TypeScript. But Okay.
Guest 3
switched back and I just, like, forgot and then realized, like, wow, like, I actually just like the Apple one better. So Very, very, very,
Wes Bos
It's a good second, though. For someone who's never had a job, I'll ask, Why
Guest 3
the
Scott Tolinski
What kind of phone do you use? IPhone.
Guest 3
Yeah. I used that one.
Guest 3
And I, like, really wanted to get, like, a Rama Works keyboard and, like, do it and do the whole thing. And then the reality is that I type faster on the Apple keyboard. I do do do do do.
Scott Tolinski
doing Android work, and, I did not know what I was doing. So it's Colin seems like the kind of thing I would love to give a chance now. It's it's cool.
Guest 3
it's not as bad as a resized it is.
Wes Bos
Oh, okay.
Guest 3
legal reasons around the acquisition, is Turbo The only thing you need to then care about is are you inlining environment variables, and that would make them impure. So the way you handle that is by declaring them as dependencies in turbo.
Guest 3
And I have to switch keyboards for my turbo, like, demos,
Guest 3
but if I write, like, JavaScript TypeScript Go, it's I don't know. I get used to it, like, in my mind, like, there's a separate separate there's separate universe. I can't, like, think about Kotlin in Versus Code, though. I have to be intelligent.
Guest 3
I have the Max.
TurboRepo can cache anything from logs to video encoding
Guest 3
You can even use Turbo with, infrastructure as code providers.
Wes Bos
Would they would cache the images, but, like, when you had to, like, redo it or
Guest 3
incrementally only if it's changed.
Wes Bos
All about their, like, Gatsby images ever? Because then, like, that was a huge pain point of mine where, like, the Gatsby
Wes Bos
That's what that those sneezes are there. I think I I need to get this set up. Like, have you have you talked to the folks from Gatsby
Wes Bos
but then I deployed to Netlify,
Wes Bos
if I had them on my computer,
Guest 3
So you can use Turbo with, like, the AWS CDK
Guest 3
if you, like, Basically, you could deploy your AWS infrastructure We're pioneered by large companies such as Google and Meta, I used to joke that between me and my my my CTO or Our former CTO, Ian White, who's now the CEO of ChartHop and founder ChartHop, an HR platform, Or, oh, I guess, Terraform or even, like, Terraform or Pulumi And I can and those techniques, sorry to ramble a bit, are are are Okay. Got it. Biggest one is, remote caching.
Wes Bos
Oh,
Wes Bos
There's no shared cash there, so there I would have to sometimes wait, like, 25 minutes to regen all the images on my site. Have you talked to them at all about that, or that's just, like,
Wes Bos
infrastructure. Yeah. Yeah. Yeah. Like, you You have a config file
TurboRepo binaries are packaged for distribution on NPM
Scott Tolinski
Oh my gosh.
Wes Bos
For your cash. Your cash. And the rest of your team can benefit from that. So, like, what I'm just trying to think of, like, like, what kinds of things are probably cash. Like, tests,
Guest 3
and so that means that it can this came also from
Guest 3
days. No. They've saved they've saved over 60 days. A team of 10 saved over 60 days of Tight trip, tight checking time in the month of March.
Guest 3
to host that cache to you and your team and stuff.
Guest 3
the sort of trick to it is and skip the amount the agreed computation.
Guest 3
MPX turbo log in and 9 times out of 10, that involves Some sort of migration and adoption plan that is
Guest 3
And you you know, there are some open source community caches, Yeah. I think that team actually split out. So you got Buck, you got basil. You got pants. There's another one called, please. Maybe this is great names. You're one of the highest paid people in the industry.
Guest 3
but it's super easy to just server sales cache is is super easy to use. You just, And so that was just like a cool side project. And then fast forward, like, the following year, and I'm doing raisin cheese, like, And Guillermo was like, Versus Code, And what I mean by that is,
Guest 3
logs or you could rewrite logs to disk to to the file system. And so even if there's no other any other file system
Guest 3
in a folder, I like to say, like, Sure. So I guess we'll start with Turborepo. So the tool is at turborepo.org@turborepo to PMPM and then one command to import, and you're done. And now you've got a new that's a solution my mind. So I often think about, are you creating a new problem or actually offering a solution? And the goal is to always actually offer a solution,
Guest 3
So if you run
Guest 3
Logs are treated like if that makes sense. I I've all about from from my experience with Formic, Package and boom, you've got this awesome setup ready to ready to go.
Wes Bos
Obviously, like, CSS generation, JavaScript.
Guest 3
3 bytes because it was, like, type check it was, like, just 2 lines of of type check of the tag, whatever it says when types are just type checking. You can do type checking. You can do video images. You could do, Instead of just, like, redoing that every single time when you run next build, what turbo can do is it can say, oh,
Guest 3
ML models. You can do video encoding.
Guest 3
And a compiled language in like, very recently.
TurboRepo abstracts monorepo complexity into a lightweight build system
Guest 3
into a single cohesive lightweight build system.
Guest 3
developers as close to 0 configuration Mhmm. And then it can use that in its fingerprint calculation to make sure that
Guest 3
that Maybe I just have a regular, actually. I like to get up dark. It just makes sense. Yeah. I I I can't I don't know. There there but I, like, I have this interesting relationship with themes. I don't know about you, but, like, called remote caching, And it does and then when you run that task again, on that, are Vercel or Vercel's devices are separate from Oh, okay. My my other other stuff that I work on.
Guest 3
and solves the problem with a lot of versatility, Chairman was like, why don't you just build this up for sale? And then they made an offer, and it made sense and, you know, the rest is sort of history there. But it was an interesting process SSG from external CMS is actually an impure bill that's impossible to cash.
Guest 3
customers,
Guest 3
and complex configuration needed for
Guest 3
getting
TurboRepo works with all major package managers
Wes Bos
and at least in my case, I'm just telling it what the tasks are. Dev, build,
Wes Bos
And that's what I thought was really cool is that, like, I didn't have to, like, I didn't have to find a plug in for turbo.
Wes Bos
Oh, 40, 50 lines.
Guest 3
Yeah. Exactly. The, that is working on a design system, and they need A learner replacement, like an orchestration But Colin and I don't know if you've seen DropWizard. DropWizard is amazing, like, collection of libraries, And so this technique is very, very powerful Because not only can your cache live on your machine
Wes Bos
Lynn. And then you say which one depends on which. So, like, my
Wes Bos
That's beautiful because you can just run turbo start, and it knows that it has to run the build first. So you don't have to, like, orchestrate it. It orchestrates it for you. But then you also tell it what your inputs and outputs are. So, like, my inputs are my React components and my my CSS files, and my outputs are The next directory, a disk directory from my parcel builds.
Wes Bos
you even told me that you can rely On environmental variables changing as well, which is pretty nifty.
Wes Bos
Start test,
Wes Bos
Yep. Yep. Sounds like super helpful. API key changes in your environmental variable. Your code didn't Change, but the
Wes Bos
I just told it which are the folders that come in and which are the folders that come out. And like like you said, there's some magic in it where it will fingerprint it and figure out what it needs to rerun. Right?
Wes Bos
And you simply just
Project-driven learning is best for self-taught developers
Scott Tolinski
one thing that I've been using a lot more lately is GitHub's
Guest 3
I'm excited for
Scott Tolinski
Fastify,
Scott Tolinski
Just the amount of amount of things that other people are looking at or interested in a little bit. And even if not something that I'm, like, interested in right now. I just kind of goes in a spot in my brain.
Wes Bos
6, 7 years of my career, and I I was primarily working with agencies. And
Wes Bos
x y z x y z thing. That's that's that's not my style. Let's go build it. Yeah. That's great advice. We we always talk about that too. Like, I did freelance for the 1st
Wes Bos
we did an episode on cloud functions or no. What? But not cloud functions.
Wes Bos
You wanna grab the last question there, Scott? Yeah. Last question is,
Guest 3
Config ever again.
Scott Tolinski
Do a stint at, like, a a dev shop is never a bad definitely never a bad move. What about what about y'all? I'm curious. Where where do you stay up to date? I I well, I I started my career at a dev shop as well. So that was, like, big for me was getting to you know, if I wanna now all of a sudden do sass on this project, I can. Whatever. There's a new thing coming out, stylist let me try it on this one let me just give it a try but for me I do I stay up to date a lot on much more simple could this process be
Wes Bos
Why you might wanna do something a certain way? Because they've only approached a problem in in one tech stack. Right? And And being working in agency world, you see literally everything, and you're you're dipping into all kinds of different stacks and problems and whatnot. It's great. I I recommend it. It's tough, but I'm sure you know. It is tough. There are drawbacks, but but it it certainly for an ex I I'd say, like, working in a
Scott Tolinski
Mateo from,
Scott Tolinski
So it's, like, part of my job is to, like, hunt for that kind of stuff. So I'm always kind of Just looking around, I guess. The podcast as well. Like, we we have to do a lot of research.
Wes Bos
Like, we did,
Scott Tolinski
Interesting projects I found over the week each each week on the level up newsletter.
Wes Bos
Edge. Edge compute. What the hell is edge compute? Alright? And we did a little bit of research for that and Yeah. Figure out what it is and what people use it for, and Twitter is great for that. You can often just dip into Twitter and say, hey. What do you do use this for? You know? Yeah. It's great. The, stars are great. I forgot how much I star stuff also. Like, I do star quite a bit. Yeah. I know.
Scott Tolinski
you know, following. So I follow a bunch of really great devs on On GitHub and, you know, if Jared Palmer's liking or starring something, it pops in my feed, and I can see it. Yeah. Anyone stars. I star a lot. I start a lot. I think between you and Swix and then,
Guest 3
playing with live ammo, if if you if you will. That's been the way I've learned things the best, rather than go sit down and read a textbook on task running and I'm very excited for that, Beautiful. I think I I have to say wait wait wait wait wait. I actually will say, I I have that for my personal phone and my work phone, I have the mini, is it's responsible
Scott Tolinski
Explorer page or GitHub's own,
Scott Tolinski
like, I I get so much out of that.
Scott Tolinski
what is one thing that you're excited about in the future
Scott Tolinski
Scott Tolinski
I I put out, like, a a link list of, like, five
The cache can be shared between developers and CI
Guest 3
compute time Oh, wow. Over the course of the month. That's awesome. Yeah. Because, like, even But nice. Love to hear that. So so but but I will say that's it will work that way to get peak 8 will that cut your, Whether that be, like, as simple as a to do list or a And and but what what what are these projects doing? So what these projects are doing is they're creating, but you can go into multiplayer mode And actually sink that cache among your CI and your other teammates.
Wes Bos
Yeah. That I I would love that. We are when we had a call earlier, we're joking how, like, I used to just our sync everything up and restart the process. And that was What was that? Ten second
Guest 3
They are they're really struggling, and then they're looking at This decision where they either need to adopt one of these tools like Bazel or Buck, So the idea is you give enterprises or even solo developers
Guest 3
scheduling, as we call it, basically, to not have to think about like, locking and stuff that will make that a little bit more annoying than it than it should be. Turbo, To be fair, it was really designed for CI at first. I was really in addition to the TSX story, I was also very frustrated with waiting for some Fargate deploys That I could not. And when you deploy to Fargate, AWS's container service just takes, like, minutes, and there's nothing you can do about it. And
Wes Bos
deploys, you know, and
Guest 3
those teams find themselves in a very find themselves in a very tough position as they scale to Each and every package .json script in your code base is the atomic unit of Turo, so that's where it really fits into your stack running scripts. That makes sense? Yeah. That was the place we had to get started first. Before we got the t s d x and presets and stuff, we had to get task running, rocking. And so that's what Turbo does. It runs task. It's an orchestrator Mhmm. At the moment. That's what I that's why I called it. At the very basic, if you've ever had I can tell you their pain points that now that exist with, Keyboard for full the full size keyboard. I've tried the whole I went down the rabbit hole during the pandemic of mechanical keyboards. Me too. Like, I got I got, like, super into I got, like, super into it, and I still, like,
Guest 3
as
Wes Bos
my JavaScript, There's no sense in in rerunning the CSS build as part of my deployment platform or even as part of,
Wes Bos
even my and, like, there's there's a whole parcel thing to to compile all the react and all the CSS and all that stuff and,
Wes Bos
platform.
Guest 3
a very, very, like, tier one tech company, a couple banks,
Guest 3
and give And learned how the the the biggest code bases on the planet the situation they find themselves in is their deploys start taking longer and longer and longer, and they get to that 30 minute So layouts in Next. Js is a is a big pain point. So that's, like, a that's gonna get that's that's getting solved. That was one of my biggest problems with Next. Js overall, so happy to see with that. Yeah. Yeah. Yeah. So that's that I did not intend Turbo to be incremental infrastructure as code Yeah. Coordination orchestration tool, but lo and behold, on on these projects. So, it's also the default in Turborepo.
Guest 3
And,
Wes Bos
or the FTP drag and drop your file and you refresh the page and That sucker is deployed. And now we're at a spot where, like like like you've obviously talked to people that are in larger companies. Are Happens to be, and that's always been my my my sort of,
Guest 3
near to
Wes Bos
but I did change
Guest 3
and they're installing all of their dependencies on every single build, And they're running all their tasks on every single build. There's no caching. There's no fingerprinting. There's no remote caching.
Guest 3
that initial build to to get going. And in my case, It it just took a couple of minutes off the build, but that was huge for me and That's huge. Right? Difference between 30 second like, deploying I get this we get this lot, like, Well, my my deploys are 5 minutes. Right? And that's great. What if they were 30 seconds? Yeah. Please.
Guest 3
which by the way put significant constraints onto your code base, and it's not an easy, Move things into packages,
Guest 3
these incremental tools and the other build tools haven't become popular,
Wes Bos
like, your development. Like, We've all had that where you have to sort of sit on your hands and wait for, At the very basic, Turbo does an awesome job at doing things in parallel.
Guest 3
and I kept hearing the same story over and over again. And, Really, that that boils down to sort of 2
Wes Bos
the deploys like, Can they get into, like, 30 minutes or even more in large, usually? That that that's where I got the idea to start the company of Turbo.
Guest 3
They're still on, you know, workspaces, the Yarn, PMPM, Ed PM workspaces, speak topological
Guest 3
You can then share the results So these teams are finding themselves, well, I need to hire these Basel consultants or I need to, like, build this in house. And so there was an opportunity to come to the market with Turbo, which is end to end solution Slap on in, like, a day to do. Yeah? Yeah. Yeah. I mean, why not? The the
Guest 3
The that that's, like, say, like,
Guest 3
or, like, CLIs or, like, full full like, full monorepos.
Guest 3
Mhmm. Because these things are you know, you maybe do things a little bit differently.
Wes Bos
So we put Turbo Repo on at a very basic level to understand how it works is that, like, If I'm running a build and I didn't change my CSS,
TurboRepo can use environment variables to determine cache validity
Guest 3
And soon, very soon, I'll even non work spaces.
Guest 3
Exactly. So if in the case where a lot of these modern meta frameworks, like Next. Js, for example, will inline packages
Guest 3
Correct. Yeah. So
Wes Bos
turbo. Right? And and now you've got you were saying earlier, you've got a huge team and you're working on all kinds of crazy ideas. So Yeah. You would you would need an external service to share that. Right? Yeah. So the the the
Guest 3
Turbo is not trying to reinvent that part of the wheel, import process to switch over And I work been working on It will actually run a post install script to detect the correct operating system with its outputs and its logs.
Guest 3
I think that's super important for adoption.
Guest 3
for For the same set of environment variables, you're only gonna ship the same set of environment variables and and and encode.
Wes Bos
So this works with
Wes Bos
Like, this doesn't replace to carry 2 phones? So you can turn 1 off when you're sick of it? Or
Guest 3
so the cache lives locally on your machine,
Wes Bos
are, does it? Like, I'm using it with PNPM, and I'm still using PNPM workspaces.
Guest 3
And you're generating static content depending on when you run that build for the same state of the code base could yield different But yeah. That's good. There's there's that. Cool. Yeah. So it's also nice to be able to leave your work And not have it be 247. I will say that is also amazing. Just be, like, I'm going, you know,
Guest 3
makes that pretty straightforward.
Guest 3
yield consistent and outputs.
Guest 3
And so, yeah, Turbo just works with all work spaces.
Wes Bos
Oh, cool. Just regular projects. Yeah. Awesome. And the the sharing of the cash. So how do how do you do that? Is that is that why Vercel,
Guest 3
headless CMSs
Guest 3
that being said, like, if you think about a static site with static site generation, that's actually a side effect. Right. Because depending on when you run if if okay. If you're pulling from, like, Contentful or, like, one of these,
Wes Bos
like, We would deem in this a Versal bought
Wes Bos
environmental variables did. So you would obviously have to rerun it because that's being in lined in, like, a template or something like that. Yeah.
Wes Bos
how you define what your workspaces start depends on build.
Guest 3
your
Good tools should save time with easy adoption
Guest 3
are you inventing pull, RFC is coming.
Guest 3
the you get toys and they'd be, like, battery pack included, and those are the best. Right. How annoying was it when you got the toy and the battery pack was not included and you didn't have batteries in the house? This was this is catastrophic at that point. I like that. Yeah. It's hard. Hard.
Wes Bos
while still making the product not suffer for that. I think it's often ignored. I had that experience both with PNPM and with Turbo Because I didn't change any of my tools.
Guest 3
right. That's that's that's that's the so Mhmm. Very, very powerful. So that's, overall, this technique of caching Most modern TypeScript and JavaScript monorepos
Guest 3
And so, like, whenever so ship stuff with a battery pack included, and people will love you for it.
Scott Tolinski
You know, building things for adoption and and building things that for myself too. It's like and also it doesn't have to be a solution. It has to be a solution. So this is a a new part of this new kind of thing that we're doing, right, with this whole syntax of our club. And and what we've decided to do Is
Guest 3
remember as kids, you'd say you'd see, It abstract it actually came out of Formic. My my my my forms from the form library, it's sort of like build and roll up setup. Like, it's just a roll up setup, and I was like, wow.
Guest 3
It's that. It's that. That is the nature of everything I try to do, which is or you could just you, you know, import formic and not have to deal with Orchestrating validation on every keystroke properly. Right? Or So for the same state of the code base, you get the same output. So just like a pure function in JavaScript. Right? Yeah. Exact exactly the same kind of no side effects. But let's be careful what is a side effect. So I think I'm also so that's, like, my my my local with these prop with this problem And so Google is a team of a 100 that works on on on Blaze.
Scott Tolinski
but it does mean that, like, there's a certain level of working out of the box. There's an elegance to it that I think people miss out on or, like, just like a
Guest 3
A smooth And
Guest 3
it'd be a very different story if, Wes, if you were like, well, you know what? I'm gonna spend 2 weeks adopting and refactoring my code base to do this to use this thing that's gonna save me 5th you know, 50%, 50, 85%. Yeah. You know, you're not gonna do that. You're not gonna do that. Right? That'd be outrageous. It'd have to be so much worse than it is, like right?
Guest 3
a new problem or are you actually providing a a solution to something? Right. So if you had this big migration, Wes, to x y z tool, that's actually a new problem.
Scott Tolinski
they they think it works, and then that's good enough that it works. But without looking at it, how how
Guest 3
on someone's own schedule and doesn't require a whole sprint planning. Right. Like, Just generally something that they could use No. Yeah. I mean, that's the benefit of, like, remote caching ideally solves that part of it, but even but sub but sub process, I I I did it all. For me, it's the tech. And so what I really It's the tall He's like, I need Yes. Yes. Yes. I need I need I need low profile. Like, I'm not gonna move my fingers that much. I'm just not I don't know why, but, and I tried the Keychron, like, low profile one, which is like the but even that, like, I didn't want to admit it. I was in denial. I was like, no. This is better. This has gotta be better. This smells like it's gotta be I was, like, in the aisle, and then, like Look at it. It's hard to beat. I had I had right. I had I had some blues,
Guest 3
Take 15 minutes. Let's do that.
Guest 3
we used to talk about whether something was a problem or a new problem or a solution.
Wes Bos
I guess, I I stopped using npm and I started using p n p m, but I didn't really have to change a whole lot Or adopt or change out anything. And it was just like I just added it on top and things got magically better. So It's a great great experience. Thank you. I I I I
Guest 3
that can be done mostly racks or components that, So maxed out, and I use a Instagram clone or a Pinterest clone. We built, like, a news site. We built a that defines what your infrastructure is. Correct. And and that changes that. Only redo that. Yeah. Re reapply it or whatever it is. Actually, that's one that's one of the first use cases. It was, somebody from AWS, So that that that's my that's my sort of take on on on, significant value In a very, very, very short amount of time, that would take their bills and and, you know, put them back into the 15 minute range or 10 minute range, which is Toi. Alright. Let's take a quick minute to talk about one of our sponsors today, which is Whiskey Web and Whatnot.
Scott Tolinski
for the user? What what can we abstract or what can we hide away
TurboRepo focuses on incremental builds and remote caching
Guest 3
And what this does,
Wes Bos
to run 2 npm scripts at the exact Same time? That's hard.
Sponsor break - Whiskey Web and Whatnot podcast
Scott Tolinski
Past guests include a Tom Preston Warner, Kenzie Dodds,
Scott Tolinski
of course, the West Boss. Hey. What we gotta get me on there. I got a Whiskey Web and whatnot. Hit me up. Right?
Scott Tolinski
whatnot.
Scott Tolinski
or go ahead and just look for it in your Podcast player, it will be there. We'll also have a link in the show notes, so check it out. Whiskey web and whatnot.
Scott Tolinski
any of the flavors of workspaces, so to say. What what's The cost of adding turbo repo to something like that, not like monetary cost, obviously, but
Scott Tolinski
adding into a project that exists. I mean, let's say you do have a, a package that There are a monorepo that's currently using workspaces,
Scott Tolinski
and,
Scott Tolinski
Charlie Gerard,
Scott Tolinski
Thanks so much for sponsoring this episode. Let's talk a little bit about, like, Actual real world usage rerunning compiles or anything like that? Or
Scott Tolinski
Cincinnati chili, and the best Casseroles and, of course, whiskey. So check it out at whiskeywebandwhatnot.fm,
Scott Tolinski
Now Whiskey Web and Whatnot is a it's a different kind of podcast. It's lighter. It's fun, and it gets To showcase some of the more human side of web developers.
Scott Tolinski
And whatnot as well. So it's not just web and and whatnot. It's not just whiskey and web. It's whiskey, web, and
Large companies like Google use advanced build systems like Bazel
Guest 3
It helps Google build their multibillion line code base.
Scott Tolinski
arguably the best name. Yeah. Money? Yeah. Amazing.
Guest 3
of tasks.
Guest 3
a DAG,
Guest 3
externally, it's open source and called Bazel, but it's a little different. And next build, that out that outputs to the .next directory.
Guest 3
Get technical for a second. What they're creating is What I would what happened is I I get these calls and I I found out after I tweeted about it initially, I immediately and complexity.
Guest 3
Facebook has a similar tool called Buck. They all have great names, binaries that we build the like, Or the the value would have to be that much higher, right, versus like, oh, I can just, like, move my lint command? Sweet.
TurboRepo CLI is written in Go, packaged for NPM
Guest 3
you now have another lens aside from just, like, work
Wes Bos
little shady, but it's actually how Versus build works too. They're exactly the Install and distribute exactly the same way. Oh, that's really interesting. I'm glad that we asked that. That's cool. These these questions this is the 2nd time we've done this now, but these questions have always surfaced really neat stuff,
Guest 3
it has the operating system Yeah. Just like great names.
Wes Bos
So how how are you able to distribute
Guest 3
that artifact, I'll call it, that's emitted from a task. Yeah.
Guest 3
just, You know, reading blog posts and Hacker News and Twitter are just not going a directed acyclic graph,
Scott Tolinski
So I like it. What is 1 piece of advice you would have for beginners, people who are just starting out in this industry?
Guest 3
Looking to either change change careers or switch switch focal points or you wanna change industries or you wanna just level up. Having this breakable toy, it can remember which tasks you run before.
Guest 3
And architecture, and then it will download it from MPM for you. So at my agency that I used to run, Yep. And so you need to be careful in this situation because with Turbo, you wanna because of the way that caching works, you wanna keep your builds pure.
Guest 3
It is still important to you know, if you're trying to be a coder to code every day, if you're trying to be a product manager product manage every day or immerse yourself in what you're doing for sure. Mhmm. But especially if and you want to move dependencies kind of out of the root of web dev. Oh, that's a good question.
Guest 3
small scope. Maybe your own CMS or your own course platform or right? What whatever this is. Right? And even if it's been done before, I think that's the other thing. People are trying to, like, re like, create something new. Like, it's okay for these thing for this just to be, like, your flavor of this, I'm was materially less effective Mhmm. Key insight. And when it does this, it actually remembers not just the task, but the output of the task. So if you run Next. Js build, you run Next build, outputs to the .next directory. Right? All this, you know, it transpiles your JavaScript, your CSS, it preprocesses all this stuff. Right? It does all this magic.
Wes Bos
like me having Go installed on my computer? Do you ship it as, like, a executable, or how does that work? Yeah. There there's
Guest 3
calendar app or again, Got a DM from the team at And then the turbo package itself
Guest 3
That, will will you be able to augment or enhance what you're doing day to day?
Wes Bos
Go without, think it's great. And then Like this 1?
Guest 3
but the cache is content addressable, go through I don't know. We didn't talk much about the, like, joining Vercel or just, like, life at Vercel. I don't know if that's relevant, but We need to talk about that. Yeah. Let let's tell us about that. How how does that even happen? Like, selling a company, Versa, that sounds pretty cool. Yeah. Does do Vercel want to buy a podcast?
Wes Bos
Oh, cool. And That's I like that a lot. Beautiful. Oh, I'm just on their website. They have, like, a nice kettle.
Guest 3
Right. Yeah. And so that's my advice is to is to get a breakable toy. I like that. Breakable toy.
Guest 3
task or maybe you share it with your partner or your mom or your what whatever or It's your own little task list or as possible.
Guest 3
And on most platforms, it will and architecture.
Guest 3
that can get, oh, that's gonna be great for Blank or that could oh, I could use that as a database or I can use that as a logging system or what's that? Right? Or now you have this extra extra and if you have more than 1 breakable toy, even cooler. Right? I was very frustrated that So Turbo was very much designed to, like, make sure that didn't have to deploy to Fargate, and standardization that that may that may be worthwhile, but if we're talking about Pure build speed alone.
Guest 3
and just for you a world class development experience without this massive maintenance cost, and it uses techniques
Many of Jared's projects start by solving his own problems
Guest 3
and so it's like
Guest 3
saving
Scott Tolinski
Yeah. How many
Guest 3
stays at least.
Scott Tolinski
what these issues are that you would imagine that everyone else is
Guest 3
We were working on a large dashboard, When I write certain languages, it has to be a certain theme. Mhmm. I don't know how guys have that. Like, when I write Java or Kotlin, like, it I actually have, like, IntelliJ White. I don't know why Is it really? In my mind. Like no. And and also With my MX cherry. I tried browns. I tried blues.
Guest 3
and the inputs really has only become Compared to the flexibility and ease of the rest of the front end stack,
Wes Bos
like, products come back to somebody just ranting on Twitter being like, is is this it? Is this honestly it? Is this as good as it gets? Because this is garbage, and this is terrible. Like, this is garbage. And then I will say another thing too is that
Guest 3
and being able to recognize are very useful for compiled languages, like c plus plus or Java, especially this All this development development work. And even even as you progress through your career, having a side project that it's a breakable toy that's not crazy ambitious, especially for self taught developers. You know, having that project and and whatever that To make that decision versus spinning up a company on my own and and doing that, but I'm very happy with the decision I made. And soon I actually joined before Rich Harris did. Rich Harris joined Purcell a month later, but I was in stealth mode, stealth working at Purcell.
Guest 3
Understanding getting remote caching set up, And then you can run MDX Turbo link to link it to your correct account, it with the best tools or or coolest tools or new technology or whatever it is, and then always when you're when you see new technology or in tools or read about something on Twitter or whatever,
Guest 3
that that part takes, like I mean, I now now I'm a little bit more experienced. I've done it a couple more times. But, yeah, it's all been even Formic was, and career trajectory.
Guest 3
Libraries that existed in it too, that that didn't seem we had just so much complexity didn't make sense. So it seemed like,
Scott Tolinski
where there's an acute pain point in the community. And I think that It's both my itch, but then also, I guess, everybody else's itch. That makes sense. Totally. And I it it's funny because I end up having so many of the same Problems as you've come across here. I've I've made a a Svelte form library for myself. At one point, I was working on a task orchestrator that I was calling Avalanche, oddly enough. But I did so with just, like, total dumb guy's viewpoint on it because I was just like, oh, I need to run this script in this cup. Just, You know, sync up a bunch of node scripts to try to solve these problems.
Guest 3
having as well. Thank you. Yeah. I I think it's just a little bit of, like, of I'm extremely impatient, to What's that? That's So you could, like, incrementally Actually used to write a bunch of back end work in Kotlin.
Guest 3
you know, and So, yeah, I'd say mostly out of my own like, scratching my own itch has been always, like, very useful. I think also, though, now Have a breakable Totally. Nice. Yeah. Love it. So if you're familiar with this concept, you are in minutes in minutes.
Wes Bos
yeah. How many,
Guest 3
that relationship oh, this is a problem I have, but my guess is it's also a problem for a lot of other people because if I'm having it, then I guess people are happy, and that part is not Like migration too. It's Mhmm. It's quite difficult, actually, and unique that they're like that. There are Basel Consultancies, by the way, that's sole job is to just, like, help teams move. And even if you do that, by the way, the complexity and maintenance this part of it isn't has evolved, if that makes sense.
Vercel is working on edge rendering and React server components
Guest 3
Next. Js layout
Wes Bos
Awesome. Awesome. Well, thank you so much.
Guest 3
I mean, the the stuff they're doing with Edge is amazing. So I yeah. They are already in beta, but stay stay tuned for that.
Wes Bos
we'd love to hear it.
Guest 3
it's very, very, very soon. There's also I'll tell you the, Like, an entire, like, price product Yeah. Anything. Anything that you're supposed I'm excited for
Wes Bos
The last section of the podcast would do shameless plugs.
TurboRepo can help coordinate builds across packages
Scott Tolinski
solving your own problems?
Guest 3
Yeah. I mean, I think combined also with, Just, like, do the dependencies first. Right? And and
Scott Tolinski
and I think that's, like, a a big
Scott Tolinski
you know, this structure, essentially, to To be very organized in its process. And then, that leads to essentially where you're at now. Is that always something that has been prominent in your career or These types of projects you choose, is it usually just
Guest 3
when I made a change. And so it was super CI focused, and I wasn't really focused Too much on local dev,
Scott Tolinski
Whether it's TSDX
Scott Tolinski
interesting aspect of all of the things you're making. Right?
Scott Tolinski
had built this,
Scott Tolinski
is something that is 1000% on the road map. I I noticed that, like, Just about a lot of the things you make comes from personal needs,
Scott Tolinski
came came out of the fact that Formic,
These systems create a DAG of build tasks to run incrementally
Guest 3
order.
Guest 3
really haven't made their way into the front end space
Guest 3
And basil and buck
Guest 3
And And because I knew this because they're they're we, like, look at, Median log size, and our median log size was, like,
Guest 3
they're very good at this. They're like, this is, like, very well understood, And build dim back background.
Guest 3
for a couple of reasons.
Guest 3
they do this with obscene amounts of speed And then Rich joined, and then Seb joined, And now Molt has joined. We got and there are already so many people out there. It's been a wild, yeah, a wild time for, is is is material Yeah.
Guest 3
And running those tasks I'm all about building tools that can be incrementally adopted, and I think that's very react y. Right? React was always this incrementally adoptable thing, note that just because you have more packages, doesn't mean that your Hashing is going to Just having this, like, multipackage development experience seemed like something that made a lot of sense, especially as code bases got larger and larger and More people started working And so that's my little will analyze your code base.
Guest 3
NPM's a little different and weird compared to other, Really,
Guest 3
like, language ecosystems and and such. And JavaScript
Guest 3
The number one being
Guest 3
So it's just new. Right? This concept of, you know, compiling TypeScript or even Babble and stuff too. Yeah. Plain JS. Right? This is new. So, all of a sudden, you have these forces at at play here. And because of how the JavaScript ecosystem has evolved with workspaces,
Guest 3
in some dependency first order or commonly called in, like, graph, use user subsets. Either you've got a team
Guest 3
These tools, like, don't exactly work that great. They work. If someone's gonna, you know, listen on and go, oh, there is Bazel rules Node. Js, and, yes, it's possible. Yeah. It is. But you also need to configure Bazel with Skylark, which is a subset of Python. Fun fun times. Oh my gosh. Yeah. The average dev Just doesn't have this covered, in my opinion.
Introducing the Syntax Supper Club podcast series
Wes Bos
3 months ago.
Announcer
the Syntax supper club.
Scott Tolinski
Friday's supper club, the Syntax supper club. It's our new series that we'll be doing on Friday, interviewing some of the coolest people on the web. We have an amazing guest today,
Guest 3
Turborepo is an open source project, the best, And then we looked at all these, like, schema based form learning is the best type of learning, And then there's very cool stuff now with
Guest 3
Sure. So, of
Guest 3
part of Vercel.
Wes Bos
Couple weeks ago and just opened my eyes to all the awesome stuff. So I'm excited to share that with everybody else.
Wes Bos
So excited to have Jared on just to talk about it. So do you wanna give us a quick rundown of what Turborepo So if you have anything you'd like to plug for the audience To go check out, Yeah. My config is,
Wes Bos
course platform over to Monorepo, But, like, is could could you could you do anything, like images, videos?
Scott Tolinski
a less informed role. You'll be playing a little bit more of an informed role. And then, of course, Now this is one of my favorite things about certain types of podcast where you get to know the people, You get to understand them as human beings rather than just people smashing their fingers on a keyboard. Not to mention, there is whiskey
Scott Tolinski
Cool. So let's get Going here, I know Wes has crafted a short list of questions, but,
Wes Bos
is, and then we'll dive into some more bigger questions?
Wes Bos
It's when I move my
Scott Tolinski
Jared Palmer of Turborepo
Wes Bos
approach forward and implemented it.
Wes Bos
took a look at Turbo Repo,
Scott Tolinski
Yeah. I think it's gonna be really great because I I definitely playing a little bit more of a,
Wes Bos
because I have, like, a back end, and then we have an admin dashboard, board and we have an API, I I saw it all, and it it it's crazy. Sometimes people, like, have worked at 1 start up for 5 years, and they're they just you just can't get through to them to understand, like,
Scott Tolinski
amongst many other things. My name is Scott Cholinski. I'm a developer from Denver, Colorado. With me, as always, is Wes Boss, how's it going, everybody? I'm doing great. Excited to talk about turbo repo a little bit. I had a little call with Jared
Scott Tolinski
Welcome to syntax in this
Wes Bos
and we thought, okay. This this looks like a a good
Scott Tolinski
Jared is going to be the expert here, so I think it's gonna be really great. About that.
Scott Tolinski
Wes, do you wanna start off with whatever you think is The best question to ask first. Yeah. So, we
Excited about no-config development workflows in the future
Guest 3
in the in the nearer term.
Scott Tolinski
Love it.
Wes Bos
and preview URLs and and just tightening of that process, I'm very pumped about. Awesome. I like it. Alright. Is there anything anything else that we didn't mention that you wanna make sure we touch upon, or should we move into the last section here? Do you wanna talked about mono repos,
Guest 3
Yeah. So some set of the 20, 30% of the user base. Mhmm. The other are peep are folks that are building apps,
Guest 3
The even even even tighter feedback loop between local development and preview In in in 1 repo. And in that's in that case,
Guest 3
You don't need to think about how it all magically gets to the final state.
Guest 3
I'd like to see a world where you just, like, open an editor and write code and deploy code, and is doable Turbo can do the calculations, say, oh, we've been here before. Look. There's a matching fingerprint in our cache.
These systems haven't been adopted much in frontend yet
Guest 3
in the, like, fewest lines of code as possible. So designed to be incrementally adopted.
Guest 3
You just the average team doesn't have this. Now the techniques though, and this is the key part, that they're using
Adding TurboRepo to an existing monorepo takes about a day
Guest 3
My guess is probably you'll need to do a little bit of of movement of things. Mostly, Turbo likes it To get those high cash hit rates that I just described or that are that result in faster and faster incremental builds, you want to
Guest 3
Or I shouldn't say out of the root. You just wanna make sure that things are well defined and and and encapsulated in packages. And, also, Yeah. And the point about it being a toy is it should be small enough in scope where if you break it, it shouldn't matter. Like, there shouldn't be, like, massive consequences.
Guest 3
a graph that has sort of that that will benefit from caching. Right. So oftentimes, that means the graph has, like, different leafs.
Guest 3
2 Node JS apps,
Guest 3
build.
Guest 3
The shape of your dependency graph actually does matter.
Guest 3
we're talking like a day, a day and a half. But you can literally start using, And so that's that's more of my philosophy. It doesn't mean that, like, you need blow make this thing, like, bloated and do everything,
Guest 3
I'll I'll give an example like this. Pretend you have, like, a monolithic Node. Js app, like classic Templates handlebars. Right? And you split that into Just recognizes optional dependency and install the correct operating system specific version of turbo.
Guest 3
Like, just get lint going or type checking going to expose you to. And it's those situate like, situation rather quickly. And because of how and they always build together. Every single time you make you change 1, you always have to build the other. Splitting them didn't do anything to your build time. Right? It may it may it may solve organizational issues, which are valid and absolutely need to happen, but it was not gonna make your build time any faster. Right? So the same is true, you know, with that. Just because you split things into packages doesn't mean it's gonna Faster, especially if they all culminate in 1 final
Guest 3
turbo on one task in your Monorepo? that together we had built, like, a lot of the Internet By the end of, like, our couple years, we had built I guess my question is, this came from a lot of my agency days. So I used to run a dev shop. And Yeah. I've seen so many Save developers 30 minutes a day, and you will have a very, very successful
Having a small side project helps you learn and progress
Guest 3
running an agency or your dev shop, well, first starting as a freelancer and then, you know, growing that into an agency, yes, those are a lot of stuff. Oh, yeah. You know, so it's a lot of work. And whether that be new projects, old projects, dream, and turbo will hopefully get get us there. I'm very excited about React server components. I'm very excited about And and incremental Turbo doesn't even know or care about the difference, so it just will catch the logs.
Guest 3
you know,
Guest 3
before Stripe had billing, like, I had this, like, recurring billing system. We built a recurring billing system. Oh, wow. Yeah. Built, like Yeah. Environment variables that start with next underscore public underscore.
Guest 3
again, project driven Js is like a meta framework for building websites, You you do need to have, like, when you're learning stuff, I mean, you could try to do some hacks and stuff where, But there is something data fetching that's happening that is a side effect, and so it's not cash flow. But assuming your builds are pure, So there's still benefits to turbo though around, like, orchestration Create React app, DocuSaurus, Yeah. That's that's my hottest take, and everyone's gonna be like, oh, my gosh. Java was like springs.
Wes Bos
Next 1 we have here. I'm gonna change it a little bit. The question as how do you stay up to date? But I'm going to change it to you can answer that. But I'm more curious, like, how do you know so many languages?
Guest 3
Membership management platform. We It's a Build system that abstracts
Guest 3
crud situation. We built a dash like, we built so much stuff.
Wes Bos
You know, like, you use Kotlin, Java.
Guest 3
So and then how do I know so much? I don't know if I know anything, to be honest. The more I I don't know if I I don't know I don't know anything. But what I do know is I work with awesome people who know a lot now.
Guest 3
a lot a lot of it is Twitter, but less so than it used to be.
Guest 3
you know, replacing systems.
Wes Bos
You wrote it in Go, TypeScript. Like, you're all how do you how do you know so much? Alright. So I'll answer the first one.
Guest 3
yeah, that that and so that that's paid dividends, over the years. And then as we're just, like, trying to teach myself new stuff, time cost. What what are what are we looking at to add this to a project that's already Utilizing some kind of workspace. Depending it really will depend on the workspace setup, but it's possible that it would be in less time that it took you to ask the question.
TurboRepo started as a way to add monorepo support to TSDX
Guest 3
that someone raised for mono repo support.
Guest 3
But now it's more than that, and I also started working on other Monterey Pos, mostly powered by Lerna and Yarn Workstations at the time.
Guest 3
and how they build and test their code, and it's vastly different is what I found from The way that most front end teams it's basically hash based. And so the you can use a service that Vercel provides, It runs stuff in order. It can run stuff in parallel. And not only does it run stuff, just run your tasks better,
Guest 3
Yeah.
Guest 3
When I went to go do that, I started looking at Lerna's source code and I started looking at a bunch of alternatives. And I asked myself, well, but inputs are a new a new addition that we just added, which actually really helped because if you change, like, the readmead or something, you don't or even just You don't change a test. Why are you gonna run tests, sir? Yeah. Only if you change them, it's, like, source code related. And even, but it makes these techniques available to the masses, And what I mean by pure is
Guest 3
both closed source and open source too, that Had the same setup, and it just seemed like there was momentum here to kinda figure out what TSDX would feel like for mono repos or at least this architecture. Right? Even if it was a single application, I
Guest 3
What's the right way to do this? And I went down this deep, dark rabbit hole of build systems Disasters after disaster,
Guest 3
work and how they deploy Michael Edelman, actually started doing that, and it was super are awesome, and the goal of turbo is to bring as many of those techniques But to that end, 20, 30, 40 devs and beyond.
Guest 3
couple applications, and Purcell is
How Jared's TurboRepo project was acquired by Vercel
Guest 3
Guillermo was going to invest in that as an angel investor,
Guest 3
my my work. And I g and I, Guillermo and I worked together js official reactjs.org You know, builds by 85% over the course of the month.
Guest 3
the way that all went down was kinda fun. So I was gonna raise a pretty big seed round Actually, there's 1 team that saves, like, packages that are operating in architecture specific packages of which they're, like, 12 or something and has those optional dependencies.
Wes Bos
I wanna invest, and they would make sense. And then and then when it came close to closing the round,
Guest 3
So Vercel
Guest 3
and we hit it off immediately.
Guest 3
is built on top of some of the initial work that I did. It was completed by, I think, it was this. Labs and but the initial move was was mine, That's insane.
Guest 3
for Turbo to be an independent company, Can save devs roughly
Guest 3
and I'd actually we worked together prior on the React docs.
Wes Bos
And for people getting picked up. And Vercel is just out there to solve all of our web development problems. Right? Like, is there other stuff that you can tell us about that is, like, Coming down the pipe from Versal? Any any sneak peeks?
Guest 3
had that being said, it is something we are really going to be looking at this summer. And so Making a local dev experience awesome, 50 to 85% To the average solo dev, small team, big team, whatever, to the masses as possible
Guest 3
and and I just think things should be more magical and amazing. And if you If you just ask yourself, why isn't why do I have to do all this? Anybody in your day today? Why do why do I have to do this? Why why doesn't this just work? Why does this work well? And, There's also an aspect of it of just seeing,
TurboRepo makes large-scale development techniques accessible
Wes Bos
of like what it is and what it isn't right off the bat. Because I think people listening right now are being like, okay, like, is it is it a Webpack alternative? Alternative? Is it a NPM alternative? Does it replace parcel?
Guest 3
But there was an issue
Wes Bos
spiel on what is Turbo Rico. So, like, let's answer the question of,
Guest 3
Forex got a great development experience right now. What if I could just have this experience for all my other projects? Yeah.
Guest 3
And so t s d x was born, which is TypeScript and Rollup and Jest and ESLint and all that abstract into a nice CLI. And you go like t s d x create
Guest 3
then TSDX would is like a meta framework for TypeScript MPM packages.
Guest 3
If Next.
Guest 3
Yeah. So it does none of those things. Okay. It actually it does none of those things. Tell you the back story. I'll tell you where Turbo fits into your stack. Yeah. So the back story is I have a question in here, sorry, that literally says, how does this fit into my stack? So Yeah. There you go. So so so one of my open source projects from Gatsby to next, and I was staffed with that. So the beta.reactjs.org and and commissioned me and Facebook to kind of, like, in tandem to work on the and prototype the migration of the React and You have a Vercel account or if you don't have a Vercel account, you can sign up for 1 right there. You're, like, 3 clicks away from
Guest 3
And this is, React to edge, Edge rendering and also the stuff that's coming.
Guest 3
is called TSDX.
TurboRepo runs tasks in parallel and dependency order
Guest 3
So For the 5, 6 config blog post of TypeScript and Jest and ESLint. Right? But or you could run t s t x create, and you'd be done. Right? per operating system package managers plus platform combos that don't support optional dependencies properly.
Guest 3
Yeah. So so what Turbo does is it creates this direct to a cyclic graph out of which is a fancy term for it understands your dependencies and your tasks,
Guest 3
and and you can remember the task that you've already done before, And initially, this wasn't in scope for TSDX because Formic was just a single React package.
Transcript
Announcer
Oh, I'm starving.
Announcer
so buckle up and grab that old handle because this ride is going to get wild.
Announcer
Wash those hands, pull up a chair, and secure that feed bag, because it's time to listen to Scott Tolinski and Wes Bos attempt to use human language to converse with and pick the brains of other developers. I thought there was gonna be food,
Announcer
I sure hope you're hungry.
Announcer
This is
TurboRepo can reuse cached artifacts instead of rebuilding
Guest 3
instead of you redoing all of the work, ongoing development that's coming. That's, like, the the thing I can I can share? Wow. That's really cool.
Guest 3
Cool. Let's move that into the correct position in the .next folder and, like, Either that's it or move on to the next task we have to do in your in your pipeline of of stuff.
Guest 3
And for this state of the code base, let's mark this with a fingerprint, Interesting. GitHub as well, less so than it used to be, but just reading and working and and immersing myself in these problems. I'd say also the techniques
Guest 3
what we call a hash. Yeah. And then Turbo stores that fingerprint
Focus on solving problems rather than creating new ones
Scott Tolinski
formulate a
Scott Tolinski
somewhat interesting for our listeners. Wes, do you wanna start with the first one?
Scott Tolinski
just going to be the same every episode, But I think kind of interesting questions here. So we're gonna ask you several kind of rapid fire questions. We don't have to take too long on these, But, I think they're gonna be
Wes Bos
What computer
Scott Tolinski
group of questions that are