I hope you've had a wonderful first day of sessions here at DrupalCon and thank you all for making your last session of the day here where we are going to talk about Dungeons & Dragons and Drupal 8th edition. So allowing me to introduce myself, my name is Toby Hagler. I am Director of Engineering of our Product Delivery Group at Phase 2 Technology. For the quarter century or so, at least I've been playing Dungeons & Dragons pretty avidly. So needless to say, it's a topic that I really enjoy and I wanted to be able to talk about two of my favorite things here at DrupalCon. So why is a D&D character creator the perfect example of a Drupal project? So I've played D&D as long as I can remember. I used to be able to quote rules and page numbers from the player's handbook. I could create a character without looking up the rules. The point is, it's a thing that I really, truly understood, something that I've been involved with for a long time, so I know the problem space really well. So learning a new language or a framework, a CMS, or even a new version of something, let me focus on solving problems that are endemic to that language without also having to figure out how to solve the problems of the problem space that I'm trying to build something for. So when I stumble, I don't have to figure out is it the technology? Is it my approach? Is it the content domain, you know, like whatever it is? I know it's going to be related to the actual technology that I'm trying to learn. So building a D&D character generator, it helps with a lot of things, you know, learning a new framework, learning a new CMS, a new API, like field API, I'll talk about that a little bit later, or even something a little bit more abstract like data or content modeling. If you want to get really meta, D&D can even help you learn how to create a meaningful presentation by creating a presentation about a subject you really know and love. So in what I kind of refer to as my college days, I learned a lot about C and C++ by building a command line generator, a lot more about C than I learned from actual class. I learned Perl, I learned Perl, I dabbled with Python in much the same way. So it's also how I learned PHP and how to use my SQL to store records. I wanted to learn JavaScript so that I could create a better UI for a D&D character. So let's say you want to learn how to build a site on Drupal 8, or you want to tackle something that's new to you in Drupal 8, like field API, or the new versions of web form. So let's use a D&D character creation as a project to help us figure out the most common tools of Drupal and content management. So since we already understand what goes into D&D character creation, we know if enough about the problem space to get started. So also I want to point out this is not going to be just about learning Drupal. So don't fret if you're already a high-level Drupal adventurer. There's still going to be a lot of treasure to find. Thank you, yeah, context is everything. So every adventure begins with you're sitting in a tavern when you hear rumors about trouble brewing in a nearby village, or something like that, right? It doesn't have to be necessarily you're in a tavern, but every campaign begins with a story hook, something that pulls you in. You don't just jump right into the game and start fighting goblins or uncovering treasure, right? You need a plan and you need to know where you're going first. So it's not really any different with a Drupal project. You need to kind of break it down, plan things out before you start downloading modules and installing things or writing any custom code. So we're going to examine what goes into building a character and how we would do these things in Drupal. So first of all, you need to figure out what you're building and what you're not. So identify your scope. Here we're going to be building something that's going to let us build and track a character. That's all. We're not going to focus on running an entire campaign. We're not going to build our own local version of DnD Beyond. Although interestingly enough, I did that in Drupal 5 when the SRD35 database was released. It was pretty slick. But DnD, let's face it, DnD Beyond is just a lot better. So we're going to concern ourselves with the data points involved in DnD character generation, capturing just the minimum input you need to be able to create a character, all the things, all the entry points that belong to a character. And to do that, we're going to try to maximize the number of things that we have to calculate in order to display the right totals for everything. An interesting concept to think about, especially when we're talking about the capturing the data that we're going to input and then being able to output that later, if you look at the character's record sheet, it's a wireframe, right? That's all it is. So we're going to use this as a wireframe. The character sheet is something that displays the functional elements of our DnD character page and hopefully it's going to illuminate the path for planning our overall functionality. So a DnD character in a nutshell, what is it? So I kind of like to work backwards when I'm planning things out. I want to know what it is that I'm trying to create. So I use the character sheet, sorry, or wireframe here, to know what a DnD character node page should look like and how I can figure out what data elements I'm going to need to display later. So given that our character is just a content type, really, you're going to have to have a node to display all the fields of our character's attributes. And this is perfectly fine when you're viewing your character on a tablet or on your phone. But what happens if you want to print that sucker out, right? So let's say you want to be able to put down the computer and game like it's 1979 with just pencils and dice and paper and tons of Dr. Pepper. What are your options for building a printable character sheet? So we're going to want to talk about the two different types of media that we want to consider a little bit later on in the session, output towards the end. But because now we need to know what our players are going to enter first in order to kind of get the desired output later. So the input of a DnD character, there's a number of ways to approach the input for your builder. You may just want a simple interface for entering content so that anyone could just manage their character with the same ease as managing it on paper. You're filling in the blanks. Or you may want to have a character wizard, not a wizard character, but a character wizard. Something that's going to take input and conditionally change the remaining available options as you go along.  So if you're choosing a druid or a cleric, it's going to limit you to just divine magic. And even then that's going to limit the number of spells that are available to your character, right? So knowing our content entry model may actually change the rest of what we do. So we need to identify the order of things in which players will input their data. So let's look at option one for just a second. It's just going to be a straight node edit form. So all fields are entered sequentially. They're all entered at once. One just great, big, long, huge form. We all know and love node edit forms in Drupal, right? Like the prettiest thing in the world. No? I spend a lot of time thinking of node edit forms. So you can do a couple of things. Like you use JavaScript to help update some of the fields based on choices. But in the end, you're just simply entering the content attributes directly into the character sheet, right? You're just filling out the form. So I'm probably going to spend too little time actually talking about the importance of this approach. But it's the most basic option, so there's not really a whole lot to enumerate on. So even if you want to use web form later, defining the node now is going to let us have all of the data points that we need to capture later. And then in that way, if you do use web form or something to fill it out, you can actually come along and edit it later whenever you've taken a level drain or you need to make an update because you've leveled up finally. So we're not exactly done with what you've created the content type in the fields. So here's what you have another chance to learn in Drupal. There are things like config management, the use of the features module to capture all of your configuration and be able to store that in code. So as a perfect corollary to this, when the weekend that Drupal 7 was released, I sat down on my back porch and actually just created the D&D character module in order to learn field API, to learn features. I wanted to learn some of these new D7 concepts. And yeah, so over the course of the weekend I just kind of packed out a D&D character module that lets me store compound complex fields in a single field widget. And I'll kind of show that off a little bit here in a second. But yeah, I mean, using features in CMI for something like this, you learn how to export content types in related fields so that you can actually reuse the content types you declare on one project and be able to take it over to another project and reuse code, hopefully. The other option gets a little bit more involved pretty quickly. So let's say you want to use the new version of webform. So if we go with option two, for instance, and we want to have a multi-step form process. It's going to be more like a form wizard. You want to figure out how to break things out into the main steps, which will be the form pages. And then for each individual form page, a list of all the input items that we need for the user. So webform for Drupal 8 is kind of a newly reimagined version of webform, which uses a YAML structure underneath internally for managing the form. So you can actually edit the form directly from code. You don't have to use the UI. It's pretty cool. Another cool thing is that it includes a lot of features like multi-step forms and wizard style input out of the box. So also every field has conditional logic that can be associated with it. So you can choose to show or hide fields based on previous selections. And sure, you could do all of this programmatically yourself. But if a module lets you do it through a UI and save you a couple of hours of banging your head against form validations, then cool. So the multi-step webform begins with the basic input of your character's abilities, the race, other basic descriptions. And so here, you capture the total effective level of the character, his alignment. And knowing things like that are going to affect choices later. So next, we're going to ask for the class or classes, if you're going to multi-class, by level. It's very useful for multi-classing. Also, you're going to want to be able to restrict classes based on a subset of classes that are allowed by a particular race or alignment. So after that, you want to capture maybe other things. Like if you're higher than level four, you get additional ability scores that you can assign. And as you advance in level, you might want to be able to change additional things. If you're creating a 10th level character from scratch, because your 11th level character died in the campaign because your DM is merciless, then you can do all of this through the wizard and be able to start from there. So step four would be identifying the class specific abilities. They start to vary widely. Some classes have magical abilities. And every magic using class does vary a lot. You have divine spells, and arcane, and all this other stuff. So now that you have all of that captured, then you can refine the final details.  And that's all multiplied out by level, perhaps. And so then as a final step in our web form, you figure out what your character's wealth is. You buy your equipment.  So all of these things are all interconnected, which is really useful to know when you start talking about content models and computational models. So regardless of which input methodology we choose to go down, you want to be able to focus on managing as little user input as possible and calculating the rest in order to display a fully developed D&D character. So now that we know what content we need from the user and what content we need to be able to print out, we need to do some gap analysis between input and output and identify what's going to be calculated or computed from user input. So if you look at a character's stats, you can determine what's computed, what's entered, and then we can build the content model for the character. So what do you have? You have race, you have class and level, you have your ability scores, alignment. All of these things matter in terms of your character's stats, but they also matter to the game itself. So you input those things, but all of those things get modified. You have racial modifiers and traits. You pick a dwarf so you suddenly know three other new languages that you wouldn't have before. That's going to matter later in the game. Class skills and hit-dye, based on what class you pick, you're going to have more or fewer hit points. Ability scores, skills, saving throws, all of these things start to matter. All of these things might limit the class options that you have available. Choosing your equipment is going to modify your armor class or your THACO, if you're still second edition. So all of this, and even outside of the data model, the computational model within Drupal, all of these things affect how the DM creates a story hook, something that's going to appeal to your character and create adventure ideas, and how NPCs react to your character, because honestly, it's all about the content of your character and how that's going to go into the story. So again, determining your relational model, how different points of data relate to each other, how they're going to affect each other, that's all key and vital before you even begin writing a first line of code. So taking a quick look at the actual character content model, not the computational model, but just the basic things that you want to capture from users. At first glance, a D&D character is just a standard node, right? So we create a custom content type called D&D character. You have ability scores, that's just an array of numbers that range from three to 18. You have hit points, hit dial, these are all just integers, integer values. You can very easily slap a field on a node and capture these things. Class, race, and alignment, they're just items from a select list. So things all look pretty basic until you start doing a deeper dive into the content model. You realize that ability scores are not just an array of numbers. It's an array of numbers that are modified by other things, and sometimes you care about the modifications to those numbers. So you have the 46 drop one score that you get as your base score.  You have racial bonuses. You have level up bonuses. Those are all important to capture because if you have a level drain, because you run into a vampire later, you're going to have to readjust some of these things. So you can't just merge these down into the computer fields. Race and class. They limit the options and add additional skills to your character. So especially selecting a class, it changes everything else from that point on in terms of what you have to input down the road. So even though the choice to create your character using a content type might be questionable, maybe we want to consider creating a node plugin to help handle some of the calculations and override values during form validation or submission. So there's a little ounce on the scope of a site building session, but I want to make sure that all the DMs that are out there that are going to be building this when you get back home are going to be aware that a node plugin might be extremely useful for being able to handle a lot of the computations. Last thing I want to talk about data design. Specifically, I want to talk a little bit about atomic design because that's going to go a lot deeper into some of the ability scores that we're going to talk about later. So you're going to hear a lot about atomic design and a more traditional design in front end discussions, but it's also very applicable to data modeling. So if you're interested in atomic design, there's actually a Pinterest component design session tomorrow at the same time that does a much deeper dive into things like pattern lab and atomic design. So it gives you a lot more of the concepts that I'm going to talk about here. But in fact, front end tools like pattern lab are more successful when your data model and the user interface designs are in sync. If they're both following the same data model, things just kind of magically work together. So understanding atomic design is really useful when implementing all the fields and data points for a D&D character, which we're going to discuss next. So if you think about an ability base score, that thing you rolled for earlier, that's just an atom. An ability score, the actual score is made up of the base score, your racial bonus, and including that modifier, that's a molecule. So you start building up all these atomic components. So the collection of all six abilities on your character record sheet, that's an organism. The organism of ability scores, all of your feats, skills, and spells, those are also organisms. Those start to constitute your template. Finally, you can theme up your template into something beautiful and printable and then you have your page. So that's just kind of an introduction to some of the atomic design concepts, but those things are really helpful when breaking apart some of the constituent components of a D&D character field, for instance. So I do want to talk a little bit about fields, entities, and relationships, how everything can kind of work together and come together. So now that we have our data in computational models, and we have a project plan, you can start looking forward to Drupal implementation. So for this particular project, we're gonna create a D&D character. We're gonna be mainly concerned with the fields and the data values of a character content type. Specifically, we're gonna figure out how we're gonna turn basic content entry into complex relational data model and be able to talk about a complete and accurate character sheet that then you can throw the computer away and actually play your game. So I wanna talk a little bit about fields in general. You know, how you can turn very simple atomic fields into something a little bit more usable and transmuted into something that we want for our character sheets. So just like the fourth level transmutation spell, polymorph, field API, and working with complex compound fields kind of seems almost impossible to attain at first. But I do wanna talk about, this is something that does exist outside of D&D and you face this all the time, you may not even realize it, but when you're importing statistical data, collected over time and other factors, that's compound values. When you have financial terms and rates in managing a ledger, you're dealing with compound values. When you're building a recipe book, compound fields are not all that uncommon. You have the name of the ingredient, the amount of it, the metric that you use, maybe even some little note about it. So all of these things are sort of compound field values that become the organism of our field later. So once again, building a D&D character generator lets you solve all the same sorts of problems that you may have to face in real world projects. Another good example that I wanted to point out is the address field. It's a really good microcosm of compound values. If you think about it, if you add an address field to any content type, it's just a field, visually. That's all you're adding is you're adding the address field, but the address field is made up of all sorts of constituent components. The street one, street two, city, province, state, zip, postcode, and some of these things don't necessarily always apply based on the country that you're in. And that's one of the nice things about the address field is that actually depending on the country you pick, it'll change zip code to postal code. It'll change state to province. And so it does kind of do some interesting things based on conditional logic. So again, somebody had to solve the same problem that you're having to solve when you create a D&D character. So let's take a look at what this may look like. So with an ability score, they're always listed in a fixed order, so that makes it kind of advantageous for us. This means we don't have to have a separate field for every ability roll, right? You don't have to have a strength field and an intelligence field or a charisma field. You can just kind of have one field with a cardinality of six. But what about all the modifiers, right?  So how do you calculate all that? So there's actually some pretty easy ways to calculate the things that are not obvious in D&D. For instance, I like to give this example when I talk about calculating modifiers. All you do is you take the base score that you rolled, divide it by two, subtract five from it and round down. And suddenly you don't have to do this lookup table that's on page 34 of the player's handbook every single time. You could just do simple math in your head, right? Everybody prefers that to a lookup table. I'm gonna take a quick aside here because talking about ability scores reminds me of something I always like to do as a DM. So when players are starting out, especially when they don't have a lot of gold yet, I always like to let them run into a back alley sage who offers discount potions. Really cheap. Like bull strength or eagle splendor. Now they're cheap, so they don't give you the plus one of the 1D4 plus one strength bonus. And you're like, well, that's fine. It's a third of the price of the gold. But the problem is these particular potions are cheap. They're also habit forming.  So not only do they not get the plus one bonus, they can also lose an ability point until their addiction is taken over. And you just treat that like a magical disease so it could be cured. But every time I talk about abilities, I like to think about ways to take those away from players. Yeah, first potions, always free. Tell your friends. So some other compound fields have kind of alluded to already, but class and level, they go hand in hand. You don't really have a level on a character sheet. You don't think about it this way, but you don't actually have a level. You have a level of a particular class because you could multi-class. You're a 10th level fighter and a third level sorcerer, which means that you're effectively a 13th level magically enhanced fighter. So that's something to think about that class is actually a compound value. It's not just a select item. Skills are the same way, just like I described the recipes. You might actually have the name of the skill, how many ranks you've purchased in that skill, a Boolean to determine whether or not it's a class skill. Based on the class that you picked earlier, or one of the classes you picked earlier, the ability modifier, if you're looking at dodge, for instance, it's modified by dexterity versus arcane knowledge, which is modified by intelligence. So you have different things that you have to account for, even in something as simple as a list of skills. Just another set of potential compound fields, feet. Feets are pretty simple as far as the data is concerned, not so much in the actual role-playing event, but you have a name, a description, and maybe a list of the effects. So one last thing I wanna note about compound fields, going back to the concept of using D&D as a known problem, we can now look at the different options for what we need to help manage some of these compound fields. So here's a couple of different ways that you can go about it. The current D&D character module that I generated, that I made for Drupal 7 years ago, it creates a custom field API set of fields. So there is a D&D skills, a D&D abilities, a D&D feats set of fields. And they take the compound form elements and they do all this kind of other stuff to keep track of everything. And so then you're just adding that field to your character sheet. But let's assume, for instance, the D&D character module doesn't exist. So how do you handle compound fields in a site building way? So paragraphs in web form are two really good ways to do this. Paragraphs is actually a really great module for this. I mean paragraphs, essentially what it is, it's a field that is a collection of other fields. So you can basically pick the individual atomic field items that you want. Say an integer for your skill points, a text field for a description, and a select list for choosing the skill that modifies it. And then that becomes, say, your skill field. Web form is a little bit different spin on it, but you can also create custom fields as needed as well. And of course, I did talk a little bit about Field API. I can't really talk about solving compound fields without at least mentioning that Field API does give you the ability to create new custom fields with multiple input elements. And saying that it is possible. There's a lot of really good documentation on Drupal.org if you wanna go find out about it, or we can talk about it in a separate session later. So how do all these different input options look in practice once you have now created the compound fields and the content types and talked about the different approaches to input for your characters? So let's say you wanted to do something simple with paragraphs. So collecting the compound values of each field can be a little bit tough, but paragraphs will make it really easy through a UI. So this screenshot, it's a paragraph field that manages the ability scores for your character. It's just a single field on the node as far as the node's concerned, but with all the atomic fields contained within, and then you can just limit it to exactly six instances of that field and then you have your ability scores. Since we're assuming kind of a simple content entry system, nothing here is really calculated. Everything is just kind of open for the user to come in and fill it out. But there's nothing to stop you from using JavaScript or hook form alter to make some of the fields read only if you don't trust your players, because they're all liars, let's face it. No, I swear I rolled 18, six times in a row. It happens all the time, every campaign. If you're going with a web form input approach, it's just gonna use stock form API fields, but you can still do a lot with those. And since you can break the form into multiple pages, you can kind of take advantage of a lot of form validation to limit the ability or the availability of some of the remaining form steps. This is actually a screenshot of the D7 version that I did a while back. So here you can actually see the content type. There's about 30 or 40 some odd fields. Some of them are just very basic fields and some of them are compound fields, like the insets there. So you have class and level, you have armor, for instance. The name of the armor, the things that it modifies. Even though it's just a collection of integers and text fields, it's still a compound field. So yeah, so if you're interested in talking about field API, those are the main three steps for creating a custom field element. That's actually much harder than it looks there. So just a couple of brief examples based on our computational model. So yeah, skills, spells, and equipment are really vital things. There's a lot of computation that changes a lot of things about your character. So your character may or may not even have spells based on class and level and everything else. Even then, the subset of spells are gonna change within class specifics. Similarly, thieves are gonna have more skills than everyone else, which is super fair. And so the number of ranks and the skills that are available will vary a lot based on your class and your intelligence modifiers and all these other things. So race also makes a difference in the number of languages known, which is gonna affect a lot of the outcomes for other role-playing situations. So again, even though we're not dealing with data directly anymore, you can think about the game as content and so this is affecting the content of your project. Also, the equipment that you buy is gonna affect your armor class and it may influence actually the way you fight or don't fight depending on what you could afford or what your class allows you to wear. Inevitably, you may have to write some code. But you wanna determine how much you're gonna wanna spend doing form validation versus just trusting your players to enter good, honest data. And that's a problem that you face a lot of time on projects where you're not really sure, do I wanna spend three days doing form validation or do I just wanna say, hey, editors, make sure you don't enter stupid values into that field and they're like, okay, got it, yeah.  So there's always that kind of give and take of figuring out how much time you wanna spend on something versus how much value it provides. So on top of that, if you're using something like web forms, you can use conditional logic that's built into every single form element that changes the flow of your content entry. So for instance, only a warlock or a cleric should be required to specify a patron. It's available for everybody else, but for them it's required. So it's just a little thing that's required in fifth edition. So yeah, so those are also some additional things to think about. So pulling on all together, how are your players gonna see this final computed data from the thing that they input earlier? Well obviously, you can view this on just a standard node page. You can create a node template just like you've done on every other project. You can create a node-dndcharacterhtml.twig file.  And you can make it look really good and make it something that's tablet friendly so that you can have it there on the table so you can look things up. You might add CSS as a library and I would actually suggest creating this as two separate libraries because kind of following the idea of a separation of concerns, you might have one CSS file that manages the output of your compound fields, right? And then you have one that manages the layout and the style of the node page itself. So, but going back to considering the, how users will consume your data, how users will consume your content, think about are they gonna be looking at this on desktop? Are they gonna be looking at this in mobile? And this comes up a lot of times when you have discussions about responsive design. Do I wanna create a mobile app? What about smart devices? What about other things? Well, come on people, what about printing it out? And sitting around the table with something tangible in your hand that you can scribble on with a pencil and do a doodle of your character and all sorts of stick figures fighting. That's what the back of the character sheets for. So, if you have a really good node template and you use, don't forget, there is the media attribute in CSS that you can say, for print, here's a separate set of CSS. People forget about that, but it's nice to be able to point that out here. And you do see this on a lot of really good recipe websites. They'll have a printable CSS because they've considered how users are gonna consume this.  Likewise, you may wanna do that here. But what if you want something that's a little bit more closely resembling the official character sheets? Like, some people are brand nerds and they really want that character sheet to look just like the one that comes out of the back of the player's handbook. So, PDF might be a really good option for you here. There's a lot of modules that actually help this. Some that are kind of in questionable states, but things like entity print, which uses a really widely used WK HTML2 PDF library. It's really easy to remember. To take essentially the HTML output of your node, so if you have a really well-defined node page, it'll actually convert that using WebKit internally, turn that into PDF, and be able to print that out in a really good, character sheet. One of the things that that helps overcome is if you've ever tried printing out something that looks beautiful on a screen, but suddenly you don't get backgrounds or colors or some of your font choices, it handles that for you really well. So, here we have the final project for our D&D character creator. And so, hopefully, you've learned a little bit about things like how to determine what fields the D&D character is gonna need, how to figure out how to calculate the additional values that you need to be able to output, how you might handle some of the intricacies of your complex data. And then, if you need to do some custom UI work, output is the thing that you're most concerned about in the end. Any questions? That is... There's actually a microphone right here in the center of the room. That way the recording can capture your question. Yeah, I'll mention first that the WKHTML to PDF library works with DisplaySuite. And if you grab its CSS, you can actually do your layouts and play with it. Ah, I did not know that. So, it actually integrates really well with DisplaySuite then. Yeah, you can do a Views to HTML. You can grab the HTML from a View and be displaying a set of nodes with DisplaySuite and pull it in. So, you can create a Display Mode that is PDF. Oh, yes. Oh, so yeah, I'm learning things now. And then on save, you can have a rule that says on save when the status is signed, then it goes ahead and produces the PDF and stores it as a private file. And yeah, oh, that's, yeah, it's fun. And the other thing that's kind of a fun way to do the assembly is with views bulk operations. If you go ahead and assign like a session specific kind of variable to your user account so that as you select entities, it can store them off. You could have them, for example, select all their skills and it will, when you hit next step, it'll have saved them and show you everything you have and then if you treated your skills as entities, you can be using that to assemble a node with the correct entity references and normalize your data. So. Yeah, also, that's a great approach. It's fun. You could probably use something like rules too to trigger things like if, Yeah. You know, like, especially if you need to use, like, you know, skills synergy for instance, you can set a couple of rules for that too. Yeah, and I'll use rules link and then put a, you know, just make the display for the link and X and so you can actually remove the skills that you want to take off and on and then. Oh, nice. So it's a fun one. Fun combo. Yeah, I'll check that out. Thank you. I have a question. Early in your presentation, you mentioned lookup tables. I'm wondering if, you know, if you, then being replaced by a formula, you can use to calculate on your data. Do you know of any Drupal modules or way of approaching actually computing lookup tables themselves? Hmm. I don't know of any modules off the top of my head that would let you do that. I know, I know in previous versions, there were things like, you know, I think it was a table module that would let you essentially just create and modify a table in SQL that you can then make available to views and so you would be able to have maybe views do something like that. I don't know that that necessarily helps in the context of a D&D character node per se, but you could probably do something like that.  Thanks.  Is that right? You said you stored them as an array? Yeah, so to clarify, what appears on the node for abilities, for instance, is a single field called, you know, D&D character abilities. But that field, of course, in the definition of the field, you set it to a cardinality of six. So you have, you know, all six of those. Okay. And then that field itself is actually a paragraph, which then each instance of that field then has the base score, the racial modifier, the, you know, all these other fields. And so it's, the single field instance is maybe potentially created from six different fields, you know, energy values, and then the cardinality then lets you have six sets of those. One more thing, you mentioned this as a node plugin. Can you speak, I know you said, hey, you know, it might be a little bit over this, but speaking of that of being a, when we view the node, you do these calculations real-time on view or what would you do with the node plugin there? So it gets a little involved pretty quickly. But yeah, you can, you know, so like there is, you know, the node class that does a lot of manipulation of loading fields and things like this. So if you say, for instance, you know, when you're loading a field as part of your node and you're getting those values, you can do a lot of those calculations on the fly. Of course that gets, you know, cached optionally, hopefully. And so you can say, you know, you store like just the very basic fields and then recalculate these things whenever the node is loaded, you know, using that node plugin. Cool, thanks. So in using D7, I got really fond of field collections and you're using paragraphs and I know that this is kind of an, actually a relevant issue right now. Can you tell me why you prefer using paragraphs over field collections? Like I must put this in a sort of vacuum and not just because the community decided that paragraphs is better. Yeah, they do very similar things on the surface. Ultimately what they're doing is they're kind of, you know, collecting a lot of individual fields and putting them in a bag for you that you can kind of then carry along as a single field. One of the things that I like about fields, about paragraphs as fields, is that it's very tightly integrated with entity API. So you get a lot of the benefit of entity caching and paragraphs are themselves entities that you can then use very easily in views. So you can search for, you know, if you wanted to create a view, list all of the characters that have skills above, you know, whatever value. So that's one of the reasons that I would choose paragraphs over that. Partly to just historically, like especially in Drupal 7, I found that paragraphs does perform a lot better because of some of the inherent caching that it takes advantage of within entities, so. Because of its unfortunate name, I just stuck with what I knew, so. Yeah, yeah, and field collections, the name, right, those sounds like exactly what you need. Yeah, it does, it does. But I mean, I've grown really comfortable with the use of paragraphs over the years. I find that the paragraph templates, for instance. So if you, you know, something that I did mention when we were talking about creating a node level template for your character, you can also have a paragraph level template for each one of the skills. So if you wanna have, you know, say depending on the display mode, you can have like a single one line, very minimal version of your ability scores, or you can have that big block that appears on the side of your character sheet. So some of the theming with paragraphs is pretty easy to use too. Templating a field collection is definitely not the funnest thing in the world. And getting it to play nice with views doesn't always work, either. Been there? Been there. Thank you. All right, thank you. I want to see your views. All right, any other questions? So one final question. You mentioned polymorphing your data. If you have chosen transmutation as your restricted school, do you have an alternate method? Wow, thank you. Thank you for, yes, sorry, that was a joke. Peace out. Thank you very much. Mic drop.


