Whoever's going to work on it and whoever provides input to this story, whoever is involved in this story in any kind of way, put them in a room, spend 15 minutes talking through the story and come up with some examples to describe this story. And when you do that, some amazing things will happen. Well, first, you create those examples that will come out of it. The next thing you'll discover is, you know, with these examples, you'll start to notice that the business rules around this story become clearer. Or maybe some of them are already defined, but you will discover new ones. You will realize that the ones that you already knew about were ambiguous or unclear or contradictory. But as soon as you start talking about concrete examples, people can visualize it. People can see where it's inconsistent. The other thing that you come out of these meetings is questions. Every now and then, the developer will ask the product owner about something and the product owner goes, you know, that's a really good question. I don't know. Let me try and find out. And then you can just park it. What you've just done is to promote an unknown unknown to a known unknown that the BA or the product owner or the domain expert or whoever it is can go back and analyze and find out about before you start writing the defective code. So I said 15 minutes because it's important to keep these meetings really fast and really frequent. You want to have a 15-minute meeting for every story like this. So don't try to solve the problem or get an answer to the question. Just write it down. Another thing that happens is that you can create smaller stories. Now, tomorrow in my workshop, I'm going to do this. So I'll show you some techniques about how you can come up with more examples for a story. But one thing that happens is, you know, for some stories, you'll get a lot of examples. Or for some stories, you'll realize that, you know, there are so many different rules. And when you see that there's lots of examples and lots of rules, well, that's an indication that this is a big story. You can break it up into smaller chunks. And it's much easier for the product owner to realize the magnitude of what they're asking for when they can actually experience firsthand through a conversation that there are so many different paths. There are so many different examples. We have to break this up.  Break them up in examples which are more like horizontal, sorry, vertical slices, which is just like, you know, this is one path through this story. This is another one. But perhaps the most important thing that you get out of this meeting is not even any of these. It's just that you get a shared understanding between everyone on the team.   When things go wrong, which they always do, even if you do three Migos meetings, it's harder to blame one another because everybody was in the same room and gave their best shot. So if you have a problem with blame, you know, with blame in your organization, this is a great tool to just get rid of that toxic culture. There's absolutely no excuse not to do this. Just try it out. Don't say it's BDD. Just, you know, try and grab some people and say, you know, can I ask, you know, can we have a quick chat, talk through some examples, just see what happens? You'll be amazed. So, yeah, because everybody has a different perspective. So talking about perspectives, what I see a lot of people do when they're trying to adopt BDD is, you know, we have this syntax called given when then, at least in Cucumber, which is a way to formalize those examples. And one of the things I see is that, well, yeah, the BAs, they write the given when then in the JIRA ticket and then they hand it off to a developer.  It's you want to have the conversation around these things.  So if you're putting given when then or Cucumber scenarios in JIRA, please stop doing that. It doesn't help. It's just the old way, you know, in new clothes. So I've been talking about concrete examples. Do you know what I mean by concrete example? Do I need to get meta and give you an example of a concrete example? Fair enough. So think about the last time you used a piece of software, maybe on your phone, on your laptop, right? Who wants to give an example? How about you? Last time you used a piece of software on your phone. What was it? Top of, top, excellent quote, yeah. Top up my prepaid phone. So that's an example. But it's, can you give me, tell me what you did? Yeah? You put your phone number, where did you put your phone number? Into your phone? So you went to a website. You entered your phone number. And then what happened? How much money you want to charge for? And then you expect to get an SMS, sent to your phone with confirmation that you've charged it. So that's a concrete example. You can make it even more concrete, right? You can say, well, what's your number? Because that might be relevant. I've got a UK number. What happens if I put my number in? Maybe the amount is relevant. Maybe something different happens if you use a different amount. So concrete example is just little stories like this. And when I say story, I don't mean story in a sense of scrum. I mean story in a sense of telling a story. With concrete, with real people, real values, real places, that helps people visualize it. And the great thing about concrete example is that everybody understands it. Everybody. It's not technical. This is about how users are interacting with your software. Everybody can provide feedback. And everybody has a different perspective. So you will talk about it until you agree what it is. And the great thing about this is that it's rooted in the problem domain. Now, what does that mean? Another buzzword, problem domain. So has anyone raised your hand if you read Eric Evans' domain-driven design book? Well, I haven't because it's too long, but I've been flicking through it for 10 years. And there's this picture in there. It looks like this. I love this picture. It's such a great illustration. When you write software, there's two domains. There's the problem domain, which is where the users are, and the businesses, and the patients, and the contracts, and the futures, and the options, and all these real-world people and things. And then you have a problem that, hopefully, we're going to solve with the software. And then there is the solution domain, which is where people like me operate most of the time, where we have our MongoDBs, and our JavaScripts, and our database tables, and our classes, and methods, and so on. But one of the problems, and I'm sure you've all experienced this, one big problem on the project is, you know, this communication problem, because we don't speak the same language. We've completed different vocabulary. So there is a translation cost whenever you're going to have a conversation between somebody who's in a solution domain, which is typically a tester or a developer with somebody in a problem domain, they're not going to understand one another. And if we can increase this area in the middle here where people talk the same language, we'll have fewer misunderstandings. And this is more about the people in the solution domain reaching out to the problem domain and trying to understand that domain more than the other way around. I have seen teams where the technical people are so fanatic about trying to educate people in the problem domain about the constraints of relational databases and whatnot, but that doesn't really help. If the people in a solution domain can understand the problem domain well enough, the solution will take care of itself, because, you know, software, all we're doing is we're creating a model of the real world. And if you don't understand... how can you create a good model or good software unless you understand the problem domain? So everybody who's a programmer, they need to understand this. I was in my previous job. I was working in finance. I was, you know, options in futures. I didn't have a clue. So I had to learn about this whole financial domain before I could even start writing software. I mean, I guess I suppose I could have started writing software the first day, but it would just have been a mess, right? So if you model the problem well enough, the solution will take care of itself, but you have to have this ubiquitous language. Yet another buzzword. So ubiquitous language is another thing from DomainDream and Design, which is basically... it's a language that is everywhere. That's what it means. And by everywhere, I mean that the words that the business people or the users, the words that they use, they have to be used in the solution domain as well, meaning in the code. So if it's called a customer, if people are talking about customers, you know, the people who are in the shops, it's a big mistake to model them as users or use some other word in the software because that is going to create this misunderstanding. So ubiquitous language is the idea that you take the vocabulary from the problem domain and you use those words and you let it affect the software very, very, very much. And concrete examples, talking through concrete examples, they help you build this ubiquitous language because you're putting these people from both the problem domain and the solution domain in the same room, and now you will get rid of this, or you'll probably never get rid of it, but you'll eliminate a lot of the misunderstandings and you'll converge towards a more common language. Another thing is these concrete examples, they can provide a shared source of truth. So I remember when I joined ThoughtWorks, I was introduced to extreme programming and I came from Waterfall, and this is quite liberating because in extreme programming there's no documentation. If you wanted to seek out the truth, you had to go to the code and you had to read the unit tests because being good extreme programmers, you would write TDD and pay a program and that's where we would define the truth. And if you didn't know how to read code, well, tough, right? So unfair, that's mean. What about all the non-technical people on the project? Where is their source of truth? They can't read the code. In this kind of attitude, I find it a bit ridiculous that you go to the code to find the truth in the case of excluding the most important people from the truth. Where do the real people go and look for the truth in software? Do they go to the requirement specification? No, that's out of date. They go to the documentation, they go to the software, they open the app, they start poking around. So we have two different truths. We have the external description of the thing itself and then you have the way it is on the inside. But with examples, you can converge this into one thing. The examples, they are one source of truth because as I'll show you tomorrow, if you come to my workshop, we can turn them into automated tests. Concrete examples, they help you to split stories into small pieces, which is really, really important for predictability. In order to be able to have any level of predictability, you need to work in small chunks and if you create examples, you will quickly see whether a story is too big and is to be split up or whether you can just work on it as is. In most cases, you will find that you can split them up. So that's concrete examples. The other thing about behavior-driven development is test-driven development. So why do we even have tests for our software? Well, imagine Homer Simpson. He's sitting in his atomic nuclear power plant and there's all these lights, all these yellow lights, and something goes wrong and they all start flashing. That's what automated tests are. They're warning lights that you attach to your code so that when something goes wrong, these warning lights go off.  You'll be really annoying and you don't really know what to do with it. But if you do this well and TDD helps with that, they will actually give you, tell you exactly where the problem is so that you can fix it. That's one of the reasons we do TDD. If you try and write all the tests afterwards, typically they tell you where the problem is. They just tell you that there is a problem. And then there's this other thing about TDD that everyone forgets. That's refactoring. So with TDD, the cycle is you write a failing test, you watch it fail, you write just enough code to make it pass, and then you write another test, right? No, you refactor. And then you write another test. But people don't do refactoring. At least a lot of the teams that I visit don't do it for many different reasons. Some people need permission to do refactoring. You have to go and ask the manager if they can do some refactoring. Or some teams, they do refactoring sprints. Two weeks of refactoring. The planet ahead. We're going to do refactoring in a sprint. Or they don't, right? They just don't. And I think one of the reasons people don't do refactoring is that they don't know what it is. They see the benefit. If you go back to this problem domain, solution domain thing, this word, where does that belong? It's in the solution domain. It's technical lingo. But does that mean that it doesn't have value to the people in the problem domain? Does refactoring have value to the people in the problem domain? Of course it does. This is what's going to keep the product alive as time goes by. This is what's going to make it possible to actually maintain and fix bugs and evolve this product. If you don't do refactoring, it's going to die.  So it has value to the people in the problem domain, but people don't do it because it's not well understood what it is. So I think we need a new word for it. So I have a metaphor for this. Imagine you're in a kitchen. Kitchen like this. And the programmers and testers, they are the chefs. And the BAs, they are the waiters taking the orders from the customers sitting in the restaurant. And the kitchen is the code base. So imagine what this kitchen looks like. Does it look like this? Or does it look like this? This is the kitchen that most programmers work in. It's messy. Baking food here is slow. The food we make here is bad. It can make you sick. The chefs will walk in here and they will trip over and hurt themselves. You get dirty. If you want to be agile, you can't have a kitchen like this. You need to clean up. So a much better word for refactoring is cleaning up. If you go to a sushi restaurant, you will observe the sushi chef. They make a little dish and then they clean up immediately. That's how you do refactoring. So you can't stay agile unless you have a clean kitchen or clean code. And you can't have clean code unless you do refactoring. And you can't refactor unless you have good automated tests. You need those warning lines to go off when you do refactoring that destroys something. So TDD will eventually slow you down because you build lots of tests and you have to start listening to those tests. When they get slow, that's the clue for you that you shouldn't try and parallelize it and run it on lots of different machines.  To make it more modular. To migrate from a monolith to microservices, perhaps. You have to listen to those tests because you run them and you have to keep them fast. So to sum up, if you want to succeed with agile, there are no shortcuts. You have to have excellent communication in your team. You have to talk to one another. Try those discovery workshops for stories. And you have to have excellent code. If you don't have this, you can forget about agile. That's my talk. Any questions? Would be effective if we have only good automation code. So... What I felt is at least what we are doing is automation code mainly focuses on the functionality. So... Refactoring is something like which won't impact the functionality. So even the functionality is fine. Some refactoring work will be there in the backlog. We often say that we will take it up in the next release like that. As long as the functionality is not broken, refactoring is not a high priority case. So in such cases, how would automation be helpful? Sorry, I didn't catch it. What was the question? I said refactoring is more effective. Automation code will be more effective to refactor the actual code. Automation test. So if we have good automation test, then refactoring will be done easier. That's what I got it. But what I think is automation code focuses more on the functionality. And... If there is no break in functionality, how would automation code be helpful for taking up a refactoring story? Okay, so your question is how would automation code help for refactoring? Yeah. So refactoring is all it means is to change the internal structure of a program without changing its external behavior. And an automated test makes assumptions about the behavior. It observes the behavior and if the behavior is not what it is expected to do, then the test will fail and you'll have one of those warning lamps go off. Right? So how does it help? Well, if you do a refactoring and accidentally change the behavior while you're cleaning up, the test will tell you and then you can fix it. But if you don't have those tests, you can't refactor safely because you don't know if you broke anything. And then people will stop refactoring and you'll end up with a code base like this. Not immediately. It will take you six months to start out like this, but it happens over time. It's like boiling a frog. Have you ever tried to boil a frog? I haven't, but I've heard it said that if you drop it in cold water and just turn off the heat, they'll just die. They don't notice it. If you drop it in, boiling water will jump out. So you don't... If you stop refactoring, you won't notice that your code is deteriorating. You need the tests to be able to clean up. Yeah. Actually, that's what is happening in our case. Whenever we talk about a refactoring story and the next question comes up is like, is it creating any problem now? Is the existing feature or something has broken? So why should we take it up? Because it's a national higher priority stories. Yeah. So more often than not, it is going back to the backlog. Thank you. So in our company, we are writing a lot of specification using health care and tons of it. And it's really good. It is creating conversations and we have very good specifications and examples and all the good things are happening but when it comes to creating automation that goes to have that specification to live like a automation suite that's when things start breaking up and so maybe 20% of those specifications actually become live or turn green in their life. Most of them are still red. Is it a good idea to keep them that way or is it... Do we just labor through each and everything to make it green? No. I don't know your particular situation well but fix them or get rid of them. Tests are a liability. Right? Because you have to maintain it. The value of test is not constant over time. They are most valuable when you are modifying the code that is testing which is typically in the beginning and it can be over time as well. So if you have tests that never pass well they provide no value so you can throw them away. It's not that. I think my question is this are not passing if you run those manually they will pass but the automation that goes behind those tests is not yet done. So do we labor through automating each and every because there is so much of specification that we are over one in terms of automation? Yeah. If your tests are never green how are you going to notice if you have two kinds of tests. You have the important ones that are green and the ones that we have given up worrying about that are red how are you going to notice if one of the important ones start failing? It's just another red among the 120 other red ones. You are not going to notice so they are no longer warning lights. They will not cause anyone to react. If your tests are always green and you have one going off you can be sure that people will actually do something about it but I would wager that in your case one of the tests goes red nobody cares. So they don't really serve much of a purpose I think. I would stop running I would fix to stop running the red ones and try and introduce a culture where tests should always be green and you stop everything if something goes red. From now on you can turn the page and you can start over and you can maybe keep those old ones just for documentation but they are only dragging you down at this point. Do you need a microphone? Actually, we have the automated test I'm not sure whether here how many of them knows the fixtures are JTF tests. We have some 7000 tests running in a spot of daily build process they cover the existing code so if any new check-ins break the existing functionality that test immediately will fail. So we do see that these new check-ins are breaking the existing code that's like a refactor so immediately we'll come to know so this like this advantage of having the automated test as like warning signs to catch the new check-ins like if they are breaking any builds or if they are it's not like good code something if it is breaking an existing functionality. Through the JTFs we'll see the code coverages also. So just I'm stressing that having the automated test is like warning sign exactly. Yeah? Last question. I'm sorry, what's that a question or was it just your observation? Yeah, no, I agree. Hi. Regarding the source of truth when you were... Yeah, the source of truth. The source of truth. We also have a similar kind of situation where the product doesn't have a good requirement or a specification and then when we have to do a major refactoring we have to look into the code so obviously it's the development team who are well aware of the code goes and digs into it. I'm touching upon the topic of source of truth you were saying that product requirements or the requirement specification is absolute. Is that the trend now that we use BDD to document the source of truth so that even a product manager or a product owner can go and record? Is that the trend? Is it a trend? Is it a requirement specification? I don't know if it's a trend but I've been... it's what the people in the BDD community have been doing for years. There's many ways that you can write executable specifications. You can write it in a way that is just a test script that is not very readable for a non-technical person or you can write it if you do it together you can write it in a way so that they're very expressive they illustrate a business rule they don't have a lot of UI details it's just about a business rule and if you do it that way and if you make sure that your tests are always green and don't have red ones lying around then this is those tests are not just an executable specification but they're also the truth because they just describe what the software does if there was a mismatch your test would be red but they're not because you keep them green so it's this combination of making sure your tests are always green making sure they're readable by the business and then you can get rid of a lot of extra documentation to try and keep it synced because now you have it in one place. I think I'm way over time sorry one question from my side can you please take it offline we need to make sure we don't slip I'll meet you over here I'll talk about it in a break sorry for going over time thanks what you're stressing upon is you can forget about agile if you don't focus on those two aspects yeah you have to bring the people who have different perspectives and different backgrounds into the same room and talk a lot about your user stories before you even think about implementing them or writing tests around them


