Blackbird

24: Enterprise Blocks with Fränk Klein

Anchor.fm | Breaker | Castbox | Overcast | Pocket Casts | RadioPublic

Cory and Phil interview Fränk Klein, founder of and educator at WPDevelopment.courses and Principal Engineer at Human Made. We talk about some considerations for WordPress at scale and how that affects architectural choices, how WordPress as a project is or is not keeping up with modern industry standards, and why you might consider using the site editor for your next enterprise client.

Clips

Links

(06:39) Block-Based Bosco theme: https://wordpress.org/themes/block-based-bosco/

(24:38) Aino Blocks: https://ainoblocks.io/

(26:14) WordPress dev blog about intrinsic design: https://developer.wordpress.org/news/2023/02/intrinsic-design-theming-and-rethinking-how-to-design-with-wordpress/

(39:27) Human Made collaborative editing: https://twitter.com/humanmadeltd/status/1626171278423109633?s=20

(47:44) WordPress 6.1 contributor stats: https://jeanbaptisteaudras.com/en/2022/11/contribution-stats-for-wordpress-6-1-misha/

(54:29) WPDevelopment.courses website: https://jeanbaptisteaudras.com/en/2022/11/contribution-stats-for-wordpress-6-1-misha/

(56:34) Block Theme Academy course (affiliate link): https://wpdevelopment.courses/a/blackbird-digital

Transcript

Cory (00:00:14):
Welcome back to In The Loop, a WordPress Agency podcast by Blackbird Digital. I'm Cory Hughart, and in this episode, Phil Hoyt and I interview Fränk Klein, founder of and educator at wpdevelopment.courses and principal engineer at Human Made. We talk about some considerations for WordPress at scale and how that affects architectural choices. How WordPress as a project is or is not keeping up with modern industry standards and why you might consider using the site editor for your next enterprise client. If you have questions about WordPress website development, contributing, or anything else web-related that you'd like to hear us discuss, send an email to [email protected]. You can also find us on Twitter, Instagram, and TikTok as @InTheLoop_WP. Blackbird Digital is a web and app development agency that specializes in WordPress, creating onscreen experiences that connect, teach, communicate, and inspire. Visit blackbird.digital for more information. Enjoy the show.

Cory (00:01:28):
Welcome back folks, to another episode of In The Loop. This is our first interview of the year I have with us today, first of all Phil. Hello.

Phil (00:01:38):
Hey.

Cory (00:01:40):
And also the person we have here interviewing is Fränk Klein. He's the founder of and educator at WPDevelopment.courses, a site for training companies in WordPress, and learning about developing block themes, as well as a Principal Engineer at the enterprise WordPress agency, Human Made. Welcome, Fränk.

Fränk (00:02:04):
Hello and thank you for having me.

Cory (00:02:07):
Excellent. Thank you very much for being on the show. So just, just as a bit of an icebreaker, we know like your bonafides here, but like how did you get started in WordPress?

Fränk (00:02:21):
Oh, well, <laugh>, yeah. Okay. So actually by trade or by education, I'm a print designer, so that's what I learned. Got the university degree in visual arts and I came out to what I do in the years that I like to call to the Obama recession. <Laugh>, though, you know, wasn't his fault, but that came out and print was just dead. Yeah. I mean dead. And so I did an internship and agency, unpaid of course, and this was a, like a full, they called it a 360 degree marketing agency, and I was there doing print and somewhat design, and then the boss said, cuz I talked to him: "Hey, you know, do you wanna hire me?" He said, "no, you know, I don't need any more designers". But what I do need is a project manager because in Luxembourg we have three official languages.

Fränk (00:03:10):
And so it's quite rare that you know, all the people speak all of these plus English because a lot of our workforce actually are foreign. Like, they cross the border every day from France, Belgium, and Germany. So I need a multilingual guy over in here. And he said to me, if you go back to university and get a degree, I will hire you. So okay. Then I did another two years, got the degree in project management, and then I worked in that; I was super miserable <laugh> and yeah, I didn't enjoy the work, which I, weirdly enough didn't think about before. <Laugh>, I dunno, <laugh>.

Fränk (00:03:43):
So yeah, I should have probably, you know, have been more investigative, but that was more, you know, somebody to hire me, so whatever it takes. And also the pay wasn't good. And so the thing is that when I, when I was at that point, I said, I need to switch careers, so what do I go into? So I'll make an analysis and I say, okay, web design is where it's at, like the internet, you know, it's growing. And I looked at who makes the most, and that's the programmers. So I'm like alright, time to be a programmer. <Laugh>. So I bought a book on PHP again, because what's the most popular language. <Laugh>. So I googled it, you know, PHP, okay, let's do PHP and yeah. Then obviously when you do PHP and you look for a CMS, you land on WordPress.

Fränk (00:04:28):
So classic case, and I did that inside of the agency actually was the WordPress guy. They didn't use it before they use something else, eZ Publish, which probably nobody ever heard of. Also PHP based from some guys in Norway, but yeah, just way down the enterprise lane. So, I did WordPress there, and then I said to myself, you know, "Hey I don't want to go to an office anymore". So I look for remote company <laugh> with the remote company and the WordPress space. It's Automattic. So I landed over there and then went to [WordPress] VIP and then Human Made, and that's really my whole story. Like, everything that did in the 11 years since I, I bought a PHP book. Yeah.

Phil (00:05:10):
Wow. Yeah. You went straight to like the, the heavy hitters, like right after a PHP book. That's pretty <laugh>. Go straight to the source.

Cory (00:05:18):
Well-targetted.

Fränk (00:05:19):
Well, the thing is that you know, it's good because actually when, when you look at just WordPress because I was a designer, I had an affinity for themes, obviously. Write me a plugin. Yeah. Okay. You want a plugin. Okay. But themes is really where I was at. And so at that time, I think it was Twenty Thirteen that was right about being developed. So yeah, I contributed to that. And then also Twenty Fourteen, and that's kind of what, what put me on the radar of like the, the WordPress themes. That's where I landed. Right. So, yeah, it wasn't really like I had this big magic plan to, to get hired. It just worked out, you know, that was the goal and tried to get close to the company in the best way that I, that I could, because I looked up Lance Willett, he was there. And so yeah, that's how I ended there.

Cory (00:06:08):
Hmm. I understand that you also built the first block theme for the repository. Is that right?

Fränk (00:06:18):
It's, it was, the second one was the first real one because Avi, oh, forgot his name, sorry. But there was one before, but that was more kind of a proof of concept. So I don't want to, you know, bash whoever created it, but it was clearly not like a visually appealing theme, and that was really what was meant for just, "Hey, you can do this". And so my theme was Bosco, which occurred in 2014 wordpress.com. And for me, the challenge was, was kind of more of a bet or a challenge because I was reading all of this, "oh, well, full site editing, you cannot do this, you cannot do that, blah, blah, blah". Said, look, I'm gonna take something, which is there, 2014, you know, it's, it's an existing theme. I'm just gonna keep the design, but I'm gonna switch all the technology, and so that worked pretty well. So yeah. Point proven in that sense. It's not the most, you know, when you look at the theme was really just meant for my own personal blocks, so just a writing theme. But yeah, that was the first official one in the, in the repository. Yeah.

Cory (00:07:17):
Very cool. Yeah, maybe we should just start there, right? Let's start with blocks and themes, since we're already talking about 'em. Right? So, pardon me for asking, I suppose agency to agency heart to heart here, but is Human Made doing you know, full site, AKA block themes for client sites right now?

Fränk (00:07:40):
Well, that's a yes and no. And that's part of kind of the problem of how, how you talk about full site editing. So when you read about full site editing, it's presented as this like monolithic feature right? You have to do a block theme. But I look at full site editing more as several features that in the entirety they make up block themes, like at the very end, but it's more scale. So we don't use the site editor yet, but I mean, nothing that is out there. We are building with it though in a project we're working on. But the thing is, full site editing is kind of the last phase in customization in the sense that it is really full page building in a sense. And that has a long tradition at Human Made. I mean, since 2018 we've been doing that.

Fränk (00:08:29):
It's just the tools we use are different. Because back then you didn't have the site editor, it was only the block editor but yeah. But full-on block theme, no. The reason for that is just when we kind of, when we design a solution, we always take, let's say the most straightforward approach. And if there's no benefit to it, then we're not gonna do it. So if we say: Hey, we can get to the outcome that we want by doing something which is, you know, traditional PHP for all of these, these pages that you never customized like a category, you know, usually that's something which you do just once you do it for a certain model, it's not even mocked up, right. It's just like these transitionary pages. But then there's a whole set of other pages which are, I call 'em landing pages. So that can be anything from the homepage to particular section pages to marketing pages like, not a throwaway but temporary pages that the marketing people like to do. And then of course it's all, you know, full page building for the most part. Yes.