Hi everyone Sean with jazby's case breaks calm here doing a 2019 Don Russ football hangar box one box break random team number four Where we're also giving away 18 spots in a four box. No huddle break Coming up next mosaic. No huddle. So here's how it's gonna work We sold 32 spots in here. No veteran base card ship to blaster or a hanger box So nothing crazy in here at the end of the one break. We will randomize all 18 customers names top 18 names We'll get these following teams in order from the chargers all the way down to the Giants So we're gonna go ahead add a second sheet onto this list So there's the teams one through 18 We'll randomize all the customers names in the break at the end of the separate from the randomizer for the break itself and add that in here and Those customers will get the corresponding teams So back to the break itself Here's a list of customers from Oliver down to last spot mojo Mark Haraki and the teams from the Arizona Cardinals Down to the Washington football team So dice roll good luck Six and a six twelve times one two three four five six seven eight nine ten eleven and 12th and final time from Sean down to Adam cupperman Now twelve times on the teams one two three four five six seven eight nine ten eleven and 12th and final time from the Colts down to the Denver Broncos So this is the hangar box is 2019 Don Russ So chances at 2019 draft class rookies Kyla Murray true lock Dwayne Haskins Daniel Jones No trade window on this, but let's go through it so that it's all on video to see who ended up with who I won't read out Everybody since it is just a filibrate But you can see New York Giants there Raymond de Jesus Washington football team Dwayne Haskins Franklin Mackenzie Arizona Cardinals Sean Maddock Let's see. What else did I miss? Denver Broncos down to the bottom Adam cupperman chances at Drewlock there Arash just a one box break So let's print and rip on this Cool, and here is the box itself right behind there. You can see no huddle four boxes that we're gonna be doing Paper Jam try to fix that afterwards Well, good luck everybody Bunch of veteran base in the front And then it goes to the parallels Like Jersey Kings Bradley Chubbs or Don Russ threads Bradley Chubb for the Denver Broncos and Adam cupperman Trace McSorley rated rookie press proof for the Baltimore Ravens Matthew Syrah David Montgomery the rookies for the Chicago Bears Richard Farrottis. He's all backwards What are the backwards cards stop? There we go? Cool DK Metcalf elite series rookies for the Seattle Seahawks and Sean Maddock Keem Butler the rookies For the Arizona Cardinals and Sean Maddock White hot rookies Dwayne Haskins going to the Washington football team Franklin Mackenzie and that'll do it So go back to the randomizer So we're gonna randomize now. We're gonna take the list original customers and we're gonna paste it after randomizing it here so Good luck everyone from Oliver down to Mark Haraki last spot mojo dice roll and Top 18 12 again top 18 names after 12 times one two three four five six seven eight nine ten eleven and 12th and final time. Obviously. I'm not gonna be able to show all the or hide it Because it's already showing 10 through 18 on here. So everybody from spots 19 down to 32 after this Randomizer. Thank you very much for getting into it. Hopefully I can do better for you next time, but congratulations to these top 18 including Richard ferrata's Who ended up with the? Los Angeles Chargers my Los Angeles Chargers and all chances at Justin Herbert So let's copy this whole list over Boom, and this is how it worked out So Richard ferrata's ended up with the Chargers Raymond de Jesus with the chiefs Matthew share with the Packers Derek Noel with the Raiders Sean Maddock with the Buccaneers Adam cuproom with the Ravens Sean Maddock with Steelers Franklin Mackenzie with the Broncos Richard ferrata Vikings Glenn Campbell with the Cardinals Adam cuproom with the Lions Sean Maddock with the Bills and the Rams Richard ferrata with the Redskins Adam cuproom with the Jags and the Jets Excuse me Oliver Soria with the Bears and John Danine with the Giants Congratulations guys Mosaic no huddle four box break coming up next. Oh There's break credit as well. What are we talking about Joe? Oh There you go first three without teams got $50 in break credit Didn't even know that There we go so let's go back to the list because Ryan herald Richard ferrata's and Ryan herald Also You guys got yourself $50 in break credit each So let's go ahead and put that on video 50 bucks Look at that 50 bucks and 50 bucks So Your break credit will be sent out to you guys coming up a little bit later on as well.  I'm Sean jaspyscasebrakes.com. We'll see you next time


