Caching Across Layers in Software Architecture

The purpose of this article is to help readers understand what is caching, the problems it addresses, and how caching can be applied across layers of system architecture to solve some of the challenges faced by modern software systems.

This article is aimed at software developers, technical managers, software architects, test engineers, or anyone else interested in understanding how the cache can be used in software systems.

Data Mesh — Graduating Your Data to Next Level

Data Mesh is fast emerging as a serious architecture pattern to look for in the field of data. I will stop after saying 'field of data' rather than extending the 'data' to data science, data engineering, data warehouse, and all such kinds of buzz words. We in IT have the habit of creating buzzwords and then following them. I just want to focus on something other than just the buzzword. The reason for this is Data Mesh has the potential to completely change the way we handle and look at our data. This will have an impact on all areas where data is the critical element.

Report Card For Current Level of Data

Before we graduate our data to the next level, here is a quick summary of progress or a report card of the current level of data. The diagram below shows how data is normally handled in today's IT systems.

Tutorial: Build a Simple Rust App and Connect It to ScyllaDB NoSQL

ScyllaDB, an open-source database for data-intensive applications that require high performance and low latency, is an excellent match for Rust. Similar to the Rust programming language and the Tokio framework, ScyllaDB is built on an asynchronous, non-blocking runtime that works well for building highly-reliable low-latency distributed applications.

The ScyllaDB team has developed the scylla-rust-driver, an open-source ScyllaDB (and Apache Cassandra) driver for Rust. It’s written in pure Rust with a fully async API using Tokio. You can read more regarding its benchmark results, plus how our developers solved a performance regression.

Java’s Encapsulation – When the Getter and Setter Became Your Enemy

Encapsulation is the key to a good code design, but how to archive it? Java developers automatically think about putting getter and setter in a private attribute. 

The encapsulation is a wrapping up of data under a single unit. It is the way to protect the data with OOP and avoid any security issues. The main idea around encapsulation is the data's guardian or a shield from being accessed by the code outside this shield when it makes sense. 

MySQL to DynamoDB: Build a Streaming Data Pipeline on AWS Using Kafka

This is the second part of the blog series which provides a step-by-step walkthrough of data pipelines with Kafka and Kafka Connect. I will be using AWS for demonstration purposes, but the concepts apply to any equivalent options (e.g. running these locally in Docker).

This part will show Change Data Capture in action that lets you track row-level changes in database tables in response to create, update and delete operations. For example, in MySQL, these change data events are exposed via the MySQL binary log (binlog).

MEAN vs MERN Stack: Which One Is Better?

While talking about the word “Stack” can be described as an amalgamation of the tools and technologies used to build a particular software.

The technology stack, also known as the Solution Stack, comprises the programming languages, frameworks, databases, and front and back-end technologies that collectively help in running a project/application successfully. All these tools, when used together, make up a full stack.

How to Improve Customer Relationships with Website Intelligence, Status Pages, Incidents Reporting

This post is originally published on Designmodo: How to Improve Customer Relationships with Website Intelligence, Status Pages, Incidents Reporting

How to Improve Customer Relationships with Website Intelligence, Status Pages, Incidents Reporting

Websites are undoubtedly the cornerstone (or corner store) of online businesses. The technology used to monitor, understand, and optimize their performance, however, has been rather stagnant until more recently. The emergence of Website Intelligence is seeking to put an end …

For more information please contact Designmodo

#32 – Daisy Olsen on Why You Should Try Out Block Themes

On the podcast today we have Daisy Olsen.

Daisy works for Automattic as a Developer Relations contributor on the WordPress Project. She’s been working with WordPress since 2007 and during that time has worn many hats, including speaking at WordCamps in New York City, Boston and Chicago, as well as helping to organise the first WordCamp Boston in 2010.

I met up with Daisy at the recent WordCamp Europe to discuss the newly arrived block themes. She was giving a workshop there in which she taught attendees how to create a block theme from scratch. As you’ll hear in the podcast, it was a great success.

We talk about what a block theme is and how it differs from the ‘classic’ themes that have been used in WordPress in recent years. What are the advantages of moving over to block themes, and what additional features and functionality do they present for WordPress websites?

As block themes are new, we get into how there’s still a lot of work to be done to make the experience of working with them as easy as it might be, and where those improvements are most needed.

We round off by talking about the new technologies that need to be learned, and whether or not you need new tools to get up and running with block themes.

Typically, when we record the podcast, there’s not a lot of background noise, but that’s not always the case with these WordCamp Europe interviews. We were competing against crowds and the air-conditioning. Whilst the podcasts are more than listenable, I hope that you understand that the vagaries of the real world were at play.

Useful links.

Daisy’s website

Block Editor Handbook

Theme Handbook

Full Site Editing website

Transcript

[00:00:00] Nathan Wrigley: Welcome to the Jukebox podcast from WP Tavern. My name is Nathan Wrigley. Juke box is a podcast which is dedicated to all things WordPress, the people, the events, the plugins, the community, and in this case block-based themes.

If you’d like to subscribe to the podcast, you can do that by searching for WP Tavern in your podcast player of choice, or by going to WPTavern.com forward slash feed forward slash podcast. And you can copy and paste that URL into most podcast players.

If you have a topic that you’d like us to feature on the podcast, I’m very keen to hear from you. And hopefully get you or your idea featured on the show. Head to WPTavern.com forward slash contact forward slash jukebox, and fill out the contact form there.

So on the podcast today, we have Daisy Olsen. Daisy works for Automattic as a developer relations contributor on the WordPress project. She’s been working with WordPress since 2007. And during that time has worn many hats, including speaking at WordCamps in New York City, Boston and Chicago, as well as helping to organize the first WordCamp Boston in 2010.

I met up with Daisy at the recent WordCamp Europe to discuss the newly arrived block themes. She was giving a workshop there in which she was teaching how to create a block theme from scratch. As you’ll hear in the podcast, it was a great success. We talk about what a block theme is and how it differs from classic themes that have been used in WordPress’s recent past.

What are the advantages of moving over to block themes and what additional features and functionality do they present for WordPress websites? As block themes are new, we get into how there’s still a lot of work to be done to make the experience of using them as easy as it might be. And where those improvements are most needed.

We round off by talking about the new technologies that need to be learned and whether or not you need new tools to get up and running with block themes.