Cory (00:09:33):
So when you say 'full page', you just mean, you know, you create a page, you're presented with the Gutenberg page editor and just everything in there is for the most part what you're seeing on the, on the homepage, maybe aside from navigation bar at the top and footer at the bottom, kind of deal.

Fränk (00:09:52):
Yeah. Correct. But it has evolved a lot because when we started out the tooling wasn't there. I can't remember when we got like columns and stuff, but in the very early days it was just paragraph image, stuff like that. So the, the way that we did it were all these custom blocks, which were module based. So call to action block had then a field for the image had a field for the header. So very much how you would do it kind of in the olden days, with meta boxes just now in the editor, the end result. And you really <laugh>, I mean, you really stack the blocks, it would stack bricks, right? Like one on top of the other very linear. And now it has evolved more to, to the point where we do very little custom blocks usually.

Fränk (00:10:36):
And when it is a custom block is much more for we need to integrate this tool or that tool. So now it's really page building in a sense that you would imagine page building and are really just stacking these, you know, premade modules, one on top of each other. And that works now, it works really well because we recently, I think was last year, end of last year, we redid a site that we did in 2019, I think. And we were really having these, you know, call to action blocks that we built back then we said we were just gonna remove them because, you know, what it is, is an image and a text in the button. And so no need to do a custom block anymore. So that was great, a great experience to see.

Phil (00:11:16):
That's awesome. Yeah. I think internally we're, we are at, in our agency, we often call those hybrid themes cuz we're still kind of using an older school scaffolding with a lot of PHP in it. And often our header and footer are maybe more static or PHP based. And then all of the stuff in the middle is yeah. Block-based. And, you know, we've been doing block themes for handful of years also. And yeah, very much those first few were a lot of custom blocks, I think actually ACF actually enabled us to kind of do those a lot faster for a while there. And then yeah, kind of big giant sections that allowed us to make our content a lot more flexible than it was in the past. I would actually even, more recently now that you can kind of kind of just you know, use a PHP tag to throw a block template anywhere the whole entire footer seemingly seems to have gone to the way of blocks, so every day we stray further from PHP's path and towards the full site editor.

Cory (00:12:08):
Well there was that sort of incremental thing that happened even for us with, you know, like footer stuff, right? Completely PHP with the, you know, classic menus and stuff like that. And then, and then they blockified the widgets, the widget area. Yeah. And so then like, okay, well we're using widgets already to build some of the footer stuff. So that worked out and we kind of pulled back on explicitly like how the footer, you know, needs to be laid out as such. And kind of gave a little bit back to the blocks in that case. And now we're, now we're at block templates, <laugh>.

Phil (00:12:49):
Yeah. So you mentioned a little bit earlier, you know, you don't have any full site you know, site editor sites in production currently, per se. And it sounds like you are making those decisions based off of the requirements of the project, which is also what we do. What would a design have to come through your vision to basically determine that it was eligible for the site editor versus a more PHP route?

Fränk (00:13:21):
Well, I think that once you get to the point where you only have the head and the footer, it's just a decision to put the PHP header into a block and then you're off to the site editor. Sure. Yeah. So that's kind of the point which we've been skipping. But that's definitely more, the next one up that we are doing is just it's not really a design question so much in a sense that it's more, it's kind of when you, when you build, when you have different projects some are very, it's rare, but some are very fixed. Right. You know, you're building this and it's never gonna change. So for those, should we do the site edit? It's like, yeah, no, like we are just gonna do the normal PHP. But the, I think the, the more you go to or the more you work with marketing departments, the more you're gonna go down, you know, the, the site editor route.

Fränk (00:14:10):
And then when we talk about design it's often that you are not, like you have a design for the overall content areas. So, you know, the, the classic stuff, and then you have all of these landing pages, and often those have a different design because you don't have the same pattern, you don't have the same footer. The width might be different. We might not have two columns. So the, the things that you build out for that are gonna be different to the rest. So in that sense is a decision, do I, do I make myself the work to split it out? Because you definitely can have the same site editor with, you know, two different sets of tools to work with, or you say, I'm gonna keep the one part just classic building with the block editor as we know it. And then just the other stuff that's then the full on site editor.

Fränk (00:14:55):
So, I mean for our webpage, so you made a website, on the site editor, that's actually gonna be next. Because if you look at the design, you know, it's always, when you talk about design, it's like you need to be careful what we say, but it's a beautiful design, but it's something that you could very well do with what you have. And it's kind of more the point. It's very I think that's kind of the, the difference when we talk about, okay, what does a WordPress agency do? I think at the point that we are now, if you bring the agency in at the point of a design is already finished and has been sold and has been signed off by the gazillion people that need to have an opinion on it, and then you say, "Hey, let's build this stuff", I think that needs to change towards, you know, the agency being much more early in the process.

Fränk (00:15:40):
So maybe we don't have, we do have a designer or two, I can't remember. I think one but that's more for the internal stuff. We don't really sell design to our clients through in-house designers, but we have partners and I think that's the, the better way to go. If they are in-house, like even better, you know? But if you have partners, that's also a good way to make sure that the design and kind of also the technology fits. So I think that's just something that we need to change as a, as a community. Oh, I design something, I drop it at the door, you know, of an ever-changing cast of freelancers and then it's gonna be awesome. I think that has a time limit on it, to be honest.

Phil (00:16:22):
Yeah. That's interesting. That's something we battle all the time where, you know, a lot of stakeholders have their hands all over the project before it maybe gets to technology and then, you know, a lot of decisions have already been made. So you kind of are you know, relegated maybe to a specific path to how you can build out something. So I was mainly curious cuz yeah, I just recently had identified a design that I thought would be full site editor compatible, and I have just started going down that path the last couple weeks. And it's been an interesting process so far. And I was wondering if I may, I could steal your knowledge, make sure I made the right decision, but it sounds like we're all still trying to figure it out.

Fränk (00:17:01):
No, I think it's more, so if you have been in the design world, it's both a blessing and a curse. But if you, if you look at print design, it's, we call it design, it's very much, for me it's a craft. You know, whether you're carpenter, print designer, you know, is there that much of a difference? Like, you know, in my view, it's much more craft in the sense that you have this canvas, you know, it's limited, you know, that printing stuff costs money, so you're not gonna go overboard with all the stuff, right? So it's very much you're taking all these decisions which are very technical. So like, I did a lot of lettering, like when you, you know, put stuff and trucks and cars and what have you, and that's how big is a truck. Where is the thing that we can put it on, is it, you know, is it even, is it uneven?

Fränk (00:17:43):
So you have all of these constraints and you have these systems that have been evolved over years to deal with this. And web design is very much the same. It can be the same. If you have a designer that says, I'm building a design system where I have these small pieces, and then it becomes a bigger piece, then it become a bigger piece and everything's just systematized. The sizes, the spacing, the colors, everything is just, it's like a toolbox that you can take out pieces and put them together in different ways and it just fits. Like you use scales in music, right? People say all blues sounds the same. Well it's because they're using the same scale. So obviously it gives the tone to the music, right? And <laugh>. So, and that's, if you have designers like that, it can be fantastic. If you have designers which are just painting a pretty picture that's just <whoosh sound> and they show it to the client, it's the easiest sell ever, because "that is gonna be awesome". Then their job is super easy, and then you just drop it off at their doorstep, then it's gonna be a disaster. Especially if they are the kind of designers that later come around and say, well, I bought is smartphone for a dollar and it has Android from the 1970s, and then this is 10 pixels off, you know,

Phil (00:18:49):
<Laugh>. Yeah. No, it's, so that's an interesting way of putting it. I guess like, the way I would condense that down is like if, when you're designing for the medium, and that medium being a, a browser, but then also WordPress a little bit further down the line is that you can probably enable yourself to use the tools in a much more powerful way. That's awesome. Yeah. And yeah, I really liked your analogy of the old Android. I always say, like, I sometimes have clients coming at me and they wanna make like a VHS play on a Blueray player all of a sudden, and <laugh>, it's like, well, yeah, I can't make that happen for you.

