383: What’s Up with CMS’s?

Download MP3

Chris and Dave revisit the state of CMS land with a discussion that mentions almost every kind of CMS available in 2019.



Chris Coyier and Dave Rupert in silly sunglasses and a sign that says Shawp Tawlkk Shough DOT COM

Chris Coyier and Dave Rupert

This episode is with just Chris & Dave, ShopTalk Show's hosts. Chris is the co-founder of CodePen and creator of CSS-Tricks, and Dave is lead developer at Paravel.

Time Jump Links

  • 02:10 Expression Engine bought. Again.
  • 08:23 Statamic and flat file CMS's
  • 24:29 Sponsor: Cloudbees Rollout
  • 25:11 Compelling features of Webflow as a CMS
  • 31:40 Netlify, S3, GitHub Pages, and more.
  • 36:22 Sponsor: Phrase
  • 37:56 CMS Wizards
  • 45:37 Prompts update


[Banjo music]

MANTRA: Just Build Websites!

Dave Rupert: [Using vampire voice] Hello, and welcome to a spooky edition of the ShopTalk Show. I am Count Dave-ula and with me is Chris Frankenchris. Yes.

Chris Coyier: [Laughter]

Dave: [Vampire voice] Hey, Chris Frankenchris.

Chris: Uh, I'd like everyone to know that Dave has tried this several times now and I've changed monsters each time.

Dave: [Vampire voice] Yes.

Chris: [Laughter]

Dave: [Vampire voice] You are a shapeshifter. Welcome to this spooky edition.

Chris: That's great.

Dave: It's almost Halloween--

Chris: Yeah.

Dave: --here in the States.

Chris: The next episode will be even closer, really.

Dave: My wonderful wife -- [Laughter] -- my wonderful wife bought a giant Beetlejuice sandworm and it's blown up in my front yard.

Chris: Kick butt! Really? Oh, my gosh.

Dave: It's like 10, 15 feet tall. It's pretty great.

Chris: I wonder which would win, it or like one of the worms from "Tremors."

Dave: Oh, okay. This is -- all right. I wasn't prepared for movie trivia, but here we go.

Chris: Well, just think about it. We don't have to go there. I was thinking that you'd call me a zombie or something because I eat the heads off of CMSs.

Dave: [Vampire voice] Oh, yes. Yes!

Chris: Ahhh…

Dave: [Vampire voice] He loves the brains part of the CMS.

Chris: For the spectrum of monsters. I think that's going to come up in this episode. Some stuff I'm thinking about and some of the nature of some of these questions is like, what's up with CMSs and stuff. I saw this list of headless CMSs somehow, some way the other day.

Dave: [Vampire voice] Headless. That sounds spooky.

Chris: Even I've done that kind of thing in the past.

Dave: [Vampire voice] That sounds very spooky. Yes.


Dave: [Vampire voice] Do I need to keep talking like this?

Chris: Yes! Yes, you do.

Dave: [Vampire voice] Okay.

Chris: They all have kind of different purposes like monsters have different purposes. They have different goals for their monstering, in a way. Oh, gosh. You know we got this question because Russell Heimlich wrote in about ExpressionEngine. They had tweeted that they were bought again. They were most recently bought by some company who is known for AI, which is weird, so like an AI company buying a CMS was kind of weird. Now they're bought again but by some company that makes products for ExpressionEngine.

Dave: EEHarbor or PacketTide, I guess.

Chris: We haven't talked about ExpressionEngine in a while because it feels like it's been long dead.

Dave: Yeah.

Chris: Now I'm in a weird situation where I worked in an office with Craft and the ExpressionEngine ex-CEO worked here too and worked for Craft also. It was just kind of like there's a lot more Craft talk around here than ExpressionEngine, but ExpressionEngine still exists.

Dave: You know?

Chris: Yeah?

Dave: I think it's good for ExpressionEngine. I feel like if you built on it back in the day, I feel like EllisLab did not -- we're not good custodians of the property and maybe they should have -- they had a hard time getting to this ExpressionEngine 2, I think is what it was. Then it got stalled out, stalled out, but it was kind of a secret because it was their product.

Chris: Hmm.

Dave: Which I think this happens in--

Chris: Well, it's open-source now. That's significant.

Dave: Yeah, I think that happens in proprietary CMS land or single-sourced company. The screenshot on this,, ExpressionEngine has a new owner. The screenshots on here are awesome. It looks cool and modern and I would consider using it just based on the screenshot. [Laughter] Obviously, you take one more step into CMS's … file.

Chris: Yeah. Would I look at … and be like, "Oh, yeah, sidebar is main nav," because that was a … we made at CodePen, a little bit based on trend. That's how Spotify is and so many apps, and Notion, where you kind of explore nested content with the sidebar as the main nav. I kind of like it, so there.

Dave: Yeah. No, I think that's a good first step, right? Make it look like an app or familiar. You get the free drill-down, too, with the sidebar now.

Chris: Yeah.

Dave: Like if you want to put a secondary nav in the view that loads. You get another; you get a free drill-down kind of thing.

Chris: Maybe there's something about the aspect ratio of screens because I feel like, if you put a fixed position top bar, there's certain people out there--I've met them--that are like, "I hate this."

Dave: Oh, yeah.

Chris: "Please don't chew into my screen real estate with your fixed top bar."

Dave: Mm-hmm.

Chris: For some reason, if you fix the sidebar, nobody cares.

Dave: Everyone loves that. Right.

Chris: Maybe it's because it chews up space that's not as useful because you have more horizontal space.

Dave: I would be curious where this first showed up. Was it the iPad? Remember when Steve Jobs rotated the iPad for the first time and then all of a sudden mail has a sidebar, or Twitter, or whatever?

Chris: [Laughter] Sure. Yeah.

Dave: I mean--

Chris: Oh, yeah. Twitter is like this now too, isn't it, with the main nav on the side?

Dave: Yeah, I guess so. But always the Twitter iPad app or whatever was like that. I don't know. Anyway, the new ExpressionEngine looks good. I think it would be back on my potential consider list. No slight to them, but Craft, though, seems so far ahead right now. I would have a hard time--