Labour agreed to pay substantial damages to seven former employees who sued the party over its response to their appearance in the panorama documentary portraying Labour as institutionally anti-Semitic. The background here gets complicated, as I've just said, stay with me. So the original programme, which aired almost a year ago today, included interviews with former members of Labour Party staff. It was titled Is Labour Anti-Semitic? And the ex-staff members gave accounts that suggested it most certainly was. We did shows on it. Probably most of you will have watched that episode. Now, in response to that documentary, the Labour Party put out this particular statement, or at least a Labour spokesman said this to the media. It appears these disaffected former officials include those who have always opposed Jeremy Corbyn's leadership, worked to actively undermine it and have both personal and political access to grind. This throws into doubt their credibility as sources. So that was the Labour Party spokesman saying you shouldn't really take these people at their word. They're politically motivated. This statement from the Labour spokesman prompted the ex-staff members who had appeared in the documentary to sue the party for defamation. Now, a long legal case ensued. Party lawyers, according to NEC sources, said that the Labour Party had quite a good chance of winning this, of saying no, it wasn't defamation because ultimately what the Labour Party said was true. But with the party now under new management, so Keir Starmer in charge, obviously we've got a new general secretary or the Labour Party has a new general secretary, David Evans. They today instructed lawyers to settle with the ex-staffers, so to give compensation and to apologize. This is the statement that was given in court by Labour Party lawyers. So before the broadcast of the program, the Labour Party issued a press release that contained defamatory and false allegations about these whistleblowers. We acknowledge the many years of dedicated and committed service that the whistleblowers have given to the Labour Party as members and as staff. We appreciate their valuable contribution at all levels of the party. We unreservedly withdraw all allegations of bad faith, malice and lying. We would like to apologize unreservedly for the distress, embarrassment and hurt caused by their publication. We have agreed to pay them damages. So that's a complete self-flagellation. They're really on the part of the Labour Party. They're saying, we were completely wrong. They were completely right. Not only were they completely right, they're brilliant people. They're always so hardworking. This statement from the Labour Party has angered many people on the left. Why? So on the one hand, the lawyers, according to NEC sources, said that the Labour Party would potentially win this case. And now they've settled a figure which is being reported is up to half a million pounds. That's members money. So that's quite significant there. More than that though, I think it's his apology. It's saying you were right. The Labour Party was wrong. And that's because many Labour members have seen what they think is evidence that actually maybe some of these people were grinding a political axe. I'm not sure if you can mix up the phrase in that way or had an axe to grind. And let's get up some of that evidence. So we have also covered this on this show a lot. It was in the Labour Leaks that many of the people or the so-called whistleblowers were portrayed as being very much politically motivated and as often sitting on anti-Semitism claims as well. So let's go to a section of article by my colleague, Charlotte England, which covered this in detail. And much of this concerns Sam Matthews. We'll talk about him on this show. I'm sure he'll come up. He was head of complaints. He played kind of the starring role in the documentary. So on them being politically motivated, the report says Matthew ran a project to suspend Corbyn supporters during the 2016 leadership election. It also says he ran a project during the 2017 general election to secretly divert funds from key marginal constituencies to instead protect MPs who were his factional allies. He suggested that he should be paid extra for his work on this, mentioning that he left £100,000 in the project although it is not clear what this means. Now, that's a quote from Charlotte's article in on Navarra from the Labour Leaks. But if you've read the Labour Leaks as we've discussed on this show, this isn't just speculation. This isn't one person's word against another. There are receipts for all of this, right? So you can see the WhatsApp threads where all of these things are being discussed. So it's being discussed, the idea of suspending Corbyn supporters, etc., etc. So this is someone who it appears was politically motivated. There are also suggestions that Sam Matthews, who in the documentary argued that people in the party had pressured him to let off members accused of antisemitism. Apparently, as head of complaints, he, well, it's alleged that as head of complaints, he sat on antisemitism complaints. So in one case, Matthews handled, this is again from the article, a Labour member repeated, in one case, Matthews handled, a Labour member repeated a conspiracy theory about the Rothschild and said, Jewish people are prone to cry antisemitism and heart back to the Holocaust to curry sympathy. If you challenge their views on Israel, Matthews did not think the statement warranted a suspension. He wrote to a colleague, I don't think there is enough to suspend, although we should send a stern warning about his use of language. Now, you could say in his defence, maybe just that the Labour Party, the staff hadn't been trained properly and what constitutes antisemitism, maybe there he was sort of reacting because he'd been pressured above to be lenient towards people who had expressed antisemitic sentiment online. If those are the questions you're asking, I think this tweet thread from James Schneider, so he's a former senior aide to Corbyn, is incredibly powerful testimony when it comes to, I suppose, the political wranglings that were going on within the Labour Party at this point in time and why we shouldn't necessarily take everyone at their word. So in this tweet, Fred James Schneider, who was obviously one of the senior aides to Jeremy Corbyn, he's talking about a text, an interaction by text that he had with Sam Matthews, which also means obviously there are going to be receipts for this. So when it was published that there was this Facebook Live group or Palestine Live on Facebook, there were some people sharing antisemitic material on there, including someone who was sharing awful Holocaust denial, really gross stuff, really outrageous, explicit antisemitism. Now, there's a media storm about this. James Schneider says this person should surely be under investigation or they should surely be suspended, in fact. And he says that Sam Matthews in response says, oh, yeah, we're working through this. We're working through this in an organized way. But James is like, how come you had time to suspend a Jewish activist who has said hardly anything in this group and nothing which is obviously antisemitic in this group and you haven't suspended this guy who is promoting fundamentally Holocaust denial. He says, Sam Matthews says, oh, I'll deal with it in time. Then James is saying he has to tell the media, yeah, we're dealing with this, we are suspending people. And Sam Matthews doesn't deal with this guy who has shared explicit antisemitic material for months. So I think it comes up months later. It wasn't until the following year that it comes up again. And James Schneider has to intervene again. And so you've got here someone who is saying the reason he wasn't dealing with antisemitism claims when he was, you know, the head of complaints at the Labour Party was because people above him were pressuring him not to. And here you've got an explicit example, which James says he has shown to journalists, an explicit example of Sam Matthews head of complaints being told by someone in Jeremy Corbyn's office to expel someone for explicit antisemitism and then him sitting on his hands. So to me, this is such an important bit of evidence in this case. And it doesn't seem like any senior journalists are reporting on this. You can see why a Labour Party spokesperson last year would have said, you know, these are people with a political gripe. They weren't particularly, you know, they don't really have the moral authority to talk about this right now, because they sat on complaints, etc, etc. Now, the party has basically said these people were incredibly hardworking. They've been treated appallably by the party. We're going to get them hundreds of thousands of pounds, you know, across the group. And we're going to apologise unreservedly. Now, me looking at all the evidence in front of me, that doesn't seem like a fair result. That also doesn't seem like the result, you know, that you would take if what you seriously care about is antisemitism. It looks like the result you would put out there or that you would bring about if what you wanted to do was protect your fractional allies, and make sure that this case would never get to a judgement. Because now, obviously, because it's been settled, a judge will never rule on this case. We'll never know whether or not this was liable. I'm going to bring in now a guest we're incredibly lucky to have on to discuss this, and who I apologise for having kept you waiting a while. Justin Schlossberg, senior lecturer in journalism and media. How are you doing? Good, thank you. Thanks for having me. You're also the author of Bad News for Labour, Antisemitism, the Party and Public Belief. So someone who has spent a lot of time investigating this particular topic. So this development today, so in court, the Labour Party saying we're going to settle, we're going to apologise to you, even though the lawyers have sort of suggested, according to the NEC source, that they had a good case. And if you're looking at the evidence that we've just put out there now, it seems like the Labour Party statement or the statement from the spokesperson was not, you know, wildly inaccurate. Are you surprised at this particular outcome? Am I surprised? I mean, I'm never shocked, but I'm always surprised at just how deeply corrupt the Labour Party seems to be becoming, and also how this eye-watering scandal, as you've very clearly and methodically laid out, is just receiving, once again, barely no attention from the so-called Liberal, Fourth Estate media.  And it's a reflection of just how deeply malaised our media system and our democracy has become. The way this has been reported, I think that's a really important point. I want to get up a tweet today from Laura Coonsburg, who is probably the most senior political journalist in the country. So in response to Labour apologising, she says, quite something for Corbyn to accuse Stammer, former boss of the CPS, after all, of making a political, not illegal decision. Now we'll get onto the details of what Corbyn said precisely in a little bit. But the idea that she's saying, well, how could this possibly be political? He used to be a lawyer. Now, James Schneider there is saying, journalists were aware that he has these tweets where he is saying to some Matthews, can you please investigate this Holocaust denier? And he's sort of sitting on his hands basically waiting months to do it. Now, you might think it's worthwhile for BBC's political editor to ask James what's going on, sort of a mental report in an investigative fashion, what the truth of the matter is, instead of just saying completely banal things about Keir Starmer's previous job. But again, we've seen this before, right? Yeah, I mean, unfortunately, the BBC is deeply implicated in this story. They ran a program a year ago called Is Labor Antisemitic, which is as you described, at the heart of this scandal. It was clear almost immediately to many people, not just Labour members, not just Jewish Labour members on the left, like myself, hundreds of Jewish Labour members who were on record at the time defending Corbyn's efforts to tackle antisemitism in the party. But as I've later discovered, it really did cross, the outrage really did cross partisan lines. And when I launched a campaign to just to review Ofcom's decision simply not to investigate the program after 1500 complaints, more than 1500 complaints and more than two dozen of those that were escalated to Ofcom. I was very surprised to see that a number of big people who supported that campaign were, for instance, active members of the Lib Dems. This is really an outrage of epic proportions. And the BBC produced an air-to-documentary that should never have got past its editorial compliance regime. It has one of the strictest, most wide-ranging editorial compliance regimes of any news broadcaster in the world. And it's quite astonishing the lapses of basic journalistic standards that took place. For instance, the fact that the program makers had access to hard evidence, leaked email evidence, that didn't just cast doubt on the testimony provided by whistleblowers like so-called whistleblowers like Sam Matthews, but they directly contradicted that testimony in the way that you just described. They showed that in fact members of the leader's office were repeatedly appealing to the very people who appeared on that program to take more action, to take swifter action, to take more robust action in dealing with anti-Semitism complaints and were met with not much more than a brush off. And this evidence was ignored. And that's astonishing for a BBC documentary to just not even mention evidence that directly contradicts the accounts of its main contributors. And furthermore, and perhaps even more egregiously, the BBC has claimed throughout the process of the complaints, winding their way through its own framework and then to off-common and eventually in a submission to the High Court that it offered the Labour Party a full quote, a full right of reply. Now, if you look at, as I've seen a copy of Labour's pre-borecast reply, and there are examples of this included in the article that I published today on Navarra, it's very clear that not only were key sections of that reply omitted, but it even included, for example, a statement on the record that was presented in emboldened text and even followed by the caveat that if you don't include this in your program, we will consider it a deliberate attempt to mislead viewers. And the program didn't include it. So that fatally undermines the BBC's defence in one blow to many of the complaints that were laid before it and raises very serious questions about what off-com we're doing when they took something like three months simply to decide not to investigate the program. This is Aisha Hazareka, who is a columnist at the Evening Standard and now has a show on Times Radio.  They all did such damage to Labour, a reminder that cults are a really bad thing. Now, apart from being a bit rude, let's get that up, see if you can spot what is just inaccurate here. It's that first, the first five words, not only does today's ruling, there was no ruling today. The judge has not ruled on this case. No judge has said this was defamation or it wasn't defamation. What has happened is that the Labour Party has a new leader and a new general secretary and they have conceded the case. They said, we don't want this to go any further because we think that actually the Labour Party was entirely in the wrong. One might think the reason they're saying the Labour Party was entirely in the wrong is because the people who were in charge of the Labour Party last year were their factional enemies and the people who were taking the Labour Party to court were their factional friends. I mean, obviously, you can make your own mind up about that one, but the idea that you can say this is a ruling, if you're a professional journalist, a professional Labour commentator, this ruling, there was no ruling. It's just wrong. Let's get up Corbyn's response as well, obviously. This is going to be significant. This was his Facebook post in response to it. The key bits really, the party's decision to apologise today and make substantial payments to former staff who sued the party in relation to last year's panorama programme is a political decision, not a legal one. Our legal advice was that the party had a strong defence and the evidence in the leaked Labour report that is now the subject of an NEC inquiry led by Martin Ford QC strengthened concerns about the role played by some of those who took part in the programme. The decision to settle these claims in this way is disappointing and risk giving credibility to misleading and inaccurate allegations about action taken to tackle antisemitism in the Labour Party in recent years. You can see from that he is basically saying that the original statement was correct. There were misleading and inaccurate allegations made. The Labour leaks I think he's referring to there suggest that some of these people weren't operating in good faith. This claim now has led the lawyer of the director of the show and the ex-staff members to suggest that they might now sue Jeremy Corbyn for defamation, which would be interesting because then finally we'd get a judgement on it. I kind of hope they do because looking at the evidence in front of me, I don't think what the Labour Party defamatory.


