This is a session about requirements gathering, which sounds exceedingly boring, until I made up a catchy title. And look at you, you're all here, which is amazing. Thank you for coming. The agenda today is pretty simple, if you've read through the abstract, and it's just a little bit about how challenging it is to gather requirements, and then some things that I've learned along the way. So I have been working in Drupal for 10 years. Various hats in information architecture, user experience, and project management, and with some kind of capacity doing a requirements gathering exercise with every single project that I've worked on. And the one thing that I've learned through this is it's extremely hard, it's extremely hard. And it's something that can only be successful if you're using multidisciplinary teams, and you have everybody invested in it. So I would like to know who you are, how many of you work in Drupal, consider themselves Drupal professionals? Fabulous, okay. How many of you are technical? Great, how many of you are creative? Nice, how many of you work with content? So a lot of people wearing a lot of hats here as well. Okay, that's great. And why are you interested in this topic? I know why I'm interested in this topic, because I have felt the pain, because I've had projects where we thought we knew everything, and we didn't. And you find yourself asking, why don't you just tell me, just tell me what you want, and then we can do it. But they don't know, they don't know. So some of the things that I've been learning in the past several years, I've put together into a presentation. And one of the most mind-blowing things that I learned was this concept of conscious requirements, unconscious requirements, and undreamt requirements. And that's what I'd like to describe today, what those are, what the challenge is, and how to go about uncovering some of them. So what I'm talking about is typically three different scenarios. You have a redesign where it's pretty fresh, refresh, upgrade, there's a couple things you want to do, things to move out, things to move in, but there's something there to talk about. There's either a Drupal site, or there's some sort of legacy system, or there's something approximating a site of some kind with pages, so there's something to look at. Then, number two is brand new. I'm gonna spend less time here, because I have the feeling that most of you are looking at number one and number three. And number three is kind of the most terrifying thing, and that's like the rescue project. We built it, and then it didn't quite work out, and then we didn't get along with our team anymore, and now we either have to fix it, or rebuild it, or start over again. How many of you have been in that situation on either side? Right, okay. So you know, this kind of stuff happens. And then the more I looked into it, they kept calling requirements gathering an emerging field, which is strange, because we've been building things for a long time that have requirements of all kinds. But this is something that we're notoriously bad at for all kinds of reasons. One of the challenges that we face is that sometimes we're trying to map one-to-one for a customer requirement, or a stakeholder requirement, and somebody makes a request and it becomes a feature. Or there's an input and we put a checkbox next to it. Or we get caught in too high level or too granular. And one of the things that I want to propose is there must be balance. And there are so many different kinds of people that have their own way of seeing things that how do we get everybody on the same page? And certainly when they come from different backgrounds, you have the added problem of the materials that you're getting from various teams are going to be so different and so, what's the word? Inconsistent, all kinds of things. Super, super granular to crazy high level and everything in between. So much documentation that it seems as though we have enough. If I have 100 pages, there's gotta be enough to build this thing because there's 100 pages. I don't need another page. First, I don't wanna read 100 pages. But if I do, I should be able to build it. That's the concept that I think we're coming from. We just tell them just throw everything at you and you should be able to build this. But we forget, where does it come from? And who creates it? And what's the language? And there's so many little sticky things. And you imagine that if you take one degree of variation off of the direction, the path we're gonna go, eventually you're gonna be really far off further down the project. Hopefully when you've been moved to a different project. So this is the kind of stuff we're getting. We're looking through the proposal and the wireframes and the Photoshop files and the spreadsheets and the user stories. And we're just trying to break our heads and come up with some sort of unified plan forward of what it is we're actually building. And traditional stuff is very dry. It's gonna be, there's constraints and conditions and there's systems and a lot of technical people bring amazing documentation. I am a spreadsheet queen. No, really I've actually been called that. And I love detailed stuff, but there must be balance. This is what it looks like. We've got like super crazy high level stuff to incredibly granular. And it all kind of looks the same in the end. Because they're coming from different backgrounds. They're showing us different things. And not one person is going to be able to understand everything from every point of view. So how does this come together in a melting pot? Well, I'm gonna talk a little bit more about the actual problem. You have this 30,000 foot view and a few key features that have been really fleshed out. Pretty amazing features. Because somebody spent the time because that was their baby. So, but that's not the whole site, right? Then we've got a situation where we don't really know what the priority is. I like this picture. I don't know if it's real, but I like it. The wrong focus, right? They bring you a project and they just got like three pages on one feature and a little paragraph on 14 other features. So I would think big paragraph, main priority. Not always right. You can be precise without being accurate. You can be precise without being accurate. Precision gives you the illusion of accuracy and completeness. Because it's right, every little, that's a real F and that is an S and that's an I. And you can still read it. But it's not accurate. So balance, what does that actually look like? I have a goal to, first I gotta understand what language you're speaking. What have you brought me? I gotta fill in the gaps. I gotta figure out, is it high level? Is it low level? Well, what do you think it is? Cause that's a big deal. If you've given me something that you think is high level and it's really very granular, there's a disconnect and there's something that we need to talk about. So the very first objection you will have. But they're just like, if we say, no, this isn't what we need to do and there's discovery and we're gonna mispronounce time and money and you have a deadline, they're just gonna go to someone else. Yes they will, some of them will. And they will be back with a rescue project. Because they couldn't build it. So you need to ask yourself, are you trying to win an argument or are you trying to win the war? Cause if you build what was asked for but not what was needed, you're gonna be the people they're leaving to go to someone else to. In many cases, I think we should all band together and do this thing. So how are we going to do this? We have these conscious requirements. So these are the ones, the no brainers. We need an events calendar because we have events and we need to know when they are. That's a good place to start. Great, there's tons to unpack there but at least we know what it is. Unconscious requirements. This is really interesting to me because I've gone through a lot of projects that have started off in a crazy custom built legacy system that had all these auto magical things happen. Some of them were business process, some of them were made just because that was the way that we figured out that we could make it so they kinda forced their business processes into that because that was the tool. We had to try to figure out the difference and then there's these undreamed requirements, things that we'd love to be able to do if we would know about them and they don't know to ask and I don't know to ask because I don't know that it's actually there or not but the way forward is pretty subtle. They can't always articulate what they want. They may not answer in the way that we ask them to answer. They only know what they've experienced and they're not gonna be experiencing things that you've experienced because they're coming from subject matter expertise, domain expertise, their business and we're coming from tool expertise. We know how to build stuff but this is the place where we can provide the most value.  This is the place where there is the potential to really, really knock it out of the park. Like the kind of pride that you come home and all those horrible 14 hour days like but I built this thing and they loved it. This is Mining for Gold and this is a slide from Jared Spool's keynote in 2011. I love it though because it kind of shows like we have process and product knowledge of our tools, of our system, of what we can build. They've got knowledge of their current system. They have knowledge of their business and we need to all kind of get in the same place. So this process focuses on what I've highlighted there. So this might be a typical requirements gathering process.  This is what we would like. There's some information gathering. There's some analysis, modeling. Validation is an important one and then towards the end there's something that the sales people do. I'm not gonna cover that part. I kind of think of it as like what kind of requirement are you when you do a quiz? Do you like purple? Are you high level? Do you have visuals? Is there a diagram involved? There's somewhere, they're gonna land in there, right? They're gonna be like super big picture, really granular but here's what you remember.  The patterns that make you make something that's going to be efficient, that's gonna help you hit budget, that's going to be modular, that's gonna be scalable but there's the except when we do this thing and then we have it like this, but on Thursdays and then Nancy comes in but she does it a completely different way but we totally need to support her because she's really awesome and she's been here so long. Yeah, so specifics give you outliers and outliers cost a lot of money. But we wanna find the middle way. We wanna find the middle way. So conscious, high level requirements, loaded words, like we wanna build an online community or a membership portal or eventually we're going to do content personalization. I mean these are so big, so big that they're own project pretty much some of the time and this like auto magical thinking that well it was gonna appear on the page but in this page is about swimming pools so all the swimming pool stuff will appear here but we don't actually have the IA to support any of that yet. So typically just request without a good understanding what it is but you can understand where they're going with it. Very vague usually, kinda loaded. Granular conscious requirements are things like layout specifications without really having any IA done or very specific content creation form requirements without actually knowing Drupal or request for very specific modules that maybe somebody told them we're good for some other site that have nothing to do with their site but they just like this is a good one, you need this one. And then some content editing screens I've seen described to the very last label and button. So this is the kind of granular stuff that is conscious they've asked for it but really needs a lot of pushback. The most challenging for me personally as an analytical person is this type of request. Where do you begin? But I found a way. We need to begin unpacking requirements with some business insight, with some content strategy and with some information architecture. And when I see something like this I know where to begin now because I start with a big picture. What does this actually do? What do you do? And somewhere in there is the site that you're building. There's something, combination of those. But you can probably figure, okay, so this is what it is. This is what the purpose of the site is. Awesome. So this engaging thing that it needs to do. Well we have digital analytics for that. We have metrics, very well thought out metrics and metrics, I don't, metrics different than data. The analysis part is gonna be totally different than the report that says all the percentages. So actually deciding what you're gonna monitor is another session. And then we can go into the unconscious. And these are often assumptions about things and you can tell because they have certain ways of referring to them. They'll say things like widget or plug-in or feed. And it could mean so many different things. They've mentioned responsive as a priority. Their current site is not responsive but they also have 16 different layout possibilities. Red flag, right? There's things that are contradictory in many of these unconscious requirements. Often where the CMS begins and ends is an unconscious requirement because sometimes if they're coming from a legacy system it has something else on it. It's got some sort of ERP or CRM or XYZ and it just kind of, because I'm Canadian that's why I say Z. And those things are very important to figure out because it's often something in somebody's head that oh yeah, well it used to, and then there was a line there but we've moved the wall and we're building it something else. So sometimes you get into this trap of just tell me what it does and then I'll tell you what happens. Resist this because then there's also this. You do it the same way but in the opposite direction. Because then you end up with describing what's in the hat. It's this thing and then we put things and then it comes out and ta-da! And it has nothing to do with what they actually need. They're just trying to recreate something they have without actually knowing what the possibilities are. So I'm sure you've heard it before. To focus on the desired outcome. We're focusing on the unstated problem, not on the stated solution. So this is a lot of the time you're gonna get requirements that are solution-based. They've already decided what it is they need. And that's where this sort of uncomfortable thing happens when you're not really wanting to have that conversation about well, why is this what you say, oh no that doesn't sound, what makes, no that doesn't sound right either. Like it's a hard conversation to have. But I think it's worth it and I think with practice you can actually have these in a very gentle and positive way. And I'm gonna throw a quote up there because it's Einstein. But this is kind of what we should be doing, right? Like let's define the problem because I've got some great solutions but I don't really know what the problem is. You've just told me that you need an events calendar. So these undreamed requirements are things that no one may know how to ask about because they just kind of go about doing their thing and it's up here for them, super close. They may totally blow your mind. They may be like, I can't believe no one's ever thought of this before or they may be so extremely subtle. But matter incredibly to somebody. You know some of those editing tools or little minor changes. Wow, it's so much easier to use now. And a lot of the time they can be tools that we already know about but we just need to figure out what it is that we're solving. It's very subtle. Second objection. But there's not and they don't and I, but I want it. No, I want it, I want it, I want it, I want it. Just build it, I can't just build it. No. And my answer to that is, well, do I really want to work with that person? No, it's, let's just have one more meeting. And let's discuss. And just a few more clarifying questions. And let's talk about it. And walk me through because now I'm gonna throw another quote up there and this one's super awesome too. It doesn't have to be confrontational. We're not trying to point out mistakes. We're not like, I'm in about your business and I'll make it better because I know nothing about your business.  What are you doing? What's really hard right now? Okay, what's easy? What do you do on paper? Like, do you sticky notes attached to your, what do they say? Is there like a cheat sheet for your content creation process? What's on it? And we're just not, we're not trying to run their business. We're just trying to figure out what's in their head. So here's a few techniques that I think can be extremely helpful. And I'm grouping together end users, administrative users, stakeholders on the periphery. I'm just grouping them all together because in the end, we're kind of using the same technique on all of them in context. So abstraction. Abstraction can be very difficult for some people. Technical people find this easier because your job is to write some logic about something. But most people that are non-technical find abstraction extremely confusing. So they will come to you if you're, they're gonna describe, this is a camera and I really like how it works and I push this button and it takes a picture. They have described their camera and what they do to take a picture. If we abstract that as a technical team, we might say the user needs a mechanism in order to take a picture because the button might not be, might not be the right thing anymore. And that is incredibly valuable way of just uncoupling those assumptions that have already been made about something because we're already jumping to the button. Might not be a button. This, the diagramming can be all kinds of things. The fishbone diagram, mental mapping, content grouping, anything that makes sense to the people in the room, I think it's fair game. And then you can start to look for patterns because remember, abstraction gives you patterns that gives you better information architecture, better usability, better scalability, cheaper than specific outliers. Then there's apprenticing and interviewing. This is just basically the demo. This is the screen share, show me your system, walk me through what you're doing. Cause there's guaranteed to be that thing they do where you're like, can you just do that again? Why? Why are you cutting and then pasting and then going the next page and then opening and why, I don't understand, why are you doing that? Because there's a problem to solve there too. They've done it that way because they've always done it that way or there's something or missing. There's something that happens in between. And there's a lot of stuff where there's a dovetail with the real world. There's something that happens over here in the office beside my computer that has nothing to do with the system but maybe it could be part of the system. Like maybe I go over there and I find and the file and I pull it out and then I type it in. There's gold there. I'm imagining in the past there was a demo of a legacy system that I was watching and there was this complicated procedure for creating a report and then pulling the emails off of a report and then cutting and pasting the emails into an email and then making a news, and the whole thing was just like, is that an email list? Yes, yes it is. Huh, we can build that a different way. And then there's business events. And this is a really, really interesting one because a lot of the time I work remotely and it's hard sometimes to get people to describe their business events and activities during the day when it's remote because you can't follow them around and go, hey, what is that? What are you doing over there? But I had a really interesting project for a bookstore where they had an online ordering system and I was there with the lady who was fulfilling orders and she was like, oh, this is awesome. This is a super amazing system. We really need to keep this as it is, which is, that's fine, it was fair. But there was one thing about it that was a little awkward that she didn't notice because they had interns come in and go and pack the books up. They'd go to the shelf and find the book and put it in a box and pack them. So they'd get the order and then they had to look and see what the shelf code was for the book. So they'd take the order and they'd look at the book and then they'd go into their other system and look up the shelf code. Why not print the shelf code on the order or in the system where I can see it? Why have this extra additional step? And this is the undreamt stuff. Nobody figured that that would be maybe a good idea to have it on there. So I go, oh, it's on shelf blue squirrels. So I'm gonna go over there and I'm gonna get the book I'm looking for. And brainstorming? I think, I mean, a lot of people are extremely terrified of brainstorming because what if they think up a bunch of stuff that they want and then they think it's included because we talked about it briefly in a meeting and now we're gonna get it? No. There are things you can do to brainstorm safely where you keep the creativity contained, where you open up the box and not let everything fly out at people's faces and it's not that messy. And it's great for new products. I'd say I wasn't gonna mention the new products so much but brainstorming's great. If it's something that doesn't exist, if we're not sure what it does, I love doing research and seeing what's existing. What is it like? People are always like really super obsessed with their vertical. Yes, but is it exactly the same as my product? No, but the process is the same and the interface is the same and demographics the same. And so we take it from here and here and here and this at least gets us a little bit further. We don't need to reinvent the wheel and we can stand on the shoulders of giants as my friend Ann likes to say. And mind mapping, these are for visual people and I say this because sometimes I like being creative and sometimes I don't. But there are so many people out there that love to just draw it out. And nobody's ever gonna hand you that, well actually did happen once, thing as a requirement. We did this on the whiteboard and we're including it. It's a sketch of what the new system should be. But it's great, I mean just get started. Let's have the conversation. Let's have the conversation because we need to find the middle path. We need to find the way. A simulation model and I can see that it's very expensive and we don't have the time. This can really just be your wireframes and making them clickable. Or this can just be, you know, just look at some screenshots of similar Drupal sites, the backend, it'll be a little bit like this except it'll be your information here and then you'll go here and you can make a prototype and I'm not talking about something fancy, you can make an approximation of what something's going to look like and if you wanna invest in some templates for a registration workflow, for a product, purchase workflow, those are really valuable because we know what this stuff looks like but often our stakeholders and our clients don't and if we just show them vanilla a lot of the time, it's all right. But it also gives us the opportunity to discuss things that may not be exactly as they need and all of a sudden we've seen it on a piece of paper and they're like, well, but we don't do that with our credit cards in it there and now we've had the conversation before we've built it. So prototypes doesn't have to be scary. So what are we looking for? We are looking for the big picture. We're looking for relationships. So the big picture to me is what does this site do? What does this business do? What do the users do? What are we expecting from people when they arrive? And then the relationships are really important because some of the time if you just get a site map, if you just get some designs or a wireframe or maybe even a list of content types, you're not really seeing the relationships between things and it doesn't have to be an entity relationship diagram. It can just be that sketch, right? So we've got this professor and he's got a class and he's in this room and there's a building over here and just kind of show me how you imagine it to work because more often than not, that natural relationship that is described in a business kind of way, like this is how it works in the real world is actually a pretty good model for the system if it works, like we're not gonna force it but me trying to think of relationships based on what I wanna display is not as good as actually having a logical sensible structure that's the information architecture in me speaking. Context is also extremely important and what I mean by that is both context of use and also the context in which we're actually doing all this planning because if there's a huge change coming, we're gonna want to plan for that as well. We're gonna like what's the next big thing for everybody here? What are the future problems? What does the system need to do in the near future? So contextually if I'm using it, I'm using the site on my phone, where am I? What do I need to do is different but it's the same kind of context like what is the, where am I in my situation? Then where the business is in their online situation because there's often when there's a redesign, there's some huge goals and huge leaps ahead and there's things that the system needs to accomplish. So that brings me to priorities and reasons because priority's gonna be really hard because the priorities sometimes come down to personal preference of whoever wears the biggest hat in the room or has the nicest title or something. But honestly, priorities need to be what makes sense for the organization. What is their mission and vision? If you don't have that kind of person involved in the project, you're in trouble because then we're just designing it because somebody's told me we need a new website, there's a list here, I need to follow it. If we don't have direction, then those very, very difficult decisions at the end when money's running low and we've got enough to build for and we really need six and who's gonna make that decision? It needs to be on somebody's head that has that mission and vision and grand scheme of things overall picture. Yes, we can do a little of this. What are our options? Because the reasons for things can be very complicated. It's cheap and fast to build features but it can get really, really expensive when you wanna customize things and change things and have them be just so. And that's the fight that usually happens. So if you can define some of that really, really early, the priorities, the big picture, the reasons for things, then you can come back to that because it's one of those documents that I think sometimes gets created, a type of charter, and then it's really far down in teamwork or base camp or whatever you use so nobody ever looks at it again. And I think it should be brought out. Maybe even every time you provide a PM report, we're gonna look at our priorities again. It doesn't have to be 15 sentences long. It could really just be a couple of points. Really gotta get this thing built. Really needs to be able to sign up people. So keeping that focus is going to help, I think too, with the build. And then I think with the last three here, assumptions, constraints, boundaries, this is what we're talking about when you say scope. Scope is not what I need. Scope is what I can build for you within this amount of time and this amount of money. Scope is not, I'm not gonna get the thing, but I need the thing. It's like you have this much money and the cookie is this much and you can't buy half a cookie, so what are we gonna do? So these conversations, I think, are part of requirements gathering. And I'm a really big fan of having them conversations road mapping out all the things that you can think of over the next two years and then drawing the lines and then saying, okay, I understand that sometimes budgets can be managed creatively. There's plenty of organizations out there that split between years. They gotta build this. They gotta build a certain way, but then they can build stuff. So all of those conversations, if you have account managers that can have those conversations, like how, you know, we're not trying to nickel and dime you, but how can we work creatively to actually build stuff with the resources that you have available? And resources, I would also include their content resources, because if you're making an extremely large shift with content, that takes a lot of time and a lot of effort. So I think validation is a piece that we skim over. We'll send them the piece of, there it is, we've estimated it. There's our description and there's all the discovery assets, deliverables, elements, sign here please. And I really think that that's an opportunity to do the validation. Now, for stakeholders, that might be showing them high level stuff, maybe just some specifics on the priorities, how we got to the features, some of the exercises, some of the very key decisions that were made in order to bring us to a certain point, because nothing is as crappy as having some supervisor come down and say, what have you been doing for the last six weeks? Everything's changed and not being aware of the process, informed and invested, bought in and understanding how we got to the place that now it looks completely different from what they asked for. That's a really, really difficult situation. So I think with this validation, there's many different ways of doing this, but you wanna focus on the decision makers and end users, sometimes in the middle those people get a little bit shortchanged, administrators, content creators, but there's a lot of room there because there's things that can shift in that area. I think for users, and this is another session perhaps, doing some user testing, navigation validation, all of those exercises in the UX realm are very valuable and showing that information as part of the presentation of requirements that have been gathered. We know that this is important because of this test that we did. We think that this actually can be left out because no one mentioned it during our interviews. And then comes the negotiation. I mean, it's a little bit of a trading card exercise. If you don't have the money for everything, then what comes in and what goes out and what needs to be changed. And sometimes if you affect one thing, everything else changes too, and it's incredibly difficult. But I think those are the conversations that aren't being had, those difficult, all stakeholders in, how we got here, how we need to move forward conversations. So now what I wanna do with a few minutes here is I'm gonna leave some time for questions, but I wanna actually use a metaphor because I do this with work with non-technical people. I wanna say, okay, so we're catering a meal. If you just get a list of recipes, or if you just get ingredients, what are you gonna be missing? I mean, there's high-level stuff that is pretty important. Why are we having this meal? Who's coming? Are there any allergies I need to know about? Like, there's some things that need to go into it. It is not just a list of stuff.  No, there's this huge eco system around it that I'm trying to balance. So maybe the request is, prepare an informal two course dinner for four, and it must have protein. And they're probably not meaning protein powder. Right, but there's things on, there's things when we get an RFP where it can be interpreted that way, like protein, shrimp, or steak. I'm not sure. So that, when we start to scope a little bit, we're gonna apply the boundaries. It's gonna be after five, guests are available this time. Oh, we haven't even talked about when it's gonna happen yet.  This is why many lenses, using many tools and validation walkthrough. So now we're gonna do a little bit of fact gathering. I have a shelfishology, so I don't really want to be serving shelfish to my guests, because I would like to be alive for the rest of the dinner. And I like spicy food, I really like peppers, this may or may not be relevant, but they've given me the information that I can now look at and say, okay, I think I've got something to work with here, because this is the kind of information that will help me figure out what and how. Because this is just enough, and then obviously that you can get into a lot more detail with something like this. I can do some analysis. I can get into a lot more detail. I think Agile is so cool, and I think Waterfalls is cool too, but somewhere in the middle is where everything is happening. And so some flexibility, I find that with the most successful projects, the flexibility is that the client, the stakeholders, the team trust each other, that if a change needs to be made, that we're not trying to screw each other, we're just trying to make it well, working and make a beautiful product. So in the end, this is what was made, and I think, I chose a name that I can't pronounce for whatever reason, and that would be really clever. But if I got that at the very beginning, I think that would have scared me off. I'm like, I don't know how to make that. Or if I just got a picture of ingredients at the very beginning, I don't know what I'm making. I like olives, maybe I'll just eat them plain. And the validation is like, so this is kind of what we're looking at, it's gonna be this, might switch out the napkin, so that matches your branding. And then at some point, they might have been thinking this, and I might have been thinking this, but we've had that conversation. And when we've gone in and actually looked at things from all kinds of directions, we were able to realize and have a good laugh about it. And have a bit of a trade-off exercise. Well, we can't do this piece anymore. Well, what are we gonna do if this happens? And the risks are something to start talking about the very beginning. And we have some data to support things now. We know what's important, and we know because many people have been able to talk this through with us. And inside this negotiation that happens, things will change. And I have to feel, as a professional, I have to feel like I didn't do anything wrong because something changed. I did something right. And I need to be in a situation where I feel safe about that, and my clients and stakeholders respect that. They respect me as somebody who has experience and knowledge in order to come up with the best possible solution. And we throw another quote up there. I know this was from a long time ago, but I just wanna say it's the mix of these abstracts and these specifics and qualitative and quantitative and a little bit of this that all needs to come together that in a very, very scary way, but if we've talked it through enough, then we can learn each other's language. And I know that there will probably be some questions now, and I always leave not enough time, but now I've got enough time. I'm gonna ask some questions. Yes. Yeah, that is a very interesting question. So the question was, how do you approach requirements gathering if it's an agile versus a waterfall approach? And I've done both, and I went and did the Scrum Master Training and all of that. And I think there's this idea that with waterfall, we have to write it all down first, and we have to know every last detail until before we can actually begin. And with agile, that we can just start. And I think the truth is somewhere in the middle, and you're gonna have a similar list for both. I think agile just means that we can stop and change our mind every two weeks. And waterfall sometimes means I can change my mind whenever you want, but, and it just comes down to like, how amiable are we to that? Sometimes that's what happens. But I think that if it's a project that needs to be waterfall, it needs a lot more planning time up front. And they can't just hand you a big 100 page document, say it's all in there. And agile basically means that you can plan out larger chunks and then get into the details during the sprints. I think there's a microphone over there. I don't know if it's, if we should be, I don't know, just yell. Yes, glasses. Yeah, right. So the question is, how do you help your clients who are engaged in an agile project understand that they can't just keep changing things over and over again? Well, part one is, do they have enough money to change things over and over and over again? There are, and I'm not even joking, there are many projects that are like that. They are just ongoing. It is, it's a gardening project. You know, every season we're doing something different. We're improving something. We're making something better. And that's the project. But that's probably not the kind that you're looking at. You're looking at the ones where there is a fixed budget. And I think that if you have allocated budget towards things, so instead of saying, I need an events calendar, how much does that cost? Well, I don't know, how long is a piece of string? What you, what you can do is say, of this budget, how much should we allocate for this feature? If we just, you know, out of the box, Drupal, Vanilla, boom, it's going to take up one quarter of this budget. You have three quarters left to customize. So they can change within that budget. I mean, I've done that before. That works really well. But like completely sweeping changes, well then nobody was told what the website purpose was. If we're changing everything, like it's e-commerce and community and now it's e-learning, like which one is it? Let's just, then the project's too big and it needs to be cut into smaller pieces. Does that help? Cool. Yes. Yeah, okay. So, had something like that recently and there is, if you look at the web metrics, there is some sort of success factor that they can understand that makes it a successful website. So for example, say I have content publishing, I've got people coming to the site, they're looking at ads, they're encouraged to sign up for something. There are things that we can measure as a business for them, right? Like, hey, so I usually ask, what are you measuring? What are we starting off with? How many, and they're like, oh, it's Google and analytics and it's all in there. No, what are you measuring as a business? Where are your subscriptions at? Oh, okay, and how much do they usually go up every year and how much would you like them to go up? And what if we could get some insight on user behavior for you? Because a lot of the time when you ask, what are users doing on your site? They'll be like, Google analytics says about page. That's not what they're doing. What are they actually doing? So there are tools and some of them are, can we really settle? Gorilla analytics, you can get on the call, a support call.  You can really cut the budget for FAQs and support. If we just can listen in a little bit or talk to your customer support people about what clients are asking, all of a sudden, phew, right? That customer support call, that's costing them something. It was like $6 a call or $2 a call and all of a sudden they're taking half as many. That's money. So the decision makers, if you can suggest that there might be a way to save some money, you can come up with a little plan and just kind of sneak in and try to find some stuff, more often than not, they're quite receptive. So instead of like, you know, I'm not asking if the users prefer red or blue. No, I'm not even asking them. Sometimes I'm just looking over their shoulder. You can also come up and talk to me after if it's like a super secret thing you want to ask me about. Gosh, yeah, many. There are, I should probably, when I upload my slides, put a reading list at the end because that would be easier, I think, than me trying to think of them through. A lot of stuff's online. A lot of that, there's some really amazing sites that are producing some really great articles that didn't exist 10 years ago. Like just, nobody was talking about things like that. So, yeah, subscribe to a few. Cool, so, yeah. Yeah, so the question is about how do you recognize unconscious requirements of your own organization? And let me just, let me tell you a little metaphor. When I asked my kid who's 14, what she's done at school, she says, you know, same stuff. And that's what we think about our own organization. Like, I go to a shop to work and I enter some data and I process some things. And that's where I want granularity.  You push a button. You enter your password.  And honestly, if you just make a log of all kinds of things to somebody else who's not been looking at it for years and years and years when you kind of explain what you're doing, there'll be some questions. Somebody'll say, oh, well, why, because when we do that, we have this thing and we pull it in the export. And so I think it's hard to tell culturally what's happening unless you go to a different country and see what are they doing over there. So there's, I think there's an incredible value to going to meetups and talking through processes with other organizations who have similar but different types of processes because they're gonna say, we had that problem. We solved it this way. We were, you've been trying to do that for years. How did you do that? And again, those conversations, it's hard to do this in a silo. It's hard to do this all on your own. The message here is to really get involved and have those conversations with multi-disciplinary groups with everybody on your team and pulling in people that you had like grandma. I'm gonna explain something to you. You tell me if it sounds weird and which part you don't understand. That is a totally valuable way of testing and validating something. I try to explain things to my kid because she's extremely non-technical at 14. It's really weird, but it works. Chad. Yeah. Right. So are they resistant to trying a usability study or are they resistant to, okay. Yeah. Yeah, so how do you bring in some usability research? How do you bring in the voice of the user if the stakeholders are resistant? Sometimes I do it secretly and what I mean by that is I look at analytics. I look at the paths. I try to write out mission critical tasks. So if your business is signing people up and they need to get through registration and everybody drops off at step two, do you wanna find out why? Because I need a little bit of ammunition, right? You can't be like, let's see what we can find because then they're just like, you're just digging holes and filling them in. But you can find a little something and say, hey, so I noticed that this is really interesting thing happening to your site. And here it is, I'm seeing it in the analytics. Should we find out why?  Yeah, that's a hard question. So the question is about RFP, initial quote, and then some kind of discovery process or IA or something that happens and then something completely different that you need to reconcile, yeah? And do you document how you got from A to B because that's, yeah, okay. Right, no, no, I think that's a moving target. I think it's going to be, I mean, it's different than saying because you've made a decision that changes what we're building halfway through, this is now 50% more work. That's different than I think re-estimating the entire project all the time. But I think you can get to a place where you can say we re-estimate at this point. Usually it's after information architecture, wireframing, when you're heading into design, we re-estimate at this point. And this is the place where there's a whole bunch of stuff that's just happened that we've learned more, that we've realized is more complex. And if you're able to show where everything is more complex, like see, and this is so tedious, we've done this before, like the RFP says you have this and then we found out that you really need it like this but with 3D, whatever. Then you can map it out and say, because this is now more complex, we need to add more time for it. However, sometimes they go, but we don't want it to be that complex. We want it back to that original estimate and then you're in that negotiation again, then you're in trade-offs and then you're, okay. So you've told us how it was built because sometimes there's the legacy system that they're trying to quote on. We've figured out that this is built in a really funky way, but really we think that you only really need like this piece here, all the rest, I don't know. This is, and this is a really big thing that happens with access and roles and permissions in my experience. So there are people who leave their computer unlocked and their office door unlocked and they work with people they like, but they want to nail down the access. So no one can edit my blog. And I just don't see why they want to spend money on that. If I'm friends with Nancy, poor Nancy, I'm just going to let her know that I edit my blog, please Nancy. And if she's like, if she's having issues with that, that's an HR problem. That's not a technical problem. Five minutes. Yes. Yeah. Yes. Yes. Yes. Usually they're completely useless. The way that they've been done. Yeah, because they'll be leading questions.  Well, there's nothing to do the website. So like, hey, I really love your, do you like this pizza company? Yes, they do. They love our website. No, they've just said that they like your pizza. It has nothing to do with the website. So I really find that a lot of surveys, they just haven't really nailed it yet. Are they like, do you think our website is easy, not easy, difficult, not difficult? And it's just people are just like, I just want the survey to be done. So I think a lot of surveys are done extremely poorly. And if you can pull out some information to show like, this here is a little bit gray and fuzzy. We would like to maybe ask these questions again, in a different way, in an educated, like everybody thinks they can run a survey now because they can use the tool. The tool is not the way to get the best analysis because there's this thinking that has to go into the questions in order to actually get reasonable answers that are meaningful. So I mean, that's difficult and hard conversation too. I've definitely had those like, hmm, yeah. So the survey, there's a few things I want to know. Yes, which tools that I use. I have a UX role, so I do design a test. I would love it if I can work closely with the stakeholder team because they need to have buy-in. They need to understand what we're testing or they just don't appreciate the results very well. So there's different tools that I have and it comes down to what do we want to find out? What are we trying to find out? User behavior, user preferences. Is it optimal structure? Is it comprehension? So depending on the question that I have that I'm trying to answer, I will use different tools. Sometimes I'll push those back to the client and have them with my help, with my facilitation, actually run the test and then I'll look at the results. It just depends on what it is. Does that answer your question? It's a whole other session. Cool. Well, I think we're kind of out of time, so yeah. Thank you so much. Do feel free to approach me and you see me and you have a question or if you wanna talk to me now I just need to drink a water.