Cory (00:19:23):
<Laugh>. I recently had some problems with what I'm considering the new Internet Explorer which, you know, for better or worse is, is Safari. I mean, it's the same kind of situation where the maker of the operating system is also making the browser. And sometimes things fall behind there. They're doing great work in some areas and then other areas is whatever. I'm, you know, I'm not gonna knock it. It's hard work, of course. But, I want to get back for a moment to this idea of design and handoff and design process. I obviously agree with you. Okay. <laugh>, right. You know, as programmers, we love systems and we thrive on systems and if we're not provided a system when we look at a design, we systematize it in our code because that's how code works, right?

Cory (00:20:19):
But I think if I were to play devil's advocate for just, you know, a moment I think that some designers, or just people in general might say that something maybe has been lost in, you know, going from print style, right? That's a great way to describe it. A print style design, which is very much like you make a thing, it's a very static thing. It looks beautiful, you can do whatever, whatever you want. Versus this, you know, really, really heavy focus on a system. I wonder if developing with blocks actually kind of helps maybe bridge that gap a little bit. Maybe I'm just brainstorming here, but you know, if you have, you have a design that kind of works within a system, but then a really good designer should hopefully know how to break that system. And that's what the developers of custom stuff, you know, focus on, those things that are different, that break the design or providing options or something like that. Maybe that's where both ideas can come together.

Fränk (00:21:29):
Right? I think it's interesting when you said breaking the system. So grids was one of my things when I was in print design I was way into grids. And that's a whole, there are these, these books on design, and then they show a photo book. And then they showed the grid that, you know, the design actually drew by hand. And then that's how the photos like stick in the middle of page somewhat off. But it didn't make sense to you. It's because it's a line on the grid. And then Mark Bolton, I think that was his name, he wrote this article series I think it was "Making and Breaking the Grid", or the idea is though, that you have most of the things aligned to the grid, and that gives it harmony, especially if the grid is based around, you know, the golden ratio.

Fränk (00:22:15):
All of these things, which humans find visually pleasing. But if it's too, like, if it's too much too aligned, too perfect, it's missing this edge. And the edge can be different things. It can be the colors, it can be the type which is a little bit off, you know, the typeface or you just position things, you know, outside of the grid, but in a way that creates like a dynamic attention in the page where you can feel it. And that's definitely difficult to do if you're dealing with different size of screens because you don't have this, you know, it's always, it needs to be flowing. And for sure, I think we we're missing that. So what I see, especially nowadays, which I'm personally kind of, I don't really know what I should be thinking of, but when you look at the design, for example, Gumroad, it is just, it's super pink and yellow. Mm-Hmm. Those are not my colors to be honest. But I think we're going down that road where it's an interesting typeface. And then the, you know, the type and the colors are kind of off, but they still fit because the designer did it <laugh>. Sure. And they have this sentiment of unease. And so I think that's how they try and do the freshness in a design. They're losing that, that ability to create tension through space essentially is what you would do.

Cory (00:23:28):
I never thought of it that way.

Fränk (00:23:29):
No, that's my design of, I don't know. I'm not into design anymore. Maybe somebody's just shaking their head saying, oh my God, this guy.

Phil (00:23:36):
Well, it's interesting that because yeah, like, you know, we do need to accommodate different screen sizes and, you know, we have a bullet point here and I kind of just wanna bring it up cuz it's a problem I have when I'm designing inside of the block editor and it's like, you know, are the current layout options in the block editor enough right now we don't really have true blue grid support anywhere, per se. We don't have, we have flex in rows and stack, but they're kind of limited in some way that in shape or form, like, you know, often I find myself working inside of you know, using the row or stack and I just need to like align some things in a certain way that would maybe be three lines of CSS and I just can't do it with a block yet without going like maybe three groups deep. And even then it's like maybe still not optimized for mobile. So I, I'd be curious to hear your take on, if you think, like with our current offerings of blocks, do you think that we have enough layout options to really you know, provide for clients?

Fränk (00:24:39):
Depends on what the design is, but I agree that grids are definitely the missing piece. I know that Aino Blocks, that's like an extension, like a block extension for block themes. I forgot what the name of the theme company is [ElmaStudio], but yeah, they have a grid block and it works well because to me you can say, well you can do different drawings and this and that and looks like a grid. But in CSS we would take a grid in particular use case, right? You can do what the grid does in the past, but you see it, I dunno, I can't explain it, but you see this like, ah, that's gonna be a grid, right? And this one is not gonna be, and that therefore, I think grid is definitely missing. What's also missing is something as simple as negative margins. I don't know whether they allow it now.

Phil (00:25:22):
No, not really. Auto margins and negative margins are still kind of like not a real thing. I'm actually dealing with that in, you know, let's say a typical design thing. You have a section of a website that has, it's full width, but there's like a little bit of the image that peaks down below into the next part of the website. And, you know, that's a very visually appealing thing to do in design. But when you're talking about blocks, it's not very easy to accomplish. Like, you can maybe do a cover block and like have a full giant background and they kind of like fudge your margins a little bit. There is a block that does allow negative margins, but it has some limitations also. But yeah, it's interesting that where the block editor decides to begin and end at times, it's like, you know, they accommodated so many things, but then it seemingly certain CSS functions that have existed for the longest time just don't quite work yet.

Cory (00:26:14):
<Laugh> No I just wanted to bring up that this conversation happening right now, in particular, there was a, I'm trying to find it cuz I didn't, I don't have it pulled up here. There was a developer blog entry, the WordPress.org developer blog entry about intrinsic design and theming.

Phil (00:26:31):
Mm, yes.

Cory (00:26:33):
Rethinking how to design with WordPress. And you know, I, I won't get into all the nitty gritty of what they talked about in that, but like one thing that they took a pretty hard stance on, like, no, we're not, we're not gonna put breakpoint style controls into core blocks. It's just not gonna happen. We're thinking about this in a completely different way where the blocks should be able to adapt to the context that they're in and not necessarily have to be micromanaged to say, do this when you're on this screen size and do this when you're on that screen size. So I thought, you know, and I shared, you know, this article with the team here a little while ago, and it's very interesting and I really appreciate this kind of mindset and approach to web design just in general overall. But I think that at least right now, <laugh>, and maybe we'll always feel like this, but like, at least right now, it feels like we're just not quite at the point where it works all the time. Or at least for things that we do. I don't know, maybe, maybe we're stuck in some place with design and development and WordPress that's, you know, we need to move forward with. And, and that's gonna involve everybody in the company design and development and sales and everybody trying to figure out like, how do we, you know, not only design sites for this system, but also sell this system and design in a way that,

Phil (00:28:05):
Yeah, intrinsic design sounds utopian. Mm-Hmm. <Affirmative>, but it doesn't sound very practical in the reality. You know, the idea that like, you can have a block that, oh, I hit one setting, I hit space between, but then I'm mobile. It looks gorgeous. Also, it just doesn't seem very realistic. So yeah,

Fränk (00:28:22):
I think that's, that's still, to me it sounds a bit like too much you know, well this is my view, but <laugh>, you know, oh, this is my view, this is my vision, and then that's dead. I think there's, between saying we don't have breakpoint controls and not having, you know, controls to react to changes in screen size to mean that two different things, rights one is fluid, but we still need to do it at certain point. Mm-Hmm. <Affirmative>. Right? And the other is just, yeah, we shouldn't do 500 pixels, 700 pixels, because yeah, that is unmanageable. But I think it's still, you know, we are still missing responsive behavior controls, images, especially, react super poor and WordPress two responsiveness, unless you do some, some work on it. And that's really the part where they can say, we have this tool set and it's a stricter tool set, but when you have a restricted tool set, the tools need to be really good, right?

Fränk (00:29:19):
So if all you have is pen and paper, you better be good with paper and pen. So right now they're giving you a pen and paper pen is not really good. So that's, I think, the problem, right? I mean, you can say, this is our vision, and as always with WordPress, they say, well, if you don't like it, then create whatever you want. On top of this, right? That's always the underlying message. But I think it's just, we are not yet at a point where we can say, you're not gonna do this and that. Because many of the tools which are in there, I mean, they are good enough. And with some workarounds, of course you can do all of these, you know, fancy designs, but if you want to get to the point where it is not micromanagement because you micromanage to work around the limitations of the tool, then the tool needs to be a lot better. And it needs to have that, all of that, you know, much more intelligence about what's in the blocks than, than it is right now.