How long is it going to take? Is it going to hurt and how long before I get my results? I'd like to tell you what you can expect Mammography uses x-rays to take pictures of the tissue inside your breast All of our screening studies are safe low-dose 3d mammograms also known as digital breast tomosynthesis When you come for your screening mammogram, you will be greeted by the concierge who will direct you to registration Your registrar will verify your ID and your insurance information Then you will have an opportunity to make an appointment for your screening visit for next year after registering You will walk to the back We will be greeted by our warm and friendly staff who will collect your prescription and guide you to the dressing rooms To make it easy to find your belongings You will receive a color-coded wristband attached to the key for your dressing room After changing you will sit in a private gown waiting room your certified breast Technologist who was also a woman will meet you there and bring you to the exam room your technologist only Performs mammography exams making her an expert at positioning You and the technologist are the only ones in the room during the mammogram Before your screening exam the technologist will ask you a few questions about your breast health and review your history with you She will enter all of the information into your electronic medical record. So the radiologist has access to it She will also note anything on the outside of your breast that might interfere with reading the images later Such as moles or scars the technologist will help position you for the best images You will stand in front of the x-ray machine the technologist will place the breast on a platform Which is adjusted to match your height proper positioning of your arms body and head is key to obtaining high quality images If you are unable to stand this can also be performed while seated Finally a clear plastic compression plate will be gradually lowered to flatten the breast This might be a little cold our new machines and paddles are specially designed for improved patient comfort This ensures the breast remains still and the image is obtained without blurriness Once the breast is properly compressed you will need to stand still and hold your breath the x-ray takes four seconds The compression will be automatically released Many women are concerned that this part of the procedure will hurt It can be uncomfortable for some but it shouldn't hurt the technologist will proceed slowly Let her know the instant you begin to feel any discomfort The entire procedure is then repeated for the other breast In all two pictures of each breast are taken one top to bottom and one side to side When the technologist is satisfied with the images you are free to get dressed and leave The whole process takes about 15 to 20 minutes That's pretty quick for something that can save your life The radiologist a doctor specially trained to read mammograms will carefully review your images and compare them to prior studies for the most accurate interpretation The radiologist will report the findings to your doctor In addition a staff member will call you with the results this usually takes 24 to 48 hours You will also receive a notice in the mail usually within the week If no abnormalities were detected there is nothing for you to do until your next mammogram in one year You will receive a reminder Approximately 10% of patients will need to return for additional imaging Which might include mammographic views ultrasound and or biopsy If you are called back to have more pictures taken it does not mean you have cancer In fact less than 5% of women called back for more imaging are found to have cancer Most patients still end up with a normal result after additional imaging To put this in perspective only five in 1,000 women's screen will actually have cancer With early detection breast cancer is treatable and beatable One simple test can make a life-saving difference Make your appointment today We look forward to taking care of you


