few minutes after the official start. So welcome everyone. Thank you for coming. My name is Victor and I'm a software engineer at Red Hat. And today I'll present you the Difficult Project which is a project I'm working on. I'd like to mention also that besides being an engineer in Red Hat, I'm also a PhD student at the Brno University of Technology. I'm working in our Brno office in Czech Republic. And one of my goals or one of the things I'd like to work on is to bring methods and stuff from research and from science into industry into Red Hat. So this is what this project actually implements. So it's kind of bringing research to production code. So what the project is about, it's about what it says, automatically analyzing differences in kernel parameters. So let's dig a bit into what that means. What is our goal? Our goal is to check that a part of the kernel, we are talking about Linux kernel here, part of the kernel behaves the same between two different versions of the kernel. Well, how to do that? First obvious choice would be the traditional one, which is to write tests. So write a bunch of tests that will check whether the behavior of some part that you want to check is the same as the behavior of the new version. This won't work, but unfortunately you can never write as many tests to cover all possible behaviors of, for example, let's say a single function. Writing as many tests to have 100% coverage is nearly impossible, which means that we still can miss some behaviors using just testing. So instead, what we do in this project, we take a different approach and we use so-called static analysis. We compare the source code. We directly look at the source code and compare source code of the kernel versions. And by running this static analysis, we determine if there may be a difference in behavior of, for example, kernel functions. What is the motivation? Why would we want to do this analysis? Well, there are two main reasons, and those are stability and compatibility. For example, the first part, if you have some setting in a kernel, let's say you have a assist control option that you have set to some value. You want to upgrade the kernel to a new version, and you want to know if you can preserve the same setting. And if you preserve the same setting, if it does exactly the same that it did before. In such case, you want to know that the part of the kernel that is setting my influence behaves the same as it did before. Second example is, for example, that Red Hat guarantees something, the stability of something that is called kernel application binary interface, KBI, which is essentially a list of symbols, a list of mostly functions, that Red Hat guarantees to be stable between or across minor versions of Red Hat Enterprise Linux. This is another thing. We guarantee the stability, and we want to know when releasing a new version that these functions are really stable. Let me just set up what we are comparing here. Generally, we will be talking, and I will be talking about comparing functions. So we have a function in Linux kernel, and we want to know if the new implementation of the function, or the function in the new version of the kernel, behaves the same as it did before. As I said, in the previous slide, we also can compare settings, and usually settings in kernel are stored in the mean or are saved as global variables. If you set some setting, it's usually a global variable that gets set to certain value. In such case, when comparing effect of two global variables, we basically take all functions that can use that global variable and compare them pairwise. Here we have a slight advantage, and we don't have to compare whole functions. We only need to compare parts of those functions. The setting, the global variable, can influence. We don't have to look at those part of the functions that the value of the global variable cannot influence in control or data sensor. But basically, we reduce all to comparison functions, so in this talk, I will talk about comparison of functions. So the first obvious method when comparing source code would be, why don't we just use div1? Don't we just take the functions, div them, and see if there is any difference. Well, I have put here two functions. These are actually functions from KBI, and we have here a version of the same function from Rails 7.5 and Rails 7.6. The question is, are these the same? Do these functions have the same effect? Well, if we divs them, div would be empty. So it would say that, yes, they are. By looking at it, they really seem to be equal. They actually are, like, lexicographically, these are equal, as the div would prove. However, this function by web page calls another function, calls called maxSizeOffset, which is not necessarily the same. And in this case, it's really not. The return, or return expression that is returned from this function changes between the two versions. And in the new version, there is some one more function added to the original result, and we choose either the original result or some number of maximum sectors. So in this case, sorry, the problem requires at least checking of the call function. So it's not that easy. We cannot just do this plan if we have to understand the code at least to some extent. We can go even further. Again, the same question. We have two functions. Well, we have a single function, tcp-prop-init, in two different versions, Linux 3.10 and 4.11. And the question is, are these functions the same? Well, if we use div, if we look at it, they are not, because the new function implements some kind of check at the beginning, calls a macro that creates a bug if some unexpected situation happens. However, if you remember, I was talking about comparing kernel options, which are essentially kernel variable or global variables. In this case, what if we wanted to compare these not whole functions, but just functions with respect to the value of the global variable booth size. Let's say user, kernel user, has a possibility to set the value of the variable booth size to some value. We want to know if the value that he has set has the same effect on this particular function in both versions. In this case, if we only compare the functions with respect to the value of booth size, we will find out that they are exactly the same, because the only parts of the code that value of booth size may affect are these, these marked by red, and these two are exactly the same. So again, we see that we have to understand the code to some extent to be able to decide the equality or non-equality. Actually, we could go even further. This is not from kernel. These are two different implementations of C library function str pbrk, from dialypsy and open bsd. And the question again is the same. Are these two functions equal? So do they have the same effect? For every combination, if we send two, same arguments here and two same arguments here, will the result be always be the same? This is not so easy to see by just looking at the functions. We could certainly write some tests, but as I said, it would not cover all possible behaviors, probably. But actually, they are. And actually, there are tools that can prove this. This is exactly where science comes into play. And yeah, there are tools based on quite advanced scientific formal methods that can prove that these two functions are the same. They have exactly the same behavior for every possible combination of arguments. So in this case, the problem requires quite a deep understanding of the code. So if you want to build something like this, or a tool that does this automatically, we need a tool to understand the code. So how do we do it? Well, as we already said, using Div is not an option. It's not efficient. We could analyze the C code, yeah. That's what we're essentially doing. But analyzing C code directly would be quite impractical, because we would have to write a parser. Essentially, we would have to write a compiler to some representation that we would then compare. So yeah, a C code is quite complex. The other part, we could use a compiler and analyze the produced assembly code. We could do that. But there's another problem. It's to unstructured. There's a way too much information lost when compiling into assembly. And it would be quite difficult to compare directly assembly. So the solution is somewhere in the middle. And we use a compiler, but we use a compiler's internal representation. Every compiler, GCC, Clang, etc., traditionally translates the C code into an intermediate representation that they do a bunch of transformations, analysis, etc., and then they compile this into assembly for the processor. So what we do is that we use the compiler internal representation and we analyze it. We compare that. What are the advantages? Well, we get a source code parser for free because we use an off-the-shelf compiler. And still the internal representation is quite a structured representation that contains things such as types, etc. So we have much more information. We also have debugging symbols, etc. In this case, we use Clang or LLVM. So we don't use GCC. We use the default choice to compile a kernel. We use LLVM instead. Why do we do that? There are multiple benefits of using LLVM over GCC. The first one is it has quite well-structured and human-readable internal representation. When we talk about internal representation, we usually say it as LLVM IR. So when I say IR, it's the internal representation of LLVM. Here we have an example. There's a function that computes the absolute value of X. And here's the code transformed into LLVM IR. There are tools that enable you to visualize the code quite nicely. So it's very critical when debugging, when finding the problems, etc. Also, LLVM has quite a nice infrastructure containing many useful analysis and code transformations that are already built in. So we can use those. We don't have to write our own transformations of the code that we want to use because a lot of them are already built into LLVM. Also, it has quite a nice API. And last but not least, there's already a number of static analyzers that are built over LLVM. Both commercial ones, ones running some analyzers that are running on production code, also there are research or science tools that run over LLVM and implement advanced formulas, etc. So this is another advantage that we can build or we can use other's work we don't have to write in when we'll. So now let's get into how DiffCamp does the analysis. We do it in two phases. The first phase, so called generate phase, takes a kernel source, takes a list of parameters or KBI symbols or whatever we want to compare, and generates a so-called LLVM snapshot. LLVM snapshot is basically a set of files in LLVM internal representation that contain definitions of functions that we want to compare. Afterwards, in the second phase, we take the snapshot and we run the actual comparison. And the result is, well, either for each function that is in the snapshot or that we want to compare, either the effect of the function semantics or the function is the same or it is not the same. If it's not the same, we also provide an additional info to the user so that he knows where the actual difference is. Right, so generate phase, as I said, takes a source code and parameters and yields an LLVM snapshot. How do we do that? It's basically composed of two small phases. First of all, we need to find in which C source is those of the functions that we are interested in are defined. To this, we can use a well or quite widely used C scope tool, which for a function can give you a source where the function is defined, where the implementation of the function occurs. And afterwards, once we have the source, we compile it into the LLVM IR. To that, we use the client compiler, of course. We do that in such a way that we find a command that would be run by cable. Cable is the internal internal build system. We find a command that would be run by cable to build that file, and we replace GCC by client. This way, we get the same optimizations, the same include libraries, etc. Once we have the LLVM snapshot, we can go comparing. This is a phase that does most of the work. Before the comparison itself, we run a number of simplifications of code transformations that will, let's say, remove all the code that is not relevant for the analysis, and then we'll simplify the code so that it is much easier to be compared later, because the comparison itself is quite a difficult task. It takes some time, so the less code we need to compare, the faster it will be. Afterwards, we run the actual difference. In case the semantic diff says that the functions are equal, we are none. In case it says that they are not, we have to run the difference localization, or we try to find where the difference occurs, and supply to user as much information as possible so that he knows where the difference occurred. Code sim slicing and simplifying. This is a phase, as I said, to simplify the code as much as possible, and one of the main techniques that we are using is so-called code slicing. Code slicing is removing technique for removing all the code that is not relevant for the analysis. I'll get back to the example I showed in the beginning, and we have a function, but we know that we want to compare it or we will analyze it with respect to the value of a variable both size. In this case, we can slice this function so that we only keep those instructions, those commands, that the value of the variable both size can affect. In this case, we can remove these first two lines, basically, because whatever value of both size will be, they will be always executed the same way. In this case, we can slice this code, we can slice out these two first lines, and obtain only this part, which is exactly this. All those commands are affected by the value of the both size, because it either appears in the command or, for example, here, we are testing some field of a variable which is set by calling a function which depends on both size. So there's a transitive dependence. Also, after slicing, we run a bunch of code simplifications, such as, for example, in kernel, you can have functions that are, yeah, you can have functions, function calls, that as an argument have a string which contains an absolute path to that source file. Of course, it will be different from the other one, because you can have the kernel, the two kernels that you are comparing stored in different directories. So we'll remove these or normalize these. We run that code elimination, which removes all the code that is not reachable when executed, because if there is a difference in the code that is not reachable, then we don't care, because it will never be executed, so the difference will never occur, et cetera, et cetera. This shows the advantage of LLVM, because it already has that code elimination pass, constant propagation pass, et cetera. Afterwards, we run the diff itself. The diff itself is, again, leveraging on LLVM infrastructure, and we are using an LLVM component called function comparator, which is a component that goes instruction by instruction and compares them for equality. So this basically does syntactic equality or syntactic diff. Thanks to using LLVM IR instead of C, we already can handle stuff like, for example, variable renaming. LLVM IR does not use the original variable names, so it just checks whether the IR, IR in LLVM is a control flow graph. It's a graph of instructions and control flow edges. So it just checks whether the graph has the same structure, so it doesn't care about the names of the variables. We extend this comparator by handling changes or by identifying patterns that we know that are syntactically different, but have the same semantics, such as, for example, changes in structure layout that preserve semantics, or, for example, moving code into functions. You have a function that calls some code, and in the new version of the function, you take that code, put it into another function, and call it. This is syntactically different, but if you analyze it correctly, you will find out that it does actually the same, so we can handle these kinds of situations. But more importantly, the last, I would say that the last step is even more important than the previous one, because it's nice to find out that the functions are equal or not. But if you say to the user, hey, these two functions are not equal. Well, he won't be very happy because, well, it's nice to know that they are not equal, but how does he know where a difference occurs, and so on? So this is one of, I would say, the most important component, and it provides the user information about the found difference. What we can currently find is we find a symbol in which the difference occurs. This is not necessarily the symbol that we are originally comparing, right? So we are comparing two functions, but the difference can be in some cold function. Moreover, it's not necessarily in a function, it can be in a macro, it can be in an inline assembly code. We can identify all of these. Next, we determine where the symbol definition is, well, let's say physically, is located in the source file. So we get the name of the source file and the line in which the different symbol is defined. Then we get a program path from the analyzed symbol to the different symbol. We just give a plain call stack where each line contains a function call with a company with a filename and a line number. I will show these in a demo in a while. And at the end, finally, we get the actual difference. So we take the different functions and we return, we run them through a diff tool and we return the result. Just to mention, this, all this information are retrieved or is retrieved for either from debugging symbols. And also, we do an additional analysis of the C code, because for example, macros are lost, usage of macros is lost during compilation. So we analyze C code directly. Again, using debugging symbols so that we know which parts we have to analyze. And this way we can combine, for example, differences in macros, etc. Now, this is a part that, or before showing the demo, I would like to show one more thing. And the question is, can we do more? Can we really analyze? If you remember, in the beginning, I showed these two implementations of C library function that were completely syntactically different, but they were semantically the same. Can we do this here? Do we support such a thing? Yes, we do. We have an optional or experimental step that is called advanced semantic diff and that can really do this. This is based on using tools that use full methods to prove that two programs are semantically equal. We use one such tool called LRF. It's a tool developed by some researchers at a university in Karlsruhe, Germany. We found this tool and we use it because it operates over LLVM. So it's quite simple for us to use it. We just take the LLVM IR files that we compiled and feed them to the tool, and it will give us the result. So the tool is not written by us, but I wanted to show you that this is the science part of the talk, and I wanted to show you that there are really methods how to find that two programs are semantically equal. How this is done? Well, especially in this tool, the compared programs are translated into a logical formula. So we take the program and translate it into a logical formula, which expresses the effect of the program in terms of logical variables. Afterwards, we use a tool for solving logical formulae. These tools are called SMT solvers. You may know, for example, Z3. It's one of the most known ones. And we ask it a question. Is there an input I so that executing the first program with this input yields a different result than executing the second program with the same input? In case the tool tells us that, yes, there is such an input, then we know that programs are not equal. Moreover, it gives us so-called counter example, which means that it gives us exactly that input. So we can maybe, or we could potentially parse it, analyze it, and provide the user more information. In case it says no, there is no such input, then we are sure that the programs are equal, because there is no such input that the effect of the functions would be different. Here, by input, it's not necessarily argument, only the arguments, it can be a state of the stack or state of the heap. Also, the result is not necessarily only the result, the return value of the function. It can be, for example, against state of the heap. But this way, we can prove, really prove, soundly prove that two functions are semantically equivalent. Okay, let's get into demo. I will show you short demo on how this actually works. So we will compare the function that we have seen in the beginning. And first of all, we need to create a list of functions that we want to compare. In this case, we only are comparing a single function. So I will create a file, which will contain the name of the function, bio at page. Yeah, I will store it in some file, can be demo. Right. Now, as the next part, we will generate a snapshot, an LLVM snapshot that will contain the LLVM files that contain definition of this function. So let's run this camp with the generate command. And first of all, we specify which kernel we want to compare. So I have this in kernel Linux. Yeah, this is the version of kernel for Rails 75. Next, we specify where we want to store the snapshot. So a bit larger. Is it better? Mm-hmm. Can you see? Okay, cool. Yeah, and we say which file we are actually comparing, which file contains the functions that we are actually comparing. This camp says that it has found one function in the file and that the definition of the function can be found in the file fs slash bio dot c, which was compiled into a file fs slash bio LL. Now we do the same for the other kernel, because we always have to compare two versions. So we take a version of the following of the following rail version. So the first one, the first one was rail 75. This will be rail 76. So let's store it into a snapshot slash 76. Yeah, we take the same list of functions. Again, it was compiled into the same thing. And now let's run the comparison. So let's run this camp in compare mode, specifying snapshots. So first one is rail 75. Second one is rail 76. And let's tell him that we want to show if any is found. Yeah, this is the result. There is an output, which means there is a difference. And this tells us everything that we found out about the difference. First of all, what is different is this is this symbol. So we are comparing a symbol bio at page, which is different. Where the difference occurs, the difference occurs in a function called BLK max size offset. In the beginning, I'll show you that this was exactly the function that contained the difference. Here are call stacks on how to get from this symbol from the compared one to the to the symbol to the different one in both kernels. So in the first kernel, this function is called at fs bio C in line 816. The same function is in the second kernel called at file at line 818 and then follows the actual difference, which you can see is exactly what we have seen at the beginning. So the return value or the return expression changed. Here is the minty introduced. Another thing besides comparing plain functions, what we see that we support is comparing this control options. So kernel options that you can you can set on the running kernel. Again, we will create a file with a list of functions or list of options now that we want to compare. In this case, it will be just one option, which is called kernel set latency NS and we will save it in a syscontrol demo. And we generated a snapshot. So let's generate a snapshot. Now we say that we are working with syscontrol parameters. Default behavior is comparing functions. Yeah, let's take kernel for Linux rail 76 and story into rail 76 dash syscontrol and yeah, let's specify the file. Good. Now the output is a bit more verbose because we are now comparing an option. This is a kernel option that a user can specify. This option can affect six functions in total. The first one is a procedure handle functions, which is a function which is triggered once the or when this setting or value of the setting changes. And the rest five are functions that are using a data variable, which is set data variable syscontrol cad latency, which is set to the value of the setting that the user sets. So this is the list of functions that this setting can affect in kernel for rail 76. We do the same for rail 77, which is the newest rail seven kernel. Kernel, we store it in a snapshot rail 77 syscontrol. Yeah, let's take the same file. It will give us the same list of functions. And now when we run compare, it will compare these functions per wide. So it will compare procedure procedure handle functions, then it will compare these two functions, these two, et cetera, et cetera. Let's run the compare just quickly. Compare six, seven, six, seven, seven. And the result will be empty, which means that all of these functions are semantically equal. At the end, I would like to show you some of our experiments or I would like to show you that we actually ran this on whole kernels in redhead. And these are the results. So we compared versions of kernel for rail 74 up to rail 77. We always compared two sex story versions. And we also compared 80 with 81 beta, which are the new rail eight kernels. What do you can see here? Let's take an example of the 802, 81 beta. These two kernels have 471 KBI symbols in common. So there's a list of KBI symbols that we guarantee to be stable. And there's 471 of them out of these 80%. So something around 380 are proof to be equal. There are 67 that are different. And there's some number that we still cannot decide. The method that we are using is generally comparing functions for semantic equality is an undecidable problem from the computation theory point of view. It's undecidable. However, a lot of it can be decided. A lot of it can be found as as you can see, but still there's a number of unknown results, which we are working on to to remove. However, out of the 77 functions that are not equal or 67 KBI symbols, they contain 80 unique differences. A unique difference means that a single KBI symbol can contain multiple differences. It can come multiple functions that are actually different. And also one difference can affect multiple KBI symbols. But there are 80 unique differences out of which 73 occur in a function, seven of them occur in a macro. The last column, potential false positives, gives the number of differences that we reported that there is a difference. However, we did not find any syntactical difference anywhere that would be related to it. So we think that probably this is a false positive. This is probably an error of our tool. And yeah, we are working on identifying those and removing them. So as you can see, it's still work in progress. We still have some areas where we would like to improve. However, there's quite a lot of things that we can already prove and quite a lot of differences that we can already find. Yeah, that's it. That's everything from my side. Thank you for listening. If you wanted to try the tool, feel free to for clone whatever, do with our repo. If you have any feedback, you can open issue reports. You can even fix them and send PRs. We'll be more than happy. For better usage, we are preparing an RPM package which should be ready, hopefully, in the following weeks. Okay, that's it. Thank you for the attention. And if you have any questions, feel free to ask. Oh yes, so yeah, I can repeat the question if you want to. So the question is if this can be used for different projects than just kernel. The answer is technically, yes, why not? Currently, we only support kernel because we want to use it for that. So you would have to at least write or implement the part that translates your source code into LLVM IR. And then you can use our infrastructure. So technically, it's not a problem. Technically, you can compare anything that is compilable into LLVM IR, which means that it's not only C, it's also C++, it's Rust, which is naturally compiled. We just found that Go can be compiled. Basically, since LLVM is quite expanding a lot, I think that a lot of, well, there are works that compile almost every procedural language into LLVM. So we are technically, you can do that. We just, right now, support kernel. However, if you had the frontend to compile your project into LLVM IR, why not? It could be used. Yes? I guess we have to use the mic. Yeah, so this tool from Carlos Rulli, which I forget the name already, is it fully automatic? Sorry, I didn't hear. The formal method part that actually analyzes the semantics of the methods, is that fully automatic? Yes. This is all fully automatic, as you have seen. Also, if we plugged in the formal methods part, yes, it is fully automatic. There is no requirement for any hand proofs or so. Does the optimization level mess with this at all? Is that something you guys have experimented with? What level of optimization you use with LLVM coming out in the code that it spits out? Does that cause any problems with the diffing? Or is that, do you understand what I'm saying? Yeah. I guess what I'm asking is, does that come in at the IR phase? I guess I'm not quite sure what phase in the compile process you're coming in. So we're coming in, we're on the parser, we get the LLVM IR, so it's the internal representation. And before running the optimizations and all of this by compiler, that's where we get in. Okay, so there's no optimization phase that happens just on the IR? No. Okay, cool. We control everything, or we control our optimizations by hand, so we explicitly say what we want to run and we control how the IR is transformed, that's right, then we analyze it. So you could turn that on if you wanted? Yes. Okay, cool, yeah. Thank you. Yeah, currently we're running no optimization. Only those that we choose to run, such as dead code elimination. What are the next steps or future plans? Okay, so the first one is written here, the RPM package. We would like the kernel developers to start using this experiment thing with the tool, we'll wait for their feedback. So currently the next step, I would say, is let's see what users, what are the most known problems or what are the problems that users will have, try to fix those. Besides that, we are trying to work on a few advanced stuff such as simplifying the LLVM IR so that we can run the formal method tools easier because the formal method tools do not scale, the problem of research tools in general, they do not scale on large projects. So we want to simplify the code as much as possible so that we can maybe use these tools for larger code bases. So that's one of the things that we are thinking on right now. So there's another question. Are there any plans to install this in a continuous integration pipeline? Yeah, thanks for the question, good one. Yes, there. I'm discussing with guys who run the or who maintain the KBI list. And yeah, one of the possible usages is to run this in the kernel CI and to get the output back to the maintainers of individual KBI symbols in case that something breaks between, or that there is a difference between two versions of the kernel. So yes, there are plans to do that. I guess that's it. Thank you for coming. Thank you for listening.