Cory (00:30:11):
Mm-Hmm. <affirmative> and I think that maybe part of that is that the technology is still pretty new just in like, in the CSS world, right? In the styling area of this technology that, you know contextual, oh gosh, I can't think of the word for the contextual kind of media query stuff that isn't screen sized, but it's

Phil (00:30:35):
Oh, the container size, or, the container query.

Cory (00:30:38):
Container query stuff. I haven't even really

Phil (00:30:39):
Which I've yet to use one. <Laugh>

Cory (00:30:41):
Yeah <Laugh>, I haven't done anything with it yet because it's still so new.

Phil (00:30:43):
Cause it's so new, yeah. You mentioned something earlier about like, you know, it is amazing that we can extend WordPress and come up with our own solutions, but I also have found that to be, especially if the rapid pace that the, you know, WordPress is moving in it to be a dangerous thing. You know, for a moment there, we didn't have padding and margin control, so a whole bunch of plugins came out that added padding and margin controls. And now like, you know, we have a great slider that allows you and theme.json allows you to find your paddings and margins and your block gaps and all that kind of stuff. But, you know, then, you know, we have these ad hoc solutions that other people came up with and they, it's dividing the ecosystem in such a fragmented, it was already pretty fragmented.

Phil (00:31:22):
Like where we have, you know, maybe older plugins that rely on shortcodes and now maybe widgets and then maybe blocks. You're lucky to get a plugin that has a block. But then we have an like, even micro fragmentation of like, well, this one has blocks, but the blocks have like little places to put in your padding. It doesn't even use the block gap or anything like that. And it's just, it just, it's feeling you know, I feel like without a proper roadmap and basically just telling people like, well, this is our philosophy and if you don't like it, build your own solutions. Is micro fragmenting an already fragmented ecosystem.

Cory (00:31:58):
Even if you have a roadmap, if the feature's not available now, what else are you gonna do other than make a custom solution now?

Phil (00:32:06):
I mean, I think for a plugin that's a product, I think lots of these people were rushing to get a product out there they didn't know they would have a solution. You know, my perfect example for this is you know, A: there was a spacer block that is pretty much rendered useless at this point, more or less. And then there was also the, the spacer block that I used, which was responsive spacer block, which is like, I would install that plugin on a handful of my early sites because A: it had negative margins, it had responsive padding, which is all basically gone to the wayside now that you can have you know, set all those in the theme.json. But yeah, if they, I have a feeling if it's like, Hey, you know, we're working on theme.json, we're gonna have a block gap is gonna come to it, you're gonna be able to find those settings in the next year or two.

Phil (00:32:55):
I don't think a developer who would put a bunch of time into building that product if they knew it would become obsolete in a year. Like that's just, especially these even larger ones who are coming out with, you know, suites and of libraries of blocks. Like you install this plugin and you get like 30 blocks all of a sudden with you know, price charts and all this crazy stuff, and they all have their own crazy settings, their own panel. Yeah, I don't know. I mean, I'm, maybe I'm just kind of whining right now, but it's just, it's hard to find quality blocks currently in the ecosystem. And when I do find one, I found that it was developed maybe two years ago, and it has a whole bunch of settings that just don't make sense anymore. And it makes the editing process more complicated than it needs to be, especially for my clients who, you know, are already adapting to a new system that, you know, before, especially if they've worked in WordPress before, they just had to worry about text and now they have to worry about maybe layout. So.

Fränk (00:33:51):
Right. But I think, I don't think you're whining, because when you think about what a vision was for blocks one of the visions was definitely that it was like the lingua franca of like WordPress. So, you know, French used to be the language of diplomacy like way back in the middle ages, right? And for like, WordPress is always a product of you have core, you have the plugins and the theme sits on top, but the problem always came that the plugin needs to do stuff to the theme. And then, you know, it's years of everybody being upset at the other, and you know, nobody, you know, and then say, okay, you know, blocks are gonna solve this problem. And it can, for example, if you have your styles preset in theme.json and you have your spacings and you drop a block in there, it will, you know, it won't be perfect certainly, but it will look somewhat like the rest of the site. And when we have all of these, you know, like suites, whatever we wanna call them, like these collections of plugins with, no, sorry, blocks with their own customization options, it's just not great. And the thing is that I would say stay away from these things, but it's, you know,

Phil (00:34:57):
It's a hard sell to, you know, even in just recent history, we've had, you know, people, stakeholders come to us and be like, why can't I just add this block? And then they show it to me and it's part of a huge suite of blocks and it's like, because it's gonna cause more problems than if I just like, you know, made the existing block a little bit better than you installing this one plugin, which then adds a whole bunch of complexity that would've, you know, bogged down the whole website.

Cory (00:35:27):
The tension between the long-term thinking and short-term thinking kind of, maybe.

Phil (00:35:30):
A little bit. Yeah, yeah. Sometimes.

Fränk (00:35:32):
The thing is that when you give these recommendations, it depends on where you're coming from. Because when I say stay away from it, I know exactly that I can get everything this does, and I could do it myself and it's gonna be better. Like, sorry, you know, like a lot of cases. But if you don't know how to do that, you know, you can say, well, I can't have this, which is maybe not option, like optimal, but it's there and I have it, or can have nothing. So I probably want to have the stuff that's there about the, you know, as great as they could be. And to go back to the roadmap, I think the difference is that, you know, when you work at a certain budget size, you know that they want to keep the website around. Like, nobody's gonna drop $200k on a website tomorrow and be like, ah, no, sorry. We need something new.

Fränk (00:36:12):
So if you were to have a roadmap, then you can say, okay, I know that at this point I don't have it, but I have a workaround, which is more hard coded, but I can get rid of it in months, years, I don't care. But if there's certain deadline on there where you can know that it's in there, that's I think just generally something that, that drives you nuts. That you have this Gutenberg project, right? The whole project. Like, well, who's, who's the big honcho? Like who, who's the boss? Sure. Say, well, or we have Mathias, who is, I don't what his title is. So it is just, it seems to me maybe that's my dramatic thinking, but I'm like, there's a head honcho that has someone underneath them and it goes on and on and on. Right. And do you have a plan <laugh>, right? And this is just, ooh, phase two. Oh, now phase two is over. <Laugh>

Phil (00:37:08):
Phase two is over everybody. We're all living in great block world now. Yeah. I'm glad someone shares my sentiments. This is exactly how, you know, I hang out in the issues for the GitHub constantly. I'm in the issues for the GitHub every week for hours cuz I'm trying to solve problems. I see the same people. But even more interesting is I get different responses from different people at different times, like very shortly. And it's like, oh no, that's working as expected. And then the next version of Gutenberg comes out and it's actually the complete opposite of what they just said in the issue. And it's like, who is running the show over there? Sometimes I'm just like, what is the, what is the roadmap? What are we gonna get? What is gonna be feature parity from core into the REST API?

Phil (00:37:49):
What's gonna get feature parity into the block editor? And I just don't know that. So yeah, often we're relying on maybe a plugin that someone else built who also had the same information that I did, or I'm hardcoding something and hoping that a better solution comes out you know, down the line. Hoping. But like, I don't wanna shoestring my code together with hopes that the theme.json will get a little better. I mean, even just an example I ran into last week was like, you know, I was styling a navigation block inside of theme.json and I noticed I couldn't target current item. Like, so like, you're telling me that when I'm on the about page, I can't have the about page underlined? I was like, what is happening here? Like that is an insane oversight in my opinion.

Phil (00:38:31):
That was like, that is like a default functionality out of every theme that has existed for years. And all of a sudden now a block themes just can't do that out of the box unless I go the CSS route, which is fine. But like, we're trying to promote this world where anybody can hot swap their, you know, theme.json and have a brand new looking theme you know, with, you know, patterns and styles and whatnot. And now I just can't do that. I have to like, just go to the old school route, which I don't mind, just tell me that that's never gonna come to theme.json and I'll just stick with my, my sass

Cory (00:39:03):
<Laugh>. I don't think anybody's gonna tell you it's never gonna come there, I think.

Phil (00:39:07):
No, of course not. No phase two's over.

Cory (00:39:11):
I think that what we're seeing is, you know, a natural development of, you know, paving the cow paths, so to speak. Right. Where, you know, even though there are these high level goals and we know what the next one is, which is you know cooperative editing-

Phil (00:39:30):
We want Google Docs in WordPress.

Cory (00:39:32):
Did that phase start now? Is that, is that what we're on?

Fränk (00:39:37):
That's the next one. Yeah.

Cory (00:39:38):
Which, you know, by the way, I, I did see that Human Made had posted something about doing that already <laugh> in a project.