Typically when we record the podcast, there’s not a lot of background noise. But that’s not always the case with these WordCamp Europe interviews. We were competing against crowds and the air conditioning, and whilst the podcasts are certainly more than listable. I hope that you understand that the vagaries of the real world were at play.

If you’re interested in finding out more, you can find all of the links in the show notes by heading over to WPTavern.com forward slash podcast. And there you’ll find all the other episodes as well. And so without further delay, I bring you Daisy Olsen.

I am joined on the podcast today by Daisy Olson. Hello Daisy.

[00:03:19] Daisy Olsen: Hello. So nice to be here with you today.

[00:03:21] Nathan Wrigley: Thank you so much. Joining us in the Super Bock Arena, we’re actually at WordCamp EU 2022, and you’ve had a workshop or have?

[00:03:32] Daisy Olsen: I had it yesterday, yes. Watch for that video to be made available at some point on WordPress TV.

So I took a group of about 80 people that signed up for this workshop through the process of creating a very simple block theme from nothing. We created it from scratch.

[00:03:52] Nathan Wrigley: Did you get some interesting insights?

[00:03:54] Daisy Olsen: A few, yes. There are things yet to be worked out as far as making the process smooth. But we did indeed actually manage to get a working theme activated and installed on a site, in two hours.

[00:04:09] Nathan Wrigley: Yeah, I wondered if it was a two way process. In other words, you were obviously trying to educate the audience, but also maybe there’s the reverse process where their failure or lack of failure, their success, that’s a better word, indicates to you that either things are working or need to be looked at in the future and you can feed back that to the relevant teams.

[00:04:26] Daisy Olsen: Absolutely, and that’s a big part of my role is to, as a developer relations, and a developer advocate in the community is to work with the developers and also bring that feedback to the development team so that they can make it actionable.

So if we find the same problem is coming up again and again, a pain point or maybe a workflow issue or a UI issue where people getting stuck, then that’s something that I can then bring back and figure out what’s next.

[00:04:57] Nathan Wrigley: Eighty people as well. You must have been pleased with that.

[00:05:00] Daisy Olsen: It sold out very quickly. I think a lot of attendees are quite interested in the topic.

[00:05:04] Nathan Wrigley: Okay, so I’m imagining the reason for that is for the longest time, themes have been themes have been themes. There’s just been themes, variety of different themes, but they’ve all behaved in similar ways. Until very recently when a new theme type came on the horizon and we’ve got now a block based theme.

I’m imagining that most of the people that are listening to this podcast have not come into contact with it. I could be wrong about that, but the listenership is fairly broad. So I think we need to do a job of saying what a block based theme is. So I’m gonna hand that over to you. What is a block based theme?

[00:05:39] Daisy Olsen: All right, so you’re right, the themes, as we know them have stayed the same since around, I think it was 2005 that the themeing engine was introduced to WordPress. And before that we had, it was just a template effectively. Like you could hack it, and you could change the CSS, but it was effectively changing Core files.

So we introduced the theme engine, which has remained basically the same ever since. So we have hooks and filters and actions and all of the things that we’re used to working with the PHP for WordPress. And you can take that first default theme that came with, it was called, I think it’s just called default, often referred to as Kubrick. You can still install it today and it’ll still work.

So we have a long history of backward compatibility, but now we’re introducing this new way of considering themes as being blocks. So we work with blocks in our content and we’ve grown accustomed to that over the last five years, four years, something like that. And now we’re starting to move out of just the content area into the other parts of the site. So you hear a lot about full site editing. Block themes are in addition to that.

So full site editing allows us to work within WordPress as our development tool to build the entire site, not only the content area. And this is really it’s really exciting, but it can also cause some nerves because it’s such a different paradigm from what we’ve had in the past. So instead of having a header and a footer file, well, now we will have something called template parts.

we have had template parts, but they were an unofficial thing that was used frequently in theming. Now it’s really integral to the theme engine. If you want to have a sidebar, instead of having a sidebar that you register, as we have done in the past, now you would just have another template part that you would place in a sidebar or wherever else you wanted it to be.

[00:07:38] Nathan Wrigley: Yeah. it’s quite a big change and whilst it’s not irreversible, it is toggleable. And what I mean by that is, if you go down the route of block themes, then you are gonna be using a block theme during the time you’ve got it switched on. There isn’t a, we’re gonna use the term classic theme. You can’t mix and match classic themes on the same site at the same time, but you certainly can use classic themes on a site and use the new block based themes, but you have to choose one or the other at any particular moment.

[00:08:09] Daisy Olsen: Well, yes, however you can have what’s called a hybrid theme that will include both elements of the classic theme engine and also the block theme engine. So if you have a site that you wanted to adopt block theming gradually, there’s a mechanism to come in more slowly. You can do as little as adding a theme dot json file to activate the template editor, and then you can create full site templates for your site. So you, it’s a new way of creating custom pages.

Or you can activate the site editor with a directory in your theme that’s called templates and then an index.html. The gotcha there, of course, is that you are then replacing your index dot PHP file with blocks. So that would be the first thing that you would convert. But all of your other PHP templates would remain intact until you replace them with an HTML file.

So what it means is you can not have to go all in.

[00:09:05] Nathan Wrigley: Yeah.

[00:09:05] Daisy Olsen: You can adopt it gradually, which I think is a huge win because it’s hard to change your tooling and not all of your clients, if you’re working in an agency setting are going to be ready for a full redesign, but they might be ready to start to move in that direction.

[00:09:20] Nathan Wrigley: So just to be clear, there is still, and there, as far as I’m aware, there always will be backwards compatibility. The theme that you’ve got last year will always work. So the sky is not falling in. Don’t worry.

[00:09:32] Daisy Olsen: No, there is no plan to fully deprecate the existing theme engine.

[00:09:37] Nathan Wrigley: So we can still use Kubrick? That’s all I needed to know. So, on a high level, give us the one or two advantages, which you’ve perceived over the last few years, not years, months, about going to block based themes. In other words, if I’m a regular WordPress user, I’ve got a theme it’s being updated. I’m happy with it. It’s secure. What are the compelling reasons why you would say, at least go and have a look, go and explore block based themes. Sell it to us.

[00:10:02] Daisy Olsen: So I think the number one benefit would be rapid development. You can start really quickly. If you understand how to use the block editor in WordPress, you’re probably gonna be okay creating a theme because the majority of the work is actually done within WordPress. There is some other work still that you do manually in, theme dot json, and you may still end up using custom styles because you can’t do everything from a configuration file.