Chris: Yeah, like a greenfield project. Why the hell would you pick ExpressionEngine?

Dave: Yeah.

Chris: That's why I don't care.

Dave: Yeah.

Chris: Why would I pick one of the -- of course, I would pick Craft. That would be weird to pick -- but I like that it has some new momentum. Maybe for the people that built on it a long time ago, like you were saying, now they have an upgrade path. You know, right?

Dave: Yeah.

Chris: They don't have to burn the world down.

Dave: Yeah.

Chris: I feel like there's a future for them. That's cool.

Dave: I have a client who is on a less than -- it's an enterprise CMS, but it's a less than ideal situation. It's hard to use. It's bad. It's like some weird bootstrap Angular thing, you know, but if they showed me a screenshot of the next-gen of it and it looked like this, I would be like, "Okay, we can use this for another five, ten years." You know?

Chris: I know. Yeah.

Dave: You just need -- [Laughter] -- you just need a little bit of vision, a little bit of, like, "Hey, this is kind of where we're going." Then you can be like, "Oh, okay. I could be into that." But it's important.

I think we've said this for years on this show. You go back to our FAQ or whatever; we probably have addressed this. CMSs aren't just the code, the database slinger. It's a community too because the community comes with all the plugins, with all the support.

Chris: Yeah.

Dave: WordPress is a great community. Craft, a great community, and Craft is different than WordPress because they're like, "No, you pay for stuff, and that supports the developers. You know they're going to be around."

Chris: Sure.

Dave: They're not going to have plugin rot that often. Anyway, I think the different communities and the different models, that affects technology choices.

Chris: I think that'll come up with other questions that we have coming up, picking popular or less popular things here. Just to stick on the CMS thing for a moment, and we had another user write in here. We call them "user." You're not our users.

Dave: Listener, Shop-o-maniacs.

Chris: [Laughter]

Dave: You're a Shop-o-maniac.

Chris: Jill Francois wrote in about Statamic. Did we actually do a full show on Statamic at one point or…?

Dave: Ooh, I don't know. I know we had Bastian from Kirby, which I'd put in the same-ish bucket.

Chris: Right. I think it's spiritually a little connected to Kirby because these are CMSs that share some similarities with static site generators but aren't really. They're really called flat-file CMSs, which I can see how that is confusing as heck and it confused me for a long time.

The idea is that a static site generator is what it is. It runs no server-side code whatsoever. There's no PHP that follows a statically site generated site. There's no server-side languages involved, but there could be on a flat-file site and there is on Statamic and Kirby.

I think it enables some things that you almost assume that a CMS can do. For example, you're viewing a list of posts. Not the whole post, but just the title and an excerpt or something. You're like, "You know what? I'd like to view that sort of the opposite direction."

Dave: Uh-huh. Yeah.

Chris: If you're going to do that on a static site, you'd have to pre-generate the files that were sorted different ways and then show previously, you know, already rendered pages that are sorted of that way, which is just weird and not a particularly efficient way to do things. A flat-file CMS would be like, "No problem. I'll use my PHP code to do that for you because it totally can do that."

Dave: In milliseconds, like microseconds. It's just like [blip].

Chris: Yeah, so you just get some more possibilities in that way, but still a lot of the benefit -- you still don't have a database, so that's still kind of cool. Anyway, look into it. We don't have to do a whole expose on it. We're not prepared to do that anyway, but it got me thinking about this list of headless CMSs I saw the other day, "headless CMSs."

Dave: [Vampire voice] Ooh, sounds spooky.

Chris: [Laughter]

Dave: [Vampire voice] Ooh.

Chris: Did you see my little thing there? I know this doesn't make for good radio but, to help my brain sort it out, I made a table of CMSs that at least most of these somehow could be considered headless. At the very top, it's just like Contentful. That's one a lot of people have heard of, a big service. It's headless, for sure, because, literally, the definition of headless is it has no themes. There are no Contentful themes. Maybe companies out there try to tell you that there is because they're trying to sell you something to use in that way.

Dave: Mm-hmm.

Chris: It'd probably be like a Gatsby theme that then connects to Contentful. Contentful itself is just data only.

Dave: Headless is like a first-class.

Chris: Yeah.

Dave: It just has an API built-in.

Chris: That's it, right? Contentful is only cloud-hosted too. You have to go to to use it. I think it's probably the most quintessential, classic headless CMS, period.

Dave: Mm-hmm.

Chris: That's the one, but there's Sanity also. It's super similar.

Dave: Mm-hmm.

Chris: We've had those guys on the show. It's also cloud-hosted, but it's just a little bit different. You kind of self-host the admin area of it, weirdly enough. The data is still on Sanity and that's where you access the data from. The little GUI for changing that data, if you need it or want it, is weirdly self-hosted and you access via APIs. It's very JSON heavy and such. It's a lot like Contentful but just different. There are just clear differences there, but they're both very firmly, to me, headless CMSs.

Dave: Mm-hmm.

Chris: Then there's like, okay, those are cloud-hosted. What if I want nothing to do with cloud? I want to host it because I just do in the same way I might want to host a Craft site or WordPress site or whatever. I want to host this, but I want to embrace the headlessness of it because part of embracing headlessness is allowing me to say, "I want to evolve my front-end however I want to evolve it. Change technologies, take advantage of the best ideas of front-end and have it have nothing to do with where my data lives. Likewise, I want my data over here so it can evolve without having to worry about the front-end too much."

I mean, of course, they need to talk to each other. It's still a complicated dance together but they're not as tied at the hip as a headed CMS would be. There's stuff like Keystone or whatever, Strapi, Cockpit, that are like, NPM install CMS, kind of. That means that they're kind of Node of JavaScript-based, but there are versions of this kind of thing in other languages as well. Those are also headless CMSs. They're just a different philosophy in that they're self-hosted.

Dave: I was going to say, I think a few shows ago or half a dozen shows ago now, we'd [ask], what's the easiest way? The greenfield episode, that was it. What's the easiest way to get a GraphQL API up and running? I think we were like, "Rails, maybe?" or something.

Chris: Yeah.

Dave: A lot of people wrote back and were like, "Keystone," and I was like, "Literally, never heard of it." [Laughter] I'm such an old man now, but I guess other people just hang out on more hacker news sites than I do.