Our next case is a 23-year-old with worsening headache, inguinal rash, and arthralgia. We're scrolling three sequences, an axial T1 contrast MR, an axial T2, and an axial flare. I'm going to pause on the relevant findings so that you can gaze at them and formulate your differential diagnosis. And as you do, now let's return to the questions. First question, the most likely diagnosis is A, Lyme disease, B, sarcoid, C, Ramsey-Hunt syndrome, D, Talusa-Hunt syndrome, E, Gradinigo's syndrome. Before I go on to the next question, spoiler alert. You're going to get the answer, so if you want to pause the educational program, I'd urge you to do so. But I'm going to move on. Question number two, which of the following regarding Lyme disease is false? A, Borrelia burgdoffi, spirochete, is the organism, a gram-negative bacterial flagellate. That's a lot of words. B, deer tick-borne disease in northeastern United States, Ohio, Tennessee Valley, and Rocky Mountains. C, presents as skin rash, erythema chronicum migrans, athralgias, meningitis, neuritis including cranial nerves, vasculitis and cardiac, the latter two occurring early. D, imaging signs include multifocal white matter lesions with or without enhancement, similar in appearance to MS or multiple sclerosis. E, likes the subcortical frontal white matter. Now, let's return to our images. As we scroll through them, the axial flare shows some nondescript, nonperiventricular and periventricular white matter lesions, which are not very specific at all. Cradial nerve enhancement is a feature of the diagnosis here, which is Lyme disease, but it occurs, unfortunately, in the minority of cases, but fortunate for the patient. When we look at the seventh and eighth nerve complexes and we blow them up, there's no enhancement of either seventh or eighth nerve complex. And occasionally, Lyme may even present with Bell's palsy syndrome or facial nerve paralysis. Let's go back to our questions and answer the questions and evaluate each choice. Let's begin with question number one. The most likely diagnosis is Lyme disease based on the imaging findings and the history. It's true that sarcoidosis could produce headaches, a rash, an arthralgia, but the rash in sarcoid is typically in the face, known as lupus perneo. So that wouldn't fit so well for sarcoid. Sarcoid can do anything. It could present with multiple white matter lesions, but typically you're gonna get some enhancement associated with sarcoid. Lyme disease, the enhancement is extremely variable, although when the cranial nerves are involved, they will enhance, but the white matter lesions typically don't enhance with any regularity. Ramsey Hunt syndrome is an infection caused by herpes zoster ophthalmicus, so it doesn't fit the history at all. You may see enhancing vesicles in the external auditory canal, but the typical findings of Ramsey Hunt should include enhancement of the seventh and eighth nerve pathway. You might even get cochlear enhancement. There are multiple cranial nerves involved. Often the clinical syndrome is far more severe at presentation than it is with Bell's palsy, but the external vesicles, both by history and on imaging are an important tip off to the diagnosis. You shouldn't confuse choice C Ramsey Hunt with Lyme disease. Tolusa Hunt, also known as granulomatous involvement of the cavernous sinus. There is no cavernous sinus disease here, so that wouldn't fit at all. That's a silly choice. And Grad Nigo syndrome, which is a form of apical petrocytis. The patients are extremely ill and the findings are associated with the anatomy that passes over the Petrus apex. We haven't shown you any abnormality of the Petrus apex or adjacent anatomy, so Grad Nigo is not a reasonable choice. The most logical choice with the history and amorphous nondescript imaging findings is Lyme disease. Question number two, which of the following regarding Lyme disease is false? And the answer, which you might find a little surprising is C. Lyme disease does present with a skin rash called erythema, chronicum migrans. It is typically an inguinal rash in the creases. They do have arthritis pretty early on. The neural findings come a bit later, including the cranial nerve enhancement. The vasculitis and cardiac findings come latest. Therefore, the statement, the latter two occurring early, namely neural and cardiac, is totally untrue. Those are findings that occur in the end game or chronically in Lyme disease. The other choices are true. Borrelia burgdorfy, a spirochete, is a gram negative bacterial flagellate. It is a deer tick-borne disease that is found in three major areas in the United States, the Ohio, Tennessee Valley, the Northeastern United States, Lyme being a small city or town in Connecticut and the Rocky Mountains. There are many other tick-borne infections that occur in the Rocky Mountains, one you are very familiar with, Rocky Mountains spotted fever. Then we have choice D. The imaging signs do include multifocal white matter lesions, which we have here. The enhancement is variable, similar in appearance to MS, but MS is a multifasic disease, waxing and waning. It has a predilection for the septiclosal region. Neither of those factors are compatible with Lyme disease. And finally, likes the subcortical frontal white matter is true and we did have innumerable frontal white matter lesions in this case. Let's move on to our next case since that concludes our discussion of Lyme disease. Shall we?