But the majority of it is just creating your blocks. Not creating blocks, like the block would already exist on your site, but to use the blocks that are available to you in your site. And a big question often is, do I need to know React in order to do this? And you absolutely don’t If you’re going to work on Core WordPress and you’re gonna help create WordPress itself, then React is pretty useful. But you can actually do a lot without very much or any React knowledge, especially in the theming area.

[00:11:01] Nathan Wrigley: You touched earlier upon the parts of a WordPress theme, classically, you mentioned the header and the footer, and whilst for developers, those are very much in play for most users., I imagine it was just a case of you picked a menu item and the theme chose where that would go and so on and so forth.

Yeah. That’s all up for grabs now, because it’s block based, you can put it literally in the middle of the content, if you want. So you can put anything, anywhere and surround it by anything. You could put buttons above the menu, below the menu. Text here, there, and everywhere. In other words, it’s completely up to you, what you do with it.

I don’t know if that point ever got through to me until I started playing with it. But just the idea that you could literally build your header with any block, put anything, anywhere. I mean, images in the header, who knows why, but you could do all of that.

[00:11:48] Daisy Olsen: Yeah, in fact, so the theme we created yesterday was the 2010 theme. And it does have an image in the header. You can change it, but it is there. And. I don’t know, some people might like to have an image in their header.

[00:12:02] Nathan Wrigley: Yeah. Yeah. Why not? But the point being that image could be anything else. Just imagine the array of blocks, which every time you open the block inserter, all of those can be into play, and I guess traditionally, you’re just gonna be going for something like a navigation block.

Let’s talk about the UI. Where we’re at the moment. Because when I last played with block based themes, I was caught a little bit short by the way it was set up. Because we are very much used to the appearance menu item in the WordPress admin area. All that’s gone. Now we just have the option to edit the theme. We are left with all of those things that we’re familiar with, selecting menus and things like that. All gone.

You now do it inside of the block editor. How do you feel all of that’s going? How do you feel that the UI for all of that is progressing? I know it’s a work in play. Today it will be different from next week, probably by the time this podcast goes out, there’ll have been changes made, but it feels like at the minute, almost like a more difficult thing to use than what we’ve got at the moment.

[00:12:59] Daisy Olsen: I think that there are some benefits. I think that it’s coming a long way very quickly. There are some things that it takes a minute to figure out exactly how to work with it. Sometimes there’s a little frustration. It’s new. Anytime you have a new user interface, it’s going to take a little while to get used to it. And honestly, the design teams on the project are always working to make it more intuitive. To remove as much friction as possible.

And I think that it’s come a long way. An example of that is if you’re not using this, you definitely should. The list view on any block editor screen to open that, and you can get a, like a tree view of where all of the blocks in your editor. And this is available in content areas. It’s available in the template editor. It’s available in the site editor. I use it always. It is how I select my blocks before I start working with them, so.

[00:13:52] Nathan Wrigley: The muscle memory has now kicked in for me so that’s never closed. It just seems pointless not having it there. I guess the only constraint would be the width of the view that you’ve got at that particular moment. Cause it does consume, a fifth of a typical monitor or something.

[00:14:05] Daisy Olsen: Yes, it does. It is fairly wide. And then if you also have the block side bar open then that takes up another bit of space.

[00:14:12] Nathan Wrigley: So you build out things like the header. Let’s just describe the way that looks. Let’s go for the navigation block. If you drop the navigation block in, to enable the sitewide navigation, where you decide to put it, doesn’t really matter, but we’ve got it somewhere in the top. Let’s say it’s in the header. How do you actually construct what’s in the menu?

[00:14:29] Daisy Olsen: You can add more blocks inside the navigation block. So what we have is if you’re familiar with group blocks or columns block, you can add more blocks inside of blocks. And that is basically the mechanism that we can use when working with the block editor to create really complex designs.

Once you’re familiar with what’s available to you, you can do a lot with it. But there is a learning curve. You start to learn like when you should use a row block or a column block or a stack block, or just a group. And what controls are available to you to make it the design that you want. And then it’s all built with some responsivity built into it. So it will usually gracefully collapse down into a mobile view.

[00:15:15] Nathan Wrigley: Have you noticed over time, I know that there’s a lot of flux and a lot of change. Do any of these blocks, have they changed periodically in ways which have broken things? In other words you’ve got a site today which is working and you view it a little bit later, things have updated, the block has updated now it’s not working in the theme in the way that you’d anticipated.

[00:15:34] Daisy Olsen: Yeah. The correct way to change a block’s markup is to deprecate the markup from that block. So it still will translate into its new version and not give you errors.

However, it is possible that a class has changed or something has changed that maybe a theme has tagged onto that could change the way that it appears. But theoretically, if the blocks are being modified in the correct way, and this is for both Core blocks and custom blocks, then they shouldn’t break on an update, but they might change an appearance a little bit if that sort of change happens. But for Core blocks, at least they make a really big effort to avoid that as much as possible.

[00:16:14] Nathan Wrigley: Yeah, that was another thought on my radar was the idea of proprietary blocks, which are not Core whether or not that might disrupt things. There’s no oversight into how they will behave over time. Maybe you’ll need to be contacting their support to figure out if they break things.

[00:16:28] Daisy Olsen: That is always a possibility. We do have best practices, but there’s nothing to say that they’re going to be followed.

[00:16:33] Nathan Wrigley: Okay. So yesterday you mentioned these 80 people, did you get all of them up and running?

[00:16:39] Daisy Olsen: I can’t say for sure. We didn’t exactly go around and check.

[00:16:42] Nathan Wrigley: It felt good though?

[00:16:43] Daisy Olsen: It felt good. Yeah. Yeah.

[00:16:45] Nathan Wrigley: Okay, so the next question here is the 80 people in there are probably not the typical users, because they’ve turned up to WordCamp Europe. They’re fairly into WordPress. Let’s put it that way. Do you get any sort of feedback as to how this is going for the more typical user?

And when I say the more typical user, what I actually mean is the non-technical user. The user who literally wants to log in, create a post, click publish, log out. It’s a business website. It’s something that they need to do, but they’re not necessarily interested in WordPress at all.

[00:17:14] Daisy Olsen: Sure. So I think that the bar is lowered for that type of a user to then be able to adjust things in their site that they never would’ve been able to before. Now, there’s maybe sometimes when you don’t want to give that type of user that control. If you’re the one that created a beautiful website for a client, you might not want them to be able to edit the design. But if you are working with, we could maybe call them a power user. As far as content creation goes, I would say that they would be able then to go into their header and make a change and not have to contact a developer for that.