Chris: Right. Well, it looks great.

Dave: It looks good, and so I just wanted to say thanks for sending that my way. It is like V0.5.0, which is not for me and my clients right now.

Chris: Sure.

Dave: It did look very cool, so I just wanted to say thanks.

Chris: I mean a lot of the tweets on their homepage are from 2016, so they've been around a minute and they still are gainfully employing people I know, so it looks good in that regard. One notable thing about it is, as best I can tell, it has no admin API. It is like code only.

Dave: Which is plus and minus.

Chris: Interesting, right? But if you look at Strapi or something, it's similar in that it's install and self-host your own kind of JavaScript-powered headless CMS with GraphQL and all that stuff and it has an admin to it. If you like the Contentful kind of thing, you've got that going on too. You might prefer that Keystone doesn't have an admin because it's just less crap or whatever. Fine, but I don't know.

Dave: Yeah.

Chris: I would lean towards things that have some kind of API for managing content. That's, to me, kind of the point of a headless CMS. If I didn't need any admin at all, I'd probably lean toward a static site generator situation.

Dave: I will write raw PostgreSQL, you know.

Chris: [Laughter]

Dave: Just raw SQL, man, that's the feel. Miss those days.

Chris: [Laughter]

Dave: Everything was better back then.

Chris: I feel like that's the top of the head of this headless stuff is all these services, cloud-hosted or self-hosted, that are intended to be like, "We are headless CMSs."

Dave: Yeah.

Chris: But then there's this whole middle category of CMSs that just can be used that way.

Dave: [Laughter]

Chris: WordPress has APIs that you can hit.

Dave: Technically. Technically, you can use those.

Chris: GraphQL plugins and stuff. Yeah, and it's because WordPress is so big, you see a decent amount of it happening.

Dave: Right.

Chris: Drupal has REST APIs too. You could use both of these apps, throw them up on a server somewhere, and use it as a headless CMS, and people do it, for sure. But it's not technically in the headless CMS bucket. You don't see it talked about in that way and maybe for good reason. I don't know. It's still funny, like if you're going to do all this work and then you still have to maintain some server-side app somewhere. It's kind of like a little extra overhead, perhaps.

Dave: I'm sure we'll get, "But-but-but I run WordPress API," but I think most instances of the, whatever, 20% to 30% of the Internet out there right now are probably a single instance or multiuser or something or multisite that's just purely WordPress themes folder. It's not doing the whole headless situation.

Chris: Yeah.

Dave: The neat thing, I guess, about that is you can kind of have both, I guess, right? You get both worlds. You could start hitting your API from your theme folder.

Chris: Hey, that's a good point. Yeah.

Dave: That's maybe a cool thing.

Chris: Like if you can't go all in, maybe some pages of your site could be rendered in that way if you want to.

Dave: Yeah.

Chris: Yeah.

Dave: Like a live search would be the first thing I think of.

Chris: Oh, sure. That's a great idea. Well, to mention WordPress and Craft together isn't unheard of because it's like they're both PHP. They're both MySQL. You both need to spin up some server-side thing to run it.

Craft may be starting to move a little ahead in the headless department because they're saying, "We straight up offer a GraphQL API now because we know that's what people working in this way want."

Dave: Mm-hmm.

Chris: And have announced this Craft cloud product, which is, "You don't even have to self-host it. We'll host an instance of Craft for you and give you APIs." Now, it's not available yet, but you can just see them moving in that direction more than you see WordPress move in that direction. Okay. Okay, so that's that.

Then people say, "A headless CMS. Oh, like Forestry or Netlify CMS, in a way." To me, those live in this little, weird bubble kind of related but not. For some reason, my head doesn't go, like, "Oh, yeah, those are headless CMSs," only because both of them, and I'm talking again about Netlify CMS and Forestry, don't help you with your data. They help you with your data, but they don't store your data. They're like, "Store your data somewhere else."

Dave: Yeah.

Chris: "And we'll give you this admin UI on top of it." I could see, looking at these things and being like, "No, these are CMSs. Who cares where the data goes. These are in the same category. These are headless CMSs, in a way."

Dave: They almost start looping. Like with Netlify CMS, it starts looping back around to things like Statamic or Kirby where it just produces a flat-file. It dumps into your Git repo, though, or whatever.

Chris: That's a good point. Why can't you use Netlify CMS with Kirby? I'm sure you could because all Netlify CMS cares about is folders of Markdown files, essentially.

Dave: Mm-hmm.

Chris: That's all. You point it at your Markdown files or you literally configure it to be like, "Here are where my Markdown files are and here is what, basically, the front matter and content of those Markdown files is." I think Forestry is the same way.

Dave: Then commit is a good commit, then Netlify is like, "Oh, you committed a Git commit? Oh, I'll just build it." [Laughter] It doesn't care. That's great.

Chris: It is cool. Those are heavily Git-based and Netlify CMS is sort of like self-hosted in that it's just a single page app that you toss on your site and connect it via client-side stuff, mostly. I think Forestry is more cloud-hosted, so there is this separation there. See how we're painting this whole spectrum of headless CMSs that all kind of have different choices and philosophies?

Dave: …chart you got.

Chris: Yeah.

Dave: You're going to put….

Chris: Then there's stuff that just isn't. I think of Joomla. Back in the day on this show, if we were going to mention a CMS, we'd say, "You know a CMS like WordPress, Drupal, or Joomla."

Dave: Yeah.

Chris: There was the trifecta. Joomla, I think they had a release just this month, so it's not dead, but it's kind of.

Dave: Like 2.3.

Chris: People don't think of it a lot. It's for the Joomla lovers out there or whatever. I don't see a ton of new development happening. I could be absolutely wrong, so call me an asshole or whatever. They haven't moved in the direction of JAMstack-y stuff. I don't think they have native APIs for accessing content to Joomla stored stuff. It just isn't that type of CMS anymore.

It's self-hosted. It's PHP and MySQL and all that, but it's just headed. It's just not a headless CMS. Neither are things that I don't know if people use them in the word, CMS. They often think of them as a site builder, but Webflow, Squarespace, Wix, or whatever, I'm sure all three of those things think of themselves as very, very different and they are, but they're also not headless CMSs. They're just not a part of this spectrum. They're just not a part of the spectrum.

