All right, my clock is showing two o'clock. So let's begin. All right, welcome everyone to LeoBuilder Components Can Break Your Site. Here's how. Part two, I just want to point out that I will be speaking fairly quickly because there's a lot of content here to cover. And that's a great reason why we record these. So let's just dive right in. All right, so first of all, who am I? I'm Andre Angel Antonio, I'm the founder of Performant Labs. I've been working with Drupal since 5.0 and those are some of my clients. Performant Labs is sponsoring LeoBuilderKit, CampaignKit, PaymentStripe, and is the founder of the Drupal Quality Initiative. So today we'll talk a little bit about the LeoBuilderKit because it has something to do with components but we won't be talking about the other modules that you can go find them on Drupal.org if you'd like. All right, now where to find this talk? The notes for the talk and the video will be at that URL. It won't have the video right away. That'll take possibly as much as a week for it to go up. We'll see. And this is part two of this important topic. So definitely watch part one to understand how important this topic is and its impact when building modern Drupal websites using LeoBuilder. And that's where you'll find part one and the video is there ready for you to watch. All right, what we're gonna cover today, we're gonna do an instant introduction to. I'm going to review and demo the problem. Going to go through a little bit of component anatomy. Gonna talk about where content of components is stored. Look at how complex are the components and if the component is stored efficiently, we're gonna look a little bit on LeoBuilderKit and some of the design choices that reflect what we'll have talked about. Some LeoBuilder rules to live by. I'll go over a clever workaround that I promised in part one and some interesting notes. Finally, I'll go through some resources and then we'll do some Q and A. All right, so let's start. A note on nomenclature when discussing LeoBuilder, a component is the same thing as a block. And Drupal 8 is an entity, which you could call a component of some sort or a block in the context of using LeoBuilder. And in most instances, a page is the same thing as a node. If you hear me use node or page, that's usually what I'm talking about in this presentation. All right, introduction to LeoBuilder instance. LeoBuilder is a souped up panelizer if you've worked with that module. If you haven't, LeoBuilder is a way to control the presentation of several parts of Drupal, including nodes, blocks, taxonomy terms, and even menus. Today we're gonna just focus really on blocks inside of LeoBuilder, but a lot of what I'm talking about today applies everywhere. Sorry, all those four areas, that's just the specific. So LeoBuilder allows you to create rigid layouts that content editors can't change or layouts that are almost completely editable by content editors or somewhere in between. Hey, Matt, welcome. All right, let's do a review of the problem. There are many ways to store the content of components. Some of them will break features such as versioning workflow and workspaces. This is the hub of the problem. And if you're not careful, there are ways to avoid this, but if you're not careful, you will break those features and I'll show you how. So let's do a demo. Okay, so let's see, I start the video. I've learned my lesson to record ahead of time. So here's what we're doing here. I'm going inside the custom block library and I've got already a custom block type, but I'm gonna create a new one. And this is the typical way that people make blocks in Drupal right now. And this is a way that can get you into trouble. Okay, so now I've got my custom block type. I'm going to make a block of that type. There we go, it's a super welcome message. Yeah, thanks for saying that, Tori. You can click twice on the screen share to make it bigger. Very simple block and boom, now I have a welcome message.  And now we're gonna go create a basic page. Now ahead of time, I've already turned on layout builder for the basic page content type. So I'm not gonna show you how to do that. I'm gonna assume you know how to do that. All right, so now I go inside of the filter. I type in the welcome message title so that I pull up that block and I go click on it. All right, so now it's inside of our layout. And then you say to yourself, well I'm gonna go change the content of that block. Somehow I click save, go back here, refresh. Huh, okay, that probably makes sense though because I'm pointing at the most current version of the block inside of the layout. So now I'm gonna go create a new revision of the layout and I'm going to differentiate it by adding that new block so I can tell that it's a new revision. And you saw that the checkbox has turned up. So there you go. There's the new revision. You saw the powered by Drupal. Let's go make another change. I go to move that or bold it rather over here. Okay, well, maybe that makes sense too. I should have seen that change but now let's go back in time. Wait a second, that was the old version. And I am seeing the latest version of my block. Just to prove it for sure, for sure. I went and clicked on revert and there you go. You're still showing the latest version. And boom, all of a sudden your revisioning is not working. And if you have a client that's expecting that they can go back in time and get an old version of the site or an old version of the layout, that's not gonna happen. Now I don't recommend using this sort of mechanism if you're going to do a, if you're gonna use it for legal needs. There are external tools that companies should be using if you have to have old versions of your page. And you shouldn't be relying on revisioning because it's just not accurate. Okay, so I go through. I'm just proving my point. I've added another block. Sorry, I've made another change. This time I'm making sure that there are new revisions in the block. I don't know if you caught that. So this time now I'm using new revisions and boom. So this is a problem. This is a problem. All right, let's keep on going. Let's take a look at how it should work. Okay, we're gonna do this again. I'm gonna start this time from an empty page. I've still got the super welcome message block type this time. Now I'm going to go add a page. This part's the same as the last time. All right, I go down, I click on add block. But this time I say create a custom block. So instead of choosing it from the initial list, I choose it from the custom block. It's a huge difference here. So watch what happens. It uses the fundamental structure of the block type that I created. But it's not using the content because I get to add the content inside of the panel on the right hand side, the editing panel. Okay, so I've got now a component in there. Let's go take a look inside of the database and you'll see there's my block ID. So sure enough, it's storing it there. But it's now inside of this different set of tables. That's the inline block usage table. And let's go take a look at what's being stored inside of the layout table. So we pop over here, we reformat that, paste it in the larger section. And this time, look at what you see. Look at that, there's a revision ID that's being stored with the layout. Now I didn't show that to you before. The reason I didn't show that to you before is because it wasn't actually storing it. When you use the block, it does not store the revision ID. So let's prove that this is gonna work by making some changes to the content. Notice, gonna create a new revision, save the layout, boom, you see it. Okay, so now let's go back in time and ta-da, it is in fact the old version. Now let's go back to the revision ID. I showed you that there is a particular revision ID attached to that. And there you see the most recent version of the body value. That's what's always stored in the main tables. And let's go now take a look at what's being stored inside of the layouts. Whoops, I had made a mistake. So we're gonna go try that again by reformatting it. And ta-da, take a look now at that line, you see a different revision ID. So when you use custom inline blocks, your revisioning inside of Layout Builder will work. But if you don't, it won't work. And there you go, I'm just showing a little bit more of what's happening behind the scenes. By the way, this is really valuable for developers to really understand how things are being stored under the hood inside of the database. Don't be afraid to go looking inside of there and learning all about it. So now I'm gonna revert just to make the ultimate proof. Take a look and ta-da, it's the old version. Did the revision number change? The revision ID, let's go take a look. Paste the new one, reformat it. Got the new format. And ta-da, it's back to revision ID number one. So you can see Layout Builder is just simply handling everything properly. Benjam just about to move to the next slide. So I'm gonna come back to your statement because I'm just concentrating on where I am. Now notice that you don't see the content, you don't see that block that you just created inside of inline blocks in the custom block library. So it is really and truly a different way of saving content. All right, let's keep on going. Okay, so the problem basically is what you're seeing in this diagram is that even though you can have multiple revisions for Layout Builder, it can point to the same child. And often it's the most recent one and that's what gets into trouble. So if the child doesn't have a revision as well as the parent, every page will always show the current value of the child. If the parents don't record the revision ID of the child, which is what happens in the first case, every page will always show the current value of the child. So you actually need both of those to be true. You need to be revisioning the children and you may need to make sure that the parents are keeping track of the revision IDs. So let's now take a deeper dive by looking into some component anatomy. So the three basic standard types of Drupal components, you've got the global component, that's what I showed you at the beginning and that's the custom block library where people tend to create the blocks ahead of time inside of that separate page and then they drop them wherever they want all over the site. Then you've got the custom inline, that was the second demo. They're non-reusable components for now but I'm gonna show you a patch that's gonna change that. And then the third way is serialized. And I'll explain these. So what are we gonna look at? Well, we're gonna look at where is the component content stored? How complex is the component? Is the component stored efficiently? Okay, how are components made? Well, you could say that components are divided into three parts. The first part is the front end, that's the rendered HTML. The second part is the configuration and an example of the configuration might be the location on the page. And then the third part is the content itself, what it's supposed to display. So how is the configuration stored? Let's get that handled right away. The placement of the component in its configuration is always stored as a serialized string in the appropriate table. And I discuss what the appropriate tables are when you're looking at taxonomies, nodes, blocks and menus in part one. I go through that in some depth. So go take a look at that if you're curious. But for now we're just talking about blocks. So where is the content stored? Well, you've got basically two options. You can put it in separate tables or you can put it in the page. Let's take a look at the separate tables first. This is option one. The content can be stored in tables. This is the customary way people know how content is saved by using custom blocks. That's what the table structure looks like under the hood when looking at blocks. Adding more fields to your custom block type will add more tables because the way Drupal now is working is it gives every field its own table. The second place is in the page. You could store the content and the configuration in the page layout as part of the serialized string. Content and configuration is automatically revisioned this way. Version one of LeoBuilderKit components use this mechanism. So does Aquiasite Studio. So does Project Gutenberg and so does DXPR formerly GlazeBuilder. We all went down that path probably because it's actually the easier way and you don't mess up the revisioning. So where is the content saved? Again, well, option two is you could by making a custom object store that content with the configuration just add the content to the serialized string at the end. Oops, I think I've already covered that. Wait a second, I got a mess up there. Well, the two different ways of the table are in the serialized string. So we've already covered both of those. Now, the next thing we wanna look at is how complex is the component? Because this makes a difference. If you've got just a single tier sort of component that you're making a custom component, then things are much easier on you.  So here's the single tier, something simple. Here's a single tier with revisions. Then you've got two tier. You've got a main parent up above that then you can have a second table that stores values that the parent uses. And then you can do the same thing, but you can add revisioning everywhere. Okay, so that's generally how these things work. We're not gonna go parent-child-child, we're just gonna do parent-child. So how do you wanna proceed? Carefully, be very aware of how your component content is stored, especially if older versions, revisions, or workflow or workspaces are needed immediately or in the future. Understand the details of each component type and test everything thoroughly. Yes, Benji points out, and then there are translations, no kidding. Do not assume, test and keep detailed notes. You will forget this stuff in three months if you're anything like me. So have someone on your team or you personally learn all this stuff, record all the decisions you make as you go and keep that handy for everyone to refer back to. Teach everyone on the team about this issue because it's quite possible that you have someone come on to the team. They don't know it and they go make an error and all your good work is down the toilet. So rule number one, if you aren't using serialized string storage, everything must have a revision ID. But remember what I said earlier, rule number two, make sure the revision ID is actually being stored and used. Okay, now the next piece we're gonna look at is the component stored efficiently. So you've got basically four options when you're storing the content using tables. First option is one table per field. That's using the field API. Second one is one table for all the fields and that's using the entity API. You have to do some custom programming to get that to work, whereas the first one happens automatically. And then you have a hybrid possibility, which is using the entity API and the field API. Again, you need to do a custom module for this. And then the third one is you could use NoSQL. Now, I haven't come across anyone who's used NoSQL yet, but I think at some point one of us is gonna try it. So let's take a look at each one in turn. One table per field, consider a component that has three fields, the event, title, date, and location. And each one of those is stored in its own table. Drupal fetches these in a single query with SQL joins and populates an internal object with the result. So it goes and grabs all the data from the separate tables and puts it together in one object and hands that back to the developer. Does this automatically for us. Now, as you add more fields per component, it gets slower. And as you add more components to the page, it gets slower. That's another problem people can get into, which is they merely make all their components, add lots of fields, add lots of components to a layout, and then all of a sudden it's just dog slow. The next one is one table for all the fields. So you can make your components and custom modules and store all the content for the component in a single table using the entity API, not the field API. And that's what it's gonna look like actually on the database. Everything, all your fields are gonna be in one table. Drupal moved away from this system for some flexibility, which I'll discuss a little bit later. But that's how it used to work in Drupal 6 and earlier. And a lot of other website management systems or content management systems still work that way. What's the advantage of this? Well, Drupal fetches with far fewer joins. So it's much faster. Or you could do a hybrid model. You could use the entity API to store a whole bunch of fields in one table and then add extra fields that go in their own table using the field API. That's also valid. And this gives you a mix of flexibility and performance. And if you're keeping track of all the revision IDs, that can work. Then the third one is NoSQL, which is using a semi-structured form of data storage. And I hope at one point in the future to be able to make another presentation showing how great it is by storing everything there. But we're not gonna cover that today. Okay, so what was the problem again? Well, there are actually three parts to it. Problem number one, revisioning can break. If people use Drupal the way they're used to with Layout Builder, not using the inline blocks and do not use custom components that use serialized storage, revisioning reliant features will break. Problem number two, a table per field. Recall that when the component content is stored in fields instead of serialized and stored with configuration, Drupal creates a table for every field. It does this in part to allow for fast database structure changes on production databases. What was happening in Drupal 6 was it was taking hours, eight hours sometimes for a add field or a delete field to be executed on a MySQL database. And you just can't take a production database out of commission for that long. So to provide more flexibility in various ways which I won't get into and also to make working with really large databases easier in the sense that they actually, you can make changes to the data structure without taking down the database for eight hours. We move to this one table per field mechanism. To collect all the content for a single component requires a SQL join statement between the multiple tables. And if you have many, if you have a page with many components collecting all the content for all the components will be really slow. And I'm not joking. We tested this. It was unusably slow on pages with many components. Now, I should say we had a lot of components. These are very, very long pages. I can't divulge which client that was. I was supposed to say it's slow. Okay. And problem number three can't leverage the framework. If there's so many problems with storing content in tables why not just store everything in the serialized string and call it a day? There are other parts of Drupal that open up to you by using tables like using the diff module to compare what changed between two versions of the page or getting your content easily into the search index. And many more contributed modules exist and will be made that work with content stored in fields instead of serialized strings. It's just kind of a pain to work with serialized strings harder to do searches. It's kind of the equivalent of in Drupal 7 or rather earlier, I guess because we started to have the render pipeline in Drupal 7. It's like trying to work with HTML just before you're about to send the page to the browser and trying to do some sort of last minute changes. It's fussy. It's difficult. It's error prone. So working with serialized strings is not always the best idea. So you want to use table-based storage if you can. So how do we get table-based storage to work for us? Well, it's really the parent-child relationships that are the problem. And what you're looking at there is an example parent-child relationship. The parent is the component as a whole and then the children are each one of those tabs. The moment you want a custom parent-child relationship such as a tab or a carousel component, you could add another table. This is again in a custom module. This is not using the UI. You could add another table via the entity API to hold the children. Totally viable. If you do that, though, you are in charge of propagating changes to the children when there are revisions, right? Standard Drupal will help you do that.  But if you're going to make your own custom ones, you have to be careful and you have to make sure that you're propagating all the revision IDs. And if you don't do that, revisioning will break. But is there a way for Drupal to handle that for us? Well, there is. There's a clever workaround. Fellow Drupalista Andrew Thornton came up with this. Thornton came up with this clever workaround. Create a new custom field definition and add it as an unlimited field to the parent entity. That's equivalent to in the UI, choosing unlimited when you're specifying the storage for a field where it says a loud number of values. So instead of it saying one or a specific number, say unlimited. This leverages Drupal's built-in machinery because the children, which in this case are individual tab elements or slides in the carousel, are simply values for a field. And Drupal already knows how to organize all that and keeps track of the revisions. And when using an inline block, we'll properly store the revision ID when it's needed. Under the hood, this is employing the Delta field for those developers who know that. So the Delta field helps store multiple values per field. This is what it looks like under the hood. The normal base table stores the parent fields, maybe just the title, and the field table stores the children. And you can see that there's a Delta there, zero, one and two, and each one of those refer to each child, okay?  Okay, so that's another piece you're gonna have to do. And you're gonna need to create your own field definition. Here's an example. And when you do your own field definition, you have to be sure to set the cardinality to unlimited. All right, so that's the clever workaround. Now, instead of using this clever field-based workaround, we could create as a community, we could create some helper classes that support parent-child relationships and even parent-child-child relationships that use tables. You could do all that. I have a suspicion somebody at one point is gonna try that. And for parent-child-child relationships, if you don't wanna go down that route, we could also store the second child in a serialized field. Once the data are in the serialized field, any data structures is possible. But then you have the same problems as we had before. Might not be as much of an issue because if it's the child and the parent or the second child, maybe you don't need it to be searchable in your index or maybe you don't need to compare it between revisions, stuff like that. Okay, so what does LayoutBuilderKit do? Well, version 1.0 currently uses serialized string storage. And as far as I can tell, all the other page mechanisms or page layout systems use the same system. So here are the components so far. So you can use those right away. They will not break revisioning. Why? Because all of the content is stored inside of the serialized string, which is stored with the configuration. And if you want a full walkthrough and learn how to contribute components, there's a link for you. Okay, so what's next? Well, I'd like to get these other pieces working so that we can get the diff module working and whatnot and make sure that the content is in tables in a performant way. And so version 2.x of LayoutBuilder will add components that use the entity API and Andy's clever field technique. Site builders can then assess competing requirements and choose the storage mechanism that makes sense for their build. In other words, they can use version 1.0 branch or version 2.0 branch. Now contact me if you'd like to help develop these base classes. I think it's gonna be fun. Okay, in summary, I fear that there will be many broken Drupal sites made by teams unaware of these issues. Unfortunately, Drupal will be blamed when it's actually a site build issue, AKA it's our job as site architects to know about this and make sure that we don't mess up our builds and then have unhappy clients.  Don't let your site be one of these. Really, really pay attention to this, please. We don't want a black mark on Drupal for no reason. Okay, so let's take a look at some interesting notes that I think most people here would be interested in learning about. It's not yet possible to export and import layouts, but it should be ready soon. And that's the issue. You can follow that. I think they're on like patch. No, I think they're like 100 comments or so. So you might be able to try to get it work. You might be able to apply the patch and then you can do export and import of layouts or you may not have tried it recently. Another interesting note, layout builder everywhere will extend layout builder to regions of the page other than the main content area. And that's the link for that. So right now, layout builder, you get to only work with the content region and the header and the footer, you can't do anything with it. Well, layout builder everywhere actually allows you to do it in the headers and the footers. What's the holy grail? The holy grail is that at some point, the entire page, you can just use layout builder. That's coming. Okay. There's a patch that brings layout builder into page manager. Now, page manager is the part of panels that a lot of people think about when they make variants. And so that issue, which is create a layout builder variant, which actually has been committed, allows you to use layout builder inside of a variant inside of page manager. I have been waiting for this for a long time. This is fabulous. Okay. So I'm interested in notes number three. Work is underway to allow blocks created within layout builder to be reusable, specifically the inline blocks. I should have written that inside of that comment. It's we're now specifically talking about inline blocks. Now, will a reusable block be versionable? If so, will each of the components, will each use of the component on separate pages show the latest version? Like if you change a component on one page, will it automatically change on the other one? But what if on the first page, when you updated the component, it used a new version ID. And on the other page, it uses the prior version ID. Interesting, right? We don't know yet. Or will it show the version it was last saved with? Answers are as yet unknown. So don't forget to check this additional use case when the patch lands. There will be a checkbox that says reuse this block. And you might wanna be very quick and put in a hook that takes away that checkbox or we might land ourselves in real trouble once that patch lands in core. All right, so here's some resources. Okay, if you'd also like to learn about layout builder extra modules, there's a really great group of contributed modules now for layout builder. I think they're probably up to about two dozen. As per normal, a lot of these features are gonna get rolled into core over time, but right now you do really wanna look at the entire emerging layout builder ecosystem, all the different modules like symmetric translation or asymmetric translation, those immediately are required if you're gonna do some translation. But there are many, many, many more, very helpful modules, okay? And then if you'd like a current list of them, go to that page, all right? You should also check out DXPR. You should check out Aquia Site Studio, although I do believe that you have to be one of their clients in order to get access to Site Studio. So that was a cohesion. They renamed it to Site Studio, but cohesion was made by, I don't remember, but the brand name was cohesion and then Aquia wanted a cool systems for marketers to make pages very quickly. Cohesion had probably something like 25 or 30 modules or components rather. Now compare that to layout builder kit, which has only seven and there's another module called pattern kit that I need to check out. I don't know how many components they have, but in any case, right now our alternatives to these private sort of offerings don't have as many components as they do. So we have a lot of catching up to do. Oh, perfect. Thanks, Martin. Okay. Elementor, that comes from WordPress. I know nothing about it, but apparently it's now available inside of Drupal, which is interesting. And Gutenberg is actually, the WordPress project Gutenberg is now actually available in Drupal. And now we move to Q and A. All right, so I'm gonna try to go back in time to see if all the questions got handled. JSON API will help with export, but import. Let's see, did anyone answer that? I can't tell you about the JSON API. I think Benji, what was happening is that patch that I showed you about how to export layouts is required in order for JSON API to work. I think that what they found is, correct me if I'm wrong, but I believe that the team who was trying to make the JSON API a really full-fledged system discovered that there was no way actually to export layouts. So they had to get to work on that patch. So I think that's what's happening there. Double field. Interesting, Joe, I don't know what double field is. That's cool. I will check that out. Okay, there were some modules in D7, multi-field and composed field, but I don't think they ever got a port to D8. No, I don't think they did either, James. And the interesting thing is that Andy and I were talking this week. One other possibility that that team is using is actually paragraphs. And they're finding that the revisioning is working. So you could use this custom system that I showed you with the base definition, the base field definition that you make it yourself. And since you're gonna be using the entity API, it should be super, super fast. But if you use like usable in a high throughput sort of website, but if you are not so interested in performance and you just want the convenience of what paragraphs does, people should check that out too, because it might actually still work. Okay, so Benji is saying, right, that patch will expose LB field to JSON API. Work is just beginning on adding JSON API as a source for the migrate API. Yeah, okay, so as is the case often, you start going down one path and you find it, oh, I need to do this. I need to do this. I need to do this. Let's see, Caroline. So if you want a custom block to appear the same on multiple pages, you use the traditional way and live with the lack of revisions. Right now, yes, that's true. Until that patch lands with the checkbox that allows you to make inline blocks global and reusable, then the way to do it is using the other one, the typical way by going into the custom block user interface. Okay, traditional blocks are reusable and the LB just stores the entity ID. Blocks created in LB are non-reusable inline and LB saves the revision ID just like me are. Okay, I think that's all correct. I think I've been saying that it's just sort of coming from different verbiage. All right, so let's see. Okay, I think I got all the old questions. Let's see, in other words, importing layouts will require migrate API no matter how they are exported. What about YAML? No, I don't think that's true. I think that you can, you'll be able to import and export layouts without using migrate API. I think what happened is they just discovered that they need to make that connection as well. Yeah, what about YAML? I don't think that's true. I think once that patch lands, we will be able to import layouts using configuration entities. All right, no worries, Matt. So Benji says the references to double field and others were in response to my question about compound fields using field API. If we have that, then we could use entity plus field APIs and reduce the number of tables since the field table would have lots of columns. Right, okay, so maybe Benji, are you saying we could avoid making our own custom field because there's a module that would allow us to do it for us? And then that's yet another way to do it. Maybe save us some development effort. Yeah, okay, so now it's double field ready in Drupal 8, do you know? All right, well, I'll try clicking on it and see what happens over here. Looks like it's gotten up to date. Okay, sweet. Yes, looks like there's a beta one for 4.0, but the 3.x branch is well used. Fantastic. Okay, definitely wanna check that out. Great, thanks for that, Benji. Okay, he does not know, just discovered that module a minutes ago.  All right, I think it is, but it's limited in how many subfields you can add is what Joe says.   Right now, we're at the very beginning of this whole process. So we're spending extra investment in time and energy to learn how to do it the right way. And as usual, this period will pass and then we'll just know how to do it and we'll be able to create all the custom modules we want and custom components we want very, very quickly in the future. Okay, if there are no other questions. Oh, Matt, you're very welcome. Matt says, thanks. This is one of the best bad camp talks so far. Benji, there are also problems with parent child relations using inline blocks since LB adds access control. Can you say more about that, Benji? When I was working with them, we just did typical access control and it wasn't a problem.  Okay, he might be typing up a response there. We had a site that added call out blocks with button block references. Oh, interesting, yeah. So now you have access control in two separate places. Yeah, I got it. Pip, pip, pip, pip. I think we just kept it easy and maybe just kept it all open. We figured if people had access to all those UIs, they should be able to do all that stuff. Yeah, using IEF and the block, child blocks did not show up. Interesting, okay, that's another concern. I didn't personally hit that, but that's great for everyone to watch out. But like I said, if you're being really careful and watching every step you make and making sure that you've documented everything and you understand what's happening actually at the database level, you know precisely where the revision IDs are being stored, you've got use cases where you walk through the people who are reading your document and say this is how it works, then hopefully you discover that before you start building your site. I'm not seeing any more questions here. All right, last chance, another 10 seconds. Okay, all right, let's call it. So thank you everyone for attending. Please share this information far and wide. I mean, we might need some sort of fancy, some sort of fancy name for this problem, the layout block breaking problem in Drupal or something. Anyway, we need something cool so that we can just say to people, hey, have you looked into this problem? Yeah, you should definitely look into this. It's really an issue. And I think there's a way to get around it immediately and then if you're gonna make custom blocks, we've got that clever little workaround. And I think over time, there are gonna be some other interesting ways to get this all sorted out. The first version or the first component that I'm gonna go to work on with the layout builder kit in using the custom field definitions is gonna be the tab component. And like I said, please just ping me. And if you wanna work on it together, I think it'll be fun. It's much more fun to work on this stuff as a group than solo. All right, have a great rest of this year's bad camp. I've been also in charge of working with the speakers in the sessions. And so it's been my pleasure to work with everyone. We've had 40 plus great sessions or we will have had 40 plus great sessions by the end of bad camp, but really it's not just the speakers, it's everyone who shows up without you guys attending these things. We have no one to talk to. So thank you as well for coming, for supporting bad camp. We're non-profits. And our mission is to spread Drupal knowledge and expand the Drupal community so that we have a great future for Drupal. I think we still have a great future for Drupal, especially with all the moves that we're making. And it's been my pleasure to speak with you today. Okay, take care.