Fränk (00:39:46):
Yeah. That's, that's a recurring theme. <Laugh>.

Phil (00:39:52):
<All laugh>

Fränk (00:39:52):
Right. No, it's it's kind of how can I say that? Like, we do all of these things, but I'm also bad at it because we have this problem, we have this solution, and as soon as it's done, as it's done, I lose any interest in for some reason. Like when it's done, I'm just Yeah. Onto the next thing. And then you are so like in it because you're already thinking about the next thing. And then we do all of these awesome things and we don't even talk about it. And then people come around, it's like, will you do this? And we're like, yeah. You know, like, we did that. You want it. I mean, you know, we can do it for you <laugh>. So, but then people are like, oh, I didn't, I think the one thing is where we say, well, you know, if you want, we can do it for you, but it's more, oh, can you actually do that?

Fränk (00:40:33):
We're like, yeah, totally. And I think there's a weird way of kind of presenting the project in the sense that we talk about the smallest things you can have box-shadows in theme.json. And I'm like, okay, then you know, great. I mean, I'm not against it, but it's just, there really is stuff that gets people excited to be able to have the box-shadow. Whereas the whole thing that I think we are not really telling, especially agencies that underneath this, like underneath the whole stuff that you see, there's just a ton of APIs. And so much potential there to do, you know, things that really can change how your clients interact with WordPress in a very dramatic way and that they would gladly have you do for them. Like publishing checklist is a plugin we have. Most basic feature ever. You know, but yeah, great. You couldn't do it well in the classic editor, right? It was done, but it wasn't the way it is now.

Phil (00:41:28):
Yeah. It was a lot of PHP hacky stuff to make sure certain things got done and it wasn't in real time per se. And yeah.

Fränk (00:41:34):
So, and that's the thing. We're just, we're just missing all of these cool uses of, you know, what's there in the APIs to make it really appealing because, I'm sorry about Google Docs collaboration, you know, I mean, I know it's a need for clients, but personally it doesn't interest me least.

Phil (00:41:53):
No. Yeah.

Fränk (00:41:54):
How many people does it interest? Do you want like the big clients?

Cory (00:41:58):
It has a wow factor.

Phil (00:41:59):
It, it's so interesting to me cuz I remember Matt Mullenweg bringing up this feature at a WordCamp US in Philadelphia, which was, well pre-pandemic, 2016 maybe even like, it was just so long ago. And I remember just sitting there in the audience and I'm like, and he's literally describing it like Google Docs and I'm just like, and I, to this day still can't think of a time when I've had more than like two people trying to ever even look at a document at the same time. So it's just like, it feels like a weird feature to be so focused on, but you know, maybe if it benefits somebody.

Cory (00:42:30):
Well, while, while we're being, you know, critical <laugh>

Phil (00:42:34):
Yeah. Let's let's change the course a little bit.

Cory (00:42:37):
No, no, no. I, I wanna keep the course <laugh>.

Phil (00:42:40):
Oh, okay.

Cory (00:42:41):
Well, so we had, Fränk, we had a kind of interesting discussion via email that I kind of cut short cuz I wanted to have this discussion here right. About, you know, the WordPress tech bubble, right. And, you know, this idea, well a longstanding really, feeling that WordPress is always, you know, behind, it's outdated, it's old news. You shouldn't be doing WordPress if you're new in web development, you should be focusing on these other things and I just wanted to get your thoughts and your take on just that general concept.

Fränk (00:43:19):
Yeah. I think that they're two different things. I think that generally when we look at career advice, I wouldn't do WordPress just because: if you are inclined to go to finances, big government, everything like that, you can still be a programmer, and make more money than WordPress. And it's not harder to do. But I think that a lot of people end up in WordPress because they are not really made for those environments. They don't want to wear a suit, they don't want to go to an office. You know, all things which you have to do in those, in those industries. So it depends on kind of, if you were to come to me and say like, you are a young programmer out of university, come to me and say: Hey, what should I do? I would say, well, if you want to travel the world and you know, be flexible, then you're not gonna go in finances.

Fränk (00:44:07):
Right? But if you just wanna make the most money, hey, go into finances, right? Mm-Hmm. <affirmative>, they pay great. I mean, what, what I make now is entry level in finances, right? I could just show up there, work up there, and know nothing, be like, Hey, get, get this money <laugh>. So, which is not my thing. Yeah. But, you know, that's just to mention, it depends on what you want in, in life. But the thing is, what I guess more, more worrying about WordPress is that when we talk about, about Gutenberg, the pushback is that Gutenberg is not really, it's not really the cause, it's the symptoms of the missteps that WordPress has done in the past. Because when we look at where WordPress started out, you know, of course in the past we didn't have the options to customize things that we have now.

Fränk (00:44:52):
So you did need to customize the code, but that changed quite rapidly and WordPress always just clung onto, well, it's for beginners, it's for this, it's for that. But really who nowadays starts with WordPress to build a first site or to learn programming? To learn programming today it's probably gonna be JavaScript to be honest, right? Python, super popular as a beginner language. So, and even as professional language, like a lot of data science done in Python. But that's kind of problem that, that we hung onto this, but to the detriment, although like of all of the people that are there, and over the years we had many people come into the space that had good ideas that were well in line with what the rest of the space did. And it would have been beneficial, but as always, "well backwards compatibility, namespaces are too complicated". Which I'm like, really? Right. Really? <Laugh> ooh, composer. Ooh. Like <whooshing sound>. And that's the promise. Just then these people come and when they come and they contribute, it's because they see the value of WordPress that solves the problem for them and say: "Hey, this is cool, but I could make it even better". But we're like, meh, no we don't want you. Do it the WordPress way.

Phil (00:46:08):
Yeah. Yeah. It's so interesting that you're bringing this up cuz, yeah, I did feel like when the Gutenberg project started and I started seeing this influx of JavaScript developers flocking to the project, it felt like the first time I felt programmers like, I don't wanna say "real programmers" because that's really offensive <laugh>

Phil (00:46:24):
But but like, no, they were talking about build tools and you know, they were talking about things that I was doing in, you know, the react world and in the angular world, you know, for a few years before you know, the Gutenberg project. Like we started having real conversations around that for the Gutenberg project. And it felt like the first time that, you know, you could have mature conversations about you know, build processes inside of WordPress. And that was like really eye-opening. I actually went to like a WordCamp and started noticing like, you know, JavaScript developers were literally in line for lunch. And I'm like, whoa, I could talk about like NPM and not like, you know, pulling down some weird jQuery thing from some random obscure website and shoving it into a JS folder and, and enqueuing it. Like, wow, that's insane. That like, like yeah. Very interesting. Yeah.

Fränk (00:47:12):
But I think the problem, we are so focused on JavaScript, but I think we are just missing the elephant in the room, which is PHP because it has been evolving at a rapid rate because it's now, PHP is the new Java, right? Right. so they have a plan for the language, which is a good plan and web presence is just, eh. And so it all went up to a point until now with PHP 8 where we need to, you know, we need to get to grip with it. Right. And when you look at just 6.1, when you look at the contributions essentially the whole of PHP compatibility is done by, you know, it's led by one person like Juliette [Reinders Folmer]. And so she had in 6.1, I looked it up, she had 105 contributions in 6.1.

Fränk (00:48:03):
Now Automattic had 1077, but they had 94 contributors, so that would be 21 per person. And that was all the stuff that you would, you know, think that Automattic works on. Right. So there's just a fundamental lack of all of the, you know, adaptations of, you know, compatibility of WordPress core, the testing tools, the build tools; it still runs on 5.6 for some reason, even though, I dunno when that got deprecated four years ago, something like that? And, and those are all missing chances. We just, as a community, we're just too full of ourself because we say: oh, we have 40% of whatever and market shares, not really, you know, what's that for? You know, if I were to give you a hundred dollars for every $10 you give me, I would've a hundred percent market share. Is that a great model? Is that something that we should, you know, like the startup think: oh, we got this.

Phil (00:49:01):
It's a pretty marketing number,

Fränk (00:49:02):
Right? "Our startup has users", well, it's free, so I hope somebody's using it, you know, <laugh>. And for me it's kind of with the JavaScript stuff, it's just, it's just part of the whole deal that we've missed a boat on that. Now we, for the JavaScript, it's not even that we—I don't think necessarily the community came to WordPress. It's just we threw money at them. You want money? Yeah. Here, here you can get the money. And so is that a really good plan for long-term evolution? I don't know. Because actually when we see who works on core, like what we all use, it's a very finite number of people. And there's a lot of people using it. And it's not just that, you know, we talk about Five for the Future. It's not, it's very much that people don't want to contribute to it, but a lot of them don't.

