 Thanks, Juno. Good morning, everybody. I was about to say afternoon. We're almost there. Session before lunch. I thank you all for coming. And thank you for coming to this talk. I had no idea I was going to have this many people. I want to at least preface this by saying that how many of you have almost never touched WordPress in your lives? No, seriously. I want to see your hands. Okay. All right. That's fine. I wanted to make sure I'm talking to the level of the room. To give you an idea, this is not necessarily a beginner talk, but sometimes you will hear some of these terms and you want to know what they are. So let me also say that this is an advanced talk only because of the topic itself. I am not going to show you code. So if you want to see code, this is not the talk for you. Okay. But what I want to talk about today is the differences between all of these things that you've probably heard about. How many of you know what a CPT is? Okay. A little bit more than half the room. How many of you know what an ACF is? Okay. And how many of you know the difference between an ACF and CPTs and Gutenberg templates? A couple of hands. Okay. All right. This is more or less what I would call an opinion piece. Okay. So let me at least say that. There are always going to be differences of opinion. I usually, like Juno said, I tend to specialize in things like information architecture. How to organize your menu? How to organize your content within your menu? What are pages? What are posts? What kind of content belongs on these things? That's what this talk is about. It's trying to decipher when you use one or the other. Or do you use both? I don't know. But I'm hoping today what I am going to give you is information that will allow you to make those decisions. Okay. You may not have the exact same cases that I bring up, but I'm going to go through a couple, see where they fit. This is still fairly new for me, so I thank you all for your patience. Please feel free to ask questions as I go through if you need clarifications. And by all means, we'll get some questions even afterwards if you need it. Okay. So this is me. I am the Quality Assurance Supervisor at Weaver Apps right here in Hamilton. I am happy to say that I've been there for about a year now. And they've been extremely supportive of me and my WordPress stuff even though we don't do WordPress, which is okay. We used to. We used to do a lot of WordPress before I got there. I used to teach at Sheridan College for about six years doing web development and web design. I also taught at Mohawk College and helped develop their WordPress curriculum. And I'm a serial word camper. I've lost count. I'm definitely over 30. And I've attended word camp Mumbai, which was kind of a high point for me. Got to visit some family. And I've spoken at Los Angeles, Chicago, Hamilton. I've been an organizer now on Hamilton's five word camps. This is number five for us. And Toronto as well as Milwaukee. I became an organizer in Milwaukee, but there are a great bunch of people too. Okay. So this is our agenda. We're going to do a quick review of custom post types and ACS in the context of which we're going to go forward in. I'm going to do an intro to Gutenberg blocks and templates. Again, as it relates to this topic, I'm not going to show you every little block that goes through, but I'm going to show you some examples to give you an idea of where we're going. We're going to talk about a case study in real estate. How many of you were in my talk last year on CPTs and ACS? Okay. So this will look a bit familiar to you because I've re-bored it because it still applies. And now that we have Gutenberg, there's a whole new level to this that we go, oh my God. So what does this mean for CPTs and ACS? Right? We're going to talk about some of the differences between them. And then again, we're going to take another look at a case study of IMDB, which is again something I looked at last year. But now I'm going to apply the Gutenberg stuff to it. Okay. So if you recall from last year, a custom post type can either act as a page or a post in theory, right? It can act as something that is more time sensitive, right? We all know the difference between posts and pages and what belongs on them because you've heard my talk on it, I'm sure. So the idea is that it can hold static information, it can hold dynamic information, more time sensitive, and it can run like a blog or it can run like static pages. It can be organized by categories and tags if you so wish it. You can also have your own, what they call a taxonomy. Does everybody remember what a taxonomy is? A taxonomy is basically a system of organization. So categories and tags are taxonomies. So you can have that, those are built into WordPress or you can do your own. And we're going to talk a little bit about that when I show you the examples. And they will show up as different entries on the dashboard. When you actually create a custom post type, you can actually now have it show up on the dashboard. And I have an example on the next page. And it can be called anywhere into your site. So you can have this show up in the blog role as just a normal post that sort of shows up. You can have it in a separate area, you can have it wherever you like. So as I mentioned, if you put it in as a plugin, this is the example I'm going to use a bit later called listings. This is the custom post type. So you notice that you see posts, you see pages, you see media, and then you see listings. Which is our real estate example that I'm going to show you. So you can see now that I can actually add a new listing just as if I was to add a new page or a new post, right? Do we all remember this now? Okay. So here are some examples of what might form a custom post type. Any commerce product page such as WooCommerce, portfolio pages, right? Where you have a particular type of portfolio. You might want to have certain pieces of information on it that don't really fit into the regular template. Author pages, especially on a lot of news sites. You'll have a lot of custom post types that show the authors or the journalists that are actually writing those posts. And again, the movie TV series pages like on IMDB, which I'm going to show a little bit later. Okay. So in a standard WordPress post, you have a title and then you have basically your body or your paragraph stuff and media and so on. The title itself is a field, right? Custom fields hold pieces of that data that you want to show. And in the example, we're going to show an example of a municipal address, okay? Every property that gets sold. It's certainly in the province of Ontario has to have a municipal address attached to it. So it's a required field. It's something you have to put in. It can be formatted. It can be stored, right? So that's an example. It can hold different types of data, right? So we are talking about maybe it can hold a currency or a number that is recognized in the database it can probably use for calculation potentially, right? Which is not something that is normal within a standard post, right? You have a title, you have the body itself, but does the database recognize that as a number? Not necessarily. So if you want to do things like calculations, you might need to do something like this. And again, advanced custom fields. I'll use them sort of interchangeably, but custom fields are those fields that do not normally exist. Advanced custom fields is actually a plugin that I recommend using because it's a fantastic plugin to use. And you don't have to code as much, which is kind of nice. So this is the example I actually showed last year and I'm going to show again. So this whole thing is a listing, which is a custom post type, right? Within that you have the different fields. You have a municipal address, in this case 123 Bay Shore Drive, who knows where that is? Los Angeles, enter the total unit square footage. So that's an actual number. I've told that field to be a number, right? Main room size and so on down the line. Does that make sense so far? Any questions about that? I used to be an instructor, so I have to do this, right? Okay, so how do I know which one is which now? We have custom post types and we have advanced custom fields. So what's the difference now if I build a custom post type that has all these lovely fields in it or doesn't? It's possible that it doesn't. They can work independently, but most people use the two together. A custom field answers the question, what is this piece of data in relation to the custom post type or to the post or to whatever it is? What kind of data are you putting in there? Like I said before, are you putting a currency? Are you putting a number? Are you putting in a dress? Something that can actually be recognized in a database entry. I know that sounds a little bit technical for some in the room, but that's ultimately what it is. If you were to type a number into a regular Gutenberg block, does it recognize that that's a currency? Does that something that you can use to actually show elsewhere or to do a search on? As well as you could if it was actually a custom field in and of itself and dealt with for things like possible calculations. Does that make sense? A custom post type answers the question, what is the content or the layout? Now this is where it kind of gets tricky because in Gutenberg we have Gutenberg blocks, which is probably what you're most familiar with. We have paragraphs, there are tons of others that you can use, you can use galleries, you can use all of these things. And then you have Gutenberg templates. How many of you have actually used Gutenberg templates? One person. Interesting. How many of you know what they are? I see five or six hands out of this whole room. That's interesting. Okay. So let me explain what I understand because this is still new to me as well, so let's go with this. Gutenberg templates assume that you have built, we'll use the term page for sake of simplicity. You have built your page. It may have a photo, let's say of an author. You might use a custom post type by the way. It's possible. And you've put in all of this data and everything else. You can actually save that with its content as a Gutenberg template. Okay. So if you're going to reuse all of that content. Remember that because that's going to come up later in a quiz. If you're going to reuse the content over and over and over and over again. Maybe not all of it, but even parts of it. Sometimes it's the layout, sometimes it's the actual content itself. You might save that as a Gutenberg template. And I'm going to use some examples in just a minute. And then you can then say, oh, I want to use that template. And guess what? Your content's already there. Which is not what happens with a custom post type. With a custom post type and your advanced custom fields, let's say, you might have a default or one that shows up automatically, but it doesn't necessarily show unless you put something in it. Whereas with the Gutenberg template, you may have created all of the information. Let's say something at the bottom say, hey, sign up for my thing over here. You may not want that on every page, but you may want to use it again and again. Rather than going into the code and editing it and putting it in the footer somewhere. Make sense? Are there any questions about that? We're good? We can keep going? All right. Let's see how it goes. Go ahead. Yes. So the question was, can you use Gutenberg templates to apply to certain pages or to certain posts? The answer is yes. So rather than just selecting new page or a new post or add new, I'm trying to remember exactly on the menu itself, but you would basically save it as a template, whatever it is that you're working on. And then when you go back, you can actually start with a template. I'm trying to remember exactly how it's there available to you so that when you start, let's say, again, you have something at the bottom of your page. You may not want that on every blog post, right? Matt and I were talking about this last night. To give you an example, let's say, for example, you have two charities that you like to donate to. Let's say one is for autism. The other one's for Tourette syndrome. Let's say that you write a post about Tourette syndrome. Do you want the one, like, say the donate part at the bottom to be about autism? No, you want that to be about Tourette syndrome. So you would create, let's say, a template for the Tourette syndrome one and then say, I want to use this template. It will then show the template with whatever piece you had at the bottom and then you just write your content. Does that make sense now? Is that a better example? Okay, yes, question. Okay, so the question is, are the blocks locked in place on the templates? My understanding is yes, because part of the reason for the template is the layout itself. Yes, so we had one over here and then I'll come over here. Question over there, Jared. So the question is, is if you change the content, does it actually alter the original template? Or vice versa. I'd have to look into that. Whether or not that changes the existing ones, it may not. My thinking is it creates an instance of it. So my thinking would be no, because it essentially takes the template, copies it over, and then does whatever piece you need to do. If you were to go back and change the template, my thinking is that the original would probably stay in place. But somebody correct me if I'm incorrect or we'll take a look at it afterwards. That makes sense. Yeah, I would think that it does not affect the post that you've originally created. Yeah, we had a question over here as well. How does it affect archive URLs? So how does it affect archives? So the question is, is can I still use the archive and I guess categories URLs with Gutenberg? I don't think that the two are dependent on one another, because you would actually create the template and then choose whatever category that you're putting it into. And it might actually maintain those categories too. That's something I didn't actually look at. I'll have to look that up afterwards. Does that answer your question? Anything else? Peter. So the question is, are the original PHP templates still available? Which ones are you referring to? Oh, the full screen, full screen with sidebar, things like that. I would imagine that they are, but they might be available under the original editor. They're probably still in the hierarchy somewhere, Peter. Probably. I have no doubt. I have no doubt. Anybody else? So we're making good progress, right? Like this is making sense. Okay, good. Okay, so in our real estate example, as I mentioned, the custom post type is the listing itself. It's not just about layout. I want to emphasize that. It's not just about the layout. It's about the back end as well as the front end. What I mean by that is, I'm not talking code. I'm talking dashboard, like manager, like person who is managing the site, entering in information, and also then showing it on the front end, which is where your visitors will see them. So when I'm referring to back end and front end in the context of this talk, I'm talking dashboard and visitor. Like somebody's managing the site versus that, not code. So what you might see on a custom post type in the back end was what I showed you earlier. So let's say that I'm the manager of this real estate site. Maybe I'm the actual person who's selling these. So I might have to enter in the municipal address and all of these other things that are going to show up uniquely in the custom post type on the front end, right? They may have a particular font or a particular piece of information, but they actually become an entry in the database that I can recall, that I can use in other places. I can move that around, that one little piece of data or that type of field I can put anywhere on my site, anywhere. So that's a custom field, something like a sale price, a rental price, the size of the unit. And I can put square feet at the end of it so that it will actually show on the front end. Why would somebody go through the trouble of creating this? It's very simple. To recognize the pieces of information that are required or in the format that it needs to be entered in by the manager themselves. So those of you who are developing sites for clients may want to consider this, especially if they have a need such as this. Because then this will not create the post if it says, I'm sorry, you have to have a sale price in here. Does that make sense? It guides the manager on how to enter data and what data needs to be required. And then it will show on the front end if the developer or person who has created the custom post type and the fields has actually done it correctly. Now, keep in mind, I'm going to address this later, but they would have to have coded it properly to show that way. Questions on that? I sort of saw one that was kind of like, maybe I have a question, maybe I don't. Okay, does this make sense then? Okay. So this is an example that I showed last year. I know I'm talking a lot about custom post types, but trust me, bear with me. Bear with me on this journey because it will be cleared very shortly. So this is an example of a custom post type. You could, in theory, create a Gutenberg template that will look exactly like this. The problem is that that's only being done in the editor itself. In the classic editor, you had to, as I showed with the custom post in the back end, the dashboard, it required you to put in a price. It required you to put in square footage. If you were to do this as a Gutenberg template, there's no required fields here. There's nothing here telling the user, yes, you have to put this in. So basically, if I took all of this out and it was just a bunch of Gutenberg blocks, this would end up being blank. So to me, the custom post type and the ACS are still something that should be a part of this whole environment. The templates have their place. Okay, that's ultimately the goal I'm getting to here. So this was actually built as a custom post type. It has a title, right? It has a category unto itself. So let's say that this is actually a real estate listing. I might categorize it as a listing. It may have its own piece on the menu that drops down and so on. A Gutenberg template doesn't give you that level of organization. You can add it to its own category, but it may not have its own level of hierarchy, right? It's written by this person. The type of listing is a detached home. All of these, this is actually the type of listing and the features type of ownership are actually all taxonomies. They're ways of organizing the information. The municipal address, Los Angeles, and this is a castle, no doubt. So this whole piece, the image and all of this together along with the tags is the custom post type itself, okay? This is one of the advanced custom fields. And I'm saying advanced custom fields because I did use that plugin for this, okay? Does that make sense? So things like square footage, things like that are all required pieces that I would have to enter for this entry to be valid. See some hands about to go up, so I'm going to pause for a moment. Are there any questions? Question over here. So which plugin did I use? It's actually called Advanced Custom Fields. So the actual field itself because it's customized is called a custom field. The plugin that I used to create those is called Advanced Custom Fields. Now, to be clear, though, the custom post type plugin, because there is a plugin, I created, I coded myself. It's actually not as hard as you think. I'll tell you about that in a minute. It's not hard, right? See, yeah, I got some confirmation out there. It's actually a lot easier than you think and I have some references at the end that will guide you to how to do that stuff, okay? Trust me, it's great content and I'll tell you about it in a second. So question over here. So as a custom field, and the dashboard is forcing that data validation, it can. To me, that is one of the biggest features as it comes to a block in Gutenberg versus an ACF. We're talking about things that you would have to enter. If it's just a block, I don't have to fill it or I do have to fill it. But if you're building it in something like a custom post type, it's going to say, no, you have to fill that in. Right? It's not oversimplifying it. That actually makes a lot of sense. Question over here and then I'll go here. So you're asking if there are ways to have a Gutenberg block be required? Like maybe some JavaScript that you can install or something like that? I don't know. I'm sure there is. I haven't delved into it so far that I've had to go that route. Does anybody else have any input on that? Not yet. Gutenberg is still so fresh in our heads, but to me, a Gutenberg block does live on the back end in the editor itself, which the CPT does as well, but it's a tough call. I don't know. Okay. Then let me know when you give your talk at WordCamp Hamilton next year. Okay? You're saying it's easier to use ACF than... I would say it's doable. But probably easier with ACFs. Okay. So we have at least one opinion in the room. Thank you. I appreciate that. Any other questions? Peter? So you have the pro version, but you're asking if this can be done on the free one. Well, I know that when I built this, I didn't use a paid version. Yeah. Last time I actually delved into ACF, I remember being able to do almost everything that I wanted to do with it at a very basic level. There were some things that I probably needed to step up in my game if I wanted certain things to happen. I'm trying to remember, but it's pretty good as it is. That's my point as a free version. Yeah. Any other questions or comments? No? Okay. Let's keep going then. Okay. So in our real estate example, we're now talking Gutenberg. We're talking about the Gutenberg template. So if you recall, the listing itself has all those required fields and everything else. If you were to relate this, or why would you use Gutenberg templates for such a thing? Every listing for different houses that are identical. How many of you have actually ever done real estate or have some experience in real estate? Tons of you, and they're all on this side of the room. What's going on? I don't know. So think about it this way. You've been hired as a real estate agent to sell ten houses that are absolutely identical, but the only difference really is other than the square footage. Well, the square footage might change as well. The price might be the same. The address is almost identical. Are you going to create a custom post type, put in, let's say it hasn't even been built yet. We're talking pre-build. It's an artist rendering. It's a theme artist rendering for all ten posts. Are you going to go in and create one post, and I'm using custom post types, one listing for this address, put in the image, put in the address, the price, da-da-da-da, so on and so forth. Save it and do it again ten times. No, you're not, because you're all smarter than that. What you could effectively do, and this hasn't been tried, but in theory, let's think about this. You create a custom post type for a listing. Now you create the listing itself, and then create the template. Now I have this template for let's say a particular project or a particular development that is being built. And let's say, I think I actually have a... No. So let's say that I have this address, this address and this address. Let's say it's like 3, 5, 7, 9, and... I don't know, 13. Just because it's 13. And you have all of those houses, but it's all an artist rendering. The prices are the same. The square footage is the same. The only thing that changes is the one number on the municipal address. Does that make sense? That is an example of where you might want to take advantage of the Gutenberg templates. Because a custom post type, while you have default values in those fields, does not necessarily, when you create a new one, take the existing data with it. That's where the difference is. I'm seeing a lot of heads nodding, so I'm getting this through, right? Great. Question. Yes. So in short, my scenario here is actually using the custom post type listing, creating the listing with all the data that you need and so on, creating, create a template. It should save all the data in theory. Because I haven't tried this yet. In theory, it should save all that data. You now have a template. So instead of going to listing, creating another listing, you would actually go to the templates, create a new template, and it should have all the data stored there. And then you just change whatever data it is. Hit go. Change whatever data needs to be. Hit go. And away you have it. So yes, that's exactly what I'm proposing, is that the two, again, in theory should be able to be used together for such a thing. Now, I'm using real estate as an example, because that's what my background knowledge is way back when, in another lifetime. But you could use this for almost anything. We'll go through another example as well. Okay? We have another question? Okay. Yes, go ahead. So what's the question about... Oh, yes. If you change the template, yes. Go ahead. And it... Yes. It will... If you change the template... Yes. ...never page you published with that template? Oh, it's dynamic. Yes. Oh, okay. So where's Jared? There you are. So here's your answer to that earlier question about the templates. So apparently if you do change the template, it will automatically update any posts that you've created beforehand. Is that accurate? No, you don't... You need to republish them. No. You don't need to republish them. Okay. So it will actually take anything that you've created with that template and update it accordingly. Okay. So it's not an instance. It's more of a reference as opposed to an instance. Would that be... It's not a snapshot. It's actually going to keep calling it. I think it's going to republish it. It's going to republish across the database. Okay. All right. Does that make sense then? Okay. You have a question? That's exactly what I'm going with. Create the custom post type as a listing that has all the requirements and everything else that you want. Right? That you may or may not use on your site already every day. As a real estate agent, you would probably use that listing every day, but the data changes. The address changes. The photo changes. The square footage changes, blah, blah, blah. What I'm suggesting is is let's say that you had 10 houses that were identical that you had to sell. Are you going to sit there and create 10 new listings when they're all the same, except for one piece of data? No. You're going to create one, create a Gutenberg template. And instead of calling the listing, you're going to call the template and then create one for number five, for number seven, and so on. Does that make sense? It changes. No. I think it will be the data itself that remains. But like if we change, say, like the layout, I'd have to double check on that. I see your point. I see your point on that. So if you enter in the data and you copy it over, it's a good point. Okay. Let's figure that out afterwards. But if you're updating the listing itself, then you're updating the custom post type, not the actual Gutenberg template. Yeah. So yeah, we'll have to take that back and look at that. That's a good point. I'd have to look back into it, whether or not my theory is, is that you should be able to save it as a Gutenberg. Because the thing is, the whole point about templates is you should be able to update those. But if you're saying that, here's the thing. No. If you've thought through your project well enough, come on, you guys plan everything out, right? You've been in my talks before. Come on. Post it. No. The thinking is this though, is that if you're only updating the template, right? So why would you update the template only for those 10? Why would you have to? And if so, then you would probably end up updating the template for a reason that would require them all to do so. Right? You're not updating all of your listings. You're just updating those 10. But you bring up a good point. I may have to investigate that. Does it update the data or is it just like the layout, things like that? It does update the data. If you need to selectively... Okay, you may have to... Okay, so maybe there's a way to detach it from the template afterwards. Okay, let's talk about that afterwards. That's going to be an interesting chat. And let me know when you do your talk next year at WordCamp Hamilton, right? Yeah. Any other questions? Okay, we're almost through this. I promise. So this is an example of the Gutenberg block that you can get right out of the box, right? So what I have here is just the address like line one, line two, line three, etc., etc., right? So keep in mind that you can create a Gutenberg block or a collection of blocks that can form a larger block, right? So in this case, when you actually add an address, that is a combination of a number of blocks in themselves. So it's like blocks within blocks. Does that make sense? So the idea here is if you were selling a bunch of houses that were the same, the same photo, same rendering, whatever, and you didn't want to have to retype it over and over, this is an example of what you might use just in a standard Gutenberg layout. That's not going to update in, let's say, a database somewhere. It's going to store it as part of the post, but it's not going to actually store it as, hey, this is an address that you're selling, right? It's just an address. Big deal. It's going to format it, but it's not actually going to access it later on. Does that make sense? It can get really complex. I get that, but you can see where this is going. So I'm going to show some of the big, big difference between this, and I've sort of alluded to it already. So why would I use one and not the other? Right? If you decide, okay, you know what? I'm just going to use one. That's it. I'm going to go with either Gutenberg, or I'm going to go with custom post types and ACFs. Now, it will depend on the data that you're dealing with. Okay? So hear me out. What is the big difference? No code. Honestly, truly. Other than the data stuff that we've discussed and everything else, using Gutenberg does not require you to code anything. Okay? Now, there are plugins out there that will also do custom post types. Bear with me on that one. I agree. So technically, you could, but those plugins will probably, then you have to add them onto your theme so that they show. And same thing with the advanced custom fields. It does require some work. My proposal to you is that it's worth it. Okay? That's what I'm proposing. With Gutenberg, it's just a piece of text at the end of the day, using something like ACFs and custom post types. We're actually thinking about the data that we're putting out there. You're actually organizing it in a certain way. Does that make sense? So let me give you a couple of examples because we won't let you forward, but let me just quickly run it. So here's an example. Right? IMDB. The custom post type is going to be the TV listing. It's going to have seasons and it's going to have episodes. And every single one of those seasons is going to have episodes. In every episode, you're going to put episode five, episode six, episode seven. You create the custom post type for every TV listing that you have. And then you fill in the data. And let's say that you've just added a new series. You're going to put in the title of the series once, maybe. Right? It may be a separate entry or whatever. But in the episode itself, you're going to have to put the episode in. There's going to be names that you have to fill in. But the episode title is actually, you know, episode number, blah, blah, blah. You're going to have to repeat that over and over and over again, especially if it's aiding through the title of the show itself. You're going to have to repeat that, let's say, you know, depending on which continent you're on. If you're in the British series, you're probably going to go with like four to six episodes. And if you're in North America, you're going to go 13 just for the first half of the year. Right? That's a lot of repeating. So the theory here is that you create a custom post type for the actual TV listing that you're going to have throughout your site, regardless of, you know, whether you change it or not. And then you're going to create, let's say, a TV series where the data in itself is going to be the same. So you create a template, let's say, for this show where the title is the same, maybe the episode is the same, the time is the same, all of that kind of stuff. And then you're going to just repeat that, repeat that, repeat that over and over and over again. And then really, once you're done with the template, technically, you could probably just archive it. I wouldn't throw it away. You know, just archive it, okay? So that's the same thing with a person, right? They may have different roles. I'm using this as a movie, of course, but you have a release date. Let's say that you're entering all the movies that came out on that particular day. Let's say you're, you know, entering a series of movies that were, you know, let's say TV movies or something that came out one by one by one, and they had the same actors attached to them and so on. Makes sense? Same sort of idea. Same thing with the person. Right? So the movie itself may have those repeating pieces. Otherwise, you have this, where you have the date of birth. The person itself may not necessarily have everything, you know, it may not necessarily apply here, but it does apply for the custom post type itself. It's unlikely that you're going to have to copy over data from one person to the next. They're going to have different names, different dates, and whatever. They may belong to the same movie, but that's about it. I wouldn't necessarily go with that here. And yeah, in case you didn't know, that's not going to go. No. Oh, okay. No, no, no. That's one of our friends, Sean Hooper, who couldn't be here, so I had to sort it in there. Yeah. Yeah. Somebody, Michelle Blume, actually made that up a couple of years ago, and I have to use it because it's so funny. Okay, so lack of a thing. I'm going to post these slides after the talk, okay? They're going to go up on chaunta.ca, and then there are going to be some lovely resources for you. So if you give me just a quick one, most of what I learned about Hooper's