Hello, my name is Cameron de Camera and I'm a member of the Visual C++ compiler team. I work on the C++ compiler front end and primarily in the area of implementing modules. Today I'm going to talk a little bit about how to leverage modules in projects and how to use them effectively. We'll also discuss some tooling aspects of a modules ecosystem towards the end. Without further ado, this is practical C++ modules. Let's start by breaking down the category of topics that this talk will not touch on. Please note that this list is not a comprehensive one. Right off the bat, we're not going to discuss how to integrate modules into existing projects using a specific build system. The techniques I'm going to share here are going to pertain to source level transformations that one can apply, which facilitate in organizing their code in order to take advantage of modules. The next thing we're not going to talk about is how to deploy prevailed modules. This kind of falls under the umbrella of packaging and is a topic that will always have a solution specific to the project that you're working on. So let's get right into it. We'll first discuss the modules machinery included in C++20 at a high level. Then I'll get into our first demo portion where we will use that machinery to help migrate a project. We'll gradually use more advanced techniques as we progress through that migration. And finally, we'll discuss tooling and the implications module has on the C++ ecosystem and beyond. So let's talk a little bit about C++20 exported translation units. I chose the wording of C++20 exported translation units very carefully. C++20 brings us some name module units, as a lot of people might know, but it also affords C++ with a more generalized notion of exported translation units, and I'll elaborate on that a little bit as we progress. So we kind of have module units, which have two very common partitions to them, which is primary module interfaces and module partitions. Finally we have header units, which is the last form of an exported translation unit that C++20 gives us. So let's first talk about name module units. These have clear boundaries of API surface area exposed through various declarations marked as exported. The primary module interface are what make up the entirety of the entry point to this exposed API surface area. So if we were to break down a primary module interface, an example of one could be this, where we have the primary module declaration at the top export module M, and we're exporting this MyType. We do not export the internal type, and then we export a function which accepts MyType and just uses the internal type in its implementation. So the consumer of this module might just import it, use MyType for some various operations, and then call the API that we exposed through the export declaration F. Now if you tried to use the internal type in the import side, that would result in a syntax error, because that name would just not be found by the compiler. It was not exported. The compiler on this side does not know about it. Module partitions are a specific type of interface which ultimately end up composing a single module interface. Module partitions provide the programmer with a new way of organizing their API in a logical way. These can be done for a multitude of reasons. One such reason possibly is to reduce compilation time in a rebuild scenario. Another reason might be to use partitions is to separate their interface into distinct pieces to help unglue certain dependencies, and I'll get into this a little bit later when we get into the demo portion of the talk. In this example, we took the original primary module interface from before and separated it into two partitions. So we actually have the same API surface as before, except that we've made it clear to any contributor to the primary module interface that functions always go in the function partition and types always go in the types partition. And so the use of module partitions is the same as before. Again as I mentioned, we had the same API surface, so to the end user, it looks exactly the same. They still import that module. It's just the composition of that module is different under the covers. Which brings us to the last form of C++20 exported translation unit, header units. Header units are really kind of just separately compiled header files, and they act more like a formalized PCH. Header units export everything in its translation unit, and they also have the added ability to export macros. So a use of this might look like this. And the syntax is actually very analogous to hash include where the argument name is a header name. So you can have the quoted form as I have here, or you can actually have the angle bracket form that you would see with a lot of the standard library headers. And let's say this m.h exports the same content, or it just has the same declarations as our original module interface, so we can use my type and we can use f. And if there were any macros defined in that header, we could also use them in this translation unit. Now that we know all the different types of exported translation units available to us, it's important to know which ones will be easier to integrate than others. And I'm going to just go through the list of the different types of exported translation units in order of integration difficulty for projects. So the very first one is header units. Header units are very easy to integrate into most projects, simply because they preserve all the macro state, they preserve all the declarations that were in that header. You can almost do like a one-to-one transformation of hash include to import header unit. So that one's fairly straightforward. The next one is primary module interfaces. Now because macro state doesn't come out of a module, a named module interface, these are a little bit more harder to define, especially because you now have the ability to restrict what API surface you offer all of your consumers. So there's some cost benefit there. And finally, we have module partitions. This is really just a refinement of the primary module interface. So as we go from one to three here, we're descending from the largest API surface to the most narrow as we descend into our dependency chain for the project. So let's finally jump into the demo portion of this talk. So the tools we're going to use for this demo portion are MSVC. This is an unreleased toolset. It's going to be sometime after 16.6. I'm going to be using VS Code as my main editor and Python 3 for the latter half of this demo, which is going to be really around tooling. Let's say that we've been provided this small library. In this library, we have collections of animals, collections of transports, some internal implementation details, and some algorithms that we can run on those types. The library author decided to use the stood variant vocabulary type to get a little bit of runtime polymorphism over dog, cat, and horse for the animal section. In the transport section, we use the same vocabulary type to group car, plane, and animal horse together. And it's relevant that we reuse this animal horse type here because when we go to modularize this later, we'll actually have to import this type from a separate module, which we're going to name animal. In here, we have some internal implementation details to the algorithm section. And these are not really meant to be used by the end user. It's really just used to implement details of the algorithms themselves. And getting into the algorithms, we have this one question we can ask, which is can this transport transport the given animal? So when we go to dispatch over this type, we have various cases. So a car cannot transport a horse. A horse is too big for a car. A plane cannot transport animals. And you can't put a horse on a horse. That's just silly. And finally, we have our catch all case for everything else, where this transport is capable of transporting the given animal. We finally have some two string methods, which do exactly what you would expect. It takes in a generic type, dispatches on it, and gives us a string-applied version of that type. Over here in our main section, let's ignore this function for now. This function really is going to use that algorithm that's provided to us for figuring out whether or not this transport is capable of transporting this animal and just print it out to the screen. So if we go to compile this, you'll see that we get some numbers here. We can compile this translation unit in about 1.5 seconds. And if we run it, it prints out all the various combinations that we have in our main here. So this is kind of C++ as we know and love it today. So let's say at some point later, the library author decides that they really don't want everything in one giant header file. And they think that splitting it up into multiple header files is a little bit more of a maintainable solution. So one thing you can do in C++ today is do exactly that. So if we go into our collections header, let's go ahead and split up all of these different header files and separate our concerns a little bit. So we have one for animal. We have one for transport. And we have one for the algorithms. This is the exact same program semantically as before, just that we have organized our code differently so that things are slightly more maintainable going forward. And in fact, we can compile this. And you'll notice that the output time is roughly the same. And it runs exactly the same as before. So we have the same program semantics. It's just we've organized our code a little bit better. So this is all well and good. But the problem is that all of the consumers of our library collections here are still going to be paying that copy-paste cost of all of those header files. So things like collection animal and stood variant, all that stuff is going to be compiled into every translation unit that depends on collections. So C++ 20 gives us the first mechanism we can use and leverage to move our code into a modular world. And the first thing that we're going to try to integrate is header units. So this is what integrating header units in your program might look like. You'll notice that the only discernible difference between this main and the last one is that we've changed the hash-include preprocessor directive into an import directive. Likewise, everything in our library has changed from hash-include to import directives. So collections.h, transport, and algorithms. So if we build this now, we can't just build the main by itself anymore. We have to build all of these header files separately. They're separately compiled translation units. So first we build all of the headers. And then we can actually build our main now. You might notice our time went down a little bit here. And in fact, if you were to benchmark where the time is being spent now, it's actually up here in this include iostream. Now we could move this into our collections.h, but we don't want to have all of iostream be included in collections.h. That seems like a pretty big hammer to impose on all of the consumers of our library. So for right now, we're just going to keep it outside of our header unit collection. And if we were to run this now, we do get the same output as before. So as I mentioned before, header units are kind of the easiest thing to start integrating in the projects right now. The barrier to entry is really low because they preserve all of the macro state that preserve every declaration that's in your header files. All you really have to do is make your header files a standalone translation unit. They have to compile. That's the bare minimum requirement for header units. So let's see if we could possibly move this thing into more of a named module unit. So this is kind of what our main program looks like after we've integrated named module units now. The only thing that's really changed is the import declaration this time. And it's now naming our named module interface. And if we look at the contents of this thing, the very first thing you might notice is this section up here. Between the module semicolon and the export module collections, this area is what's known as the global module fragment. And I like to think of this area as this is kind of where your third party code goes. STL headers, boost headers, that kind of stuff are all great candidates to put in this section. And anything in this section will not be exported by the module. It's just used really for implementing the details of your APIs. So as we take a look at this module interface now, you might notice that it has kind of a very similar shape to the original header file that contained all of this library in one file. And that is something we will touch on in just a little bit. But for now, let's focus on what is actually happening here. So you might see all of these export keywords here. These are what actually end up creating the API surface of this named module collections. Everything that has an export on it will be exported and observable from outside the module. You'll see that this collections internals is not exported. So if I tried to use this type on the import side, the compiler would complain and say that I cannot find it. And we'll see an example of that in just a bit. Everything else is exactly the same as it was before. So if we go back to our main now, the way we compile this is very similar to the header unit. We have to build the module first. And then we can build our main. And we actually get a very similar time to what the header unit had. And we're going to address that really quickly right now. So you may recall that before we didn't actually want to include Iostream in our original header unit because that means that anybody who included that header unit collections.h would also get Iostream. That's not something that we wanted to impose on any of our users. So with named module units, we actually get an opportunity to hide Iostream as an implementation detail of these two APIs. So what we can do here is we can actually take these two APIs and put them into our named module down here into the algorithm section. Add Iostream into the global module fragment. We can now delete it from up here. Since we have put those APIs in the algorithms namespace, we're going to have to add this. And we can rebuild our module, rebuild our translation unit. And now we have some really significant speed up. And in fact, the program runs exactly the same as it has before. But we can rebuild this in a 10th of the time that it took to build the original version. So you recall me mentioning that modules can be used to hide implementation details of our APIs. So if we tab back over here to our interface file and we scroll down back to this internal section, you'll see that this overloaded type is not exported. So in my main, if I try to use that, all this type does is really accept a series of lambdas and create an overload set object out of them. If I try to build this, the compiler will error out and say it doesn't know about this overloaded name. It was never exported from the interface. So the compiler simply doesn't know about it on this side. So now that we've talked a little bit about primary module interfaces, let's talk a little bit about what it looks like to integrate module partitions into a project. So this is what it looks like to integrate module partitions into a project. None of our main has actually changed. It's even the same. It can even be the same file. But underneath, how our module interface is composed has actually changed quite a bit. So if we look at what our interface looks like now, at the top level, all you see is the collections module interface declaration. And then we import, export all of the partitions that compose this API surface. So if we peek into animal, for example, you see it looks just like a module interface except that it has this new syntax, which tells the compiler that this is a module partition. And we export it as we did in the primary module interface. Similarly, transport has the same thing. But whenever we import another partition, if we're in the same module unit, we can actually just use this syntax to import a separate partition that's part of the same module. And we get access to animal horse in this way. Algorithms, since it uses both of these module partitions, imports them both. And algorithms is largely the same as before. And as before, we have moved these two functions into the algorithms. So now that we have these module partitions, we actually build it similarly to how we built all those header files before. We need to sequence them. So if we go through and we build the module, and the reason we have to build them in a specific order is because some of the interfaces depend on each other. And then we finally build the main as before. We get very similar speedups that we saw with just the primary module interface. And in fact, we can run this, and it has the same output. So we have not changed the program semantically from the very beginning. So you may be asking yourself, why would we go through the process of converting all of these modules into partitions? What does that actually gain us? Well, from an organizational point of view, you actually get the ability to very specifically tell users of your libraries and contributors where to find things and where to put things. But another thing, and I mentioned this before, is that it can actually contribute to build throughput wins in rebuild scenarios. So I'm gonna go ahead and go and add an extra API to just the algorithm's partition. And we're going to rebuild just that partition and see if we can get some output. Okay, so now that we have just that algorithm, we're going to include iostream up here again, and we're gonna try to use it. So now all we should be able to do is rebuild just the algorithm's header, or the interface, and build our primary main. And now we can run it, and we'll see the output of one here because a horse is a horse, of course. Now the reason this actually works in the MSVC compiler is because we adopted a by reference model for referencing partitions and other module units. So this means that whenever you import a module into another module, all of the declarations from the imported module don't actually get shoved into the module that you're creating. It actually references the other module on disk. So it loads them dynamically as it needs them. There is one last thing I wanted to mention before we depart from this example, and that is the inclusion of iostream up here. You might recall that in the algorithms partition, we actually included iostream in the global module up here, but that doesn't actually mean that it's iostreams are accessible from outside the module. They are still not considered to be part of the API surface of that module. So we put our global module up here again, we import our module, and now we can use stdc out here as it is used inside the module within this result API. So all of the techniques I've shown so far work really well with toy projects, but what happens if we try to apply them to a real world code scenario? So what I've done here is I've gone out and I've cloned the I am GUI repository from GitHub. And all I've done is set up a basic VS code experience so I can build the library and I can build their DirectX 12 example that they provide. So let's go ahead and do exactly that and build the application and we can actually run this. You can see this works exactly like you would expect. So our goal right now is to just see if we can apply header units to this project right now. And the very first thing I like to start by doing is creating what I like to call a bridge layer between the DirectX 12 headers and the rest of the application, just the library portion. So I'm gonna go ahead and do that right now. Okay, so this application should build exactly the same as before and we can run it again. One reason I really like these bridge files is that they kind of help you separate the parts of your API from the system API. I use them a lot when writing my own personal projects and they're really mostly personal preference and not necessary for this demo. But they kind of make grouping all of those APIs a little bit easier when we go to make a header unit out of those things. So let's actually go through the process of replacing all of these hash include pre-processor directives into import directives throughout just the parts of the application, not the library. Now it's important to note that when we actually go to build these headers, we have to build them in a specific order because as you can see, most things depend on DX bridge and DX bridge can be built all by itself and IAM GUI can be built all by itself. Essentially any of the library headers can be built by themselves. The ones that we need to actually depend on are the IAM GUI Imple Win32.h and the IAM GUI Imple DirectX 12.h, which both depend on IAM GUI.h. So we have to sequence the build in that way. So now that the build steps are in place to build the library, then build the headers and then build the application, we can go ahead and do exactly that. So if we build the library first, this build should be exactly the same as before. Then we can build our headers and now we can finally build our application and just to see, we can run it again and we get the same output. So that is kind of a very brief overview of how to translate something, translate a project just using header units. Now, if you wanted to use module implemented or module units, that process is slightly more involved. And as we've seen, it can take quite a bit of time to figure out exactly what API surface you want to expose to all of your customers or any consumer of your library. Just as another quick test, I set up an example where we are using the header units and a case where we're not using the header units, we're using traditional hash include. And we're just gonna see the compile time throughput difference between these two scenarios. So without modules, we can build this translation unit in about 1.2 seconds. With modules or with header units, I should say, we build this translation unit in about a 10th of the time. And that's pretty essential when you're talking about more of a REPL type development cycle and giving developers more power when they just want to iterate very quickly on a problem. And again, this promotes the idea in C++ that you pay for what you use. And in this case, in the case of header units and in the case of modules, you're paying a cost which is directly proportional to the number of names and to the names that you use inside of your module. Okay, so let's quickly hop back to our overview page and talk a little bit about tooling while we have some time. So back in 2017, Gabriel Dosre, he published a paper called, Modules Are a Tooling Opportunity. And in this paper, he discussed the idea of having a proper semantic representation of a C++ program. Now, since then, Microsoft's compiler, MSVC, we have adopted the IFC format, which is our module BMI on disk. And this is spiritually a successor of the IPR work that came out of Gabby and Bjarnay. And really the goal of this work was to create a proper semantic representation of a C++ program internally in the compiler. Now, what happens when we actually persist that semantic representation on disk and what does it look like? Well, in reality, it's just a graph. So you can take this left-hand side over here and persist it out to disk and you might get a graph that looks something like this. And you can see all the names that Invoker depends on. You can see a whole bunch of other rich information that you can get from our IFC format. So what can we actually do with it today? What I have here is a very basic example of using the SDL library.  It's pretty mature. And this particular version is actually no longer available, 1.2. But what I have done is I've created a module out of this thing, or I've created a header unit out of the SDL.h. And I just took one of their basic examples and made it compile. So let's see what the output of this thing looks like. Right, so you get a very basic image to the screen. Now, the most interesting thing here is that we end up with this artifact on disk, the header unit for SDL.h. And let me show you something that might be a little bit surprising. On the right-hand side here, we have some Python code. And you might even say that this Python code looks very similar to the SDL code that we have on the left-hand side. And that is by design. And what I have done here is I've created this FFI library, which will take and consume the IFC format that we have on disk, translate it to some FFI wrappers for SDL and invoke the SDL APIs. So let's go ahead and run this wrapper and just see what happens. So the easiest way to invoke this is to just run Python over it and you provide the IFC that you have on disk to it. And we get the same output as the C++ program because really it's just using the DLL underneath.  So let's rerun it and we get an overly wide window. So the thing that really made what I just showed possible is the fact that we have a formalized IFC specification. And this specification is, again, derivative of IPR. So if you're familiar with IPR, the data model that supports it, you're gonna be familiar with the IFC specification. What all we did in the Python example is we traversed the BMI that was on disk, the IFC, and looked for functions that we could generate FFI wrappers in using Python C type library. So the other thing about this IFC that you should know is that it's all 32-bit addressing. So if you build an IFC on a 32-bit machine, you can actually take that IFC and put it on a 64-bit machine and compile some C++ translation unit using that IFC. So you can move it from machine to machine. It's independent in this way. And finally, the IFC spec will be open source. So the tooling opportunities will be available to the wider community, not just people who work from Microsoft, for example. So what kind of conclusions can we draw from all this module's information, all of the possible scenarios that we can apply modules in in the C++20 machinery that comes behind it? I think that one of the primary takeaways is that moving to modules is always gonna be an iterative process. It's not gonna be something that happens overnight. And the other thing to acknowledge is that built systems will catch up, I promise you. Modules are certainly worth the effort. And it's going to bring a whole new generation of tooling opportunities. And tooling opportunities that we probably couldn't even think of 10 years ago, five years ago even. And it's just, it's an exciting time for C++. It's an exciting time for compiler developers. And it's even an exciting time for developers to see what people are gonna come up with. I wanted to finish with some acknowledgments. I wanted to first thank Cody Miller, who initially came up with the idea of creating the FFI wrapper based on the IFC format. And I wanted to thank Gabby, who provided a lot of good guidance and input into good modules practices, which helped me ultimately form this talk. And I also wanted to thank everybody here. Thank you for joining me on this sort of small journey in exploring modules. And I would like to invite anybody in the YouTube comments section who's watching this live right now to ask me, ask my future self some questions. Challenge me. And thank you again for joining me.


