Great. After these technical hiccups, let's get started. My name is Chris Immelman. I'm here to talk about Redis Jason, a document DB in Rust. I have about 40-45 minutes, right? So, questions, please at the end. I'm available in the hallway afterwards. So, free to grab me if you have any topics or discussion points. First of all, I'm going to dedicate this talk to my son, Luca, who cannot be there. If you're watching the stream, Luca, this is for you. Second dedication is actually to something of the CTO team at Redis, Labs, who are the people behind the code base? Who am I? I don't go through all of the details. Suffice it to say, I help a lot in Frankfurt. I'm an arch-package maintainer, blatant, blatant plug, I'm going to run the Linux beer vando this year in Kronberg. So, if you have a week at the end of August, early September, to join about 20, 30 people for discussions, hackathons, presentations, hiking, and of course beer, check out the website. It's actually linuxbeervando.com, or monochromecforward slash lbw, monochromeccom, forward slash lbw2020. Second plug, and then I'm going to finish with the plugs. I run a podcast. We just posted the first episode. It's called Linux In-Laws. Domain has gone live yesterday. First episode will be aired on Hacker Public Radio, HPI's your go-to source, on the 13th of February. It's open source with a dark site humor twist thing. Plugs over. Hobbies include software development lifecycle. That's what I'm dealing with for the last, what? 20, 20, 25 years. I've been using open source for the last 30 plus years. I'm also dabbling in IT security. And if I still have the time, I'll work for a company called Redis Labs for disclosure. As a solution architect and liaison. Couple of things, basically, what this talk is all about. First of all, how many of you have used Redis or know what Redis is? Wow, OK. There are a couple of intro slides. I'm going to go through them fairly quickly, because if the majority is already familiar with Redis, there's a point in repeating these details. Then I'm going to talk a little bit about the architecture with a special focus on how applications perceive this document DB written in Rust. And of course, summary and outlook will conclude this talk. As I said, I'm going to go through this fairly quickly. Redis is, so far so to say, Redis is one of the kind of leading in-memory databases. It was founded about 10 years ago. We have more than 25,000 GitHub stars. There are more than 162 clients written in more than 57 program languages. I reckon that makes Redis one of the most loved databases when it comes down to client connectivity. How many of you actually have programmed against Redis? And I reckon most of you did this in caching use case, right? Or as part of a caching use case. This is basically where Redis comes from. About 10 years ago, the project initiator, somebody called Salvatore Sanfilippo, was looking for a performant reporting database for one of his web projects. He checked out MemcashD, he checked out other solutions that didn't check out. So he came up, he wrote his own database as a key value store initially. This is basically where Redis comes from. Does anybody know what Redis stands for? Remote dictionary server, this is what this is it. But over the years, Redis has evolved into much, much more. In about 2015, Salvatore introduced something called the module SDK to the code base that allows the initial Redis server implementation to be extended with so-called modules. And Redis JSON is one of them. The idea is to take your native Redis implementation and to provide and to plug any gaps that you may perceive from an application perspective with functionality implemented in the modules. So over the years, there have been modules in the area of graph. Redis graph turns Redis into a very performant graph database. Full-server compliant interfaces similar to Neo4j. There's something called time series that turned Redis into a time series database comparable in functionality to something called InfluxDB. And so forth. The beauty is that all these extensions are on GitHub. So if you're looking for a performant graph database, simply clone the Redis server site, clone the graph module, compile the whole thing, load the module when you start up the server, and then you have a full-server compliant graph database in memory at your disposal. The idea was to turn Redis with these modules to turn Redis into something very application-specific while maintaining the advantages that native Redis brings with it, namely low latency and hard throughput. This is the kind of idea. And the modules that you see on the screen are just the ones provided by Redis Labs. There are many more modules out there in the world living on GitHub. So if you think Redis doesn't offer something that you need, simply deploy your favorite search engine and Google for a module extension. Chances are somebody has written something that you can either clone or deploy natively, is in the right way. OK. Again, this is native Redis. I won't spend too much time on it, but this is what native Redis offers out of the box. And the majority of the modules would fall back on these generic data types, including strings, sets, sorted sets, hyperlock lock, which is a probabilistic data structure and so forth. As I said, this comes with native Redis. This has been in the code base since pretty much day one. Most of the client-side implementations would reflect these data structures, either as part of their local ecosystem as a client-library site or written by an extension. And what is Redis JSON all about? You have your native Redis, and then you have something called Redis JSON, which is essentially an ECMA 404 compliant module that turns Redis into document-oriented to be in functionality comparable to other document-oriented databases. If you see this, Mongo, if you see this couch base, you know what I mean. OK, you have your typical JSON commands that allow you to insert documents. That would be JSON set that allow you to retrieve documents from a database. That would be JSON get. But also, because JSON offers Ray and all the rest of it, you have JSON array append and JSON array insert, which allow you essentially to insert elements into an array and basically append them at the end. The navigation is done by JSON path. Who of you have used JSON path in the past? OK, not that many. OK, so I'm going to spend a little bit more time on this. Again, just deploy your favorite search engine of choice. JSON path, if you're looking for the specification, JSON path essentially is a standardized way similar to a document object model, if you know what that means, as in a DOM, that allow you to access data in a JSON document. So essentially, all of these levels are separated by simple dots. All you can use array notation to access these levels. So the following is equivalent dot foo dot bar. By the way, an initial period also always reflects the root of the DOM, of the document object model. That's something very important to keep in mind. So dot foo dot bar is equivalent to the first array in this level, which comes after foo, which is essentially foo dot bar, or you can write it all in array notation. Simple as that. And something very important, you also find this in DOM query languages, is the support for Y cards. So if you are unsure about specific selector, just insert a star, for example, and you will get back the corresponding array, the corresponding document, that reflects that path. How does it look like from the server side? You have the native server, and this is generic. This is not ready JSON specific. You have essentially the ready server that is running on, by the way, what port? Can anybody tell me? 63.79, right? Something very important, if you want to access redis from the outside, make sure that your firewall is open for that port, or kind of fortified correctly. So all communication goes through a wire protocol called REST between the server and the implementation on the client side libraries. And the client side pretty much looks similar to what is on the screen now in pretty much any programming language for which there is a redis client. Essentially, you have a small wrapper around a socket interface, which is called HiRedis. Written in C, highly performant, does little more than just wrapping socket access. On top of this, you have language-specific bindings. As I referred to earlier, redis is supported by more than 57 programming languages. So each and every programming language has at least one, if not more clients. The problem or the issue, the challenge with these programming language, they're all different. You have Go, which is compiler-based. You have Python, which is Python 3, very important these days. You have Python 3, which is interpreter-based. You have native C, or you have C++. For all of these programming languages, there are clients at library implementations, but they're all different. So there's an abstraction layer essentially implementing the interface layer to HiRedis, but that can understand the specific semantics, the specific interfaces, towards the programming language of choice and including the runtime environment that these programming language uses. On top of this, you also have module-specific bindings. If you go to OSS.RedisLabs.com, you'll see a list of modules, as I said, that Redis Labs put out there on GitHub. And most of them would have a Python, a Go, and maybe a JavaScript implementation right from day one. So these are the kind of the basic interface libraries you find for the modules. Needless to say, these module-specific client-side implementations would use the language-specific bindings in order to talk to the server, which, of course, then requires a module to be loaded if the client-specific bindings should work. Let's take a look at how this is done for Redis JSON. Essentially, this architecture depicts a performance benchmark that I'm going to go into as part of a later part of the presentation.  You have the module-specific bindings, language-specific bindings, and then you have for HighRedis, as explained before. And on top of that, you have a small layer called JRetisJSON. And this is then used by a database performance benchmark framework called YCSB, probably known by most of you who are looking for a performance database, because essentially it stands for Yahoo! Serving Benchmark. It's a standard benchmarking framework for databases, simply to TCP, if that rings a bell, only concentrating on no-SQL databases, because Redis is a no-SQL database, right? So the idea is to extend YCSB with a thin driver that talks to the object-oriented, the document-oriented database, and it does so through the ordinary architecture-specific stack. On the server side, this is reflected. You have the native Redis server written in C. As in, you can pull it down from GitHub. It's all written in C. It's there. I used version 505 for this, but more on this later. Then you have something called the module SDK, which written in C has been there for the last couple of years, as I explained. The trouble with that, of course, is that you cannot use this really from Rust right away. This is the reason why Redis Labs created something called a module crate that essentially wraps the module SDK in Rust bindings. As you probably know, to call C from Rust, you have to tweak it a little bit. Essentially, you have to say, now look, the Rust compiler. This API is not safe, because the usual memory management techniques, as in so concept of ownership and all the rest, and borrowing your Rust experts, you know this, do not apply to C code. So the idea behind the module crate is essentially to wrap the module SDK in something that Rust can understand. And then you have the remaining code base written in Rust talking to this module crate, which then in turn talks to the module SDK, which in turn talks to the server internals. By the way, this is Redis JSON 2. The first implementation called Redis JSON was written in C. As we can see in a couple of minutes, when I'm going to go through the performance aspects between these two code bases. OK, the original implementation, some figures. The original implementation had about 5.2 kilolines of code. The new implementation is about 3.2 kilolines of code. What were the main decision points for re-implementing the already existing Redis JSON extension in Rust? First of all, yes, the native code base of Redis is written in C. But as probably most of you know, aging C code is sometimes or somewhat hard to maintain, especially if it's been around for a while. So C code bases bring, especially for new members of a team, learning code with them, plus also do not necessarily help with the overall total cost of ownership or something called technical debt. So there was a decision being made to going forward that the new implementation language for any new modules or re-implementation of existing ones like Redis JSON would be done in Rust. The idea was to have a more compact code base, and I think the figures kind of reflect this, with a lower technical debt and very important with a lower QA effort. Because there are fewer lines of code that need to be tested. And of course, that leads to a lower overall total cost of ownership when it comes down to maintaining and extending the code base. And of course, something important, when you're working for a company that sells support around this and other services, time to market comes down to something that may be important for the business side of things. This is the reason why it was a conscious decision about two years ago to go forward with Rust rather than C when it comes down to native implementation of modules. A little bit of experience when we had when we engaged with this re-implementation of the new code base. The team had quite a diverse background. Some of them were coming, many of them were coming from C. Some had some Java background and also Golang was present. But so the background was pretty diverse when it comes down to programming language. And the reason why up to then the main implementation language of choice was C because A, the module SDK being present already was written in C. And of course, the remaining server code base has been written in C. That's the reason why natively it was pretty much a no-brainer in the beginning to use C as the implementation language for any modules being developed inside Redis Labs. But going forward, as I said for the reasons explained, Rust was chosen for as the new technology to implement modules. So some lessons learned from the team that engaged on re-implementing Redis JSON2. Yes, Rust does have a steep learning curve. Just hands up, how many have used Rust more than two or three years? So you can probably reflect this, especially if you haven't put up your hands. That means you're kind of sitting in the learning first, I reckon. So you know what this is all about with regards to memory management can be tricky at times. I'm talking about the board checker. Somebody about a year ago told me if you have convinced the board checker or if you have convinced the Rust compiler to generate code, you're halfway there. In contrast to C, where this is slightly different. OK, but now the plus sides. A pretty comprehensive ecosystem. If you take a look at what's out there on crates.io, that's a lot. You have at least five web frameworks to choose from. You have crates for socket access. You have crates for Rust itself is self-hosted. So you have actually crates for ASTs as an abstract synthesis and all the rest of it. So chances are, like Python, you take a look at what's out there if you want to program a new code base and simply reuse the stuff that has already been written. So this is a major advantage when it comes down to implementing new systems. Because essentially, as with other any open source projects, you are resting on the shoulder of giants. Simple. Responsive community. If you take a look at rustlang.org, especially at the forums, it's amazing. When I started to learn Rust, there was always somebody out there helping me.   So in contrast to other communities, Rust, and I think this is one of the major, of the big advantage of the community and the language, has been pretty responsive and pretty supportive. And this is reflected by what the development team basically experienced when they first started to this enterprise of basically program something in Rust. And of course, the tool chain support is awesome. Not only you have different tool chains at your disposal, better, stable, and of course, nightly, if you want to check out new features, you simply switch to a new tool chain version and off you go. But something pretty important, cargo, best example, right? It's not only build system. It's a package management system all wrapped into one. Maybe apart from go lang, I've yet to find a programming language that does it all in one go. Maven for Java came later, and it took Java people a long time to get it right, my opinion, before any Java people killed me after this presentation. No, jokes aside. Mozilla decided about 13 years ago that they needed a new programming language, because C and C++, as in the code base, then in place for the rendering engine, didn't cut it anymore. So Rust was developed first commit, I think, about 11 years ago, if I'm completely mistaken. But they did it with intelligence this time around. And you'll see this if you take a look at the tool chain support at the ecosystem, and people picked up on it pretty quickly. It took Python about, I reckon, 15 to 20 years to where Rust is now within the short amount of 10 years. And that's pretty amazing, I think, for a programming language.  As I already said, it's written in Java. It's a standard framework. So the idea is that you have quite a few DB integration layers as part of the native code base when you clone it from GitHub right away. Redis is, of course, supported out of the box. So is Hadoop, Mongo, Couchbase, even some graph database and all the rest of it. So the idea is basically, if you want to take a look at how your implementation, how your ecosystem, when it comes down to NoSQL, is performing, you simply clone the code base, you compile it, and then you can start testing. If, and that was the case when we started off on this performance benchmark exercise, if there's no integration with your new NoSQL database yet, it's not that difficult because you simply implement four, actually five methods in Java that talk to the respective clients at library implementation, and then you're good to go. So the idea is basically you have insert, you have updates, you have deletes, and then you have writes and you have scans, plus maybe initialization and finalization of the database connection, but that's about it. So the implementation of the Redis JSON extension that talks to Redis JSON is about 200 lines of Java code. It's as simple as that. So not a big deal. Don't fret if your database is not on the list of all of the already supported NoSQL databases. Writing that interface layer is not that hard, apart from using Java, of course. But that's a different story. OK, YCSB has the concept of workloads. There are five workloads that all reflect different use cases. For the purpose of this benchmark, I used about three of them. So they range from A to F, goes without saying. So they all reflect different kind of access patterns on the client side, as I said, different use cases. So workload A would reflect your vanilla cycle in terms of your 50% of writes, your 50% of reads, that hammer onto the database. Then you have workload B that has a more caching-oriented access pattern, namely you have about 95% of the database accesses would be reads, and only 5% would be writes. And then you have your bread and butter workload, which is F, that reflects a typical crud circle. As in, you read a data record, you modify it, and then you write it back. So for the purpose of this benchmark, this is basically what I focused on, especially interested in workload number B, because this is where this caching thing comes from originally about 10 years ago. How much time do I have left? 20 minutes. OK, plenty of time. OK, cool. So we can spend some time on the analysis of this. First of all, some specs. I used a stock, even as in the latest Ubuntu release. And the machine I ran it on is actually a Dell XPS 13 that has a mobile i7 with about 16 gigabytes of RAM, and it's 512 gigabytes of SSD. And the number of records that I used is actually around 1 million. Bear in mind that these figures, expressed in seconds, of course, can be scaled if you move to a different server specification, goes without saying. I travel a lot, so I use that machine that I'm presenting from as my go-to-server in the VertiCommerce. I use Redis 505 as a kind of reference architecture. You see that in the first line. Basically, to see how Redis JSON scales up against the native Redis implementation. The native Redis implementation is already, as I said, part of the YCSB code base. And then I used Redis JSON as in the C implementation, and I cloned this on the 2nd of January 2020. And one day later, I cloned the Rust version. The reason for the one-day delay was that my internet essentially broke down on the second after I cloned the C code base. And then I was traveling, and then I had internet access back again next day. So that's the reason for that one-day delay. But I took a look at the commits, and there were no commits in between, so that's the reason why. Pretty important, because I'm measuring only Redis. I'm not measuring, or Redis JSON. I'm not measuring ComBongo. I'm not measuring code base. I'm not measuring any other NoSQLDB as part of this benchmark. So I left it at in memory management only. So there was no persistence configured. If many of you have used Redis, you know that Redis has two types of persistence, namely append only files, as well as snapshots. I didn't use any of them, because I want to keep it straight, and I just want to confine it to Redis. So I simply said, now look, Redis, do your thing in memory as you have been doing for the last 10 years. Let's take a look at the native implementation first to get some sort of some-some feeling of how Redis is measuring up. The number of threads, you can configure that when you run your YCSB invocation. Number of threads essentially reflect or model the number of applications hammering onto that database instance. As you can see, and this is implemented by pure Java threads, thank you, pure Java threads on the client-side implementation because this is what YCSB uses when it comes down to accessing or simulating access to the server-side implementation. So one thread, four threads, and eight threads. Bear in mind that this is only a mobile quad core, so you're looking at essentially a dual core with hyperthreading. That's something important to keep in mind. Already at the kind of Redis level, we'll see a spike in performance when you move from one to four threads. This slightly goes up if you move to eight threads because that's what you see when you hammer with multiple databases, sorry, when you hammer with multiple clients onto a single database instance. And that's actually workload A and what is also, and this is reflected also in the remaining workloads. What I'm a little bit surprised about, and I haven't done a quite thorough root cause analysis yet why the performance for eight threads is actually higher on the native Redis level rather than four threads. So I reckon it's down to something called the Jettis interface that is used when accessing native Redis in YCSB. Jettis is one of the standard Java clients, apart from letters and something called Redisn. And as I said, I'm suspecting that this is basically down to the Jettis implementation. I used three or two, the tagging of the release was fairly recent, so I reckon there's something fishy maybe in that Jettis version. Switching over or comparing this to Redis Jason as in the native C implementation of the document DB, you will see the price you pay from when switching from native Redis to Redis Jason, i.e. the overhead, the performance penalty that you pay in a Vodacomas when you actually use that module giving you documents oriented functionality. And as you can see, it's not that much at the end of the day because essentially you're looking at 30% multi-threaded and even less when it comes down to a single thread. And now it gets really interesting because the comparison between Redis Jason and Redis Jason 2 essentially tell you the performance penalty when using a Rust code base and comparison to a C code base. So this is the impact that you have when you go from C to Rust. I'm slightly simplifying, but you get the drift. Let's take a look at the numbers. Work, let's pick a random workload. Let's pick workload A. The performance penalty that you pay is quite minimal because essentially you're looking at 44 versus 49 seconds. That's five seconds difference. But on the other side, you gain all the benefits that come with Rust. This is why this comparison for this particular use case is quite revealing I think when you are facing the decision what implementation language to use for your next project. Would that be Rust? Would that be COC plus plus? I'm gonna leave it here because we have about what? 10 minutes left some like that. So there's some more slides. The slides of course will be on the website. So free free to take a second look to do some further analysis. The code will be on GitHub very soon, more on that later. And feel free to get in touch if you have further questions on this. Okay, short recap. Redis JSON of course is your document oriented to be an extension basically of Redis and this is purely aimed at or the primary use case is in memory processing. So the focus is on what Redis comes with natively, performance and high performance and low latency as in maximum throughput. And of course because it's based on Redis you have full cap triangle at your disposal. Sorry, cap anybody doesn't know what cap is? Okay, great. Sorry, yes. Bruth's theorem it's the triangle between consistency availability and partition tolerance. Essentially from asset right up to maybe coherence something like this. So essentially asset doesn't, of course asset should ring a bell. So this asset is your typical SQL based use case as in you have a transaction that either fails or succeeds, nothing in between. Many as it turns out many applications do not have to use that strong consistency notion. So that's the reason why you especially see this in the no SQL space that more and more applications move away from this strong asset compliance. And Redis with the different types of persistence with the in-memory focus and thank you. And the other benefits of course allows you to move in that triangle based on your use case pretty freely. So this is basically the advantage of this no SQL approach. The outlook is we're gonna integrate this and you see this when you take a look at the code base on GitHub already. That's a module called Redis search which essentially is a full text search engine also based on Redis of course that allows you to have the functionality of a real time index in memory at your disposal. Many people use it as far as I've seen basically to implement something called like an in-memory search engine because that's what it is for. So you take a document, you let it index, you let Redis trust index the whole thing and then you can basically search for your index terms or for your search terms on that index. So the idea is basically to combine Redis search with Redis JSON which up to the time only supported JSON as a query language or JSON path as a query language. And of course, other functionality improvements regard extending the functionality currently implemented in Redis JSON 2 plus of course API extensions. So yielding at the end of the day at a document DB that is fully indexable in real time. So that's the overall idea moving forward. Before we come to the questions, couple of links on Redis.io and find the full Redis documentation. No need to tell you that because you know this already. RedisJSON.io reflects the reference documentation that is out there for Redis JSON and Redis JSON 2. By the way, the API is the same. So whether you are talking to Redis JSON or Redis JSON 2, it doesn't matter and it will always be the same. So if we extend Redis JSON 2, these changes will also be reflected in the registration for the time being. You will have the code base on GitHub. There's of course the code base for Redis from Salvatore, maintained by Salvatore, San Felipe on GitHub as well at his handle called Antirese. You'll find the YCSB cloud server benchmark also on GitHub. As soon as I get around to it, I'm going to issue a pull request for the Redis JSON interface layer. So if Brian accepts this, you'll have a native YCSB integration out of the box on GitHub. And of course, there's also something called the Redis Labs University, just to sentence us on that because this is not a commercial presentation. It's essentially an online university where you can get to know more about Redis, both from a developer as well as administrative perspective, it's free of charge, simply register, create an account, enroll in a course, pass the exams, pass the homework, and you get a certificate. Any questions before we close it off? Yes. Can you make a module so you can move part of your application in the server? Yes. Yes, of course, thank you. The question was can you nest modules essentially as in can you move business logic onto the server side? Yes, you can. There's something called Lua, which is a scripting extension for Redis, but there's also an upcoming module, it's in technical preview at the moment, it's called Redis Gears. Redis Gears allows you to take your, at the moment it's only Python, allow you to take your business logic code in Python and move it off to the server. So your Python script is then executed as part of a Python implementation, running on the server. You can also do this with module functionality, although I haven't seen this yet. I was specifically thinking about Rust. Rust. Question is it hasn't been done that. From a functional perspective, I don't see any reason why, as long as you stick to the module create, goes without saying, because essentially this is what you use when you access the module SDK, but I don't see any reason why you couldn't do this. But as I said, the POC still remains to be done. Any other questions? You had a question, right? How much prediction ready is the Redis JSON2? Is it just functionally complete? Is it already optimized? Is it wearing the life cycle? Yes, thank you. The question was, how ready is Redis JSON2? We, as in Redis Labs released this last year, the commits have been mostly bug fixes. So I know quite a few projects who use this already in production, so the answer is it's ready for prime time now. Okay. Needless to say, PR is also accepted, I think. So if you have further improvements, let us know. Other questions before we close it off? Yes. The question was, is the performance equal between creating a new, JSON document or just updating one? Essentially, the idea is if you are updating one, you basically have to modify the contents that of course includes a query in terms of where you wanna stick in the content. So I don't have exact performance benchmarks, but based on the already kind of native performance implementation, I wouldn't expect that overhead to be really significant. But as I said, having not done the performance benchmark for this particular use case, let's see, another question, another question. Okay, in that case, I would like to thank you for your time and enjoy the code.