This study aimed to evaluate the anti-HBS persistence and immune memory 18-19 why after vaccination against hepatitis B in healthy individuals primed as infants or adolescents. The results showed that 67.9% of individuals had anti-HBS concentrations greater than or equal to 10 MIU ML with a higher antibody geometric mean concentration GMC in group B than in group A booster doses were effective in inducing an amnestic response in vaccines with anti-HBS less than 10 MIU ML, but further follow-up is required to assess the long-term protection. This article was offered by Luisa Romano, Christina Golly, Keisha Tagliacan and others.


Good morning. This is Ian Christensen for our next presentation. I have the honor to interview Mr. Richard Delbello Who is the vice president for global engagement with Virgin Galactic? Rich will be speaking to us about his perspectives on the topic of commercial spaceflight new opportunities for science and research Good morning. Rich, I wonder if you might begin with introducing yourself in your background in commercial space Good morning, Ian. It's a pleasure to be here today. I have I've been blessed with a long and enjoyable background in space I started way back in the 80s and Got to see the first space shuttle flights and the first announcement of the space station I've worked across both government and industry I've Led an industry association. I've had the opportunity to work at NASA to work in the White House to work at the Commerce Department And so I've had a really a fun career and and across a lot of interesting boundaries I've seen the industries grow dramatically over that time when obviously perhaps most Dramatically was the growth of the launch industry which went from a few government dominated providers to the Veritable free-for-all of launch opportunities that are in the marketplace today I've seen the satellite industry go from global consortium of governments to really a wildly competitive both technically and From a business perspective a wildly competitive market Originally, of course, they were all the focus was on a few large geostationary satellites Positioned as relays today, of course, we are reinventing communication with constellations of satellites So over the span of my career I've seen just tremendous exciting change and Everything that I'm seeing tells me that that that change is going to continue for the next several decades Just we we are by no means at the end of a process So I think we are at still very much in the middle of a dramatic change of the space industry Rich you just told us about how in the last few years the commercial space industry has grown in a number of seconds For example telecommunications space launch your viewpoint. Why has this growth occurred so fast and how will it continue in the future? That's a great question. There is undeniably a Tremendous amount of activity in the US marketplace and many people ask why why is that and I think if you look at the history of space in the United States you you see a couple of key Elements coming together to create this momentum The first is that over the last 20 or 30 years there have been in place relatively permissive regulations and policy Encouraging commercial so on the regulatory side by permissive. I don't mean Dangerous I just simply mean that the policies have been focused on protecting the uninvolved public as opposing to ensuring the That some specific activity is 100% safe as a regulator would do for example with a commercial airplane so by adopting a different understanding of Safety and regulation and it has allowed the kind of experimentation that we saw in the early days of aviation From a policy perspective the government has also played a very large role One of the primary ways that the government has encouraged Commercial is by willing to be a buyer of early commercial services Whether that satellite communications or launch or remote sensing Or more recently in the work that NASA is doing in low-Earth orbit on the commercialization of Leo all of those things have been promoted by a Government policy that seeks to use the government as a buyer In addition to that There has been There's been an environment over the last 20 years perhaps Which is where there's been a tremendous amount of available capital and the Availability of capital is probably a more complex issue than we can cover in this one session but Just to highlight a few points Overall, this was a period of growth and prosperity The because of the various financial Setbacks that we've had over the during that period the the Federal Reserve does adopt adopted a policy of very low interest rates Which has made capital formation easier? And there's been a tremendous appetite starting in the 90s for Technology Investments, so we've had an investment community that has been focused on the the next technical step so so those elements together have created a Environment where innovators and startup companies have often been able to find ready cash to fund their to fund their investments Finally and This this cannot be underestimated the technologies have changed dramatically in the past 20 years Where we are in microelectronics communication technology launch technology Those elements are Just dramatic there was just a dramatic shift Towards greater efficiency more capability in all of those areas. So so satellites imagery Interabilities the digitization of imagery all of these elements came together over the last 20 years to create the Potential to do what we are doing with constellations of communication satellites Constellations of remote sensing satellites. So it was that combination that balance of technology available funding and Government regulatory and policy support that have created I think within the US a unique Microclimate that has been very supportive of commercial space Thank You rich just talked through some examples of how the US government has developed policy to encourage the growth of the commercial space industry For instance how NASA has worked to encourage Leo commercialization. I wonder if you go deeper into those policies How has the US government developed policy to encourage market growth and competition in commercial space? Yes, I think there are a number of important examples going back perhaps to the 1980s the government that time began to Take the concept of commercial space activities seriously one of the first manifestations of that came in Satellite communications as you recall recall when it was established Intel sat which was then the single global provider for satellite communications was Basically an arm of the United Nations, and it was a intergovernmental organization The US began to talk at that point about privatizing Intel sat That dialogue which was an international dialogue took many many years But and it was consistent with the dialogues that were going on internationally about the privatization of other services like post telegraph airplanes So undersea cables so there there was a huge sea change that started there where the means of communication The dialogue began how do we turn these over to the commercial sector? Not just in the US but globally and that dialogue went into the 90s when Intel sat was privatized the result of that privatization was a robust and energetic Global market a lot of new investment a lot of new creativity new satellites new more powerful satellites And so immediately the world saw the rewards of that step shortly after that there there was a dialogue about Moving launch from Government control to commercial that was a little bit more complicated Because launch of course has a component which is deeply tied to national security launch vehicles a Vehicle-belaunch vehicle is could also be a weapon and so There was a lot of international dialogue and concern about how to manage that sort of transition and But gradually through the 80s and 90s and 2000s we saw the that shift continue and it first started with Allowing commercial to exist and the next step was to Treat commercial as a parallel to the government capability and I think the phase that we're in now where the governments are asking themselves What unique launch capabilities do we the government need? Whereas everything else can go perhaps to the private sector So that transition Has happened and again that this goes to the issue that I mentioned before about the importance of Forward-leaning policy so the government's decided that they were going to do this and then they worked on the implementation Twinned with the issue of policy is always the issue of regulation the Regulatory system needed to manage Global telecommunications is tremendously complicated involving individual regulators and regional regulators and the international process under the ITU We don't really have time for that this morning, but The launch vehicles are a different thing entirely There are some international rules primarily from national security-based rules about launch vehicles, but most of the launch vehicle rules are domestic And I think the big step that the US took in in its thinking about launch vehicles Was to focus on the safety of the uninvolved public so What the regulations should focus on is People not associated with the launch should never be in a situation where they might be harmed But to allow Launch vehicle companies to experiment including including human launch vehicle companies like my own virgin galactic and our Colleagues at Blue Origin and and and now SpaceX and soon Sierra Nevada and the all of these companies wanted the opportunity to try to innovate and so Instead of requiring absolute safety, which would have been very very difficult at the beginning again the parallel like I mentioned before It's very much like the early days of aviation where Many individuals many companies tried out airplane concepts Some of those did not work and The that is those early experiments that were the impetus that gave us the aviation industry that we have today Along the way, I mean obviously now we have regulations which seek to ensure 100% safety for the for the commercial air traveler But had we had those rules at the beginning of the industry it would have Prevented the vibrant growth of that industry. So it's a question of balance. It's a question of balance How do you balance the public need of the public? expectation of safety and security with the need to innovate and And the way the US is balanced it again is to is to have this concept of acceptance of risk by those people who are involved in the potentially dangerous activity But a complete commitment to safety of the uninvolved public. So that kind of balancing act Has been the guiding light through the US policy and US regulation So rich you were just talking about the need to balance innovation and safety the need to balance a regulation and promotion of commercial space You also represent one of those innovative launch companies you were talking about Virgin Galactic is certainly developing some innovative new services I wonder if you might tell us about where those services are going and what that means for the future of the commercial research market Certainly well, I think the service that we will soon be offering which is a flight to Between 80 and 100 kilometers or essentially taking people to space and back Primarily as a as a voyage of experience for For people, but also and increasingly for science and technology research Clearly the the regulatory the balance between regulation and risk acceptance is evident here in These products which which seek to involve the public more generally in space flight So there has to be an understanding that that you know, these are these are activities which involve risk so the regulatory balance has to be that the person has to be fully informed has to understand that they're accepting risk and Then the government has to be assured that The passengers understand the risk they're taking and then the government is responsible for Ensuring the safety of the uninvolved public again And I think we've seen that balance working very well in our industry and and we believe our customers understand What what our services and what risk they are taking? This is not like a walk in the park, you know going to space is still a A High technology higher risk than normal activity for people to engage in This is not like getting on a commercial airplane but secondarily, I just wanted to say that we're also seeing a Introduce when you introduce a new technology people are very creative And one of the interesting things that we've seen is that for these suborbital missions, whether it be Virgin Galactic or Blue Origin or whoever else will offer these services There's also tremendous demand for to have access to these platforms for science In our flights you get somewhere between two and four minutes of microgravity, which is Of course, nothing like the kind of extended microgravity you can get on the space station but we can do it for a very fraction of the cost of of and Definitely a fraction of the time that it takes to get something space station So we're super excited about this new market that's developing and we think there's going to be tremendous growth there So we're approaching the end of our time here today. I just want to ask a wrap-up and conclusion question in your viewpoint Rich, how does the expansion of the global commercial space sector create opportunities for markets and exchange? Well space as as we've discussed through this throughout our dialogue here Space has always been broadly international And I think you've you've seen that there are there have always been robust international markets for satellite communications robust international markets for launch And I think as new technologies come along the new more The many technologies for Imagery from from space. I mean, I think that the markets for all of those will continue to be global And and that's an opportunity for the commercial sector obviously and for the commercial players from around the world Though this global market also comes with a set of global responsibilities And I think that there is still a substantial amount of work to do For governments and industry to address those responsibilities First on and perhaps foremost An issue on many people's mind is the issue of debris More activity particularly the focus now on constellations of communication satellites and imagery satellites Literally thousands of satellites being launched into space. There there is a renewed Focus and concern about Maintaining the environment of space the sustainability of the environment of space We don't have time in this segment to talk about the specific issue of space debris But suffice it to say that it's an issue that I think policymakers around the world recognize is a real issue and one that needs to be dealt with And with all of these new technologies some of our older issues are also harder to address issues like the allocation of global spectrum for communication and the Tremendous growth of all of these new technologies all have a demand for satellite communications now And that requires access to the radio frequency spectrum It may come there may come a day when we move to laser communications and some of the current bottleneck we have on Radio frequency use may may be resolved but today we are definitely still heavily reliant on the on the spectrum and The world is of course Still very concerned about the proliferation of launch technologies which can have a national security implement implications um So I think that we are one global community when it comes to space. It's a global marketplace It's a global regulatory challenge and I think that as the Many spacefaring peoples of the world It's our responsibility to address all of these issues together And to try to resolve it so that future generations will have access to space in the same way that we do Well, thank you rich. I wish we could keep talking for a longer time here, but we We have other presentations to move on to so I I it's a pleasure being here today, and I'm only sorry that I can't be at the conference in person