أقول بله من الشيطان الرجيم بسم الله الرحمن الرحيم اللهم يربي علمنا ما ينفعنا ونفعنا بمعلمتنا وزيبنا علمة اللهم اجعلم اللي ديني استعمعون وخوله في التبينة لحسنة يالله تفعلنا بعض الأشياء الذين رأينا عند المستقبل كافي وفقوا غير مستقبل أمين أنا جداً جاهزة في معه بميطيك هناك م thyasha wronga yauddin اشاعله لكي سيلكون أجيبان었어요اتنا يفعل هذا نحن سنقوم بإضافة إلى أقل 4 أقلين ، أقل 2 أقلين و أقل 2 أقلين و then every team will get a turn and then the team with the most points will get to dip into this basket of goodies first and then whatever is left maybe the second team will get a chance to grab some prizes as well so first to divide the teams I need people to count from 1 all the way until we finish so let's start from here we have 4 teams we're almost there we can get started so what we'll do is start from my right and what we'll do is that I'll show you the categories in a second and then you get to decide together as a team really quickly you'll have like 5 to 10 seconds to decide what category you want to select we'll unveil it you'll have a question and you'll get 1 minute to answer and then if you guys don't know the answer if you get it wrong the next team will get a shot at answering it and if they get it right they'll get the points you don't lose points by the way and then if they don't get it right the next team will get a shot and then the fourth team and if all 4 of you don't know it what will happen is we'll just lose the points yes no I think there's only one multiple-chase question most of them you have to know the answer alright first category is Quran second category is prophets third category is prayer salah fourth category is threes these are all the answers we'll have threes in them and then the fifth is celebrities and social media and then the last one is brains and trivia alright so you guys are ready? okay we'll start from Bebzi alright Bebzi you gotta select your which question do you guys want to answer you have 10 seconds to select you're not going with them alright for profits for 600 please profits for 600 alright question is which prophet was sent to the people of Median you have one minute to answer which prophet was sent to the people of Median get ready by the way make sure that you're not don't say your answers out loud so they don't hear you make sure you whisper if you're having a discussion you guys are ready Prophet Shuaib Prophet Shuaib is the answer and that is wrong alright you guys are ready alright you guys get only half the time so 30 seconds alright what is it Ayub is the wrong answer alright Median Median is the people the place of which prophet Musa is the wrong answer alright yes they're all in the middle east right all those prophets like they're places in the middle east no Ibrahim is wrong okay and the right answer is Saleh و إلى Median أخوهم صالح right so Saleh Prophet Saleh is where the people of Median lived alright next is what was your team name again Al-Hilal yes Al-Hilal the crescent okay which one are you guys selecting you guys turn right prayer for a thousand prayer for a thousand alright okay give five prayer actions that are considered Sunnah that with it the prayer is complete but without it the prayer is still valid okay so these as Sunnah in the prayer if you do them your prayer is more complete but if you do not do them your prayer is still valid so give me five examples of those thirty seconds guys get ready if they don't know it you will be next four three two one and the answer is okay so reciting surahs in order making sure you don't skip over one I'm trying to think about this one like it's called tenkis which is fine I mean okay I'll give you that one then reciting a surah after a surah reciting a surah is one absolutely that's correct so you don't have to recite a surah in the prayer after surah of al-Fatiha that's Sunnah if you don't do it your surah is still valid that's two and it's only one but I'll slide okay three oh saying subhan Rabbil Allah subhan Rabbil Allah is the sunnah that's correct subhan Rabbil Allah subhan Rabbil Allah that's the sunnah that's correct that's four that's five that's four someone say something I'm happy one more one more the middle to shower is correct that is correct a thousand points for the Hidal team a thousand points for the Hidal a thousand points alright the muslims right? no the shababs alright shababs which one do you want to select? celebrities and social media 600 alright who is the second most follow celebrity on Instagram after Christiano Ronaldo so Christiano Ronaldo is the most follow celebrity on Instagram who's after him obviously Instagram itself is number one Christiano is number two who's number three alright you have 90 seconds Messi is the correct answer alright Messi is the correct answer and that is how many points? 600 points for a shabab no a shabab no a shabab the shababs the shababs alright the muslims celebrities and social media 800 celebrities and social media okay which YouTube boxer has the most professional wins and what is their professional record which YouTube boxer has the most professional wins and what is their professional record so these days we have so you have professional boxers right and we have MMA so these days we have these celebrity boxers and they're basically going out they're influencers they're famous and they start boxing and now they're having these celebrity fights Jake Cole Jake Paul is correct and do you know his record what is that? so the record like he has had a lot of fights so it's his his record his fighting record is it like how many wins how many losses how many draws you can take a guess yeah you get half so you guys have half so far we'll come to them and then come to you so if you don't know you want to take a guess just 1 to 25 that is wrong okay alright Jake Paul's record right now are you with them? yeah okay 7-1 is correct alright so you guys get half the points they get 400 they get 400 points and then and Muslima get 400 points Muslima get 400 and then the Bebsi get 400 yeah okay good alright back to Bebsi alright what do you guys want to do? celebrities and social media 1000 I see what you guys like alright 1000 what year was vine shut down what year was vine shut down yeah 30 seconds what year was vine shut down what is it? 2012 is the wrong answer 2016 is the wrong answer 2017 is the right answer 2017 is the right answer they get 1000 points to Shababs the Shababs 1000 points alright you guys are ready? 3 is for 1000 3 is for 1000 alright according to the Hadith what are 3 things the Prophet SAW advised a little boy to do when eating one time the Prophet SAW was about to eat and there was this little boy he was so hungry he was about to eat and the Prophet SAW gave him 3 pieces of advice what are those 3 pieces of advice are you staying with me? yes say Bismillah say Bismillah eat with your right hand eat with your right hand eat with what's in front of you and that is the correct answer 1000 points 1000 points for Team Al-Hilal 1000 points for Team Al-Hilal alright yeah yeah please alright it's your choice I keep forgetting your name man Shababs if you want I think it's enough brains and trivia 1000 keep it so you guys know the answer alright a boy is 4 years old his sister is half his age when the boy is 100 years old how old is his sister 98 is the correct answer that is so easy 1000 points for Shababs Shababs alright it does it hello hello it works okay okay brains and trivia 800 brains and trivia 800 okay a guy threw a big rock at a piece of glass why did the rock not break why did the rock not break don't say that oh it's glass yeah sorry piece of glass why did the rock not break so make sure you don't say the answer out loud if you know it the glass what about it okay so a guy threw a piece of rock at a piece of glass why did the rock why did the glass not break so they say the rock not break I'm sorry the glass not breaks it's bullet proof are you guys that's the final answer okay make sure you consult guys alright because a lot did not want it to break that's a really good answer you get one point for that because the glass was too small that is the wrong answer okay alright I'm coming there first and then I'll come to you this way alright because because they missed that is the correct answer they missed they did not hear did they not hit the glass so 800 points 800 points 800 points what was that hello it lets you know in a little bit by the way at the end of the jeopardy at the end of the jeopardy you guys get to do that the wager thing so you have a chance to don't worry you can catch up and there is double jeopardy and all that stuff is alright I think it's right alright what's going on what is it 1000 please 1000 1000 it's Quran 1000 alright how many ayas are in the Quran how many ayas are in the Quran don't say anything and if you know the answer don't say anything how many ayas are in the Quran 6000 to what 6000 that is correct that is correct good job Pepsi got 1000 points that's 1000 points masha'Allah good job man that was الهلال what's called الهلال الهلال hey who's cheating somebody cheating by the way if anybody's using their phone or they're cheating they'll be disqualified instantly we do not promote cheating alright the whole team will be disqualified if anybody from the team is cheating the whole team will be disqualified alright profits 1000 profits 1000 profits 1000 that's a loss 1000 okay who was the first prophet mentioned in the Quran during revelation who was the very first prophet mentioned in the Quran during revelation make sure you whisper your answer so other teams won't hear you no it just mentioned it just says mentioned not mentioned in the name so no it's fine yeah yeah by name yeah I mean like actually no not necessarily by name okay Prophet Muhammad no no Prophet Muhammad should we give him mercy should we give him mercy okay who you have an answer Prophet Isa Prophet Isa is the wrong answer alright Prophet Yunus is the right answer صاحب الحود صورت القلم the second Surre revealed after Surat Al-Aalaq and Surat Al-Qalam and Allah mentioned ولا تكنت صاحب الحود don't become like the صاحب the friend of the حود the well you guys got it right yes yes yes yes yes what was it 1000 oh 1000 nice nice nice nice alright what's going on what's going on it doesn't work wait who's next they're here okay ماذا يتكلم؟ لا أستطيع أن أرى حسنا، هل يمكنك التحدي؟ حسنا حسنا، ثلاثة أنا سأقوم بك ثلاثة ثلاثة 800، أرجوك، مصر محمد ثلاثة 800 حسنا، السؤال هو ما are four things that Prophet ﷺ used to seek refuge from at the end of prayer at the end of every prayer Prophet ﷺ used to seek refuge from four things these are the actual goal the most worries that we have in our life he used to seek refuge from after تشاهد before سلام what are those four things and you have 30 seconds you guys should discuss if it's come to you yeah yeah he seeks refuge from something in دعاء after تشاهد and before سلام after تشاهد and before making سلام you would seek refuge لو من يعود بك all right okay one دنيا it's not دنيا something has to do with دنيا but not دنيا exactly okay next huh how I know شيطان know okay I'll give you like five seconds you know it's jealousy no how far is one testing okay جهنم all right that's one all right I'm gonna move to the next group you get one fourth the points all right جهنم was one okay the punishment of the grave that's two love not love this دنيا okay دنيا but not love okay that's you guys get one fourth no no no one fourth one fourth the points you get two hundred two hundred all right coming to you there's two more actually two more yeah two more he used to seek refuge from جهنم from hellfire and from the punishment of the grave two more so the process of before سلام you say seek refuge from the punishment of the grave I seek refuge from there's two more at the end of سلام before سلام they don't know okay what is it what's a phala from the phala all right the jail yes that's a third you're very close but that's not no okay so you guys get two hundred no was it you you guys get two hundred points and then the last one was فتنة المحيا وفتنة الممات which means that the trials of دنيا and the trials of death the trials of دنيا and trials of death okay that's the fourth one all right so شبابs get two hundred points and then the مسلمات get two hundred points and بيبزي get two hundred no not بيبزي الهلال الهلال gets two hundred points okay okay who's turn is it all right مسلمات what do you guys want to select profits 800 profits profits 800 this profit his son was a profit his father was a profit and his grandfather was a profit what's his name what is his name this profit his father was a profit his grandfather was a profit and his son was a profit name the profit make sure you guys discuss because he might come to you all right 800 points man 800 points at the line here very expensive 800 points 20 seconds 20 seconds the question there is a profit his dad was a profit his grandfather was a profit and his son was a profit what's the profit's name is that a final answer well pick your answer the question is clear يقوب yes that is the correct answer all right 800 points yes his son was a profit his dad was a profit his grandfather was a profit and his grandfather was a profit and therefore 800 points 800 points to the muslimat all right what's going on Quran 800 please all right question one surah has two bismillah in it and then one surah has none what are the two surahs there is one surah in the Quran that has two bismillah there is no bismillah name the two surahs all right bebsi you got this man yeah bebsi what's going on man all done it's coming I like the name yeah it's kind of cool yeah no there is a surah in the Quran he is reading like the body languages surah the tawbah has what no bismillah that is the correct answer and which surah has two bismillah surah the hajj is the wrong answer all right they will get 400 points give bebsi 400 points all right your turn which surah has two bismillah in it surah the hajj is the wrong answer all right which surah has two bismillah in it you got this man surah the note is the wrong answer surah the fatih is the wrong answer surah the fatih has one bismillah let's have two where do you get the second one from no there is a disagreement that is bismillah but go ahead no what is it go ahead no it's actually it was you know when belqis got the letter from satan and suleyman and he said i got a letter from suleyman the letter had bismillah in surah and naml all right 400 points right here to bebsi next we got el hilal what are you guys picking what is it 300 for 800 300 for 800 all right backbiting is haram in islam except in these three cases talking about someone when they're not there in a negative way is haram except in these three cases you can backbite actually it's more than three give me any three you can backbite about people in these three exceptions what are these three exceptions you have 30 seconds we are not allowed to backbite in islam we're not allowed to talk about people when they're not there negatively with something that they don't like but there are exceptions what are the exceptions three exceptions all right 10 seconds 10 seconds all right el hilal five four three two one go for it if you're talking to a judge absolutely you can backbite talk about people who say yes this guy stole my money he's not there that's okay that's one yes if somebody's asking about somebody marriage I'm not going to be like let's call them no you can say no that person is terrible they stole my money don't marry them that's correct okay a third two all right they're happy with two okay so how many points was that you're going to give them one third I don't know how many points was it 800 okay so let me get one last one huh that's not one okay they got it wrong you're not going to get it if they're harming you yes if somebody is harming if somebody is known to be harmful you want to warn the community about them you can backbite if somebody knows to steal people's money you can say guys watch out no that's good that's court that is correct yes that's the third one all right so that's really good so it's only three there's more than three but that's good you guys got the third one okay you guys have a fourth one I'll give you points if you get the next one well it's the same thing right if somebody is bad just thought you can save people this guy is really bad but they have to be repeat you cannot just be one time like you have to be somebody that does something all the time then you're but then why you want to talk about somebody they're seeking advice yeah but then you're saying something harmful in consultation which we talked about already yes yes where are you going after yes yes absolutely if there is a bully and you need to talk to your teacher about that that is correct you can go say hey this person was a bully it's the same man it's the same but she's right a bully so let's how do we divide 800 by 3 that's your job figure it out you have to divide 800 by 3 okay go ahead not well there's something related to that but not necessarily war no I'm not no no no actually the one that I meant if somebody is a ruler and they're a terrible ruler like they're known like you know like I don't want to mention it but let's say there's a ruler that's really bad they're a dictator everybody knows that they're a dictator you can talk about them you say this guy is terrible you know back in the day when Donald Trump was our president and he was doing all these wrong things we can talk about him all day it's fine because he's a ruler that's unjust so you can talk about them that's another one alright so you guys got 2 right so they got they got 2 so they got 266 plus 2 times 2 okay so they get 266 times 2 those are 400 that's 5 532 give 532 and what do you guys get 266 and 266 to Shabab 26 Shabab okay your turn right 533 okay fine one point here I'll take this yes already asked right you didn't go yet oh it's your turn sorry it's their turn okay now I'm confused alright here you go and Muhammad can you put it back to the brains and trivia 600 alright 5 girls in a room first one is playing chess second one is watching dishes third is doing laundry the fourth is cooking what is the fifth girl doing that is correct she's playing chess very good 600 to Shabab 600 to Shabab alright what do you guys want to do brains and trivia 400 brains and trivia 400 alright which country invented ice cream which country invented ice cream alright you have 30 seconds which country invented ice cream no one look it up and you better not cheat man I don't want to see any phones out no phones out nobody had if I see somebody with their phone the whole team will be disqualified it's okay it's not that serious alright you guys want to take a guess looks like you don't know alright what's the guess is it what Italy you guys want to go with our guess see that's really nice of them Italy is a really good guess but it's not the right answer okay Italy is a really really good guess that's what I would have guessed it's not Italy okay Italy is a new guess alright you guys get a chance to answer you have an answer for me they said Italy it's wrong America is the wrong answer America is so new it's just like born yesterday yes Belgium is the wrong answer alright your turn is it a Muslim country no it's not it has Muslims in it what is it are you just your final answer well pick a country because we have to move on go with an answer or no what is it final answer final answer I'm asking because you have to you have to work as a team okay Switzerland yes okay I'm going to count down from 5 you don't give me a country name together I'm going to move on 5 Switzerland is the wrong answer she was right it was China it's actually China it was China you have to trust your teammate alright nobody got this one right are you guys going to get a chance oh I'm sorry man I'll give you 2 points for that did you know the answer they said it at the end we're going to give you a wager so we'll update it at that time no he did it you did I don't think okay I'm going to talk to him did you know it was China you did okay go give them the points they said they knew I didn't give them a chance give them the points his dad said he knew oh no but you guys didn't go with her no it should not you guys did not go with her I told you it's a team oh yeah you're right would you guys have what with his answer okay I'll give them half the points give them half the points only half half alright moving on who's next no because they knew the answer and I didn't give them a chance I didn't give them a chance to answer alright yeah you did alright alright here we go what do you guys want alright 5 seconds let's go what is it Quran 600 please alright name two suras their name is not in the sura name two suras in the Quran their name is not in the sura usually the Quran is in the sura but there is two suras in the Quran the name is not in the sura alright so get ready get ready yes صورة الفاتح عن صورة الخلاص is the correct answer good job 600 points for Bebzi الهلال microphone what do you guys want 600 600 please alright what is the purpose of prayer according to the Quran according to the Quran what is the purpose of prayer number 1 is it worship 2 is it remembrance of Allah 3 is it connecting with Allah or 4 is because Allah ordered us to all of these are correct but there is one specifically mentioned in the Quran what Allah tells us the purpose of prayer is this which one of these four is the correct answer okay alright when you guys are ready are you sure about that remembrance of Allah is the right answer good job in صورة طاها الله says فعبدني وأقم الصلاة اقم الصلاة اقم الصلاة so the purpose of prayer is to remember Allah 600 points 600 alright I know you guys feel it's not fair but Allah is fair do a good job it's okay his dad was his witness it's okay if you are meant to win you will win don't worry what do you guys want which one alright 3 is 600 alright 3 things looking at them is worship what are they there are 3 things in Islam looking at them is actually worship what are those 3 things you have 30 seconds 30 seconds alright you guys have we know 2 okay where are the 2 the kaba is 1 absolutely correct Quran is 2 that's correct what's the 3rd not Allah's creation his name nope not his name so you guys 2 thirds of the point they got 50 chances okay alright I'll give you an extra chance um um prayer prayer mat nope that's not correct I'll take the microphone thank you but you guys got 2 thirds that's pretty good that's 400 points hey can you give them one point and they get one extra point alright you guys have an answer for this question looking at the Quran is worship looking at the kaba is worship there's a 3rd thing you know you're close it's not correct but you're close no alright okay what's the 3rd thing looking at his worship what is it you guys have an answer okay what is it okay the رودة no that's not correct alright you guys got a shot the 2 things are looking at the kaba is worship looking at the Quran is worship what is it what is it I'm right okay pick something yes 5 how do you look at the qiblah no I didn't know look at the qablah look at the qablah okay I guess you look at the qiblah I mean I could be looking at something we're going with the women okay what is it look at your wife that's a good guess man but it's not correct alright did you guys already went right I wanna make sure do you have an answer no alright the right answer is your parents your parents looking at your parents is worship all those kids who looked down when they thought their parents are missing out on a lot of good deeds you had it as a guess why didn't you say it you didn't say it not at all it doesn't count alright whose turn is it it's their turn I think it's their turn you guys didn't go yet okay sorry yeah yeah yeah their turn what do you guys want profits for 400 profits for 400 please alright who are the highest most ranked 5 profits mentioned in the Quran they're called these are the most determined profits they have the highest ranked profits they're 5 of them mentioned in the Quran in multiple surahs together who are these 5 profits so you have 20 seconds take your time 20 seconds 5 profits are called I mean they could get one that's one fifth so but it's 400 so you have to do some math alright you guys are ready alright 5 profits number one Prophet Muhammad is correct Prophet Ibrahim is correct Prophet Isa is correct Prophet Musa is correct Prophet Dawood is wrong okay so you guys got 4 out of 5 so they get 4 fourths so 4 over 5 times 400 no it's amazing okay it's okay do you guys agree Prophet Adam is the wrong answer Prophet Yusuf is the wrong answer what okay your turn they all got it wrong who is the 5th Prophet they said Prophet Muhammad Prophet Ibrahim Prophet Musa who is the 5th the highest ranked Prophet one more سيدنا who مريم is not a Prophet سمعيل is the wrong answer you guys already went it's your question you guys guessed already you guessed wrong I'm not going to give you points but what is it Nooh is correct this Prophet Nooh 300 300 320 320 320 now it's their turn I'll take the microphone please 4 out of 5 5 out of 5 alright how many minutes do you have before مغرب 30 okay what is it 400 what is it celebrity okay celebrity is 400 celebrity is social media 400 okay what is the most subscribed to individual on youtube channel the most individual subscribed youtube channel you have 20 seconds who is the most subscribed youtube channel who are you who are you 10 seconds Mr. Beef Mr. Beef is the right answer Mr. Beef 400 points for BeFzi 400 points for BeFzi alright okay microphone does it yes it does حسنًا، ماذا هو؟ قرآن قرآن for 400 please قرآن for 400 سؤال is name two suras their name is the first not in the first ayah sorry the first word of the surah the first word not in the first ayah the first word the first word of the surah is the name of the surah name صورة ياسين و صورة طاحة صورة القارع صورة الحاق so many suras so 400 for الهلال very good there's a lot of suras the sura name is right at the beginning of the sura well when you wager later you know it's not going to change anything prayer 400 please okay what are two times of the day prayer is not recommended two times of the day prayer is not recommended you have 20 seconds there are two times in a day where prayer is not recommended do you want to see I trust you yes right when the sun is at noon okay and what is the second thing noon is wrong okay what is it what is the sunrise sunset okay I will think that is the correct answer it's actually right at sunrise and sunset but right before it as well before the sun rises and before the sun sets and when the sun rises when the sun sets is the correct answer I'll give you the points now we're even I let it slide I don't want to hear it I gave you the points we're even okay okay okay next is 3 is 400 3 is 400 okay in Islam you're not supposed to lie except in 3 cases what are they you're not supposed to lie except in 3 cases you ready already please your wife please your wife in war and the third what is it that's right so these two are correct so yes in war you can lie where are the Muslims they're right there but they're not in war you can lie and also if your wife says am I fat what do you say absolutely not am I pretty absolutely yes alright also also a wife could you know even though he's really yeah so you could lie to your spouse in good faith and in war and the third is what give me example your wife is all one category you can take from like you're good 2 out of 3 you're pretty good but it's different it's still it's wife it's spouse it's not that alright they got 2 out of 3 2 out of 3 alright okay so when can you lie they said 1 is at war and 2 to your spouse okay what is the third you guys know yeah if you're yeah sure I'll take that do you have money I don't have money okay cool yeah you're at war at that moment I guess gun to your head that's the same answer okay what is the answer to protect your brother what do you mean like what does that mean you say for example you're saying like oh my god bro do you you're like does he have drugs like no what do you mean protect your brother watching too many movies bro if my monk account is good and you're like yeah they're like that kind of thing not really not really what if like the bad guys ask for the address of your friend still that's the part of war okay okay do you have an answer same thing okay we said war and your to your spouse what's the third you guys don't know that is correct the right answer is if you were trying to get 2 people together 2 people are fighting with each other and they have some beef and you try to bring them together you could lie to them and say so it's friendship but it has to be they have beef with each other you see you try to say to protect and all that that's not it all right whose turn is it so they get one third of the points one third of the points gets one third of the points okay whose turn is it your turn all right what is it trivia trivia okay brains and trivia 200 please brains and trivia 200 okay what's the most consumed manufactured drink in the world what's the most consumed manufactured drink in the world so obviously it's not water what's the most consumed manufactured drink in the world what is it coca-cola coca-cola is a really good guess but it's the wrong answer all right they say coca-cola what do you guys say I heard something in no time Pepsi is the wrong answer all right okay your turn water water is not manufactured drink manufactured no not mineral water what is it red bull is wrong no not water water is not manufactured manufactured means you have to put it together something you have to put together milk is like natural no not milk what is it do you have one okay I'm just going to listen to her water and ice water and ice that's a really good guess but it's not correct what is it it is tea it's tea tea is the right answer yes who's turn is it your turn celebrities and social media 200 please celebrities and social media 200 who is the new owner of Twitter and what did they rename it to yes that is correct Elon Musk and X that is correct 200 points for Al Hilal 200 points for Al Hilal please 200 points for Al Hilal alright your turn yes I'll give you extra question where do we start we started there right so we have to end here yeah okay that's a good point alright what is it what is it profits 200 please profits 200 alright name the profit who lost all his wealth and his kids on one shot this profit lost all his kids all his wealth in one day profit ayub is the right answer good job 200 points for Shababs alright Quran hold on don't do Quran yet Quran for 200 please how many suras are in the Quran 114 114 114 now 141 114 200 points 200 points for مسلمات 200 points for مسلمات there is 114 suras in the Quran alright 200 please prayer 200 alright what's the name of the prayer that helps you make a decision what's the name of the prayer make a decision is the right answer 200 points is the Salah that you make if you need to make a decision you don't know yes who does should you be disqualified okay alright you're on this side now you guys are here right alright alright your turn okay we're gonna go two more because we started here we're gonna do two more questions here 200 alright oh the last one yeah if your clothes catch on fire what are you supposed to do what is that stop drop and roll good job alright okay I'm gonna ask you a question right here it's a bonus question because we started there I'll give you two more questions okay the question is the name of Mr. Beast Jimmy what what okay I'll give you that 200 points give him 200 points it's Jimmy Donaldson okay alright 200 points right here and I'll give you a question here let me see I have to pull up my phone see what what extra questions do I have I'll give you a hard question okay I'll give you this question depending on how you answer it I'll give you more points alright how do you pray صلاة الجنازة there is no other okay that's fine but how do you pray the صلاة صلاة الجنازة okay describe it okay that's fine you stand up okay that's a good start alright stand up that's good okay okay yeah yeah but what did you do okay you make تكبيره that's very good so you don't do ركوع or سجود that's very good so صلاة الجنازة has no ركوع and no سجود and you do multiple تكبيره do you know how many it's not 10 3 is very close 4 it's 4 تكبيره so each تكبيره you say something after the second تكبيره after the third تكبيره you make دعاء for the disease and the fourth تكبيره you make دعاء for the Muslims and yourself okay so I'll give you I'll give you 200 points 200 points 200 points for المسلمات no no but this I said how do you pray I didn't say what the qualifications for prayers alright let's tally everything now I'm going to ask you the final تكبيره so I'll give you a piece of paper you have to write down your answers okay and then and you have to put a wager so I'll tell you your tally number you have a tally of your score you could wager the whole thing you could wager half of it you could wager zero and based on your answer you will get that wager that you put in your thing so we'll let you know and then I'll let you know the question as soon as everybody has a piece of paper getting it okay perfect we probably need also four pens perfect thank you alright you guys did a good job by the way everybody did really great I'm really really proud of you you're very knowledgeable we'll let you know in a second okay is this done okay are you ready to know your score no you have to once you have your piece of paper and pen you need to come together I'll give you the question then you'll everybody together you have to write your wager down and write down your answer okay your score is five thousand eight hundred and sixty six five thousand eight hundred and sixty six alright ببزي oh here first okay you guys have two thousand three hundred and eighty eight two thousand three hundred and eighty eight no alright and you guys are ready you have four thousand two hundred and sixty five four thousand two hundred and sixty five and ببزي are you ready you guys have four thousand points four thousand points four thousand points alright okay when you're saying the answer you're writing it down make sure you're whispering because every team is doing the same answer so make sure that they're not hearing you everybody has a piece of pen and paper yes they are five thousand two hundred something alright but you guys can wager the whole thing and might win so you guys are ready everybody has paper and pen ready you have to write down your answers whatever you wager will add to it but then if you but if you get it wrong it subtracts if you wager five thousand if you get it right you'll get ten thousand if you get it wrong you lose five thousand if you get it wrong you lose 15 thousand no the maximum you get is double the maximum you can get is double once i'm done i'll collect the paper then i'll give you the answer you guys are ready alright here's the question ready in the Quran Allah mentioned twenty five prophets write them all down twenty five prophets in the Quran write them all twenty five prophets and make sure you write your wager write your wager down you're supposed to get the wager down oh my god i forgot okay let's forget about that it's fine you're supposed to have your wager before i give you the question i forgot about that yeah just make sure if whatever wager you have keep that alright time is up when i come back in a second when i pick up the paper you guys are ready or not write your name put it on your wager your wager okay cool that's fine okay okay 100% okay okay here okay this is good alright time is up no clue let's go you put your team name team name no no they did not cheat they did not cheat yeah yeah put your team name alright okay now we have to find out who won are you guys ready for who is the winner here we go first of all we are all winners as you know we had a lot of fun we're lucky to be here to have each other and to learn about our dean you guys are all very knowledgeable you got most of the answers correct i ask Allah to protect you but at the end of the day you are the winner and then there is somebody almost won alright so first place first place goes to team chebabs with 9,866 points congratulations second place goes to Alhilal 8,265 points third place goes to bebsi 8,000 points and third place goes to muslimat all right so you guys get first dibs at the prize everybody picks one thing and then we'll take it to the second place team so take one thing please one thing so that we can take the basket to the second place and then third place all right make sure that you keep learning about our islam our beautiful islam and we apply what we learn as well may Allah reward you immensely السلام عليكم ورحمة الله وبركاته