Speaker, one of two key notes in this session will be from Eric Kodish, the Director of the Cleveland Clinic Center for Ethics, Humanities and Spiritual Care. He's the F.J. O'Neill Professor and Chairman of the Department of Bioethics, Executive Director of the Cleveland Fellowship in Advanced Bioethics and Professor of Pediatrics at the Lerner College of Medicine of Case Western. His areas of expertise include childhood cancer and blood diseases, pediatric ethics, end-of-life issues, and research ethics. He's been principal investigator in a series of three NCI-funded multi-site studies of informed consent in childhood cancer. The American Cancer Society, Greenwall Foundation, Cleveland Foundation, and Josiah Macy Foundation have funded his work, and he will be speaking to us on quality attestation in clinical ethics. Stepping up. So please step up. Good afternoon. Always such a pleasure to be back on the South Side and such a pleasure, Mark, to be back reunited with the wonderful community that you have created here. I'm going to dedicate this talk to the memory of Bill Steuben, who many of you knew, passed away recently, President of the Greenwall Foundation, and it was actually a conversation with Bill that got me interested in this, the experience that led to it also related to my going into a secure testing center, surrendering my belongings, as someone mentioned in an earlier talk today, taking the recertification board in pediatric hematology oncology, walking out into the parking lot, looking at my beeper, and noticing that someone had called me to do an ethics council on an end-of-life situation in the ICU, and I had an epiphany, or if not an epiphany at least, a moment of realization where I said to myself, how come I have to take a test to prove that I can take care of kids with cancer but I don't have to do the same thing to do an ethics council? It didn't seem right to me. I began to think about it, talk to people, including Bill Steuben. One thing led to another, and here we are. So I am going to just mention a quick disclosure. I didn't think it mirrored at a slide, but I'm a consultant to Biogen IDEC for some issues in research ethics, having nothing whatsoever to do with this particular topic. Quality attestation is a, yeah, thank you, Mark, it is an intermediate step. It's meant to be a review of an individual's ability to carry out ethics consultation in practice in a paper that we had in the Hastings Center report. It was envisioned as a two-step process, a portfolio, which I'm going to talk about today in detail in which we've accomplished, at least in a pilot phase, followed by an oral examination. It's meant to assess education skills and experience to ascertain whether an individual can either independently perform ethics consultation or lead as a lead consultant in a group council. I think as many of you know, there are other concepts out here which are important to delineate. Credentially, it has to do with a local hospital allowing somebody to practice to write a note in a chart. It will vary from venue to venue. Formal board certification, we're not there yet, but many think that this quality attestation would be a step on that pathway. And then programs, as you see in the bottom slide, which can be accredited to complement the individual issue of certification and accreditation of ethics training programs is a different issue that I'm not going to cover today. I want to say a word or two about measurement. There's at least two important concepts. One is precision is a measurement, something that will yield consistent results when repeated. And the question there is how close are the results to one another. And then there's accuracy, which is ideally a level of measurement with no inherent limitation. And the question there is how close are the results to the true value. And I want to apply these for a second to thinking about measuring quality in ethics consultation. Since the 80s, at least, maybe the 70s, people have been doing ethics consults. There hasn't been a lot of progress in how we measure quality in ethics consultation. And I think what you see here would be a measurement that had low accuracy but high precision, right? All of these are near each other on repeated measurements, but they're not very accurate. High accuracy with low precision would look something like this. And ideally, one would have high accuracy and high precision. And I would submit that for now, in the place we are in history in measuring quality in ethics consultation, that accuracy is more important than precision. And I fear sometimes that we're going to get a little hung up on the precision. So let's aim for at least modest accuracy, and we can worry about precision later. This has been decades in evolution. In addition to Dave Scheedermeyer's wonderful literary skills, he and John Lepuma had a paper in 91 about the qualifications of ethics consultants. John Fletcher wrote about it in 94. ASBH has been active in this area for a long time on core competencies. Ellen and her colleagues at the VA showed a lot of ethics consultation going on, but very little training, diverse backgrounds, calling out the need for standards. Nancy Dubler also was concerned about this and brought together a group you'll see here on the bottom on the credentialing project with an important paper in the Hastings Center. I'm going to go through the history pretty quick here. ASBH Clinical Ethics Task Force was created after the conversation that I had with Bill Stubin. I, with some colleagues, came up with an idea for a four-step process that, in addition to a portfolio, an oral exam included a written exam and a simulated ethics consultation. This was published in the Journal of Clinical Ethics. And we put this out there as four separate ideas that could be modular. It wasn't necessary that all four of them would happen. It was in conversation with the Greenwell Foundation about work toward that. And then I was approached by my friend and colleague Joe Finns when he became president of ASBH to look to partner to move this forward. Mark Kaczewski was president before Joe and was also very committed to this. And the ASBH Board has been supportive of this, working forward. And the work I'm going to talk about now involves a quality attestation, Presidential Task Force, which I co-chaired with Dr. Finns. We initially had support from the Macy Foundation. I mentioned this paper in the Hastings Center that laid out a two-step model. And then the Greenwell Foundation provided some pilot support for the portfolio segment. So that takes us through a few decades of history in a couple minutes. The point I want to make, though, is that ethics consultation is here to stay. In the New York Times, a month and a half ago, my colleague Marty Smith was quoted having to do with our work on patients without surrogates, which we see all the time. We do 600 consults a year at the Cleveland Clinic across the system. Many of them involve patients without surrogates. And ethics consultation is key to helping, at least one way, to help manage these difficult situations. So we have no basic credentialing requirement now. I think consensus has emerged and that we're going to be kind of left behind if we don't take this internally and act. We also have the risk, I think, that external forces will come into the picture and tell ethics consultants how they ought to be doing it. If we don't take some ownership in this. We have a challenge. We have many challenges, actually. There's no prescribed entrance exam or educational requirement now to conduct ethics consultation. It is true that anybody could hang their shingle, say that they're an ethics consultant, and it would not be really possible to challenge that in any meaningful way. It is a high stakes endeavor, as I said before, we're involved in end of life issues, reproductive ethics, all sorts of complicated, challenging things without oversight or regulation. And it's not in conformity with the overall trend in healthcare, which is emphasis on safety, quality, accountability. And I think we do have general agreement on the core competencies and we can test. Why a portfolio? I find portfolios to be pedagogically compelling. I don't know how much experience those of you in the audience have had with them, but there is precedent in some other areas of assessment. It's essential, I think, to allow candidates to present their best case. And that's what a portfolio can do. It is amenable to individuals with variable training and experiences. And that is, I think, one of the real strengths of ethics, clinical ethics consultation is that we have people from many fields who do it and do it well. A portfolio allows many different disciplines to show their best stuff, if you will. And I think it's compatible with residency programs to make you board eligible. Our thinking here was that if you pass the portfolio stage, you would become eligible for the next step. I'm going to move into some nuts and bolts of how we went about this now. Now, we, the quality attestation presidential task force, put together these elements of a portfolio and made some judgments about how many points would be assigned to the various components of the portfolio. And you'll see here that these six in-depth consultations were worth 48 points. So almost half, this adds up to 100 points, and that's the scale that we'll be showing you data on next. Almost half of the portfolio is attributable to these six in-depth consultations. But education, training, experience, 15, a statement about your philosophy of ethics consultation, which I'll say more about in a minute. Some letters of recommendation, and then six kind of one-pager brief consults that were meant to allow candidates to show more breadth of their mastery of ethics consultation. So that adds up to 100, and just I want to say something because I know Mark is particularly interested in this in terms of education. We set the bar at a master's degree or higher. Now, you could argue one side or the other of that. We did make an allowance for candidates who had not achieved the master's degree to raise the possibility that by virtue of their own experience, they would be exempt from that requirement. I think some people feel that it should be a doctoral degree. Others may feel that an undergraduate degree is sufficient. But right now, the education criteria states master's degree or higher. This philosophy of ethics consultation is kind of a tip of our hat to the value of being concise. We figured that we should be able to say in 500 words or less what their philosophy of ethics consultation is, and we set up this scoring system of five criteria each grade at zero to three, and I'm not going to read through them for the sake of time, but these are the things that are the components of that statement of philosophy that we scored together as a task force, and I'll go through our methods here in a bit. And let me just pause here to say that a manuscript has been accepted in a job, the American Journal of Bioethics, and this particular journal has what they call target articles, and Target is an interesting name for this, but a job has decided to put this paper out as a target article. The email, I think, went out yesterday, so it's pretty serendipitous timing, and those of you who want to read the article, certainly I would encourage you to do that, but also to propose to a job what they call an OPC, an open peer commentary to give us your ideas and help us think better about this. So we're excited that there's going to be an open peer commentary period from age up, and I'm going to move on now to tell you a little bit about EQUAT. Our colleague Bob Perlman, who is on the quality attestation task force, really in very beautiful timing, had done a lot of the preliminary work on this with his colleagues at the VA ethics program under Ellen's leadership, and they have a system that they've been working on to measure quality of an ethics consult note. Now does an ethics consult note, if you write that prove that you're competent to do ethics consultation? I would say no, but hopefully taken together with your statement of philosophy, with your training, with those other elements that I showed you, gives a more holistic picture. This is the critical tool though, because this one is the 48 points that I showed you before, and the scores are based on integration of four elements. Is the ethics question or concerns stated clearly in the note? Is there consultation specific information provided in the note? Is there an ethical analysis? And are there recommendations or conclusions? And in the EQUAT model, each case is initially scored as acceptable or less than acceptable on a holistic basis. Then the reviewer rereads it and gives it a one through four score, and we had dyads of reviewers. The notes were blinded, I'll get into that in a minute, but we had people reading them, and if they were discrepant between the dyads, if one raider gave it a one or a two and the other gave it a three or four, a conference call was arranged for them to reconcile their views and come together with a final score. So we did our best to make scoring consistent and fair by going through the training ourselves. Everybody on the task force did hours of training using the EQUAT model. We reviewed the consults without knowledge of the consultant or the institution, and it took the staff a lot of time to de-identify all of these cases, but I think it was time well spent. And then, as I said, pairs of reviewers independently reviewed all six cases. So here was the sequence of events. Initially, I think at the end of 2013, we sent out requests for letters of intent, and we were gratified that 82 people in the bioethics community said, sure, I'll do a portfolio. I'll partner with you to learn from this. We knew that we couldn't review 82 portfolios, and we did a stratified random selection of 32 of those, and these were individuals. This was not to be done by institution, and some people were confused about that. This was open to any individual who wanted to submit. Of the 82, we stratified by years of experience into quartiles, so we had eight in each of four quartiles on years of experience. Interestingly, 23 of the 32 who we invited submitted a portfolio, which is about what we expected. And then around the table at the task force, we ascertained conflicts of interest. We did the ECWAP training that I mentioned, and then the dyads did their reviews. After that, there was an unblinding, and the remainder of the portfolio was scored. There's no way to score the other components, really, or at least most of the other components without unblinding, but we had removed COI. And then we had a consensus meeting and discussion, and we made a group decision on each portfolio. A bit about the characteristics, you can see a pretty even split between men and women, and here's the years of experience. I don't have time to show you the disciplinary background, but it's in the paper, and take my word, there's a nice mix of professional disciplines as well for what you can do with a sample size of 23. We elected to use an inductive process, just a reminder for those of you. I always have to remind myself to go from observations to tentative conclusions is an inductive process, and a deductive process would have been to set an a priori cutoff without seeing the data first. And we certainly plan on an iterative process as we get more portfolios, if this moves forward, that the cutoff could change and probably will change based on the data. But here's the data, and I think if there's a slide that's most important in my talk, this is the data. This is our 100 points scale, and the range of scores was from 52.5 up to 95. The mean was about 80, and the median score was a little higher at 85, and the standard deviation was 13. So here's the 23 pioneers, if you will, who submitted portfolios, and this is the distribution of their scores based on what I showed you. If you take 1.5 standard deviations beneath, thank you, beneath the mean, the cutoff is right about here at 60, and with that threshold, about 90% of the applicants of the candidates would be considered to have a satisfactory score and would qualify for the next step in quality attestation. And I'm going to give a few conclusions here. I'm not going to take time to talk about the limitations because they're in the paper, there are substantial limitations, we recognize them, I'm sure the open peer review comments will give us more limitations because we're really just getting started with this. But I think that we got a good sample of candidates that varied by discipline and diversity of ethics consultation. The scores of individual components were correlated with one another, but not completely, so we think each element makes some useful contribution. We didn't see enough redundancy at this point that we would eliminate anything. We know that the attestation process could be further improved in the future by more transparency about what we're looking for, but we'll be honest, we didn't really know what we were looking for because we were just getting started. The vast majority of candidates were asked to proceed, which suggests to me that ethics consultation in 90% of the candidates now are being adequately performed, but with any quality improvement effort, we're committed to this idea of gradually, I think, increasing the expectation because that's a key issue for professionals. Everyone wants to get better all the time, so we admittedly said, you know, we want most people to get a passing grade this time. We owe a great deal of appreciation to the candidates that volunteered. This was a very time-intensive effort, and we really obviously could not have done it without those who were willing pioneers. We know that people will know what constitutes quality as we disseminate this. We think that's a good thing. And finally, the portfolios, I think, are a promising tool in measurement of quality for ethics consultation. Thanks to the members of the Quality Attestation Task Force, you'll see in the asterisk here that Art Dursey, who's here today, Art, where are you? Raise your hand in the back. And Anita Tarzian are the current co-chairs. Joe and I have rotated off. The project lives on, and I know we'll continue to do great work. And finally, a little wisdom of fiction. This great novel I read, I pity the poor immigrant, had this little quote in it, and I think it says something about ethics consultation. It was not in the hope of finding an answer, but in the hope of creating a space in which to think through the question. Thank you. We have time for perhaps one or two questions. Laini has first. Great. Thank you for that great overview of what you guys have been doing. Thank you for doing all that work. Going back to this morning when we heard Stacey talking about sustainability, the amount of time and training for viewing it, and going back to what's been talked about, where we do two ethics consults and we get paid a little to do it. How are you planning to make this sustainable because it's an expensive process? Yeah. Well, we've been batting around some ideas around that. I think what we've been geared toward now is kind of the high end. People that are really active ethics consultants doing a lot of consults. I think there are also opportunities potentially to broaden the market for this. People that are on ethics committees, people who would like to sort of climb the ladder of the profession of clinical ethics. So potentially a written test that people would pay less for, but there needs to be a sustainable business model for sure. Our foundation partners have been very generous and we hope will continue to be very generous, but they don't want to bankroll this forever, nor should we expect them to. Again, I think we need to demonstrate quality to hospitals fundamentally, and they will hopefully in the area of value buy in. That's the best I can hope for. One more question. Yes, Lexie, please. Hi, Lexie Torkey from Indiana. I have both a nuts and bolts question and then just ask you to reflect on something more qualitatively. So do folks have to have a master's degree in ethics because both as a graduate of this program and as a director of an ethics program, I'm curious how you perceived ethics fellowships. And then my qualitative question is, can you just reflect a little now that you've been through this process once on what tended to make a strong portfolio or red flags for portfolio? Thank you for those questions. The first one is, is the master's required to be a master's in bioethics? And the answer is no. A master's in divinity. I think many people have, you know, it could be a master's in electrical engineering, I guess theoretically. It could be anything, but the portfolio hopefully will reflect quality regardless of what kind of master's degree it is. With regard to reflection about what made a strong portfolio, rigor of thinking, clarity of conceptual analysis of a particular case, I think restraint at least for me. I can't speak to my colleagues, but our sense was if someone came in, like my last slide, to say, here's the answers, that's probably not as good an ethics counsel to someone who says, here's the questions and tries to enable the person who requested the consult to reflect. And someone who teaches, like if I saw a consult note that someone had referred to a paper that Dan Solmezzi wrote to and the consult note on the chart, I'd say, Bingo, this person, you know, is probably doing good quality ethics counsels. Thanks. Thank you.