Dave: Right. You're authoring tool and your templating tool are tied together.

Chris: Yeah.

Dave: The Wix, Squarespace, Webflow is interesting because they also have heavy visual editors mixed in.

Chris: Mm-hmm.

Dave: Is that another class? In my brain, I maybe do put those in a different class, just sort of like, what am I going to recommend to people who are new to websites or something or don't want to maintain a bunch of sites or write the code for it.

Chris: Mm-hmm.

Dave: Here's Squarespace. Sign up. Let me know when you're done. [Laughter]

Chris: Oh, yeah. Does it have a place in the world? Heck yeah it does. Webflow, I'm about to publish a video in the next couple weeks, I think, of me talking with the Webflow gang about wrapping my head around it more and more. Of course, they're very convinced that this is the absolute future of all websites and I don't have a crystal ball, so we can't tell that exactly. But it is compelling. I know you've used it probably more than I have.

Dave: We did a Webflow site for a client and it was maybe some time ago.

Chris: Yeah.

Dave: A grain of salt here. Your experience or mileage may vary, but it was good because the client was like, "We want to tweak." Does that make sense? Do you know that feeling where they're just like--

Chris: Yeah. [Laughter] Heck, yeah.

Dave: --we're going to change the headline every day. We're going to move this little paragraph or testimony over here. We are going to do this. That was the discovery. That was the design brief. That was basically -- they felt locked in by the previous vendor where they had to submit an RFP and do a two-week reserve to change a testimonial on their website, they had to get time on some agency's calendar from two weeks from now.

Chris: Right.

Dave: That wasn't working for them either. We were like, "Well, let's try this Webflow thing. It's entirely visual. You can drag and drop and move things around." We built out some pretty good components. It felt really good. It worked really well, but what happened was, you know, at first it was, they were going to do all of the updates. But, as you can imagine, people get busy, and then they just email us and say, "Can you update the Webflow?"

Now, us, very good Web designers, are having to munge around in a visual tool just to move a paragraph up or whatever. It became a burden for us at some point. It was great for -- it was going to accomplish the goals of what the client said they wanted but then, in reality, we would have been better off probably with a Jekyll, just something we could all work on and just hammer out in a blink of an eye. I hate to be that way, but that was probably how it should have gone.

Chris: I'm sure you're not alone in that sentiment.

[Banjo music]

Chris Enns: This episode is brought to you by CloudBees Rollout. CloudBees Rollout is where developers come to ship changes at will. When you have a solution to manage feature flags at scale, you're empowered to continuously and intelligently roll out changes as soon as they are code complete on any platform, even mobile. Decouple development from code releases for real-time change control, rollback only the changes you want, toggle features, and use multivariate flags for A/B testing and nix misbehaving features with a kill switch.

Check out the 14-day free trial and experience how CloudBees Rollout can help you rock every release. Follow the link in the show notes or in your podcast player right now or visit Our thanks to CloudBees Rollout for sponsoring this episode of ShopTalk Show.

[Banjo music]

Chris: Just because we're talking about CMSs, though, part of this that I guess I was vaguely aware of in Webflow but, during this sponsored promo videos, working on with them, it all kind of clicked for me in that when things are so -- I think a CMS that's as integrated and tied into this ecosystem which is so tight like theirs is that the concept of a CMS gets really interesting. The showed me this demo of this music blog kind of thing. There are pages and, of course, that's a CMS because you need to be able to be like, "I'm going to make a new entry. I'm going to review a new album, and this is the name of the album. This is the URL where you can buy it. This is my five-star rating. These are three paragraphs of my review, excerpt, and whatever."

Of course, you need to design those fields. Any one of these CMSs that we've talked about, that's the idea. You have to do some content modeling to figure out what you need. All these CMSs can do it.

In Webflow, you do it too. You open up these items or groups. They have some vernacular for it. You drag in fields and be like, these are the things that I need. Great. Done. It feels very satisfying because it's a little bit like using advanced custom fields in WordPress or something. Maybe even easier, really.

Then you're like, "Okay, that was easy. Cool. Cool. Cool." Then you go to the visual builder tool and it exposes those fields for you. You can be like, "Oh, where do I want my…? I'm just going to drag it onto the page. Okay. It's there now. Hmm. That was easy. Cool."

[Laughter] I didn't have to think of, what did I name that field so I can use {{name_album}}. You don't have to think about that. You just drag it in there. Okay. Then you build the site that way and you enter data. You munge around with it, but then they have this view for clients. They don't have to log into Webflow.

I feel like I'm doing a fricken ad for them. Sorry. This is not sponsored. It's compelling in a CMS type of way, and that's what we're talking about anyway.

Dave: Mm-hmm.

Chris: You're looking at the site and, because it knows exactly your templates and your data in such a tight ecosystem, there are like little pencils on all the icons on all the data and you can just click the pencil and edit the data right on the front-end of the site if you want.

Dave: Yeah. Yeah.

Chris: Or you can open up this bottom bar and edit it in more of a back-end kind of environment for adding new data and editing more with just text areas, bold and italic buttons, and all that stuff you'd expect. It's kind of like best of both worlds that I feel like a lot of CMSs can't always pull off really super well because they're not as tightly coupled as this is.

Dave: Mm-hmm.

Chris: That kind of like edit on the front or edit on the back. To go from, like, I need a new field. Let me hop into my CMS, add the field, quickly go add some data to whatever posts I need, and then drag it into a template exactly where I need it. It was like a two-minute process. I'm like, holy crap. That's a little more difficult, I'd say, on other CMSs or a hand-rolled CMS. God forbid you're running migrations.

Dave: Yeah and, well, I think we've all instead the WordPress plugin that tries to do that for you and it goes very bad very fast. [Laughter] Webflow mostly just works, I'd say.

Chris: Yeah. It's good. I think it's cool. If it's the future, fine, but it's very cool now for people in certain type of situations that want to build in it. I think it's pretty cool but notice that you're there. You build it, you can export it and, I guess, you could munge around with it and move it to some other system. That's really not what it's for. They want you to build it and just stay there and not incorporate anything third-party - nothing. It's just a tight ecosystem.