splitting the shins I want to make sure my feet are on the mat so I get my feet on the mat I got a left left claw left half my left foot at my high hand side so I want you to bring your right heel to your butt your left foot is going to kick and over your right shoulder your low hand side and I want you to go to a tripod okay so my right heel is going to come up here I'm going to end up in a tripod right here the reason why I want you to do this drill is it forces you to take your high inside foot and really force it over your bottom side shoulder so if I'm focused on kicking over the top into a tripod I got to get my foot in the mat so I can drive I got to stretch and kick and then I got to get to my tripod so right foot to my butt right here up to my tripod now we'll move in this guy from our crab ride in a little bit I want to make sure we got this kick motion so on your own left foot kicking over right


My name is Harry Season. I'm a member of the Board of Directors of the Abacurkey International Balloon Fiesta. We're here on Sunday morning of our first weekend of a nine-day event. This is our 49th year for the Balloon Fiesta and we're managed by a Board of Directors of 24 volunteers plus about another thousand volunteers who come out and help us out during the week. We also have a paid staff of about 20 people who work year-round on the event to get it ready here. In addition to our paid staff and we have to pay a number of people like our public safety people and people who help clean the field and things like that but about a thousand different volunteers who work during the week everything from being greeters to working in the official merchandise tents to being on chase crews for balloons they can come and volunteer to be on a chase crew so all different kind of jobs that they can come down here and help us with. This field what's the acreage? The acreage here the total park is around 250 acres but that includes all of our parking areas to the north and the south of the field and frankly to the east of the field we have 250 launch squares on the on the property here and so we can launch about 250 balloons in one wave as you saw this morning and then the second wave of another 250 or so balloons so we can accommodate a massive number of balloons here on the field. Next year is going to be the 50th anything special plan? We have lots of special things planned but they're all top secret at this point so that we can build up the excitement as we lead up to next year's events but yes we're going to do a number of different things that will be celebrating our 50th year. My name is Dale Richie and what do you fly? I fly the cow balloon for cream on dairies, Arabelle the flying count. Tell us about your balloon. Well it's one of the biggest shapes here it's in fact probably at this moment it is the biggest shape here weighs about 950 pounds so it's it's been flying in Albuquerque since 1989 so it's the longest longest corporate program actually of any of the shapes. You've flown it in Wisconsin too. Yeah back in the back in the early days of the cow when we've the first cow that we built we flew it for the Wisconsin milk marketing board in Wisconsin and then since then it's been sold to cream on dairies and that's who we've been flying it's owned by dairy farmers it's cream land is owned by the dairy farmers of America yeah talk about how many people help you do this well we've got a crew of right now probably close to 30 people but they're doing back there they're packing everything up and ready to go yeah so but usually you know we can usually do it with about 15 people but but like I said the more the merrier and it is a big heavy balloon so it's nice to have lots of lots of people helping. Do you do other events besides here? Well with cream land we pretty much just do Albuquerque now but we we used to do more events like in Houston and Dallas and Louisville Kentucky up in Las Vegas and Reno they are actually talking about possibly starting to take the cow out to some of those events again now with the new owners of the of the of the company so that that's gonna be good we'll be able to travel a little bit more with it and and spread it around a bit yeah where was this balloon made? Well the original balloon was built in Bristol England in Cameron balloons then we we retired that balloon in 1996 we built another one then the third one was built in 2004. We're here with Jerry Garcia he's from Albuquerque and he has 41 years of experience. Jerry tell me more about the history of ballooning. Well ballooning started with two brothers they're Montgolfier and 1783 they they owned a paper factory and of course this story goes several different ways with different pilots but they went outside their paper factory and saw smoke coming up out of the chimneys of the homes and they figured that they can capture the smoke in some kind of a bag maybe it'll go up with the smoke and black smoke so they went in and they built a big paper bag and this was pretty good size they decorated up real fancy put a little platform on the bottom of it and they went outside and built a huge fire and started throwing all kinds of objects in there to turn this fire black the smoke black and the fire so it's they put their platform or a balloon over it and it started to rise up well they grabbed a chicken duck and pig and put it on the platform because they were afraid there was no oxygen above the earth and they didn't want to sacrifice a human so they went ahead and did that and it lifted up off the ground went across the countryside it landed in this field full of peasants and they saw this thing with all the black smoke building out of it they thought it was a demon that just flew in well they went over there and totally destroyed it with their pitchforks no one knows what happened to the animals but you know they were sacrificed in one way or another well there was a French nobleman that saw what was going on and he went to the Montgolfiers and told him he'd be honored to fly in their new contraption so they went back to their paper factory and they did build a bigger balloon but this time out of silk and they put a lot of fancy decorations on it put another platform on it went back out built another big fire and got all the black black smoke they could out of it again because they didn't know it was just the heat that caused it to rise they thought it was a smoke so the French nobleman got on the platform and it started to lift up and went back across countryside and it landed back in that same field again and these peasants came back after it again well he stepped out with a bottle of champagne in his hand and said the they finally decided that anybody sophisticated enough to drink champagne couldn't be the demon so that's how we celebrate our first landings for first-time flyers or if we land in somebody's property we honor offer them a bottle of champagne and it's just part of the custom of ballooning now the champagne while the Irish got involved in it too and everybody figured it was gotta be the alcohol is why the Irish got involved but they came up with their own prayer and it's the Irish balloonist prayer and we like to say this prayer after every flight this is for the next day and the prayer goes like this the winds of wealth in you a softness the sun has blessed you with its warm hands you have flown so high and so well that God has joined you in laughter and has set you gently back into the loving arms of Mother Earth amen and that's what we like to end our flight with with these other two people were they first time flyers yes these are our first time flyers that we we try to keep this as a secret so that first time flyers don't know but as many times as it happens now a lot of them do know what's going on but these that I had did not know what was gonna happen so there are some that are surprised what happens on this for their first flight yeah this is the you know we like to give people first flights because they're really amazed by what goes on with ballooning and how the balloon is flown and how we control it so it it's very interesting to people that have never seen it before my balloon was made in New Jersey it's a custom nine balloon it's 100,000 cubic feet we call it 10 tie that's a Japanese word for Heavenly Spirit now it's it's the second one that looks like it right now it only has about a hundred hours on it and it's just something that I enjoy doing and of course my wife along with me and all our crew it's just it gets in your blood and you just can't stop it it's just there and it's special people I would say are interested in it and there's not too many in this world that can that fly balloons but we get a lot of them here there's over 500 balloons here and it's a worldwide event so we we have a great time with it we like meeting all the people from all over the world and you'll never see this in any place else on as Mr. Z he was built in Brazil and my husband was looking for a special shape to buy and he saw it advertised they they have a business model that they build balloons special shapes balloons down there and then they bring them up here to sell them so he saw that one online and called me into his office and said what do you think of this one because he was thinking of getting a special shape and I said oh he's cute so we decided to buy Mr. Z and he was built in honor of the launch directors here in Albuquerque and other places but I think I don't know if it started here but they're called zebras because of the black and white stripes which are like referee type uniforms but then here in Albuquerque they all kind of dress up to to emphasize the zebra part and we're the zebra balloon you want to know about the competition a lot of the competition is with a large X on the ground so they they put fabric strips on the ground and then the balloonists have a little beanbag thing that's about this big and then it's it's got a long streamer on it so they have to come over they have to maneuver they have to find the winds that are right for them so that they can get here and then they try to get as close above the X as they can and they drop their marker it's it's called a marker and then they have to get it as close as they can to the center of the X but it's not always an X sometimes there are two triangles that meet in the center sometimes it's called a minimum distance so they have to get them as close together but they have to be within the triangles sometimes it's maximum distance they have other kinds of shapes that they do at some of the more sophisticated competitions here they usually I think just do an X or and then sometimes they have a pole with a prize on it they have to put a ring that's about this big over the pole and then they win a prize of money or whatever I am Joe Balangy I'm a launch director they also call us zebras for some unknown reason but yeah launch directors nobody takes off unless we give them permission to take off so the pilots put on the show but we kind of control the show this is my seventh year as a zebra but this is my 26th or seventh year at balloon fiesta before that I was on chase crew and I decided after 19 years of being on chase crew I wanted to see fiesta from a different perspective and I applied to be a zebra and now here I am we get to be ambassadors for balloon fiesta and for albuquerque and for New Mexico we meet and greet the public we meet and greet the pilots and the crews that come from literally around the world and around the country so we get to associate with a whole lot of really cool people it's just fun I mean we we just I just like it because there's so many people so much happening and it's a beautiful event with all the balloons it's just be great to be a part of something like this what kind of criteria oh well okay what we say is we do a safe coordinated launch which means that first of all safety before we can give anybody clearance to fly we're checking around them we're looking side to side to make sure there's nothing in their way on the on the side if another balloon is close by we're more importantly we're looking overhead to make sure that there's no balloon flying above them to where we would launch them and they would bump in another one so that's really really key we're we're watching 360 around that balloon to make sure before we give them okay to launch that they're going to be going into a safe space coordinated we're looking side to side to see what the other zebras are doing what the other balloons are doing we're also looking past our balloon to the next balloons coming up thinking ahead and coordinating trying to make sure that everybody goes off in a nice coordinated manner so nobody's bumping into each other and everybody's kept safe some balloons toward the end of launch and it's always toward the end they're given the option do you want to take off or you can we call static they can just stand up and some balloons decide for various reasons that we'll just we'll just stand up it's a way to put on a show for the crowd because it gives people the opportunity to come over close to the balloon that's not flying and they can look at it and take pictures and talk to the pilot and crew that sort of stuff some of them that they make the decision just because I don't need to fly today or maybe I'm not really happy with the winds so there's multiple reasons but if you see after the flight and the main flight there's balloons just standing there it's perfectly okay they have to coordinate with the zebras to let us know when we go up to them what are your plans and they'll tell us I'm just going to stay on the ground excellent as long as the we get word that that's field is clear to do that that's not a problem little there's a low layer that's slow there's a middle layer that's fast just drop a season three are very close to the ground so they're skimming for a place to land they're probably a hundred feet I've got to figure those trees are 50 to 70 the pumpkin is flying right beside us we're fixing to cross the now the wind is twisting us can we land in there good thank you using the squeezer Bob O'Brien from Wapaka Wisconsin here in lovely Albuquerque for probably about my 20th time I tend to come back every about every year lately but every other year we make it make the trip out from Wapaka Wisconsin to Albuquerque so we're here again this year with our new balloon a new watermelon balloon so this is my second watermelon balloon my original balloon was the meloon that was a 97 Lindstrand hot air balloon flew that for quite a few years she got a little old had to retire her had another balloon that I was flying but two years ago I decided to build another watermelon balloon so this is manufactured by Lindstrand balloons they're out of Hanover no actually they're out of Delina Illinois now and this balloon was made about a year ago so this is the first time that it's in Albuquerque so we're showing it off here in Albuquerque this year so we're having quite a bit of fun with it it's a Lindstrand 90,000 cubic foot balloon it's just a standard balloon shape but with the artwork on the balloon it makes it look like a watermelon balloon so my first balloon meloon my second balloon is now seed quill so this is my second balloon all right I'm asked how did I get involved with ballooning my wife and I about 30 years ago went out to a friend's wedding in Sedona Arizona we spent the night in Tucumcari New Mexico got up early because we were meeting people for lunch in Sedona as we were driving through Albuquerque the festival was going on hundreds of balloons in the air me being who I am I'm behind the wheel I'm driving my wife sitting next to me all this is lovely me oh yeah I'm driving you know down the road I go she puts her foot down and says if this is still going on when we come back from Sedona we're going for a balloon ride sure enough it was still going on so I went for a balloon ride it was like a key going into a lot I loved it so much went back home now 30 years ago we didn't have a lot of internet that we have today try and find somebody to sell you a hot air balloon it was very difficult but eventually through some diligent research etc. I was able to find people that were in the hot air ballooning and we we got into the sport bought a balloon learned to fly it it is a licensed balloon you you have to have a pilot's license so I had to go through pilot training did all of that but that's basically the story how I got into it the boys steady company since 1996 and happy and I ever when there was not an official event one of these special shapes what's what's different from other the special shapes always seem to draw a bit more interest and everybody really seems to have their own special special shape one that they love the most and Humpty's kind of been an icon for Albuquerque Fiesta since 96 joy to people who notice when you were back further out but as you walk around Humpty's eyes are designed so that they follow you as you walk from one side of the balloon to the other so when you're looking at Humpty is one of the easier special shapes to put down it's the size of a 12-story apartment building and it takes a crew to 12 to 20 to put that one away Humpty we can put away with six people comfortably now today explain what they're doing and why we're not going up okay today while it looks great on the ground for the balloons the winds the lofts starting below 500 feet above the ground are rather brisk and at 500 feet they turn directly towards the mountain parts of Sandia reservation with roads and it makes it difficult to retrieve the balloons and if we end up on the side of the mountain it's definitely harder to retrieve them from there so we're not flying this morning we don't want to put all these balloons up and have very easy to retrieve