Hello everybody! In this video, I'm going to tell you about the calculator in Windows 10 operating system. I will make a brief review to tell you about the interesting functions and features, how to install it and what to do if it doesn't start. Hello friends! If you need to recover deleted data, view or restore removed browse in history, Hetman software products will help you. Follow the link in the description, download the necessary program for free, install it and analyze the disk. The utility will show you the data you can recover, so you will be able to view it or get it back. In our channel and blog, you will find solutions to any problem, from installing an operating system or configuring it, to fixing possible bugs and errors or optimizing mobile gadgets. Our specialists will answer any questions you ask in your comments, under the videos or articles. Of course, you can find Calculator in every version of Windows. It's a very useful tool, and if you ever used it, you might have noticed the interesting functions it has. The Windows 10 calculator provides you with a lot more functions than its previous versions. Now you don't need any other apps to convert currencies, units of volume, weight, area and other things, and the calculator will do all that work for you. To open it, click on the Start button and find the Calculator app if you search by letter C. On your desktop, you can simultaneously have several calculators opened in Windows with adjustable size. When you start it for the first time, the calculator opens in a normal mode. To choose another one, click on the Menu button fashioned like three lines, the hamburger button, and open an additional panel where you can choose the mode you need from the list. Standard Scientific Programmer, Dead Calculation and Converter Depending on the difficulty of your calculations, choose the corresponding mode. In the Standard mode for basic math tasks, Scientific for complicated calculations, Programmer for working with binary codes, Dead Calculation to work with dates, and Converter to convert units of measurement. For example, if you need to work with complicated calculations, use the Scientific mode, as the calculator will work sequentially in the Standard mode. As you can see, with the same conditions, we get different answers, because in the Standard mode, the calculator doesn't observe the first rule of math. When you switch between the modes, current calculations will be cleared, but the operating system saves them in history and memory. In such modes as Standard Scientific and Programmer, you can save numbers into memory, and history keeps all formulas you have used since the app was started. To save a new number into memory, click the MS button. To retrieve it from memory, click MR. To show the list of numbers saved to memory, click on M, if you need to adjust the window size to show the folder list, for example. To add or subtract a number saved in the memory, click on the buttons M plus or M minus accordingly. To clear the memory, click on MC. In the Dead Calculation mode, you can quickly find out how many days that there are in a selected period between the two dates. As well as in other programs, you can use key shortcuts in the calculator to make your work easier. For example, by pressing the Add key, you can calculate the square root of the number you have entered. By pressing Ctrl L, you can clear the app's memory. Now let's have a closer look at Converter. Here you can quickly convert one currency into another. All you have to do is to enter the amount of the currency you need to convert into another one. For example, you have dollars into rubbles, euros, produce pounds, and so on. Below, you can see the relevant exchange rate for the current date and time. You can always click on Update Rates if the date differs from the current one. You can also learn how many gallons are in 5 liters. As you can see, it's a bit more than 1.09 gallons. If you increase the volume, you can see how it corresponds with standard baths, pools, etc. You can also work with weight and mass. For example, you can see how many kilos there are in 100 pounds. You can convert temperature, for example, from Fahrenheit to Celsius, and see that 1 degree Celsius is almost 34 degrees Fahrenheit. It's easy to convert speed. For example, from kilometers per hour into miles per hour, as you can see 100 miles per hour is the same as 160 kilometers per hour, and in the same way you can quickly change the values to feet, centimeters per second, knots, and so on. You can also find out how many megabytes make up one gigabyte, or have a look at all the possible units to measure data. You can also use other converter parts. For example, if you are looking for furniture online, find a good model on the website, but the dimensions are given in feet only. You can easily convert them into centimeters, millimeters, or another unit which you are using. As you can see, there are many other units for converting length, mass and weight, energy, area, power, pressure, angle, and so on. When you work with a computer and you need to convert one unit of measurement into another, you can always do it very quickly by using the calculator in the standard mode. If you didn't find the app on your computer, don't worry, you can install it easily. First of all, try to find it by typing its name in the search field, and if it doesn't work, go to Microsoft Store. You can find it in the Start menu. And type Windows Calculator in the search field. Or choose another one from the list that you like better and then click on Install. As a result, installation will stop immediately, the calculator will appear in the Start menu, and you'll be able to run it from there easily. If you already have the app on your PC, but it can't start, try the following trick. Go to Settings, System, Apps and Features. Select Calculator from the list, click on Advanced Options, and then Reset. Then try StartNet again. If you've been using one of the earlier versions of the Windows operating system and cut a custom to the old version of the calculator, it's quite easy to install it. Pull the link in the description for this video and click on Download Old Calculator. However, don't forget to check the link for viruses with the VirusTotal service. You can watch one of our videos to see how to do it properly. You can find the link in the description as usual. As you can see, all is safe so far. And that is all for now. Hit the Like button and subscribe to our channel. Leave comments to ask questions. Thank you for watching and good luck.