Dave: Yeah, I appreciated that they gave you an out. They're like, "Here. Download your site. Good luck," because I guess it sort of is like a static site generator. It'll generate the pages. It could be totally different now, like React-iverse sort of stuff, but I felt like the class names it was generating and the CSS it was generating, I felt like that was stuff I could handle if I had to bail out. I felt like it was pretty responsible or I could kind of work with it. Again, your mileage may vary, but I had a decent time. It was for this idea of a high needs client. That sounds terrible, but in that they wanted to kind of continuously update the site and make dozens of changes a month, not just a dozen changes a year.

Yeah, I don't know. when you procure CMSs, work with clients, or whatever, that's something you have to kind of know upfront is, how often are you updating this? Is this an everyday thing? Is this an every week thing, an every month thing, or an every quarter thing? You've got to really double it, add 32, I guess, because the estimate there is always, you know, like, "If we had the new CMS, oh, we'll use it every second of every day. Every minute deploys," you know, and that's not how it works because it doesn't. They don't.

Chris: [Laughter]

Dave: Even load balancing would be kind of interesting. I'm blowing the scope of your site, but does it have built-in caching? What is that situation? WordPress, you get 25 simultaneous hits, it falls over. What do you do? You have to bring your own caching layer, and so maybe that's easy, but maybe you need dedicated hosting. The same with Craft, technically.

Chris: Yeah.

Dave: Static sites, less if you're on a CDN.

Chris: Let's talk about that a little bit. With this headless CMS thing, I want to paint this picture of totally quintessentially headless to absolutely not headless and everything in between. There's sort of a way that you can think about that with static file hosting too in that there are apps that are quintessential static site hosts like GitHub pages or an S3 bucket or everybody's favorite, Netlify. These are like, this is what we do.

Netlify the most, I'd say. They're like, "This is how we think of ourselves. This is the thing that we do. We're a static file host. We don't want you to feel limited in that way." We've talked about that a bunch of times, but they're a static file host. That's what they do.

Dave: Mm-hmm.

Chris: An S3 bucket isn't necessarily to host websites. It's usually not for that. It's usually for who knows what else: avatar uploads and PDFs from your weird government app or whatever.

Dave: Mm-hmm.

Chris: Then GitHub pages is in the middle. It really is for your website. In the early days, it was like, put your Jekyll site here, was kind of the vibe of it. It'll even run your Jekyll site for you, but that's all it does. Now they have GitHub actions these days, so I guess that story is kind of changing. Those are quintessentially, like, these are static file hosts.

You would go with a static file host because, for example, the chances are of them saying, like, oh, it's CDN backed too. That's a big deal. That's great. Really? You got a CDN for all of your stuff and we have maybe like atomic deploys. What a wonderful thing because we can just point you to this little bucket where we stored your last deployment.

Then there's in between-y stuff. I don't know if I painted the spectrum quite right, but there used to be this app called Div Shots. Remember that? You'd just drag a folder of crap on it and it would deploy it. That was kind of a static site generator. Then that turned into Firebase hosting.

Dave: Okay. Yeah.

Chris: You don't really think of Firebase as -- you think of Firebase largely as a real-time data store, but I know they have auth. They have all kinds of products now. They have hosting too, and it's static and CDN backed, so that's cool.

Cloudflare just released their Cloudflare sites thing. Did you see that? That's totally static.

Dave: Right.

Chris: It's like static files on the edge.

Dave: Yeah, which they know how to do that.

Chris: Yeah. Yeah, and then I was like, okay, so these are a lot of modern things and such. I was looking around trying to research this. Everybody remembers GeoCities, right?

Dave: Yeah.

Chris: Do you remember Neocities?

Dave: Uh-uh. Whoa. What?

Chris: [Laughter] Look it up.

Dave: There is a newer--

Chris: Look at it right now.

Dave: Okay.

Chris: I don't know if it has the same -- what it does is it just dumps you. It just gives you static files--HTML, CSS, JavaScript--and a little editor right within the site. It has a free version or the paid version is like $5. You only need that for pretty specific stuff like high traffic.

Dave: Oh, okay.

Chris: It's CDN backed. It's static files. It's like a tiny little -- it's kind of like CodePen plus Netlify together. I almost don't want to tell people about it because it's actually really cool. [Laughter]

Dave: Yeah. Wow. Interesting.

Chris: It's like DYI, do whatever you want, and then your published site is whatever,

Dave: I want GeoCities.

Chris: It's totally JAMstack. It's totally a static file host.

Dave: Oh, I got fricken submit-y here. You want to hear this?

[Huey Lewis & the News, "The Power of Love"]

Dave: I'll put a link and I'll have Chris patch it in there.

Chris: People use it for that spirit, like, I'm going to build a weird, personal site that's just my -- you know, just as me as it can be, which I love but I feel like it does deserve a place on this static file host spectrum.

Then there's traditional hosting like Digital Ocean. That's not fair because you can do all kinds of weird stuff on Digital Ocean. Bluehost, HostGator, Media Temple, or GoDaddy, they're not really static file hosts other than, you can spin up a host on it and totally put a bunch of static files on it and just host them. They are, in a sense, a static file host in that there's nothing preventing you from just doing all static stuff on them. They're just not generally in that bucket because they don't do anything above and beyond that is unlocked because it's a static only file host. There is no CDN in front of it and there's no fancy static only stuff going on. It's also a spectrum. Anyway--

[Banjo music]

Chris Enns: This episode is brought to you by Do you have a digital product that you've always wanted to bring to a global audience? With Phrase, it's now easier than ever before. Phrase is the translation management platform that makes localizing your app, website, or other designs into multiple languages a breeze.

One of the biggest hurdles with localization is inefficient communication and sending around content in seemingly endless email threads or spreadsheets. With so many people involved--translators, developers, product managers, designers--this lack of a workflow can lead to a total communication breakdown. Phrase brings everyone together and allows for a streamlined localization process all in one place.

