
Fullstack Serverless Frameworks
Anthony Campolo discusses his journey into web development and advocacy for RedwoodJS plus other Jamstack technologies
Episode Description
Anthony Campolo shares his journey from music teacher to boot camp student and Redwood JS advocate, exploring full stack serverless Jamstack development.
Episode Summary
In this episode, Bryan Robinson talks with Anthony Campolo, a Lambda School student and Redwood JS advocate who transitioned from a career as a music teacher into web development. Anthony traces his path into the Jamstack world, from encountering Jekyll-powered sites while studying data science to spinning up a Gatsby blog and eventually discovering Redwood JS. The conversation centers on what makes Redwood unique as a full stack serverless framework for the Jamstack, combining a static front end served from a CDN with serverless backend functions, Prisma for database management, and GraphQL as the connective layer. Anthony explains the framework's tutorial-driven development philosophy and discusses the practical challenges of swapping out components like Prisma and Postgres for alternatives such as FaunaDB. The discussion broadens into the value of opinionated frameworks for learning, drawing comparisons to Rails while noting where Redwood intentionally diverges. Bryan and Anthony also reflect on how the landscape of meta frameworks is evolving, the changing meaning of the Jamstack label itself, and the difficulty of learning modern frameworks compared to the days of reading through jQuery source code. Anthony closes by sharing his interest in dev advocacy, his expanding curiosity about Vue, Svelte, and other ecosystems, and an upcoming initiative called FSJam focused on full stack Jamstack content.
Chapters
00:00:00 - Meet Anthony Campolo
Bryan introduces Anthony Campolo, a full stack web developer, boot camp student, and Redwood JS advocate. Anthony shares his unconventional path into programming, having previously worked as a music teacher and summer camp director before enrolling at Lambda School.
Anthony describes the flexibility of Lambda's full time and part time programs, noting that he started full time before switching to part time. He also reveals that his main hobby outside of coursework has become open source contribution and community engagement, including blogging, meetup talks, and podcast appearances focused on Redwood JS.
00:03:03 - From Static Sites to the Jamstack
Anthony recounts how he first encountered static site generators while exploring data science, noticing that researchers' personal sites were built with Jekyll. After initially going the WordPress route, his shift toward JavaScript and React led him to Gatsby, where podcasts and community voices helped solidify his understanding of the Jamstack ecosystem.
The conversation turns to Anthony's career aspirations in dev advocacy, a role that aligns with his background in education and storytelling. He discusses his fascination with the evolving narrative of the Jamstack, from static site generators to a broader architectural concept, and how the removal of the original acronym reflects its shifting identity.
00:06:27 - Redwood JS as a Full Stack Serverless Framework
Bryan asks how Redwood positions itself within the Jamstack landscape, and Anthony breaks down its three pillars: Jamstack for static front end assets on a CDN, full stack for globally distributed backend and database capabilities, and serverless for deploying to functions-as-a-service platforms like AWS Lambda. GraphQL serves as the glue tying front end and back end together.
Anthony explains the tutorial-driven development approach that Redwood uses, where the framework was built around making its tutorial work. He discusses the default deployment to Netlify and Heroku with Postgres, and his own explorations connecting Redwood to FaunaDB on Vercel, highlighting the growing ecosystem of deploy targets and database options.
00:10:21 - Prisma, Databases, and Opinionated Frameworks
The discussion gets into the technical details of swapping databases in Redwood, particularly the role of Prisma as a query builder for handling migrations and database operations. Anthony explains that replacing Postgres with FaunaDB means removing Prisma, which taught him a great deal about where Redwood ends and Prisma begins since their CLIs are intertwined.
The conversation broadens to the value of opinionated frameworks like Redwood, Blitz, and Bison. Anthony appreciates how learning a curated stack assembled by experienced developers provides transferable knowledge, while noting that Redwood's Rails inspiration is about adopting a happy path philosophy rather than replicating Rails itself, with Tom Preston-Werner intentionally addressing things he wanted to do differently.
00:14:54 - Learning from Frameworks Past and Present
Bryan reflects on how reading jQuery's source code years ago taught him JavaScript fundamentals he hadn't encountered through regular use, drawing a parallel to the learning opportunities in modern frameworks like Redwood. Anthony acknowledges that this kind of deep-dive learning is harder today due to minification, code splitting, and the sheer complexity of tools like React.
The conversation shifts to the proliferation of meta frameworks and even meta meta frameworks, with Blitz and Bison built on top of Next.js. They discuss the evolving terminology around these tools, from static site generators to application frameworks to meta frameworks, and Anthony highlights the concept of Gatsby as a content mesh and how GraphQL enables a universal middle layer between backends and front ends.
00:19:49 - Jams, Music, and What's Next
Anthony confirms that Redwood and GraphQL are his primary jam in the Jamstack, while expressing growing interest in Vue 3 with the composition API, Svelte and Sapper, and the Elder static site generator. He values comparing frameworks as a learning strategy, finding that gaps in one framework inspire him to build solutions himself.
As a former professional musician, Anthony shares his love of Radiohead, Bon Iver, and 90s indie rock bands like Neutral Milk Hotel and Modest Mouse. He closes by promoting FSJam, a new initiative by Christopher Burns focused on full stack Jamstack content and a potential podcast, before Bryan wraps the episode with thanks and encouragement to keep building on the web.
Transcript
00:00:14 - Bryan Robinson
Hello everyone. Welcome to another episode of That's My Jamstack, the podcast where we ask that not so tricky question, what's your jam in the Jamstack? I'm your host, Bryan Robinson, and this week we have Anthony Campolo, a full stack web developer and RedwoodJS advocate.
All right, Anthony, thanks for coming on the show with us today. How are you doing?
00:00:43 - Anthony Campolo
I'm doing great. Thanks for having me. I'm a big fan of the pod, so it's great to be here.
00:00:47 - Bryan Robinson
Excellent. I appreciate it. So tell us a little bit about yourself. What do you do for work? What do you do for fun?
00:00:52 - Anthony Campolo
Yeah, absolutely. I'm a boot camp student, someone who is kind of coming to programming from a different area of life. I was originally a music teacher and also ran a performing arts summer camp for about four years, and I decided that I wanted to try something else out.
The journey I got to coding is long and winding, which we'll talk about a little bit as we go on. Right now I am at Lambda School and learning full stack web development. That's where I'm at.
00:01:28 - Bryan Robinson
Nice. So you're at Lambda School. You do that kind of full time for a small cohort, right?
00:01:33 - Anthony Campolo
Yeah. They have a full time and a part time program. Full time is a nine month program, and part time is an 18 month program. I actually started full time and then switched to part time, so I've done a little bit of both.
It depends on if you're also working to support yourself or if you can really do it full time. It's nice because they have that flexibility, so people can choose the schedule that fits for them.
00:02:02 - Bryan Robinson
Very cool. So outside of learning to code, what's your idea of fun nowadays?
00:02:09 - Anthony Campolo
I've gotten really into open source. It's the type of thing where I'm doing it both to eventually help my career, but it is something that I've really enjoyed, and I've learned a lot about RedwoodJS in particular.
I've spent a lot of time blogging about it, and I've also given a couple meetup talks about it. I did one at Jamstack Denver and another one for GraphQL Texas, and now I'm doing some podcasts. I got on both Jamstack podcasts hosted by Bryan, so that's good.
That's kind of where I'm at now. I'm really deep into the Redwood world.
00:02:51 - Bryan Robinson
Very cool. Obviously you're a boot camp student, so you're picking up development as you go along, but what was your entry point into this idea of the Jamstack? Was it Redwood or was it something else in the past?
00:03:03 - Anthony Campolo
Yeah, it was definitely way before Redwood. Already being familiar with the Jamstack made it easy to get what Redwood was going for.
To take it back a little bit, before I was doing any web development stuff, I was actually learning data science and machine learning. A lot of people who do that type of research have their own personal websites to talk about the stuff they're working on. There were a couple where I would scroll to the bottom and it would say it was created with Jekyll. Jekyll is a static site generator, created by the creator of Redwood, Tom Preston-Werner. That was probably the first time I ever heard of the term static site.
I ended up not going that route. I just made a WordPress website when I was first getting into blogging. But once I started to transition more into web development and learning JavaScript and React in particular, I learned about Gatsby.
00:04:10 - Anthony Campolo
I spun up a Gatsby blog, and I listened to a lot of podcasts, so I would hear podcasts with Kyle from Gatsby or Matt from Netlify. I was hearing all these people talking about these ideas, and it was just kind of floating around. It's been kind of a slow roll into it, but it's definitely a huge, massive thing that's just there. If you pay attention, it's hard not to poke that bubble every now and then.
00:04:38 - Bryan Robinson
Yeah, exactly. When you were getting into development, you were doing more on the machine learning side and some of that more computer science stuff. What's your plan? Where do you want to go with web development in a post-boot camp world?
00:04:52 - Anthony Campolo
Right now, I'm really into the dev advocacy side of it because I enjoy creating tutorials. I enjoy going out and talking about these things. My background as an educator fits really well in that niche.
There are different corners that people go for. Some are more education focused, some are more outreach focused, and some are more about bringing feedback back from the community. Redwood has been cool because all the mechanisms for feedback are already in place.
I see myself more as getting out and explaining it to people: what is this, how does it work? That's kind of the whole role that I've monopolized.
00:05:41 - Bryan Robinson
Nice. And you've got that arts background, which definitely helps when it's like framing the story of how to do that education too. That's always a handy thing to have in your tool belt.
00:05:50 - Anthony Campolo
Yeah, you need to be able to put things into a narrative for people to really want to pay attention, especially for technical things.
I find that the history of this thing is so fascinating. I've spent a lot of time writing about the transition from static site generators into the Jamstack. Now the Jamstack is turning into something else that we're not quite sure what it is yet because we've gotten rid of the acronym. Jamstack stands for nothing, and it's just an architecture.
I'm really interested in those ideas of where the Jamstack is going.
00:06:27 - Bryan Robinson
Yeah, definitely. There are so many new technologies coming out, Redwood being among them. Next.js has all these new ideas around what static and server side mean, and how these different pieces can be intermingled.
I'm curious, how does Redwood see itself? I know it's a full stack, front end application builder, but what does the community see in terms of where it's going?
00:06:54 - Anthony Campolo
It's called a full stack serverless framework for the Jamstack. You have the Jamstack part, which is about having your front end be static assets that you can serve from a globally distributed CDN. Then the full stack part is how do we get those same benefits attached to the database and the backend. It's about how to get the backend to be distributed globally, which FaunaDB is doing a lot of really interesting research on.
Then you have the serverless part, which is how do you get your whole application smushed into these AWS Lambda handlers, or Google Cloud Functions, or Azure Functions. The backend is set up so it's easily deployable to these functions-as-a-service, serverless backends.
I didn't even mention GraphQL. GraphQL is what ties the two together. There's a lot of tech that goes into it, and it takes a long time to wrap your head around, which is why I've spent a lot of time writing about it and talking about it.
00:08:11 - Anthony Campolo
I have hours and hours of material about it at this point.
00:08:15 - Bryan Robinson
How are you pursuing Redwood right now, professionally and personally? What are you building with it? What are the applications that you see optimized around what Redwood can do?
00:08:26 - Anthony Campolo
The first thing I did was go through the tutorial, and this is what I would recommend to everyone who is getting into this. You should go through the whole tutorial and build out that project.
They started with what they call tutorial-driven development, which is a play on README-driven development, another term Tom was using a while ago. The idea is that you create the tutorial and then build the framework to make the tutorial work. It's a crucial part of it.
When you go through that, it has you deploy to Netlify for your front end and then Heroku for your back end to set up a Postgres database. I'm really interested in other deploy targets and other databases you can link it up to. I wrote an article about how to connect it to FaunaDB, and that was deployed on Vercel.
There are other people doing work with the Serverless Framework and Azure Postgres. Now that I know how to build out a Redwood project, I'm interested in the different ways we can deploy it and get it out onto the internet.
00:09:43 - Bryan Robinson
Yeah. How can we do that database structure? That's traditionally been the fun, challenging aspect of the Jamstack: how do you get that third-party data in?
If you're having it be your own database, like a Heroku Postgres kind of idea, that doesn't necessarily fit with some of the other Jamstack ideals. A FaunaDB type solution might, and serverless functions in Lambda might, over hosting elsewhere.
How is that going? How does that feel in terms of ripping out a Postgres server and installing a NoSQL server, or maybe a third-party data API or some other sort?
00:10:21 - Anthony Campolo
It's really interesting. Another thing you have to consider is Prisma. Prisma is called a query builder, so it's a little bit like an ORM but a little bit lower level. That's what you use to do a lot of your database work for Postgres, MySQL, or SQLite.
When you go through the regular tutorial, you eventually have a Postgres database, and you're using SQLite in development. Prisma is what you use for migrations and a bunch of stuff like that. So you have to rip out Prisma to use Fauna. That's actually the biggest thing you have to consider: do you need the functionality that Prisma gives you?
Some people don't because they've never used it and they don't even know what it does. But once you learn Redwood through the tutorial, you learn it with Prisma. It can be easy or hard to tell where the line is between the two because the Redwood CLI actually reaches into the Prisma CLI.
00:11:32 - Anthony Campolo
When you do Redwood commands, some of them are Prisma commands. For me, I learned a lot through the Fauna project about where the boundary is between Redwood and Prisma. That's the thing you're going to have to figure out if you want to decide which route you want to go with your database when you're using Redwood.
00:11:52 - Bryan Robinson
One of the things I've seen in the Jamstack world, and with some of the conversations around Redwood, is this idea that opinionated frameworks aren't a bad thing. Gatsby comes with its unique flavor of React and is tightly coupled with GraphQL. Redwood comes with its own brand of things. I've heard it favorably compared to Rails.
It allows you to create things very quickly if you're doing it in their opinionated way. It seems like we're going in that direction so that if you have a set of opinions that you like, you can find tooling around it. It seems like Redwood is settling into a very specific niche there.
00:12:34 - Anthony Campolo
Absolutely. This is a big thing with other frameworks that are compared to it a lot. You have Blitz, which is another Rails-inspired, opinionated full stack framework. Then you have Bison by Chris Ball, which is a really interesting project that is still pretty new and up and coming.
I like it because it's nice to have options, and it's nice for me as a beginner to see a stack put together. Even if I end up moving away from Redwood and doing other things, learning how the Redwood stack was put together has given me things I can take for the rest of my career.
It's not about this being the one true way to do development. It's more like, here's a way that we think works for us through our experience as developers, taking bits and pieces from different frameworks they've used in the past.
The Rails comparison is interesting because I think this can trip some people up. They think of Redwood like Rails, so they think whatever advantages or disadvantages Rails has, Redwood will have those same advantages and disadvantages. But it was made to contrast Rails in certain ways as well.
00:13:50 - Anthony Campolo
There are things that Tom doesn't like about Rails that he is specifically trying to do differently. That's an important thing to note too. Don't get hung up on the Rails thing. It's Rails-inspired in the sense that it wants to have a happy path, but what that happy path is is not the same thing as Rails.
00:14:12 - Bryan Robinson
Yeah, definitely. It takes the positive side of being able to scaffold quickly and build quickly from the Rails ideology and runs with that.
Coming from Tom's Rails background and working on various things in the past, he's been able to bring that hard knocks education into what he built. I think you're exactly right that one of the best ways to learn is to take a very opinionated framework and see how somebody has set it up, somebody who has decades of experience. You then get to learn from those decades of experience, which is a very powerful tool.
00:14:54 - Anthony Campolo
Absolutely. It's been fun. And it's not just Tom, too. Peter Pistorius has worked on a lot more of the code than Tom has. I say he's kind of like the Rosetta Stone of this project. It came out of the work that Peter and Tom were doing on Chatterbug.
They were doing React and GraphQL and all that kind of stuff, and they wanted to put together a framework that would work for that, and that would give them the same sort of benefits they had from Rails, but with this new technology.
00:15:28 - Bryan Robinson
I'm going to date myself a little bit here, and I'm not too afraid of that. One of my biggest learning experiences, and this was a decade ago, was that I primarily used jQuery back in the day, as many people who were doing web development a decade ago were doing.
The biggest thing I learned was when I actually read through the code of jQuery and dissected how it worked, which was, mind you, like five years after just using the framework. It was like diving in and saying, oh, that's how JavaScript callbacks work, or all the pieces that I hadn't experienced and hadn't had to write because of jQuery. I was able to learn by reading it.
A lot can be said about these new frameworks as well. It's like learn how to use it, get its system under your belt, and then ask, how did they write that? How does that function? There are so many educational opportunities.
00:16:27 - Anthony Campolo
Yeah. It's a weird time getting in now because learning things like React, I know that I should try to read through the React source code, but it's hard. It's hard to even know what to get out of that.
They also talk about how you can't really do View Source anymore because of how much all the stuff gets minified and spit out. It's hard to know where to break in to try to figure out how they work.
Luckily, docs have gotten a lot better. You should read through the React docs front to back. I find most people don't even do that.
Back in the day, you could just go read through the source code. That's not really a thing you can do very much these days.
00:17:14 - Bryan Robinson
That's fair. There's also the idea of all the code splitting that we do too, whereas jQuery used to be one directory with ten files in it. Nothing major.
Now, if I were to rewrite jQuery, it would be 100 files, 150 files, just to do that same functionality. The same can easily be said for React and for the meta frameworks built on top of it.
00:17:39 - Anthony Campolo
Yeah. Meta frameworks and meta meta frameworks. There are now frameworks built on top of frameworks, like Blitz and Bison, which are built on top of Next. I find that really interesting. You have all these layers of abstraction, frameworks built on top of frameworks. It's super fascinating.
00:17:57 - Bryan Robinson
You can go back and in the first dozen or so episodes of the podcast, I was talking with a bunch of Gatsby people and a few Next people. I would ask, how do you refer to this? Because it's not a static site builder anymore. It's not a static site generator.
They were like, oh, it's an application framework. Then a guest I had in the second half of the first season was like, Google is calling it meta frameworks. I was like, that makes sense, a framework on top of a framework.
Now we've got meta meta frameworks, which is exciting, but the language feels a little tortured about it.
00:18:32 - Anthony Campolo
I know Jason Lengstorf was calling Gatsby a content mesh at one point, which I thought was a fascinating term, especially because of how it uses GraphQL and this idea of having one universal middle layer between your backends and your front ends. You can create whatever front end you want and then pull in whatever combination of backends you want.
The thing I found really interesting with Redwood is that when you have GraphQL baked in from the start, you see what you can do with that and what kind of power that gives you. I really like GraphQL. That's been the thing I've enjoyed learning the most out of Redwood, for sure.
00:19:09 - Bryan Robinson
It's definitely way better than going and getting the entire JSON return response from an API that has dozens of things that you don't need inside of it. I'll always appreciate what GraphQL did around that.
00:19:23 - Anthony Campolo
Yeah. I imagine a lot of back end people are like, GraphQL is not simpler. It's much more challenging. It just seems simpler once it's set up.
I definitely sympathize with people who think it's a huge startup cost, but I think the benefit that your front end gets from being able to have really flexible queries is really high.
00:19:49 - Bryan Robinson
I think I can make some assumptions here, but what would you say that your jam in the Jamstack is? I'm assuming Redwood and GraphQL, but I want to leave the door open. Whatever else you want to say in here, anything goes.
00:20:03 - Anthony Campolo
That's definitely what I've invested the most time into learning and communicating. I'm fascinated by the entire ecosystem, and I'm starting to learn a little bit of Nuxt because I'm really interested in Vue 3 with the composition API and the changes that are going to come with that.
I'm really interested in Svelte and Sapper, and I just heard about Elder, which is supposedly the new static site generator for Svelte that's supposed to be really good.
Redwood is definitely my bread and butter right now, but I'm constantly expanding out and trying to look at what else is out there and other ways to do things. For me, the best way to learn is to compare different ways of doing things. If I'm in one framework and it doesn't have something another framework has, I can figure out how to implement it myself, and that's very cool.
00:21:02 - Bryan Robinson
So what's your actual jam right now? What's your musical jam? What's your favorite song or musician? What's in your earphones?
00:21:08 - Anthony Campolo
I used to be a full-time professional musician, so music is obviously a big thing for me. My favorite band has always been Radiohead. I first got into them around when In Rainbows came out, which was in 2007, and it's been my favorite band ever since then.
I really enjoy Bon Iver. I first got into him back when his first album came out, and his career has been incredible to see. Now he's been on Kanye West albums, and he's been nominated for Grammys.
Then there's 90s indie rock, like Neutral Milk Hotel, Modest Mouse, Built to Spill, that whole kind of scene. That was always really influential to me. Those are some of my favorite bands and artists.
00:21:55 - Bryan Robinson
Very cool. All right. Is there anything that you would like to promote, something you're doing that you want to get out to the Jamstack world at large?
00:22:01 - Anthony Campolo
Yeah. There's this thing called FSJam, so full stack Jamstack. It's what Redwood is going under right now. A friend of mine, Christopher Burns, is creating an organization around this.
The Twitter handle is FSJamOrg. We'll be putting out some content and possibly even getting a podcast going. That's something to look for.
00:22:32 - Bryan Robinson
Very cool. Something to stay tuned for, as they say in the industry, right?
00:22:36 - Anthony Campolo
Yeah.
00:22:36 - Bryan Robinson
Very cool. Thank you, Anthony, for coming on the show today. I hope you keep doing amazing stuff with Redwood, and beyond, as you're saying. There's so much to learn and so much to write in. Right?
00:22:46 - Anthony Campolo
Totally. Thank you for having me. It's been a blast. I'm always really enjoying the content you put out and I've learned a lot. Continue to do what you're doing.
00:22:54 - Bryan Robinson
I appreciate it. Thanks again to Anthony and thanks to everyone out there listening week after week. If you enjoy the podcast, be sure to leave a star review rating, whatever, in your podcast app of choice. Until next time, keep doing amazing things on the web and keep things jammy.