We're from the streets of Western Sydney! To the darn side, we're about to watch Shinji Ono deliver this free kick. He's got a bat once more to talk to! All he was trying to do, he still might...


On July 24th, a huge demonstration was held in Budapest, Hungary by journalists, media employees, left and progressive citizens and political parties. They were protesting what they termed Prime Minister Viktor Orban's suppression of press freedom in the country. The protest took place on the aftermath of a shake-up in index.hu, the largest independent news portal in the country. The crisis in the index began when the pro-Orban businessman Miklos Vazili gained control over its funding. On July 22nd, the editor-in-chief Shavalk Dole was fired by the management. Dole told the media that he believed he was sad because of the columns he wrote about bids at external influence. The website last month also changed its internal barometer from independent to in danger. The barometer run by the website evaluates its editorial freedom. On July 24th, protesting the dismissal, three leading editors also resigned, followed by more than 70 journalists. Hungary is ranked the second worst in the EU with regard to freedom of press by reporters without borders. There have been a number of previous instances of pro-Orban forces and individuals gaining control over media outlets critical of the government. The Hungarian leftist portal Ami Yidong stated that the total abolition of the freedom of the press is a fundamental aspiration of the fascist dictatorship of Orban. The fascist feudalizing clerical neoliberal capitalist dictatorship can only sustain itself with lies. However, the portal also pointed out that the suppression of the press was already in evidence during the rule of the current opposition and noted that the censoring of the voices of the left was a staple of the capitalist press earlier as well. Viktor Orban has been consistently weakening democratic institutions in the country while consolidating his hold on power. Orban and his right-wing Fidez party have been trying to take control of academic research in the country. Orban intends to control a network of autonomous research institutes that were third to administered by the country's premier science research academy. He had recently enacted the notorious anti-labour slave law, according to which employers can demand as much as 400 hours of overtime a year and can take three years to pay workers for the same. Orban's move to take over absolute power under the cover of COVID-19 also led to opposition from progressive sections in the country.