Going on everyone Sam here with late in sports cards. We've been one box of 22 Pineda Donner's Optic football blaster for Chris F. Good luck here Chris. Let's see what we've got buddy And guys top chrome release they will a lot of fun breaks tomorrow, we've got a full case of Flawless collegiate Jeremy Ruckert raided rookie hollow coming up for you guys tomorrow. It's 2020 flawless collegiate Damian Pierce elite series purple shock Roger McCreary Christian Watson rookies Purple shock John Mechie and St. Haskins a hollow Tony Romo and Logan Hall two packs to go here Purple shock is the Kobe Dean the Eagles and Dax Hill and the last pack here Chris. We've got a Diamond hands DJ more as well as James Cook We'll do it for your break there Chris. Thanks again for the support buddy. We're getting right out to you my man


We are creating a LinkedIn company page with Pam, and thank you, Pam, for sharing your screen. Below the video, there should be a link to get to this page, the creative page, creative company page. And so, Pam, let's go and click on company on the left-hand side. That's usually what most of us are doing here. And then, so here we are. So just to know what is name here, name would be, you know how on your personal LinkedIn profile, you have that resume section where you go, oh, I've worked here for this many years. I've worked there. So this is what the company name will be. It'll say, you know, you'll have your title on your LinkedIn personal profile saying, I'm a writer or I'm a teacher at which company. And so this is, for most of us, if you actually literally have a company name that's public that you promote all the time, then it's very obvious. Right, for those of us who don't, like I don't have a company name. So I literally use George Cowell Authentic Business Coach because kind of that's my tagline. But in your case, Pam, you have a company name so that you promote. So go ahead and put that in, yeah. Great, okay, so what you'll notice here is on the right-hand side of page preview, they're basically showing you, you know, what it's gonna look like as a preview. The next field is company, is the URL. So LinkedIn.com slash company slash. Now, Wing dash or dash writing dash studios is fine. Probably good for SEO, but it's gonna be kind of clunky to share it. So you might want a more elegant URL. So for example, you might just want to do slash company slash Wing Tours. Or if you think that might be confusing with another company with a similar name. Me, I have two companies that are Wing Tours. Oh, well, there you go. Okay, so you know what, here's the thing. Like the company URL, you probably shouldn't change it once you set it. If you don't know what it should be, you know, maybe we should just leave it. This is, you know, it's fine if it has dashes. You know, it's, okay, let's keep going. And where it says website down there. I know, I had put this in and it's appeared everything. So let me find it again.  Sure, sure, that's great. Okay, you've gotten to your website. Now you've copied it, go back to LinkedIn and paste it in. Great. Yeah, that's a good way to make sure you're not mistyping something. Exactly, and I would forget that little slash at the end. Oh, the slash is actually not. Doesn't matter. Okay. It doesn't matter for most, but it's okay. Keep it there. Okay. Yeah, it's okay. And then let's scroll down and now let's look at company details. Industry, just make your best guess. You know, I think you can change this. There we go, that's easy for you. And then company size is gonna be, you know, just, you know, to be honest, what's happening here? Well, I think the people who visit your page will see the company size, but it's also for LinkedIn's advertising purposes because advertisers can advertise to companies with a certain size, et cetera. But company type, go ahead and, you know, it's solo pernurship, yeah, proprietorship, I think, or self-employed. I don't know what the difference is between the two. I don't know the differences. Yeah, yeah. I think for most of us, it's probably sole proprietorship. Self-employed can also mean, I don't actually, that's a, I think either one's fine. Let's go. It's really mostly for advertisers, but let's go ahead and scroll down and... I'm not gonna, can I wait on this? Cause I don't... Oh, sure, sure. You can wait on this, but yeah, that's fine. That's fine. I have to make it a certain size, 300 by 30. I made it because, you know, I think you have a logo, company logo. I do. But that's okay. Right, there you go. So you'll have to... Is that what I should be using? Well, but the logo on LinkedIn Company page is has to be a square. So maybe just the winged horse, it's not without... No, I mean just the horse. Yeah, yeah, just, right, right. Just the horse itself. Okay, the reason I'm asking George is cause on my regular profile, I have my, I have a picture of me with my horses, but here I want the logo. Yeah, yeah, yeah, yeah, the logo, right? So anyway, you could put that in later. Scroll down, tagline. This is again, something you can change later.  Anyway, but I'll let you edit that later. Click on the check box. I verify, blah, blah, blah, click create page. It's really as simple as that. That's it. But let me now show you how to, first of all, how to get here in the future, you know, and then secondly, how to edit it in the future. So let's go to, let's go click on me on the top right where it says me, yeah, the drop down menu and click on view profile. All right. And then scroll down, okay. Scroll down to your resume where, you know, you say you work here, you work there. I don't know why the drop down menu never collapsed, but let's just keep going. Yeah, click, click on the me again just to collapse that menu. Okay, great. All right, keep going to your resume and experience. Okay, this is where you can now add in the company, the official company. So click on the, actually, I'm gonna make this into a separate segment here. So thanks everyone for your patience on this.