But I think that most of the, like the ones that really want to just do their content, just write a blog post, they’re mostly using paragraph blocks and image blocks. They’re probably still gonna go back to their developer for a lot of those kinds of changes.

[00:18:05] Nathan Wrigley: If people were keen to learn, do you communicate with the Learn team? Are there resources being made or resources in the pipeline to help with all of this?

[00:18:13] Daisy Olsen: Absolutely. So there are a number of courses, workshops, videos, text based tutorials in the works. They are time consuming to create but they are in process.

[00:18:24] Nathan Wrigley: And I’m guessing that’s completely in flux. That they need to be revisited fairly regularly.

[00:18:28] Daisy Olsen: Yeah, things change. The Gutenberg plugin, which is what ultimately feeds into Core, updates every two weeks. So we have changes to things very frequently at that point. In Core, it changes every version, just like it always has, but it changes in batches in Core. So we see a lot of change all at once, but if you’ve been familiar with using the plugin, then you would see those changes more frequently and gradually.

[00:18:53] Nathan Wrigley: Now you mentioned that a typical user doesn’t need to modify any tooling. There’s nothing complicated here. You don’t need to get your head into React and all of that kind of stuff. But let’s say that you are a themer who isn’t yet to explore all of this, and you really wanna push the boundaries. Are there any new things that need to be learned in order to really make it your own and to really modify things and make it unique, and, well, let’s say commercial.

[00:19:17] Daisy Olsen: So if you really want to get started quickly and you could go and create all your files manually. It doesn’t actually take that many files to do it, but you need to know where to start. But if you’d like to get a little jumpstart on it, Carolina Nymark has created a tool to generate a theme. It’s pretty neat. And I believe that it’s at the um, URLs fullsiteediting.com.

And you fill in a form and then it creates the theme for you. You download it. So then you can have a starting point. And, you know, you work from the files that it gives you, you get a feel for what makes it tick. And you can make it your own.

[00:19:56] Nathan Wrigley: I’m guessing that you are in touch with the theming community pretty closely.

[00:20:00] Daisy Olsen: Yes. Yeah.

[00:20:01] Nathan Wrigley: So, how’s the feedback? Is there general excitement? Are we at that point where half of them are not sure half of them are excited? Where are we at now? I imagine a few months ago it was different. And a few months before that it was different and maybe the tide is going in one direction. I don’t know.

[00:20:15] Daisy Olsen: Yeah. So I think they’re all trying to figure out where they need to be. Obviously if you’re in the commercial theme market, you’re trying to make sure that you’re gonna be where you need to be when things change. And so I have talked to a few people that have been like, should we do this now? I have a hundred themes commercially available.

Should I be adopting block themes now? And my advice probably right now is to start working with them. Get familiar. It might not be quite ready to jump all in on it, but definitely be moving in that direction and you’ll be in good shape for when the tooling is a little more mature.

[00:20:53] Nathan Wrigley: So why is that? Is it because their users are not yet at the point where they’re happy to do that? Or is it just too experimental?

[00:21:01] Daisy Olsen: I would say that, so there is some effort being made into locking things down so that you are only giving access to the things that you want to give access to. This is particularly useful for agency work, where you might not want them to be able to go and do certain things. Like you might not want to allow them to use the color picker, for example. Or you might only want to give them access to certain colors in certain spaces. We can lock that. You might have block patterns, which are very cool. And if you don’t know about them, you should learn.

And you can lock the position of the blocks so that they maybe can’t be moved or they can’t be removed from the pattern, once it’s been inserted. So there is a lot of really interesting things coming and, it’s a good time to get familiar and then try to keep up with it as it changes. you can build a block theme now and it would work perfectly fine.

[00:21:56] Nathan Wrigley: How’s the theme directory shaping up with the new block themes. I know the numbers were very small and then more got added. I haven’t looked at it for weeks and weeks, so maybe it’s positive.

[00:22:05] Daisy Olsen: I don’t actually know the current number, but it has definitely grown. And we’re seeing some prominent figures in the community start to add themes.

[00:22:13] Nathan Wrigley: Yeah

[00:22:13] Daisy Olsen: Which is pretty exciting to see.

[00:22:16] Nathan Wrigley: What was your take on the default theme for WordPress? I think it was 5.9 becoming a block based theme. Some sort of pushback in the community. Suddenly there was this theme and if you installed a new version of WordPress, obviously the new default theme becomes the theme and that cognitive dissonance of logging into a website for the first time and, hang on where have all the items gone.

Where’s all the bits and pieces. I guess, at some point that needed to occur, but there seemed to be some sort of outcry of couldn’t we have just had this as a choice, as opposed to a every version of WordPress by default from now on will be block based.

[00:22:47] Daisy Olsen: I guess the choice is that you either drag it out or you just start. And they landed at just start. And I think there’s a lot to learn. I think that the theme that is default for WordPress is there in order to be a a learning tool. I mean, you can obviously use it as your design, but a lot of it is about demonstrating what can be done with your theme, almost like a playground.

So you can open up the files and see what makes it work. I learned some things from the 2022 theme that I would never have come up with on my own, but it was a creative solution to a problem.

[00:23:24] Nathan Wrigley: That’s a beautiful theme.

[00:23:25] Daisy Olsen: It is beautiful. I love the birds and black, very nice. And there are some other color schemes in there. And the other thing is that with 6.0, we added some new features. And they were integrated into the default theme. So now it still looks the same, basically behaves the same, but maybe some of the mechanism used to do some of the work have shifted into the newer version. So it has already even been updated.

[00:23:51] Nathan Wrigley: A little while ago, you talked about patterns and your eyes lit up. And the idea of patterns and themes is not one that necessarily occurred to me before. I’m thinking of, I ought to be throwing in just individual blocks and building on it myself. But of course the patterns could encompass all of the bits, preconfigured that you would need for a header say.

And I’m guessing that’s a space, which is gonna mature and people are gonna come up with header patterns and footer patterns and typical use patterns, which might fit beautifully inside of a theme.

[00:24:18] Daisy Olsen: Yes, so we have a pattern directory. That’s part of the wordpress.org network of sites. And these are users submitted patterns. You can create it using a block editor right on that site. They’re moderated, so we keep inappropriate content out of the system. And then others can use these patterns and it’s only Core blocks at this time. But if they want to use this pattern that someone else created, it’s very easy to pull it into their site.