My goal for this episode is to critique these two figures so that in the next episode we can do a mashup between those two figures to take the good things and make a improved dumbbell chart of these two figures. Hey folks, I'm Pat Schloss and this is Code Club. If you've been here before, welcome back. If you're brand new, well welcome. And I also am going to put a link in the upper corner of the screen here for you to go and watch the rest of this playlist that we are in the process of developing. Over the past six or seven episodes or so, we've been trying to recreate two figures looking at data from August and October of 2020 from people surveyed across the world, 15 different countries, kind of prospectively asking them whether or not they would be willing to receive a COVID-19 vaccine when it eventually became available. Of course, it is now available. Even though the data are old and maybe a little stale at this point, I thought it was an interesting set of data to work with. And again, to try to create this version of the Ipsos figure solely using our tools without trying to poke or prod anything using something like Adobe Illustrator or PowerPoint or any of those other tools people use to try to make their figures look a little bit better. Also, over the course of about five episodes, we went and took that Ipsos version of the chart and modified it to look like a figure that I received in an email newsletter that I get from a group called chart R, where they applied a little bit more styling to the figure. And I thought that was a lot of fun. And I know I learned a ton about using ggplot to do things with color, to make strips in the background, to add new fonts, to add those arrowheads, just a lot of really cool little things that, you know, maybe you're not going to make a plot like this for your own data. But hopefully there's little elements of what we did to create this chart R version that you can now implement in your own figures. If you like this type of work, well, you know what, I strongly encourage you to sign up for an email newsletter that I produce. I've put out two or three releases so far. And I would like to have you join as well. So if you go to riffamonus.org and go to the bottom of that screen, there is a very simple sign up, you'll receive a weekly newsletter with, you know, my random thoughts on things, some practice exercise problems using R and other practices and reproducible research, as well as some announcements about other things we have going on in the riffamonus professional development program. So please sign up and you'll get your first email next Friday. As I mentioned in the newsletter that I sent out last Friday on August 27th, I've been binge listening to a podcast hosted by a guy named Chris Doe who is the CEO of an organization called the future. And their goal is to teach a billion people how to make a living doing what they love. He's primarily a designer, a graphic designer, motion designer. I find the content just really fascinating. And he was talking to a host in one of the episodes and sadly I misplaced it. And this this guest was commenting on how he remembered reading a writing from some philosopher that was talking about a utopia, where you couldn't critique things without first having created it yourself and tried to improve upon it. So that's basically what I've been doing over the past six or seven episodes is to develop something right to develop what ipsos and chart are developed. And now what I want to do is think about well what worked well and what could we do better. And so my goal for this episode is to critique these two figures so that in the next episode we can do a mashup, if you will, between those two figures to take the good things of those two figures and make a improved dumbbell chart that has aspects that I like at least of these two figures. Along the way, what we will no doubt learn is that the people that develop these figures, they had certain limitations, you know, the data may be limited, there's limitations of the media, and that there's just constraints on what you can do. And so there is no perfect visual. And so while I can come up with a critique, and I can then try to implement that critique and try to overcome those problems, my version is also going to have limitations. And so that's just something that we need to learn and we need to learn that lesson really well. I'm going to be working on the two figures here on my tablet and marking it up with my pencil. And so the first thing that I want to do when I look at one of these figures is say, you know, what do I think about this? What do I see? And I'm not going to apply any judgment, right? So I could be looking at the most hideous figure with all sorts of horrible colors and fonts and whatnot. But what do I see, right? If you strip away all that stuff, that's perhaps a little distracting. What do I see? And when I looked at this figure for the first time, one of the first things I said 15 countries, the US is in there. Where is the US? And so I found the US and that we were second to last. So we're not doing great, but we're better than France, at least, right? The other thing that I found to be really interesting is that, you know, sure, we dropped about 3 percentage points, but, you know, that's probably within a margin error. And I kind of figured that that was kind of holding steady at about, you know, 64, 67% kind of high 60s, right? So at a qualitative level, perhaps we're not moving that much. So the second question I had was why were India and China doing so well? They were at really high levels, 87% for India. And in August, 97% for China, even in October, where numbers had fallen of 85%, right? So why were they so much higher? And also, what happened in China? Why did the numbers fall so precipitously from August to October? The third question I had was, it seems like all of these countries are falling off, except for countries like Germany, Mexico, and South Africa. And in those three countries, actually the numbers of people saying they would receive the vaccine increased, right? So again, this got me thinking and asking lots of questions. And I think any good data visual is good if it can provoke you to ask more questions. Hopefully it also answers questions, but I like this because it was provocative and it got me thinking about other questions that I would want to know. As this figure was placed in the initial report, it was the very first figure in the report. So it really set up the rest of the report for this August-October comparison data. And so I think they then use this as a spring board to get some summary statistics and then do further analysis later in this report. So now that I've stripped away any kind of judgment and thinking about what the figure is saying to me, I also want to maybe think about who is the audience for this. And so I kind of considered that the audience is most likely policymakers. So this has a very professional tone to me. It's a lot of black and white, dark, subdued colors. We'll talk about why that might actually be a problem here in a moment. But this kind of looks like something that would be going to people in think tanks or people that are going to maybe restyle this to reach out to the general public. So I think if the audience are public policymakers, then I think it works pretty well. As I mentioned, I think this is a good figure because it's provocative, right? I have lots of questions. I also like how they dealt with the paired data and that you can see that they have, again, what we had talked about before, a dumbbell chart where they had the two weights, if you will, if you can think of a dumbbell or barbell, being that the two points in time from August and October, and then the handle being kind of a connection between those two points. And I think that worked really well to pair the data. We'll talk about other ways that we might do that in the future, but it was certainly better than having a bunch of points for the 15 countries from August and then a bunch of points from October without any connection to them. And so I liked how they did that. And I think there was a pretty good trade-off to having those two points connected and then having that connected with the country name. Some other approaches that we might think about like a slope graph might get a little bit too busy because the country names might be all running into each other. I also really liked the caption and that they told me the number of individuals, they told me the ages, the countries. As we look at the original version, they tell us the source, who they worked with to generate the data, how they created it, that you can get the data by going to that link. So I really like what they built into the caption. They didn't need a lot of words to say that, but I thought it was really effective. So now let's turn to thinking about what we don't like about this figure. And again, these are my own opinions. You might have different opinions too. And if you have other opinions of what you like or don't like about this figure, by all means, down in the comments, please let me know. So the first thing that I struggled with with this figure is what is it saying? What is the sottori? So is this figure trying to shame certain countries like the United States or France, right? Or is it trying to highlight the declining numbers of percentage of people willing to receive the vaccine from this depiction of the data? It's not immediately clear. They've sorted the data based on people's responses in October. They haven't sorted it by the decline or by the increase in people willing to receive the vaccine. So it's a little bit confusing what they're trying to say. Again, this figure was part of a bigger report where the headline was something about declining numbers of people willing to receive the vaccine. But if this figure was going to stand on its own, then it's a little bit more challenging. And again, if the story is about declining numbers, then I'm not totally convinced that this is the best way to show the data. My next two critiques of this figure come back to the fact that I don't really like clutter in figures. I like to keep things as simple as possible. So when I look at the legend, I have two problems. So first of all, the total agree is repeated, right, for both the October and the August caption on that legend. I like this legend. If I didn't mention that before, I kind of liked having this as an alternative to having that legend off in the right hand margin. The other challenge that I had, there's not enough contrast in the colors of the October and August data for me. I kept struggling to remember which one was August, which was October. Again, there's two points. I know I should be able to keep track of this. But I think now, after making seven videos or whatever it is about this figure, I finally remembered that gray is August and blue is October. It shouldn't be that hard. We could put a more muted color for August and a brighter, more contrasting color than this kind of teal color for the October data, which would hopefully kind of visually signify to me that, okay, these data from October, and they're comparing back to August. So the third thing I didn't totally like about this figure is that there's so much text on here. And so some of that is good because they are labeling the points. The scientist in me wants to get rid of all the text labels, all those percentage labels on the points, and have people look at the x axis and then map up.  So I think what I might prefer to do is remove the percentages on the x axis, because we've got those numbers next to the points. So one problem with this, though, could be that it's a little bit misleading. It could be misleading if you don't know the full range of the points. But as we can see, France is at 54, and China had this point up at 97. So it is really everything from 50 to 100%. And I don't think it's that deceiving. And, you know, the reader is going to have to trust us on some level that we're not doing some weird compression in the x axis. And I think if we keep those grid lines in, it'll make it clear kind of where those 5 percentage point increments are. So this is one of those stylistic points where we're going to make a decision perhaps for simplicity that may have detrimental effect on clarity. We don't know until we ask somebody how they interpret it, you know, with our final version of the figure. So the fourth critique I have of this figure is that there is a line in here for the total. So these are all countries along the y axis total is not a country, right. And so an idea that I had was what if instead of having the total, you know, we could have a vertical line to indicate where the total where the average was from October, and we could have, you know, a vertical line indicating where the average was for August. And so kind of having those vertical lines would be a relative position that we could then compare our data to for each of the countries back to those averages. Again, if the point is comparing change, right, if we're looking at change for all these countries, then maybe having total in there isn't super relevant, except that it is kind of showing the average change across all 15 countries. I don't know, I really struggle with that. And again, it comes back to what is the point of this figure. If it's to compare countries, then I think it would be best to have those vertical lines. If it's best to compare kind of the change in opinions, then I don't know, maybe we live it in there, or maybe we choose a different way to represent that change in the data than these barbell charts. But if our goal is to compare the change in people's receptivity to receiving the vaccine, then maybe we just get over our qualms about total not being a country, we just leave it there in the y-axis. Or alternatively, we start thinking about a different way to represent the data, perhaps something like a slope chart where the x-axis would perhaps be the date, so August and October, and the y-axis instead of the countries then would be percentages, and we'd have a separate line for each of those countries. That's not a perfect solution either, but maybe we'll talk about that in a future episode. The chart R version of the figure kind of provoked a lot of the same questions that the Ipsos version of the figure did. I actually saw this chart R version before I saw the Ipsos version. So all those questions I had about the Ipsos, I also had for the chart R version. So let me tell you what I liked about this figure. First, I think it's pitched not so much to a technical audience, but to a general audience. Whenever I see this type of styling, I think, well, that's not, you know, professional or technical, right? I think black and white is technical and colors and funny fonts, that that's more of a whimsical or more kind of public access to science. I don't know why I feel that way, but I just feel like this is being pitched to a more general audience. And heck, I received this as part of an email newsletter looking at data visualizations that half the time they're talking about Marvel movies. So this is not really like, you know, a very technical audience that's receiving this figure by any means. The second thing I like is that the title is different and it tries to tell a story. And so we'll come back and say why that might be a problem for this particular figure, but at least has a title that tries to kind of communicate something. So vaccine skepticism by country. One of the other things I liked about this figure was the legend. I like that they have the question from survey as the caption of the legend, it's at the top. And so as I'm reading the figure, or if you kind of go back to that episode I had on the Z pattern, they go to the title and then they come back to the legend, which is showing us the question as well then as the two dates and the colors that correspond to them. I feel like these colors have good contrast, which at least helps me to understand kind of the difference between the two points. I like the contrast of those two colors and how they linked it to the question at the top of the legend. I thought both of these figures had pretty nice ways of approaching the legend. The other thing I kind of liked were these arrows and that they show the flow of time, right, and so that we can easily see that the blue was August and the green was October. And so there's this flow of time. The final thing I'll say about this figure that I liked is I like the compact nature, right, and that this is a compact format. It's not more landscape, it's square. And so the data are much closer to the names than they were for the Ipsos version, where the Ipsos version was more rectangular, the points were quite a bit of ways from the name. And so I like that. And I hadn't thought about that, that kind of thinking about the dimensions of the figure and helping it to kind of compress the data to be close to the country names. So what don't I like about this figure? Well, first of all, the data do not measure skepticism. They measure people's willingness to receive the vaccine. That is not skepticism. That is willingness, right? So vaccine acceptance or vaccine willingness to receive by country would have been a better title. Again, these numbers on the bottom are acceptance. They are not skepticism, right? If we wanted to look at skepticism, then we'd probably need to flip the x-axis and do 100 minus whatever value we see on the x-axis. And then we might want to sort the countries by their skepticism. As it is, it's sorted by acceptance of a potential vaccine. So again, I find that problematic in the title. So again, they tried to tell a story, but I think they got the story backwards. Another big problem with this figure is that this wasn't the actual question that was asked. So if a vaccine for COVID-19 were available, I totally agree I would get it. No. The question was, I strongly agree I would get it, or I somewhat agree that I would get it, right? And so these numbers are the total of somewhat and strongly. I not totally agree, right? So totally agree.  I'm absolutely going to get it, right? Whereas here, it's a total. It's a sum. It's a summation. So I mean, that's maybe a small point, but I think it's, I think it's significant, right? Because it's indicating that these people are like, you know, they're gung-ho to get the vaccine when it's perhaps more of like a somewhat, right? So maybe a little bit of hedging on whether or not they'd receive it. When I was talking about the Ipsos figure, I commented that one of the things I always notice is when there's just too much stuff in the figure. And so although I like the arrows and I like the dumbbell chart aspect of this, I kind of wonder if we need both. What if this instead had just been an arrow pointing to the left and this one been an arrow pointing to the right, right? Perhaps we could have different colors so that if it was a drop in receptivity to receiving the vaccine, it'd be red. And if it was an increase, it could be blue. Who knows? I think where that falls down, however, is in these cases of say like India and Canada, where there was no change. And so unfortunately, one of the problems with this layout where they're only giving you one of the two numbers, remember the Ipsos version had both numbers from August and October, is that I'm starting to wonder now, was there August data, right? So there were August data. But the way this is shown, I don't get to see the August data. Again, with the Ipsos version, they had, you know, for India, they had 87% on both sides of that point. So I think in some cases, it's more thinking about using an arrow to show the direction of time as an alternative to a dumbbell chart like this. But I think you probably need both and you probably need both numbers to make it clear that you're not missing the data. So I'm not sure what to think about combining the arrows with the dumbbell chart. I think if you pick good colors with as high contrast, then maybe that will do a better job of showing the flow of time than what we saw with the Ipsos version of the chart. That's something I want to experiment with in a future episode. But the arrows, you know, might also work as an alternative to the dumbbell chart in a case where you had a difference for all countries say between August and October.  I'm not going to fault them for putting the arrows on. I thought it was a nice touch, but it might just kind of clutter up the figure. So those are my thoughts on the two figures, things I liked and things I didn't like. I tried to have more things I like than what I didn't like about the figures to always try to stay positive, right? Anyway, my goal now for the next episode is to come up with a few ideas of things I liked from both figures and to meld those together to make a new figure, as well as thinking about some of the challenges both figures had and propose new solutions to overcome those challenges as we make a revised version of those two figures. So the first thing that I want to make sure that I do on these figures is to have an angle, to have a story that I want to tell. And I think the story is actually this headline from the report that the figure came from. COVID-19 vaccination intent is decreasing globally. That should be like the title of this figure, right? And then we could have a subtitle again between the title and the body of the figure that would be kind of like what we had for the legend of the chart R version, or it was actually the title of the Ipsos version, but getting the text right. So I think that would be a good subtitle to make it clear to people what the actual question was as we're measuring, you know, vaccination intent globally. The next thing I want my remixed figure to incorporate is that alternating colored background, maybe we'll do something with like a gray and a white, perhaps to be a little bit more subdued than what we saw in the chart R version that might also help us to find more contrasting colors to get the August and the October data to be more distinct from each other, and perhaps easier to recognize for their time points. So thinking about that problem of having total on the Y axis, I think what I'd like to do is remove total from the Y axis and to use the legend scheme that was found in the Ipsos figure where we used those text boxes to indicate the legend and to draw vertical lines that have the colors of the two dates of points that then connect up to those two text boxes. I'd like to give that a shot and see what we get there. It might not work as well as I think, but it's worth a shot. Next, I'd like to remove the X axis text. I'd prefer really to get rid of the numbers next to the points, but I think those are important for a more general audience so they can see the numbers next to the points and also for, you know, any viewers that they're not again scanning vertically on the figure to try to connect the point to the number down below it. Also, what we'll do is I'll go ahead and try to make the figure square to have that square orientation. We have a more compact framework so that the country name is closer to the actual data. So those are my plans for the next version of the figure. Please make sure that you're subscribed to the channel so that you know when that episode is released, and of course we will look at that and it will not be perfect, but it will be our next iteration on these two great figures. And, you know, from that critique of whatever I make, we'll make another version of the figure and maybe another version after that. Who knows? I think this is a fun set of data that's really allowing us to explore different aspects of data visualization and using ggplot and the R software environment. I'd strongly encourage you to take one of your figures or one of your favorite figures from the literature and do a critique like I did on these two figures, and then if it's your own figure by all means go back and see if you can't make that figure better. I look forward to building this next version of the figure with you and for you to then give me feedback. I think that's a really important thing is that I can make all the figures in the world, but until I share it with people out in the world, I don't know how they perceive it, right? And so again, that's a place where the developers from ipsos or chartar make themselves vulnerable, right? They release this to the world and they then get feedback on whether or not we like the figures. Well, we need to kind of get feedback before we release it to the world. So definitely I will be looking for your feedback and you should also be looking for feedback of your figures with your peers in your community around you. All right, keep practicing and we'll see you next time for another episode of Code Club.