Fränk (00:49:52):
Couldn't even, right? And so that's, that's a bigger problem. And I think for a lot of the time well, I obviously come from a different culture and where I come from, like conflict is really out in the open, right? We have a fight and afterwards to go for beers. Like, you know, if it's business is business, we fight, it's all cool afterwards, but WordPress always seemed very much, don't rock the boat, don't say anything and: Ooh, you are like talking down to these people. I mean, like, the bar is this high to ride a rollercoaster. If you're under the bar, you don't get on the rollercoaster. What can I say? You know, like, I'm sorry I didn't, I didn't come up with this. So, but that's kind of, people get so upset with the whole, oh, I don't wanna learn JavaScript. I'm like, well then, then do something else. Like in the future, I'm not saying to leave WordPress, but if you're like, I don't want to use this stuff that this is made up of, then...

Cory (00:50:43):
Javascript has been part of just the web for so long and it enables these responsive user interfaces that people expect now on the web. That like, there's no way, there's no way around it. I mean, I'm grateful for all of the various, you know, PHP hooks that have been put in to, like, handle things, you know, and kind of pass things along to the JavaScript to do stuff with. But I think we have to all come to grips as web developers that like, JavaScript is one of the core languages. PHP isn't actually, it's the server side, but like you're outputting HTML with it, great, but like JavaScript is really, feels pretty essential.

Fränk (00:51:29):
Well, the thing is more that if you look at, you know, at the end when we look at how WordPress evolved, we came to this point where we knew that WordPress is just one big ball of technical debt by this point because the structural problems were never addressed. Now it's compatible to with PHP 8 point whatever. Yes. But we never solved the fundamental problems. So what Gutenberg essentially does is just: Hey, we are gonna have a layer over it, which is called the REST API. And so we hide it <laugh>, underneath. And so for, because people are talking just, oh, like I can avoid the block editor. Yeah, you can avoid it. But down the line, they're just gonna, like wp admin look at it. It's PHP scripts, right? Yep. It runs from the top to the bottom and that's the page. Yep. There's no saving this, so they are just gonna replace it wholesale with a JavaScript application. That's on the horizon. They have design mockups for it, and nobody says it. It's, it comes down to the road path.

Phil (00:52:30):
<Laugh>. Well, so Mattias at some point, I think even like early last year at this point had put like, here's a proposal of what the, backend admin area could look like. And it was a React app. And I was like, and I was like, yeah, that's a hundred percent what it's gonna look like in a couple years. I hope. Like I want that. Like that is what it needs to turn into. And it's probably where we should have already been. Like, you know, we talk about how long Gutenberg has been around, you know, four or five years at this point, and it doesn't feel like a four or five year old product. Like, you know, it feels like it's still, you know, we're starting to finally get like the ball rolling, but if we, yeah, if we were building this exact tool sans WordPress, it would've been like a huge competitor already to, you know, Webflow and all these other ones.

Phil (00:53:15):
Cuz we wouldn't have had to deal with, you know, essentially creating PHP endpoints that then get fed into you know, the JavaScript layer. Well, I had a very similar kind of maybe even a—I worked for a startup that was a PHP application that did very crazy things. It was a crazy e-commerce and then suddenly overnight it started making millions of dollars. So all of a sudden they panicked and were like, hire engineers and let's get this thing off of PHP. But we couldn't, so we had to do exactly what we did with WordPress for a while where we created a whole bunch of endpoints in PHP and fed it into a React app for a while that just kind of offloaded the functionality until we could get it onto Ruby on Rails, which then kind of did the exact same thing. <Laugh>

Cory (00:54:02):
I guess that's also the danger of keeping up with the technologies, but not in the same way that we're talking about here. Obviously keeping up with your core technology, PHP is also important. That's the maintenance work. Right. But it's the unsexy work.

Phil (00:54:15):
Yeah.

Cory (00:54:16):
For sure. Well, let's get back to that Gutenberg layer and maybe the positive aspect of all of this <laugh>. Which is that, and I'm sorry it took us so long to get to this, but you know, this WPDevelopment.courses website that you have for teaching how to, how to do blocks, how to do themes with blocks. Can you give us a little, you know, description of what you're doing on that site?

Fränk (00:54:45):
So the site, that's the name. So the name is kind of weird because it, it didn't really start with the idea of blocks. It's just a problem that WordPress has is that if you want to find a snippet in how to customize the excerpt, I mean, gazillions of blog posts do that, right? As soon as you go anywhere beyond basics, there's just nothing. And in the enterprise, you know, everybody wants to hire WordPress developers. The agencies want it, but nobody's really teaching the skills that you need in that environment. So I thought, okay, why don't you create a website and then you share your knowledge, people are gonna pay you for it. It's gonna be awesome for everybody. And so the first course I did was on unit testing, which is a need that I saw, which the market didn't see <laugh>. So I only found out later that nobody unit tests stuff.

Fränk (00:55:28):
They're just like, yeah, no, it runs. I'm like, okay then. So that's kind of, but that's, I was lucky in the sense that this was kind of my first, you know, I spent so much time on it, you know, made it really good and then nobody bought it. But that's kind of when I, when I came into contact with blocks. And the thing is that when I first saw it working, I was like, okay, this is what we need, right? I was just immediately buying into the vision. I said, okay, this is awesome. So let's shift to that. Because when, you know my first Gutenberg website, the production website was built when it wasn't even in core. Like it was still the plugin. There was nothing out there, right? It's just a wasteland <laugh> a wasteland of tutorials. Like really nothing. So I said, Hey, this is gonna be a good opportunity, you know, to share this because I want to be part of that success, right?

Fränk (00:56:19):
I want to help make this accessible because I think it's definitely a need for it. And so I had just a few articles and then I shifted to a course when full site editing kind of became ready. So that is now called the Block Theme Academy. But it has changed a lot because in beginning it was very much the course was sequential because you built a block theme, right? You started blank canvas and step by step by step. And the theme you built was called Le Corbusier, it was something that I designed, was just horrible,but it taught you everything. You know, that big picture, how need to shift your thinking to how this works. And so when 5.9 came out, I shifted to: Hey, you're gonna build the Twenty Twenty-Two theme from scratch. And I thought, this is awesome, because in my view, always look at the default themes because it's all of the new features that get introduced, they get used in there on the large scale.

Fränk (00:57:15):
So if you wanna look at how to use something, that's the place to look to see if it's in there. Again, people don't want that. So I'm like: Hmm, okay, what can I do now? And so that's when it came to me that: really what people need is not somebody who teaches them how to build just a block theme, but really how to apply all of these things to their current situation. And so, what do I know? I know agency work, right? I know that very well. I know blocks very well. And again, it goes back to what I said previously about, you know, Human Made building stuff and we think nothing of it. A lot of the things, which I consider just the most basic things that, you know, I do every day, people don't know that you can restrict the blocks per editor, per user role, per custom post type.

Fränk (00:58:01):
I mean, to me it's obvious, but you're like, you can do that? I'm like, yeah, you can do that. Like, and that's when I really had the idea of to make the Block Theme Academy very much more for agencies and freelancers so that it still teaches how to build a block theme. Because that's kind of the, you need to get to that end result to really flip your head away from how you've been doing things to seeing, okay, this is how it works now. But once you understand that, so this is actually the first section of the course. Then everything is introduced apart, you know, the settings, the styles, the editors, the blocks, all of that in individual pieces. Then there's a whole section on: I can't build a block theme, what hybrid solutions do I have? So that's the Block Theme Academy.

Fränk (00:58:44):
And then after that—so that's something which I recommend that you should probably do before you go to the next step, because I think a lot of people just, they skip right into: "I want to build custom blocks", and they don't understand like the whole framework around it. Like the big picture, they don't get it. And when, you know, then they complain about why it's this, this way and that way it's like, yeah, it's because this, the block just fits into all of these other things. Like it's, it's one thing, it's one harmony. And so for the for the block development, that's a bootcamp, the Block Development Bootcamp. So in here you really are working with me one on one. So that's still the course part because, you know, showing you how to build the blocks you know, there's no benefit of me doing it live.