The 2016 list features 15 new woman achievers. We congratulate them and salute all the winners. I don't have any words. This is the first time that I've been nominated to the list and it was quite a pleasant surprise for me and I'm delighted to be on the list. I mean, looking at the women who are there on the list, I feel privileged.


Everybody it's Brian and this is our 31st Qt tutorial with C++ and GUI programming We're gonna tie everything we've learned together into a working GUI application. So let's go file new and we're going to say projects GUI application and call it My GUI thread let's just say E-Test and Let's give it a Q dialogue. I'm gonna have to go through this fairly quickly A lot of this is going to be review here. So just if you see me whipping through this and you have no idea what I'm doing I beg you, please go watch the other tutorials And we're just gonna throw a couple push buttons on here call this start and we'll call this stop And let's actually set our layout for this form here And let's put a spacer in here and the basic premise here help effect spell number The basic premise of this application is when we run it We're gonna have a thread that increments the number right here, and we're gonna have the ability to start and stop the thread So let's do that now. Let's jump right into the code Add new you guessed it C++ class And we'll say my thread Base class is going to be Q thread in the past. I've told you not to do that But I'm actually gonna tell you to do it this time The reason why is you get a lot of things for free and Here they are you automatically get the inherited Q thread with the Q object you get these signals and slots So in order for this class to talk with our GUI, we need to emit a signal. I Don't think we've ever done a signal, but they're very easy. You just need the Signals directive and then you just say void and let's call this number changed And that's it. That's how all it takes to make a signal and we're going to make the run Function override that and we're gonna make a boolean value called stop That's what we're gonna use to stop our thread Now let's jump into the thread implementation here and say void run Oops, totally forgot our namespace there. Let's just copy it for sake of speed And let's do an include here and you guessed it We are going to just simply do a for loop and I Going to make a mutex here That way we can avoid any embarrassing crashes Nothing's really changed. So if This stop this should all look very familiar to you break Otherwise we are going to do what is called an emit Emit is how a signal is emitted or sent from the object that other objects can put into a slot or absorb so we're going to admit the You guessed it number changed now in itself number change doesn't do us a whole lot of good because we need to take this I This variable and emit it through that slot. So let's actually jump in here and add a Parameter or an argument of integer So we're going to emit number changed with an integer Jump back into our thread here and now we can just put I Now if there are no slots to absorb the signal No problem. Nothing's gonna happen. Nothing's gonna crash signal will still get emitted, but nothing happens Now right now let's go into our dialogue here and this is where the magic is gonna happen Let's go include. Let me fix that real quick. Sorry about that My thread and we are going to make my thread Gonna make a pointer and we want to Actually make a public Slots on number changed. We're gonna give it an int That way we can absorb that signal as it's emitted Now jump into dialogue CPP and you notice how it's just a bare bones basic dialogue here So the first thing we need to do void dialogue We need to implement our slot Because that is after a little point of this program. So let's say you I label Set text all of this so far should be very familiar and nothing but pure review Q string If you're having problems keeping up with what I'm doing. I'd recommend you go back and watch some of the other tutorials Because we have covered all of this so far All right, so that is how we are displaying The number let's kind of review real quick here as the thread is run It's going to loop 10,000 times and it's going to emit this number changed and we are Using a slot to absorb that signal and when it's Triggered we are just simply putting that number out there Now we haven't run this thread yet. So we need to do that. Let's actually go into our dialogue Start go to slot clicked Let's go back in here and do the stop button also go to slot clicked That way we have on push button on pushing to button to let's say started Comments are always nice. I know I haven't been doing them very much in this tutorial So we have started and stopped Now first thing we need to do is actually create the thread. So I'll say m thread equal new My thread And we're going to make this the parent that way when this forms close the threads also delete it out of memory And we want to connect that signal and slots. So we'll sit connect m thread signal You guessed it number changed with an int these slots going to be this I'm sorry. The receiver is going to be this the slot However is going to be On number changed That's the slot. We just created with our integer parameter and then We will jump down when the started button is clicked We're going to start the thread with the normal priority and when the stop buttons click we're going to actually Set that stop flag Remember we put that q mutex in there so that if it's in the middle of that loop reading that variable and we're setting the flag It's not going to explode and blow up in a fiery death here. Oh Forbids on number change with no type. What did we do wrong here? Oh, yes, we forgot void very sorry about that so Go ahead and build your program and Fingers crossed there we go when we Click the start button notice how it counted up not counted so fast. We didn't have a chance to even test the stop button Well, that's what I was talking about in a previous tutorial when I said we had to use sleep This and we could say sleep Which you have an unsigned long and I believe that's every second but we want to do milliseconds So we'll say MS sleep or millisecond sleep and let's give it a number like um, I don't know 100 milliseconds Nice even number. We can still see what's going on here Now we click start you see how it's counting and it's counting fairly quickly and you can click stop and the thread stops That in a nutshell is how you make a thread with GUI programming Now you notice if you're familiar with other languages like visual basic C sharp and I believe Java We didn't have to do any proxy or delegate classes That's a real pain in the butt with some of these other programming languages Is you have to make a separate class to interface with your thread class to interface with the GUI? Cute doesn't have any of that nonsense whatsoever. You just use the standard signal slot mechanism, which you've grown to love and learn Alright, this is Brian. I'm running out of time. I hope you found this video educational and entertaining and thank you for watching