And you can actually use the block inserter, right from your own site to pull in any of the patterns that have been shared in this directory.

[00:24:54] Nathan Wrigley: Yeah. I think that’s just a unique byproduct of the way I typically do things. I start with the blank canvas, and build it up myself, but the idea of short circuiting, that process. There’s a pattern looks good. Let’s try it out. Click the button. Nope. Next one. Try that. And you’ve just made a lot less work for yourself.

[00:25:09] Daisy Olsen: Sure. And then if you find something that comes close.

[00:25:12] Nathan Wrigley: Yep.

[00:25:12] Daisy Olsen: You pull it in and you modify it a little bit because it’s yours at that point.

[00:25:16] Nathan Wrigley: So the reason for using Core blocks is just so that everything is open, easy to use. I think in saying that any imagery as well is now gonna be coming from Openverse, so even that is admissible on a site, you don’t even have to think about, okay, let’s remove that and swap it out for something else.

[00:25:28] Daisy Olsen: Right? Yeah. The imagery has traditionally been a big problem for demo content to make sure that you have something that was both visually appealing and also legal to use.

[00:25:38] Nathan Wrigley: And just for the benefit of people listening to this, if you want to go and submit your photos, you can do that, at Openverse, I’m going to be submitting lots of pictures of WordCamp Europe.

[00:25:46] Daisy Olsen: I’d I love to hear that. That’s wonderful.

[00:25:49] Nathan Wrigley: Rich Tabor, who is a, he has been a very prominent themer over the years. He’s created some terrific work. He came up with this idea not so long ago of wouldn’t it be an interesting experiment? Would it be a good idea to just have one theme in the theme directory and he called it a base theme. The idea being that well, if there’s just a base theme, and everybody knows the base theme inside out, back to front.

Everybody understands what it can do, how it works, and then patterns drop in for everything in the way that we’ve been describing. And it occurred to me on some level that was quite a good idea, just a very light framework and everything then that drops in is patterns. And there could be a pattern for literally everything. What are your thoughts on that idea?

[00:26:36] Daisy Olsen: I have not had a great deal of time to think this through, but my hot take would be that in a way we are already doing that to some extent. Where the majority of our markup is being created by WordPress. So you could maybe think about it from the perspective that WordPress is creating that base theme.

And we are just building a version of it in our block theme. So you are setting up defaults and settings and presets in your theme dot json file. You are creating HTML files to build out your templates and your headers and your footers, your template parts is what we refer to them as. And then you might be creating patterns in a patterns directory.

Those are PHP files, but they’re quite simple, really to create. Most of it is actually HTML, but we still pull them in as PHP. Now we have a mechanism to actually register a block pattern from some header information in the file, and you don’t have to, it’s a simpler process. It’s more automated now.

But I think one of the beauties of block themes is the ability to create very specific niche, websites and themes and designs. And be very targeted in how you would market that design. So when I worked in the theme world, the number one question that always came out in our support forums was, you have all these themes, which themes should I use for this site?

And we always said well, you can use any theme because you make it your own, you add your own content and your own imagery and then it’s yours. But it was really not what people wanted to hear. They wanted to hear that this is the perfect theme.

[00:28:20] Nathan Wrigley: Yeah. That theme’s got pictures of houses on it. So it must be for real estate.

[00:28:24] Daisy Olsen: Exactly. So you can very easily market a theme, two different verticals pretty easily just by making a few changes, but having variations of that theme that might at its core, be the same one across the board, you’ve just changed the imagery, so it looks right for that market.

[00:28:45] Nathan Wrigley: You’ve sold it to me. It’s an exciting time. I’m guessing that you would like as many people as possible to get in there and create their own themes and possibly even contact you and find out what you’re doing. What is the best way to discover about these new block themes? Where would you point them one or maybe two URLs?

[00:29:04] Daisy Olsen: So I would start at the block editor handbook, and there are a couple of pages there about block themes as well as in the theme handbook. And these are all at developer.wordpress.org. These are a good place to get a primer.

I would also greatly encourage going to the full site editing dot com site, where Carolina has created some really great instructional content for stepping through the process of creating one of these themes.

[00:29:35] Nathan Wrigley: Thank you very much. It’s always nice to be at the beginning of something, seeing something starting and maturing over time. And, uh, you never know, maybe in sort of 10 years time, we’ll have a Kubrick moment when we move on to something else, but for now block based themes is the future. Thank you very much.

[00:29:48] Daisy Olsen: Absolutely.

[00:29:48] Nathan Wrigley: Thank you Daisy, for chatting to me today.

[00:29:50] Daisy Olsen: Thank you so much.

Introduction to JWT (Also JWS, JWE, JWA, JWK)

The security and privacy of users' data have been a growing concern for the past few years. At the same time, JWT, as one technology to combat it, has been used more and more. Understanding JWT will give you an edge over the other software engineers. JWT might seem simple at first, but it is pretty hard to understand.

In this article, we will explore mainly JWT and JWS. In addition, we'll also go through JWE, JWA, and JWK quickly. This article aims to make the reader understand the concept of JWT without diving too deep into the topic.

How I Chose an Animation Library for My Solitaire Game

There is an abundance of both CSS and JavaScript libraries for animation libraries out there. So many, in fact, that choosing the right one for your project can seem impossible. That’s the situation I faced when I decided to build an online Solitaire game. I knew I’d need an animation library, but which was the right one to choose?

In this article, I’ll go through which considerations I made, what to look out for and present you with some of the most popular libraries available. I’ll go through some real-world examples with you to illustrate my points, and in the end, hopefully, you’ll be better equipped than me when I first had to choose an animation library.

Your mileage with this advice may vary, of course. Everything I’m sharing here is specific to a thing I wanted to build. Your project may have completely different requirements and priorities and that’s OK. I think what’s important here is getting a first-hand account of thinking like a front-end developer with a particular goal.

Speaking of which, I do consider myself a front-end developer but my background is super heavy in design. So I know code, but not to the extent of someone who is a JavaScript engineer. Just wanted to clear that up because experience can certainly impact the final decision.

Here’s the goal

Before we get into any decision-making let’s take a look at the sorts of animations I needed to make in this CSS-Tricks-ified version of the game:

Pretty sweet, right? There’s nothing exactly trivial about these animations. There’s a lot going on — sometimes simultaneously — and a lot to orchestrate. Plus, a majority of the animations are triggered by user interactions. So, that left me with a few priorities heading into my decision:

  • Smooth animations: The way animations are applied can have a big impact on whether they run smoothly, or display a little choppiness.
  • Performance: Adopting any library is going to add weight to a project and I wanted my game to be as lean as possible.
  • Convenience: I wanted a nice, clean syntax that makes it easier to write and manage the animations. I’d even trade a little extra convenience for a small performance cost if it allows me to write better, more maintainable code. Again, this bodes well for a designer-turned-developer.
  • Browser support: Of course I wanted my game to work on any modern browser using some form of progressive enhancement to prevent completely borking legacy browsers. Plus, I definitely wanted  some future-proofing.

That’s what I took with me as I went in search of the right tool for this particular job.

Choosing between CSS or JavaScript animation libraries

The first thing I considered when choosing an animation library was whether to go with a CSS or JavaScript-based library. There are lots of great CSS libraries, many of them with excellent performance which was a high priority for me. I was looking to do some heavy-duty animations, like the  ability to sequence animations and get callbacks on animation completion. That’s all totally possible with pure CSS — still, it’s a lot less smooth than what most JavaScript libraries offer.

Let’s see how a simple sequenced animation looks in CSS and compare it to jQuery, which has plenty of built-in animation helpers:

The animations look the same but are created differently. To make the CSS animation, first, we have to define the keyframe animation in our CSS and attach it to a class:

.card.move {
  animation : move 2s;
}

@keyframes move {
  0% { left: 0 }
  50% { left: 100px }
  100% { left: 0 }
}

We then execute the animation using JavaScript and listen for a CSS callback on the element:

var cardElement = document.getElementsByClassName("card")[0];
var statusElement = document.getElementsByClassName("status")[0];

cardElement.classList.add("move");
statusElement.innerHTML = "Animating"

var animationEndCallback = function() {
  cardElement.classList.remove("move");
  statusElement.innerHTML = "Inactive"
}

cardElement.addEventListener("webkitAnimationEnd", animationEndCallback);
cardElement.addEventListener("oAnimationEnd", animationEndCallback); 
cardElement.addEventListener("antionend", animationEndCallback);

Having things happen in different places might be fine in a simple example like this, but it can become very confusing once things get a bit more complex. 

Compare this to how the animation is done with jQuery:

$(".status").text("Animating")
$( ".card" ).animate({
  left: "100px"
}, 1000);
$( ".card" ).animate({
  left: 0
}, 1000, function() {
  $(".status").text("Inactive")
});

Here, everything happens in the same place, simplifying things should the animations grow more complex in the future.

It seemed clear that a JavaScript library was the right way to go, but which was the right one to choose for my Solitaire game? I mean, jQuery is great and still widely used even today, but that’s not something I want to hang my hat on. There are plenty of JavaScript animation libraries, so I wanted to consider something built specifically to handle the type of heavy animations I had in mind.

Choosing a JavaScript animation library

It quickly became apparent to me that there’s no lack of JavaScript animation libraries and new, exciting technologies. They all have benefits and drawbacks, so let’s go through some of the ones I considered and why.

The Web Animations API is one such case that might replace many JavaScript animation libraries in the future. With it, you’ll be able to create complex staggered animations without loading any external libraries and with the same performance as CSS animations. The only drawback is that not all browsers support it yet

The <canvas> element presents another exciting opportunity. In it, we can animate things with JavaScript, as we would with the DOM, but the animation is rendered as raster, which means we can make some high-performance animations. The only drawback is that the canvas element is essentially rendered as an image in the DOM, so if we’re looking for pixel-perfection, we might be out of luck. As someone acutely in tune with design, this was a dealbreaker for me.

I needed something tried and tested, so I knew I probably had to go with one of the many JavaScript libraries. I started looking at libraries and narrowed my choices to Anime.js and GSAP. They both seemed to handle complex animations well and had excellent notes on performance. Anime is a well-maintained library with over 42.000 stars on GitHub, while GSAP is a super popular, battle-tested library with a thriving community.

An active community was critical to me since I needed a place to ask for help, and I didn’t want to use a library that might later be abandoned. I considered this as part of my convenience requirements.

Sequencing animations and callbacks

Once I had my choices narrowed down, the next step was to implement a complex animation using my two libraries. A recurrent animation in a solitaire game is that of a card moving somewhere and then turning over, so let’s see how that looks:

Both animations look great! They’re smooth, and implementing both of them was pretty straightforward. Both libraries had a timeline function that made creating sequences a breeze. This is how the implementation looks in AnimeJS:

var timeline = anime.timeline({
  begin: function() {
    $(".status").text("Animating")
  },
  complete: function() {
    $(".status").text("Inactive")
  }
});

timeline.add({
  targets: '.card',
  left: [0, 300],
  easing: 'easeInOutSine',
  duration: 500
}).add({
  targets: '.card .back',
  rotateY: [0, 90],
  easing: 'easeInSine',
  duration: 200
}).add({
  targets: '.card .front',
  rotateY: [-90, 0],
  easing: 'easeOutSine',
  duration: 200
})

Anime’s timeline() function comes built-in with callbacks on beginning and ending the animation, and creating the sequence is as easy as appending the sequential animations. First, I move the card, then I turn my back-image 90 degrees, so it goes out of view, and then I turn my front-image 90 degrees, so it comes into view.

The same implementation using GSAP’s timeline() function looks very similar:

var timeline = gsap.timeline({
  onStart: function() {
    $(".status").text("Animating")
  },
  onComplete: function() {
    $(".status").text("Inactive")
  }
});

timeline.fromTo(".card", {
  left: 0
}, {
  duration: 0.5,
  left: 300
}).fromTo(".card .back", {
  rotationY: 0
}, {
  rotationY: 90,
  ease: "power1.easeIn",
  duration: 0.2
}).fromTo(".card .front", {
  rotationY: -90
}, {
  rotationY: 0,
  ease: "power1.easeOut",
  duration: 0.2
})

Decision time

The main difference between Anime and GSAP appears to be the syntax, where GSAP might be a little more elaborate. I was stuck with two great libraries that had very similar functionality, were able to deal with complex animation, and had a thriving community. It seemed like I had a tie race!

PriorityAnimeGSAP
Smooth animations
Performance
Convenience
Browser support

So, what made me choose one library over the other?