Fränk (00:59:28):
But then you get an assignment, it's that you need to come with one block or more blocks from your actual agency work. Like you need to have the idea, you need to plan it out. And then we get into creating it. And so that's kind of the way that approaches is very, very practical. So you need to do homework. So I review the things that you give me. I do code review. We have one-on-one calls. So that's really the whole program. And the idea is not to, what some people expect is that I'm gonna teach you everything about block development. I'm just like, this is such a huge space. It's just teach me WordPress. I mean, there are things in that I never touch and I don't need to. So it really needs to be something that fits your need. So it's really the, the whole program is just meant to give you confidence with it, show you the tools, show you the processes, show you the approaches, and make you self-sufficient so that when you leave it, even if it changes because it's phase two or phase whatever, you know where to look.

Fränk (01:00:26):
Because one part we spend a lot of time on is: oh, I need to have this component. Where do I find it? I say, well, you find it in interface, then you go to source control, you look into the react developer tools, you find out where it is, you go into the GitHub repository, right? So all these tools, which nobody ever explains to people. And that's kind of the the approach that I take. So those are the two like direct teaching products. And then I also do a consulting one-on-one with, with agencies. But that's something where you need to have a specific problem, right? Also one plugin company. But here, I think it's much, it's much beyond blocks. It comes more, again, it's something that I consider just normal, but you have agencies that do one big PR with five random features, <laugh>, which are just in there because for whatever reason, right?

Fränk (01:01:13):
And nobody does peer review and they don't have CI running and they don't have unit tests. And then they get to the point where it's just—things start to fall apart, they lose control. And that's a big part of the consultation. Say, Hey, you know, like one PR needs to be atomic needs to have good commit messages, there needs to be peer review, you need to have coding standards, unit tests. So that's something which I also do. So, but here you need to be at a point where usually these agencies, they want to enter the enterprise market, but it's like like an invisible bump that they just hit their head against, right? I'm like, well, if you want to do bigger projects, you cannot get around having proper development processes. Other people which came up with that stuff, like, I didn't invent it.

Fränk (01:01:59):
Like the software industry has been around for ages. Testing has been around for ages. There is reason, like why you do it when you do it. Pull requests, you know, code review, all of that. And just, I think that once you get over that hump—also some people are just, they think I'm crazy when I tell 'em how to secure that code. They're like, 'well, but I don't need to escape this unless'- you always escape <laugh>. They're like, why? I'm like, well, it's not a why, you know, if it's escaped, it's secure. If it's not escaped, it can be insecure. Right? All these things which sanitizing input, some people just don't sanitize input at all. Right. And they're like, well, nobody ever told me to. I'm like, that's definitely on us, right? I mean, it's in the handbook and it's everywhere, Because they might even copy paste code of existing plugins.

Phil (01:02:45):
Yeah. No, I, I was just thinking, you know, ACF last year we had an episode where a lot of their code examples were not escaping their-I think there's a lot of assumptions that maybe that was happening you know, in the field or get the field or whatever it was. I think we were all assuming it was happening a little bit upstream, and we had to find out it wasn't. And then all of their examples weren't escaping any of their, you know stuff. And yeah, I mean, the amount of times, you know, I've copied and pasted not understanding that, and then, you know, have to go back and really fixa lot of codes that way. So, yeah. Yeah. This sounds really refreshing, cuz I mean, as someone who's, you know, Googled, you know, build block themes, build blocks, and I've basically found half a dozen tutorials that essentially land me on making a less useful paragraph, dynamic block, <laugh> and then not feeling any smarter about it. It has not left a good taste in my mouth for courses, but this seems pretty holistic in your approach and very refreshing. Especially if it's designed for you know, you're saying agencies, but I would say if you're a developer, if you're just a developer building things for you know, WordPress and you're trying to do it modern, it sounds like these courses would be very beneficial to you.

Cory (01:04:00):
So I know that we're stretching the limits of our time. I don't know if you've got places to be, but I would love to get into <laugh>. I'd love to get into one other topic that's very intriguing to me and that you know, to be upfront and honest about it, I don't have a, I have a little bit of experience in, but you know, it's not something I do very often. A lot of what we've been talking about here has been, you know, doing things The WordPress Way, but not in a, you know, in a sar sarcastic way, right? Like, there's some things that are done that way just because, as we've talked about, they need maintenance work <laugh> to bring up to speed. But I'm, I'm talking more like okay, using Gutenberg, you know, and that kind of idea and blocks the way they're intended, right?

Cory (01:04:50):
That's kind of, that's the new WordPress way, right? But there's another topic that I've seen you talking about recently on Twitter about custom database tables. And you know, I find that interesting because part of the whole concept of The WordPress Way is also to not as often, you know, as much as you can not do custom database work, or at least it seems that way. And instead, you know, here are these APIs for creating custom post types and, you know, handling everything in the post table. And I hear that you have a different idea about that.

Fränk (01:05:36):
Yeah. So, but again, that's kind of the topic which I've spoken about before, it's very, very controversial. I mean, talk something bad about ACF, like you're dead in the water anyway, people will just wanna kill you, then let's talk about something like post meta, right? If you say anything bad about it, people just gonna come for you, <laugh>. And so the thing is always that I think for me, pragmatism is very important. Like is one of the things that actually, you know, made me good at my job. So I'm saying if you like, the thing is that even, let's say you have a site and just uses post meta like the wrong way as I would say it and it gets some traffic, even shared hosting in WordPress nowadays, it's so ridiculously overpowered that you're not gonna have a problem.

Fränk (01:06:19):
Right? So the thing is that if that's the case, you get by with a lot of things. But again, when we talk about going into the enterprise or—it is a weird word, but if you, if you build sites that get traffic, right? Like significant—I'm not talking like New York Times traffic, but like serious traffic, then it just, it comes a point where just your server bills are gonna spike and then it comes to a point where it just falls over because there's just, you know, if there are inefficiencies in the system, you can throw resources at it for a certain time. And then at a certain point, does your server just fall over dead? And so the thing is that when we talk about WordPress, again, this is one of the things which they never addressed. So WordPress started out with a great data model for a block and even a great data model for CMS.

Fränk (01:07:13):
And they had, you can argue about the APIs if WP_Query is a really good API, the the post model thing, but straightforward enough that people understand it. So that was fantastic. Then at some point, the project, I don't know who ,decided that they're not gonna add any more tables. So you have only so many tables in there. You have new stuff. So you find the table that it fits in. And that was wp_posts, right? So like WordPress stores, of course your articles in there, which makes sense. Then it's kind of, well custom CSS in there, menu items in there, wp_templates in there, wp_template_parts in there. Embeds, I think, or there's cache and meta, I don't even know, but it's just this, wp_posts just became everything, you know; if it's not used a the term or an option, it goes into posts.

Fränk (01:08:07):
And so, posts though, it's not a bucket that's big enough for you to fit all of the stuff because they're limited, right? It's a database table. So they're like, okay, what is the overflow for my bucket? While it's post meta? And post meta is even better because it's a free for all. People are like, well this is pretty awesome <laugh>. So they put everything in post meta, then WordPress says, Hey, you know what? Well, at a certain time, it was still in my time where they introduced that to say: Hey, you can query against post meta. Like officially. People are like "awesome". And yeah, it sounds too good to be true because I don't know if you ever worked with a DBA. I had the pleasure of meeting a few, like the DBA, their only job is to design the database, and WordPress is like, who needs that?

Fränk (01:08:48):
Right? Because it all works, obviously. And then we found out, well it doesn't work because post meta is just, when we go down to the foundations, WordPress uses SQL, it's called the structured query language, right? Post meta is just—the value is text, long text.

Cory (01:09:07):
Right. A string.

Fränk (01:09:09):
So, which is not how SQL works. The thing is you have different fields, which are a different type, and the queries that you can do. I mean, your bank runs the stuff on SQL, like so many companies run stuff on SQL, it works fantastic. And we think we don't need it, we'll just query against text. So that's the kind of problem where any, that's kind of the, the big hurdle to get over if you get into the enterprise world. You see so many things out there which are normal and like "everybody" uses it, but as soon as you do it, it just doesn't work. Like I'm sure there's a post counter plugin on wordpress.org that just on every page writes to post meta how often the post has been viewed. Yeah, probably. And people are like: "it works awesomely" and we are like, eh, you know that the page probably from comes from the edge cache.

Phil (01:09:57):
I'm gonna let you know something I have, I have written that script that has done that, like, like years ago. I have definitely like, oh, I need a most popular post. Well, every time someone views it, let's just do a little ticker. It goes to post meta <laugh>. I'll just query on that. And yeah, like I'm not proud of it <laugh>, but it happened,