And here I think we talk more about the concepts of parallelism and each code is different. And at least I hope that I learned from Simo what the differences of the kind of parallelism are and how to approach each of them. So yeah, how do we, what are the different parallel models? Yeah, well actually we have already encountered one of them and that was the date, the embarrassingly parallel model. And we already did that with the array structures. So basically parallel in a cluster sense, like in a HPC sense, parallel means that you just do something individually, like you do separate things separately. Like you don't run a serial job, like we were talking about serial being from one end to another. Parallel means that you do separate pieces individually. And the embarrassingly parallel that we did with the array job. So if your job is something that can be split up in a natural, your whole workflow can be split up in a natural way, then the embarrassingly parallel is probably the most efficient way of parallelizing your job. So you shouldn't think about these parallelizations unless you consider that one first. However, when it comes to computing, parallel has another meaning as well, like outside of the HPC context. And that is that you run multiple workers or multiple CPU cores together so that they work together as a whole one task. So in one job, like embarrassingly parallel, like in the array jobs, we had individual jobs that weren't communicating with each other. We have individual CPUs that were doing their own stuff with their own seeds or datasets or whatever. But here we are going to be working so that each job has multiple CPUs assigned to it and it will utilize them together to solve one problem. And this is usually used in two ways. So there's this shared memory or multiprocessing parallelism. And then there's the MPI parallelism, which is this message-passing programming parallelism. And these are completely separate things. So if you think about your computer right now, your laptop, if you run, let's say, R or Python or Matlab on your computer, you have only one computer with multiple CPUs. Modern laptops have multiple CPUs that they can use. So all the CPUs have access to the same memory together so that there comes the name shared memory parallelism. All of the CPUs can access the same memory and then they can work together on the same machine. So many of the programs that you're working with on your laptop are similar. You can run them in a similar way in Triton so that they can use many CPUs at the same time. Could you even say that many programs these days can easily use shared memory, whether it's games or desktop applications and so on? Yes. If you, for example, are in a Zoom meeting and you look at with top or edge top, you look at the CPU utilization, you will see that there's multiple of these Zoom processes running in the background. And this is multi-processing so you have multiple, the individual processes running doing the same thing, so running the Zoom application. And for example, in HPC context, if you're running Python, the Python, especially the NumPy libraries that you usually use, they are written so that they can do parallelization. So you can run the Python so that it utilizes multiple CPUs at the same time. You can also run Python multiprocessing, like the multiprocessing module in Python code, that you can run multiple individual Python parts that do some stuff and then collect the information together. In R, you can use, for example, the parallel package that starts multiple R workers, does something and then combines the results. In Matlab, you have the parallel pool that basically starts multiple processes, does something and then collects it again. But all of these are done within one computer, so you have one shared system where you share stuff together. And in all of these, and this is different to the MPI processing that we'll be talking about later, but you have to think about when you're running your Matlab code, your Python code, whatever, on your laptop, you're running it on one system. And these are a multiprocessing code. We should also note that in all of these kinds of codes, there's what Richard is showing there, there's these losses when you're running this kind of a program. Because there's always some part of the program, let's say IO, for example, that cannot be done in parallel. And those parts need to be done in serial, so the job has to wait. And there's always these kinds of even theoretical computer science laws that you can't get like infinite parallelization, but you will get some sort of fraction of improvement. So basically, if you add four CPUs to your job, you don't necessarily get four times the improvement, but you will get something like three to 3.5 or something like that. Because there will always be parts that are not... Yeah. And even if it is good like that, if you just write a code and don't specifically make it parallel, it won't be parallel at all. Like it won't even be able to try to do anything. And if you find some random code someone else has made, you can take it and give it 10 CPUs, but if it's not able to use 10 CPUs, then it won't do anything. It'll just use one and you've wasted all the other ones. And not only that, it has to be able to detect that you've given it 10 CPUs, as opposed to one CPU and as opposed to every CPU on the machine, which may not be allocated to you. So... Yes. Yeah. So basically, whenever you're the same as with the GPU jobs, when you're running parallel jobs, you need to know what your code is actually trying to do, whether it's trying to do shared memory parallelization or this NPR parallelization and how it behaves. So these shared memory parallelizations, they are usually very... This is one of the most annoying things when someone asks me for help in using, making something parallel. I ask, what are you running? They're like this. And I'm like, okay, let's see if it's parallel. And I go to the instructions of that program and then it doesn't say how to control the parallelism or how it works, which makes our effort in running it on the cluster a lot more difficult. So if you're making code that you want others to be able to use, remember to document this thing and actually think about it and control it. So, yeah. Yes. So there's even more like these different complications usually caused by this term multi-threaded, multi-process. Usually, it doesn't matter that much. There's some examples there where it might affect.  And processes are something that run these threads. And one process can run multiple of these threads. And you can run multiple processes at the same time. And it can get quite complicated. But usually what you want to do is just to make certain that you choose one way of parallelization. You don't want to create this situation where you have launched, let's say, you have reserved four CPUs and then you launch four processes. And all of those four processes launch four threads. So you don't want to do that kind of stuff. So because then you will get into this situation where all of the different threads will compete of the same resources. Yeah. So usually, for example, here, like if you're using something like a Python straight out of the box, you can use this OMP number of threads to set the number of underlying threads that it can use for parallelization. If you're using something like Python multiprocess or R parallel or Matlab parallel pool, you want to set this number of threads underneath it to one so that you won't get this kind of multiplication that can happen. So let's look at it. We have lots of other examples here. But to me, this is a very specific thing for each person's code. So is there anything here that's worth demonstrating? I think we can demo quickly that, for example, the Python OpenMP parallelization we can show this. So this is a good example of what we might have. So here we have a small script over here. A small Python script that calculates the... Well, it just does a matrix inverse of this big array. So it's just like it doesn't do anything reasonable, but it does something that's somewhat heavy to calculate. So it takes some time to calculate. So where would this be? I think it's in the Python OpenMP. Probably here? Yeah. So I will change to the HPC examples directory. So now if you look at the example below the S of the S run statement. If I scroll down? Yeah. Here we go. Yeah. See there that you can specify the CPUs per task parameter that tells the slur to allocate multiple CPUs for this task for this job. So that means that when you're running this job, you will utilize multiple CPUs. Of course, you're not necessarily... You don't know whether it utilizes them if you don't know that the code actually uses them, but you can ask for multiple CPUs. So it's just one flag similar to the GRES statement. You can specify this CPUs per task and you will get multiple CPUs. I used to also put the export OMP broke bind. What that does is to tell the Python or the libraries underneath the Python to use the different CPUs basically. And then when you ask for the CPUs, it will utilize a lot of the CPUs. Okay. Python. Okay, let's see if it works. It's cute. It's allocated. Okay. Now remember how long it takes to run. But basically it's just another flag. Like if you need to use multiple CPUs, you just need to specify the number of CPUs you need. Okay, let's try the same command. Okay, let's look at history actually. Yeah, let's look at history. So you can see there that the code printed how many CPUs it was using because, well, it was written in the code. Job ID. And if we go on down, we see... If you can get the runtime and the total CPU time together in the... Here we go. Yeah. So here you can see that the total, the wall time. So how much time it actually took, like in real world, it took 16 seconds to run this job. But the CPU time used was 30 seconds. So it was actually doing something for 30 CPU seconds. So if you think about it, we asked for two CPUs. It ran for 15 seconds. It used 30 CPU seconds. So it seems to be that it utilized both of these. And by using this SF command, we can then look at what is the CPU utilization. And we see that the CPU efficiency was 93%. So we saw, we can see that it actually utilized all of the CPUs. Let's try the same command with additional CPUs. So put like four CPUs there. And let's see whether we get... What sort of performance we get. So changing... So basically then we just switch the CPUs per task for four. So if we think about it, the total runtime was 30 seconds. So we should divide it by four. So we expect it to be something like seven and a half seconds. But then we know that there's going to be losses anyway. So you see that it's not 7.5, it was 9.7. So there's some serial part that could not be parallelized by the code. And this is like an example where the parallelization is at maximum. Because it's doing something that can be very easily parallelized, which is these matrix operations. But in many cases, if you're doing something, the parallelization can be much worse. But what can we learn from this is that in many of these easy languages like Python and R, you can easily just ask for more CPUs and see whether you get the efficiency increase. So you can see that the efficiency increase was 90%. So you can try and see whether it works. If it doesn't work, then it doesn't work. So I can keep going up until the efficiency gets too low and then realize that, okay, now I have to stop adding more CPUs. But if you think about it, let's say theoretically that the code we were testing now, if that would have taken an hour to run, we would have wasted 10% of the hour. So six minutes of the hour would have been wasted now. And let's say we want to run four instances of the same thing. We could run four jobs that would take this... We could run four 15-minute jobs that would take totally an hour, basically. Or we could run an array job of four that would take an hour also, but we would get better efficiency. So in cases where you have to think about whether you want to speed it up or make one job faster to run versus the whole thing to run faster, you might need to do the array parallelization instead. If you want to get the maximum efficiency, you need to... So basically it's better to run the smallest job you need but then run more of them. Yes, unless of course the runtime gets so long that it gets hard to get through the queue. So let's say if the runtime takes a day and you need results to be done today, then you might need to increase the parallelization. But usually the parallelization is only... It only works when it works and you shouldn't necessarily... You should know whether your code actually supports it. Yeah. Okay, but there's the other form of parallelization that is much more complicated but it's common to these HBC systems and supercomputers and this is the MPI parallelization. And this is something that if your code doesn't support it, it doesn't support it. In the team that whether it supports it or not. Like this is... But this is something that basically the supercomputers use to do thousands of nodes worth of... You can scale it up to huge exascale computations but there will be of course different complications when you're doing that. But MPI basically does is that you have huge amounts of different tasks working together and they communicate with this MPI message passing interface. And this is basically going from one... Instead of you're working in one computer like we were previously working when we asked for multiple CPUs. In this case we are asking for a number of workers that can end up on any kinds of computers. So we're working across the node like actual physical machine boundaries. We're working with more than one machine. And for this to work you need to specify a certain MPI library. So they are not compatible with each other. So you should specify the specific library. So for example open MPI. You need to compile your task or your code to use that library. And then you need to give it this end tasks option of how many workers you need. And you will get like this... They will be distributed to the cluster and they will communicate with each other. So many physics codes use this. There's also the MPI for Pi package that uses this if you do MPI parallelization in Python but it's complicated there. And there's other libraries in R and Matlab. Matlab quite rarely uses MPI but there's other packages in other languages in Julia for example that uses MPI as well to do multi-node processing. But this is like more complicated and you need to read or go to a course on MPI if you want to use this if your code doesn't automatically support it. So you need to go to a course if you want to write a code that uses it. But I guess... If you're using something that we have already installed like the OpenFoam or CP2k or Lamps or something like these kind of physics codes they are already compiled by us and in those cases you don't usually need to like learn how to code MPI yourself you can just use them but then you need to specify what kind of... how many tasks you want how many workers you want but I want to reiterate if you're working with like these shared memory programs don't specify the tasks number because otherwise you will get into this situation and then we will start to multiple copies of the same job so multiple copies that don't know that the others exist because they don't understand MPI and you will... you will confuse the system and at worst case you will write to the same data files and cause all kinds of problems so if you are working with parallel pool Python multiprocessing, OpenMP don't use the tasks option at all if you're using MPI use the MPI... well use the end tasks option then so here in the example there's a simple like C and Fortran MPI Hello World examples we don't need to necessarily go through them but we could look at the SBAT script a bit at the bottom so what you usually want to do with MPI job is to specify a certain number of tasks and maybe specify the constraint of the CPU architecture that you want to do that all of the nodes end up on a similar kind of a CPU architecture you might... if you look at Slurm features output there are different architectures for like hash well, broad well and everything like that and you might need to... you might want to specify certain of those architectures so that you know that you can estimate the run time easier when you specify one of those specific node architectures when you're running these big jobs so these MPI jobs can go up to like hundreds of tasks whereas the CPU tasks are limited by the number of CPUs in the actual machines so all of our nodes have either 14, 20, 24 or 40 CPUs like physical CPUs in the computer and that is the maximum for the shared memory parallelization for the MPI parallelization you usually want to reserve full nodes or half nodes or something like that but the performance is the best so what you usually need to do is ask for multiple... well, you ask for a certain amount of nodes and a certain amount of tasks and then you get it there okay, so... yeah, over here is the instructions if you're going to be running these MPI programs here's instructions on how to spread the node tasks evenly with these number of nodes and the number of tasks per node yeah in monitoring performance we already demonstrated the SF program yeah, I think we could... like before we... if we run the last examples like of running this some of these... the exercises here are more... up above like if we run the different examples like we were talking about running these MATLAB scripts and Python scripts but we could demonstrate the first one the first exercise so this is a good one to do yeah so there are two... really different options here so like what we are going to be running the CPU is per task which is the shared memory paradigm then there's the number of tasks which is the MPI paradigm and then the number of nodes which is the... yeah, if we... run... plain hostname you can see that it runs on CSL48 and you get one... one task running there one... one job was running yeah so here we add in CPUs per task and we see one hostname yeah so you will get one process that has access to four CPUs of course the hostname command doesn't utilize those CPUs but it still runs only one program but if you run it with the number of tasks set to four you will notice that... well you will notice something else happening which is now like... if you would run an MPI program two dashes yeah so now you see that you get four responses so this is because like... when you're running with the end tasks Slurm starts four different processes and it expects these processes to understand the MPI communication and to be able to discuss with each other what's the part of each individual process of the whole but if your code doesn't understand MPI if it doesn't use MPI this will mean it will start four competing like processes that all do the same thing so if you're trying to do simple like CPU parallelization don't use the end tasks because you will get mistakes like this and it will tank the performance and it will at worst case cause like issues with I overwriting and if you specify nodes for you will see that they all end up in different nodes so when you're using simple parallelization techniques like what you use on your own computer please use the the CPUs per task that's all you need you can just specify that and then you can try to figure out how to get the best efficiency out of the system and you can come and discuss us if you are unsure whether the program is using the CPUs correctly or not mm-hmm okay what if we combine them yeah I think you will get the same what's the same thing yeah but if we ask for 16 tasks so in this case you will get 16 tasks but they're not evenly distributed so so this is why you when you're using the nodes if you're running nodes you should specify that you want them to be distributed as evenly as possible because otherwise you will get these performance when all of these tasks will try to communicate with the other tasks in the different nodes so when you're running big MPI jobs it might be a good idea also to ask us whether we can look at what is the best geometry in the cluster, what is the best way of running it okay so what now do we so we had this idea of demonstrating some Python R and MATLAB things should we take a quick break and then go and I guess we're sort of out of time right now but we've covered all the actual tutorials and what we're about to do can easily be watched by video, the video recordings can be watched later equally to now yeah but I want to reiterate make clear that like this day it might seem that this day is like a huge jump in difficulty and that's because it is because the tasks or the questions at hand are much more difficult and much more complex and when you're scaling your stuff up to a bigger scale it will eventually become complex but if you felt like at home with the serial jobs it's not a big work from there to these other parts if you take it step by step so what I recommend is that first getting like hand is on a touch on how to like run a serial job, one serial job in Triton then if you feel like you can parallelize it with the array job then try to parallelize it with the array job and if you know that your code is capable of utilizing GPUs in memory parallelization or shared memory parallelization or open mpa parallelization then discuss with us and we can help you get started with those but you know that they exist, these possibilities exist but the serial job is really the most people need yeah and if you would like, if you make an attempt and would like someone to look at it come to our daily garage so every day at one we're in a Zoom meeting and you can we're happy to look at your things and give you some comments and then see what um like see if we have any suggestions so you don't have to worry about doing it right all by yourself we're here for you should we have a small break and then put some extra material of how to like run a simple simple webflow so we'll be back maybe in 5 minutes you'll have some more examples so please give us feedback either in HackMD or via the chat whatever let us know how this went, how the material can be improved was this even on topic for what your needs were um and so on any other courses you would like us to give um yeah this is very important and we especially want bad feedback because we can do something about bad feedback but good feedback will mean we just keep doing things. Okay thanks a lot for attending yeah thanks


