Transcript
00:00:00 Kent: Hello everybody, I'm joined by my friend Alexandra Spalato. How are you doing?
00:00:06 Alexandra: Fine, and you?
00:00:08 Kent: Doing great. I am joining you from Utah and Alexandra is coming from Spain, right?
00:00:14 Alexandra: Yes, I'm in Madrid.
00:00:16 Kent: Yeah, awesome. Madrid I have only been to the airport. So maybe 1 day I can
00:00:21 Alexandra: get out of the airport. You should come for tapas. I would be happy. Yeah,
00:00:25 Kent: yeah. So Alexandra and I
00:00:28 Kent: met online, I don't know, maybe like a year and a half ago or so. And- Not
00:00:33 Alexandra: so much.
00:00:34 Kent: Yeah, well, we met in person at RemixConf last year. And so, yeah, it's just been a pleasure to get to know you. I'd love for the audience to get to know you a little bit. So could you give us a little intro to yourself?
00:00:50 Alexandra: So I'm Alexandra Spalato. I'm a developer relation engineer at Storyblock, which is a awesome headless CMS. And before that I was freelancing for about 10 years, a lot in the WordPress world and especially Headless WordPress. I even created
00:01:10 a product which was Gatsby WP Themes. It was themes with the front end Gatsby and the back office in WordPress. But as I'm not a marketer, the sales were not high, but I had a lot of fun creating it. And I did many other things before being in the web too.
00:01:28 Kent: Awesome, yeah. So Spending a lot of time in WordPress, that's still the number 1 deployed thing on the internet for sure. And so you've just, it sounds like you've always been pretty interested in content on the web.
00:01:48 Alexandra: Yes, it's WordPress, I'm happy to stretch to development and to code, but at the end, I realized that I have always been with working with CMSs from the historic 1, WordPress, to Storyblock, which is 1 of the most modern ones. So yes, I realize I'm
00:02:08 really, really deep into this.
00:02:11 Kent: Yeah, yeah. So what have you, as you've been involved in content management for a very long time. What evolutions have you seen in the content management space since your early days with WordPress to now?
00:02:28 Alexandra: Especially, I would say, the headless. Headless is everywhere now, I think, is a new way of doing things because thanks to that and APIs, we can do omnichannel and have been only 1 source of truth of content without duplicating and
00:02:48 deploy it on mobile apps, on web apps, even smartwatch and Alexa everywhere. So headless is really the best thing now. Oh God, I say Alexa and my Alexa is... Oh, nice. That's terrible. We'll make sure
00:03:08 Kent: to avoid triggering all of our assistants then.
00:03:11 Alexandra: Yeah, yeah, yeah, yeah. Okay, stop. Yeah, thanks to headless, websites are faster, the SEO is better. Yes, it's much, much better. But even with WordPress, I was already doing headless.
00:03:32 However, with Storyblock and headless CMSs, which are done, especially for that, of course, it's better because you are not hacking something. It's already going to be headless. Your API are there. So I really like to know both parts to begin with the historic 1
00:03:52 and it's great when people want to transfer from there and don't want to change systems. It's also possible if it's not too complicated. And CMS is like Storyblock, which are very, very advanced.
00:04:07 Kent: Yeah, very cool. So I wanted to dive a little bit into what the the problem is that CMS solves. So as a new developer jumping into building web applications, they're going to pull up their H1 and they'll have a hello world in there and
00:04:28 that right there is content. So like we already have a way to publish content on the web. Why do we have to add this extra layer of complexity by having like a separate place where the content is and everything? What is the problem that a content management solution solves?
00:04:46 Alexandra: It depends. If you have a very simple blog, of course you can do it on Git and with MDX or things like that. But as soon as content becomes much more advanced than just a blog, you can have different content type. A content type is a schema
00:05:06 for a type of content. It can be a post, a landing page. And so you can design the schema or the fields. It can be a title, an image, even some flexible fields where you can build some sort of builders. Also, perhaps you need to categorize this content in different folders and things
00:05:26 to search it. You can set up workflow, translation, messaging, many, many things that I even don't talk about enterprise websites where it's obvious that you need a CMS to do it. But even a small marketing website,
00:05:46 As soon as you have a lot of different type of content and a lot of pages and fields, it will be much better with a CMS. And you have the database which is included. Most of them are SaaS. Storyblock is a SaaS, for example. WordPress
00:06:06 is self-hosted. So with SaaS, you have all the updates included. You have the database and everything. So it's, yes, it makes life really more easier. You can do it yourself, but it can be complicated without it.
00:06:25 Kent: Yeah, yeah. I would say that it makes a lot of sense for when you have multiple channels that you want to have consuming the content, or you want to, like, let's say you are building a blog. You've got the blog post itself, but then you wanna feed that into the home
00:06:46 screen. And so you can say, here are the featured blogs, and now you have to duplicate maybe or something and so having a centralized location for all of the content and what's interesting is that you mentioned there's blog posts as 1 type of content but then there's videos or images and you can host all those But then there's subcategories
00:07:06 too, like a blog post can have an image, and it can have a video. And so it can get pretty complex.
00:07:13 Alexandra: Oh yes, it can be very, very complex. Even with a CMS, you really have to, what is very important when you build a website, an app, is to plan how this content is going to flow, what you need for the UX, how you want to display it, but then how
00:07:33 you break it in component and how you want to reuse this component, how you want to make variation on this components, which content will be attached to another and will depend 1 on another. So being able to plan all that makes your life much,
00:07:54 much easier because without that, it can be really, it can be a mess.
00:07:59 Kent: Yeah, yeah, absolutely. And then on top of that, you also have, like if you're building a site for yourself, then you're the 1 making the content, but at any scale at a company, you're not gonna be the 1 writing the content and you don't want to have the people who are in charge of writing the content reach out to you and say, hey, can you update the code so that it says
00:08:19 Alexandra: something different?
00:08:20 Kent: Exactly. Now, is there, and so like, of course, those people aren't gonna be committing code either. So it is nice to have an externalized WYSIWYG editor or something like that. That can be really helpful. Now, is there a situation where you would say that a content management, or I guess, where's the line between I
00:08:41 just hard code all the content in the code versus the content is now a data source?
00:08:48 Alexandra: Okay, you can, yes. You can art code everything if the website is simple and you are the only 1 to work on it, or perhaps you have a friend developer that will change things. But I think that's the limit. You can use things like MDX and have everything on Git too. But yes, I think
00:09:08 that's the limit. It's having a personal website with simple content where you know everything and you're the only 1 intervening on it, then yes, as soon as it's a bit more complicated, it's much more easier to have a CMS. And I really like the CMS that are
00:09:28 component-based, which is the case of Storyblock. WordPress, I was using it always with a plugin name, Advanced Custom Fields and Flexible Content. So then you can map components to your code and make them reusable and not think about pages. Pages are very monolithic too. It's not
00:09:48 flexible. So I really, really like to have everything component based and map everything in React, for example, in Remix especially. And Yes, but yes, I think working without a CMS is very limited. Otherwise, there is also some developers who like
00:10:09 to build their own CMS. I had a friend like that. I think it can be complex and front to error and bugs and the CMS, you have all the security updates and you don't have to touch, the backend is here for you. Basically you have all your backend and you just have to take care
00:10:29 of the frontend.
00:10:32 Kent: Yeah, so with a website that's driven by a CMS, like Storyblock or Century or, you know, the list of companies goes on.
00:10:41 Alexandra: Oh, there is a lot. Yeah. There is not only Storyblock, even if I love it. But yeah, there is a lot.
00:10:47 Kent: Yeah, so there are many options there, but you can kind of implement a backend for the front end architecture with Remix, where you've got the Remix loaders and actions interacting with the CMS, and you are interacting with the database directly. Now, is this only for marketing sites, or can
00:11:07 people benefit from using a CMS for like apps as well?
00:11:12 Alexandra: Yes, you can also build apps. Basically, the CMS is for storing data, content is data. So you can use it for an app. It's then your creativity and strategy that will dictate you what you need and which CMS is the best
00:11:32 for your use case. But yes, it's a way of managing data in the most organized way possible and to have a database as a service, so yes.
00:11:44 Kent: Very cool, yeah. So I wanna talk a little bit about internationalization or localization, translations and things. So when I was at PayPal, I referenced my time at PayPal a lot because I think it resembles a lot of people's work. But even Before that, I had other companies where we did similar things for internationalization.
00:12:06 And what we did was we would have a directory in our repository that had folders and then files that were like basically properties files, so a key value sort of thing. We used message format, that's kind of the standard for doing internationalization with
00:12:26 pluralization and genders and different stuff like that, it's pretty interesting. But yeah, so we just would have all those files. We would have the English ones, and then somebody at PayPal had built a tool that our translators would be able to see what strings were not translated yet. They'd see what the previous
00:12:46 1 was or what the current English version was and then they'd translate that. So we'd have like a bunch of these different files and then our server would consume those and we'd have access to the translations. And that involved, the tool would like make pull requests to the repo so we could pull the content changes
00:13:06 and stuff. Probably not my favorite thing to do for managing content. So what is the experience like with a proper CMS? And you can use Storyblock specifically, but if I wanted to internationalize my site with a modern CMS, what is my experience going to be like there? And not just my experience as
00:13:26 a developer, but also the experience of the people writing the translations.
00:13:31 Alexandra: Okay, in Storyblock there is several ways. I have not worked myself on a big internationalization website, but I know how it works. So you can do it at several levels. So the simplest level, If you want just to have translation, just the text, then you can do it at the feed level. And
00:13:52 inside Storyblock, you can activate that and you will have a dropdown and choose the language and that with the API, you will have the right code to build your front end. So that's a way, but internationalization, it's not only the text. It can be also you want, you can
00:14:12 be, for example, an English website for the US and for the UK can look different colors, content or anything. So in this case, we can use folders and there is an extension in Storyblock where you have a drop-down
00:14:32 and then you can clone the home page, for example, from 1 country to another country and then translate, make changes, then you can merge, for example, the look of 1 country to another and the language stay
00:14:52 different. Well, that's another strategy. It's not only the language, but also the website. In this case, you use folders. And Storyblock, we also have spaces. So you can use these spaces in case for big websites, you can have a team that work on a region and another team in another and
00:15:12 assign spaces to these people. You can, of course, mix and match these methods, depending on the complexity and your strategy and what you want to do. So yes, in advanced CMS, it's not the case in WordPress. I don't think there is, perhaps there is plugins, there is plugins for everything in WordPress. But in Storyblock, we
00:15:32 have special things already ready for internationalization, so that's really great.
00:15:40 Kent: Yeah, yeah. Definitely, I would say that's kind of table stakes for CMS is to handle translations. And that is a good point that internationalization isn't just about the text, but also the way you format numbers and different things like that.
00:15:56 Alexandra: Yes, also.
00:15:58 Kent: And it's not just a matter of you're displaying dollars, let's convert that to pounds or euros. Or is it like, you gotta do a currency conversion if you really wanna go that deep into it. And that's like very dynamic. And so it can be pretty complicated making a global web presence.
00:16:19 So it sounds like that's a pretty well defined thing. So the people that you would hire, contractors or whoever, to do these translations, their experience is you give them a login to Storyblock and then they can go through and say, okay, here's the UI or the content that they have in
00:16:39 English. There's no Japanese translation in this yet. So I'm going to select the dropdown and make a Japanese translation. Do they get to see where that content exists in the app? Is there an easy way for them to know how to
00:16:52 Kent: use the app?
00:16:53 Alexandra: Yes. First we can create roles. You can assign, translate your role to translate in Japanese and you will have only access to that. So if it's by region, so there is these folders, you can see these folders, but if it's just the fields, then
00:17:15 it just has a dropdown and the different languages. And there is also extensions where, for example, you can send the data to be translated by an external application and send back. Recently, I've seen something great,
00:17:35 I have not tried it. And I think it's an extension done by your partner because Storyblock is extensible, so you can build on top of it. And it was with Deeple, and it was translating directly, automatically into different languages. So that can be, yes, that can be really,
00:17:55 really great. I've just seen it working 1 time. I have not deeply tested it, but I was quite impressed by this.
00:18:04 Kent: It changed
00:18:05 Alexandra: the language and it was translating, and then you can correct, of course.
00:18:09 Kent: Yeah, yeah. That gives the contractors or whatever service you're using, those people a headstart in getting things going in the translation process.
00:18:19 Alexandra: That's very
00:18:20 Kent: cool. So yeah, I think translation's an important part of a CMS. What are some other aspects of a CMS that people don't typically think about but you have to deal with on the day to day?
00:18:35 Alexandra: Okay, I will talk about Storyblock because it's the 1 that I know the best and...
00:18:40 Kent: Yeah, you can talk about Storyblock.
00:18:42 Alexandra: 1 of the features I love is the visual editor. Before working at Storyblock, I realized that I opened an account with them, I don't know, 2 years before, because I was very attracted by this visual editor. And I didn't use it because I have no time. I was
00:19:02 freelancing at this moment and I don't have time. But yes, having a visual editor, the content in the marketing people can see what they do and if the back office, if the components are well done, the strategy is well done. They just have a Lego game and it can build all the pages and all what they need
00:19:22 and variations. So it's visual, so you see what you do. So that's really great. And...
00:19:36 Kent: Well, you're thinking that's
00:19:37 Alexandra: a good thing.
00:19:38 Kent: Just to go off of that a little bit, when, when people are writing content, they may see a field that's called. Footer, for example. But unless they actually can see where that appears in the UI and everything, it can just be a little more challenging to know what the content should say, like how big is too big,
00:19:58 or how long is too long, how short is too short for where this appears in the UI. So that sounds like a really useful feature.
00:20:07 Alexandra: Yes, no, no, that's really, really useful. 1 thing that is great too, and I've worked a lot on that, it's the extensions with e-commerce. Because thanks to that, you can implement storytelling in your e-commerce
00:20:27 application. And so that's a help to sell. For example, you have blog posts and you can implement, tell a story about your product and implement the product at the end. And so that drives people to sell because you drive their emotions with that. And in Storyblocks, there is this extension about e-commerce. So you can visually
00:20:48 see the product, mix and match it with the CMS content. And that's really, really great. And yes, you can do many extensions. As soon as you can interact with an API, you can build an extension, that's great too.
00:21:06 Kent: Oh yeah, because often our websites are composed of multiple data sources. And so being able to integrate those properly is very helpful.
00:21:18 Alexandra: Yeah, yeah, yeah, yeah.
00:21:19 Kent: Yeah, very cool. So is there anything that you would recommend people not use the CMS for? Like we could go really deep on this and maybe have, like maybe I'm using the CMS for my CSS. I'm bringing my CSS through the CMS. Is that, would that be taking it too far? Where's the
00:21:39 limit?
00:21:42 Alexandra: CSS, I use, I don't bring my CSS inside the CMS, but I make different style. I can make conditionals, I make a drop down. Okay, I want a dark background, I want a green background. I want to align left, so you can make conditions like that. What you can bring in the CMS, If it's a
00:22:02 simple application that is not managing a lot of data and content, I don't know what a CMS will do there. But I think it's obvious at the end. You use a CMS to manage things, so if you have nothing to manage, you will not use it. Yeah, I see. You've never really seen
00:22:19 Kent: somebody use a CMS that really shouldn't be, or like taking the CMS too far and that leading to problems?
00:22:26 Alexandra: I have seen horrible things in WordPress for sure. That's the problem of WordPress, because there is all this theme and extension that developers make to sell more and more and these people that want to use it and they don't know anything about development. So they just put 1 plugin on top of another and
00:22:46 I remember when I was beginning, I rebuilt the website that was super, super slow building WordPress and inside there was a builder. Inside this builder, there was HTML and nothing was working. There was images with a pattern on top of them and this pattern was a PNG. And so it was super, yes.
00:23:07 So you see things like that sometimes.
00:23:11 Kent: Yeah, yeah.
00:23:11 Alexandra: So and the CMS with all the themes and plugins, it's good because it gives power to people that are not developers, but sometimes it gives too much and you have some monsters that grow there. And that's, it looks nice, but cannot work because it's super slow, bringing all
00:23:31 this code. And yes, that's, that's it.
00:23:35 Kent: Yeah, okay. So maybe another angle of that same idea is if I am building an application that does have content, let's say I have to make the decision of do I put, I have some new data I need to store, do I put that in the CMS or do I put that in my own database?
00:23:56 And so, what are the things that kind of, Like let's say we've got a blog, and I use the CMS for the blog, but then I want people to be able to favorite blog posts, and so they're gonna have their list of favorites over here, and when they see a blog post, they're gonna hit favorite on it, and now they've got their user account, and that shows all their favorite
00:24:16 blog posts. Where does that data live? What's the best place to put data like that? Would you have the CMS manage that list of favorites or would you recommend putting that in your own database?
00:24:30 Alexandra: I have to think about it. I think for that... So it's nuanced. Because there's
00:24:36 Kent: not necessarily the right answer.
00:24:40 Alexandra: If it's permanent, then you need to build a user account, I think. So should you keep this user account in your CMS on the database? I don't know. I would need to think about it a bit more. Certainly, you will find an answer quicker than me. But if it's not permanent,
00:25:00 you can store it in the local storage or whatever. In this case, you don't need, you don't need, you manage it front end. Yeah. Okay. So again,
00:25:15 Kent: it Would it be correct to assume then that the CMS is not typically where you would store data from users of your application. The CMS would be used primarily by people who are creating content for your application. And then anything that
00:25:35 your end users are, any of the data that the end user is creating, you should probably store in your own database. Is that pretty good line
00:25:43 Alexandra: of drawing? It depends. If I remember, I have worked on a project, a big project on WordPress, but it was really a mess. And I remember, I think I create, you can create a user content type and then attach the post to it. That can be a solution. But I think It depends on the website, on the application of what
00:26:03 you need, if you need an external database or if you can store it in the CMS.
00:26:14 Kent: Yeah, okay.
00:26:15 Alexandra: Yes, I have done, for example, I build something to make comments. It was more in Storyblock, it was more to test how it works than to use it because I can do it with Disqus and it's full featured. But I build a comment
00:26:35 system with the management API, So I was attaching the comments to a post automatically when people were writing. So it's a bit the same. Attaching 1 content to another so you can create the user and attach posts to it which are favorited. That's the strategy, but there is no 1 way, I think. It depends
00:26:55 on the cases.
00:26:56 Kent: Yeah, well, I think that is part of what makes software interesting is the fact that there is no 1 way. And you have
00:27:02 Alexandra: to figure... It depends. Yeah. Always.
00:27:06 Kent: Well, Alexa, we've had a good time chatting together. Is there anything that we didn't talk about that you'd like to touch on before we wrap up?
00:27:16 Alexandra: Perhaps about AI, because AI is really going up. I have not tested it, but it's changing. It's changing things and more and more content. I read that I don't remember the percentage of additional content created this year, because people, thanks to AI, can
00:27:36 create a lot more. And you can do things with AI inside the CMS. I wanted to create an extension, but I think Storyblock is doing it to create, for example, a content and you can have the tone, you can have the subject, the keywords, and automate
00:27:56 the content creation. I saw a partner also create something to create the image for a post, you can automatically tag images, you can categorize content, you can do many things. I want to dive into that now.
00:28:16 Kent: Yeah, yeah.
00:28:17 Alexandra: This is
00:28:17 Kent: a very exciting time. It's, I'm finding that the biggest challenge with AI is figuring out how to use it for more than just a chatbot. The chatbot, it seems like the obvious thing, but How do you use it to create something useful to the user that doesn't involve them chatting back and forth
00:28:38 with the AI assistant? So it's an exciting time.
00:28:41 Alexandra: About that, yes, to introducing using OpenAI and introduce perhaps, you know, drop downs when they choose, oh, okay, as a persona, I'm a blogger about food. Okay, I want to write about that. I want these keywords in my post. And so all this data can go to train
00:29:01 OpenAI and generate automatically. So instead of prompting, it's just sending what is needed and creating. So I want to work on that. I'm excited right now.
00:29:12 Kent: Yeah, that's very cool. It's an exciting time. All right, Alexandra, what's the best place for people to keep up with what you're working on and reach out to you if they have questions?
00:29:22 Alexandra: Yes, they can find me on Twitter, on AlexaDark. If I can write it.
00:29:29 Kent: Yeah, We'll link to it for sure.
00:29:32 Alexandra: Yeah, and dark is not because I'm dark. It's because my partner name is Darko
00:29:42 Kent: Well, great, well, it was so nice to chat with you today
00:29:44 Alexandra: I think you're
00:29:45 Kent: giving us some of your time
00:29:46 Kent: and I hope everybody has an awesome time creating some great content.
00:29:50 Alexandra: Yes Thank you so much and see you at the next conference
00:29:55 Kent: Yeah, bye. Bye.
00:29:56 Alexandra: Bye