I was very concerned about how the library would act under pressure. Having laggy animations in a game like Solitaire can greatly impact how fun it is to play the game. I knew I wouldn’t be able to fully see how the library performed before I created the game. Luckily, GSAP had made a stress test that compared different animation libraries to each other, including Anime.

Looking at that, GSAP certainly looked to be the superior library for dealing with loads of complex animations. GSAP was giving me upwards of 26 frames per second on a heavy animation that Anime was only able to top out at 19.  After reading up on GSAP more and looking into their forums, it became clear that performance was of the highest priority to the guys behind GSAP.

And even though both GSAP and Anime have been around a while, Anime’s repo has been sitting somewhat dormant a couple of years while GSAP had made commits in the past couple of months.

I ended up using GSAP and haven’t regretted my decision!

How about you? Does any of this square with how you evaluate and compare front-end tooling? Are there other priorities you might have considered (e.g. accessibility, etc.) in a project like this? Or do you have a project where you had to pare down your choices from a bunch of different options? Please share in the comments because I’d like to know! 

Oh, and if you want to see how it looks when animating a whole deck of cards, you can head over to my site and play a game of Solitaire. Have fun!


How I Chose an Animation Library for My Solitaire Game originally published on CSS-Tricks. You should get the newsletter.

Inspirational Websites Roundup #39

A fresh set of new websites is waiting for you! We’ve carefully selected these gems over the past couple of weeks and hope that you’ll get a super high dose of creativity with these!

Enjoy!

NUENO

Mario Carrillo

Varex

Dgrees

Atomic Health

Hisami Kurita

Companion

Anna Jóna

Roof

The Blackpepper Studio

Leyann

Le Trabendo

Trevarefabrikken

Gareth Hughes

Picky Joe

Sanso Offerings

Elvina Prasad

Heleonic

BelArosa Chalet

Jorge Toloza

Living With OCD

Peptone

Co-Partnership

ALET

Cobo

Bequant

RRE

Sonoma Bakery

Series Eight

Becklyn

Swaychain

Neutra VDL

Canairi

Símon.com

The post Inspirational Websites Roundup #39 appeared first on Codrops.

How to Make a Google Ad Landing Page in WordPress (The Easy Way)

Do you want to make a landing page for your Google Ads campaign in WordPress?

A Google Ads landing page is optimized to help you reach your campaign’s goals. Creating the right landing page is crucial for getting maximum sales and leads from your Google Ads.

In this article, we will show you how you can make a Google Ad landing page in WordPress including the ability to dynamically change content.

How to make a Google Ad landing page in WordPress

Why Make a Google Ad Landing Page in WordPress?

When someone clicks on your Google Ad, you can redirect them to any page on your WordPress website. This might be a page that already exists on your site, such as your request a quote page, product page, etc.

However, sending those visitors to a generic page could confuse them if it’s not closely related to the ad they clicked on. This can cause visitors to leave your site, and you’ll miss out on those sales.

That’s why many successful website owners create customized landing pages for their Google Ads.

This gives you the freedom to fine-tune the page to help you reach your Google Ad campaign goals. For example, if you want to get more sales then you might add a call to action (CTA) button, a form that accepts credit card payments, and powerful social proof such as customer reviews and testimonials.

No matter whether you want to get more sales, generate leads, or reach some other goal, an effective Google Ad landing page will give you a higher conversion rate.

With that in mind, let’s see how you can easily make a Google Ad landing page in WordPress.

How to Make a Google Ad Landing Page in WordPress

The easiest way to make a Google Ad landing page in WordPress is by using SeedProd. It is the best landing page builder for WordPress.

SeedProd allows you to easily create beautiful landing pages that you can show to anyone who clicks on your Google Ads.

The SeedProd plugin works with many popular third-party tools that you may already be using to get sales and capture leads. This includes top email marketing services, Google Analytics, and more.

The first thing you need to do is install and activate the SeedProd plugin. For more details, see our step by step guide on how to install a WordPress plugin.

Note: There is a free version of SeedProd plugin available on WordPress.org, but we will be using the Pro version since it has more powerful features. It also includes a selection of professionally-designed landing templates that you can use in your Google Ad campaigns.

After activating the plugin, SeedProd will ask for your license key.

SeedProd license key

You can find this information under your account on the SeedProd website and in the purchase confirmation email you got when you bought SeedProd.

After entering your key, go to SeedProd » Landing Pages in your WordPress dashboard.

Create a Google Ad landing page with SeedProd

SeedProd comes with 150 professionally designed templates which are grouped into categories. Along the top you’ll see categories that let you create beautiful coming soon pages, activate maintenance mode, create a custom login page for WordPress, and more.

We want to design a Google Ad landing page, so go ahead and click on the ‘Add New Landing Page’ button.

Making a Google Ad landing page in WordPress

All of SeedProd’s templates are easy to customize, so you can use any of the designs for your Google Ad landing page.

However, many WordPress blog and website owners use Google Ads to get sales, so you may want to click on the ‘Sales’ tab.

SeedProd's ready-made templates

SeedProd will now show all the templates that are designed to help you sell more products and services.

To take a closer look at any design, simply hover your mouse over that template. Then, click on the magnifying glass icon.

SeedProd's landing page templates

This will open the template in a new tab.

When you find a design that you want to use for your Google Ad landing page, simply click on ‘Choose This Template.’

A SeedProd landing page template

You can now type in a name for your landing page into the ‘Page Name’ feld.

SeedProd will automatically create a ‘Page URL’ using the page name. This is the web address where your Google Ad landing page will appear.

Customizing the landing page URL

Even though we’re making a landing page for a Google Ad campaign, it’s still a good idea to fine-tune this page for the search engines.

By optimizing your landing page for SEO, you may get some extra visitors from relevant search engine result pages. To learn more, you can see our ultimate WordPress SEO guide.

With that said, it’s a good idea to include relevant keywords in your URL. You can change the page’s automatically-generated URL by typing into the ‘Page URL’ field.

When you’re happy with the information you’ve typed in, click on ‘Save and Start Editing the Page.’ This will load the SeedProd page builder interface.

This simple drag and drop builder shows a live preview of your landing page to the right. On the left is a menu that shows the different blocks and sections that you can add to your Google Ad landing page.

The SeedProd page builder

SeedProd comes with lots of ready-made blocks that can help you get more conversions, including pricing tables, countdowns, and customer testimonials. You can build an entire Google Ad landing page within minutes using these ready-made blocks.