It's easy to integrate into your existing workflow. You can work with Phrase directly from your favorite tools with no more need for copying and pasting. For example, are you a big fan of working in Sketch? Now you can use the Phrase Sketch plugin and pull translated content directly into your artboard. Leverage tons of great features like a versatile translation editor, strong API, branching, over the air translations, and much more to make your localization life as easy as possible.

Adding one language to your digital products might be easy. Adding 20 isn't. With Phrase, going global becomes possible. It's time to literally speak the same language as your potential customers or users starting today.

You can get a 14-day free trial that gives you access to all the Phrase features you need to bring your products to a global audience. Just visit to get your free Phrase trial. That's to get your free trial. Our thanks to Phrase for sponsoring this episode of the ShopTalk Show.

[Banjo music]

Dave: You have a good breakdown here. When you're choosing a CMS, it's usually just this big lump, right? You're just like, what do I--? Well, I heard keystone was cool, so I'm just going to use that, or whatever.

I think you almost do need to sit back and be like, what features do we need and can this meet our objective? There's even weird features, like branching and stuff like that, content branching, or editor flow, editorial flow.

Chris: Yeah.

Dave: I think you've talked about multiuser authors. You can't just have an author, you know, hot push a new post at CSS-Tricks. It has to go through an editor first.

Chris: There almost needs to be a wizard, right? Do you need multiple authors? Which technology do you like better?

Dave: Yeah.

Chris: PHP and Handlebars or React and Vue, or whatever?

Dave: Right. Right.

Chris: Then, do you need--? It almost needs to ask you ten questions about what you prefer and what you need.

Dave: Mm-hmm.

Chris: Then you land on one of these things. We don't need to take as much time on it, but I think that the static site generator market is like this too. There are not just static site generators and then there are 15 of them and you're just like, "I don't know. That one looks fast," and you pick it. There's all kinds of stuff, like, what language are they written in? I guess that usually isn't a big consideration, but it kind of is because if it's Ruby and you're on some weird setup and Ruby sucks to install and Node runs fast and it runs everywhere, so maybe that's a consideration.

I saw this list and it was just like, well, just pick a static site generator like 11ty or Gatsby. You look at a list and you're like, they are really different. They're really different. One of them is all in on React and GraphQL. Then it's a static site generator, kind of, but it hydrates itself--you know I'm talking about Gatsby in this case--to be like more of a single page app kind of situation, which is very far different philosophically than something like 11ty, which is just like, "I don't know. We just process your HTML templates. That's it."

Dave: Yeah.

Chris: There's a spectrum there, too. You don't just pick one of these things and roll. You've got to look at what you need, what you want, what the philosophy is, and what the languages are involved.

Dave: What your team is capable of is one thing I think about too. Can everyone use Git? Can everyone? I don't know. Do people get this? Can they just type Markdown? Oh, awesome. Great. Let's do it. Yeah. Anyway--

Chris: We can be done with this. That was my rant.

Dave: No, I think that's really good thinking. There are a lot of choices. Are you looking at headless CMSs? Are you shopping? Is that what you're…?

Chris: I'm really not but I am fascinated by it from just a person who likes to think about front-end development and I've been talking about it forever. I like this kind of idea of building my front-ends and not worrying so much about what CMS I pick because I'm very interested in structured data, how it's stored, how I access it, and how I think about it as a front-end developer. It's starting to just feel more and more like this is a good idea. It's a good idea to separate the idea of where I store my data and how I build my front-end. For everybody on earth? No, but for somebody who--

Because I think that tight coupling solves a lot of workflow issues and stuff, it's actually kind of nice to be able to, whatever, I'm just going to install WordPress and it literally has everything I need to build a website. Do I think there's value in that? Tremendous, massive, incredible value, yes.

For some reason, I want to have this nimble site that I'm very serious about and I'm going to run for a decade, I'm staking my business on, and I want to be innovative, fast, and nimble, and all this stuff. I think that it's just generally a good idea to split front-end and back-end. I think it's a good trend. You can even see WordPress, for example, at least acknowledging it and having enough tooling that if you still want to use that tool that you're not trapped in the old, which is why I think it's encouraging to see people use WordPress as a headless CMS even if that's not what they consider. They're not a first-class citizen of that world, well, who cares?

Dave: Yeah. Well, and I don't -- anecdotally, again, not backed by huge amounts of data, but I feel like when people have the coupled CMS, the templates and the head and the body -- I don't even know what the difference is now. I've lost the metaphor. But I feel like, when people have those systems and they get big, they start getting hard to work in. Sort of like any big project. People start hating the CMS where the CMS and the content or the CMS and the view are tied together. People start kind of building animosity towards the CMS like, "Ugh!"

Chris: Mm-hmm.

Dave: This probably happened to every client I've been at, enterprise or small shop or whatever. People don't like it because it's hard to work in and then it's hard to update and things like that. You think about this great decoupling. You have to pay for it upfront by hooking everything up and using APIs and probably JavaScript of some kind. But once you have that, now if you're mad at the CMS, cool; you can just migrate to something else. You're probably not mad at the CMS. You're just like, oh, you dropped a pun in there, huh?

Chris: I was trying to figure out. Animosity -- CMS-ity -- animo-CMM-ity.

Dave: Animos-CMS-ity. [Laughter]

Chris: That's when you grow to hate your CMS.

Dave: That's a good word. That's a good -- ooh, that's a blog post. But I think a lot of people grow to despise their CMS or they blame a bunch of problems on it. I think it's kind of fair because it's hard to work in and it's all tied together. You break one thing and now people can't update the site. Now they're mad at you.

I think it's great. Decoupling is awesome just because, if you want to add a new post type, that's fine, or content type - whatever they call it. You just make that and then you make your new page that can go fetch data from the content type. It can be dummy data on your localhost and no one will ever see it. Then you push it up and then, ta-da, it's out. That's cool and I don't think people -- I guess I don't know. I don't think it's respected enough, but then your content is more portable too. It can go to your iOS app now. It can go to your Android app. It can go to the watch app. Now the data can go other places.

I made an app, Chris, the other week, called Prompts. It's a little drawing app.

Chris: Yep. Mm-hmm.