The T2 Tile project is building an indefinitely scalable computational stack. Follow our progress here on T Tuesday Updates. Welcome to the T Tuesday Updates, our top stories this week. Intertile events finally have some progress in it. Intertile event is the whole idea of being able to do tiled software, tiled hardware, where you can have lots of tiles that connect to each other and the computation doesn't have to really know about it because it can have events that happen entirely on one tile or that happen on an edge and start affecting other tiles. I've been blocked upon this for a while now and I really think that the idea was was that I thought it was going to be simpler than it was and I thought I was going to be able to just make small tweaks on the existing code base so I could just try like the easy low-hanging fruit part of intertile events but every time I tried to do that I would just get myself into more and more trouble so this week I did step back and I didn't write any code at all. I just wrote text and made lists of things and tried to design state machines to say when you're being a tile and you're waiting for an event to begin then do this and so on and so forth and draw pictures just like the pictures that had had for a while ago for the lock state that happens down in the Linux kernel. All these state machines are running up in user space in MFM-T2 the thing that's actually doing all of the logic for programming. Still unhappy with it you can see this clearly a work in progress of arrows that go nowhere and so forth but I feel good that this route can lead to actual progress so that's the news there. So each tile has six intertile connectors each intertile connector needs its own state machine because they can be doing events on behalf of neighboring tiles independent of whatever the tile is doing as far as events of its own almost independent of. So that's the story on the intertile events it's less progress than again as always than I would like but at least it's starting to move so that's good. Also zone frame production advances so the the zone frames are these things that you know that we have that snapped together and are going to support groups of tiles from the back we've been trying to build them and design them for a while got something that we were happy with and was actually just trying to crank them out oh yeah well we'll get to that in a second and here they are these are not good buckets we've got one one two three four five six each of these is eight frame pieces this is the special non black frame that I'm thinking of being the power zone that has the key master in it this is six we need ten or maybe eleven to have a spare so we're more than halfway there although still got quite a bit to do I've got another order for the jet black PETG filament the plastic because in fact as you can see in this picture the previous roll was starting to run out while it was printing one of these zone frame pieces I had gotten confident you know supposedly the Prusa i3 mark 3 has a filament out sensor built into the head so that it can tell when the sensor runs out now the version I have which hasn't been upgraded use a light sensor looking at the filament and if you had light colored or transparent filament it could get fooled this was a known problem it's been fixed in later revisions I haven't upgraded but this is black filament so it's like totally fine and finally I said come on let's just see it work let's just and every time I would watch it get close to the end I would check it out and stop before it actually the plastic disappeared into the thing enough so that the filament out sensor could trigger I let it trigger there it is it's almost gone now and then it did stop and it displayed the thing and said you know press filament press the knob or whatever it was and it was supposed to back out the filament I pressed the knob the filament did not back out I heard the the gears inside going to try to push it out it didn't come out and thus began another terrifying 3d printing story this is the story of 3d printing in 2019 at least in Dave's story and then it asks you whether the filament unload worked correctly and it hadn't so it says please open idler and remove filament manually well well thanks I'm I appreciate you saying please I got out the stuff I started working at it you know my you can see my printheads getting kind of dirty there's been quite a bit of filaments going through this thing but I opened it up and got into it as best I could and tried to remove the filament through the idler the open gate there I got this piece of it out it was you know partly melted and all horrible and I had to really kind of pull on it pretty hard but it still didn't get I couldn't load from the top successfully it was still jammed I didn't know what to do finally you know and this is you know the more experience you get with something kind of the more cavalier you get about it well you know I went at it with the dremel just going in from the top trying to get a piece out and I did there was another piece that was jammed in there that I managed to drive down now I tried punching several things you know with bits of coat hanger and whatnot to try to dislodge it the dremel is what did it tried to load it and it actually loaded and in fact you know yes so there's the piece that came out so it went down in the process of trying to go back up it folded in half and wedged itself in there pretty darn good in any event I've learned my lesson don't trust the filament out center sensor ever but we are back in business and eventually I switched over to the urban gray PETG to print that lighter-colored zone frame that you saw a moment ago so that's the story there also a Q&A from last week when I was showing the pipe hangers that were going to carry each set of power zone frames and I was still you know I had done some extra support here because there's some flex some bend in the where the pipe hook joins into the back of the frame Nathan King asked the very logical question or I mean made the very logical comment maybe you could eliminate the flexing in the hanging hardware by repositioning the base of the hook to be the center of balance in line with the hanging rod instead of justified to the back of the hook well that makes sense I decided to give it a try and you know so this this is what I've been using this was the latest version that I had this is the piece that connects to the power zone frames this is the piece that goes over the hanging rod they go together and I had shrunk it up and and so the idea was you know could we make this attachment point closer to the midpoint of the rod like that so I designed one like this sort of like much more like a question mark and I printed up a stack to try out the thing and there they were it took a while and and there it is and it seems pretty reasonable I actually get sort of kind of like the contrast and color for the for the pipe hook part of it because in a way that's not the scalable piece of it right you know that that's the part that's just being done for this demo for this particular mounting application so kind of making a different color sort of makes sense from that point of view but there is a remaining problem with it because of the just as Nathan was pointing out the center of gravity and because the frame goes along the back of everything and all of the weight except for the frame itself is on one side the center of gravity does not go through the frame itself so here you can see it's kind of hanging off to the back as we go and in fact I did kind of think about this and that's why I actually had had it sort of at the back the idea was to make it rigid enough so that if the center of gravity is somewhere in between the front of the tiles and the frame that it would be somewhat underneath this thing if we had enough strength to hold it rigid I mean we could try to have hooks or something or cables running down the front to balance out the load but I was hoping not to do that at the same time these these guys I did like them because actually the the curve that goes around the thing in this I designed it to be a little bit more than 180 degrees so it kind of pops on and pops off the rod rather than just hanging totally by gravity feels a little bit more secure so I think I probably will keep it the thing toward the back so that the net center of gravity is more or less under the center of the rod and just deal with the flex by strengthening things up a little bit but I think I may also try to see if I can't get a little button a little snap on for the hooks as well so anyway Nathan thank you for the suggestion you know the sort of these obvious things that you get so close to one's own design I get so close to my own design I don't even think of alternatives to it and you know it's it's good to be reminded I mean it might have been nice thinking back of it afterwards if we could have arranged so that the the power zone frame was closer to the tiles closer to the center of gravity and the little feet socket pops were going through the back of the frame and so forth but that ship has sailed all right there's another view so that's the view of the old one that that does get the thing to hang a little better at the expense of having a little bit more flex and the thing all right so that's the story on the news of the day our feature in our last couple of minutes I want to talk more about the stuff that was doing in Ulam 5 and actually try to show a debugging demo because this is a work in progress one of the things I have wanted to do for a very long time in Ulam is develop a library for doing bonds like chemical bonds like this guy wants to bond with that guy and once they've bound they kind of stay together they can still move around and they can break the bonds and reconnect and so on it's very useful to have stuff like that to build flexible structures that can persist but still move and that's the whole trade-off that we're trying to get in the movable feast is getting stuff that can perform some integrated structure bigger than just individual atoms and yet still be movable and I've made a lot of progress in the last week on using this multiple inheritance in Ulam 5 to do to do that and the trick is I've got a base class that has all of these general things I mean the whole idea of robust first programming it follows a typical pattern and for each of the elements that you're writing what what I've starting to emerge as the programming paradigm is step one is you do a consistency check at the beginning of every event you look at all your that your redundancies that you have I have a bond to that guy he should have a bond to me so you double check is that still true and if it isn't you have some pre-specified action that you take like break the bond erase yourself whatever it is and that's just part of the logic of the thing that if it detects an inconsistency it's going to go ahead and fix it in some way right there and so then I developed these little where this little bondo guys so here's the trick so there's a class called bond that we're making that's actually a template meaning that you can get tons and tons and tons of classes from it by putting in different values of the template parameters so this is a bond that takes an arbitrary tag I gave it b o d o in hexadecimal it's like bondo there's no n in hexadecimal so it's a boat oh and it has true or false saying which end of the bond it is because each bond is oriented and then how many units away in the event window you can see it so this is a length three bond that's you know the true end of the boat oh and then we also have one that's the false end of the boat oh and so the idea is once you can make multiple instances of this bond class by changing the template parameters and then you can use template you can use multiple inheritance mid bondo to try them out this is going to go a little bit long I'm going to go longer than my 15 minutes I do two of them and manages to stay under but I'm going to go a little bit long here alright so the idea here is we have a class head bond bondo that has a single bond worst head bondo there it is it has the base class bondo that everybody's going to be supplying stuff specific for the bondo demo and then it also has a bondo from a tail bondo it's the same thing except it has a bondo to and the mid bondo has both like that and so we have a seed this is the other another thing about robust first programming is that generally you have the thing construct itself from a single element which is a seed so we have a seed bond oh alright so let's try all this because this thing has got a bug in it that I've actually made some progress debugging but I decided to show you the bug instead because it's kind of a useful thing to know about I mean I know a lot of folks aren't programmers and even the ones who are programmers are really not very many of them are oolong programmers but this is important for the for the folks that are and just for understanding how things tend to work in movable feast machine robust first programming so we make a seed now what I'm going to do is I'm going to click this guy all the way on the right that's the arrow and now I have a yellow border around this tile and you can have it on any of them remember how to get rid of it there it is right click to get rid of it but I'm just going to do this one and what that yellow border means is that now events are being recorded and if I now go ahead and I deliver an event again using the magic wand tool that we saw last week on the seed bond oh it pops out into a head bond oh a mid bond oh and a tail bond oh that's what the seed does but there's also this red outline and that's coming from the event recording system and the red outline means we're sitting right after an event if it was in a green outline it would mean we were sitting right before an event so if we go back in time there it is there's the seed bond oh again now the frame is green because we're before the event we're after the event nice we can use the atom view inspector you can click right to pop up multiple ones click left to just pick the select one of them there it is so so here's our head by now this is probably going to be a little small maybe if I crowded in here I can zoom in and post so the head bond oh has a bond site going to one well what is one we need our event window image always available so site one is to the left and to the left of head bond oh is indeed the mid bond oh and in the mid bond oh also has a site one because it's always relative to you and the mid bond oh and he's got the tail guy and so forth so and then the he's also got a four which is the other side to the east to bring him back in it's all looks perfect if we let a guy have an event let's see did he do anything why didn't he do anything I don't know why he didn't do anything why don't we just let him run okay now what happened we lost our bond those well that's because there was a bug and when something detects an inconsistency it suicides and once one of them suicided the other ones detected inconsistencies because they thought they were connected to something that's no longer there so they suicides the whole thing evaporates normally you just say rats I missed the event but with the event recorder we just go back in time and we can go back as far as we need to go and then we can go forward so there it was right there so we lost our tail Bondo somehow now why don't we pick up this guy whoops I delivered an event I did not want to deliver an event there I wanted to move our guy so there it is so the head Bondo is looking at bond site 11 11 is to down that's where it belongs and so the mid Bondo is pointing at 11 for the next one see that's messed up also and I figured out actually and so in the next events we can watch this thing yeah in fact mid Bondo said I don't make any sense I'm gone later the tail Bondo picked it up and did the same thing and so forth but we can now go back further and that's what it was to see what the event was do we still have it yeah the mid Bondos up here the tail Bondos down there and the actual bug is I guess I overwrote it the actual bug in this case is when they're just moving around into empty squares it works fine but when they're working when they swap with each other just at random the third guy can get messed up and you know I knew that was coming it's just a bug anyway the event recorder lets you go back in time as long as you don't inadvertently hit the magic wand and make more events while you're in the past because it'll do it but it overwrites the future ahead of you it's a big help in along with the Adam view panels that we see here these Adam view panels have also now been extended to include the type the base class that the data members come to because these darn mid Bondos they got two bond sites one for the Bondo from and one for the Bondo to all right that's it the next update will be out in a week it's the last week of October which means I have to make a decision about what I'm gonna do in November we'll talk about that next week sorry I went so long thanks for being here