Fy hoi, i hawddau ymddi adolyniadau. Mae gwasiwn i gorffodau 5 yn mae mor 12-14 yn seisio. Mae'r Gwladys Uniforol, Fyhoedd, Vidriw, Cymdeithio Aelodau, neu ddorol gweithioedd Gwladys Uniforol, yn ddigwyddodd. Cyngor nesaf, Cocab Stwyth rydyn ni'n ddiogelio am ddymarchau'n ddigwyddodd iawn ar y ffordd mae'r staff iawn a'r ddarparu yn yaynodd. Felly yma dw i gael wneud am gweithio'r dgeindig. The committee will be invited to choose a new convener. The Parliament has agreed that only members of the Scottish National Party are eligible for nomination as convener of the Equalities, Human Rights and Civil Justice Committee. Can I ask if we have any nominations for convener? Yes, Fulton. Thank you. If you can come to my meeting and listen to what is going on in the morning. I am not sure whether I can make a announcement on the committee's leadership role or I would like to put some records and echo your remarks about the previous convener, and I would like to nominate Karen Adam. Thank you very much. Do we agree to choose Karen Adam as our new convener? Agreed. Agreed? Agreed. Thank you all. We have agreed that Karen is our new convener. Congratulations. I will now hand the chair over to you. Thank you so much, Maggie. I just want to say that it's an absolute honour to be able to serve as convener of this committee. I really look forward to working with everybody over the next few coming weeks, months and years possibly. Thank you very much. We will now move on to agenda item 2. It's the gender representation on public boards amendment Scotland bill. It's our evidence session with the Scottish Government. We have with us today Shirley-Anne Somerville, Cabinet Secretary for Social Justice, who is accompanied by supporting officials, Aileen Flanagan, head of the women's equality unit, Lucy Galloway, solicitor from the Scottish Government legal directorate, Annie Milovich, senior policy adviser from the gender equality policy team. Thank you all for joining us this morning. I refer members to papers 1 and 2. I invite the cabinet secretary to make a brief opening statement. Thank you very much, convener. Can I begin by congratulating you into your new role? It is a pleasure to be before the committee this morning to speak about the agenda representation on public boards amendment Scotland bill, which seeks to remove the section 2 definition of women from the 2018 act. This follows decisions of the inner house of the court of session, which were effective from 19 April 2022. The court decided that the section 2 definition was outwith the legislative competence of the Scottish Parliament and was accordingly not law. The court decided that the section 2 definition had no legal effect and it has had no legal effect and this has been the position since 19 April 2022. At that time, our council told the court that we would remove the definition. This bill, if passed, will provide clarity by removing the redundant definition from the statute book. I appreciate that bringing forward such a small bill is very unusual. We have looked at other planned legislation but did not find a suitable vehicle to take this forward. Furthermore, of course, this change did need to be made through primary legislation rather than through secondary legislation. The short bill is therefore simply a small technical fix to the statute book to remove the redundant definition and to ensure that no one is misled. The bill does not change the policy intention of the 2018 act and we still need the boards of public bodies to better represent and reflect the population of Scotland. As I have said before, the bill is simply to clear up the statute book to make sure that it is not misleading. Removing the definition from the statute book will eliminate the possibility of any confusion for readers of the 2018 act who are unaware of the court's orders in 2022. We are now going to move on to questions. I will kick off with the first question that you have touched upon in your opening statement. What is the purpose of the bill? What is the main purpose of it? The main purpose is to remove the redundant definition. As I said in my opening remarks, it does not have any legal standing following the court action but we did give that commitment to the court that we would remove the definition and I think that it is important that we do so. I look forward to working with you in the new role. Good morning to the panel. It was a useful introductory contribution by the cabinet secretary. I wonder if we could explore the timescale slightly. We know that the judgment came in April of 2022. That effectively changed the law by virtue of the definition. This is a tidy up exercise of the statute book. Why has it taken until now into 2024 to get this going? I touched on that briefly, but it was important that we looked to see whether there was another legislative vehicle that we could use, another bill that was going through Parliament. In many ways, that would have been an easier process than having a whole bill just to do this one thing. That was not possible. We were very, very aware of the Government that we had made that commitment, so it was therefore important to move forward with it. Once we had endeavoured to find another way, found that there were no other routes open to us through primary legislation, I did feel that it was important that we took the decision. It was unusual to have such a small bill, but it was important to do it that way rather than to continue to wait to see whether there was another bill that this could be attached to. I assume that the work from 2022 was looking at the Government's programme and trying to establish that. Were there any bills that were considered as being an avenue or were they all dismissed straight away out of hand? When you look at the bills that the Parliament has passed, there was no alternative that was available within the scope of bills. In many ways, that was a decision not to continue to wait until an appropriate bill came along but to make sure that we lived up to the commitment that we had made up to in court. Thank you. Thank you very much. We now have a question from Megan Gallagher, please. Thank you, convener, and good morning Cabinet Secretary and officials. If I may pick up on stakeholder engagement, because I understand that the Government of course did not go to consultation on this matter. However, officials have engaged with LGBTQI plus community in the past over legislation relating to gender. Following the court ruling, has the Scottish Government engaged directly with women's groups following the outcome of the court ruling, perhaps to mend relationships and to reassure them that there will be no repetition of what has happened with this bill? As Megan Gallagher rightly points out, there was no formal consultation for this, given that it was a technical fix to a commitment made in court, so the Government did not feel that we needed to go through a full consultation process. Clearly, given the time that has lapsed since the court ruling, the Government has had a number of discussions with a variety of stakeholders with differing opinions on a variety of issues on equalities. If those stakeholders wished to bring that up, we would have those discussions with them. On the context of the bill, we felt that there was no need to have a formal consultation given that it was a technical fix. Thank you very much for that Cabinet Secretary. You said that there are a variety of stakeholders. Does that absolutely include women's groups? Yes. Yes, thank you. If I could move on to a question surrounding the legislative competence, can the cabinet secretary confirm that the Scottish Government has accepted that to be legislatively competent, the act must use the definition of the protected characteristic of sex and within that the definition of women as applied under the Equality Act of 2010? Can she confirm that there will be no further amendments that would take the bill out with legislative competence? The Government has absolutely no intention of making any amendments to the bill. It is short enough. I think that convener has only one purpose. Therefore, the bill, as introduced, is certainly our intent to carry on with that. Of course, the legal definition of women stands as in the Equality Act and the Gender Recognition Act. The legal definitions are there for all to see. There is no definition now in this act. Finally, if I may, just in terms of a more practical question, does the cabinet secretary believe that a board with five men, four women and someone who was born male, who has transitioned, who has obtained a GRC, who describes and identifies himself as female, achieves equality for women? As I said in my previous answer, convener, the definition of women is based on what is in the Equality Act and the Gender Recognition Act 2004. That is the legislative basis of the definition for which we will refer to for the workings of this act. I thank the cabinet secretary for that answer and I please remind members to keep questions within the scope of the bill and what we are scrutinising today. I have a supplementary from Kevin Stewart. Thank you very much, convener, and congratulations on your new role. Cabinet secretary, maybe not a question for you directly, but maybe one for you to take back to colleagues, and that's around about technical fixes and finding the right legislative vehicle to deal with them. Obviously, you made that search and couldn't find the right legislative vehicle. All of us who have been ministers have had that at one point or other in terms of some simple things. I wonder, convener, if the cabinet secretary could go back to colleagues and to Parliament to see if there is a way to deal with technical fixes across the board rather than with individual pieces of legislation in some other way. That may require amendment of the Scotland act, I know, but it seems to me that sometimes we make things overly complex in this place because of the Scotland act and sometimes things remain on the statute books that should be fixed for longer than they should. I wonder if maybe a conversation with the Minister for Parliamentary Business, the corporate body, the bureau and others could lead to something different in order than having what are very short technical bills. You raise a very interesting point because clearly the process of bringing a bill to Parliament is sometimes a time-consuming one and the process we have to go through. This is an example of it for quite a small, very small technical fix is the way that it has to be done. I think that it raises another interesting point when we all look at what should be in primary legislation and what should be in secondary legislation. There is clearly and quite rightly sometimes a discussion that has had about getting specific details on to the face of our bill. I am not saying that this is the case for this, but again Mr Stewart brings a wider point in how quickly we can make changes and obviously changes can be made quicker to adapt to circumstances, events and so on if it is through secondary. As I said, that is not the case in this bill. This bill is dealing with a specific issue that was dealt with through the courts and needed to be done through primary legislation and quite rightly. That is a wider point in which I will ensure that colleagues are made aware of. I can maybe just go on a little bit. This is from an equality's viewpoint as well. If you roll me out with Scope of the Bill, I will understand. From an equality's viewpoint, we have the use of language in pieces of primary legislation, old legislation, particularly around folks who have mental health problems, which are outdated and, frankly, completely and utterly out of order. I think that these kind of things should be looked at if we are going to look at a way to deal with technical fixes as we move forward. Thank you very much. We will now move on to a question from Annie. I will have any questions. It is a short bill and I think that we will have heard from the cabinet secretary. Thank you, Annie. Likewise. Do we have anywhere Fulton? Would you like to come in? Thank you, convener, and welcome to your role and welcome to the cabinet secretary and officials. It is just a very, very quick question, which I think has been partly covered in the opening statement. I guess the obvious question is what would be the consequence of not introducing the bill to the committee. In many ways, there is no legal effect. There is no legal effect, not in many ways. There is no way that there is any legal necessity for us to carry the bill through. It is a tidying up exercise because it remains on the statute books even though it has no legal effect and therefore can be confusing. If we have something that people are reading in the original bill that people with wider knowledge will know that the court judgment has dealt with, that leads to confusion. I think that it is important that we tidy this up. Thank you, cabinet secretary. If there are no more questions, that concludes our business in public this morning. I thank the cabinet secretary and her officials once again for their attendance. We will now move into private session to consider the remaining items on our agenda.