Hello and welcome to this session in which we will discuss testing and change management. Testing is a crucial element, is an important element in a concept that we called a change management. Now we covered change management in the prior session. What is a change management? It's a process by which an organization adapt a new IT system or a software, new strategies, processes, technologies or structures. Now we're going to be focusing more on IT system and but the idea is change management is when you change from a current state to a new state and what we do, we're going to do some testing and what is the purpose of the testing in this process? So the purpose of testing and change management is to make sure that the changes that we are implementing are effective, efficient, minimal disruption to the organization and there are some specific objectives of testing and change management and that will include validate solutions, identify issues and risks, ensure smooth transition especially that you are moving from one state to the other, maintain quality and compliance and monitor performance. Now your CPA review course might show more or less of these objectives. That's fine. What I'm going to do, I'm going to explain each objective separately, give you an example, then give you specific test about this example. Now the test I'm going to be giving are practical tests. Eventually we're going to look at some general testing in a separate recording, testing of systems but in this session I will give you a specific example then how can you test for that specific example. Before we proceed any further, I have a public announcement about my company farhatlectures.com. Farhat accounting lectures is a supplemental educational tool that's going to help you with your CPA exam preparation as well as your accounting courses. My CPA material is aligned with your CPA review course such as Becker, Roger, Wiley, Gleam, Miles. My accounting courses are aligned with your accounting courses broken down by chapter and topics. My resources consist of lectures, multiple choice questions, true-false questions as well as exercises. Go ahead, start your free trial today, no obligation, no credit card required. Starting with validate solutions. Well, validate solution is a type of testing and change management. Well, what does that mean? It's a testing that helps validate that the proposed changes, whatever you proposed, whatever you said we are going to do, are fit for the purpose and meet the identified objective. Well, you said I am going to make the following changes. Well, guess what? Test to make sure that you achieve those objectives. It ensures that the new processes, systems or structure are functional, reliable and efficient. For example, a financial service company decide to update its online banking system for the purpose of improving user experience, enhanced security and add new features. Well, the company's intent include increasing customer satisfaction, improve user experience, reducing security, you want to enhance security and staying competitive in the market. Now, you want to validate that the proposed changes meet those objectives. Well, what you need to do, you need to conduct, perform various tests to ensure the updated system is functional, reliable and efficient. So what could be some examples of testing to support this validation? Well, we have a test that's called functionality test. Now, for example, functionality test is a very general term for testing. So it could be used for any type of testing, but here I'm given it in this context. So the company test, whether the updated system, the updated online banking system, support all required functions such as account balance, checks, funds, transfer, bill payment and statements download. I'm testing to see if it's functionally working as promised. So testers create test cases to create each function focusing on both expected and an expected user input to ensure that the system behave as intended. You could also do what's called a user experience testing. Well, here testers assess the new user interface design, navigation and responsive to ensure it meets customer expectation and provide seamless experience. Simply put, you just tell the users, maybe employees, maybe just people random, just tell them, test the system, see if it's working as expected. This may conduct usability tests with a sample group of customers or maybe customers to gather feedback and identify area for improvement. This is a form of testing. Again, we're going to have, we're going to have specific, these are examples, specific examples. We're going to have a blanket terms for all these examples. Security testing, you always want to do security testing. Well, what for? You perform security testing to perform various security tests to validate that the updated system is resistant to potential cyber threat, unauthorized access, data breaches and denial of service attacks. We talked about all of those when we talked about cyber security. These tests may include penetration system. You want to see if the system can be penetrated, vulnerability scanning. Is it vulnerable to any sorts of attack, secure code reviews to ensure the system complies with the latest security standards. Also, what we can do is we can identify issues and risk. That's the second type of testing to identify issues and risks. Testing enables an organization to identify potential problems, risks and bottlenecks that may arise during the implementation of changes. We want to see if there's, it's going to be any problem when we implement those changes. That's why we do some testing. This allows proactive mitigation measures reducing the likelihood of costly disruption. This way we want to know if there's any issues and risk upfront. So suppose a healthcare organization is implementing a new electronic healthcare record system to streamline patient record, management, improved staff efficiency and enhanced patient care. That's the, that's the purpose of the change. Well, the organization will conduct various tests to identify potential issues and risks that may arise during the implementation. So what type of issues and issues we can test for? Well, let's take a look at some examples. Comparability test. Well, the testers check whether the new electronic healthcare record system is compatible with the organization's existing hardware, existing hardware, software and network infrastructure. Is it compatible? Because that's a risk. If it's not compatible, we need to take care of this upfront. They may discover compatibility issues that could hinder system performance or cause other operational problem. So by identifying those risks early, the organization can take corrective measures such as upgrading hardware or adjusting the network configuration or maybe using a new software system. We don't know. Compliance testing. Well, remember this is electronic, electronic health record. Well, we want to make sure you're in compliance. The organization tests whether the new system has a compliance with relevant regulations such as HIPAA and other data privacy laws, which we talked about in a separate session. During the testing, they might identify potential risks related to non-compliance, which could result in fine legal action and reputation. So identifying these risks, it will enable the organization to implement the necessary changes to the system or internal process system to maintain compliance. You want to test those as early as possible. And compliance, well, it could be used in any other organization. Disaster recovery and continuity testing. The organization here tests the new system to see if it's resilient to potential disasters such as hardware failure, power outage, and cybersecurity. Here they may identify risk related to data loss, prolonged system downtime, which could disrupt patient care and impact the organization reputation. That's important, especially with the health care system. Identifying these risks allowed the organization to develop and implement effective disaster recovery and business continuity plans. Again, we will talk about those in a separate session as well. You want to test to make sure you have a smooth transition because change management is going from one state into another state. From one current state to another current state. So testing helped the organization prepare the organization and its employee for the changes, minimize resistance, promoting a smoother transition. So ensuring smooth transition enables stakeholders, whoever's are involved to understand the impact of the changes and gain confidence in its effectiveness. Suppose an e-commerce company, they're moving to a new order system, new management order system to improve order processing, inventory management and customer service. So how do you want to make sure that the transition is smooth? Well, the company conducts various tests to prepare the organization and its employees for the change. What could be some simple test? Well, training and support material testing. The company developed training material, user guides and tutorial for the new system. While testers and a simple group of employees review these material to ensure they are clear, accurate and comprehensive. So by providing effective training, the company helped employees quickly adapt because now they are familiar. They know the system. They know how to learn it. It minimize resistance. You can have process workflow testing and this works, you know, process workflow testing is a good testing for any system you are implementing. The company tests the new system impact on the organization processes workflows to ensure that the system aligns with the company operational's environment. Here what you're looking for areas that you might need additional adjustments or optimization to ensure smoother transition and minimizing disruption to daily operation. Pilot testing. What is a pilot testing? Well, basically company conduct a pilot, basically a sample deploying to a small group of people. They want you want people to use it, but not everyone. Just a small group of people. This is what pilot testing is. Specific department before before before a full scale rollout. What's Google doing right now is is rolling barred their artificial intelligence to only Google employee. This is basically a pilot pilot testing. The pilot testing allowed the organization to assess the transition process, identify any potential challenges, and this is what Google trying to do and make necessary adjustments before implementing the system and through the entire organization or to the customers to the outside customers. Maintain quality and compliance. Well, what does that mean? Testing help organization maintain quality and regulatory compliance by confirming that the changes meet the necessary requirements and do not compromise the organization performance. And this this is important for companies like a pharmaceutical company that are heavily regulated. Suppose a pharmaceutical company is implementing a new laboratory information management system, LIMS, to improve the efficiency of laboratory processes, data management, and reporting. Well, the company here, the pharmaceutical, they operate in a highly regulated industry and they must maintain a strict quality standard and regulatory compliance. Because you're looking at the fourth or fifth decimal, making sure everything is in compliance. Now, during this, the testing phase, the company ensure that the new system meets the necessary requirement and does not compromise the organization performance. What could be some examples that they can do? Well, quality testing standard. They conduct tests to ensure that the new system established quality standards such as accuracy, consistency in the data, sample tracking, and reporting. They verify that the system can handle the required volume of data, process information without errors, and maintain the quality performance. They want to do regulatory compliance testing. The pharmaceutical company again operates under strict regulation. They might have to comply with the good manufacturing practices, good laboratory practices. They can test all of those. They test the new system to ensure it complies with these regulation, including data integrity, traceability, and auditory requirement. They also verify that the system supports electronic signature, proper access control to maintain compliance with regulation, and other required issues as well. You want to validate the data, data validation and verification. Tests will perform data validation and verification to make sure the accuracy and reliability of the data within the system. They create test cases with both expected and unexpected inputs to see if it works, validating that the system process and store the data correctly and maintain data integrity. Basically, you're testing it to see if it works as expected. A fifth type of testing is monitor performance. The purpose of the testing is monitor performance, and this happens post-implementation. They allow the organization to monitor whether the changes are working as expected and make any necessary adjustment to ensure it meet the original objective. So suppose a telecommunication company, you know, have recently upgraded their infrastructure to support 5G. Well, providing faster internet speed and improved coverage to its customers. That's the whole purpose of the change. Well, after implementing the change, you want to conduct post-implementation testing to monitor to find out whether the performance of the upgraded network is working as expected and make the necessary changes to ensure it continue its meets its objective, which is what? Faster internet speed, improved coverage for the customer, secure network, so on and so forth. Well, what type of test you can perform? Well, you can perform network performance monitoring. So the company will continuously monitor key performance indicator of the upgraded network, such as latency, throughput, and signal strength to make sure it's working properly. They analyze this data to identify any performance issues or area where the network not meeting the expected standard that they set up, allowing them to make adjustments and optimize the network, because the whole purpose is to have a faster network. Customer experience testing. Well, you want to do some testing with the customers. The company conduct tests to assess customer experience, because remember, you wanted to give them the speed. This may involve measuring data speed, testing voice quality, because you want to improve this. Is it working as expected and monitoring video streaming performance, because you promise better service? Is it showing in, for example, video calls? By evaluating customer experience, you can identify issues that may impact the customer satisfaction, and again, make any necessary adjustments. So that's the purpose of the whole testing. You can do what's called load and stress testing, because remember, when it comes to a network, you might have high traffic at some point. You want to simulate high traffic scenarios to test whether the upgraded network can handle the ability. They have a load and stress testing to handle the increased load and demand. You want to analyze this network performance to see if it can handle peak usage period without degrading service quality, because how good is it? If it gets busy, the quality goes down. It's not good, because the purpose is to have high quality network. If any issues are identified, the company may make adjustments to ensure the network can handle the increased demand. So notice, when we do testing, the purpose is to find, that's what you test. When you take a test, when you take the CPA exam, the CMA exam, they want to know whether you know the material or not. So company test a new system, new IT system, to see whether it's working as expected. What is expected? What was the original objective of that software, of that system? Is it meeting its objective? You create tests to make sure it's meeting those objective. Now, once again, I'm going to be having a separate recording about specific system testing, system overall, because what I did here, I gave you specific examples to make the point. But there are certain terms, for example, security testing, functionality testing, performance testing, stress testing, or load testing. Those testing, they apply to any sort of a system. Here, I use them in a specific example, in a specific context, so you understand. But there are many terms that you need to be familiar with, which I will cover separately, and types of testing. But I use these examples here to illustrate the purpose of each test. What should you do now? Go to Farhat Lectures, look at additional MCQs, true, false, exercises, whatever you are studying for, additional lectures that's going to help you improve your performance. Good luck, study hard, and of course, stay safe.