So in a world with people who are loud energetic and what seems like they're more confident than you, how do you stand out in that world as a student? Let's get into it. All right guys, welcome to the MD journey. A channel completely dedicated to helping students succeed on their journey with less stress through videos and podcasts about studying productivity you name it. So if you're new here, definitely consider hitting that subscribe button down below as well as that like button if you enjoy the content of this video. If you're listening to this on the podcast, also consider subscribing on your favorite listening platform. But today I really want to speak to the introverts in my audience who are struggling because they feel like they're just as capable as their fellow students or their fellow peers, but they're not sure how to make themselves stand out because they're naturally quiet. And it seems like everyone is more confident and they look more capable, but you may just have the same amount of capabilities. You just want to really know how to make your presence known. So if you're out there, let me know in the comments down below if you're watching on YouTube, if you're an extrovert or if you're an introvert, I'm really curious what the split is between you guys. And as a full disclosure, if I had to put myself in the two categories, I definitely picked the introvert. And that seemed like a surprise, especially when you're making YouTube videos and podcasts and putting yourself out for the world. But in quite honesty, I'm a homebody and if I'm in an environment where I'm not used to the people, I'm usually the quiet one. It's not until I'm in a group of people I know for quite some time where I can actually be my extrovert itself. And a lot of you may be able to relate, but this episode is designed if you are that reserved personality and you want to know how to stand out on your classes or on your medical school rotation. So the first thing that I definitely recommend doing, and this is something that I would do, especially when I was transitioning from a medical student to a resident where I had to be more confident because people were relying on me to make decisions. And I would simply practice doing one thing every single day without a second dial. A lot of times it's very natural for introverts to be thinkers and process information and take their sweet time. But sometimes that leads us to holding back when we actually have something to say because we haven't given ourselves enough time to think or perceive if we're right or wrong. And so a simple strategy that I would use where normally I would feel more reserved and not speak up is find an instance during a day where you would normally say, okay, let me think about this and just be okay with giving an answer or a suggestion or speaking up. And as a medical student, a great example is if your attending was asked a question, normally your stance would be let me take some time and figure out if I knew it or not and only speak up if I have some confidence. But take an opportunity once a day to just speak up and give an answer. It doesn't matter if you're right or wrong. It's more about building the confidence to be wrong and going from there because this can definitely help you get out of that reserved personality and appear more confident to your peers as well as your attending. Now tip number two is to create a list of topics that you want clarification on. I know I ran into this as an introvert as a med student where sometimes it was hard for me to ask questions and a lot of my peers who look like they were more confident than me or more interested in me would definitely overshadow me. And so one thing I would do is at the very end of the day, I would create a list of questions that I had things I wanted to clarify on. And the next day I would simply ask because I was interested. And it's like, hey, Dr. So-and-so, you taught about this, you mentioned this, but I didn't quite understand this. And simply doing that, one, again, builds your confidence of speaking up.  So if you're on your rotations, you're struggling with being in that reserved personality, then this is a simple thing that you can do without forcing yourself to be overly confident or overly out there. I'm just asking questions naturally throughout the day and keeping a list as you go and find things that you just don't understand. Now tip number three is probably my favorite, and that is to create mastery and silence. The best way to get people to pay attention to you is gradually become so good at something that they can't ignore you. Now a good example, and this is a personal example, is when I first created YouTube videos, I know a lot of my medical classmates probably knew about it and then they kind of shrugged their shoulders and that was it. But as I started to do it over time, people really started to pay attention and now when people ask me, tell me about your YouTube thing or tell me about the MD journey. I can speak about that in confidence because I have built confidence in talking about it. And as I do that about the MD journey, I become more confident talking about a variety of different things and that's kind of the momentum and avalanche of confidence and the ability to get out of my introvert shell. So try to find your own areas to build mastery and silence. This can be both in the medical as well as the non-medical. A quick example in the medical area would be spending 10 minutes learning about things in medicine that mostly won't show up on your shelf exams. So most of your classmates aren't covering this. But as you learn about a little nitpick of information throughout, you know, each and every day over a week, you're going to have a repertoire of information and experience and knowledge that most of your classmates don't. And so you'll be able to speak to them when naturally one just shows up in conversation or when you're attending bring something up and you're just like, I actually know that because I've looked that up. And so finding these abilities to make mastery and silence works like a charm. I also recommend you do this in your own personal life. So a quick example is I know I had a classmate who initially people would ask, you know, what do you like to do for fun? And he would say, I love to run. But as you would learn more about his running hobby, you'd find that he was actually a college athlete. He broke many records he child for the Olympics and he was running multiple miles a day before coming to school. But as soon as you started getting him talking about running, he suddenly looked like a super confident, super extroverted individual. And while he still may naturally have that reserve personality, every time you now see him, you attribute him to the thing that he's a master on that really stands out from the rest. So ask yourself things that you're doing, things you enjoy both in medicine as well in your personal life, and ask how you can spend a few minutes each day or throughout the week to slowly build something that people will eventually want to pay attention to. But those guys are a few tips that I've used in my own personal life to break out of my introverted and reserved shell and be okay with putting myself out there. And as a bonus tip, the best way to increase your confidence as an introvert is the continued iterations of practice, of putting yourself out there, of being okay, of looking silly, because eventually you're going to realize that people just don't remember when things go wrong for you, and they do pay attention when you look more confident than they in. So hopefully this video in this episode was helpful to you guys. If it was, let me know in the comment section down below. Also with any suggestions that you guys have for future episodes, and also make sure to hit that like button.  And two, it also helps the YouTube channel and puts us out in front of more students who could potentially benefit from the content. And if you're not a subscriber, we're putting out two videos just like this one. So go ahead and consider subscribing on YouTube. And if you're listening to this on a podcast, definitely consider subscribing through your favorite podcast platform, as well as leaving an honest review through iTunes. But thank you guys so much as always for watching. I appreciate your support. And hopefully I've been a little helped to you on your journey. I appreciate you guys joining me on mine. I'll see you guys in the next one. Peace.