Are you a broke college student looking to improve your photography or videography game? Well, today we'll be talking about cheap vintage film lenses from the 1960s like these bad boys. What's up y'all? My name is Angel and a very warm welcome to CalTV Gallery. Now today I'll be talking a little bit more about vintage film lenses. So what are they? Back in the day, lenses were designed for film cameras, which are cameras where you actually put a sheet of film in and there's like some chemicals on the film that would change colors. Chemistry. Who knew that chemistry would actually be important in daily life? Chemistry. So why you may ask? Why on earth would anybody want to bring these old film lenses back? First and foremost, old vintage lenses have a certain character that surrounds them that is not like today's lenses. I want to show you what a lens flare looks like on a digital lens. This lens creates these kinds of like greenish lens flares, which I'm not a big fan of. And now we have switched over to the old vintage lens. Now let me show you what a lens flare looks like. Ooh. In my personal opinion, I feel that this looks a lot better than what the digital lens can give me. Yeah, it's even more pronounced when I put it right up to the lens like that. So we're going to hop over to some of the pictures that I shot with this lens. Now this one is a picture that I took at Leverdoll Park in Singapore. You can see these little like purpley and greenish tinges that follow along the edges of the cranes, but does give the images some kind of a retro vintage look that I feel is really nice. Also, the way that the lens renders color is slightly different than digital lenses. As you can see, the entire image has a slight tinge to it. And there's something in the feel of the image that I just can't explain. This is another image that was also taken with the vintage lens of this red thing monument thingy by the sea. These images have taken straight out of the camera. No post-processing has been done at all. And you can see that there's kind of like an Instagram feel or emotion for it. Now apart from the unique characteristics that these vintage lenses can give to you, there's something else that is in it for you, which is that these lenses are cheap. I managed to pick two of these guys up for just 65 Singapore dollars each, which is about 40 US dollars. Also, the lenses that I bought came with this really interesting looking leather case thingy. Most of these film lenses don't come without a focus. This means that you can twist the ring in front of the lens and that will help you adjust your focus. The problem with manual focus is that you may not get your focus right all the time. And so with that, we've come to the end of this video. I hope that you've learned something about vintage lenses today. Do leave a comment down below if you have any questions about vintage lenses or cinematography in general. Don't forget to like, share, and subscribe to CalTV for more amazing videos. I don't know how to end this. I'm just going to show you more videos of these beautiful lenses. Bye-bye!