Fränk (01:10:16):
Right? But that's, that's because it's not, if you were to say, look, post meta's really for all the stuff that doesn't fit into wp_posts, right? Sure. You need to have that information. You put it in there, people would be like, yeah, I understand that, but it has just become this free for all. And that's, I think the kind of the danger of the ecosystem comes around is that cuz WordPress, you already are removed from what it is that you're dealing with. And to my surprise, you know, whenever a site is slow, what I do Query Monitor, I look at the queries, they're like, oh, like queries. And we're like, yeah, you know, underneath all of it, in the end it is a query. So they don't even understand that. But then there's a level on top where it's a plugin that you don't even know where it goes and the plugin tells you, Hey, I have a related post feature, like post to post relationships works fantastic.

Fränk (01:11:06):
You're like, awesome. Like I'll pay 69 bucks, whatever it costs. Sure. And they're all problems solved and then it is really not. And to explain that to somebody is, is really hard. And so that's I think the, the big disconnect for, you know, if you work in a normal agency and you are a senior in the, I dunno, normal is maybe a bad word, but if you work on low traffic sites and you're a senior, you know, really everything, you come to an enterprise, you're maybe a junior if you're lucky. Because you have so many things to learn, like people don't know what an edge cache is, probably don't have an edge cache, you know, the whole hosting deal. Then it goes to, well the big sites all use Elastic, right? And they're like what's Elastic? And then like all these things, right? And just, there's just a, a big disconnect between how the enterprise does it and which is the right way to be performant under traffic and secure. And then where the rest is, then it's not really great for the developers if you think you know it and then you get to a point where you, you find out you really know nothing and also for the clients aren't great.

Cory (01:12:09):
That's my entire career, honestly.

Fränk (01:12:13):
Yeah. Which is normal. I mean, but if nobody tells you like it's the unknown unknowns—

Phil (01:12:18):
Is that like the Dunning-Kruger effect or something. Yeah, totally.

Fränk (01:12:22):
But the other part is more that, as you said previously, your client comes like, I wanna use this plugin. You're like, no, and then you're the party pooper who doesn't want this plugin because of whatever, you know, whatever.

Phil (01:12:33):
You don't want a quick solution. It's a, it's a $60 solution. You're saying it's gonna take you 40 hours to develop it. That's gonna be thousands of dollars and you know, why can't we just hit install <laugh>? Yeah, no, I, you know, years ago I had, you know, a ginormous site, tens of thousands of posts, multisite and yeah, I eventually had, I hooked it up to Elastic and had to start doing indexing cuz it was just becoming a nightmare that they do certain tasks in WordPress. And that was my first foray into, you know, trying to figure out a more correct way of handling large amounts of data. But it is amazing how much you can get away with <laugh> on smaller websites. <Laugh>.

Fränk (01:13:09):
Right? But the thing is also when you, when you then come, so I've been a project lead on a lot of stuff. And so then you, you have this requirement for post to post relationships. You have a two choice use Posts 2 Posts, which somewhatish works and you're like, nah, if it's just like one or two features that users not gonna go through the headache of that. And so then what you do, so, what would be an example? Okay, so we built a website for a UK newspaper, like huge newspaper, straightforward: articles are posts the main navigation are categories underneath subcategories. Great. We get to sports. They're like, well, sports is different because there's football, they're like, okay, so when you are inside of sports football, there is a club navigation. So all the clubs in the Premier league are there and they needed to have capabilities to like write, like build these pages essentially. So would need to be a custom post type. But they also want to show all of the articles which they wrote about a football team on that page.

Phil (01:14:06):
They were related to it. Yep.

Fränk (01:14:07):
Classic solution would be, oh, post meta. We'd be like, no, like we need to have a different solution. Then it's a shadow taxonomy. Essentially the way it works, you have a private taxonomy and it shadows the post type. So you create a new post, new term in the taxonomy. Right. Delete it, change it. So the taxonomy just follow whatever the post type does and that way they just create new football team, people will fill in the info and then on the other screen, if they select sports and then they select football, the UI pops up and they just see the terms. And that's how WordPress knows, you know, what's related to Arsenal and it'll pull whatever is in there, which is if you're explaining to people like that, yeah, I mean it makes sense, but the first time you hear they say, you, you're totally bananas. You know, why would this need to be this way? I'm like, well it works perfectly.

Phil (01:14:52):
No. Yeah. I mean, I exactly what you described, like, you know, I'm working through how I would maybe think about building and yeah, you would maybe, let's say you're using a ACF or Posts 2 Posts or just doing some kind of hand rolled system, you know, I would think like, okay, yeah, I'm gonna just relate the post to the other post type and I have like a bidirectional you know, relationship, but now I'm querying all of the articles every time I need to find you know, the relationship, you know, on either or. And it's like, you know, adding a whole bunch of overhead that is, you know, the idea of a shadow taxonomy it makes, you know, a lot more sense, but then you have to like do this like, you know, making sure everything stays up to date and is like working with each other. But yeah, it's like a way more elegant solution than just trying to do either a one to many or trying to figure out how to relate them to each other.

Fränk (01:15:39):
Well the thing is that you need to do all that work. The beauty is the shadow taxonomy means maybe like the whole architecture is maybe 300 lines, 250 tops. Yeah, sure. Right. So I'm like, hey, 250, I can bang these out in like an hour right? <Laugh>. So, you know, it's just, yeah. When you have the concept, you've done it once, now it's a tool in a tool belt, right? And you see situation, you are like—I'll give you an example. Oh yeah. TechCrunch has developing stories where they start with the story and then you, you know, they need to attach other posts in there. And TechCrunch has this, like, they call it the river where it expands in line. So usually it's just one article, but when it's a developing story, all of the articles expand in the river. They need to be sorted. Well, we see the design, what do I do?

Fränk (01:16:22):
Of course shadow taxonomy works perfectly, right? I take the same code <laugh> previously, change a few things and then, you know, it works, it works beautifully. But it's just, it's the thing where we can be proud, how clever we are, you know, and how this is all super performant, but really though it again shows that WordPress should have had object to object relationships for a long time and it just didn't do it. Because if that would have been the case, we wouldn't have to do these weird solutions with, you know, shadow taxonomies and people would even, they wouldn't even do the post meta thing if there were better like, solution inside of WordPress. That's, I think the, the most egregious part about it.

Cory (01:17:02):
I'm, this is, this is gonna have me thinking for a while. I, yeah. If I distill that, I feel like maybe the, the takeaway, at least for temporarily for the time being is if you can handle it via taxonomies instead of post meta, you probably should. All right. Well, we're really over time now, so unfortunately I'm gonna have to cut us short. But this has been a really fascinating conversation. I'm very glad that you reached out to us to talk about some of these things that we haven't really talked much about yet on the podcast. So I really appreciate you bringing this, you know, this perspective here. And you're gonna have me, you're gonna have me rethinking, you know, <laugh> how, how I'm doing the next project. So hopefully maybe we'll have you back to talk about more stuff cuz there's so much more that we wanted to talk about.

Phil (01:17:53):
Yeah, if you'll have us, we'd love to have you back, probably Fränk <laugh>.

Fränk (01:17:57):
Well, thank you for having me, it was a great conversation, especially to hear, you know, I like to keep up on what people are struggling with.

Cory (01:18:08):
That's all for this episode. Thanks to Fränk for reaching out to talk about some things that we don't really hear enough about. If you've got something to talk about, reach out. But first, follow Fränk on Twitter as @fklux and @wpdevcourses. Check the episode description for links to things we mentioned in the show. In particular wpdevelopment.courses. There is an affiliate link in the description if you want to take a course and you'd like to support this podcast while you do it. As always, don't forget to send your questions, thoughts, and fan mail to [email protected]. You can also find us on Twitter, Instagram, and TikTok as @InTheLoop_WP. If you're interested in having a WordPress website custom-built or you want to join a team that does that, head over to our site at blackbird.digital and drop us a line. Thanks for listening to In The Loop. See you next time.

28: Writing Block Themes with Justin Tadlock

Clips Links (02:07) Justin on Ryan Welcher’s Thursday Twitch Streams: https://www.youtube.com/watch?v=3d6tqqlBVvo (04:50) Archived version of themehybrid.com: https://web.archive.org/web/20191101014914/https://themehybrid.com/ (05:23) Justin’s writing for the WP Tavern: https://wptavern.com/author/justintadlock

View Episode

Let's talk.