In this presentation, we will track and pay bills. In other words, we've entered bills in the past, increasing the accounts payable. Now we're gonna track those bills, see what bills are in place and decide which ones we want to pay, and then pay the ones we decide we want to pay. Time to get started with Sage 50, Cloud Accounting. Here we are in our Get Great Guitars file. We're currently in the Vendors and Purchases section. Within the Vendors and Purchases section, we have the flowchart down below, the flowchart including the items of entering bills and then pay bills. That's gonna be our normal kind of flow that we will be having. When we enter bills, that's gonna enter or increase the accounts payable account, a liability account. And then of course, when we pay the bills, it's gonna be decreasing that accounts payable account and then taking money out of the cash or checking account. So let's take a look at the bills we currently have. We can go to the enter bills here and say we wanna see a new bill. That's not what I wanted to do. Hold on a second, close that back out, we wanna see the second item, which is to view and edit bills. So view and edit bills, these are the bills that we currently have in place. We could sort these bills by our statuses up top or the amounts and whatnot to see which bills we want to pay, then decide which bill we want to pay. Now in this case, we're gonna pay this one, this one to Fender. So Fender was a new vendor, a new vendor Fender. And we're gonna be paying that bill. We're not gonna pay the epiphone at this point in time. So I'm gonna close this back out. Then we have a couple of different options in order to enter the bill. We can go to the bills here. We can pay the bill one at a time. We could pay multiple bills. We're gonna be paying the one bill here. So I'm gonna say pay bill up top. So we're gonna go into the pay bill. I'm gonna make this large so we can pay it. And then we're gonna check the vendor and the vendor will of course be our new vendor, Fender. So Fender is who we buy guitars from. Notice it popped over here from the right hand side to the left hand side in terms of the tabs. And now it's showing the item number, the bill and essence. So then if I was to tab through this, I'm gonna say, alright, let's tab through this. I'm gonna put a check or reference number. I'm just gonna put one in here. 228, let's keep that's pretty good date. And then I'm gonna say that, actually let's bring this down a bit. Let's bring it to like the 22nd. And then we'll say it's coming out of cash. We have the different forms of payment that we can be using. Cash, check, amix and so on and so forth. I'm gonna go down here and check off the actual bill that will populate the amount up top. So now the amount up top is populated. This is gonna be coming out of not the cash on hand but the checking account. So we want this coming out of the checking account. So it's gonna be removed from the checking account. So that looks good. What's gonna happen when we record this? It's gonna be coming out of the checking account. The other side is gonna go to the accounts payable or account decrease in the accounts payable. Let's go ahead and do that. We're gonna say save. And then we'll close this back out and we'll take a look at our reports up top. All we need really is the balance sheet reports. So let's take a look at the financial reports because that's where the balance sheet is. And then we'll go into the balance sheet. We're gonna be changing the dates up top. It's currently in February. That's what we want. So I'm gonna say okay. And then we are in our balance sheet here. Then I'm gonna go into the checking account. And we should see the decrease happening within the checking account. There it is for Fender, the bill we paid to them. And then I'm gonna close this back out. I'm gonna close this back out. The other side then on the accounts payable, double clicking on the accounts payable. We see the amount decreasing the accounts payable account as well here. Closing this back out, closing this back out. Also note the accounts payable would then be supported by subsidiary ledgers which break this information out not by date but by vendor who we owe to. So I won't go into that again now because we've seen it in the past. It's very similar to the accounts receivable, subsidiary ledgers, but just be aware that this amount should be tying into the subsidiary ledger breaking the same information out by vendor. So that's gonna be it for now. Let's get out of here.