Very, very glad to know you're still there. Thanks for staying with us. We're going to take our hot topic this morning and Nigeria records improvement in first corruption perception index and that Tinnaboo is what we're talking about. Now we're being joined by Dr. Ibrahim Oshinowo, member, APC Presidential Campaign Council 2014-2019-2023. Good morning Dr. Oshinowo and welcome to the program. Good morning to you guys in the studio and good morning Nigeria, nice to see you again. Yes, it's also a pleasure here seeing you. Okay, we are now on the 145th spot in this corruption perception index. To some people, it's a win that has to be celebrated. To some people, it's a shame that we are just 35 spots shy of the last spot in this corruption perception index. Out of 180 countries, we are 145. I'd like to know what you think about this ranking of Nigeria at the 145th spot. Okay, thank you so much for having me from Capital Territory. I would like to state that the thought, we need to know the organization that is coming over the ranking profiling and what are the samples, what are the indices they use to determine the position of our country. Don't forget that we have no other country that this country called Nigeria and our legions should be to this country. Number one, a lot of indices, a lot of samples needs to be taken to come up with statistical evidence that shows that we are in number 40, either number 48 or which number they come up with. 145. 145. So, we need to look holistically into a lot of factor. We need to look at the environmental factor. We need to look at the geopolitical factor of each each continent. We need to look at the risk management and path analysis of each countries and continents. We need to look at the financial warehousing of each each country. For instance, I've said this in so many forums, including at Zera, that the West had the major issue, had the major financial warehousing for listed funds for West Africa and other developing countries. I've said that in the international arena, most of the listed funds that escaped from the developing states like Congo, South Africa, Ghana, Penne, including Nigeria, are deposited in the Western country like Switzerland, France, UK, the United States, the other countries. So, these are the indices that we need to analyze thoroughly for us to even decide and determine the statistical evidence they are able to show on the so-called result. However, this country and this administration has been responsive in terms of cognizant response to any flashpoint. For instance, a minister, a ranking minister, for instance, a minister of the federal cabinet was suspended on just a lot or cry out by Nigerians in a bunch of processes under the federal civil service rule. This is a well-performing index for this administration. Secondly, one of the biggest countries and the richest man in Africa is being interrogated by this administration. That has never happened before. While Jonathan Obasanjolo, nobody had the effrontery or the audacity to query Tanguti conglomerates, but this administration has investigated and continued to investigate what transpired over the years with Tanguti. So these are steps that this administration has been taking and I will call on all meaningful Nigerians to support the administration because these are both steps. For instance, this government is able to reduce the global and fraudulent scabar, scabars effort on subsidy. Importing a fuel, we will subsidize fuel here in Nigeria and the same fuel and the same product will be transported to Cameroon, DJ, Ghana and other neighboring states. At a subsidized rate, this administration is able to stop that. It takes a lot of political effort, political sagacity and intellectual mobile leadership to be able to face this order. Why couldn't you do it? Why couldn't you do it? Why couldn't you do it? Actually, they came and they told them that this subsidy is gone out of almost 130 million population of good people of Nigeria. Fuel less than 100 has milk us to over $9 trillion in the last 10 years of subsidy. So what are we talking about? Who are these people coming up with this vulgar and artistic position for Nigeria? I think we are doing well. I would like to stop at that. Let me take you on some points that you raised. You talked about the fact that when you are looking at the indices that was used to bring about these results, you need to consider a lot of things in the countries that you are assessing as it were, and you have to consider environment and so many other things that you mentioned. What does environment got to do with corruption? Some were collecting bribe. It's not because the sun is shining too much or the rain is falling too much. What does environment got to do with corruption? Because these are the things that you mentioned that should have been considered before they give you the result that they gave you. What do they have to do with the fact that our nation is corrupt and we are trying to look for solutions for it? If you want to talk about solution and corruption, one needs to be very, very vigilant and observant. Don't forget about the western politics on West Africa. Don't forget the history of Congo. And don't forget the history of why some military junta take over governance in other West African states. You know, a lot of factors come so. For instance, if you are talking about the Bloomberg report, that has a statistic needs to show how you come about with the ranking of East East country. For instance, in South Africa, the government of South Africa is acquiring, you know, the former president of the country, acquiring the amount spent on foreign diplomacy from ministry of foreign affairs of South Africa. So the global corruption indices needs to be holistically looked into before you arrive in Nigeria.  I don't want us to name our emphasis. But I believe that domestically we must look into those factors. A lot of factors. If you are saying Nigeria is corrupt, United Kingdom is corrupt. Because most of over 400 billion, over 4 billion pounds in three years has been deposited in the British Peninsula system. So why do they allow the foreign illicit form from developing states to come into the system? And most of them, they don't release it. They don't release those things. They don't just come and discuss Nigeria is corrupt, Nigeria is bad, Nigeria is this, Nigeria is that. What are the data analysis? We need to, they need to show us who is this organization coming up with all these things. So these are the discussions that we need to look into. So are you saying because they come from this organization that should be discredited? Because the people who brought this out, for instance, let's say CISLAC, which is like an arm of the NBA of Nigeria. And there are some other organizations in Nigeria that sourced for all these things around the globe and saw the parameters that were used and all that, and then brought out this figure that this is what it is. So are you saying these parameters that were used are not supposed to be used for Nigeria? Is that what you're saying? And before you even answer that, the scripture, let me, sorry, let me use that. The Bible says that do we sin so that continuing sin so that grace may abound? Is it because that they are, why are we using institutions that are receiving the monies and the corruption items in their countries? Why are we even referencing them here? Because if you say I can't continue to steal, because after all you are the one who has been housing my money when I steal. It doesn't mean it doesn't look like someone who wants a solution to the problem. Just because they are receiving it, do we continue to do what we are doing because the Western nations are not being sincere themselves? They are not the ones who are facing the inflation now. They are not the ones who are facing the hardship in Nigeria right now. If they are receiving our money because we are giving to them, yes, they are corrupting their own, but why would we need to reference them when we are trying to get solutions to our problems? I will tell you that it's what the Cogloba might gain by reducing the Western state's dignity into zero by letting us see ourselves as a poor and irregular nation. Now, the CISLAC you mentioned and the MBA, we did respect to some of my friends who are in the MBA. MBA itself, in the annual general meeting, the second vice president of the secretary accused the chairman of MBA of corruption in lots of things needs to be dealt with by coming into the public forum to discuss about the indices that Nigeria is 34, Nigeria is 101 million and 4. These are mind games. We need data. CISLACs, what have you done? Where are you coming from? What is, when you are doing the statistical data analysis, what are the inflation rates in this country? How are the responsiveness? How much have been recovered by the antigraft agency? What are the returnings that have been made by the present government and the previous government? What are the fund escape loopholes? Recently, the Nigerian government is tightening up its taxes revenue. It's tightening up its payment platforms and the rest of it. So, limits are being measured on most of the payment outreach to even the companies and private sectors. So, most of these western countries coming to our country, a mining sector, oil and gas, construction and the rest of it are the category without money. In fact, telling Nigerians to bring money into their countries. So, we need to look holistically. I want to remain, I want to continue to hammer on that point that this data, where do they stop it from? And they're measuring it on numbers of the government, on the government, on the government, on the world's government and now the present government. So, these are the things that we want to do. You know, I'm an academician. I love to work with data. I love to play with data. So, if you are saying that you are placing Nigeria on 145 or 146, what number is the United Kingdom? What number is the United States? What number is the Netherlands? What number is Finland? Another Caribbean state, where illicit funds are presently deposited. So, these are the discussions that we must make. I'm not encouraging that Nigerians should not, you know, disease from, you know, taking our scarce resources abroad.  I just gave you few examples. You know, a minister just an attempt to send just about half a billion to a private account and she has been suspended. And hopefully she's gone. And if you can do some, you know, investigative journalism into the present government, you'll find out that every minister is sitting tight. And the committee has been raised also to look into their affairs. So, these are the discussions that we must make. This is our country. We must be, we must be especially clear to all these, you know, Jankara, Detab, firms that are just coming out with fabulous figures of positional ranking. So, we must be careful about, you know, promoting them. That's what I'm saying. Now, let's just forget about the western countries that may be giving us figures that, like you say, may not be as good as they should be. If you were to rank Nigeria on corruption, what would you rank it? Let's forget about other administrations. We're talking about almost a year of the present administration. And this is the first time this ranking has come out. We don't care what figures were in the previous administration of Buhari or Jonatan or anything. We're talking about now, because it is now that we are in. They scored, Nigeria scored in all those parameters. They scored 25, we scored, not there. We scored 25 out of 100 points. That's 25% of the entire point. So, regardless of what the parameters are, how would you rate Nigeria on the corruption perception index if you were to rate Nigeria?  But I would tell you a lot of things that, like I said, I'm going to go back. I am a data man. I am, you know, an academician and a researcher. That's the problem. The problem is that we let the western nations or any other nation to give us the data that we should have had. So what data does Nigeria have that can give us... They should not give us data. Which one do we have? Which one do we have to counter the data, the false data, if I may, that is coming from external sources? Which data do we have in Nigeria? Because that not having data is part of corruption. You want to do population. You don't know the population of, say, Nassarawa state. So you cannot even give a policy that will be good enough for the people of Nassarawa because you don't know their number. People are inflating it because they want to get gains from the federal government and so on. So what data do we have in Nigeria to counter the false or misleading data coming from external forces? That's what gives us worry. And you are a data man. So what do we do? Now, let me give you about the data analysis issue of this country. And it started from 1960. You know, British, for instance, has been having the data on debt and debt since 1842. Data is not something that you are going to come up in 10 years, in 15 years, and you are going to have the accuracy. You know, debt, debt, debtor, great definition for all security agencies, all the financial institutions, and allow government to plan holistics on its citizens. Now, we just started NIMS, NIMC, recently to capture that. In fact, a lot of people in Nigeria, 20 years ago, we have, I have almost about 5 lines. Around 12,000 and 4. So much 10 lines. But the effort of government has reduced that. Any line, any mobile number you are having now has to be linked with your data. You have to open your back account with your data. These things have been honed in the Western states and the European states for more than 100 years. So if you have to give it to the Nigerian government, try to harmonize our data into our passport issuance, into our financial system, into our security system, into our, you know, mobile and communication system.  So we should wait for like another 200 years before we can have this data. No, I'm not saying that. As we speak now, the population census has not been done. It was supposed to have been done. I'm coming into that. Don't forget that because of the general election last year, the census commission could not do that. And hopefully, they will do it this year. Or next year, a lot of factors, you know, will play in.  Any debt, any debt in this continues to be registered by the agency. That's the reason why the Western states have, you know, hackers. Even most of the investors are not hackers, but they are almost about 70% good. So these are the things that take over the years into their financial portfolio, into their data analysis. And, you know, risk management portfolio to know that, okay, this is where this is a month of people that is going to be giving best this year. This is the age range that the government needs to plan for. This is the comeback of the hatred that government needs to look into their welfare. So these are the major issues that will come out to see in the system. In this country now, for a minister to make a attempt to send over 490 million to a personal account, that will not happen in the West. Because the financial system, the financial regulation will not even allow the transaction to fly in the first place. So I'm not saying that Ranking is not good, but we need to see the effidensia pool of data that says that Nigeria almost less and less assumed 1 trillion as capital fried as left Nigeria in 2022. Out of this 1 trillion, certain percentage is in the UK, is in the Western States, is in Switzerland, Switzerland, France, another state of the European Union. So these are the discussions that over time will most analyze. Nobody would just come and say Nigeria is number 300. Nobody would just come and say Nigeria is rating 25% out of 100. That is fallacy. That is self discussion. It doesn't make any scientific or academic proof. For instance, I've given you, we don't forget also we are a developing nation. Here we still have the issue of power. Here we still have the issue of growth construction. Here we still have the issue of health system in this country. Here we don't have benefit for hedges, for elderly ones. Here we don't have child support. All these amenities, you know, disturbed by the Western States are coordinated by the government. So why is it so difficult in Nigeria to do these things? What I'm trying to say. Why is it so difficult to do these things? Because we cannot wait for 200 years to get these things right. Because the same way I'm making call on my phone in Nigeria is the same way the British man is making call on his phone in Britain, even though they had these phones before us. So we cannot wait and see because they started first, we cannot do this. Why not we look for homegrown solutions to what we are doing and then find a way around it to get data. But it seems as if this data is the one that makes everybody to, for instance, the minister that brought about the NIN has been part of the people who were crowdfunding a ransom payment for a friend of theirs. And he promised us that when this NIN comes they are going to use it to track hoodlums, bandits, kidnappers, all those people and all that. And then everybody, every Nigerian wanted it and we did it. We have BVN, we have NIN. You go to the passport office, you still have to do one or two things and all that. It doesn't seem as if we are deliberate about gathering our data, having a data bank that will help us track things. In fact, yesterday it was on the news that the security people are saying that they are not able to track criminals because they don't have gadgets in Nigeria, a very rich country. So we just wonder why is it so difficult to have this data and when we have the data, why is it so difficult to use the data for the purpose for which they should be used? Thank you. There is no way we will discuss and be patriotic without looking into our domestic issues. First, every minister of the federal government of Nigeria needs to know that his allegiance is to the constitution and to the country, not to his or her tribe or geopolitical zones. And that's why in so many fora, I have made few calls that we should remove the state group. I'm from Akwaibom state, I'm from Karno state, I'm from Ogun state. That's the constitution that should not allow that. If you are born on this land, you are Nigerian first and nothing more. And the zone, six geopolitical zones should be expunged from the constitution so that everybody occupying any appointment in the state of the federal government would know that first is from Nigeria. Is that in the constitution, the six geopolitical zones? That's of patriotism. Are the six geopolitical zones in the constitution or is just a function of convenience?  There is nothing like six geopolitical zones. Everybody is in Nigeria. The sense of patriotism will naturally increase. If I am the minister of communication, the first thing my family or my ethnic line will call me is that I should increase, or I should increase the data of the North West. If another one from the South South comes, the ethnic group, the others will be calling him to further increase the data or reduce the data of others to economic gain and government benefit. So these are the internal issues that we are having in terms of data gathering.  He's more of, you know, a tribe agenda. How can a security company, a security apparatus of this country says that somebody make a pocket, you kidnapped someone and you made a call for a ransom. And the security agency could not track where that call was made from and who is making that call. That's absurd. You can have the calls here. You can get in here. If you make any call, the security officer will know the time, the location, the house number, the street number. You made that call. So these are our home internal issues that I'm calling on the federal government and the minister of communication of Boswell Tijani to look into. This is not a tribal issue. It's a national security issue that must look into. So that people will not just come up on their coffee table and around calls and keep us and dish out any number for us without evidential, statistic, you know, proving or evidence on the table. So these are the discussions. So the minister you referenced on was a brilliant guy, but he lost it when he applied tribal sentiment on major national issue. That is where we are today. However, the government must continue. The new minister must ensure that the data analysis of this country and the data garden of this country is done nationally, not by tribe. The new minister is from my state. It's on the southwest Nigeria. The last one is from the north central, not east. So if anybody is doing what they need to do, so we must, you know, if anybody is near to the Constitution, we will go far over the years. But I'm telling you, to get an accurate data in Nigeria will take us nothing less than 30 years. So we need to amend the Constitution to fit into, you know, the nationhood and, you know, the patriotism of all Nigerians, you know, Nigerians to be loyal to their country and stop saying I am from the southwest and from the east and from the west and from the north. We need to be a Nigerian force. What happens, I'm telling you, any minister that comes into office will ensure that those data are for Nigerians, not for its tribe. Okay. Just finally, if you were to advise the president on the way to go in fighting corruption in Nigeria, what are some of the things, the pointers that you will give to him, apart from what you think that he is doing right now? Kudos to Mr. President, yes, he's making a very fantastic effort to ensure that we reduce, you know, the escape of, you know, our scarce resources. For instance, I'm able to digest what he did with NMPC by moving the Kudor payment platform to CBN. That's a fantastic one. So we need to know how much is coming into the country and forming itself. So any payment for Kudor should go directly to CBN, not NMPC. Also, in terms of taxes, so my dear brother, Mr. Isiakai, is doing fantastically well, you know, trying to harmonize and close the loop so in terms of collection of taxes and revenue for the government. Also, I would suggest to the president that most of the MBAs and agencies of government, you know, the payment platform should be rigorously monitored by the anti-craft agencies and, you know, coordinate the central payment platform for all of them so that it will not be easy for anybody to siphon their scarce resources. And also I would advise the, you know, the ICPC and the ESCC to do more on what they call, you know, investment investigation.   And I'm appreciative that most of the investigators have been investigated right now because some of these people that they're investigating are offering them, or, you know, a month that they could not even gather in 35 years in service, so most of them are compromised.  So I showed you should continue on this path. It must be able to determine those people who have plugged this country into this economic calamity. You can imagine a dollar to a nera. It's 1500 nera, 1400 nera. So where are we? People are crying, people are suffering, masses are bleeding, bleeding so bad. So we need to assure you, we need Mr. President to continue on this path and reduce the economic calamity of this country. So I will encourage them to do more, fund the ESCC, ICPC has me do some, not me doing much. So we need to know what their challenges are. So the National Security Advisor should come up with other policies that will curb corruption in our country. Every country has their own problem. Thank you so much Dr. Shinowo for your thoughts on the matter. Well, we thank God for small messes, no matter how little the steps maybe, we'll still applaud the government that we are making progress and we hope that the progress will be more in the coming years. Thank you for being a part of our program this morning. It's Dr. Ibrahi Moschinovo, member APC Presidential Campaign Council in 2014, 2019 and 2023. He was talking about the fact that Nigeria is now around 140 feet in the Corruption Perception Index and this eventually is where we're wrapping up the show this morning. I would like to thank you for your time staying with us still at this moment. Let's do it again tomorrow. My name is Nyangu. Thank you. Bye for now.