Now, youths across or just they'd have thrown their weight behind the Kogi state governor Yahya Beller over his race to the nation's presidency in 2023. Chantin Solidarity songs the youth march from ring road axis of Ibadan towards challenge as early as 10 a.m. It was a simultaneous gathering of youth in over 23 states across the six geopolitical zones of the federation. According to the youths, Governor Beller has been a frontliner in the area of youths, women and capital development across the country. They believe that Yahya Beller's development was tried in Kogi state will spur him to make Nigeria great again. Our leaders have been covered for the past 20 to 30 to 40 years now and they are still watching, they are still in the business class, they were the ones who told us that Olo the Romani is in the business class, but they are still in the business class, they are still there, they still want to come back, when else will they get to be the youth of Nigeria? Other country in the world, it is the youth, people who have 40, 50 years that ruled the country by Nigeria, you must be 60, 70, 80 before you become president. Why is it not that? Now we are not telling you that. We are begging everyone of us, we are begging APC government to give Yahya Beller an APC ticket come 2023. I'm going for somebody that can do, somebody that can say let's go and they will go. Not that let's go, nobody will follow you. We need youth that will stand up and come and say it is time for us to stand up. Yahya Beller is the person that is coming in now for us, that is fighting for us.  A nation's development is at Ontario ground. Youth capacity building, of course digitalization. Number two security, number three infrastructure. If you go to Kodi State today, you see that they have navigated from the analog way of youth involvement in governance, rather it is now digital driving. Also, we can also say, bring it out, where in Kodi State are we head of a single attack. The integration is a governor that can secure in states, can also, if given a higher platform, secure this country called Nigeria. Subscribe to our YouTube channel and don't forget to hit the notification button so you get notified about fresh news updates.