Welcome to the nonprofit show. We are so glad that you're here. And I'm even more excited to have our guest today, Kevin Spikerman join us. Now, Kevin's been on before he joined me live when we were broadcasting in Nashville for the One Cause Conference. But today he joins us for a dedicated episode as Director of Business Development at Charity Buzz. Kevin's been in the industry for quite some time. He's gonna share with us what that time looks like and a little bit about Charity Buzz. But Kevin's here to talk to us about fundraising outside the typical gala. So lots of good insight from Kevin to share with all of us today. So make sure that you pay attention, either watch us as you double duty, do some other multitasking. But Julia Patrick and I are here today so grateful. Yesterday was our 900th, today is our 901. Kevin was keeping tabs and he even knew that. So thank you so very much. Julia Patrick is the CEO of the American Nonprofit Academy and I'm Jarrett Ransom, your nonprofit nerd and CEO of the Raven Group. We are so very honored day in and day out to have the ongoing support and trust from these amazing partners. So tons of gratitude to our friends which include Bloomerang, American Nonprofit Academy, Fundraising Academy at National University, Nonprofit Thought Leader, your part-time controller, staffing boutique, non-profit nerd as well as non-profit tech talk. Many of these, if not all of them have truly been with us on this journey from the very beginning. Helped us to produce the episodes that we just mentioned and you can find them on these platforms.  And thank you, Vanna White, also known as Julia Patrick. You can scan that QR code but you can also find us on broadcast platforms as well as podcast platforms. So pretty much anywhere you have an Alexa or Siri or any smart person inside your technology just pull up the nonprofit show, ask them to pull up the nonprofit show and voila, there we are. So in fact, just a few hours after today's conversation, this episode will be broadcasted into these platforms. So you can find Kevin's conversation after this live recording right here and now. So let's pull up Kevin's information because Kevin Spikerman again, so glad to have you with us. Tell us a little bit about yourself. Yeah, again, thank you, Jared and Julie for having me.  So I'm excited to be here. So yeah, a little bit, I'll give you the quick cliff notes version. I've been in the fundraising space for almost 17 years now. So I actually right out of college joined a company called the Gavel Group. And so we produced auctions. So I was on the team there for about a year. And so we produced 50 gallons a year. So your charity could hire us. We do the solicitation, cashiering, set up, takedown. I remember driving the van up to Monterey with all the auction items in the back to set everything up. So yeah, so that was my initiation into fundraising was at the Gavel Group. And so I learned a lot there but then moved over to Windsfire. And so I was at Windsfire for 15 and a half years, was on the fundraising team for 11 years and then the director for five years. And then most recently, so last year I joined the team over at Charity Buzz. And so I've partnered with Charity Buzz for years. So Ben Irwin, our CEO, he and I, we go way back. And so yeah, moved over to Charity Buzz. Just it was something that, yeah, wanted to kind of be a part of something that was kind of outside of the auction space. The Charity Gala space, the live auction space, something that was kind of more helping fundraising any time of the year type mentality. And so yeah, love the fundraising space and love being a part of it. But I can't believe I'm coming up on 20 years in the industry. It's like, I think I'm still 18. So I don't know how that happened. Yeah, you don't look like it. And so that's even more shocking. But talk to us about, before we get into this, talk to us about what the Charity Buzz platform and what your work actually is. Yeah, yeah. So what Charity Buzz is, we call ourselves an impact marketplace, right? So we have a marketplace where Charity's can post items any time of the year. And we have a network of 250,000 registered bidders that are always on our site, actively looking. Our marketing team is marketing all the items on our site to these bidders. So we really look at it as like an impact marketplace is probably the best way to describe it because it's an online auction, but it's strictly for charities. We have standards.  I'm like, yeah, but with standards, right? Like, we have certain things that, you know, they have to have a value of $1,000 or more. There's kind of an elevated shopping experience. But if a charity came to us and said, hey, I got this round of golf at this private country club and our gal is not for another 11 months, but we want to sell it, we could put on the Charity Buzz site. We could put one item up, we'll run it for two weeks, we'll close the auctions and you guys the money. So that's kind of that fundraising anytime of year mentality. And Kevin, what I love so much too, and I think you alluded to it even here in this conversation is, you know, you're helping organizations reach other donors, other supporters that maybe aren't in their database. And that to me is a huge opportunity. Yeah. Well, I think there's two things. Auction items are only as valuable as the people bidding on them.  You could put an item in a room that, you know, is worth a million dollars, but if somebody can only spend 10,000, that's what you're going to get.  I think our average medium net worth is over $3 million, so these people have a lot of money. But yeah, whoever that winning bidder is, is also now the donor of that charity. So if they bid and they won that golf trip, that organization gets their name, they can reach out to Bob Smith from Detroit, Michigan, thank him for the donation and foster that relationship. Right. Well, you have to check out the website, everybody, because the concerts and sporting venues are really first class, super interesting, very current and really an amazing assortment. And I think so, it's a really unique way to go about it. But one of the things that we want to do is we want to tap into your wisdom and you talk to us about tapping into our network of connections. So when we're thinking about building opportunity for ourselves, what does this look like to you, Kevin? Yeah, so I think in my world currently, what that looks like is really uncovering someone's board and what their board's connections are. So a lot of my time is actually spent where an organization sends me a list. Here's 12 of my board members. Here's also the honorees for our event coming up. What should I ask them for? Because you can just say, hey, guys, we need auction items and we need items for our event, but you got to give them something very specific. So a lot of my time is actually spent researching, looking at these boards and then going back to the organization and saying, this person, you should ask them for these four things based on their business connections, who they're connected with within the world. So it really just kind of taking the time. I was doing this for an organization last week and sent them some things back. And she was like, I didn't know that board member was a Tony Award winner. She was like, I mean, even to her point, she was like, I'm embarrassed. I should have known this, right? But again, I went back and said you should ask them for something with this related to this because he's a Tony Award winner. And she's like, thank you. Like now I know what to ask him. So I think that's really what it is kind of like leveraging your network. Cause I think a lot of board members, it's either give or get, right? You're on the board. So you either need to give so much or you have to get so much, right? But if they're going to get so much, you need to give them some direction. Like what should they go get? And what should they be focusing on? I love that specificity. That's a big word that you're providing. And I always say fundraising has become the F word to so many people in particular board members that they're fearful of fundraising. They don't wanna necessarily open up their Rolodex but to have you, Kevin, really say, here's what this individual's value is, their connections, who they can help to open doors, provide these experiences into a world that not all of us have access to. There's so much value there. Yeah. And a lot of times too, asking these board members for their time, right? Instead of saying, give us this, like if you have a board member who's a member at a private country club, right? Hey, would you give us, would you host three people and take them out? Right? Like, great.  Sure. Like, yeah. So would you give us four or five hours of your time and do this for us? So you're not just asking for items. You may be asking for time. If they're a CEO or if they're executive at a company, would you have lunch with somebody or do a one day internship with somebody? So there's just ways that you can kind of think outside of just, you know, give us stuff. Like you need to be very specific on the asks. You know, Warren Buffett, the Oracle of Omaha, I mean, that's one of his things is that he'll donate lunch. And his whole thing is, I can't give you stock advice, but you can ask me anything else. And I think, and those go for a lot of money. And I think it's, you know, people that have the opportunity to get that one-on-one or small group of influence because you're talking about people that have a lot of things, right? And so the interest of an experience, I think, is really, it's valuable. And I think, Jared, you and I, I mean, we're on the Robert Chicken Circuit, you go to these things and you see the same items every event. And so, you know, that's like, oh yeah, I already bid on that one at, you know, an event last week. So I think to keep it fresh is really, really important. One of the things that you talk about, and I'm really interested to kind of draw the parallel here, is to say, have a plan to acquire new donors annually. What does that look like to you? Yeah, well, I think that the two things that keep people up, you know, executive directors up at night is raising more money and acquiring new donors, right? Cause, you know, you have to keep building that well that you're going into to raise this money.  And we'll get into this later, but you know, again, it's all about your mission statement. It's about what you're doing and why you're doing it. But I think, you know, if you need to have, you know, a focus of how am I gonna get new people?   They fostered that relationship and a year later he was on their board, right? And he came to the event with a friend. So he was just, he was there as a guest, you know? He was a plus one. So I think, you know, if you're in an auction setting and people are raising their hands over a certain threshold, write down their bidder number and all those people just bid over $1,500. So I wanna take all of them out to lunch and explain to them what we do and how we do it. So, you know, cause half those people in the room are there with friends. Yeah. I love that. Najir, have you ever seen organizations that actually do that, that target their guests? I haven't either. And it would be great. I will say that I was recently at an event and a colleague of mine, which, you know, near and dear, here in our community, he brought plus two, right? And then he told me off to the side, he says, just amongst us girls, you need to get to know these people, right? Because they have capacity. And I was like, just amongst us girls, thank you so very much. But he understands stewardship, right? And I don't know that everyone does. And so to see this in action, what you're saying, Kevin, huge opportunity. And you're right. I don't see that as often as we probably should because people do use these events as an opportunity as they're created for to bring people into the organization. That's often the entry point. That's often, you know, the first time knowing the mission. Yeah. But I think a lot of times, I think of gals and at these events, right? It's all about how much did we raise tonight? Right. And it's about that. And that is important, right? But I think you need to have a team that's focused on how are we gonna use this momentum and the people that were here to continue the mission, but also get new people that were here more engaged. Right. Now I see that missed often, right? And I say this all the time, getting to the event takes a lot of work. But once the event is over, that to me is where the true work begins. Yeah, I agree. Yeah, I 100% agree.   And then get back to work. Back to it. Right, because that really, that springboard's to the next year. I mean, like there is no off season when it comes to fundraising. Cause it's, again, it's about raising money for your mission, which is why you exist to fulfill that. So. Great. I love this. And I think that that to me is like the big message. I mean, Jared and I seem to preach that a lot. And that is, you know, the event is one thing, but really the hard work starts after, and for so many organizations, they frankly trash themselves and their volunteers, just to get that event done. And then there's no, you know, room at the end for them to have any interest or to even see that the true value is that post work. And so I appreciate you bringing that up. And I love that idea of identifying those bidders. Whether they won or not. I have a question before we move on. Kevin, how have you seen the pandemic and the distributed workforce and the distributed mission, you know, really attract new donors? Because I can only imagine that that net has been casted, you know, far and wide. We've seen it here for the last four years. How are you seeing that take shape when it comes to acquiring new donors? Because to me, it's not so much right here in our local community. You know, the sky is the limit. Yeah, no, I definitely agree. And I think coming out of the pandemic, I think, you know, getting back to kind of quote unquote normal, you know, for the last maybe year and a half or so, whatever this new normal is. Yeah. Yeah, but I really think, you know, social media has really made fundraising go beyond just your database of bidder or your database of supporters, people that are in the room that night. You know, we have a software side that does sweepstakes. And so, you know, we do sweepstakes for organizations. And so they're broadcasting it to the world. I mean, they have people buying tickets and chances from here to there. We had a dinner with the cast of the office just last week. And I think the winner was from, I can't remember where she was from, but yeah, she had nothing to do with the organization. But now she loves the organization because she had dinner with Steve Carell and the cast. And what was even funnier is that after the event, he actually took her and her friend, Steve Carell and his wife, took them back to the hotel because they didn't have a ride. So she literally sent us a video in the back of Steve Carell's car. Like this is the craziest thing ever, right? But she's always going to associate that experience with the organization that provided her that experience. So, you know, and again, she's, you know, was probably 24, 25 years old, right? So I think social media is also getting the supporters to be younger and younger. That's right. Yeah. That was a good question. Because I agree with you. I think we have to look at these things and to understand what's going on around us. And I guess this leads us to our next point. And that is because there are so many shiny things, Kevin. How do we keep our focus on our mission at every point? I mean, we're learning new things. We're doing, working with new vendors. We're trying to be different from the nonprofit down the street. How does this all work? Yeah. Well, I think, you know, I think it's my daughter who's 10. She's going to a new school this year that just started. And so the first thing they did is everybody had to memorize the mission statement. So like she can, she can recite the mission statement like word for word, you ask her, you know, and I think having your staff at the organization, like first requirement is you need to know word for word what our mission statement is, right? And always tying it back to that. You don't need to be the brightest, the shiniest, the loudest, right? But I think the organizations that have the impact of why they do what they do, I think that's going to go further than just being the loudest out there, saying, hey, give me money, give me money. It's like, no, hey, we're here. We want to partner with you in order to fulfill this mission statement that I just recited word for word. So I think, yeah, I think it really goes back to making sure that everybody is in tune with why do we exist? And I think knowing that, but it's contagious when you see that. It is. I was part of an organization on the board and we changed the mission statement. It was an old organization and it was time for a refresh because things had changed. And I remember the CEO took $200 of $10 bills, which was like a stack, you know? And went through the campus and said to all the employees, can you recite the new mission statement? And for those who could, you know, well, here you go. And I was like, wow, you would have thought she was passing out $100 bills and she wasn't. But it was that point. It's everybody has to know what that line is. And that's, I think, a clarion call to making it simple, right? I mean, if you have, you know, a novel that somebody has to remember, it doesn't happen. But if you have, you know, something sensible, I think that's really, really an important thing. Yeah, I think you're right about that. Jared, I jumped in over you. Sorry about that. No, I think that's fantastic. But, you know, looking at the mission, I'm curious, Kevin, if you've seen less mission creep over the last four years or if you're still seeing it and maybe you weren't seeing it, right? My assumption is I know I've seen it, right? And even probably more so in the last four years because people were just grabbing at something to sustain themselves. Where are you seeing mission creep right now? And I'm just curious if, I know it's a curve ball, but I'm curious if you're seeing that. No, I think it's strong. I think organizations are getting back to their missions and why they exist, right?  I mean, you're basically a salesperson, right? I mean, you're asking for money. Like, so I think in the day to day of that process, I think having that be the reminder of why am I pushing through? Why am I doing all this work? Why is the gala done yesterday? And I'm now making phone calls to, you know, people that I want to have lunch with over the next week and a half, you know, like, it goes back to this is why I do it. So I think it's also the fuel that keeps your team keeps your team going because every organization that exists has a wonderful reason to exist, you know? So I think, you know, having you and your team remember this is why we do this. It's contagious. Yeah, and we talk about this often. There's 1.8 million nonprofits registered in the US, right? And so as collaborative as we probably all want to be, we are competing for those dollars. And as you just said, Kevin, you know, fundraising is hard. It can be hard. And there is, you know, opportunities for us to make meaningful connections with individuals that believe in our mission. And I do believe, you know, keeping that mission front and center, making sure that that is our focus is so critical. And then to honor someone, if, you know, they're not so much in alignment with the mission, you know, to honor their philanthropic giving, to honor what they do for the community, regardless of their mission alignment. And that to me has been probably the biggest lesson along my career is, you know, to really honor the person that might not believe in your mission as much as they believe in another mission. Yeah, yeah. And I think that's a great point, Jared, is, you know, not everybody's going to be your donor and that's okay, right? You know, I think having relationships with people that are outside of, you know, people that are your donors, I think that's great.  Yeah, the respect that they still are in the community, you know, supporting other organizations is great. And I think it'll come full circle at some point.  Like I like that they asked me about my kids. I asked, I like that, you know, they took me out for coffee just to chitchat. So yeah, that's a great point. And not to mention the power of their network, right? Oh yeah. They might be willing to say, you know, who's really interested in the arts, let me introduce you to my neighbor, right?  So I think there's, you know, we started talking about network of connections earlier in today's conversation, but really coming back to full circle to that, there's so many networks that we can tap into. Yeah, yeah. And I think, yeah, it came full circle on that, yeah, that network because that person's connected that person and now they, you know, help you out with this or that. You know, but I think it also comes down to just always being in a position where you're in a position to make the ask. You know, you're never going to be able to make the ask or build that relationship if you're just not in the right position. So always position yourself. You know, it's kind of like in sports. You have to be in a position to take the shot, like if you're not in a position to take the shot, you're never going to take the shot. So, you know, always be in a position to do that. We love sports analogies here. We do. We do. Yes. Jared's going to start talking in Spanish here in a second. I might. Man, and this is a big day in our community because we have an opportunity to move to the next level in baseball, so I'm just saying. But yeah, it's an important thing. And I like that you said that, Kevin, because it kind of brings this back around to, you know, how this is a comprehensive thing and it's not just a one night deal. To your point, and when we started this conversation, you know, so many folks, and I think a lot of times it's board driven. They think, okay, we're going to have one night.  And then we don't have to, you know, fight the wolves at the door because we're going to have, you know, the coffers are going to be full. And that's just not the way it works. And so I appreciate you helping us navigate that. Yeah, well, I think it also comes down to like your donors are going to spend money every year, right? Like at your gala, they're going to make their donations, but like they're spending money, you know, so like what's hot, what's new? Like the master's in April, right? So okay, people are thinking about golf. So maybe we ask our board members around that time if they could get us some donations to some private country clubs. And let's just sell those with whatever software you're using, right? One cause, greater giving, handbid, gift smart, charity buzz, right? Post them up during that time. And then the Olympus are coming up next year. So maybe we get a couple of high-end sports things that we can just kind of do in correlation with that. So I think it's also getting in tune with like, what is society excited about? Like what's new? Yeah, we've got the World Series coming up. You know, I mean, that's maybe super exciting for Julia here if they can keep advancing, right? But yeah, but think, you know, we got, you know, Valentine's Day in February. So, you know, maybe we get a bunch of, you know, restaurants in the local community to give us a dinner, but maybe it's a dinner with the chef or the owner, right? So it kind of getting in tune with society and what's important and what people are gonna be spending the money on and have them get that through your organization. Yeah. You've got my brain spinning for sure. You know, so many opportunities. And again, that it's not just a one night thing. We can do this at any time. We can tap into current events. We can tap into, like you said, like what's happening in the local community that people would really like to be a part of. Yeah, yeah. Yeah, because you're letting other, you're letting the greater social structure basically market for you. Right. Exactly. I mean, if like the Taylor Swift concerts, I mean, we've got so many tickets that were on the charity bus site that organizations were able to secure. I think if their gala wasn't for another three or four months and the concert was in two months.  That's awesome. And now she's supporting the NFL. I mean, we could go out for hours about that, but that's like a whole nother thing. And you know, the NFL is a charity. It's a registered 501. Yes, it is. Yep. So that's another conversation for another day. But anyway, hey, Kevin Spikerman, Director of Business Development for Charity Buzz. It's been a lot of fun chatting with you. I'm so delighted that you were able to make that connection for the first time with Jarrett at the One Cause event where we broadcast live for two days in Nashville. That's again, an example of how relationships work and how you build that network. And so it really a lot of fun to chat with you. Check out Charity Buzz. It's fascinating. I was on it a couple of days ago and I could not believe the assortment of products and how they were really high end, really fun, incredibly different, something for everybody. It wasn't the same old, same old and it seemed to really kind of capture the imagination of how to be philanthropic and at the same time have an experience. So CharityBuzz.com is where you wanna go for that. Wow, Jarrett, I'm ready to go to a concert. I know I'm ready to look on CharityBuzz and see what's available. But I feel like we would be remiss to not make a final comment about how these platforms, CharityBuzz, others can really help to diversify your donor base. And so Kevin, what you just shared about dinner with the office and I heard you say that donor was 24 years old. I mean, that is a young donor that has access to wealth and for us to not overlook the multi-generational opportunity that this platform provides because you might not have that opportunity in your own database, but this platforms gives you that access to so many others beyond your database. Yeah, I think it also comes down to again, look at your board and spend some time kind of researching who they are and what their connections are. And if I can help you with that, whether you work with CharityBuzz or not, like I'm here to help further people's missions throughout what they're doing. So I'd be more than happy to sit down with somebody and spend some time just uncovering some rabbit trails of things they could potentially ask for. I love that. That's lovely and we appreciate that. I'm gonna keep that in the back of my mind. The whole thing about the Tony award-winning board member, I think that's just the classic example. And so you really sparked my imagination on that. Hey again, everybody, I'm Julia Patrick, CEO of the American Nonprofit Academy. Been joined today by the nonprofit nerd herself.  Jared Ransom, CEO of the Raven Group. Again, we have amazing partners with us that are with us day in and day out. Bloomerang, American Nonprofit Academy, your part-time controller, nonprofit thought leader, fundraising academy at National University, staffing boutique, nonprofit nerd, and nonprofit tech talk. These are the folks that join this day in and day out that allow us to have these really interesting conversations like we had today with Kevin. And not Kevin, our executive producer, who we always bash in the green room. I'm just saying, right, Jared?  So always glad to be here. Kevin, thank you for saying yes to a dedicated episode. Loved having you on in Nashville. Loved having you on to learn more about this information. So thank you. Thank you both, appreciate it. It's been a lot of fun. Hey, everybody, as we like to say each and every day at the end of the nonprofit show, we want to remind ourselves, our viewers, our listeners, our guests to stay well. So you can do well. We'll see you back here tomorrow, everyone.