Hi everyone, Joe for jaskiescasebrakes.com coming at you with 21-22 Panini Donneress Optic Basketball four box picker team number 15 All-card ship a lot of great stuff in here big. Thanks to this group for making it happen Appreciate it. Thanks for hanging with me on a Sunday Week one of the NFL Eric with that last spot mojo star next to his name 70% of the time last ball mojo hits 100% of time and these remember I marked those with X This is the final The final four boxes of this case, right? I don't think I have any more in here So the next break the next four box break is loaded up and that is going to be from a fresh case Obviously looking for all the rated rookie cards and parallels Some of those parallels sometimes do better than than autographs and it's a good time start You know basketball training camp is not too far away So it's a it's a really good time to get into the basketball action. Ladies and gentlemen And as the as the months go on We'll start to see more and more NBA releases. There'll be more interest in the NBA Which is also going to drive secondary market prices, hopefully So we're getting to an excellent part of the sports calendar playoff baseball Basketball football hockey soccer world cup NASCAR playoffs Actually, who won the When the NASCAR race today For you NASCAR comm I will disable my ad blocker. I'm Bubba Wallace with a W Nice good for him. Good luck everybody. I've got a Jalen Johnson rated rookie hollow and a Jamal Murray 149 Lime and green to 149 That's for Denver. That'll be for Darren. We've got a orange LeBron James 59 out of 199 nice one for my Lakers That'll be for Sean Maddock who won the Lakers in the team random the filler that we did And we've got a rated rookie Josh Giddy. It'll be for Eric and okay see If you can find a hollow or a low-numbered car, that'd be really awesome PJ Warren Should be one autograph in here And we'll do a left-right randomizers for these and Mono Ginobili is our autograph nice 83 out of 99 optographs You know the crowd's happy about this is gonna go to Darren Porter With the spurs the Porter house take 83 out of 99 on that Mono Ginobili got a Scotty Barnes rated rookie card your your reigning MVP Adam Kelly got the Raptors in the filler and We've got a bogdan bogdan of it 40 out of 99. That'll be for Darren and the Atlanta Hawks 40 I'm a man. I'm 40 you want to go after someone go after me. I'm a man. I'm 40 one of my favorite press conference coach quotes Well, let's take a look around the NFL. Let's do a little whip around here Texans We're cruising I thought I was thinking I was gonna come in here and be like oh man is how much how much is Davis Mills The stock rising after all this but then the Colts there's Texans go at 17 points in the fourth quarter To the Colts nobody could score an OT and so they tie 20 to 20 I think a last-minute field goal. Yeah, KD York drilling a 58 yard field goal to ruin Baker Mayfields day Browns beat the Panthers 26-24 Panthers are quiet until the fourth quarter And then a late interception puts the Jaguars away commanders Starts the season with a win 28 to 22 But Jaguars looking lively. I like that. I think it's gonna be a nice season for Trevor Lawrence Not so nice for the Jets who are playing with Joe Flacco Ravens beat the Jets 24 to 9 but you can't really judge that team until until we got Zach Wilson healthy, so get well soon Zach Dolphins beat the Patriots 20 to 7 Two is looking pretty good and Eagles Kind of staved off a furious comeback from the Lions Lions scoring 14 points in the fourth quarter, but still fell a field goal short Eagles won 38 35 Steelers bangles game was a was a bit of a wild one That went to OT and Then the Steelers won it in an OT field goal Bangles had a couple chances to put it away. There's Alperin sangoon 13 out of 99 octagraphs rookie auto for the Rockets Adam Kelly But I think they're long snap. It was that the bangles I think their long snapper got hurt and So there were just a couple weird snapped couple wheel weird holds that kind of cost in that game unfortunately Here's a hollow LeBron James For the Lakers that'll be for Sean Maddick and another rated rookie Josh giddy for Eric and the Thunder Victor Oladipo to 199 that'll be for the heat that'll be for Sam This chair on par is not having any of it Must have dinner reservations and a Denny Avigia two out of 39 That is for Kevin in the Wizards About that I thought that was gonna be a one-of-one for a second and a giant in Kaminga rated rookie hollow Sean Maddick with the Warriors Adam saying here come the overconfident New York football giant fans That's part of what I love about week one Adam the over reactions I'm assuming my raiders will be going 0 and 17 this season Their defense will never improve throughout the course of the season. They'll never figure out offensive line issues Derek Carr won't knock off the rust from not playing a single Preseason series Scotty Barnes for Adam Kelly and the Raptors said eat Bay Going to Tibo and the Warriors nice to 79. We've got a red kawaii Leonard to 99 Clippers seems gonna be scary if they stay healthy. There's a Jalen greens the rookies For the Rockets Clippers that'll be for Woon and Next box Let's keep on with the scores Bears in a in a Classic football day and a rainy day it's older field. They're not gonna have those two often once they get that new stadium build but Rainy day in Chicago Bears beat the Niners 19 to 10 Falcons man poor Falcons fans they Falcons gave it away late Allowing the Saints scored 17 points in the fourth quarter Saints beat the Beat the Falcons 27 to 26 Charges be my raiders 24 to 19 a lot of turnovers for the Lot of un kind of uncharacteristic turnovers from Derek Carr Sure part of that for us maybe a little over eagerness to To use all his weapons. He might need to take a deep breath a little bit chiefs rock the Cardinals 44 to 21 looks like Looks like the chiefs are gonna do just fine without a Chiefs are gonna do just fine without a Tyree kill. Let's pose and Vikings beat the Panthers or Packers that is 23 to 7 Logan our resident Packers fan and seriously a little worried about the Packers They did not play out only one touchdown for them You know Aaron Rodgers and that receiving court and they need to get on that same page pretty quickly And the Giants beat the Titans 21 to 20 People were saying say come Barclay looks like he's back. Yeah 18 carries 164 yards and a touchdown with a long of us with a he broke off a 68 yard one run Wow And all Daniel Jones had to do Was make 17 of 21 passes for 188 yards to touchdowns just one I and T that's fine You don't want you don't want him throwing more than more than 20 25 times a game. That's good And was there a shanked field goal to? but hey This is a big crossroads year for Daniel Jones trying to figure out whether they want to keep extend him keep him or Or move on from him. So he's big audition for him this year. Glad say cons healthy though another Jonathan Kaminga hollow That's for Shawn Matic and the Warriors. You have a nice season last year I know this is a basketball break, but obviously we're in week one of the season. So there's a lot a lot of Lot of a NFL to talk about here's a Jalen Green rated rookie for Adam in the Rockets What what sort of young quarterback? Right, or I guess just any quarterback what quarterback has raised their stock today. I guess maybe young corolli What young quarterback razor stock today? No one. I don't know Jalen Hertz 243 yards no touchdowns no passing touchdowns, but he rushed for 90 yards had a TD Trevor Lawrence did okay 275 yards TD interception. Yeah to a maybe Baker Mayfield didn't look too bad Terry Rose here at 26 out of 79 Yeah, Justin Fields made some plays with that weather kind of hard to judge that game I thought because of their because of all the weather issues And we've got an Aaron Wiggins 12 out of 49 rated rookie autograph I was hoping it would be his teammate Eric Eric with last fought mojo strikes again Joe Christian saying gotta do them until week five or six. No No, Joe. This this is week one overreactions. We do this every season. We got to overreact There's Evan Mobley for the Cavs Overreact with us Jason Jaspie Jalen Jalen Hertz MVP right. Oh, yeah, I flipped over Diego, yeah real sloppy game for Derek Carr real sloppy game for him. Yeah 29 out of 39 Yacob Pearl Darren with the spurs. Yeah Raiders going 0 and 17 Derek Carr is not the guy He's gonna have 15 touchdown passes to 40 interceptions this year Yeah, I'm sure a lot of a lot of Raider Nation is gonna be saying this day. See Derek Carr is not the guy Yeah, let's overreact Aaron Rodgers Gonna retire by week three Yeah, Joe Burrow a little sloppy sloppy day for him, too That Steelers defense a little bit better than we thought but Sad news sad time for the Steelers TJ Watt apparently has suffered a torn pectoral muscle I don't know. I don't know how long that takes but Man Jason. I was just saying that Falcons fans I mean I feel for them Just another late late game collapse Mariola did look good though Ran around took some hits looked healthy. Yeah, Burrow had five turnovers and Matt Jones Back lock back injury. I think they took x-rays even And we got out of us up 30 love Couple points away From winning the US Open The last major tennis event of the year the last Grand Slam And he's on serve to he's up 5-3 Jason Jaspy. Do you think that the umpire the chair umpire here at the US Open has dinner reservations? Because he's really not letting the crowd kind of cheer. He's like in a rush. Oh Into the net Come on. I'll grow up. We're feeling it Pressure got to him just that moment there. Got a John Morant 45 out of 99 40 15. This could be it Yeah, Diego's overreacting mayors go on 17 get CJ's truth from oil state Super Bowl 2023 That's right Victor Yeah, it turns out AJ Brown still really good, there's Luca to 149 Kevin and my fancy team two QBs burrow car ouch Over hit that one I'll cut off Here's Trey Murphy the third Pelicans that'll be The last auto Kihun with New Orleans Speaking of New Orleans New Orleans and Atlanta good game between the former number one and number two picks better than I expected it to be That's right. That's former number one and two. I kind of forgot about that. That was a fun matchup There's Franz Wagner rated rookie hollow Kai Jones rated rookie orange to 199 That's gonna be for Brian Watford and Charlotte and there it is. I'll cut off is your US Open men's champion You can't believe it. This is for the Orlando Magic That'll be for Adam With that hollow another Josh Giddy For okc Here's a Brynn Forbes to 59 Yeah, only 19 years old Crazy he wants to get to his box. He's climbing into the grandstands and a Scotty Barnes right back here for Adam Kelly Jason did you see Ega Schweitech's match yesterday that crowd on her ESPN interview huge crowd Just backing them up backing her up. That's pretty amazing There's the future right there. She's only like 21 and this kid's only 19 and all right Nice break. We got a left-right randomizer once again We got another four box break in the store right now jasky's case race comm and that's from a fresh case Let's do the left-right randomizer here and let's roll it and randomize it Three and a two five times side on top after five one two three Four and fifth and final time. It's gonna go to the left side right there. So left side cards will get those Thanks for watching everybody. I'm Joe. I'll see you next time for the next break. Bye. Bye