June 10, 2015
Best Practices in Dev to Production Parity for Containers
In this talk, Docker’s Jérôme Petazzoni offers best practices on keeping application containers simple and lean, while retaining the rob...
In episode 47 of JAMstack Radio, Brian joins Andrew Sprouse, Co-Founder and CTO of TakeShape. They discuss the lesson-laden founding story of TakeShape, and how an accessible JAMstack community empowers developers to explore new tools.
About the Guests
Brian Douglas: Welcome to the next installment of JAMstack Radio. On the line I've got Andrew Sprouse from TakeShape. Hey, Andrew.
Andrew Sprouse: Hey, Brian. Good to be here.
Brian: Excellent. We met months ago at JAMstack New York, correct?
Andrew: That's right.
Brian: I'm not sure where things were taking shape, pun intended, as far as your company that you're throwing together.
Let me know what you're doing right now, what you're working on, and what TakeShape is.
Andrew: Yeah, absolutely. Back at JAMstack Conf we were the guys who were passing out cool JAMstack T-shirts out of a suitcase.
We were obviously really excited to be there, and I think that stretches back to the origin story of TakeShape.
TakeShape is the product of our own frustrations of working with JAMstack technologies at various different companies, and then building a solution that was for headless content management and static site generation, and then having this community form around that and call it "The JAMstack."
So when that came about we were really excited to join in, and really label TakeShape as a platform for JAMstack developers.
Brian: So when you say "We," who do you mean by "We?" Do you have a co-founder?
Andrew: Yes, I mean my co-founder, Mark Catallano.
Mark and I met in literally our first class in college 16 years ago, and we've been working with each other at various different companies the last 10 years.
Basically we had these ideas kicking around and then when it came time for us both to, move on to the next step, we were like "Let's do this CMS idea. Let's build this thing and see where it goes."
Brian: On your site you don the term "JAMstack," and you call yourself a "JAMstack company."
When you started this company-- Did you start the company around the time you started shipping suitcases up to New York to hand out?
Andrew: No, we started it as a project inside of a creative agency in 2016.
The name "TakeShape" came about around July 2016, and we shipped the first version late that year and were onboarding customers of Mark's creative agency, which was Ronik Design in Brooklyn.
It actually took until last year around the time of JAMstack Conf that we were actually doing a full push and pushing it as its own separate entity.
Mark sold his share of his creative agency and went all-in on TakeShape and the JAMstack.
Brian: Excellent. As of today, you have a CMS?
Andrew: Yeah. At TakeShape we started as a CMS and then we realized that there's other elements that are needed for a JAMstack site.
One of the first things that we built was also a built-in static site generator.
Then we had a lot of positive feedback from a headless CMS static site generator combo, and then what people were asking us next is "This is amazing. Now I have a bunch of other JAMstack services and I want to do things like e-commerce and analytics and search. How do I integrate this whole ecosystem together?"
That pushed our company to the logical next level, and a product that's currently in Alpha right now, which is called TakeShape Mesh.
Brian: OK. Yeah, I was peeking at Mesh back when we first actually started talking, I saw the little header on the banner of your site.
Do you want to explain, like as high level, what are you trying to accomplish with this thing that's called Mesh?
Andrew: Yeah, absolutely. TakeShape started as a headless CMS, and what we allowed you to do is using the GUI define your data models, and then we would generate out for you GraphQL API.
What Mesh really is as a concept is the ability to apply that way of data modeling and that generated GraphQL API and apply it across multiple services.
So you can imagine defining a blog post content type, and then say having a promotional product that's actually stored in Shopify, and gets all its fields from Shopify.
Brian: Yeah. The beauty of the JAMstack is that you have a lot of opportunities and choices and decisions that you can make to make flexibility on whatever your workflow is, but it sounds like you were hearing from people that didn't want as much choice.
You had a static site generator instead of a headless CMS, correct?
Is TakeShape your path to build different workflows or streams of getting sites together?
Andrew: What I would say is it's not necessarily that we were hearing that people wanted less choice, it's just that what people wanted--
They were unsure of how to combine things together in a cohesive way. What we're trying to do is allow people to have the flexibility of whichever vendor they want for whichever service, and then enable them to do that in an easy way.
One of the amazing parts of the JAMstack is it's really enabled more new engineers to be able to build advanced products and websites.
What we wanted to do is be like, "You don't have to be an expert at service integration in order to build something cool."
That's the audience that we're building for when we have things like the built in static site generator.
We actually have a lot of customers who use Gatsby. We love that people use Gatsby and think it's an amazing project, and it's certainly way more advanced than our built in static site generator.
But if you're trying to do something really simple, Gatsby is like a jumbo jet to go to the grocery store.
Brian: Yeah. I love Gatsby, and I get that feeling sometimes. I don't reach for it, especially for small projects or projects that I'm testing or feeling out things.
I find that if I end up having it long live, like sometimes I'll attach myself to a Gatsby template that I don't like, so then I end up rewriting more stuff than I really needed to.
I'd love to find the perfect Gatsby template that I can just tinker with, but I haven't found that yet.
It always ends up being whatever the most barebones version is, and then with no designer UI at all.
Andrew: We just wanted, literally, "How do we get HTML onto a CDN?"
No other promises other than that, the most basic possible static web site.
So we were combining GraphQL queries from TakeShape's own API, and then HTML templates which were Nunchucks templates.
Just being able to shoot that to Netlify or S-3 or Google Cloud Bucket, whatever your workflow.
Brian: I'm not as familiar with Nunchucks, but does it have a build tool built into it? Or are you adding Gulp or Webpack to that?
Andrew: Nunchucks is the library from Mozilla that's inspired by the Django template family. So, Jinja or Django templates.
Brian: OK. Very cool. So then stepping back into the Mesh world, I imagine not everybody knows GraphQL and not everybody is up to speed.
Are you abstracting away the idea of GraphQL, or are you expected to also know GraphQL if you're going to leverage TakeShape and use the data from there?
Andrew: That's the beauty of it, is that you don't need to know how to implement a GraphQL API to use TakeShape or the Mesh product.
What we do is we give you the GraphQL API to ingest, because we find that for a lot of people that's an even more convenient way to consume an API.
Where in our product we have the graphical browser and you can just pop in and experiment around with queries.
To watch a new developer go in there and experiment with the queries and be like, "OK. This is what I can get back."
There's less hesitation for them than ingesting heavy API docs and then being afraid of trying it out, and having the setup postman, or something like that.
Brian: Yeah. Again, you're just removing that friction.
Andrew: Yeah. GraphQL, I feel like it's a bit daunting of a word because it sounds really complicated, and the idea of having queries and mutations and defining a schema is a barrier to entry for a lot of people.
But if we can eliminate or simplify a few of those elements, then we can really help people become comfortable with at least querying the GraphQL API.
Brian: Yeah. I'm curious, I've actually talked to quite a few headless CMS's in the space, and I'm curious, going back to the origin story and you figuring out that you either were a headless CMS or that you were--
Were you just trying to be a CMS like WordPress or Drupal at the time?
Andrew: No. We were really inspired by a product called Web Hook, which was a really early thing that was built on Firebase and had a built in static site generator and GUI content modelling tools.
But what we really wanted was we really wanted to actually have a true API separation between the static site generator and the CMS portion, so we were frustrated when Web Hook went out of business.
We were like, "Finally. This is the nail in the coffin."
Brian: I didn't even know Web Hook had a business, to be honest. I remember their product, but that's probably why they went out of business.
Andrew: Yeah, it was $9 dollars a month. It was an amazing deal.
They got tired of supporting it, and they weren't making any money because they didn't charge much for it at all, so we really were saddened by that.
Initially TakeShape was to be this type of combo, except we had this robust API layer.
Early on in 2016 we bet on GraphQL because to be honest, as developers we're like, "We don't want to write a ton of endpoints to support every little different format of data that people want to get back.
We should use something more flexible." When we saw a GraphQL we're like, "This will make our job easier. We'll do the first version with GraphQL, and then if people really protest, we'll implement the rest of the end points."
Brian: Did anybody protest on GraphQL?
Andrew: No. People were like, "GraphQL? This is interesting. I've never heard of that before."
And then when you show them a few demos of what they can do with it, they're like, "Yeah. I see why this is useful. This is pretty cool."
Brian: I think it's a testament to GraphQL as well.
But if you just show people real data and how to get it and see the benefit with their own fingertips, then I think that's a better sell than you explaining all these data models and structures and what graph theory is.
Andrew: Yeah. I think that you show people the tangible benefits, and it's also the creators of GraphQL have also acknowledged that the name is extremely misleading.
It actually has nothing to do with graphs and nodes and edges, so it's funny whenever you come across APIs that insist on using that terminology because it's not a requirement.
And certainly if you're not using an underlying source that isn't a graph structure, you're just potentially alienating people who are uncomfortable with that terminology.
Brian: Yeah. It's true.
Sometimes as engineers I think we could be a little too smart for ourselves, and I think the products and projects that win are the ones that introduce people into the fold and not introduce the same.
If GraphQL, and I know that the name is a little offsetting and doesn't really actually describe it, but if they only targeted the graph database people I think it would be a harder sell.
But I think because they were solving a problem in their own space, which was the web space and people who aren't building graph databases, then I think the adoption made it interesting.
I think when you're able to approach a new problem and present it to new people, I think Rust is a good example of this.
But I think I can approach it because of the way they've approached our community and their documentation.
I think that making things accessible is something that makes me really excited about the JAMstack and GraphQL in this space, because it wasn't too long ago where the dev community would be like, "You don't know C++? You're no good, sign off of Slashdot."
I feel like the JAMstack community, places like Dev 2, are really great places for people to get involved and really to promote-- Or a better word would be "Empower" people to know that they can build cool stuff, and they now have the tools to do it.
Brian: Yeah. So I'm curious, going forward, what does TakeShape standing apart from all the other CMS 's, all the other JAMstack products that are out there? What's the benefit of me using TakeShape over something else?
Andrew: I think that first and foremost TakeShape as a company, our mission is to build tools that people want to use.
We started off with this headless CMS because that was a hole in the market, and we've seen the need of the developer evolve.
We don't want to be thought of as just simply a CMS, we want to be a platform of tools that the JAMstack developer reaches for, and it's a way that we can help build the ecosystem and really be a good player.
Help people use other tools that they wouldn't incorporate in their project if it wasn't easy to do so, and so that's really where we see as our positioning in this ecosystem and why we're excited to be here.
Brian: Excellent. I'm curious also how much this costs, because it seems like you're going to a pathway of a simple framework, or a workflow for you to integrate into your sites.
You're choosing Nunchucks because it takes away some of that and it adds simplicity to getting templates onto your page, and then you also have the CMS.
Then it seems like you maybe have a partnership with Netlify, or maybe just using web hooks to trigger Netlify events. But what is next, and how much does this cost?
Andrew: How much does it cost?
We have a free to use forever developer plan, and we're very excited about that.
I feel like the cost on our platform follows the typical 80/20 rule where your small amount of customers use the most amount of bandwidth, and the way that we've monetized our service is that those customers tend to be our heavy hitters, our enterprise users.
As TakeShape being a SaaS product and a multi-tenant one, we're able to serve more people for cheaply at economies of scale, so that the platform having a lot of customers makes it easy for us to drive down the cost and give people that free developer plan for their personal projects.
Brian: OK, excellent. That's fair. So we talked about your origin story and how you and your co-founder actually got together.
We didn't actually talk about the room you're sitting in and the program that you're part of.
I'm sure there's a lot of individuals out there who are building projects that could hook up to the JAMstack, I'd love for you to just touch a bit about-- Is it the incubator that you're part of?
Andrew: Yeah. So TakeShape is participating in the TechStars Philly that is hosted by Comcast and Lift Labs.
It's a three month program and what we're using it for is we're using the amazing resources at TechStars to jumpstart our Mesh product.
They really have amazing mentors who are helping us out.
You never stop learning and growing as a person and as a professional, and Mark and I have found this an amazing opportunity.
I would encourage anybody out there who has an idea that has potential business or entrepreneurial spin to it to go for it, because I definitely waited too long in my career to think that I was capable of doing something like that.
Brian: OK, cool. That's pretty inspirational. The Philly arm of this program, is this new?
Because I know of Boulder. Or is it Denver? I don't know which one it is.
Andrew: Yeah, it's Boulder. TechStars is amazing. They have programs in every city almost, in the US.
Brian: Really? I did not know that.
Andrew: So New York, Boston, Philly, Boulder of course.
There's other corporate sponsored ones, but their mentality is a little bit different than YC where they have 300 companies in just the San Francisco Bay area, but they have the same number of companies spread throughout the country.
But they all run the program at the same time, so it's a similar setup to that.
Brian: Nice. I highly recommend anybody who's interested in polishing off their project, or taking that idea that they've been doing for sounds like years, if you're working on your own little JAMstack automated platform, definitely share by getting funded for sure.
If you don't mind, I'd love the transition us to picks.
Andrew: Yeah, of course.
Brian: I don't know if I prepped you enough, but jam picks are picks that keep us going.
It could be music, food, technology related. I tend to have quite a unique variety of picks. If you don't mind, I'll go first so that way you can brainstorm.
Amazon Prime is a place where you could ship stuff for two day shipping or sometimes same day shipping, but obviously they have the video platform called Prime Video.
Brian: It's something that-- Because it's always been a really bad interface on the web and I've never had a fire stick to actually use the video platform on the lean back experience on the TV.
But recently they launched a feature that Chromecast actually has Prime enabled.
Thanks Amazon and Google for making up, so I've been watching a lot more Prime shows and I just cranked through a couple of them.
I think one that's really awesome is The Boys. I think I downloaded the entire season, because you can also download episodes onto your iPad or whatever.
Brian: On my flight home from Barcelona, because I spoke at Full Stack Fest. Which went great, by the way.
I watched the entire run because it was a 10 hour flight, so I watched the entire run of the entire series. 10 episodes, and it was really good.
It had me going, and also I could not go to sleep. So it was perfect timing.
My second pick though, I can't remember. I met you in New York but I don't know if you were living in Brooklyn, but there's this place in New York called Artichoke Pizza.
If you're in New York people know about this, but they only recently in last couple years, or maybe year, came to the Bay Area.
Brian: They had one in Berkeley, and then they just opened up another one in Temescal in Oakland.
If you're in the Bay Area, you probably know where that is. But I had it for the first time two weeks ago and it was amazing.
Andrew: It's so good.
Brian: Yeah. I highly recommend if you're in Oakland or Berkeley or New York, grab Artichoke Pizza.
But what I hear is that the lines are usually longer in New York.
Andrew: Almost always.
Brian: In the Bay Area, my friend who went with me is from New York, and they were remarking on how it was so easy to even find a seat because there's actual seats that you could actually sit down and eat too as well.
Andrew: Yeah. The original is just a counter, and there's a line out the door. So that's probably what he was used to.
Brian: Yeah. Come to the West Coast, it's the best coast for Artichoke Pizza.
Andrew: All right. I'll follow on with your food pick with my food pick, and so in Philly I've been very happy to discover that they have amazing tacos in Philly.
I wouldn't think of Philly as the taco city, but there's an amazing place called South Philly Barbacoa that has amazing barbacoa tacos.
They do a whole traditional barbacoa where they start probably the night before and roast a whole lamb and then they chop it up and they make these amazing fresh tortillas.
So that's inspired me to go home and be better at cooking, and also to eat more tacos.
My second pick, I haven't had much time to watch shows but while I'm coding I am definitely into listening to a lot of music.
I've had a middle school metal renaissance recently, I got to go see Iron Maiden in Brooklyn last month.
That brought me back to the old days, and I've been listening into some classics, some number of the beast and just something with a nice, energetic beat to work to.
Brian: Some foot tapping music, it sounds like.
Brian: Which with the double bass pedal, that's some intense foot tapping.
Andrew: For sure.
Brian: Excellent. I'll let you get back to rocking, and Andrew I want to thank you very much for coming on the show.
Talking about TakeShape and talking about your origin story, and also mentioning TechStars so we know how that program works.
Hopefully people are aware of places they can pitch your idea. Listeners, keep spreading the jam.