Welcome back to Deductive Logic. I'm Professor Matthew Brown. Today we're talking about truth tables again. And all we're gonna do today is walk through some additional practice problems. So if that feels like something that'd be useful to you, go ahead and watch along and work along with us. Otherwise, you can move directly to the practice exercises and do some for yourself. Let's start with this problem, which is evaluating a sentence of SL to see whether it is a tautology, a contradiction, or a contingent sentence. Please pause the video and work this out for yourself before moving on. Okay, let's see how you did. First, we're gonna copy over the single atomic sentences, A and B. The negation of B and negation of A are simple enough. You can check that that's right. If you need to, by pausing. Similarly, we can just copy over the, the, we can simply copy over the characteristic truth table for if A, then B here. Now let's walk through the second half of the expression a little bit more carefully. So you see we've got if zero, then zero, that's a one. Whenever you've got a zero in the antecedent, the conditional is a one. The second line is a one and a zero, so that's a zero. Then we've got a zero, one, so that's a one. And then we've got a one, one, which is also a one. So now we're gonna go ahead and compute the main connective, which is this biconditional. There we have to compare the two sub expressions on the left and right, which are both conditionals. And let's step through this carefully. We've got a one and a one. That's a one on the biconditional, a zero and a zero on the next line. Also a one, a one and a one on the biconditional is also a one, and then one, one is a one. So it's a one in every line. And that tells us we've got a tautology that we're working with. So that's the first problem. Very similar problem here, slightly different expression, but go ahead and pause the video and see if you can work it out. Okay, so again, we're gonna copy over the atomic sentences. The negations are simple enough. We've got the regular characteristic truth table for the conditional, if A then B on the left. The conditional on the right is not, it's different from the last problem, but not more complicated. So you can go ahead and pause and check that if you need to, but it's one, one, zero, one. And then again, to get our main connective, we have to compare the two sub-expressions, both conditionals, again, in this problem. So we've got a one and a one, that's a one. We've got a zero and a one, also a one. We're disjunction here, not biconditional, keep that in mind. We've got a one and a zero, also a one, and a one and a one, also a one. The disjunction is true whenever either disjunct is true, or both. So that's also gonna be a tautology because it is a one or a true on every line. Let's look at a third example. Here we've got if A then B, and if B then A, okay. You might recognize this as a, well, spoilers. Pause the video, try to work it out. Okay, let's see how you did. Copying over our atomic sentences. These are both conditionals, they're very simple, right? So the one is one, zero, one, one, that's normal. The one on the left, the terms are flipped. You can see it's one, one, zero, one. Now for our main connective, which is a conjunction, we know the conjunction is true whenever both conjuncts are true. So on the first line, we've got a one and a one, so that's true. Our second line, we've got a zero and a one, so that's false. Our third line is a one, zero, so that's false, that's zero. And our last line is a one and a one, one, zero, one, one. That's the characteristic truth table. Also for a biconditional, not surprising, this expression is equivalent to a biconditional. And like any simple biconditional, it's a contingent sentence. But notice that in order to tell that it's contingent, we didn't have to go through all of the lines of the truth table. It would have been sufficient to just go through these first two lines, right? The reason is that in order to show a sentence is contingent, all you need to show is that it is not a tautology. The second line does that and show that it is not a contradiction. The first line does that. So those two lines together give you that it is a contingent sentence. Let's do an example where we compare two sentences to see if they're equivalent or and to see if they're consistent. So pause the video and work this out on your own. Okay, let's see how you did. So again, we're gonna copy over our atomic sentences A and B. We've got a negation in each case. That's relatively simple, right? We just flipped the truth value. And then we've got the conditional on the left. Zero in the antecedent makes it a one. Zero in the antecedent makes it a one. You got a one in the consequent and the antecedent. So that's a one. And here on the last line, we've got a one in the antecedent and a zero in the consequent. So that's a zero, okay? We step through the second one similarly. Zero in the antecedent is a one. One and one is a one. Zero and zero is a one. And then one and zero is the only case where the conditional is false. So that's a zero. Now to tell whether they're equivalent, we have to compare the truth values on every line, right? And here we can see they are, in fact, logically equivalent, right? We also wanna know if they're consistent. All that requires is one line where they're both true, right? We've got three lines where they're both true. So these are consistent.  We'll keep that in mind, okay? Now to show that two expressions are inequivalent, you again don't need to go through the entire truth table. You can simply show that there are two lines where they differ in value to show that they're consistent when you're not worried about also being equivalent. You just have to show one line where they're all true. So that's something to keep in mind for efficiency's sake. Last, I want us to work through some more simple problems where we assess arguments for validity or invalidity, right? I've got three simple arguments here at the top of the screen. I want you to pause the video long enough for you to work through all three of these, right? You're trying to figure out whether they are valid or invalid in much the same way we did before. Okay, are you done? Let's check it out and see how you did. So this first argument, A or B, B, therefore not A is it a valid or invalid argument. These are all very simple truth tables. So I'm not gonna step through them but you can pause the video and check if you need to. And if we see on this first line, both of our premises are true but our conclusion is false. That's enough to tell you that our argument is invalid, right? And in fact, again, to show that an argument is invalid you just need that one line as a counter example. You don't have to go through the entire truth table. Now, of course, you don't know if it's valid or invalid so it's simple and easy to go through the whole truth table but you can also try sort of guessing and checking if you have an intuition about it being invalid. Let's look at the next argument. A or B, not B, therefore A. Again, these are simple expressions so you can pause and check if you need to. Here we see there's only one line in which both premises are true and in that line the conclusion is true and that tells us by our definition of validity that the argument is valid. Okay, last argument. Okay, here's the truth table. Again, pause and verify if you need to. Here we see, again, there's only one line where both the premises are true and on that line the conclusion is also true. So therefore, according to our definition of validity this argument is valid. And I might suggest you pause before the video concludes and think about what's that second premise doing for me here? Is that necessary for this argument or is it kind of irrelevant? So think about whether you can figure that out looking at just this truth table. That's all the examples I wanted to show you today. I hope that's helpful. Best way to do this, to learn this is just to practice it. So if you wanna gain mastery over truth tables and how to use them for evaluating these expressions and arguments and sets of sentences the best way to do it is to work on more of the practice problems which you should be able to find now on D2L. Best of luck with it and with exam three and I'll see you in our next unit which is proofs and SL. Bye.