Dave: I have -- I don't really need a database, really, right now. But I've thought, like, oh, maybe with Coil I'll monetize it. If you have a Coil account, you get an account or you can log in. You get a login button if you have a Coil account. There I go.

Chris: Okay. Love it. You did it. Monetization.

Dave: I'm going to monetize. I'm going to get that grant money, man. Now you can log in, and then I have to put the data somewhere, like store the image somewhere. This is all -- maybe I'm going this way or maybe not, but I would need a data store. I thought, like, oh, maybe Firebase is the easiest thing. Just put a blob up there or whatever. I don't know yet, but it would be cool if, one of these other sites, maybe I do need a CMS and I could really structure my data rather than just post JSON up.

Chris: Eh, maybe. Yeah.

Dave: Yeah.

Chris: Sanity might be worth looking at because you think of it as this JSON store thing, but then another thing they do is image storage and manipulation.

Dave: See.

Chris: That might be extra cool.

Dave: That might be cool to try. I don't know because I do think of people authoring. You don't necessarily think of people drawing, saving a file, and that going to a CMS. I'm always like, "Ooh, that's a Rails app with Postgres and blah-blah-blah. No, it doesn't have to be. It just has to be a headless CMS somewhere, something that takes data, something that says, "I'll take your data."

Chris: Heck yeah.

Dave: That's called Google. That's called Google. It'll take it. [Laughter] Hey!

Chris: You mentioned that grant again. Yeah, I haven't really heard from my particular idea, but I think it's all pending still. It's still a big deal. Some people listen to our making money. That show did pretty well in ShopTalk land, how to make money online or whatever, and we ended up talking a lot about the Coil thing.

As a follow-up to that, I think if you missed this part of what we were trying to explain is that this is an ecosystem that's in its absolute infancy and that you wouldn't pick it up today because you're going to make a bunch of money from it today or that it's an alternative funding option for literally today or this week.

Dave: Mm-hmm.

Chris: You might make your $20 or whatever. That's not -- [loud exhale]. You should be thinking -- think about it as the future of monetization and getting onboard on it early and learning about it, thinking about it, and integrating the technology and stuff. It's not absolute baby, but it's toddler days kind of thing.

Then if you're ready, maybe you'll be on the forefront of it later when it becomes a bigger deal. It gets more players involved; more banks involved. It's actually shipped in browsers; perhaps the biggest deal. It's going to be a viable option, I would hope, if we do a good job with all of this, later.

Dave: Yeah.

Chris: Today, if you need to make some money today, that's what the grant is for, kind of. That's why that money is sitting there today. If you're like, "Oh, I'm going to integrate this Web monetization into my thing today because I want to be this early player, give feedback, and be a part of shaping its future," they'll give you money to do that via this grant.

Whatever. I feel like I'm a shill for the grant, but I just buy into the philosophy that they're making this ecosystem happen by giving you money through this grant in the early days and, hopefully, that's got enough people excited that it pushes momentum to make it a more viable ecosystem later, years down the road kind of thing.

Dave: Mm-hmm.

Chris: If you're looking for cash now, do the grant. Don't assume that you're signing up for Coil and integrating a thing that that's your ticket to money because it won't be.

Dave: I've got some data. Do you want some data?

Chris: Yeah.

Dave: Do you want some data?

Chris: I love data.

Dave: I've had it up for about a month on my site, pretty low traffic. I guess I launched a thing and I posted about Coil, so a bunch of people with Coil probably showed up on my site, so I gamed the system, but I made 25 XRP. Okay?

Chris: Uh-huh.

Dave: That's about $6 U.S., almost $7 U.S. It was $7 yesterday. It's $6 today. [Laughter]

In that same time, I have some good data here. Let's see. I think I made -- um, hold on. I think I made $11 in ad money from my site this month.

Chris: Okay, so it's similar-ish.

Dave: It's kind of similar-ish.

Chris: Yeah. Right.

Dave: Like $5 is a big deal, but I'm going to assume--

Chris: That's interesting.

Dave: --if you're running Coil, you probably have an ad blocker installed too. Yeah, the gap is not as huge as I maybe anticipated. That's kind of cool to me. I'm not there yet. Obviously, I'm not going to be super-rich, but that's interesting, right? Decent data.

Chris: Yeah. Yeah.

Dave: With the decent amount of traffic, so I could probably get you traffic numbers, if you want, on that.

Chris: It's interesting. I bet I would have done a lot better if I picked this weird crypto that you use instead of just cash.

Dave: Yeah.

Chris: it seems like that's the case.

Dave: Who knows.

Chris: Did you sign up for the Brave thing too, the basic attention tokens?

Dave: Yeah. No, I haven't yet, but maybe I should. That's what's weird about Brave or maybe what I don't like about Brave, if I'm real honest. They were like, "Oh, we'll take money for you. We're your broker now. We'll take your money," or, "We're your escrow account." It's like, oh, so you've been collecting money on my behalf? "Oh, yeah, totally. It's fine." It's like, "Well, I would like that money." [Laughter] And so, you have to--

Chris: Well, you have to opt into it, don't you, or no?

Dave: Yeah, you have to opt into it, but they basically -- I don't know. I just feel like, do I have to sign? In the future, do I have to sign up for every browser or ever wallet just to make money? That seems--

Chris: Right.

Dave: Maybe that's a small price to pay.

Chris: It's not just these two, right? There could be a lot more even.

Dave: Yeah, so maybe I'll sign up for Brave and just see. I have Brave on my machine. It's pretty nice. It's just Chrome. I think maybe I'll try that or whatever but I actually have Bitcoin, specifically. I still have a few ethical concerns.

Chris: Yeah. I know what you mean. I just tried Brave. The basic attention token thing, it's one of those logins where you literally can't log in with a password. You have to be emailed and then it gives you a link and then you click the link and then it logs you in.

Dave: Hmm. Okay.

Chris: Which I find -- you know, whatever. Maybe that's just their super secure way of doing things.

Dave: Yeah.

Chris: But then it has two-factor auth, too, and I did that and it doesn't email me the code. Cool, I'm locked out of that. That's fun.

Dave: Good.

Chris: Anyway, I was going to compare. I was going to give you my data and see which one is doing better for me. I'm more excited about the one that's pushing to be a Web standard.