The Appalachian Advantage plan is the simpler, better way to get the phone you actually want instead of paying hundreds of dollars up front.  It's called the Appalachian Advantage and is available at the Appalachian Wireless. During Congressman Hal Rogers' visit to the U.S. 23 Country Music Highway Museum, two local elementary schools presented projects as part of the Community Problem Solving Future Problem Solving Competition. In the Junior Division, State Championship, both Paintsville Elementary and WR Castle advanced to international competition, Superintendent David Gibson commented on the victory. You know, to be able to win our second consecutive state championship, being able to take our young people and they're, as you can tell, they're incredibly intelligent, incredibly driven to be a model of servant leadership for our community and be able to go out and show that it takes compassion, it takes drive, it takes a lot of creative thinking to be able to put these programs together and our kids are going to go onto the international level and be able to represent Eastern Kentucky Appalachian on our school system incredibly well. During the event, Mountaintop had the opportunity to speak with students about their projects and how they impact the community. So this year we learned a little bit more about what goes on in the foster care system and that it's a bigger problem than most people think of. So we decided that we would reach out to local foster care systems in our community and we would donate supplies to them so when children come into the foster care system they have more of the central items they need when getting transported from house to house. Our project is Project Stops, students teaching online personal safety. We're trying to combat cyber bullying and the negative effects it has in our community. So steps we've took to combat, we put stops boxes in all of the classrooms, grades 3rd through 6th and this gives students a way to anonymously report cyber bullying and stuff that's happening inappropriately on the internet. Also included in the presentation was Central Elementary's STLP team who presented their idea for helping drug abuse victims. Our project is a STLP project. We're trying to stop opioid addiction or at least address it. We do this because there's a high amount of percentage in our area of people that do drugs and some people that after recovery if they don't take it seriously they can die of drugs. And lastly with two schools going to internationals for judging, Gibson says he hopes others see that the community is invested in their future. Well the future of Appalachia starts with our schools, it starts in the classrooms, it starts with our kids and being able to put together programs that number one to help our area, help our community first will show our community that we're invested. We want to be here and by putting programs together that kids want to be a part of they will come into our region, come into our schools, come into our community and it's an economic development issue when we start bringing people into our region to come to good schools, to good programs like our CNPS. So what they're doing is a step in the right direction in solving some of the economic problems that we have in the region. From Mountain Top News, I'm Joel Chorjol.