Hello and welcome to this overview of GPDMA and LPDMA controllers embedded in the STM32U5. The STM32U5 embeds two new DMA controller modules, the General Purpose DMA or GPDMA, and the Low Power DMA or LPDMA. The GPDMA belongs to the CPU power domain and supports the Low Power Background Autonomous Mode or LPBAM in stop 0 and stop 1 modes. The LPDMA belongs to the Smart Run Domain and supports Low Power Background Autonomous Mode in stop 0, stop 1 and stop 2 modes. These DMA controllers are in charge of data movement between memory mapped locations, memory or peripherals, thus offloading the Cortex M33 core. GPDMA and LPDMA are two instances of the same IP and are therefore controlled by the same software driver. The DMA multiplexer connecting the requests generated by peripherals to the channels is integrated in the module. GPDMA and LPDMA support linked list-based programming to enable buffer chaining. In LPBAM, these DMA controllers are able to temporarily request the clock when a request is received in order to perform the transfer. Also, flexible intra-channel and inter-channel transfer chaining is supported without software intervention. LPDMA has a unique 32-bit AHB master port while the GPDMA has two independent 32-bit AHB ports. Transfers can be performed from peripheral to memory, from memory to peripheral, from memory to memory, and from peripheral to peripheral. The LPDMA and GPDMA support the LPBAM that enables autonomous transfers during sleep and stop modes. Channels are independent of each other and operate concurrently. They are arbitrated through an algorithm based on a four-grade priority policy. One reserved, highest priority queue dedicated to time-sensitive traffic. Three lower priority queues implementing a weighted round-robin allocation. This slide and the following two describe the per-channel programming features. The status information is visible to the software. This includes idle state, event flags, global masked interrupt status, FIFO level or GPDMA. The control information includes a software start enable, the capability of suspending and resuming a channel, resetting a channel, and aborting and restarting a channel, event flag clearing, interrupt masking. Some functionalities are statically configured and may be locked until the next reset. These are the security and privilege attributes, the port used to access the linked list items or LLI, the execution mode either run to completion, possibly executing chain transfers without software intervention, or link step mode that requires a software re-enable each time a new LLI has to be processed. Transfer chaining for a particular channel is performed through a linked list. Each item of the linked list is called a linked list item or LLI, which is a structure allocated in memory. The LLI has to be initialized with the values to transfer to the control registers when the chaining occurs. Each LLI execution consists of the optional link transfer that loads the next LLI and updates the control registers accordingly, the optional data transfer with a granularity called a block. For each LLI, the user has to program the source and destination address, as well as addressing modes and address offsets between bursts in 2D mode. The information related to the data transfer, block size, source and destination data width, and data handling. The GPDMA supports additional settings, number of repeated blocks for channels 12 to 15, and burst length for all channels. Regarding the GPDMA, the AHB port used to access the source and destination locations have to be chosen. The security attribute is also selectable when the channel itself is programmed to secure. Finally, the input and output signals of the DMA controller has to be configured. Peripheral request type and selection. Trigger mode and selection. Transfer complete event generation. The block diagrams of GPDMA and LPDMA are very similar. Requests and triggers are received on the left. They are used to activate channels that are then arbitrated. The transfer output control is in charge of generating the data transfer and the link transfer, which consists in loading the linked list item. The DMA controllers also have an AHB slave interface to enable an access to the global registers and to the channel registers. The DMA controller issues interrupt requests and DMA channel transfer complete events. Each transfer generated by the DMA controller is tagged with a particular privilege and security attributes, which are fully programmable. In the case of a security violation, an output of the DMA controller is connected to the Global Trust Zone controller. The DMA controller can generate a clock request output signal to the RCC whenever the device is in run, sleep, or stop mode. When the microcontroller enters debug mode with the core halted, any channel can either be individually continued or suspended. This table describes the features of the LPDMA and GPDMA controllers, highlights their differences, and also provides user guidelines. The number of channels is 4 for LPDMA, 16 for GPDMA. The two master ports of the GPDMA should be used as follows. Port 0 should be allocated for transfers to and from peripherals, because there is a direct hardware data path between this port and the APB peripherals outside the AHB matrix. Port 1 should be allocated for transfers to and from memory, which are performed through the AHB interconnect. This is a typical usage. The user is free to select the ports used to access the source location and the destination location. The LPDMA only supports single data transfer, while the GPDMA supports burst transfers. These burst transfers are performed through a per channel FIFO for queuing source and destination transfers. The depth of the FIFO is 8 bytes for channel 0 to 11, and 32 bytes for channels 12 to 15. Consequently, channels 0 to 11 should be allocated for transfers involving peripherals and channels 12 to 15 should be allocated for memory to memory transfers and transfers involving data demanding AHB peripherals. In terms of addressing mode, the LPDMA supports linear addresses, either fixed or incremented without stride. The GPDMA supports more sophisticated addressing modes, linear mode with fixed address or incremented address, with contiguous data on all channels, and 2D addressing only on channels 12 to 15. The number of requests and trigger inputs is not the same for LPDMA and GPDMA. The number of inputs is lower for the LPDMA, because it serves the peripherals belonging to the smart run domain. In addition to this presentation, you can refer to the following presentations – power management, reset and clock controller, ULP mark peripheral profile and LP BAM use case consumption, autonomous DMA and low power mode, DMA circular buffering and double buffering, DMA register file, DMA error reporting, DMA linked list, DMA input-output LLI control.