You can also use SeedProd blocks like spacers, columns, and dividers to help organize and structure your Google Ad landing page. This can help visitors navigate your landing page and find the information they want.

When you find a block that you want to add to the Google Ad landing page, simply drag and drop it onto your template.

SeedProd's Testimonial block

To customize a block, go ahead and click to select the block in the SeedProd editor. The left-hand menu will now update to show all the settings that you can use to customize the block.

For example, if you click on a Testimonials block you’ll be able to change the name of the person quoted and add some new testimonial text.

Creating a Google Ad landing page in WordPress

Images are a great way to catch the visitor’s attention and communicate more of information. For this reason, many of SeedProd’s landing page templates come with placeholder images.

To replace the placeholder content with your own image, simply click on the Image block.

Next, in the left-hand menu simply hover your mouse over the image and then click on the Trashcan icon to delete it.

Creating a Google Ad landing page with SeedProd

Once you’ve done that, there are a few different ways to add a new image to your Google Ad landing page.

Once option is to click on ‘Use Your Own Image.’ You can then either choose an image from the WordPress media library, or upload a new file from your computer.

Adding an image to your SeedProd design

Don’t have an image that you want to use? SeedProd comes with a built-in library of thousands of royalty free stock images that you can add to your Google Ad landing pages.

To see SeedProd’s stock image library, simply click on ‘Use a Stock Image.’

Next, just type in a word or phrase that describes the image you’re looking for and then click on the ‘Search’ button.

SeedProd's stock photo library

SeedProd will now show all the stock images that match your search term.

When you find an image that you want to use, simply give it a click to add the image to your Google Ad landing page.

Adding stock photos with SeedProd's library

Many online store owners use Google Ad campaigns to advertise their products and services.

If you created an online store using WooCommerce, then SeedProd has a number of special WooCommerce blocks that you can add to your landing page, including Add To Cart and Checkout blocks.

These blocks make it easier for customers to make a purchase, which is great for your conversion rates. It also lets you design a Google Ad landing page without being restricted by your WooCommerce theme.

To take a look at these eCommerce blocks, scroll to the ‘WooCommerce’ section in SeedProd’s left-hand menu.

You can now add any of these blocks to your Google Ad landing page.

Adding WooCommerce blocks to a Google Ad landing page

As you’re building your landing page, you can move blocks around your layout by dragging and dropping them. This makes it easy to create a Google Ad landing page with a totally custom layout.

SeedProd comes with ‘Sections’ too. These are rows and block templates that can help you quickly create a nicely organized Google Ad landing page.

You can see all of these sections by clicking on the ‘Sections’ tab.

SeedProd's 'section' templates

From here, you can preview any section by hovering over it. When the magnifying glass icon appears, give it a click. To get more sales, you may want to take a look at sections such as Hero, Call To Action, Features, and Testimonial.

To add a section to your page, click on ‘Choose This Section.’ SeedProd will now add the section to the very end of your Google Ad landing page.

A 'features' section template in SeedProd

Color can be a great way to catch the visitor’s attention, and help reinforce your WordPress website’s branding.

To change the background color of any section, simply click to select that section. Then, click on the little cog icon that appears.

Once you’ve done that, click on the Background Color field and choose a new background color using the popup settings.

Changing your landing page's background color

People typically pay more attention to personalized content. With that in mind, you may get more sales by showing personalized content on your Google Ad landing page.

SeedProd has full support for dynamic text replacement, so different visitors see a different message based on the search term they used to find your ad. For example, if you’re targeting the keywords ‘summer offers’ or ‘Black Friday’ with your ad campaign, then you might dynamically change your heading to include those terms.

To add dynamic text to your Google Ad landing page, simply click on any Heading or Text block. Then, go ahead and click on the Insert Dynamic Text button.

SeedProd's dynamic text settings

In the popup that appears, click on ‘Query Parameter.’

This lets you pass data via the query parameter on your page. For example, you might pass in the phrase ‘Black Friday’ and then show that text in your headline.

SeedProd's query parameter settings

To learn more, please see SeedProd’s guide to dynamic text.

As you’re working on your Google Ad landing page, you can preview your design by clicking on the Preview button. This launches your landing page in a new tab.

SeedProd's 'preview' feature

When you’re happy with how your landing page looks, it’s a good idea to optimize the page’s settings, as this can get you more conversions.

Many landing pages use forms to capture leads and potential new customers.

SeedProd integrates with all of the top email marketing services including Constant Contact, Sendinblue, and Drip.

To connect your landing page to your email marketing service, simply click on the ‘Connect’ tab. You can then hover your mouse over the email marketing service that you use on your website, and click on the ‘Connect’ button when it shows up.

Connecting SeedProd to your email marketing service

SeedProd will now walk you through the process of connecting your Google Ad landing page to your email marketing service.

When you’re happy with how your Google ad landing page is set up, you can click on the ‘Save’ button and then choose ‘Publish.’

Now you simply need to open the ad campaign inside your Google Ads account, and add the URL for the landing page you just created. Once you’ve done that, anyone who clicks on your Google Ad will be redirected to your landing page.

A beautiful, professionally-designed Google Ad landing page can help you reach your campaign goals. However, there is always room to improve your conversion rates.

With that in mind, it’s a good idea to monitor your landing page’s stats to see what’s working and not working. You can then use SeedProd to tweak your landing page’s design, and fine-tune it to get even more conversions.

The easiest way to measure important metrics in WordPress is using MonsterInsights.

It’s the best WordPress analytics plugin and is used by over 3 million websites. To learn more, please see our step by step guide on how to install Google Analytics in WordPress.

We hope this article helped you learn how to make a Google Ad landing page in WordPress. You can also go through our guide on how to add push notifications on your website, or our expert picks of the must have WordPress plugins for business websites.

If you liked this article, then please subscribe to our YouTube Channel for WordPress video tutorials. You can also find us on Twitter and Facebook.

The post How to Make a Google Ad Landing Page in WordPress (The Easy Way) first appeared on WPBeginner.

Reactive Kafka With Streaming in Spring Boot

The AngularAndSpring project uses Kafka for the distributed sign-in of new users and the distributed token revocation for logged-out users.

System Architecture

The AngularAndSpring project needs to be able to be horizontally scaled each with its own database. To enable that, a sign-in needs to be propagated to all instances. Kafka serves as a central event streaming platform to send the sign-in events. Kafka is horizontally scalable to high event loads and can be set up to be highly available.