Challenge-based learning. The strategic focus of this funding call was transforming teaching and learning for student success. For this project, we focused on challenge-based learning and how we could enhance student success through incorporating CBL into our programs. The overarching goal of this project was to provide CPD activities to support staff that wish to integrate CBL into their programs. Challenge-based learning will be central to DCU's teaching and learning strategy over the coming years, driven by the university's success in securing very substantial funding for DCU Futures under pillar tree of the Human Capital Initiative and its participation in the EU's European Universities Initiative as a partner in the ECIU University. As DCU Futures commits DCU to developing a number of new programs and pathways in existing programs that will have challenge-based learning as a core element along with considerable online elements, therefore this saddle project has direct alignment with DCU's strategic paths. This project is divided into four parts. The collation and creation of resources, provision of CPD for staff, enhancement of learning spaces and the implementation of students as partners approach within our curriculum. First looking at the staff resources. We collated a literature review on challenge-based learning to CBL and we also created a suite of resources that's now available both on our virtual learning environment and also on DCU's main website. With regards to the CPD events, we ran a suite of workshops relating to CBL and they were all run for staff covering the pedagogies that are the foundation to challenge-based learning such as group work and peer assessment along with learning design workshops to help staff develop new programs and also redesign existing ones. All of these equated to over 600 person hours of CPD through this project alone. Furthermore, we were able to use these products to conduct a study visit to our ECIU partner institution that specializes in CBL. You'll see there the hackathon. This was the flagship CPD event for this project. We had over 50 staff from multiple disciplines across the entire university engage in the day-long event which was to redesign assessments. We had 10 teaching and learning experts from Irish and UK higher education sector act as mentors for the day. And we also had student ambassadors involved throughout the day to give staff feedback and support to the solutions that the staff proposed as part of the hackathon. The next element and a large part of this project is the implementation of the students as partners methodology within our programs. We chose to focus this aspect of the project on students as partners in assessment. A literature review was commissioned to scope out the current partnership practices and to synthesize these into useful practical approaches that lecturers could undertake with their students. These practical approaches were grouped into three categories. Self and peer assessment, assessment tasks and criteria and collaborative grading. Within these three categories, the possible approaches exist along a continuum from simple to more complex. And as this continuum mirrors the ladder of student participation according to Bovell and Bulley. In tandem with this literature review, eight lectures were recruited to pilot assessment partnership approaches across 11 different modules. These approaches included self and peer assessment, giving students choice with assessment and co-creation of assessment tasks and also assessment rubrics. By far the most common approach that was utilized was self and peer assessment. This is generally a positive experience for both staff and students and staff indicating they wish to continue to utilize these methods. The pilots were evaluated by way of staff and student engagement and 77% of the student respondents strongly agreed or agreed that they felt involved or engaged with this module because of the assessment partnership. Actually 4% of student respondents felt they performed well in the module because of being involved in this partnership. Aligning this with 87% of staff respondents felt that students' partnership approach enabled better student performance in their assessment and they also felt that students' partners enabled a greater student engagement. Similarly, they stated they will continue with the students' partnership into the future. And building on this foundational work that we were able to get off the ground with this project, we'll continue to support lecturers to embed student partnership into their practices. Following the success on all of the aforementioned elements of the project, the last piece in the jigsaw is learning spaces. Findings from our live review and the focus groups that we had with staff helped inform and influence separate university projects that was on the design of learning spaces. The learning spaces that were created were improved through this project and they'll act as a template for future enhancements of learning spaces that will help facilitate the teaching of CBL. So in terms of impact and sustainability, 4 words spring to mind. Outputs, collaboration, engagement and outcomes. And let's start with the outputs. These are the easiest to measure. We provided, as I said, over 600 hours of CPD. We created numerous staff resources and student resources and we helped upgrade to learning spaces. Then there's collaboration. This project resulted in collaboration internally within the university nationally across the sector and internationally as well. We've established multidisciplinary CBL networks within the university. We've had numerous institutions throughout Ireland and visited our learning spaces that we've designed resulting from this project. Our hackathon brought together mentors from 11 different higher education institutions that initially was to support our event on the day, but now has led to several follow on collaborations. All of these collaborations will feed directly into future teaching and learning initiatives as well as helping inform future CPD activities for our staff and indeed our students. Engagement is the other word. Engagement on top of engaging so many different staff in the CPD. The more impressive impact of this project is the strong student engagement that has resulted from this project. The students as partners approach has led to significant increase in student engagement in their learning. Research is still on their way to continue to further determine the impact of this approach. There are now many more examples throughout the university of students as partners approach along that continuum of options that were mentioned earlier on. Finally, and for me probably the most most important impact of this project is the overall outcome. And this project has helped us change the mindsets, the mindsets of staff by showing them firsthand to see the benefits of using a students as partners approach. The benefits of changing the way they teach and integrating in CBL as an overall approach as an overarching pedagogy throughout our modules. This change in mindset will last long beyond the lifetime of this project. So I want to wrap up by thanking the National Forum for funding the project and thanking all the staff that have engaged and continue to engage with this project. If you would like more information on this project, please visit the Teaching Enhancements Units webpage within the DCU website or contact me directly on mark.glin at dcu.ie.