This video is brought to you in part by TrueTechTools, quality tools, essential support. All right guys, so we're going to do something here a little different today. Today we're working on a air dryer. So you've got a air compressor there and this is the dryer. What it does is it uses the refrigerant cycle to dry the air. Obviously you're going to run a whole plate. It's going to make a condensate. It's going to pull the moisture out of the air. Haven't done a lot with this particular brand so I need to figure out what's going on with it. I've already got it opened up. The compressor's hot so it's been running. It had a lockout code here on the front. Went through it. It's off right now far as to that. I had an LO1, LCP, and LP, LO4. So I'm not real sure what that means. I got to do a little search here to find out. Essentially it looks like we've got a compressor here with a condenser which is pretty obvious. Come on the back here and you look at it. You can see there is a dryer. It comes to what looks like a capillary distribution tube of some sort. It comes over, goes into this plate heat exchanger. You can tell that this obviously is the air coming in and out. So it's coming into there and going out of it. You can see on the front side there there is air coming in. So what it does, it comes into this chamber and eventually comes out of it. It's in parallel as you can see right there. And then you've got other kind of desiccants here or separators. Then you've got auto. Hit the test button.  What that does is it automatically gets the moisture out of the chamber there. The most important thing here is just to understand your basics, how the refrigeration system works. We're just going to be looking for the most likely cause because you can see there's a lot of crap here. Chances are it's probably leaking. It's a really bad environment. I looked at the front on the condenser coil here.  You're lucky if they keep the squirrels and the birds out. But I can see through the back of it thanks to the door being open. So what I'm going to do now, I'm going to see if I can look up those codes. If I can't either way, I may try just go ahead and hit reset and we'll check the pressures. We got a discharge port here on the front and they had tape wrapped around the threads. So right there's that. Generally I don't like these screw on type caps for on the discharge because usually they leak. Somebody over tightened it which usually makes it worse. Always leery. Yeah, I'm getting there's leakage on that. Either that straighter core is missing or the valve core is bad. Either way that's going to leak. That type of cap will not seal. This is the first time I've been here. We don't usually do a lot of work here. So we need to find out where the nameplate is so I can find out how much refrigerant this thing holds which looking at it earlier was 407C. 293 ounces. 293 divided by 16. Oh it's just 18 pounds. That's great. Let's go ahead and scan it for leaks.  Here filth. What we've got is real cards that are getting repainted. You can see that's a big old paint booth over there. So they must blast them out here somewhere. They pretty much go all the way out there. They blast the graffiti stuff off and then end up painting and you need dry air for paint. The joys of HVAC pretty much can work on anything. Just got to figure out how it works. Sequence of operation. It's put all bulls down to you. If you know how how it's supposed to work you can find out where it's not working at and work your way from there. You can see a lot of moisture or foil or it could be just condensation. Don't know when it's this nasty dusty in here. It's really hard to tell. It's not good doing it over here on this one. So chances are it's mainly in that big expensive container part. You can see that looks like there is some oil over in this area here. So it's probably leaking up high and the oil could be dripping down low. Okay we just cut a little hole in there. That looks like stainless steel. If it was leaking down here at the bottom it'd surely be going nuts. All right so this is made in Italy which no offense Italy. I don't like your stuff usually. Usually we have a heck of a time getting parts everything else. You have a deep psi that's about 25-30 degrees. That seems a little low. Get it in both of those. Both blood out that way if we need to add or dump the refrigerant back into itself it'll be fine. Won't get air in the system.  It's got an alarm. See the button there says a little bell. So reset looks like both. These hold it. See if it resets. The bell went away. Okay let me hold it for a second. There we hold it for a second. 59 degrees. Something just kicked on. We've got the fancy contactors.  So here is our pressures and temperatures. So we're running 19 pound suction. 53 condensing temperature. We are low. It's pretty obvious. Well before we just go pumping refrigerant in it we need to talk to these people. Find out. Is this an ongoing issue? What's the story Camille? All right so I spoke with them found out they supposedly haven't had that many problems but so they don't really know. When I got here that electrical panel there on the compressor was completely off. It's partially broke. Just dumped what I had left of this nitrogen bottle in there. Now I'm getting this one in there. We're gonna pump it up. See if we can find this leak. There's got to be one. It's kind of pretty important from what he's saying.  So you can see moisture whatever. I tightened up those fittings on that line. See what happens is it condensates in the bottom and it blows it out there to the outside wall. It's a horrible location for this because there are literally sandblasts in these rail cars out here and all that dust gets in here and gets into these. That's a high dollar air compressor right there and it's getting all that dust and blow off all right into its fins. Just not a good idea. So we're pumping it up to a maximum that we're allowed to which low pressure side 303 high pressure 435. So we can go up to 300 which I think is about where we're at. Yeah we're at 300 right now. Let's go ahead and stop there. We're testing very quickly over top of this. I'm not dragging it because if I do look at that. Can you see that? That's dust. If it's a big enough leak that it took it out this quickly if that's exactly what actually took it out that it's a pretty decent sized leak.  No good reason for it to be because honestly that container there is completely sealed from what I'm seeing. I've seen a leak out of these all the time. It makes sense for these to be leaking down here in the bottom because the cap tubes rattling up against the base of the unit. Lucky there we're getting something Bobby. It's going to be in those damn capillaries. Oh look I see something. I see something wiggling right here on that gold looking piece. There you go. Must be this one right here. Why in the world did they run that on this like that? You know it's going to vibrate. Oh my gosh look at that. There it goes. I wiggled it so now it's leaking like a beehive. Yeah we're leaking oil like crazy now. So we know it's right there.  More oil than what we already lost. Is there anywhere else? We really want to catch any other ones that are down here leaking.  If there is a small leak you're not going to pick it up by turning the sensitivity down. Just kind of common sense here. System never got completely empty.    Let's get this wire tie stuff cut loose so maybe I can rearrange these. Oh there's another leak here. Look at that. There's another one right there. See it? Right there another one leaking. So we got two leaks. Fantastic. That's shooting oil all the way over here.   This is brain dead common sense man.  Yeah let's take these lightweight little capillary tubes and let's put them down on the bottom where it vibrates. Where crap's going to fall down onto it. Brilliant. We're down almost no pressure. This thing's still blasting things out. That's crazy. So somebody broke the shader off. That broke that baby right off. Instead of removing it they just left it in there and put another cap over it. But instead nope let's not pull it out. Let's just leave it go. It took some wiggling and stuff like that and it screwed my tip up a little bit but I think we finally got it out of there. I was able to pick it right up out. Crazy. So what I've seen done before and it usually wouldn't be a big fan of it but something like this I mean there's just not a lot. Man there's some spots there kind of rubbed a little bit too. Man what a mess. What a mess. So this one here that we know is damaged completely. We're gonna go ahead and completely clean that off. We're gonna go ahead and get our sand paper here. Clean that up and then we're going to cut it with pipe cutter and then we're going to couple it together with a piece of quarter inch. I think we'll fit on the outside of it. Making the best of what we got here man. That's about what we got. Then we're going to debur it. Not easily going to fit a deburring tool inside there so quite good or not. That's about as good as you're going to get it. See if we can get this level that way. That oil hopefully will fall down and away from where we're going to be brazing at. Any vapor we'll possibly push it up there. I mean heck the heat can pull it up to it too. There we go. No I'm not going to run nitrogen through there. Not happening. There's too much oil and everything else in there. One little solder joint. It's not going to be an issue. Use paracord 550 for my ratchet there. I think we got it. One of the things that's a little difficult but you got to just try and see what you get. That one's repaired. Let it cool for a sec. We're going to chop into this one right here. I'm trying to sand it all up before I cut into it. Like I said that way the area is all clean. Probably could almost skim coat it but kind of scares me. It probably collapse on itself. So we're going to go ahead and cut it out. Okay getting that cleaned up. Got oil dripping down. That's going to be a real treat. If it wasn't open you wouldn't be getting oil through there and there's no reason for not to be open. You may try for giggles to go ahead and blow through this. Just see if we can blow some of it out. I don't know how it's going to act. Let's see what happens. Yeah there it is. We got the oil out of that one. We're going to do a little bit through the high side now. There goes the high side. It's getting blown out. There we go. Notice I'm keeping my hose out of the dirt. Common sense to some but you'd be surprised how many people at their gauges fall down in the dirt. Not good. All right so it appears that that did not record. I thought it was recording. We're just checking our other lines to make sure there's no other ones here that we aren't missing. They got this long ranger over here I'll buy himself and all the other ones went underneath there. See if we can just do a light coating here on this. I'll warm her up. Let's see how that does. We'll kind of let it cool down and then make sure whether it's going to bend or break. We'll do a pressure test on it. Just let her set for a little bit. I believe we've got them all. Let's go ahead and pump it up and see what we get and just wrap it around your finger and that way it's encompassed. That way if it's leaking on the back side that's how I do it to try to catch any leaks that are hard to get blowing off by putting it in there and making a little bath that helps keep it from doing that. So far so good. Go ahead and let that continue to add up. It may stop it at a lower pressure and see if it holds at that pressure and then we'll take it higher after that. That way we can salvage what nitrogen we have left because we don't have any more without going and getting it and I really don't want to do that if I don't need to. Let's see how this cap is. Make sure that's you don't have a newly overlooked leak which appears out and is fine. We've lost point two so far. Make sure my gauges aren't leaking over there. Put new seals in them.  So sometimes that does happen. Now the problem with doing it with two hoses is you've just been unable to get an extra leak point. All right we lost right at one pound over 15 minutes. That seems to always be the case no matter what it is I check. Compensated or not I mean that just seems to be what I always get. This is probably one of the best examples where the Navac pump here wireless truly comes in handy because I don't know where the nearest plug is and I just need to get it done without running cords all over.   Now I restarted that we're at five minutes and we're at point two. So point two four six I just went back down to point one. So 15 minutes compared to the 16 minutes that would be two four six it's already slowing down.  We're going to really need to do both hoses. If it was a TXV we could get away with one but not really a good idea with a capillary tube. So I just pulled out the Schrader core off the suction side. You can see the Schrader core did not want to go in there very well. You can see it looks like it might be a high flow style. It's a square on the end kind of goofy looking not something I'm used to seeing here. Like I said it's built in Italy so they probably do things different over there. But we end up viewing the valve core depressor on the high side there. Even that new one I just put in there already won't come out. It's I'm not fooling with it so I'm just pressing it down using the valve core tool behind it. Best vacuum gauge you can get bar none. BlueVac Pro love it. On the clamps definitely worth the extra money to get the stainless steels. Those make it so much simpler to get things hooked up in tight spots. Definitely worth it there on that. And you guys always guys you can get this stuff at True Tech Tools. Save eight percent with promo code survival. I'm going to cheat and just put it right here on the other side of this. I am not able to read it when it's on the other down there in the back where I'd rather have it at which is on the suction side. Just because I know it's the bigger area. But either way we're going to watch this for a bit and see what we get. We're pulling down here. We got our gas ballast open. While that's pulling vacuum I'm going to go ahead and start working on some of these capillary tubes to see if we can figure out a way. We're already at 2,000 something. We'll isolate it. I am not really anticipating hitting and holding below five. Not on this system. We didn't replace the dryer.  It's just an artificial number at this point. It's never went into a negative. Anytime you open a system yeah you're supposed to replace the dryer. That oil was blocking anything going into the system. Not overly worried about it. Judge it however you want. If it was running empty sucking moisture in sure. If you see where that's at right there there's so much oil in there. I've had it before. It'll flare up on you. You're going to turn this into an extra two three hours by time you get done dealing with all the other crap that's going to go along with it. And it's just not worth it. Just not worth it. If it hasn't had any problems before it hasn't been opened then it shouldn't be an issue. It does have high low pressure switches. It does have temperature switch on the discharge so far as all the safeties and stuff is concerned this thing should be protecting itself fairly decent to the point where it shouldn't have ran itself to death. Okay I've got some of this bigger split tubing here. Regular tubing I'm going to split it. And it's a bigger diameter so it should fit around it pretty easily. Normally we got a little bit smaller but this will make it a little quicker and easier for me to put it on there. Yeah you just kind of use your knife to split just the one side and then you're going to wrap that tubing in between there. You've probably seen it on rooftop units stuff like that. Some of the manufacturers do it. We've got two of them on. Got them fed all the way up to here. I have to wrap some tape on it because all these curves and stuff it's it's really wanting to kink off of it. Normally I use this one size smaller than this and like I said I ain't sure where this even came from. I think somebody gave it to me at one of the ice cream stores and I just said sure I'll take it. This is a little bit bigger diameter and it just is not as I don't hold shape as well as what the other one does. So all I'm doing is putting a little bit of tape on it so that I can make it around this bend underneath this fitting and it's working my way back to it. Now that I have all of them individually done I'm just going to do them in a bunch in a group and that will keep them from vibrating into each other but at least they'll have the plastic separating them. The biggest thing is not allowing them to vibrate into each other and running a stinking airline in between there wasn't a real smart idea. There you go. It's all up. Nothing's shaking. Nothing's got a wiggle room. Nothing's rubbing in anything sharp. Hoses fit back in there. That is such a mess. All this here it's going to wire tie it back together. Our vacuum is looking pretty good. We are 1,100. Let's isolate. See where we're at. See if it jumps up. It comes up to about 1,400. There's so much refrigerant in this thing. 0.9, 0.8 it's slowing down. So yeah 1,400. I've seen this many times. I'm not setting here all day to pull refrigerant out of a system. I want to make sure all air moisture and any previous crappy repairs or charging procedures or whatever were all cleaned up. Don't agree. That's up to you. That's my feelings, my thoughts. It was left open. Yeah, pull the oil out, the filter dryers on it. Do the whole nine yards. This is the bullcrap about it. I got three jugs at the back so I got extra 410, 448, 507, 404, 22, 407 sees back here. 407F.  Oh that refrigerator we came up with. Oh it's no good no more. Gotta get rid of it. Yeah I'll never mind the patents wore out. Nope, nope. We got global warming. Global warming. Whoops. Global climate change. Global change. Climate climate change. Yeah, sure. Still holding good vacuum. It's at 0.00 and it's not moving and I've got everything valved off for a while now. So we're going to charge a little portion of it into the suction there. We can bring it up out of the vacuum and then we will start dumping the rest in through the discharge. Yeah, so we made sure that it's broke out of vacuum. There we go. Positive pressure on the high side. 293 ounces. Well we'll switch my gauge to ounces. We'll go and write it inside here. Leak repair. All right here goes the moment of truth. Let's go ahead and turn this thing on. Not that that does anything. Go ahead and hold that button for a second. There she goes. It should run whatever program it's got going on.  See where we're at. We've got 165 right now so we've got another 100 plus ounces. We're at 293 on our refrigerant charge. Our super heat is 9.9, 10 degrees super heat so far. I just stopped adding a little bit ago. Discharge temperature so far is 123 and we're running a liquid temperature of 91. So everything looks right in line with the way it should look. And we'll go ahead and do our subcooling here. Clamp over there to our liquid. Yeah we're on the discharge line. Yeah there's going to be an itty bitty amount of drop across that condenser coil. Five pounds maybe. Ten no more but more likely they're lucky five. Not too worried about it. It's cycling on and off and actually shutting down. It's set point a couple times. So we're on a 46 degree super heat, 13.8 subcooling. That's what the fan's not running currently. We do have an error code here or something about the drain. I got to figure out what the story is on that. There goes the fan again. It's kicking on about 235, 240 ish so about 100 degrees. That's not too uncommon from what I'd normally see. And that's uh subcooling drops down there. All right them drains are seem to be working. Okay and let's squirt about six ounces in there to make up for what's on the ground. I'll just do it right while we're here. We're going to hook right onto the suction line and pump it right in. Liquid ounces versus fluid ounces is different. Weight ounces versus fluid ounces is different and it's so close. I just use the weight ounces so I just re-weight it and see how much I used. But I know each pump is right around an ounce. I think it was about an ounce what it was. So we should be good. Definitely better than not doing anything which is generally what would have probably happened. All right guys so I called the factory spoke with them. It sounds like this drain is basically a reminder for maintenance. I tried palving it off and flipping it sideways. There's supposed to be some clip or something to do. I don't see a clip. He said it ain't going to keep it from running. They're all blanking like that. Chances are from what I see the way everything else looks here.  But they work. I can watch the water blow down. Everything's working good. It's turning on and off. It's holding 35 degrees. All right if you guys enjoyed the video and you want to see more like it make sure you give it a thumbs up. Check out some of the other videos. This is just one of the first ones I've actually done on video one. I've done two in the past. I just don't do a lot of them. So this is the first brand here that I've done. The company that sells them is out of Georgia. So anyhow check out some of the other videos if you would hit the thumbs button. Until next time guys. Later.