Today we’re joined by Shawn “swyx” Wang, also known as just “swyx” — and we’re talking about his interesting path to becoming a software developer, what it means to “learn in public” and how he’s been able to leverage that process to not only level up his skills and knowlege, but to also rapidly advance his career. We cover Swyx’s recent writing on the light and dark side of the API economy — something he calls “living above or below the API,” his thoughts on Cloudflare eating the cloud by playing Go instead of Chess, and we also talk about the work he’s doing at Temporal and how’s taking his frontend skills to the backend.
Featuring
Sponsors
Fly.io – Deploy your apps and databases close to your users. In minutes you can run your Ruby, Go, Node, Deno, Python, or Elixir app (and databases!) all over the world. No ops required. Learn more at fly.io/changelog and check out the speedrun in their docs.
Teleport – Securely access any computing resource anywhere. Engineers and security teams can unify access to SSH servers, Kubernetes clusters, web applications, and databases across all environments. Try Teleport today in the cloud, self-hosted, or open source at goteleport.com
Square – Develop on the platform that sellers trust. There is a massive opportunity for developers to support Square sellers by building apps for today’s business needs. Learn more at developer.squareup.com to dive into the docs, APIs, SDKs and to create your Square Developer account — tell them Changelog sent you.
LaunchDarkly / TrajectoryConf – Software powers the world. LaunchDarkly empowers all teams to deliver and control their software. DevOps and feature management are reimagining how we build and release new products. On November 9th and 10th, LaunchDarkly is hosting Trajectory Conference 2021 — a two-day event for software innovators who want to break orbit, not systems. Trajectory is a fully-virtual conference that focuses on the technology, people, and processes that continuously deliver better user experiences and more powerful software. Register for free at trajectoryconf.com
Notes & Links
- Learn in Public
- The Light and Dark Side of the API Economy
- Eating the Cloud from Outside In
- The Coding Career Handboox (this link includes an embedded coupon code for 30% off)
- Cloud Operating Systems and Reconstituting the Monolith
- No Zero Days: My Path from Javascript Newbie to Full Stack Developer at Age 30
- freeCodeCamp.org
- #Doccies (we’re planning to do something around this soon, stay tuned in 2022)
- Cloud Distros and the Deployment Age of the Cloud
Transcript
Play the audio to listen along while you enjoy the transcript. 🎧
So swyx, we have been tracking your work for years; well, you’ve been Learning in Public for years, so I’ve been (I guess) watching you learn, but we’ve never had you on the show, so welcome to The Changelog.
Thank you. Long-time listener, first-time guest, I guess… [laughs]
Yeah.
Happy to have you here.
Very excited to have you here.
So tell us a little bit of your story, because I think it informs the rest of our conversation. We’re gonna go somewhat deep into some of your ideas, some of the dots you’ve been connecting as you participate and watch the tech industry… But I think for this conversation it’s probably useful to get to know you, and how you got to be where you are. Not the long, detailed story, but maybe the elevator pitch of your recent history. Do you wanna hook us up?
For sure. For those who want the long history, I did a 2,5-hour podcast with Quincy Larson from FreeCodeCamp, so you can go check that out if you want. The short version is I’m born and raised in Singapore, came to the States for college, and was totally focused on finance. I thought people who were in the finance industry rules the world, they were masters of the universe… And I graduated just in time for the financial crisis, so not a great place to be in. But I worked my way up and did about 6-7 years of investment banking and hedge funds, primarily trading derivatives and tech stocks. And the more I covered tech stocks, the more I realized “Oh, actually a) the technology is taking over the world, b) all the value is being created pre-IPO, so I was investing in public stocks, after they were basically done growing… And you’re kind of just like picking over the public remains. That’s not exactly true, but…
Yeah, tell that to Shopify…
I know, exactly, right?
And GitLab.
People do IPO and have significant growth after, but that’s much more of a risk than at the early stage, where there’s a playbook… And I realized that I’d much rather be value-creating than investing. So I changed careers at age 30, I did six months of FreeCodeCamp, and after six months of FreeCodeCamp - you know, I finished it, and that’s record time for FreeCodeCamp… But I finished it and felt not ready, so I enrolled myself in a paid code camp, Full Stack Academy in New York, and came out of it working for Two Sigma as a frontend developer. I did that for a year, until Netlify came along and offered me a dev rel job. I took that, and that’s kind of been my claim to fame; it’s what most people know me for, which is essentially being a speaker and a writer from my Netlify days, from speaking about React quite a bit.
[04:13] I joined AWS in early 2020, lasted a year… I actually was very keen on just learning the entire AWS ecosystem. You know, a frontend developer approaching AWS is a very intimidating task… But Temporal came along, and now I’m head of developer experience at Temporal.
It’s an interesting path. I love the – we’re obviously huge fans of FreeCodeCamp, and Quincy, and all the work he’s done, and the rest of the team has done to make FreeCodeCamp literally free, globally… So I love to see – it makes you super-happy inside just to know how that work impacts real people.
Like, you see things happen out there, and you think “Oh, that’s impacting”, but then you really meet somebody, and 1) you said you’re a long-time listener, and now you’re on the show, so it just really – like, having been in the trenches so long, and just see all this over-time pay off just makes me really believe in that whole “Slow and steady, keep showing up, do what needs done”, and eventually things happen. I just love that.
Yeah. There’s an infinite game mentality to this. But I don’t want to diminish the concept of free, so… It bothers me a little, because Quincy actually struggles a lot with the financial side of things. He supports millions of people on like a 300k budget. 300k. If every single one of us who graduated at FreeCodeCamp and went on to a successful tech career actually paid for our FreeCodeCamp education - which is what I did; we started the hashtag. It hasn’t really taken off, but I started a hashtag called #payitbackwards. Like, just go back, once you’re done – once you can afford it, just go back and pay what you thought it was worth. For me, I’ve paid 20k, and I hope that everyone who graduates FreeCodeCamp does that, to keep it going.
Well, I mean, why not…?
I’d also say one thing… The important part of being free is that I can do it on nights and weekends and take my time to decide if I want to change careers. So it’s not just a free replacement to bootcamps, it actually is an async, self-guided, dip-your-toe-in-the-water, try-before-you-buy type of thing for people who might potentially change their lives… And that’s exactly what happened for me. I kept my day job until the point I was like “Okay, I like enough of this… I’m still not good, but I like enough of this that I think I could do this full-time.”
I like the #payitbackwards hashtag. I wish it had more steam, I suppose.
We should throw some weight behind that, Adam, and see if we can…
Yeah. Well, you know, you think about Lambda School, for example - and I don’t wanna throw any shade by any means, because I think what Austin has done with Lambda… He’s been on Founders Talk before, and we talked deeply about this idea of making a CS degree cost nothing, and there’s been a lot of movement on that front there… But you essentially go through a TL;DR of Lambda as you go through it, and you pay it after you get a job if you hit certain criteria, and you pay it based upon your earnings. So why not, right? Why not have a program like that for FreeCodeCamp, now that you actually have to commit to it… But it’s a way. I love that you paid that back and you made that an avenue, an idea of how you could pay back FreeCodeCamp, despite the commitment not being there.
Right.
Yeah. And Quincy is very dedicated to it being voluntary. He thinks that people have different financial situations. I don’t have kids, so I can afford a bit more. People should have that sort of moral obligation rather than legal obligation.
I should mention that Lambda School is currently being accused of some fairly substantial fraud against its students…
Oh, really?
Yeah, it actually just came out like two days ago.
I saw that news too, on Monday.
Yeah. It’s not evidenced in the court of law, it’s one guy digging up dirt; let’s kind of put this in perspective. But still, it’s very serious allegations, and it should be investigated. That said, the business of changing careers and the business of teaching people to code, and this innovation of Income Share Agreements (ISA), where it actually makes financial sense for people to grow bootcamps and fund bootcamps - this is something I strongly support… Whether or not it should be a venture-funded thing, where you try to go for 10x growth every year - probably not… [laughs]
Yeah…
So after FreeCodeCamp you didn’t feel quite ready, so you did do a bootcamp… Did you feel ready after that?
[08:03] Yeah. [laughs] I did a reflection, by the way, of my first year of learning to code, so people can look it up… It’s called “No zero days. My path to learning to code”, and I think I posted it on Hacker News. And doing everything twice actually helped me a lot. Because before I came into my paid bootcamp, I had already spun up some React apps. I had already started to mess with WebPack, and I knew enough that I wasn’t understanding it very much, I was just following the instructions. But the second time you do things, you have to space, to really try to experiment, to actually read the docs, which most people don’t do, and actually try to understand what the hell it is you’re doing. And I felt that I had an edge over the other people in my bootcamp because I did six months of FreeCodeCamp prior.
So this other thing that you do, which not everybody does, is this Learning in Public idea… And you have this post, Learn in Public. You call it “The fastest way to learn”, or the fastest way to build your expertise - networking, and second brain. I’m not sure what the second brain is, so help us out with that one… But also, why is learning in public faster than learning in private.
Yeah. This is a reflection that came from me understanding the difference, qualitatively, between why I’m doing so well in my tech career versus my finance career. In finance, everything is private, meaning the investment memos that I wrote, the trade ideas that I had - they’re just from a company; they’re intellectual property of my company. In fact, I no longer own them. Some of my best work has been in that phase, and it’s locked up in an email inbox somewhere, and I’ll never see it again. And that’s because tech is a fundamentally open and positive-sum industry, where if you share things, you don’t lose anything; you actually gain from sharing things… Whereas in finance it’s a zero-sum battle against who’s got the secret first and who can act on it first.
And I think when you’re in tech, you should exploit that. I think that we have been trained our entire lives to be zero-sum, from just like the earliest days of our school, where we learn, we keep it to ourselves to try to pass the test, try to get the best scores, try to get the best jobs, the best colleges, and all that, because everything’s positional. For you to win, others have to lose. But I don’t see tech in that way, primarily because tech is still growing so fast. There’s multiple ways for people to succeed, and that’s just the fundamental baseline. You layer on top of that a bunch of other psychological phenomenon.
I’ve been really fascinated by this, by what it is so effective. First of all, you have your skin in the game, meaning that a lot of times when your name is on the blog posts out there, or your name is on the talk that you gave, your face is there, and people can criticize you, you’re just incentivized to learn better, instead of just “Oh, I’ll read this and then I’ll try to remember it.” No, it doesn’t really stick as much. So having skin in the game really helps.
When you get something wrong in public, there are two effects that happen. First is people will climb over broken glass to correct you, because that’s how the internet does. There’s a famous XKCD comic where like “I can’t go to bed yet.” “Why?” “Someone’s wrong on the internet. I have to correct them.”
Right.
So people are incentivized to fix your flaws for you - and that’s fantastic - if you have a small ego.
I was gonna say, that requires thick skin.
Yeah, exactly. So honestly – and that’s a barrier for a lot of people. They cannot get over this embarrassment. What I always say is you can learn so much on the internet, for the low, low price of your ego. If we can get over that, we can learn so much, just because you don’t care. And the way to get over it is to just realize that the version that you put out today is the version you should be embarrassed about a year from now, because that shows that you’ve grown. So you divorce your identity from your work, and just let people criticize your work; it’s fine, because it was done by you, before you knew what you know today. And that’s totally fine.
And then the second part, which is that once you’ve gotten something wrong in public, it’s just so embarrassing that you just remember it in a much clearer fashion. [laughter] This built a feedback loop, because once you started doing this, and you show people that you respond to feedback, then it builds a feedback and an expectation that you’ll do the next thing, and people respond to the next thing… It becomes a conversation, rather than a solitary endeavor of you just learning the source material.
So I really like that viral feedback loop. It helps you grow your reputation… Because this is not just useful for people who are behind you; a lot of people, when they blog, when they write, when they speak, they’re talking down. They’re like “I have five years experience in this. Here’s the intro to whatever. Here’s the approach to beginners.” They don’t actually get much out of that.
[12:17] That’s really good, by the way, for beginners; that’s really important, that experts in the field share their knowledge. They don’t see this blogging or this speaking as a way to level up in terms of speaking to their experts in their fields. But I think it’s actually very helpful. You can be helpful to people behind you, you can be helpful to people around you, but you can actually be helpful to people ahead of you, because you’re helping to basically broadcast or personalize their message. They can check their messaging and see - if you’re getting this wrong, then they’re getting something wrong on their end, docs-wise, or messaging-wise. That becomes a really good conversation. I’ve interacted with mentors that way. That’s much more how I prefer to interact with my mentors than DM-ing and saying “Hey, can you be my mentor?”, which is an unspecified, unpaid, indefinitely long job, which nobody really enjoys. I like project-based mentorship, I like occasional mentorship… I really think that that develops when you learn in public.
I’ve heard it say that “Today is the tomorrow you hope for.”
Wow.
Because today is always tomorrow at some point, right? Like, today is the day, and today you were hoping for tomorrow to be better…
I think by definition today is not tomorrow…
No, today is the tomorrow that you hoped for… Meaning like “Seize your moment. It’s here.”
Carpe diem. Gotcha.
Yeah, kind of a thing like that.
I feel a little shady – obviously, I agree, but also, I feel a little shady whenever I venture into this territory, because then it becomes very motivational speaking-wise, and I’m not about that. [laughs]
Kind of… But I think you’re in the right place; keep showing up where you need to be - that kind of thing. But I think your perspective though comes from the fact that you had this finance career, and a different perspective on the way work and the way a career progressed. And so you have a dichotomy essentially between two different worlds; one where it’s private, and one where it’s open. That to me is pretty interesting, how you were able to tie those two together and see things differently. Because I think too often sometimes in tech, especially staying around late at night, correcting someone on the internet, you’re just so deeply in one industry, and you have almost a bubble around you. You have one lens for which you see the world. And you’ve been able to have multi-faceted perspectives of this world, as well as others, because of a more informed career path.
Yeah. When you talk about finance as a zero-sum game, I feel like there’s actually been moves now to actually open up about finance as well; I’m not sure if either of you have tracked the celebrity rise of Cathie Wood and Ark Invest, and a lot of the moves that she’s doing in public. They’re an investment fund, and they will actually publish their moves at the end of every day. Like, “We sold these stocks. We bought these stocks.” And people laughed at that for a while, but because she’s been successful with early on Bitcoin, early with Tesla, she’s very much into growth stocks - because of that, people started to follow her very closely and just emulate. And when she makes moves now, it makes news on a lot of the C-SPANs and the… Is C-SPAN the Congress one? What’s the one that’s the finance one…?
CNBC?
CNBC, not C-SPAN. And so she’s very much learning in public. She’s making her moves public, she’s learning as she goes, and to a certain degree it’s paid off, it’s paid dividends in her career. Now, I’m not sure if everyone’s doing that… When you look at crypto investors, like - okay, pseudonymous, but a lot of that stuff, public ledgers. So there’s moves that are being made in public there as well. So I wonder if eventually some of that mentality will change. What do you think about that?
[15:45] It’s definitely changed for – there’s always been celebrity investors, and people have been copying the Buffett portfolio for 30 years. So none of that is new. What is new is that Cathie Wood is running an ETF, and just by way of regulation and by way of innovation, she does have to report those changes. [laughs] So mutual funds, hedge fund holdings - these have all been public, and people do follow them. And you’re always incentivized to talk your book after you’ve established your position in your book…
Right, but you establish it first.
…so none of that has changed. But yeah, Cathie has been leading an open approach…
Is it the rate of disclosure perhaps that’s new? Because it seems like it’s more real-time than it has historically…
Yeah. I mean, she’s running an ETF, which is new, actually… Because most people just run mutual funds or hedge funds, and those are much more private. The other two I’ll probably shout out is Patrick O’Shaughnessy who’s been running I guess a fund of funds, and he’s been fairly open. He actually adopted the “learn in public” slogan in the finance field, independently of me. And then finally, the other one is probably Ted Seides, who is on the institutional investor side of things. So he invests for universities, and teachers pensions, and stuff like that. So all these people - yeah, they’ve been leading that… I’m not sure if it’s spreading, or they’ve just been extraordinarily successful in celebrity because of it.
This idea of “in public” is happening. You see people too, like – CopyAI is building in public… This idea of learning in public, or building in public, or exiting in public… Whatever the public might be, it’s happening more and more… And I think it’s definitely similar to the way that open source moves around. It’s open, so it’s visible to everyone. There’s no barrier to see what’s happening, whether it’s positive or negative, with whatever it is in public. They’re leveraging this to their advantage, because it’s basically free marketing. And that’s how the world has evolved to use social media. Social media has inherently been public, because it’s social…
Sure.
Aside from Facebook being gated, with friends and stuff like that… Twitter is probably the most primary example of that, maybe even TikTok, where if I’m a creator on TikTok, I almost can’t control who sees my contact. I assume it’s for the world, and theoretically, controlled by the algorithm… Because if I live in Europe, I may not see content in the U.S, and the algorithm says no, or whatever. But it’s almost like everybody is just in public in those spaces, and they’re leveraging it to their advantage… Which is an interesting place to be at in the world. There was never an opportunity before; you couldn’t do it at that level, at that scale, ten years ago, twenty years ago. It’s a now moment.
Yeah. Swyx, can you give us an example of something learned in public? Do you basically mean like blog when you’ve learned something, or ask questions? What does learning in public actually mean when it comes to – say, take a technology. Maybe you don’t understand Redux. I could raise my hand on that one… [laughter] How could I learn that in public?
There are a bunch of things that you can try. You can record a livestream of you going through the docs, and that’s useful to maintainers, understanding “Hey, is this useful or not?” And that’s immediately useful. It’s so tangible.
I actually have a list – I have a talk about this on the blog post as well… Just a suggestion of things you can do. It’s not just blogging. You can speak, you can draw comics, cheatsheets are really helpful… I think Amy Hoy did a Ruby on Rails cheatsheet that basically everyone has printed out and stapled to their wall, or something… And if you can do a nice cheatsheet, I think that’s also a way for you to internalize those things that you’re trying to learn anyway, and it just so happens to benefit others.
So I really like this idea that whatever content you’re doing, it’s learning exhaust, it’s a side effect of you learning, and you just happen to put it out there; you understand what formats work for you, because you have abnormal talents. Especially if you can draw, do that. People love developers who can draw. And then you just put it out there, and you win anyway just by doing it. You don’t need an audience. You get one if you do this long enough, but you don’t need an audience right away. And you win whether or not people participate with you. It’s a single-player game that can become a multiplayer game.
Specifically for Redux - you know, go through source code, or go through the docs, build a sample app, do like a simple little YouTube video on it… Depending on the maturity, you may want to try to speak at a meetup, or whatever… You don’t have to make everything a big deal. I’m trying to remove the perception from people that everything has to be this big step, like it has to be top of Hacker News, or something. No. It could just be helpful for one person. I often write blog posts with one persona in mind. I mean, I don’t name that person, but if you focus on that target persona, actually often it does better than when you try to make some giant thesis that shakes the world…
[20:22] Yeah. Too often we don’t move because we feel like the weight of the move is just too much. It’s like “How many people have to read this for me to make this a success for me?” You mentioned it’s a learning exhaust… And this exhaust that you’ve put out before - has it been helpful really to you? Is that exhaust process very helpful to you? Is that ingrained in the learnings that you’ve just gone through, just sort of like synthesize “Okay, I learned. Here’s actually what I learned”?
Yeah. This is actually an opportunity to tie into that second brain concept which maybe you wanted to talk a little bit about. Everything that you write down becomes your second brain. At this point I can search Google for anything I’ve ever written on something, and actually come up on my own notes, on whatever I had. So I’m not relying on my memory for that. Your human brain, your first brain is not very good at storage, and it’s not very good at search; so why not outsource that to computers? And the only way to do that is you have to serialize your knowledge down into some machine-readable format that’s part of research. I do it in a number of places; right now I do it across GitHub, and my blog, and a little bit of my Discord. Any place where you find you can store knowledge, I think that’s a really good second brain.
And for Jerod, I’ll give you an example I actually was gonna bring up, which is when I was trying to learn React and TypeScript - like, this goes all the way back to my first developer job. I was asked to do TypeScript, even though I’d never done it before. And honestly, my team lead was just like “You know TypeScript, right? You’re a professional React dev, you have to know TypeScript.” And I actually said no, and I started learning on day one.
And what I did was I created the React to TypeScript cheatsheet, which literally was just copy-pasteable code of everything that I found useful and I wish I knew when I was starting out. And I’ve just built that over time. That thing’s been live for three years now, it’s got like 20,000 stars. I’ve taught thousands of developers from Uber, from Microsoft, React and TypeScript. And they’ve taught me - every time they send in a question or a PR… I think it’s a very fundamental way of interacting, which is learning in public, but specifically this one - it’s open source knowledge; bringing up our open source not just to code, but to everything else. I think that’s a fundamental feedback loop that I’ve really enjoyed as well.
Break: [22:31]
One of the things I appreciate about you, swyx, is how you are always thinking, always writing down your thoughts… You’ve been watching and participating in this industry now for a while, and you’ve had some pretty (I think) insightful writings lately. The first one I wanna talk about is this API Economy post. The Light and Dark Side of the API Economy. You say “Developers severely underestimate the importance of this to their own career.” So I figure if that’s the case, we should hear more about it, right?
[laughs] Happy to talk about it. So what is the API economy? The API economy is developers reshaping the world in their image. Very bold statement, but kind of true, in the sense that there is now an API for everything - API for cards, API for bank accounts, API for text, API for authentication, API for shipping physical goods… There’s all sorts of APIs. And what that enables you to do as a developer is you can call an API - as long as you know REST or GraphQL these days, you know how to invoke these things and make these things function according to the rest of your program. You can just fit those things right in. They’re a very powerful thing to have, because now the cost of developing one of these services just goes down dramatically, because there’s another company doing that as a service for you.
I wrote about it mainly because at Netlify we were pitching serverless, we were pitching static hosting, and we were pitching APIs. That’s the A in JAMstack. But when I google “API economy”, all the search results were terrible. Just horrible SEO, bland, meaningless stuff that did not speak to developers; it was just speaking to people who like tech buzzwords. So I wrote my own version. The people who coined it at Andreessen Horowitz, by the way, still to this day do not have a blog post on the API economy. They just have one podcast recording which nobody’s gonna listen. So I just wrote my version.
You’re saying people don’t listen to podcasts, or what?
[laughs] When people are looking up a term, they are like “What is this thing?”, and you give them a podcast, they’re not gonna sit down and listen for 46 minutes on a topic. They just want like “Give me it, in one paragraph. Give me a visual, and I’m gonna move on with my day.” So yeah, whenever I see an opportunity like that, I try to write it up. And that’s the light side; a lot of people talk about the light side. But because it’s a personal blog, I’m empowered to also talk about the dark side, which is that as much as it enables developers, it actually is a little bit diminishing the status of human expertise and labor and talent. So we can talk a little bit about that, but I’m just gonna give you time to respond.
[28:05] Hm. I’m over here thinking now that you’re not at Netlify, I’m curious - this is tangential, but what’s your take on JAMstack now? I know you were a professional salesman there for a while, but… It seems like JAMstack - we’ve covered it for years, it’s a marketing term, it’s something we’ve already been doing, but maybe taking it to the next level… There’s lots of players now - Netlify, Vercel etc. And yet, I don’t see much out there in the real world beyond the people doing demos, “Here’s how to build a blog, here’s how to do this, here’s my personal website”, and I’m just curious… I’m not like down on JAMstack, but I just don’t see it manifesting in the ways that people have been claiming it’s going to… And maybe we’re just waiting for the technology to catch up. I’d just love to hear what you think about it now.
Yeah. I think that you’re maybe not involved in that world, so you don’t see this, but real companies are moving on to JAMstack. The phrasing that I like is that – JAMstack has gone mainstream, and it’s not even worth talking about these days, because it’s just granted that that’s an option for you… So PayPal.me is on the JAMstack, there’s large e-commerce sites… Basically, anything that decouples your backend from your frontend, and your frontend is statically-hosted - that is JAMstack.
I actually am blanking on the name, but if you go check out the recent JAMstack Conf, they have a bunch of examples of people who’ve not only moved to JAMstack, but obviously moved to Netlify, where they’re trying to promote themselves.
Sure, yeah.
So yes, it’s true that I’m no longer a professional spokesperson, but it’s not true that JAMstack is no longer being applied in the enterprise, because it is getting adoption; it’s moved on that boring phase where people don’t talk about it.
One thing I’ll say - a thesis that I’ve been pursuing is that JAMstack is in its endgame. And what do I mean by that? There’s a spectrum between the previous paradigm that JAMstack was pushing back on, which is the all-WordPress/server-render-everything paradigm, and then JAMstack is prerender-everything. And now people are filling in–
In the middle.
…I’m gonna put my hands in the Zoom screen right now. People are filling that gap between fully dynamic and fully static. So that’s what you see with Next.js and Gatsby moving into serverless rendering, partial rendering or incremental rendering… And there’s a full spectrum of ways in which you can optimize your rendering for the trade-offs of updating your content, versus getting your data/content delivered as quickly as possible. There’s always some amount of precompilation that you need to do, and there’s always some amount of dynamicism that you have to do, that cannot be precompiled. So now there is a full spectrum between those.
Why I say it’s the end game is because that’s it, there’s nothing else to explore. It’s full-dynamic, full-static, choose some mix in the middle, that’s it. It’s boring.
Hasn’t that always been the case though? Hasn’t there always been sites that server-side render some stuff, and pre-render other things? You know, we cache, we pre-render, some people crawl their own websites once, and… I don’t know it seems like maybe just a lot of excitement around a lot of things that we’ve been doing for many years.
[laughs] So first of all, those are being remade in the React ecosystem of things, which a lot of us lost when a lot of the web development industry moved to React… So that’s an important thing to get back.
I mean, I agree, that’s something that we’ve always had, pre-rendering, and services like that, caching at the CDN layer - we’ve always had that. There’s some differences… So if you understand Netlify and why they’re trying to push distributed persistent rendering (DVR), it’s because caching is a hard problem, and people always end up turning off the cache. Because the first time you run into a bug, you’re gonna turn off the cache. And the cache is gonna stay off.
So the way that Netlify is trying to fix it is that we put the cache in Git, essentially. Git is the source of truth, instead of some other source of truth distributed somewhere between your CDN and your database and somewhere else. No, everything’s in Git. I’m not sure if I’ve represented that well, to be honest… [laughter]
Well, good thing you don’t work for Netlify anymore. We’re not holding you to the Netlify standard.
[31:58] Exactly. All I can say is that to me now it’s a good thing in the sense that it’s boring. It’s the good kind of boring, in the sense of like “Okay, there’s a spectrum. There’s all these techniques. Yes, there were previous techniques, but now these are the new hotness. Pick your choice.” I can get into a technical discussion of why this technique, the first one, the others… But also, is it that interesting unless you’re evaluating for your site? Probably not…
Well, it does play into this API economy though, right? Because when you’re full JAMstack, then the A is your most important thing, and when the A is owned by a bunch of companies that aren’t yours - like, there’s a little bit of dark side there, right? All of a sudden, now I’m not necessarily the proprietor of my own website, to a certain degree, because I have these contracts. I may or may not get cut off… There’s a lot of concerns when everybody else is a dependency to your website.
Yeah. So I don’t consider that a dark side at all.
No, I’m saying to me that seems like a dark side.
Yeah, sure. This is the risk of lock-in; you’re handing over your faith and your uptime to other people. So you have to trade that off, versus “Can you build this yourself? And are you capable of doing something like this, and are you capable of maintaining it?” And that is a very high upfront cost, versus the variable cost of just hiring one of these people to do it for you as a service.
So what I would say is that the API economy is a net addition, because you as a startup - the startup cost is very little, and if you get big enough where it makes sense for you to build in-house - go ahead. But this is a net new addition for you to turn fixed costs into variable costs, and start with a small amount of investment. But I can hire – like, Algolia was started by three Ph.D’s in search, and I can hire them for cents to do search on my crummy little website. I will absolutely do that every single day, until I get to a big enough point where I cannot depend on them anymore, and I have to build my own search. Fine, I’ll do that. But until then, I can just rely on them. That’s a new addition there.
One hundred percent. So what then do you think is the darker side? You mentioned it, but put a finer point on it.
Yeah. The dark side is that there are people – like, when I call an Uber ride, Uber is an API for teleportation, essentially. I’m here, I wanna go there. I press a button, the car shows up. I get in the car, get off, I’m there. What this papers over is that the API is calling real actual humans, who are being commoditized. I don’t care who drives the car, I really don’t. I mean, they may have some ratings, but I kind of don’t care.
That was the case with taxis though, wasn’t it?
That was the case with taxis, for sure. But there’s a lot of people living below the API, who are economically constrained, and people who live above the API, developers, who have all the upside, essentially… Because the developers are unique, the labor is commoditized. My DoorDash pickers, my Instacart deliverers - all these are subsumed under the API economy. They’re commodities forever, they know it, and there’s no way out for them, unless they become developers themselves. There’s a class system developing below and above the API. And the moment we can replace these people under the API with robots, you better believe we’ll do that, because robots are way cheaper, and they complain less, they can work 24 hours, all this stuff.
Yeah.
So that’s the dark side, which is, yeah, as a developer now - fantastic. I can control most parts of the economy with just a single API call. As a startup founder, I can develop an API for literally anything, and people will buy it. The downside is human talent is being commoditized, and I don’t know how to feel about that. I think people are not talking enough about it, and I just wanna flag it to people.
Yeah.
So dark side could mean a couple things. One, it could mean literally bad; dark as synonymous with bad. Or dark as in shady. And we’re not sure, it’s obscured in terms of what’s happening. And so let’s use an Instacarter or a Dasher - to use their terminology. I happen to be a DoorDash user, so I know they’re called Dashers; that’s the only reason I know that. It’s not a downplay, it’s just simply what the terminology is…
[35:59] You could say it’s below the API, but I wonder, if you’ve spoken with these people, or people that live in what you call below the API, because I would imagine they’re not doing that because they’re being forced. Like, it’s an opportunity for them.
Oh, yeah.
And I remember when I was younger and I had less opportunity because I had less “above the API” (so to speak) talent… And I do agree there’s a class here, but I wonder if it’s truly bad; that dark is truly bad, or if it’s just simply obscure in terms of how it’s gonna play out.
This is about upside. They will never get to that six figures income with this thing.
Not that job.
No.
It’s really about the class system, which is the dark side. You don’t want to have society splinter into like a serving class and whatever the non-serving class is. It’s also about the upside - like, I don’t see a way for these people to break out unless, they really just take a hard stop and just go to a completely different career track.
Right.
Here’s where I have a hard time with that… I’m not pushing back on that you’re wrong, I’m just wondering more deeply…
Sure.
I imagine at one point in my life I was a DoorDasher.
Yeah.
I washed dishes, I did definitely unique jobs at a young age before I had skill. And so the path is skill, and as long as we have a path to skill, which you’ve show-cased through FreeCodeCamp in your path, then I think that dark side is just simply shady, and not bad.
Okay.
And I’m just trying to understand it, because I was truly a DoorDasher before DoorDash was available. I washed dishes, delivered papers, I had servant-level things; I was literally a server at a restaurant before… And I loved doing that kind of work, but my talents have allowed me to go above that specific job, and maybe even the pay that came with that job. I’ve served in the military before, got paid terrible dollars, but I loved the United States military; it’s great. And I love everybody who’s served in our military. But the point is, I think the path is skill, and as long as we have a pathway to skill, and jobs that can house that skill and leverage that skill to create new value for the world, I just wonder if it’s just necessary for society to have, I suppose, above and below API things.
Until we have all the robots. Then there is nobody underneath. At that point it’s all robots under the API.
Yes, and that is true in a lot of senses, actually. Like, farming is mostly robots these days. You do have individual farmers, but they’re much less than they used to be. I don’t know what to say about that, shady or dark… I think it’s just – there’s no career track. You have to go break out of that system yourself. Thank God there’s a way to do it. But back in the day, you used to be able to go from the mailroom to the boardroom.
I see.
I see these stories of people who used to be janitors at schools become the principal. Companies used to invest in all their people and bring them up. But now we’re just hiring your time, and then if you wanna break out of that system - good luck, you’re on your own. I think that that lack of upward mobility is a problem, and you’re not gonna see it today. It’s a slow-moving train wreck. But it’s gonna happen where you have society split in two, and bad things happen because of it.
I mean, I could agree with that part there, that there definitely is no lateral movement from Dasher to CEO of DoorDash.
It’s just not gonna happen.
Or VP of engineering at DoorDash. I think because there is no path, the path would be step outside of that system, because that system doesn’t have a path. I could agree with that, for sure.
Yeah. I mean, the good news is that we are creating – there are paths. This is not like a path from X to Y through that system, but there are other alternate paths that we are creating and investing in, and as well as the API gets pushed further and further down in terms of reachability - we now have more and more access to those things. It’s easier now, today, than it ever has been, because of what we were talking about, to be the startup founder, right? To be the person who starts at CEO because the company has one person in it, and they’re the CEO. And to succeed in that case, and become the next DoorDash.
True.
So there are opportunities to get out, it’s just not a clear line… And yeah, it takes perhaps some mentorship, perhaps ingenuity… A lot of the things that it takes to succeed anyway, so…
[40:05] I’ll give a closing note for developers who are listening, because you’re already a developer… So the analogy is if you’re above the API, you tell machines what to do; if you’re below the API, machines tell you what to do. So here’s the developer analogy, which is there’s another division in society, which is the kanban board. If you’re below the kanban board, the kanban board tells you what to do. If you’re above it, you tell developers what to do. [laughs]
There you go.
So how do you break out of that class division? I’ll leave it out to you, but just keep in mind, there’s always layers.
I love that.
I love the discussion around it, but I’m also thankful you approached the subject by a way of a blog post, because I do believe that this is interesting to talk about, and people should talk about it, for sure. Because it provides introspection into, I guess, potentially something you don’t really think about, like “Do I live below or above the APi?” I’ve never thought about that in that way until this very moment, talking to you, so… I love that.
So another awesome post you have written lately is about Cloudflare and AWS. Go - not the language, the game Go… I know very little about the language, and I know even less about the game… And Chess… How Cloudflare is approaching things, versus how AWS and Google and others are… Given us the TL;DR of that post, and then we’ll discuss.
Okay. The TL;DR of that post is that Cloudflare is trying to become the fourth major cloud after AWS, Azure and GCP. The way they’re doing it is fundamentally different than the other three, and the more I’ve studied them - I basically observed Cloudflare for the entire time since I joined Netlify. Netlify kind of is a competitor to Cloudflare, and it’s always this uncomfortable debate between “Should you put Cloudflare in front of Netlify? Netlify itself is a CDN. Why would you put a CDN in front of another CDN?” Oh, because Netlify charges for bandwidth, and Cloudflare does not. [laughter]
It’s as simple as that.
And then there’s DDOS protection, all that stuff; very complicated. Go look up the Netlify blog post on why you should not put Cloudflare in front of Netlify, and decide for yourself. But Netlify now taking on AWS S3 - S3 is like a crown jewel of AWS. This is the eighth wonder of the world. It provides eleven nines of durability. Nothing less than the sun exploding will take this thing down… [laughs]
Right? You know what’s funny - I don’t even consider us at Changelog AWS customers; I don’t even think of us that way. But of course, we use S3, because that’s what you do. So yeah, we’re very much AWS customers, even though I barely even think about it, because S3 is just like this thing that of course you’re gonna use.
There’s been a recent history of people putting out S3-compatible APIs, just because it’s so dominant that it becomes the de-facto standard. Backblaze did it recently. But Cloudflare putting out R2 and explicitly saying “You can slurp up the S3 data, and by the way, here’s all the cost-benefit of AWS egress charges that’s what Matthew Prince wrote about in his blog post is all totally true, attacks a part of AWS that it cannot compromise on and just comes at the top three clouds from a different way, that they cannot respond to.
[44:17] So I always like these analogies of how people play destruction games. I’m a student of destruction, and I study Ben Thompson and Clay Christensen, and that entire world, very quickly… So I thought this was a different model of destruction, where you’re essentially embracing rather than trying to compete head-on. And wrapping around it is essentially what Go does versus chess, and I like – you know, there’s all these comparisons, like “You’re playing 2D chess, I’m playing 3D chess. You’re playing chess, I’m playing Go.” So Cloudflare is playing Go by surrounding the S3 service and saying “Here is a strict superset. You’re already a consumer of S3. Put us on, and magically your costs get lower. Nothing else about it changes, including your data still lives in AWS if you ever decide to leave us.” Or if you want to move to Cloudflare, you’ve just gotta do the final step of cutting off S3.
That is a genius, brilliant move that I think people don’t really appreciate, and it’s something that I study a lot, because I work at companies that try to become the next big cloud. I worked at Netlify, and a lot of people are asking, “Can you build a large public company on top of another cloud? Our second-layer cloud is viable.” I think Vercel and Netlify are proving that partially it is. They’re both highly valued. I almost leaked some info there… When does this go out? [laughs]
Next week, probably…
Okay, alright… So they’re both highly valued, and - like, can they be hundred-billion-dollar companies? I don’t know. We don’t know the end state of cloud, but I think people are trying to compete there, and every startup – I nearly joined Render.com as well. Every startup that’s trying to pitch a second-layer cloud thesis is always working under the shadows of AWS. And this is the first real thesis that I’ve seen, that like “Oh, okay, you not only can credibly wrap around and benefit, you can actually come into your own as a fourth major cloud.” So I’m gonna stop there… There’s so many thoughts I have about Cloudflare.
Yeah. So do you see that R2 then – I think it’s a brilliant move, as you described it… As I read your post, I started to appreciate, I think, the move, more than I did when I first read about it and I was like “Oh, they’re just undercutting.” But it seems they are doing more than just that. But do you think that this R2 then is a bit of a loss leader in order to just take a whole bunch of AWS customers, or do you think there’s actually an economic – is it economically viable as a standalone service, or do you think Cloudflare is using it to gain customers? What are your thoughts in their strategy of Why?
This is the top question on Twitter and on Hacker News when they launch. They are going to make money on this thing, and the reason is because of all the peering agreements that they’ve established over the past five years. As part of the normal business strategy of Cloudflare, they have peering agreements with all of the ISPs; bandwidth is free for them. So… For them in a lot of cases. Again, I have to caveat all this constantly, because I should note to people that I am not a cloud or networking expert. I’m just learning in public, just like the rest of you, and here’s what I have so far. So please, correct me if I’m wrong, and I’ll learn from it.
But yeah, I mean - straight on, it’s not a loss leader. They plan to make money on it. And the reason they can is because they have worked so hard to make their cost structure completely different in AWS, and they’ve been a friend to all the other ISPs, rather than AWS consuming everything in its own world. Now you’re starting to see the benefits of that strategy play out. And by the way, this is just storage, but also they have data store, also they have service compute, all following the same model.
So what do you think is a more likely path over the next two years? Cloudflare –
Prediction time!
…Cloudflare steals just massive swathes of AWS customers, or AWS slashes prices to compete?
So I try not to do the prediction business, because I got out of that from the finance days… All I’m doing is nowcasting. I observe what I’m seeing now and I try to put out the clearest vision of it, so the others can follow.
I think that it makes sense for them to be replicating the primitives of every other cloud service. So in 2017 they did service compute with Cloudflare Workers. In 2018 they did eventually consistent data store. In 2019 - website hosting; that’s the Netlify competitor. In 2020 they did strongly-consistent data store, with Durable Objects. In 2021 object storage. What’s next on that list? Go on to your AWS console and go shopping. And instead of seven different ways to do async messaging in AWS, probably they’re gonna do one way in Cloudflare. [laughs]
[48:34] A unified API, or something like that…
Yeah, they’ll just look at AWS’ offerings, the ones they like the best, and do it that way, right?
Yeah, just pick it up.
Maybe the way to get a prediction out of you, swyx, might be rather than directly predict, maybe describe how you win Go.
How you win Go…
Yeah, what’s the point of Go? How do you win Go? Because that might predict the hidden prediction, so to speak.
Okay. For listeners who don’t know Go, let me draw out the analogy as well. So most people are familiar with chess; individual chess pieces have different values and different points, and they must all support each other. Whenever you play chess, you need the Rooks to support the Knight to support the pawns, something like that… Whereas in Go, you place your pieces everywhere, and they’re all indistinguishable from each other. And it’s more about claiming territory; at the end of the day, that’s how you win Go, you claim the most territory compared to the others… And it’s never a winner-take-all situation. Most likely, it’s like a 60/40. You won 60% of the territory and your competitor has 40% of the territory. That’s more likely a mapping of how cloud is gonna play out than chess, where winner-takes-all when you take the King. There’s no King in the cloud, but–
Are you sure…?
…there’s a lot likely of territory claiming, and Cloudflare is really positioned very well for that. It’s just part of the final realization that I had at the end of the blog post. And partially, how you take individual pieces of territory is that you surround all the pieces of the enemy and you place the final piece and you fill up all the gaps, such that the enemy is completely cut off from everything else and is surrounded. And that’s what R2 does to S3 - it surrounds S3, and it’s up to you to place that final piece. They call it, Atari, by the way, which is the name of the old gaming company, Atari. They have placed AWS S3 in Atari, and it’s up to the customers to say “I’m gonna place that final piece. I’m gonna pay the cost of transferring all my data out of S3 and cut S3 off”, and they cut off all the remaining liberties. So how do you win in Go? You claim the most amount of territory, and you surround the pieces of the enemy.
Which, if you thought maybe that was oxygen, the territory, you might suck the oxygen away from them, so they can’t live anymore, so to speak… And maybe you don’t take it by killing it. Maybe you sort of suffocate it almost, if their space becomes small enough; if you take enough territory and it begins to shrink enough, it’s kind of like checkmate, but not.
Yeah. There’s also a concept of sente in Go, which is that you make a move that the opponent has to respond to, which is kind of like a check, or checkmate – actually, not; just the check, in chess. And right now, AWS doesn’t feel the need to respond. Cloudflare is not big enough. Like, these are names to us, but let’s just put things in numbers. Cloudflare’s market cap is 36 billion, AWS’ market cap is 1.6 trillion; this is Amazon’s total market cap. Obviously, AWS is a subset of that.
Sure.
So your competitor is 40 times larger than you. Obviously, Cloudflare is incentivized to make a lot of noise and make themselves seem bigger than it is. But until AWS has to respond, this is not real.
Nice.
So as a developer, as a customer of potentially one or both of these… Let’s say you have a whole bunch of stuff on S3 - I’m asking you personally now, swyx - and R2 becomes available… Is that a no-brainer for you, or is there any reason not to use that?
You’re just adding another vendor in your dependency tree. I think for anyone running silicon bandwidth, it is a no-brainer.
Yeah. So over the course of N months, where N equals when they launch plus a certain number - I mean, I think this is gonna end up eventually on Amazon’s radar, to where it’s gonna start affecting some bottom lines that important people are gonna notice. So I just wonder - I mean, how much territory can Cloudflare grab before there’s a counter-move? It’s gonna be interesting to watch.
[52:12] So Ben from Vantage actually did a cost analysis… Vantage is a startup that is made up of former AWS Console people; they’re trying to build a better developer experience on top of AWS. They actually did a cost analysis on the R2 move, and they said that there’s probably a hundred billion dollars’ worth of revenue at stake for Amazon. So if they start to have a significant dent in that, let’s say like 40%, AWS will probably have to respond. But until then, there’s nothing to worry about. That’s literally how it is in Amazon; you have to see the numbers hit before you respond.
Yeah. It hasn’t even been a blip on the radar at this point, the key metrics to the people who are important enough to care are watching. You said you started watching all of these CDNs. Of course, you worked at Netlify… You take an interest in backends. There’s something you mentioned in the break about frontenders versus backend, and where you’ve kind of been directing your career, why you’re watching Cloudflare so closely, what you’re up to now with your work… Do you wanna go there?
Let’s go there. So if you track my career, I started out as a frontend developer. I was developing design systems, I was working with Storybook, and React, and all that… Then at Netlify I was doing more serverless and CLI stuff. At AWS more storage and database and AppSync and GraphQL stuff… And now at Temporal I’m working on a workflow engine, pure backend. I just went to KubeCon two weeks ago…
Nice!
What is a frontend developer doing at KubeCon…?
New territory.
It’s a frontend developer who realizes that there’s a career ceiling for frontend developers. And it’s not a polite conversation, and obviously there are exceptions to frontend developers who are VPs of engineering, frontend developers who are startup founders… And actually, by the way, there’s a lot of VC funding coming from frontend developers, which is fantastic for all my friends. They’re all getting funded, left, right and center. I feel left out. But there is a Career ceiling, in a sense that survey a hundred VPs of engineering, how many of them have backend backgrounds, and how many of them have frontend backgrounds? And given that choice, what’s more likely for you and your long-term career progression? Do you want to specialize in frontend or do you want to specialize in backend? Different people have different interests, and I think that you can be successful in whatever discipline you pick. But for me, I’ve been moving towards the backend for that reason.
Describe ceiling. What exactly do you mean when you say “ceiling”?
Career ceiling. What’s your terminal title.
Like your highest role, or whatever. Highest salary, highest role, highest title…
Gotcha.
Like, straight up, how many VPs of engineering and CTOs have backend backgrounds versus frontend.
Yeah. I mean, just anecdotally, I would agree with you that it’s probably 8 or 9 out of 10 CTOs have – is that what you said, 8 or 9?
Yeah, yeah. So there’s obviously an economic reasoning for this; it’s because there’s a bias in the industry that frontend is not real development, and backend is. And that has to be combated. But also, there’s an economic reasoning, and I always go back to the economics part, because of my finance background… Which is that your value to the company, your value to the industry really depends on how many machines run through you. You as an individual unit of labor, how much money do you control, and how much machine process, or compute, or storage, or whatever runs through you. And just straight-up frontend doesn’t take as much. [laughs] Yes, frontend is hard, yes, design is hard, yes, UX is crucially important, especially for consumer-facing products… But at the end of the day, your compute is being run on other people’s machines, and people don’t value that as much as the compute that I pay for, that I need to scale, and therefore I need an experienced leader to run that, and therefore that is the leader of my entire eng.
I wonder if that changes at all for very product-focused orgs, where I think a lot of frontenders, the moves are into product design and architecture, and away from - not software architecture, but product design. And it seems like maybe if you compare - not VP of engineering, but VP of product, you’d see a lot of former frontenders.
[56:03] Yeah.
Maybe that’s their path. Do you think that’s –
Totally. But you’re no longer a frontend dev. You suddenly have to do mocks…
Yeah, but when you’re VP of engineering you’re not a backend dev either.
Yeah.
So you’re kind of both ascending to that degree
Backends devs will never report to you, let’s put it that way.
Okay. Fair.
[laughter] But somehow, frontend devs have to report to backend devs, for some reason; just because they’re superior, or something. I don’t know, it’s just like an unspoken thing… It’s a very impolite conversation, but hey, it’s a reality, man.
So do you see this personally, or do you see this by looking around?
Yeah.
Yeah. You felt like you had reached a ceiling.
Well, again, this is very impolite; there’s a ton of ways to succeed, and there are definitely exceptions. Emily Nakashima at Honeycomb - former frontend person, now VP of engineering. I don’t know, I could have done that. I have interest in backend and I’m pursuing that. So I will say that - this is a soft ceiling, it’s a permeable ceiling. It’s not a hard ceiling.
Sure.
But there’s a ceiling though, because you can see the numbers.
What is it in particular the VP of engineering does that would make a frontender less likely to have that role? What specifically? I mean, engineering is one of the things, right? Commanding the software… Which is not necessarily frontend.
Well, frontend is also an engineering discipline.
I guess it kind of depends on the company, too. Honeycomb is probably a different example.
I haven’t been a VP of engineering, so I only have some theories. I suggest you just ask the next VP of engineering that you talk to, or CTO.
Yeah.
Yeah. That’d be a good one to start asking people.
What do you do here? What is it you do here?
What is it you do here?
Exactly.
[laughs]
Well, I just wondered if there was a specific skillset that happens at that VP of engineering level that leads more towards a backender being more likely than a frontender to get hired into the role.
I think there’s some traditional baggage. Power structures persist for very long times… And for a long time UX and frontend was just not valued. And we’re like maybe five years into the shift into that. It’s just gonna take a long time.
I agree with that. So tell us what you’re up to now. You said you’re doing workflows… I saw a quick lightning talk; you were talking about “React for the backend”. So you’re very much taking your frontend stuff into the backend here, with React for the backend. Tell us about that.
Let’s go for it. So at Netlify and at AWS I was essentially a developer advocate for serverless. So this is very cool - it does pay-as-you-go compute, and you can do a lot of cool stuff with it. But something that was always at the back of my mind bothering me, that serverless does not do well, is long-running jobs. It just does not do well. You have to chain together a bunch of stuff, and it’s very brittle; you cannot test it… It’s way more expensive than you would do in a normal environment.
Yeah.
And it made me realize that in this move to take apart everything and make everything as a service, we have gained scalability, but we’ve lost basically everything else. And what I was trying to do was “How do we reconstruct the experience of the monolith? What are the jobs to be done?” When you break it down, what does a computer do for you, and what is not adequately addressed by the ecosystem?
I went through the exercise… I wrote a blog post called “Reconstructing the monolith, and I actually listed it out.” So what are the jobs of cloud for a computer? You want static file serving, you want functions, you want gateway, you want socket management, job runners, queue, scheduler, cold storage, hot storage. There’s meta jobs like error logging, usage logging, dashboarding, and then edge computing is like a unique to cloud thing. But everything else, you can kind of break it up and you can locate it on one machine, or you can locate it on multiple machines, some of them owned by you, some of them not owned by you.
The thing that serverless – that had a whole in the ecosystem was job running. Not good. Basically, as an AWS developer right now, the answer is you set a CloudWatch schedule function, and you pull an endpoint, and that should read some states from a database, and check through where you are, and compute until the 15-minute timeout for Lambda, and then save it back in, and then wait for the next pull, and start back up again. Super-brittle, and just a terrible experience; you would never want to go this way.
[01:00:08.13] The AWS current response to that is AWS Step Functions, which is a JSON graph of what happens after the other, and this central orchestrator controls all of that. I think we could do better, and that’s eventually what got me to temporal. So essentially, this blog post that I wrote - people found me through that, and hired both our head of product and myself from this single blog post. So it’s probably the highest ROI blog post I’ve ever written.
Wow. That’s spectacular.
It’s just the VC that invested in Temporal. So what Temporal does is it helps you write long-running workflows in a doable fashion; every single state transition is persisted to a database, in idiomatic code. So idiomatic Java, idiomatic Go, idiomatic JavaScript, and PHP. This is different from other systems, because other systems force you to learn their language. For Amazon, you have to learn Amazon States Language. For Google Workflows - Google Workflows has a very long, very verbose JSON and YAML language as well.
And these are all weird perversions of – like, you wanna start simple; JSON is very simple, for doing boxes and arrows, and stuff like that… But you start ending up having to handwrite the AST of a general-purpose programming language, because you want variables, you want loops, you want branching, you want all that god stuff. And the best way to model asynchronous and dynamic business logic is with a general-purpose programming language, and that’s our strong opinion there.
So Temporal was created at Uber; it runs over 300 use cases at Uber, including driver onboarding, and marketing, and some of the trips stuff as well. It was open source, and adopted at Airbnb, and Stripe, and Netflix, and we have all those case studies on – DoorDash as well, by the way, runs on the Uber version of Temporal.
There you go, Adam.
And yeah, they spun out to a company two years ago, and we’re now trying to make it as an independent cloud company. And again, the cloud strategy part comes in, right? Like, why should this be an independent startup, versus just being a functionality in other clouds? Because this is one of those interesting mid-points that actually lets you be multi-cloud. Because as a source of truth of application state, I can call between clouds, and I happen to be the neutral party. So it’s a very nice position to be in.
Nice. What I saw from your code that excited me, which I think was the coolest part, is - basically inside of this workflow, which looks like a serialized function, serialized meaning like step one, two, three, four, five, you have a step in there that says “Sleep for a month, and then wake up.”
Yeah.
This is how you’re implementing like a 30-day trial, or something, right?
Yeah.
Like, “Charge their Stripe card, make sure it’s valid, and then sleep for 30 days. Wake up and actually charge the amount.” I thought “Now, that’s a cool demo right there.” You got my interest.
You liked it? [laughs]
Yeah, that’s sweet.
So Temporal combines a database scheduler and a queue system. So why do we not currently do “sleep 30 days” in our system? Because it ties up cross-compute, and it’s all in memory; like, it’s gonna go away the moment your system goes down. So what you need to do is at every single point in time save any state change to the database, and be able to set internal timers to wake up again when it’s time to carry on to the next step. And by the way, what you saw there with the 30-day sleep is also applicable for timeouts and retries. So any single time that you need to call an API, “Oh, it’s temporarily rate-limited”, you need to try it again. But guess what - you have to set up all this infrastructure and code to do the timeouts and retries. With Temporal, it just kind of bakes that in for you.
Interesting. What’s the prediction then? So if this is the next –
He doesn’t like to predict… [laughs]
…big thing and you’ve got a knack for going to the right clouds…
Nowcast us.
…or at least the most influential ones, what’s your hot take – would you call it your Nowcast…? What’s your Nowcast for Temporal? What’s gonna happen in the next – what’s now for the next six months, a year? What’s the current now?
Yeah, yeah. So for what it’s worth, the multi-cloud story is not something we’re pushing at all. It’s just possible; it’s not a main part of the story. The main part of the story is that people are doing long-running jobs badly, they’re doing microservice orchestration badly, and that mostly comes out of not having the right abstraction to do it.
[01:04:08.13] We have centuries of distributed systems people here that solve that for you in a framework. If you just thought in our breakdown of workflow activities everything else is gonna behave predictably and testably, and you can maintain it.
So I have a blog post for people who are interested on Why Temporal. That’s literally the URL, WhyTemporal. The prediction really is about that microservices are exploding, serverless environments are exploding, and they need a way to manage complexity. Every time you call an API, your risk of failure goes up exponentially the more APIs you call. And workflows are getting more and more complex. So we’re just long that. As long as that goes up, we go up. [laughter] And I think that’s a fairly safe bet, I think.
The other thing which – personally, for me, Netlify struggles to justify its value because people again don’t value CDNs very much, basically because Cloudflare gives it away for free. It gives away a very, very good product. But I’ve noticed that database companies have no problems monetizing. You talk to Spencer at Cockroach…
That’s right.
…or you talk to whoever runs MongoDB.
Fauna.
Fauna, exactly. And that’s because people know how to pay for storage.
Planet scale.
They know how to pay for bandwidth, and compute, and all this. Very, very well-established things. And I think there’s a very strong roadmap here that we can just follow, that doesn’t take a rocket science genius at product-market fit, or whatever… And we’re seeing it, by the way. We have strong customers… We just got Stripe to present how they’re a user of us at our community meetup…
That’s cool.
And it’s just absurd. The amount of product-market fit here is just amazing. It’s an open source project, so you can self-host it, but we’re seeing that people want to pay us to do it for them, and it’s very serious companies. I see multiple instances where this has worked in the past, so I feel very safe betting on this thing.
Well, we will hold off any further questions, because we’re gonna bring you on JS Party for a full Temporal deep-dive, coming to a JS Party near you soon. Listeners, if you’re not listening to JS Party, you’ve got something wired wrong. You’ve gotta head over there…
That’s right. Stay tuned, because swyx will be hitting that feed soon for a full conversation with people who are smarter than Adam and I are at things like JavaScript, and React, and they can ask the hard questions that we can only feign asking.
Swyx, this has been so much fun. Any final words, final thoughts, anything you wanna say before we call it a show?
So my call-to-action for people is to learn in public more. Share what you learn, and as you have reflective thoughts, like I’ve been doing with the Cloudflare and the API economy stuff - share those as well… Because I’m only one guy. I’m eager to hear your perspectives. Developers don’t talk enough about the real issues; I wish you did. I wish people shared more. I know it’s an extra burden and I know you have dayjobs and stuff, but if you can find the time, share it, and I think you will find that it’s rewarding to you, personally and professionally.
Yeah. I appreciate you, man. Thank you for being a listener for all these years, thank you for all you shared here today. We really appreciate you. Thank you.
Yeah, thanks for having me on. It was a blast.
Our transcripts are open source on GitHub. Improvements are welcome. 💚