Hello and thanks for joining us on PLOS News Update, I'm Tolu Vain. Victims' voices lead the way. That's this year's theme of the World Day Against Trafficking in Persons. And the United Nations declared July 30 for the celebration in 2013 at the United Nations General Assembly. At this year's celebration in Abuja, the British High Commissioner to Nigeria, Catherine Lange, restated the UK's commitment to helping Nigeria curb human trafficking and other forms of irregular migration problems. Attendees included the International Organization for Migration Chiefs of Mission from Nijai and Nigeria, the French ambassador to Nigeria, Jerome Pascue, and Governor of Edo State, Godwin Obaseki. Visit our YouTube channel and don't forget to hit the notification button so you get notified about fresh news updates.


The public is her by notifying that in keeping with changes in international oil prices and government's application of the modified market partial petroleum pricing mechanism, the retail price of LPG 100 pound cylinder has changed. The retail price of gasoline diesel kerosene LPG 20 and 22 pound cylinders remains unchanged. The price changes take effect from Monday July 12, 2021. Gasoline remains unchanged at $13.95 per gallon. Kerosene remains unchanged at $7 per gallon. Diesel remains unchanged at $13.95 per gallon. The 20 pound cylinder remains unchanged at $31.65 per cylinder. The 22 pound cylinder remains unchanged at $34.81 per cylinder. The 100 pound cylinder increased from $211.31 to $216.35 per cylinder. The public is informed that the next adjustment of the retail price of fuel products will