Dave: Yeah.

Chris: I wonder if -- you know, Brave seems to be pretty good citizens of the Web. I don't think that their basic attention token thing is totally incompatible with this. I think it would be compatible with it if they wanted it to be, you know.

Dave: Yeah. I don't know. I had about 14,000 unique, 322,000 page views. Most of them are me, so that's what Netlify is saying.

Chris: Oh, nice!

Dave: I could … as well.

Chris: Dave Rupert is on Netlify now? That's cool.

Dave: Oh, is on Netlify. Man, I tell you what. It's good. I like it.

Chris: That's cool, so you get the free analytics. That's great.

Dave: Well, $9.

Chris: They're literally not free, but free like there's no JavaScript snippet or whatever.

Dave: No JavaScript. Yeah, I am still paying. I have Fathom, the Git Fathom on there.

Chris: Oh, that is JavaScript loaded, though, isn't it?

Dave: Yeah, that's giving me different numbers, like 8,000 unique or whatever in the last 4 weeks or whatever.

Chris: Lower?

Dave: Eight thousand, yeah, compared to -- oh, what did I say?

Chris: Thirteen thousand or something.

Dave: Yeah, 13,000.

Chris: Which means that it's blocked JavaScript. There might be technological confusions, issues, and things too, but you'd think that the one that doesn't require JavaScript to track the data would be more accurate.

Dave: Yeah, 14,000 versus 8,000. Yeah, I mean I don't know. The page views are way different, so it's like 13,000 page views versus 322,000 page views. Whoa. I could chase people down at JAMstack Conf and see what's going on there. [Laughter]

Chris: I think they'd be interested in it. I know in their early days--

Dave: They did actually reach out to me.

Chris: Oh, and ask about specifically that.

Dave: Yeah. Yeah-yeah, they reached out to me and talked to me. I actually filed an issue when I was posting my initial findings just because it was kind of all over and different. The top pages were totally different. Some of it is probably--

Chris: Bugs.

Dave: Bugs, but then some of it--

Chris: Because you'd think the percentage would be the same.

Dave: Right, percentage would be the same, but some of it could also be JavaScript blocking. Just straight up, I'm a tech blogger. Most tech people have some kind of ad blocker installed.

Chris: It's so funny to think of these two analytics products, vastly different results, but most people don't have two. They just have one and they treat it as this absolute source of truth only to find that -- you know.

Dave: They literally build their entire businesses on fallible technology. Cool.

Chris: I don't want to think about that.

Dave: Cool, Eric Ries lean startup. [Laughter]

Chris: [Laughter]

Dave: We've got to wrap this up, but did I ever tell you about my lean startup feelings?

Chris: No, but do you want to end with that or do you want to -- sure.

Dave: Do you want to end on it? Okay, so I was reading the book. I was reading the book. I was like, everyone tells me to read this book. This book is great. Everyone says it's great.

I read the book. I start going in and he was like, "My startup made $40 million and now I'm a million and I'm so cool." I was like, "Oh, well, shoot. I should check out what his startup was," so I go to [Laughter] -- let me find it --, you know, because it's a .net.

Chris: Mm-hmm.

Dave: No, wait. That's taking me to a spam site. IMVU was his thing dot-com. Sorry, everybody.

IMVU is like a 3D avatar thing, like 3D avatars in a chatroom can grind with each other. [Laughter] They could get a little horny with each other. I just was like, oh, okay. You mean like -- it's basically like porn. It's like this, you know, chat app for kids to get horny and sexed up.

I just was like, that's okay. I mean anyone can make money doing that. Come on. I'm not--

Chris: You were turned off immediately by how he made that money.

Dave: Well, the whole thing about the lean startup is, oh, we iterated on ideas and found the right ideas that made money. We chased those ideas. You know?

It's like, sure. Anyone could put horny avatars -- I could put horny avatars on CodePen and, man, clicks are going to go up.

Chris: [Laughter]

Dave: You're going to get a different clientele but, man, you get horny dancing avatars on CodePen, man, you're going to get some revenue. You know what I mean?

Chris: Yeah.

Dave: People are going to buy some outfits.

Chris: What you're envisioning is, like, it was a calendar app and it turns out that this feature where people could find each other's availability on a calendar. It seemed cool in development but people didn't like it. Then we found a UX tweak that was perfect and our revenue went up by 12%. Then we killed our waterfall methodology and shipped our next feature faster and revenue went up by 13%. A little more relatable business-y info is what you were hoping for.

Dave: Maybe more business strategy or just not like, "Yeah, we just made it extra horny and it worked."


Dave: It's not a solution. You know what I mean?

Chris: Yeah.

Dave: That's not for everyone. If QuickBooks suddenly gets super horny, maybe they need more money.

Chris: Yeah, seriously.

Dave: It just doesn't work that way.

Chris: Right. We put a bucket that said, "If you paid $9.99, we'll show you the nipples," then of course--

Dave: Yeah.

Chris: --a bunch of people are going to pay $9.99.

Dave: Yeah. No, I mean--

Chris: Yeah.

Dave: I mean not shaming. Everyone, keep doing what you're doing but, man, that's the impression I got from the book, and so I just was like, I'm going to put this down before I get more mad.

Chris: [Laughter]

Dave: It's weird. It's like an industry standard. I'll ask people who have read it. I was like, "Hey, did you ever check out his startup?" They're like, "No, I never did." It's like, "Yeah. Yeah, it's just horny 3D avatars grinding it up to each other," so there you go. Cybersex is quite literally the tool they invented, so anyway. Hey…

Chris: Ship it.

Dave: Let's get him on the show. We'll ask him about his -- [Laughter] All right, let’s power down. Thank you, dear listener, for tuning into this [vampire voice] spooking episode of the ShopTalk Show. We really appreciate you downloading this in your podcatcher, your coffin of choice. [Sinister laughter] Then, what else do I say? Oh, follow us on the Twitter. It's a crow that sends you messages. Oooh. Then, if you hate your job, curse your boss. [Sinister laughter] But get a new one, really. Go to and get a brand new one. Chris, do you have any undead phrases you'd like to say?

Chris: [Laughter] [Speaking in an angry Italian accent]