Staying in the Niger Delta, the era of violent agitations in the region is gone, and youth leaders are advised to seek peaceful means of airing their grievances against the government and multinationals. Now, this is the reason behind the leadership retreat for the leaders of the movement for the survival of the Isan ethnic nationality in the Niger Delta, Moshiand, organized by the Nigerian content development and monitoring board in Uyo. The youth are also enlightened of their roles in ensuring a peaceful and conducive environment where businesses can thrive. The incidences of a blockage of oil company gates and disruption of operations has reduced very drastically. In those days it was a daily occurrence but today it has reduced drastically partly because of the work that the NCDMB has done because we have a department that is dedicated just to community issues and every day we receive petitions from communities. These petitions are coming in because over the years we have organized youth sensation workshops across the Niger Delta. So knowledge lens will be cascaded down into the diverse communities. It's no longer about muscle, it's no longer about brown but it's a lot more about engagement, it's a lot more about dialogue and it's a lot more about negotiation. We looked at some of the organizations that are well doing and we spotted out NCDB under engineer Simbi Wabote who has brought innovation, who has brought some level of leadership dexterity. We saw the need that we need to change the narrative of the Niger Delta. Yes we have a fair course, we need global attention, we need federal government attention, we can do it consistently on a confrontational approach or reactionary. Environment is being bastardized, it affects the survival of women and we know the role of women in the society. So for me I would say this training is very very important as it will help them, every mother has a child. So it will help them to also pass this message to their families, to the society to ensure a peaceful and conducive environment.