g inquiries regarding your proposal fellow believer you are suspended from your duties as i've i'm a priest for 30 days i do not intend this as a punishment i take this action out of concern not anger unless you prefer otherwise i intend to lead the rest of the church to believe that you were chosen to take additional time off to grieve the six's death whether you realize that or not you clearly need more time the degree of despair you have expressed is contrary to the core of our faith you are right to say that loss of the six is a tragedy beyond comprehension but we are otothans or tawthans do not despair hope is the beginning of action it lies at the core of every warrior's heart the loss of the six has clearly extinguished your hope and you are unfit to be lead be lead other or tawthans until you reignite it reflect travel do whatever you must do to restore your hope in the power of the fourth to protect the universe when you do we will welcome you back into your position may the fourth be eternal grand i mc priest shawn gran marcus date february 13 2001 from redwood cassidy to glenn marcus shawn regarding regarding regarding regarding regarding regarding inquiries regarding your proposal not the one who's lost hope i'm not the one who wants to lie down and accept what's happened hope is precisely what motivates me to not accept the universe's coming death if there are flaws in my ritual they can be fixed i am open to critique and a light in the prospect that my ritual could be improved i want nothing more than for the odds of its success to be maximized but i must be allowed to perform it the universe will die otherwise some part of you must understand that please let me return hope to all of creation may the seven be eternal i vi mc priest cassidy redwood day february 13 glenn marcus shawn to redwood cassidy regarding regarding regarding regarding regarding regarding inquiries regarding your proposal fellow believer it is not all of creation that has lost hope but you alone i hope you have a productive rest may the fourth be eternal grand i mc priest shawn glenn marcus date march 15 2001 from glenn marcus shawn to redwood cassidy regarding how are you doing fellow believer i'm just emailing to check on you how are you doing did you have a productive rest if there's anything you need my assistance with or would like to discuss i'm here may the fourth be eternal grand i mc priest shawn glenn marcus date march 15 from redwood cassidy to glenn marcus shawn regarding regarding how are you doing i'm doing fine thanks for asking my suspension gave me a lot of time to think i spent a lot of that in prayer working to strengthen my relationship with the fourth you were right to suggest that i've neglected without relationship in the past in favor of the sixth i had forgotten how fierce a protective presence the fourth can be i doubt i will ever truly finish grieving the sixth is a loss but i feel more far more hopeful than i did a month ago and believe i'm ready to return to my duties may the fourth be eternal i vi mc priest cassidy redwood date january 13 2002 from glenn marcus shawn to redwood cassidy regarding your flight fellow believer as you are doubtless aware seven warriors arrived at the winnipeg arthuthan church earlier today with instructions to question you regarding the recent spate spate of disappearances centered on winnipeg despite the fact that morning ritual was ongoing you departed unexpectedly shortly before their arrival i'm sure you know how that looks the rest of the church's leadership is certain of your guilt i alone maintain hope that you might be innocent i want to believe it could be a coincidence the vanishings are centered around you that they began shortly after you were denied or taught them blood for your blasphemous ritual and that they ceased after a number of victims consistent with that what your final ritual required you are the most zealous believer i know i may have brought you into the faith but i have often looked to your further fervor for inspiration i do not want to believe you are capable of abducting and imprisoning hundreds of innocents so you could harvest their unwilling blood if you have not done so if there is some explanation for all of this that leaves your hands spotless please come to my temple in ontario and explain yourself i swear on the name of the fourth i will do everything in my power to prevent you from being wrongly punished if on the other hand things are as they appear then you must likewise surrender yourself to me i know that you are at your core a good person and you know the church will find you no matter how you try to hide please surrender yourself to us so justice may be done swiftly and without unnecessary pain may the fourth be eternal grand daimak priest shon glenn marcus date january 13 2002 from glenn marcus shon to redwood cassidy regarding what have you done your prison has been discovered the scp foundation secured it before our warriors arrived but they watched from nearby as body bags were carried out hundreds of them how could you cassie how could you betray everything we believe in are you that lost in despair why didn't i know you were so far gone this is some terrible relapse or have you been planning this for months feigning recovery while plotting murderous blasphemy against the six and his memory came to betray our faith know that you will answer for this we will track you down anywhere you try to hide and we will visit justice upon you with the fierceness of a dying son may the fourth be eternal grand i'm a priest shon glenn marcus i don't know if you guys notice but i am fucking loving this uh what's good addendum 7046 3 at 100 hours 11 minutes on january 16th cassidy redwood turned herself into a police station in winnipeg upon arrival redwood confessed to the abductions and murders associated with scp 7046 though her confession omitted the anomalous aspects of her crimes embedded spelled i am foundation agents immediately transferred her to site 63 for questioning show interview 7046 dash b all right so you take the doctor i'll keep cassidy sure begin log january 16th 2002 400 hours 59 minutes please introduce yourself i'm cassidy redwood until recently i was the ivy mac priest for the winnipeg ortothan church and you were responsible for the thumb of tragic modifications uh to northlake corrections including the machine inside yep that was me and it was also you who populated the prison with civilians also me why nothing too glamorous i was just trying to save the universe now are you going to do that how well do you know the ortothan religion i'm familiar then you know what happened back in 2000 the death of youan lucin yes a warrior mage of unrivaled knowledge and power one of the wisest and most courageous beings in the universe and one of the few guardians standing between it and an utter annihilation like other warriors before her she died in battle her death left the universe with too little protection i was trying to change that by bringing her back and you hoped to you hoped the human sacrifice you performed would accomplish this i guess i did why did you gather blood in a way so at odds with orthonian teachings well that wasn't exactly my original plan what was your original plan to get the blood from willing ortothans how did you get from that to what you did i guess it started when the sixth died we'd known for weeks something bad was happening she was getting hungrier for blood what do you mean you can use magic to detect the life energy in blood if you do that to an offering that's just been given you can watch the energy drain away as one of the holy seven claims it how quickly they claims it tells claim it tells you how hungry they are it's like you're watching someone eat a plate of food if they aren't that hungry they might take their time with it savor it maybe take bites here and there while they're doing something else if they're hungry they'll eat faster if they're starving they'll shovel it down their throat as fast as they can that's what the six was doing around the end of august offerings that normally take several seconds to consume would disappear in an instant this wasn't the first time we'd seen that it's what happens when the gods are in battle they need blood in the first place because their bodies constantly bleed when their enemies are wounding them they bleed more than usual which makes them need more blood and how often does this happen they're warriors they do battle all the time that's why we didn't think much of it at first we increased our sacrifices incurred and encouraged the flock to direct more to the six but that's all we just thought it was another battle i wish i'd known i didn't give anything to have known which prayer would be the last one there's so much i would have said i didn't though i just said the same prayer i'd said every night for the last 20 years then at 3 a.m i was awoken by a call from shawn he told me that the six had gone from devouring his offerings to ignoring them i didn't believe him until i pricked my finger on my own altar to check he was right the energy just lay there wasted even after seeing that i didn't accept the six was dead there was a conference call the next day that included a lot of the ivy mac priests in canada i was the only one arguing that we should maintain hope that the six was alive i didn't think we should announce anything to the lady and i argued we should continue sacrifices to the six in case she was behaving oddly because she was in a difficult situation i was outvoted the church announced the six's death later that day in order that all sacrifices be directed to the fourth it took me a long time to accept that she was really gone i attended but did not meet the memorial ceremony at my church the next week while everyone else was grieving i held out hope that the six was alive what convinced you otherwise the fact that she kept rejecting sacrifices there could have been a reason to do that for a day or two but not for weeks eventually i had to accept the obvious yoran lucen was dead and that meant the universe was doomed how does that follow there was only one god left alone in a battle that had already claimed six others how long could it be before he fell to or tothins are supposed to be stalwart to never let our hope falter even in the face of incomprehensible tragedy in front of my congregation i spoke and acted as if despite what had happened to all of our comrades the fourth would be eternal i don't know how i said it with a straight face for billions of years or tothins have incessantly wished for our gods to be eternal even as they perished one by one why should the fourth be any different i couldn't just cling to the delusion that everything would work out the fact is without the sixth the fourth isn't going to last much longer and once he dies the universe will too knowing that that everything and everyone around me would soon be devoured by the vortuit was a kind of hell everything i did felt empty nothing i made no one i helped nothing i learned would last long enough to mean anything i asked shawn to give me some time off to process things and he was very understanding i took october and november off it was during that time the idea of resurrecting the sixth first occurred to me it's quite a goal sorry i thought so too i tried to sell myself it was just wishful thinking that i'd be better off moving on but how could i move on how could i just ignore what was going to happen at first i just hoped someone else would do it they're countless or tothin civilizations in the universe most of them larger than primitives like us can imagine i told myself one of them must have the knowledge and resources to bring her back that didn't happen though week after week passed and nothing changed after a few months i realized that if some far off or tothin civilization was going to do it they would have by now that's where a reasonable person would have let it go they would have accepted that if countless galaxies full of super advanced aliens couldn't bring the six back i couldn't either i wasn't reasonable though i was drowning in grief and like anyone who's drowning i grasped at anything i could use to pull myself back up so before i gave up on the idea i decided to work through the problem myself and see what i could come up with told myself i was just trying to prove it was impossible so i could stop thinking about it now it was bullshit though i was hoping to find exactly what i did you found it was possible if you have some if you make some very very generous assumptions and have access to more blood than i had any hope of obtaining yes it should be theoretically be possible to restore enough vitality to the six that he might be able to heal himself the rest of the way with his own magic i should have given up when i saw i'd need a hundred million people to do it but that was still more hope than i'd had since he died so before i abandoned the idea i decided to see if i could find a way to reduce the amount of blood required i pour through every book i own silently begging to find something that could help and eventually i thought i had in fact i thought i'd found several ways of making set my sacrifices more efficient which i could stack on top of each other to decrease the amount of blood i needed to a manageable level i was as ecstatic when i did the calculations with just a few hundred people and a few dozen cows working together for 14 weeks i could bring the six back i took it to the church right away some of what i wanted to do was against the normal rules and some of my sources were unsavory but i thought they would see the necessity of the project and be willing to look past that but they weren't even if they had been willing oops even if they had been willing to look past the animal blood they thought my ritual wouldn't work i guess they've been vindicated on that front maybe i should have known i'm not some amateur mage every reason they gave her why it wouldn't work was something i knew about and thought i'd solved looking back i feel like some part of me knew better but that's probably just hindsight at the time i thought my doubts were just anxiety about the grandeur of what i was attempting i was surprised when leadership turned me down what did they do and what did you do after they did first i tried to find ways around their decision strictly speaking the refusal to dedicate any resources to my project just meant i couldn't order my congregation to assist me with my ritual i could still try to find 515 other or tophans who would do it as a personal favor to me i started asking around several of my friends agreed to help but most people were confused as to why such an important project were being managed by me and not church leadership some of them asked Sean about it and he was mad that i tried to go behind his back he told me to abandon any attempt to carry out the ritual i told him i would but i didn't i just started to make sure i was alone with people when i asked them and i wiped their memory if they said no got a few more co-conspirators that way i wasn't the only one who was worried about whether the fourth would be able to defend the universe on her own for the most part though i lost people once i told them my plan had to be secret because church leadership had rejected it people assumed leadership knew better than i did where did that leave you depressed hopeless sure the universe was going to be destroyed because of the church's decision then one day i was while i was driving home from the ritual i had a thought that reignited my hope the church aren't the only people in the world every day i was surrounded by people who thanks to you and yours had been denied access to anything supernatural their world is as blank and meaningless as mine felt devoid of real magic and true gods to them problems that i could wish away in an instant are life-ruining are life-ending ending crises ones that they would do anything to get out of i decided i'd find people outside the veil who desperately needed something only magic could give them and offer them those things in exchange for their blood that's in contrast with your church's general policy regarding the veil that's actually debatable we're allowed to approach individuals and try to bring them to the faith and once we've begun that process with someone we can do magic in front of them i certainly planned on trying to convert my clients once i was done with my rituals so technically i was allowed to tell them what i needed to tell them i picked people who i thought be able to keep a secret a lot of them were in professions that involve secrecy of some kind lawyers doctors police priests that kind of thing and of course i told all of them to keep quiet about their interactions with me i hope that would be enough to offer them healing magic mostly most of them were terminally ill or had family who are if you have the kinds of skills i have and are willing to burn through your life savings buying ritual components you can heal just about anything are you able to get all the volunteers you needed no i got close i would have been able to if it were just a matter of finding people who would take the deal not the process of approaching someone explaining everything to them and persuading them to accept my offer took time and things went wrong before i was able to get the people i needed how did they go wrong they couldn't keep their mouth shut actually that's not fair most of them could it's just that most wasn't enough several of them recommended my miracle working services to desperate people they knew that was annoying but on its own it was manageable i even recruited a few of those people however things sort of go downhill when one of them mentioned me online he tried to be vague he just said that people with no other option should go to winnipeg to find a miracle worker i doubt anyone on the wrong side of the veil believed it but you noticed it or at least i assumed it was you at the time you i assume sent someone posing as a paranormal investigator to visit the man who'd made that most footnote this description matches actions undertaken by agent redacted redacted on june 10th 2001 fortunately i'd anticipated that you might show up and i'd already coached him on what to say muted again this is a long one i was like trying to find my place i scrolled down to see where it was uh what did you tell them to say you seem to buy it at least for the moment after that incident i had stern talks with everyone i tried to stress that there were people who wouldn't like what i was doing and that drawing your attention would keep me from helping them it was almost enough another one of my clients was a woman whose son was dying of leukemia the doctors had given him less than a year to live and he hadn't taken his prognosis well but she wanted to see her son happy again so she told him that i was going to heal him knowledge of my existence spread to his entire support group the next time they met his mother called me as soon as she learned and i went into a mad dash to keep everyone quiet by bringing the rest of the kids families in on my deal i got to all of them in time barely fortunately i had something to offer them exchange for their silence looking back i had the situation handled at that point maybe if i kept on course everything would have been would have turned out a lot better at the time though that incident made me think i wouldn't be able to keep my recruits quiet for long enough to complete my ritual to keep anything like that from happening again i added a clause to my deal that required everyone to move to a secluded location where they'd be cut off from anyone they could gossip to your prison yeah i didn't use a prison because i wanted to keep people there against their will i just used the nearest abandoned building that could house hundreds of people i made it as comfortable as i could my clients weren't happy about this alteration in my deal but none of them were in any position to refuse i should have had that in my deal from the beginning maybe that would have made things turn out better unfortunately i didn't think about until you take a notice of me once and you hadn't forgotten about the man who made that post when he with a bunch of other people near Winnipeg who were terminally ill or had residents who were suddenly disappeared to an undisclosed location for several weeks you noticed you arrived in force and started combing the Winnipeg area i knew you would find my prison there's no way you wouldn't check a building so well suited to what i was doing my only option was to make it look normal by the time you got there fortunately i hadn't assembled my machine but i still had to move hundreds of people out of my prison i had no other safe place to move them to and even if i did i couldn't have brought them there without you noticing the only place i could send them was back home of course not long after i did that you'd interrogate them and i wouldn't be able to coach hundreds of people well enough that they could fool you my solution was to wipe their memories of me before i sent them back i believe i remember the incident you're talking about the people who'd vanished suddenly returned home and their illnesses have been cured yep i healed them before sending them back i hoped you'd have a hard time covering that up i wanted to make you as busy as possible so you didn't have time to look for me at least that was my excuse i think the truth is i couldn't bear to let them die after knowing them for months especially the kids excuse or not it worked your efforts to create the appearance that they'd been misdiagnosed thanks for not just killing them by the way bought me time and when a squad of agents finally did scope out my prison it looked just like it should i had to re-enchant it after they left but that was the least of my problems now i was back to square one of my search for blood i thought about starting over working to find a new set of clients maybe from a larger area but it was too late for that you'd have already made the connection between winnipeg and mysterious long vacations taken by terminally ill people and their relatives even if i teleported all over north america to find new clients you'd know where to look for me why draw from a limited radius at all have you ever cast a teleportation spell my strain to get as far as i did in any case pulling from a larger area wasn't enough anymore i had to find some other way of recruiting people something that would look different enough to you that you wouldn't realize it was connected to what i've been doing before also because i've gone through with the healing everyone i'd use up the ritual components i'd bought i didn't have the money to buy that many again for days i tried to think of an alternative to what i wound up doing but i couldn't only desperate people would agree to spend months living in an abandoned prison and that was precisely who i couldn't work with anymore my only remaining option was not to give people a choice so you didn't i was only planning to keep them until i finished my ritual being confined to themselves for a few months would be pleasant with them but neither would be the destruction of the universe i hope that when i was done and i could explain everything to them they would understand oh there you why not tell them before then the last thing that would have done is comfort them at best they think i was crazy at worst they believe i was harvesting their blood to resurrect a strange god and they judge that god by my actions once the ritual was done though once they'd seen your unloosen's full glory up close they'd know she was good even if i wasn't she might have even apologized to them herself she'd certainly have been mortified by how i brought her back why didn't that stop you because if i didn't do it the universe would be destroyed if i had to give up my place in ita to stop that from happening it was worth it you said earlier that you said earlier that your ritual was supposed to span 14 weeks correct yes according to the survivors didn't take just blood from them for 14 weeks you took it weekly throughout the time you held them i did why to offer it to the fourth their bodies were going to make it anyway and my morality was already compromised so it would have been wasteful not to take it i started the actual ritual in mid-december once i'd finally gotten the 503 captives i needed while i got through the first four stages without any problems but on the day i was supposed to perform the fifth my luck ran out the church discovered what i was doing how did that happen the disappearances i caused followed an identifiable pattern the church weren't the only ones who noticed and they were nervous about the fact that it was happening in the part of the world where they're most active why did that make you nervous why did that make them nervous partly because they were worried some of their enemies could be responsible and partly because they were afraid or you would the goc would blame them for it those are excuses of course they really just wanted to protect innocent people so they assembled a team to investigate the matter and it only took them a few months to figure me out they sent a group of warriors to apprehend me while i was leading ritual one of my co-conspirators warned me of their approach so i wasn't captured then and there but now the church was hunting me i had powerful magic to help me hide but they had equally powerful magic to help them find me i knew i had about a day before they found my prison once that happened they would arrive in force imprison or kill me and my accomplices destroy my machine and send my victims home all hope for my ritual and with it the universe would be lost that meant i needed 10 times as much blood as i'd plan to take for my prisoners at any one time there was no way to get that much without killing most of them i was horrified when i realized that but it didn't even question whether i'd do it some of the others needed convincing but not me it would have been selfish to let the universe be destroyed just to keep the blood of a few hundred people off my hands so you didn't intend for any of the partially drained subjects to die of course not wait did some of them 24 of them did no no that you damn it i must have taken more blood than i meant to did your accomplices participate in the killings there was a short panic discussion about whether they would go through with it but it didn't take long for us to come to a consensus they believed as fervently as i did that this was necessary to save the universe and every single one of them blessed their souls agreed to be fully drained for the ritual by dying themselves each of them allowed me to spare one extra captive i would have done the same but i had to be alive and conscious to perform the ritual which limited how much blood i could give how are the murders carried out first we had to get some equipment we needed exsanguinating someone completely requires special tools which we hadn't known we'd need i made trips to a hospital a slaughterhouse and a funeral home to steal what i needed after that we killed the cows one by one we led them to our machine knocked them out injected them with an anti coagulant strung them up cut them open and drain them it was the same thing you would have done if you were going to use their meat once they were drained we just left them up in the corner of the room the cows got harder to manage as the bodies piled up cows are smarter than most people get them credit for they know when they're being led to the slaughter still that was the easy part the hard part came next by the time we went upstairs to get our the first of our human sacrifices they'd been waiting on us for hours they were more confused and afraid and the first pair cooperated with us as we led them downstairs just like the cows they didn't realize what we had in mind until they saw the pile of bodies next to the machine one of them asked if we were going to kill them before i could lie one of my accomplices said yes do you know what it's like to have someone beg you for their life yes of course i forgot who i was talking to my apologies still you're the sort of person who would accept a job at the scp foundation imagine if your job was supposed to be to save people point is once they started begging i was desperate to shut them up i started by shouting at them which made them quieter but not quiet by the time we got to the top of the stairs that led to my intake pipe i couldn't take it anymore in a desperate attempt to soothe my conscious i did something i'd already decided i wouldn't do i tried to explain why their deaths were for the greater good god i'm an idiot of course they thought i was insane one of my comrades tried to prove otherwise by casting a spell in front of them which just made them think we were maniacs with magical powers it was a sleeping spell that finally shut them up i should have done that before i even brought them downstairs we injected their unconscious bodies with the anticoagulant sliced open their aorta aorta's and bled them until they died once their heart stopped pushing their blood out we pumped water through their circulatory system to flush out the rest we couldn't let any of it go to waste when we were done we went out to get our next pair of victims the screaming they'd heard didn't make them eager to come downstairs but this time i did what i should have done i put them to sleep before i even opened their cell that was what i did going forward before i even opened the cell door i would knock out whoever i was going to take some of them begged to know what was going on but i'd learned my lesson i didn't tell them anything once we'd fully drained everyone we intended to we went back up for the rest of the blood we needed how did you decide which ones to kill age we spared the youngest ones draining them wasn't any different of how we'd been doing it until then except we left the needle in longer of course having leaders of blood taking from you was a bit less pleasant than losing a spoonful or so so i had trouble convincing some of them that i wasn't bleeding them dry but i could at least rest easy knowing i wasn't except for a few dozen of them i guess in any case when i was done with all my prisoners i drained my friends if i were a better person the fact that they were willing to would have made me that the easiest part but it didn't most of them had been my friends for decades i'd known four of them since before shan brought me into the faith i'd known one of them since he was a child i converted several of them they'd still be living normal lives outside the veil if it weren't for me and i hadn't just killed them i corrupted them first made them into kidnappers and murderers with no itaught to look forward to i had no choice though the fate of the universe was more important yoren lucen was more important once they were all dead i let some of my own blood into the machine then turned it on for over an hour the blood of my victims circulated over my altars while i posed enchanted to direct their life energy to whatever remained of yoren lucen when i was done i called ambulances for my living victims and disabled the ruin work i'd done to keep people from entering the building i settled in to wait for my work to pay off i truly believed that yoren lucen was minutes away from appearing in his full glory you must have expected her to be furious why didn't you flee i thought about it there wasn't any point in the likely event yoren lucen would want to punish me there'd be nothing i could do to get away from her also i wanted to see the culmination of my work what i'd accomplish would rewrote the history of the universe trillions of trillions of ortothans would learn about it and for all they condemned my methods they'd rejoice that i'd brought the holy six back to life i stood in front of my machine waiting for the six to appear it waited and waited and as i did i slowly painfully came to realize that i had waited too long where was yoren lucen could i have been wrong that she would manifest here maybe she'd woken up in her body wherever the fourth had interred it i checked the blood in my machine for life energy if my ritual had worked it should have been gone it wasn't none of it had been claimed i thought about running my machine again but the ambulance cycle would arrive before i could finish my ritual again in any case i knew i had done it correctly i had practiced it every day for months i scanned my offering a few more times as if that could change something it didn't i grabbed some paper from the other room folded it into a small altar to the sixth prit and pricked my finger to see if a new offering would be taken in it wasn't i tried again nothing i kept doing it squeezing my finger to get more blood onto the altar and scanning it as i did nothing changed my the sacrifices weren't being claimed there was no yoren lucen to claim them my ritual hadn't raised her it didn't seem to have done anything at all after everything i'd done i had nothing to show for it but hundreds of corpses i might have stood there forever trying again and again to give a drop of blood to the sixth but those ambulances were coming and i decided i should get out of there before i was seen with the bodies where did you go i just wandered around for a few days processing what had happened what i'd done eventually i decided to turn myself into the police why because i'm a murderer because i prefer to it to facing the church because my victims and their families deserve closure they don't have much time left anything i can do to make the rest of it easier i owe them why don't they have much time left that's the worst part of all this after everything i've done the universe is still doomed we have 10 maybe 15 years left possibly less certainly not more the things that lurk outside the cosmos will burrow in and devour it the last of the korotusa will fall and the second hytoth will be lost nothing i did change that now nothing will end the log january 16th 2002 500 hours 26 minutes addendum 7046-4 on january 18th 2002 castity retwood self-terminated by self-inflicted laceration and makeshift ortoth and alter constructed out of paper she had been given as writing material was present in her cell experts on ortoth in practice who examined the scene concluded that redwood had offered her spilled blood to rung rock mo lucin the only remaining ortoth in deity addendum 7046-5 in april 2008 scp 77046's anomalous effects began to diminish sounds made inside the structure became detectable from the outside though the structure's thaumaturgic properties still dampen them as of june 9th 2022 the exterior walls of scp 7046 decreased the volume of a sound made inside by only 30 decibels recent tests on the bars of scp 7046-1 cells have shown that some will now bend in response to forces as those 1000 newtons though others retain much higher tensile strength foundation thaumaturgists include these changes are the result of the natural decay in its thaumaturgic enchantments if present trends continue the object will cease to be anomalous by 2040 that was a long one i've got i've got feelings but you go first well no yes so there's a lot of a lot of goodness article a lot of really good stuff in this article i feel like it didn't need to be anywhere near as long as it is but there's a lot of stuff to enjoy i like that the good definitely dragged a little bit definitely dragged for sure you could completely cut that interview and lose almost nothing exactly that could be like a supplement i was so stoked reading the glenn marcus and cassidy go back and forth and in the scene where glenn marcus says you didn't and with everything we had read about the prison before everything in that interview was already in my head like i didn't all i didn't know the only information that gave me is that it made cassidy like not the worst person until she was like still bad like yeah i was healing people and the people i took were terminally ill and i was helping them until i wasn't anymore yeah i thought that was a weird shift because it really made it seem like you were trying to sympathize with the character and then she was like but i couldn't hide it anymore so i thought maybe i just might as well be the villain everyone wants you to be you know and so man oh man uh if that because when we got at the very start when i saw that picture which is there's some good pictures in here oh yeah for sure that uh that prison picture hallway i love that that's gorgeous i wonder where that is uh because it's old and windy and the colors are great um and then the description of the prison wonderful the idea of why the church is the way it is i don't necessarily know why some of the things are but hey it's a magic prison at this point make it what it's gotta be exactly and then we get the back and forth and like god i was so stoked with everything until we hit the interview yeah we hit the interview and this immediately just crashed i was no longer involved i lost the will to act yeah no i fell yeah i was the same thing so much fun you were you were monologue and like that character was going on and on and on and and cassidy's voice got so much more casual and like in the letters i guess it was because she was talking to church people she had this like formality and like this right like dignity dignification yeah and then the very first thing she says in her interview is yep it's me that was me it's the second thing she says and she's like oh now it's just like sarcastic prison person i don't know yeah dude like take take that interview out i do want something more to like call it a final story right but i want like a result or a failure and like an after thing i don't need to be told what everything previous told me i need more or yeah exactly yeah so it's a really big issue is a lot of repetition of the exposition you already knew and one or the other like committing unaliving in prison afterwards being being caught cool i like that as a detail the final addendum that the thomatology is decaying if that is a uh if that is a note that the world is going to end in 2040 because the magic of the high taut is fading that i dig it it's a good detail but again especially with how strong everything before that uh i probably would even like it i probably would even like it if i were not for that freaking interview yeah yeah uh yeah i mean great great use of high taut stuff as you said it just yeah it needs it needs a a lot taken out i think even if you put it in as a supplement you could do that you could get extra upvotes i don't care do whatever you want to do put it in the supplement but it may buy the articles not necessary not necessary that is oh god i don't even know how to vote on that because i was so high and then i was so low yeah i think i'm leaning towards an upvote but it needs to be addressed it's at 10 like it's you know it's suffering it's suffering i'll i'll i'll boost it my upvote because what wasn't there that i like was really good and the rest is confident if not just a drag yes yes i agree but author i'm begging you parse down or completely please interview please please not unnecessary i mean the story is so good your characters are great like when glenn and when those church people were going back and forth in those emails i was oh yeah hooked yeah because he could tell it to get heated you know it was like real real uh natural uh escalation of conversation was good and oh my god one detail when cassidy switched to saying may the fourth rather than may the seven be eternal because she was starting to pretend to agree or was buying into for a minute right i think she was pretending because i think it was before the not the real break but the break where she's inside she was gonna do it anyways yeah so i like that as a devious fake out detail yeah yeah i knew to get that but you know that makes sense very very cool okay all right let's see if our next article is a final for tonight or if it's a starter for next time sure seven two six eight where are we seven two six eight is it is the gone out the spark of life oh my sweet jesus oh oh oh yeah this looks like long one next time on seven connery yeah i was starting with seven two six eight a spark of life by i mean it's trying to still scrolling to the bottom here it's taking a second there we go okay um by blind beard blind beard all right i find your on a glance i like your format there's a lot of interesting things here there's the uh i'm glad i took that footnote to be like oh there's still more don't don't yeah there's a obligatory uh collapsible at the very end just to tease us a little bit more but uh the formatting looks pretty i like the tables the pictures look like they're gonna be nice there's a lot of white space maybe it'll be you know and maybe it'll it'll be pleasantly surprising how quickly it goes by but maybe it'll be so engaging that it'll be a brisk read and yeah i'm hoping let me say we're looking at here this is yeah it's only 14 000 words all right that's a good first quarter of the stream minimum oh yeah yeah i think i think one of my readings i specifically because it's one of my articles and i checked that it's uh 8 000 words and i think that was like a 60 minute reading with character stuff so that'll probably be little more like the first half of the stream yeah yeah i'm wondering next next uh you know x thousand contest uh staff if you're listening put a word limit i want a short works contest brevity brevity is the soul of wits come on i do not care what the theme is i just care that next contest is shortworks shortworks the theme is shortworks it's only about short articles so with that in mind friends in site 42 fam allow me to start the sign-off process remember why we're here we are here first and foremost because we are trying to round up every tree in the alabama area and get our vengeance oh alabama man arkansas is gonna be really upset uh oh oh well we did i already sent all the dozers there dammit wait wait it's a two for one on the a states we'll we'll give it's a giveaway it's fine it's fine was it alaska and beyond that make sure you go check out billeth on twitch the ghost bashers are gonna be bashing ghosts is probably as soon as we're done with this stream yeah i give me a you know 10 minutes to go you know get a drink clean yourself up yeah yeah but yes we will be joining us over there transfer order on those dozers yes absolutely yeah i have to have to redirect an entire fleet of dozers um they're they're heading across the the canada border right now as i speak so you know 10 minutes not that big a deal and 10 minutes it's fine it's fine and then be sure to support site 42 on patreon that way you can help us do these broadcasts with the site 42 community we are growing working with different filmmakers and game developers we're trying to do things that help all of our scp content creators grow and so if you help us we help them and it's trickle through economics make sure you support us make sure you support them individually as well and with that thank you for joining us i've been dr sherman and i'm billeth and thank you for tuning in to another anomalous broadcast from site 42 this is that panic feeling when i know i had a song and i have completely forgotten it so i'm going to sign off instead with improvise yodeling