Thank you guys. It's really nice to see so many people interested in static analysis here and This year is a special year for piling because it is it's 12th birthday. So Yeah, basically, it's the oldest static analysis tool in Python that is still maintained, which is really nice so in this talk I'm going to talk a little bit about piling's history and we'll go through a Detour in static analysis and we'll see where where that goes So what is this lint thing? I'm talking about basically a lint is like a tool you use to analyze your code in order to find bugs or potential errors or Style checks or stuff like that. But Saying this about piling is an understatement since it can detect a lot more than a Normal linter. It's also a style checker which enforces Pepe roles It's a structural analyzer looking at your Classes and at your special methods and checking if they are implemented correctly. And it's also a type checker so piling works by using a technique called static analysis, which is basically the act of Analyzing code without actually executing it And if you don't use static analysis right now, you should use it You should use any other tool not just piling Because it can really help you in your day-to-day job For instance, you can use static analysis if you have a lot of tests and it takes a lot of time to run You just want to check that There are no obvious errors in your code or stuff like that Or if you have big legacy systems, which you don't have tests at all in fact as My first job experience I work in a company where we have a lot of big legacy systems But they didn't have tests. So using static analysis was paramount for for checking that Every everything works before going in in production and you can use it as a form of Doing reviews. Well, of course, it's not equivalent to a manual review, but It's better than no review at all right so Here's a piece of code which has a couple of problems And I'm going to show how piling detects this kind of stuff for instance If you can see I Imported OS, but I didn't use it across my program and I also define a variable which is just there It's not used of course. This is this is not a problem per se, but It leads to ugly code or unmaintainable code or stuff like that and more important is This block here from line 8 to 10 Let's let's just say that I invented that code Incorrectly and that code will now will not run because it's after an array statement. So basically it's useless code also Applying 10 I intended to call the execute method, but I didn't so that's also a problem And as you can see down down here piling detects this kind of stuff and properly emits that There is something fishy in your code Okay but we can detect More serious bugs than this like using undefined variables or trying to access members that don't exist or Calling functions that aren't functions like calling an integer and As you can see here piling detects this kind of stuff And it's really nice for a static analysis tool to tell you that you you made a mistake in your program And as I was saying Before piling is also a structural analyzer checking that your special methods are properly implemented or that your classes Are written correctly and in this case the dunder exit method Needs three parameters in order to work properly and piling detects this kind of stuff It emits that that warning right another nice Error that piling can detect is this one basically here I have a function and then I have an if statement with with funk as as a Conditions conditional for for the if statement and what I intended here to do initially was to call funk but I forgot to write the parents and This statement will always be true and that if statement if statement if branch will always be taken So if you write this for this for this piece of code you might How to say if you write this for this for this piece of code You might overlook overlook it if you if you didn't test it properly So piling can can help you in this kind of situation as well Take a couple of moments to figure out. What's the problem here? If you know to answer Yeah, really really loud anyone Sorry Var is being changed in the loop. So what's the output of this code? Who say that? Yeah, that's it babe, sorry basically what we did is we created a closure here and Var was looked up into parents scope when when called Yeah, doesn't work and Var was was Looked up in the parents scope and called and for this particular case the parent scope was the least comprehension at least on Python 3 so When the for loop was executed and callable was called Basically Var was the last value from the for loop which was 9. So that's a bug and If you try to do a review you might have missed this stuff and piling can help you Deal with this kind of situation Okay A little bit of history about piling it was created in 2003 by a French company called a logic lab they used to Maintain it for a while for 10 years, but now they are not so involved anymore. In fact, they are not involved anymore in piling development Even though many still Think that about about them, which is wrong I know that Google uses a Modified version of piling internally for their use cases because they had an A maintainer for G piling that was also maintainer for piling and they used to push upstream a lot of changes and some statistics According to oh look net we have over thirty five thirty thousand lines of code Which is pretty big but not big enough because we can detect all the problems in your code and unfortunately Piling is gpl. I says because gpl was really cool back then in 2003 It still is Yeah And here's my involvement with piling to basically I started working on it in 2013 when piling 1.0 was released and up to piling to 1.3 I Become a committer a maintainer the only maintainer and the guy that pushes the thing forward I'm planning to release piling 2.0 in 2016 if my time allows it and I'm going to have some Advanced techniques in it. It's still right now pretty advanced, but it's going to be even more advanced than that Basically, I'm going to use a technique called abstract interpretation where I'm going to Interpret statically your code not actually executing but statically Also, I'm going to add support for paper 484 what Widows talk was about and Changing the things internally like having control flow graphs and having a symbolic execution engine for for it Yeah, right And at this point you might ask yourself, okay, this is cool, but how it works and why does it work? statically First of all piling is split in actually in two components in the real checker Which is pilot and it's inference engine and the component that understands Python, which is astrayed When following the general pattern of building a linter basically we're using abstract syntax trees Even though our abstract syntax trees are augmented with a couple of functionalities that help help us in in building the inference engine And internally astrayed uses the built-in module AST Which kind of looks like this when using it you import parsed and you give it a string and from there you get an abstract syntax tree which Basically looks like this so if you can see at the top of the tree we have a lambda which has a couple of arguments and the blue the blue stuff out there the blue thingy is is a node and the rest of them are just attributes of those nodes so as you can see it's pretty structured and You can just by looking at it. You can reason about code Even though AST is great. It's built-in. We don't have to write our own parser it's not perfect because The it's not backwards compatible not even for minor versions of Python releases like 3.4 and 3.5 basically they they are going to add new nodes or remove nodes or change things out there and astrayed strives to be a backward compatible Rapper over AST that you can use for Python 2.7 till Python 3.5 and as well for Pipe I or gyton or any other interpreter which supports abstract syntax trees and DAPI is quite similar with the with the AST as you can see it doesn't differ too much We have basically the same functions Yeah, so if you're using AST right now and you want something more capable you could use astray and as I mentioned our Astray nodes are quite similar with the one from AST But we augment them with a couple of capabilities Specific for for our purposes Like in this example for instance You can actually retrieve the parent of a over node and you can you can walk up in the tree starting from one node Also, you can walk down by using the get get children method, right? Also, you can retrieve the lexical scope of a variable for instance in this particular case the lexical scope of foo is the function where it is defined and Down there at the least comprehension basically I'm doing foo for foo in range 10 and The scope of of foo at least on Python 3 is the least comprehension itself. So foo doesn't leak outside Yeah, and pilot can actually know this kind of stuff and astray Some nodes are augmented even more or more than that like in this example, we have a couple of classes and We're using a meta class we're using ABC ABC meta and we're defining some slots for for our class and Yeah Let's see what pilot can do what astray it can do with this code So we can retrieve the slots of the class using the slots method or the meta class using the meta class method or Using the MRO method We could retrieve the method resolution order of your classes Which is actually the method resolution order when running Python over that over that script or over that class Which is nice Yeah But the most important part about astray is not the AST itself But the capability of doing inference Basically inference means the act of resolving what a node really represents like if you have a name in that name It represents something like a variable or a function call You want to infer that and you want to see what's at the end of the of the tree for that particular node Our nodes basically Implements the Python semantics for instance a call func inference rule will be the return values of the call func or for list list Comprehensions its inference rule would be the actual list that is returned when evaluating the list comprehension and our inference also does some partial abstract interpretation, but it's partial because It's not working for all the cases in your code Right, and in this particular example, we have a function which adds Two values the argument And as you can see in this particular case When in in foreign what this function actually returns in fact when in foreign, what's the result of the function called? Astray knows that it's 48 because 24 plus 24. It's 48 Yep, this is a more complex example Involving binary operators and if you know The rules of binary operators in Python goes like that if you have Two different objects and you try to add them first the Dunder add method of the left-hand side will be called and if that doesn't return not implemented then I think the Right-hand side object no, no, I think that the Dunder are add method of the right-hand side object will be called And in this particular example, we're having in the left-hand side a Supertype which is a as you can see a is a super type for B because B has as its base class a and in the Right-hand side, we have B which is a subtype of a and the rules are a little bit different in this particular case because if The semantics would be the same as for for the different classes a rule then the first rule then to first method a Dunder add will always be called which is wrong and in this particular example What will happen is that first the Dunder are add method of B will be called and in this particular example it returns not implemented So it will fall back to the other one, which is a Add the Dunder add method from a and if you do the calculations you can see that as read this right The result of that operation is actually 45 Yeah Okay now As for it is great pilot is great, but they can't really understand your code I mean they can't really understand your full code. So we have to deal with this kind of situation and We provide we're providing providing a couple of APIs that could help you like having node Transforms basically we're with a node transform We can modify a part of the AST to be some something else Like you have a function call and instead of that function call you want to do inlining Replacing the AST node with the result of the function call or anything you'd like and we can do that with this API Basically that API is a function Which should accept one parameter that parameter being the original node and should return either to the node modified or a new node and You just register that function with an internal manager So an implementation detail, but anyway, you just register your transform function and when doing asteroid dot parts That the transform function will be called for for that particular type of node in this example, I'm registering a transform for the class node and Also, you can apply a filter function because you don't actually want to change all class nodes in your code We you want to change Something in particular and as you can see There I'm just Giving it filter functions for filtering any other class that it's not six at meta class The same thing can be used for inference rules because At some point really you want to have different inference semantics than the Python Python offers you so using the same API you can you can provide a custom inference rule for I don't know Want to infer these comprehensions differently or you want to infer function calls differently? So you're using this inference inference rule and you're changing basically the semantics of Python in your AST and We're eating our own dog food in this example Not in this example. We're eating our dog food with inference rules because we have inference rules for built-ins as I'll show you immediately Basically with inference rules We're understanding existence is subclass. We're understanding the author has a Type callable list set whatever we're understanding not in particular with inference rules binary arithmetic operations really really Good logical operators or comparisons Also, we're understanding context managers and list set string indexing slicing whatever Yeah As earlier take a couple of moments to see Where are the bugs in this particular code? There should be like three bugs, but if you can find more Join piling sting Also, if you know the answer yell really loud and as a hint when How super works basically the first argument of super specify no the The last argument of super specifies the object From which the method resolution order will be retrieved and in this Sorry Yeah, that's good because in that particular case Super see and self would would be to method resolution order in this particular case I don't know what it is, but super see self will call Be because a doesn't have boo. Yeah, and it's multiple cooperative inheritance if I Not mistaken and be boo will be called and be boo doesn't accept two arguments Anyone? Yeah There's no spa and There is a full Sorry, sorry, there are too many voices one at a time Foo is not cool. Exactly so Piling detects this stuff because asteroid knows Python really well And as you can see what what piling says there are too many positional arguments at line 14, which is actually true Foo is not callable of course because who is an integer and Super V has no spam member, which is actually true because it's spam not spam Yeah Here's a more complex example of asteroid capabilities and as you can see here asteroid understands List indexing understands has author callable yet after and at that particular line where met is retrieved what will happen is that has utter call will return true because a has the method called met and a met is callable and Get out from get the met from a will return the met object so it will be like true and true and a dot met and In this particular case the last value, which is also true will be returned so met will be a dot met and then the context manager is invoked and The context manager will return a real funk which has no argument whatsoever And we're going to call that and piling will say that hey you use too many positional arguments in your method call You should change that so this kind of stuff that asteroid knows about Python code and Concec and Piling knows knows about it as well Yeah I don't know. I'm going really fast or How much time do I have? Okay, thank you Piling is not so complicated asteroid is the most complicated thing Basically, it's like a fancy walker of the AST and it has a couple of patterns more than a couple because pilot can detect almost 180 type of errors or Verifications And basically we are we are using the visitor pattern to visit each node because that pattern really decouples your data structures from your algorithms and A small example of how visit Visitor pattern works Let's say we implement in our own checker visit call funk And in this particular example, we're importing collections and we're Obtaining the default attribute from collections, there's no default attributing collections by the way it's default dict And what will happen is that visit get author will be called with the with the node which will be the get author node Afterwards we'll infer what that node really represents. I mean what the parent of the statement really represents the parent will be The name the name collections and we need to infer it because we should know what that node represents at the end of the AST Afterwards we're we're calling the data through method with the result from the inference And if that doesn't raise Any error such as not found that yay collections has default to default attribute Else we're going to emit a no-member error But before that we're going to have a couple of Filters like it's the owner is a mixing class because you might not have that attribute in a mixing class or I Don't know what the owner is a class with unknown bases like Bases from extension modules And we can't really understand extension modules by the way Yeah I'll go really fast from now on because I don't have much time left Basically Abstract interpretation will have piling for for this kind of code in this particular example The dunder date is updated with the dictionary of I don't know what kind of arguments will be passed and the at line five We will call some arguments set in dunder in it or whatever other attribute and that attribute might not exist and What happens right now is that piling says hey you don't have that attribute But we're actually having that attribute because we just inserted it at line two so That's what abstract interpretation is going to fix because you will just interpret every line Every logical line in in your code and it will know at the end what side effects each line had okay, we have multiple type of checkers and errors such as conventions for Pepe tools refactorings Various warnings which are necessarily bugs in your code and actual bugs like Like no member or not global things like that and we have two types of checkers a C based and Token based the token based checkers are for I don't know Line is too long or bad the indentation or other similar examples Piling has a really vibrant community. There are a lot of External packages for improving in furnace for improving piling checkers out there You could write your own if you want to as the problem is that They are pure Python so you need to write Python code in order to have a custom checker Yeah, it comes with a couple of features Extra features like you could generate you a UML diagrams from your code or you could spell check your doc strings or comments these are disabled by default or You could use the Python port Python 3 porting checker, which is a checker when when activated All other checkers are disabled and it will emit stuff that it's not going to work in Python 3 anymore like using remove syntax or Remove built-ins or special methods or my favorite is using map filter or reduce in non-interval contexts As you can see in this particular example on Python 3 map is lazy evaluated and In this particular example download your role will never be called because at least on Python 3 because You should evaluate it first Yeah, it will return a generator stuff like that Okay, oh There are a lot of similar tools like pyflakes my pie Pie checker pie checker basically is the forefather of piling And I should say a couple of things even pie checker is now defunct and dead for a couple of years It was way more advanced that many of static analysis tools that exists currently in Python As you can see in this example We are unpacking three items in two variables or we are having a constant check or We're catching an exception, which is not really an exception through and pyflakes as you can see detected almost nothing While pie pie checker detected all of these errors. Yeah, there's also Jedi my pie Okay, yeah Final note is that users at least a part of them actually expects this kind of code to be understood but Really that's not actually possible. So if you want static analysis tools to understand this Just don't do it. Yeah Yeah, and this is basically the future of piling We'll have piling 2.0 next year. We'll have full flow control and analysis better data model like understanding the scriptures or Having the proper attribute access logic it's not the same in piling as it is in Python and I'm interested in bringing more contributors into the project and My final slide is Hey, what your Talk title is how do I stop worrying and start loving the bugs and so on Well piling helps if you if you're going to use it and if you were going to write as many tests as possible So use piling Thank you I've got any questions or many questions Hi, I actually have a comment or a word of caution and the question The comment is if you're going to start piling It will take you some time to configure it to make it shut up about things which don't interest you But it is well worth the time to do so And the question was how did you get into? this kind of parsing Python and ASTs and I mean I tried to write piling plugins and because there isn't really much Documentation for piling the best rate it found it's very hard to get into this topic I was a user of piling before and It had a bug like it didn't detect Stuff like it didn't take unbalanced couple unpacking like unpacking three items into two items and I had a bug in production with that stuff and I just wanted piling to hey tell me about this So I implemented that check and I started from there Okay. Thank you One other question. What are your thoughts about pylama? Pylama, yeah, if I'm not mistaken is a rapper over over multiple check over multiple linters like pilot and flake eight Yeah, so it just takes pilot and other stuff. I never use it More questions There's one here I'm not sure what is can you be more visible At the front again Hello, so regarding the the the first question the most common complaint complaint about piling Is that he has too too too many checks active? So maybe What if there will be like some sort of configuration wizard that will show you examples and rescue do you want this or not? Yeah That would be nice to have but I don't have time to write it myself I Sorry, yeah That's the question is there a sprint and piling there is there is Saturday and Sunday Thank you, and can you join if you're a beginner? Sorry, can you join to the sprint if you're a beginner? Yeah, of course great More questions. Well, I think it's fair enough. Um, they thank you again Clujie


سلام عليكم ورحمة الله وبركاته and welcome to our series I remember Umm Al- Benin علي السلام A series dedicated to remember Umm Al- Benin and what she stood up for especially standing up for humility her being the symbol of humility and today we have with us joining us سستة دعاء لنصومي السلام عليكم ورحمة الله وبركاته ورحمة الله وبركاته شكراً لك for having me سستة دعاء لنصومي سستدعاء، ماذا يجب أن تكون؟ كيف يجب أن تقوم بعمل حمولة؟ وكما يجب أن تقوم بعمل حمولة حمولة تقوم بعمل أكثر مهمة من أنفسك ومع حمولة وإذا كنت أرغنت أنت تقوم بعمل أكثر مهمة من أنفسك ومع حمولة أمام عدي عليه السلام لديه أجزاء جيدة عن حمولة one of them he says التواضع رأس العقل والتكبّل رأس الجهد humility is the head of the mind and arrogance is the head of ignorance so when you are facing hardship ignorant people cannot help you whatsoever because they need help themselves because they're ignorant and they're showing arrogance when you have the mind you are more likely to offer help you are more likely to help others when they're facing hardship in life in another quote أمام عدي عليه السلام says humility is a sign of nobleness showing high moral characteristic in yourself and in others offering them help at any time I'll give you an example to make it clear one of them is say that there is one person who is rich wealthy and they're very humble about it they don't brag about the money they have they don't show importance of themselves because they're wealthy and rich they're very humble about it and at the same time when they see someone who is in need of money who has some financial problems for example a friend that wants to get married but does not have enough money to get married and they're humble with their money they tend to offer help they will help them because they're humble with it however the one who is arrogant who shows off I am wealthy I am rich look at the house I have the car I have oh I got this much money they brag about their businesses they're arrogant what does that lead to them? ignorance they won't help when they see a poor who is suffering from hunger they won't help them because they'll just look at them oh look at that poor and they just have so much importance in themselves and that is why people with a humility are more likely to help others who are facing problems and there are so many examples that we can bring upon we can relate definitely definitely and how can we aspire to عم البنين عليه السلام in terms of humility how do we look up to her learn from her which she presents to us that shows a symbol of humility عم البنين عليه السلام she was very humble to the orphans of فاطمة الزهراء she showed them humility in many different ways she didn't want even her name to be said at home so that they won't remember their mother's name imagine that she didn't enter as her being the stepmother she wants to put rules on laws and she wants to rule the house and she took care of أهل بيت when she first got married حسنة الحسين were sick on that night and عم البنين took care of them she soothed them she nurtured them and she put them to bed imagine that and one of عم البنين عليه السلام's aspirations in life is to show each mother how she should learn how each stepmother how she should be with her stepson and it's very sad and disappointing that you hear about so many stepmothers how they treat their stepsons or daughters some of them torture them some of them bully them they mistreat them they yell at them unfortunately in laws as well we have many cases yeah and one of عم البنين عليه السلام's aspirations is to learn is to show each stepmother how she should be it's very sad especially when the father's not around you tend to see those stepmothers they bully and they be so rude and mean and don't forget even if that child doesn't listen to you because you're not his biological mother don't forget the pain and the sadness that's in their hearts they're trying to forget by that way this is how they react they might not listen to you they might be rude to you and for every stepmother who is hearing this message I tell her to go to read about the life of عم البنين and how great of a stepmother she was that is one of her aspirations in life her role was to show every stepmother how she should be with her stepchildren treat them as you would treat your own children عم البنين عليه السلام treated الحسن والحسين انزين بعلي السلام her stepchildren better than she would treat her own children she took care of them more because she knew that they are broken in the inside they lost their mother she tried to put that smile she tried to replace their loss and that is one of عم البنين عليه السلام's aspirations in life and this is how she showed humility to them she was very humble she took care of them she did not deny them anything until she sacrificed her sons for عم البنين عليه السلام she even used to tell like her children how to respect their brothers from a different mother instead of now where you see that so many stepmothers they make segregations and they treat her own sons different from the step sons and she makes that step son feel like because she's not my mother I've lost everything in my life I am being bullied I my brothers are better than me they have a mother and no that's not what عم البنين taught us and that's not one of her aspirations one of her aspirations is to show each step mother how she should be with her step sons indeed indeed and we have this famous story so we know عم البنين's name was فاطمة عليه السلام and why was she called عم البنين instead of فاطمة what was the reasoning behind that can you highlight upon that yeah the reason behind that is because فاطمة الزهراء had the same name the daughter of رسول الله who was Imam عليه's first wife so الحسن والحسين the orphans and زيناب عليه السلام knew their mother's name was فاطمة and they would always hear that name in the house oh فاطمة عم البنين was Imam عليه's last wife so أول هم فاطمة و آخر هم فاطمة the first one Imam عليه married was named فاطمة and the last one her name was فاطمة so عم البنين did not want look how sincere she was and how she showed humility she did not brag about it and say oh my name should be فاطمة the same thing as your mother's name she showed humility to them less importance she wanted her name she wanted to be called by a nickname عم البنين in order for the two imams not to recall their mother's name and remember them and in that case you know they will feel the pain the sorrow the loss of their mother they would remember their mother عم البنين showed humility to to الحسن والحسين and زيناب in so many different ways and again not out of fame not because she was the wife of Imam عليه السلام while raising exactly and she came from a very well known family عم البنين she was not someone off the street who did not be compatible to امير المومين she her father was known her mother was known her aunts were known her ancestors they were all known for their horsemanship herism courage and bravery and she came from a nobleness family so when she entered the house of Ali she was compatible with Imam عليه السلام due to the family she comes from but she was very humble about it she showed humility to them that you are better than me very interesting actually and speaking about عم البنين and how humble she was and she came from a wealthy background how was it that she adjusted to her new life I mean I can imagine in this day and age some youth or you know these newly newlywed spouses or the woman the woman or the man they would kind of need find a compatible wealthy person or someone that could kind of reach that standard how is it that عم البنين despite coming from a wealthy background adjust and accept the responsibilities that she was facing when Imam عليه السلام he proposed to عم البنين a night before that she had a dream and in her dream she saw that she was in a nice beautiful garden and she was looking at the sky the beauty she was amazed and she was looking at the moon and the moon fell in her lap along with three stars so when عم البنين was mentioning her dream to her mother حزام one entered and he told her your dream has just become true because عالي ابن أبي طالب has just proposed to you if you marry her if you marry him you will get a son who his face will be like the moon قمر بني هاشم مجرس العبس عليه السلام and three stars along so you will have four sons and حزام her father asked her mother how did you raise عم البنين do you think she's suitable for us to give her for عالي do you think she would not embarrass us in front of عالي like he was even humble with the amazing daughter he had he asked his wife how did you raise her do you think that she would take this role and عم البنين عليه السلام knew from day one that she is marrying the leader Imam and she knew her responsibility that she has to take care of his sons she has to raise sons from عالي عليه السلام in order for them to be heroes to be martyrs in order for them to be great characters in life and she knew her position she knew her mission she knew her role because Allah سبحانه وتعالى He gave Fatima to Zahra a role and she followed it he gave Zaynab عليه السلام a role and she followed it he gave Imam Ali all the imams all the infallible imams had a role and their wives also had a role عم البنين عليه السلام she knew what her role was one of her roles was to be a great mother for the imams that her second role was to be a great aspiration in life and to be a great mother to sacrifice her sons to raise great sons like العبس عليه السلام and her other four sons three sons along indeed سبحان الله what a lovely example and what a lovely way of kind of settling in your new life is there anything you can relate to humility and maybe relate to this day and age how we live by what other kind of what the examples we can use from عم البنين to humility with relation it's very important to show humility you have to show less importance of yourself for example if you come from a well-known family with a great name family of scholars family who's respected and you know that you come from this family show humility to others don't wait for other people to come and greet you because you are the well-known family and you come from this part of family who has the fame show humility talk to people you go greet them don't wait for others to come and greet you for those who are wealthy out there and who hear me I've seen a lot of wealthy people who just don't show their humility on the other hand there are some who are humble but there are some who are very arrogant where they choose their friends they make a group themselves they choose the wealthy people and they look at other people as they are low class and them are high class which is totally wrong because there is no such thing as being high class and low class in Islam and in the eyes of Allah and your money doesn't mean anything your wealth does not mean anything to us and to anybody and show humility help communities help the poor talk to everyone one day if your money was to be taken away from you you are nothing so have faith in Allah treat people nicely show humility and when you show humility to others you are not having low self esteem in yourself when you greet people before they even greet you that's not a sign of having low self esteem in yourself because having low self esteem is something totally different than being humble being humble is when you show less importance of yourself when you know that you are a wealthy person but you don't want to brag about it you want to be with other people that I am just the same thing as you just because of my money doesn't mean I am something you be friends with everyone you help people you help communities you help the poor you are humble about it and having low self esteem is totally different is when you are wealthy and you just giving the money around to people because you want to be humble that's not the meaning of being humble that is having a low self esteem when you are wealthy and you go okay let me give my money out people come and tell you give me 2 million pounds and you are like for no reason no that's having low self esteem in yourself that's an example but by you being wealthy and you talk to everyone you have very great friends who are not wealthy as you but you do help them you do help the poor you do help communities you help orphans that is you being humble so that is an example that we can learn another example as I mentioned earlier is when you are a famous person you are known you are known for maybe the family you come from maybe from your experiences in life what you work what you do what's your job for you being a preacher anything else show humility to others don't act like oh you have to come greet me I am somebody I am this person that's not humility you are really welcome to be other person doesn't it yes it does and it makes you if it's someone important it's like can I approach this person can I know it's really uncomfortable for the other person exactly and that's why our scholars the majority of them humble scholars are the ones who you could visit you could sit with you could talk to and when you enter you are like oh I just saw the scholar in my eyes where there are some scholars that you can't enter you can't see no one could see them unless unless exactly and you just see them on TV or you see their picture and you are just like are they here are they alive we just get news from them but we don't see them we don't see their daily lifestyle we don't see how they greet people how they talk and there is a very great scholar who everyone gets to visit and everyone gets to see and even children they would come back they would be like oh I saw him and they feel his humbleness yeah they do you learn a lot from that person exactly as well sometimes when you are locked behind for example locked behind the doors and you are not very out there and greeting people and showing yourself then it's really hard to set a good example whereas when you are out there and that's how أهلبيت عليه السلام were you know you could see how they sit with him you could see زيناب عليه السلام back in the days where she was a teacher she used to teach Quran فاطمت الزهراء used to teach Quran فاطمت الزهراء used to give to the poor help the poor أم البنين was the same they were humble they showed humility to others where us today we are nothing compared to them and we are arrogant we show arrogance which leads to ignorance what Imam عليه السلام said where we just assume that we are something and we push people away we act like we are bigger than people we are better than people but when you show humility to others it doesn't mean you have low self esteem in yourself because you are a psychologist and you know having low self esteem in yourself is when you are insecure with yourself and insecure with others where you just don't trust others and you don't trust yourself and you think everything you do is wrong but when you are humble it's totally different دوتي نفسك yes indeed كيف تعتقد أن one can reach this balance then I know we spoke about self esteem and we spoke about arrogance it's quite hard to reach a balance isn't it like a midpoint where I've got this money and I'm spending and I'm doing this to a certain extent I have this money this other person you said that has so much money yet he doesn't do anything about it because he's got low self esteem or he doesn't give or he doesn't maybe when you use his money wisely how can someone reach this this balance kind of thing and be aware as well not just you know sometimes you can reach a part of a level of arrogance but you don't even know it yourself right or you can be so ignorant about it ignoring you know your community for example or the needy or the whore the homeless again you don't know what is going on with this situation how can we reach this awareness one of our أهل البيت عليم صلى الله عليه وسلم they say ليس مننا من لم يحاسب نفسه if you do not punish yourself every night you are not from us you are not from a follower so it's very important as a Muslim as a believer of أهل البيت of Allah of the Prophet is to always punish yourself at night to sit with yourself and say okay I'm a millionaire here what have I done to Allah and to Islam and what have I done to myself okay I've done to myself I have nice beautiful cars outside I'm enjoying the money I'm playing I'm balling out there I'm enjoying my life and at the same time I just saw a poor out there who was asking who was just saying hi to me and I ignored them because I'm wealthy and they're not in my race so go back to that poor and say hi to them they just said hi it doesn't mean when you're wealthy someone says hi that means they want money from you right so sit down and punish yourself know what good you've done and what good you haven't done and go back the next day and fix what you've done for example if you have fame in yourself and you are not humble about it come back at home and be like everyone likes me and respects me due to the position I'm in and what I'm doing but hey I ignored a lot of other people let me go back the next day and say hi to them and greet them and be friends with them at least at least give them a smile so to reach the stage of humility you would have to understand the difference between low self-esteem is lowering yourself down and what the meaning humble means humility some people mix the meaning between them they don't know what low self-esteem is and showing humility does so some people think that if they help people for example pick up grocery they're having low self-esteem in themselves but when you offer help and you see like a lady or you see even a man who's struggling to pick up grocery and you're like I would offer you some help that's not having low self-esteem it doesn't mean you are made it doesn't mean that you are a slave being dragged you offered help but if someone comes up to you and says hey come here can you pick up my grocery and put them inside my house that if you would listen to them then you are not having dignity in yourself because they're treating you as if you are their slave they're made you should listen to them at all times so what you should do is tell them in my اخلاق in my manners I would help you if you would have said it in a nice way and I could help you so you show them your dignity if you choose to help them you can help them if not due to the disrespectful way they spoke to you so we're not saying have low self-esteem in yourself but be humble you can tell them due to my manners I'm gonna help you but next time don't speak to me like that because I have dignity in myself and I'm a believer and I'm a Mu'min and Allah SWT the dignity of one is much important دن رقل الكابة and we should all have dignity in ourselves and we all do it الحمدلله but don't make it turn to arrogance and don't be ignorant because when you're ignorant and Mu'ma Ali solves it straight with his coat when you show arrogance you're ignorant and when you show humility you are the one with the mind and always have the mind know what's right and what's wrong so when you know that this is wrong say no when you know it's right say it's right because you have the mind and you know one to be humble and one not to be humble so say for example you are wealthy okay and everyone comes up to you and asks you to pay for this community and you know that this community is not legit and you know the money does not go to the poor and you know that they're not using it enough and you know on the other hand there is a community who is very humble and who really needs help help them don't just say because this community and this community does not use it wisely I'm not going to give any communities at all so if you are the one with the mind you know what to give and what not to give and how to strike the balance between being humble and having low self esteem and that's where reflection comes in doesn't it when Mu'ma Ali himself says and he allies the his parents and he does and he does and he does and he does and he does and he does and he does and he does and he does and he does and he does and he does and he does and he does and he does and he does and he does and he does and he does and he does and he does and he does and he does and he does and he does and he does and he does and he does and he does أبا أياس و أشعر أبا أياس كما نفعله يسيحه العراق يوجد كثير من الأشياء ولكن أوهامة دليلة نحن.. أعلم أنه يكون أسرع لا أستطيع أن أتكلم أستطيع أن تكلم كما أنه حيث أن يكون حيث right now حتى من المحاول أن تكون حيث لا أستطيع أن أتكلم حياتنا كانت مفتاحة نحن كانت أخبارنا every morning they'd make a huge breakfast for us and now that's no longer everything was so perfect and then all of a sudden our boys are no longer me and my three boys would work at the bakery on our own my wife would come down sometimes to help us but I wish she wouldn't but it was really like we were a family business there's no pain like losing your two sons it's the most heart wrenching pain I've ever been through every day I wake up hoping that they're still here how does it make you feel knowing that your sons were eager to fight they were so excited they came in with tears in their eyes and as a mother I had to show joy for them but deep down you know you don't want them to go you want to keep them safe and I wish that last hug when I had two my sons I just held them a little bit tighter I wish I never let them go I know it's tough to put yourself in those situations but could you take me back to the time of when you were speaking to your sons trying to show them support while having the feeling of fear knowing what could happen trying to show them a brave face and show them how proud I was I always supported my boys and they were so hard working I remember telling them that you know you can do this and I believe in you and that I couldn't wait for the day when they came home safe and sound so as a mother how do you feel or can you take me back to the time of the news when you heard that your sons were martyred I can't even explain I'm sure my heart stopped for a second I had no words to explain how kept telling myself it wasn't true and I tried to sleep and just pretend I didn't hear the news and that it wasn't real How long did it take you to actually process what had happened I don't think I'll ever process the news even sitting here now I still feel I'm going to go home and see my boys It was difficult for her She tried to get over it but it's so hard when you lost your own flesh and blood like that so as a father how did the loss of your sons impact you and especially do you feel that you had to be strong for your wife especially yes I did have to be strong for her he's been there for me he's my rock I mean my boys used to be my rock and as they're no longer here I have my husband to thank my world fell apart when I heard the news but one look at her and I would keep it together so you have strength between the two of you yes we do yes we have to be strong for each other we love each other we loved our sons and other than each other is there anyone else or anything else that you could tell me that gave you some strength and hope in this tragic situation I'll have a benin such a figure to look up to the hope and the strength that I've got from the figure what she went through was it's a great role model it makes you think if she can do it then we can do it of course I've tried to implement everything into my life and try and have that hope and strength and if it wasn't for her then I don't think I'd be here today so we have the role model of Um El-Bini to help you through this tragic moment and you have each other is there anything else that you can sort of highlight as to the strength that keeps you going each day she's my lifeline caring for her has helped me survive this with I'd say even though my boys are no longer here their duties and what they wanted my boys are keeping me together so overcoming this tragedy is not necessarily that you forget what happens but it's more about trying to live through it every single day and that's the most difficult time so could you give me a detailed scenario of how this actually occurs in your house daily overcoming this I try to pray every day and I try to use my strength and I rely a lot on my husband to pull me through every day my neighbours actually they refer to me as the noble figure which I always say to them no one's as strong as wise as her she really is a figure that no one can be compared to I can't even begin to explain how her strength and how she's inspired me my husband is there for me every day but Mel Benin has been there for me I try and as I say pray every day and how do you remember your boys now I still have the uniforms I have my t-shirts I loved my sons they were so great they were so talented and they went to go fight for their religion they believed in their religion they prayed every day I never had an argument when I went to the bakery they worked hard just to look at a photo of them now I can't help but this photo just wish that they were here in flesh you have no idea the impact this has had on our lives but we will try and get through it together yes we will and it's created even more strength between the two of you and family and community around you is that correct absolutely if it wasn't for my husband my friends my family my neighbourhood I wouldn't be where I am today I'm not going to lie every day is a struggle that's true knowing that my boys are hopefully looking down on me if anyone goes through this doing what we're doing basically supporting each other still believing in our faith we don't blame anyone for what happened these kind of things happened my sons wanted to go to war they asked my permission I said yes you can go and I was proud of them they were so wonderful that's an amazing statement that you've just mentioned it's showing strength and faith even through this and I think that's the best way to end this session to remember that through tragedy we have to hold on tight with family most importantly faith and we have our role models to teach us that and I just want to thank you for coming in today and speaking about this even though it was so difficult but I'm sure that you've helped so many people around you watching and learning and you've given inspiration and motivation that we can overcome this and I only wish you more patience more happiness I mean the two of you only increases thank you very much thank you I love you I love you I love you I love you this is a heartbreaking story what an awful story that was very hard to watch despite you know losing three sons وفتح ذلك ، قلت أصبحت ثلاثة ألوان ، لكنها قلت أنها ستساعدتها أخي وعلم الله سبحانه وتعالى أنه قلت كل واحد of us to test وعلمها أن تساعدت كل ثلاثة ألوان وعلم الله سبحانه وتعالى أنه قلت أحد منها to test وأنه يرى ماذا أهم في حياته إذا كانت أهمة في حياتي هو my son الله سبحانه وتعالى أنه ستساعده وإذا كانت المنحية ، الله سبحانه وتعالى أنه ستساعدتية إذا كانت جميعاتك والنسخة ، الله سبحانه وتعالى تساعدتك أنا أخذت أصدقائك في الله ودعي أخبرك will test you in your health هناك مصدقائك that هناك مصدقائك that's been mentioned where there was one man who was very strong and he always came to Quran وحده يحدث عن دين وحده يأتي من حياته which had no cure for it وكانه أخبر الشخص that I am a liar that I am a liar ونحدى أخبرني وقال لك why are you saying that because Allah test me in my health and I cannot handle this I cannot handle the pain, I cannot handle the struggle that I am going through so Allah tested him in that and he showed himself that he cannot handle he cannot stand up for the faith that he had the believing in Allah and Allah he is testing me you know whatever if Allah chooses to cure me later on if not then I have to move on in my life live with this illness until either I live or I die so this particular lady Allah tested her with the loss of three of her sons and imagine going back to the bakery that she is showing faith in Allah that she moved on her daily life yes she cried yes she was depressed probably she lost her appetite for months and weeks or days but at the same time she went back and she said they are martyrdoms and they went to Jannah and we are not created for this world you always refer to the hereafter that they are martyrdoms and they have their position in paradise and Allah has given them a great position and at the same time she was able because she has faith in Allah and she moved on to her daily life she went back to opening the bakery even though her husband didn't want her to do this but she had great faith and I bow for this lady today because I don't know like me as a mother I ask Allah to never make me experience this because I don't know how I would react to this losing three sons like not one like if you lost one and you have another two they will make you forget but all at once and again we remember Um El-Baneen because she is our great role model and we remember Zaynab because she is our great model because say Zaynab she lost her whole family all at once she lost her father her grandfather her mother even her unborn baby brother she lost all her brothers at once her nephews her nieces and she still moved on in life and she had her mission that she had to complete and we remember them to this is why we have the I remember series to always remember Ahad El-Veit yeah and I bow for this lady who lost three of her sons all at once and she still moved on but what makes such a lady move on is to always remember why we're here in this world it's like a mission we complete it and we go so she knew that their life has stopped till this time and she has to continue without them until she knows that one day she will also follow on definitely the love and understanding of Allah SWT that's our that's our duty in this world isn't it it's understanding to realize he exists to believe in him to trust in him and that's showing showing it through our actions isn't it and at the end of the day Allah says you know I do not burden a soul more than it can hold yes yeah and it's something that Allah has put into every human being that whatever the sufferings you're suffering from one day you will pass by it you will forget like when you lose a loved one a brother a sister three sons you will cry you will mourn you will probably be insane but you would still move on into your lifestyle other than and even when you remember your sons after three years you would cry but the way that you would cry the same way you cried the first time you heard that they were martyrdoms other than Imam Hussein Imam Hussein every year we remember him it's like the tragedy was yesterday it's like the tragedy was today and we would cry we would remember the tragedy as if it just has happened and this is why Allah gave each and one of us as human being this ability to move on and forget and not to forget totally but to forget the tragedy itself that has just happened later on in the days is because it's nothing related to Imam Hussein he gave the most horrific pain that will never be removed for Imam Hussein and Alhamdulillah we have people such as أهل بيت role models for us to always flash back on what has happened to them and when we remember like what we lost we always we will get sad and depressed but at some point we will probably be able to talk about it but when you remember Imam Hussein you would cry you would mourn as if he was just smarter especially on the 10th day of محظم when you remember أمو البنين and how she lost her four sons you see people who are mourning and weeping and screaming and yelling as if it has just happened and Allah gave special الله سبحانه وتعالى gave things special to أهل البيت that he never gave to anyone else other than أهل البيت عليهم السلام may Allah please and blessings be upon them thank you very much سعاد I was very insightful may Allah bless you bless and bless all the dear viewers dear viewers thank you for watching stay tuned السلام عليكم ورحمة الله ورحمة الله الله ستعيد دي ليلي للباق أمو الباق يا عس والدل أمو الباق يا عس وحس


So yes, that's me, Lubin, these are my colleagues. I work for a software company called RAV Technology who specializes in open source dot center automation. And OpenPCF is our main product, our main open source thingy. And I'm going to tell you today about OpenPCF, about what it is. I'm going to show you how the framework works. I'm going to show how you can use it in practice, you know, how you can use it on a machine and to configure it automatically. And I'm going to show you how you can use these results to bootstrap an empty data center. So to use a machine as a beginning to automate the rest of your environment. I will close my talk with a quick overview of current features, upcoming features. And before I start delving into OpenPCF itself, I want to give you a quick overview of the context. Why did we develop something like OpenPCF? So context. Anyone who has been involved with data centers or, you know, large rooms filled with computer systems will have noticed that data centers have many different platforms. If you're walking into a data center, you will see Linux systems, Windows systems, AIX systems, Solaris systems, different versions of these operating systems. Underneath the operating systems, you will see different architectures, Spark, Itanium, X86, 64, whatever. So lots of different platforms. And this difference sort of hurts, of course, you know, it's a given, but it's, you know, you have to deal with it. But even though you have to deal with it, these platforms have common needs. They need to be installed and they need to be configured. And to do this, we hire departments of people to do installations. And these installations give you varying and often isolated degrees of automation for these needs, automation for these needs. Yes, so what you see happening, for example, is that if you look at two data centers next to each other, let's say, for example, a Philips data center and a new one data center, you will notice that these people are essentially doing the same thing. Only they're going about it in their own way. They don't have any way of, you know, sharing implementation ideas, you know, maybe by coincidence when they meet each other at FOSTEM, but, you know, not structurally. So there's lots of variants in how these tasks are done. So this variance in how what is automated is also compounded by a few, you know, obvious effects and a few less obvious ones. First thing is, of course, that different people do things differently. If you're not thinking about storing what you are doing to change a machine in software somehow, then you automatically become dependent upon people itself. And what that means is that the individual neatness of the person, the individual skill of the person, becomes a factor in the product that the data center delivers. So it will have effect on, you know, if you are able to actually deliver a system on time or, you know, to be predictable in your time. Now, different teams do things differently also. So if your data center has thought about, for example, saying, OK, let's segment in a Linux team or let's segment in a Windows team and HP UX team, then these teams will, you know, do what you ask them to do, like automate installation configuration, but they will usually do it with their backs towards each other. The HP UX guys will go about it the way they know. The Windows guys will go about it the way they know. Linux guys, same story. So all this leads to variants in delivery times and variants in implementation.  So what is OpenPCF then? OpenPCF, first and foremost, is an extensible framework. It's something that a human can use to, you know, store expertise, create a service like DHCP-3 service or a buying line service, write it once, and then for every platform that OpenPCF knows about, never rewrite the surface. Simply lift the surface, run it on the other platform. Because of this, obviously, it is an automated service configuration tool. This is maybe the first thing that OpenPCF is actually. We do automated service configuration in a cross-platform way. And because of this, it becomes a software provisioning tool as a result. This is an important distinction. If you have worked with installation systems like maybe Spacewalk, or if you're more into the commercial things like HPSA, Radia, Altiris, what these guys are doing is that essentially they take a big set of standard services like DHCP, PXC, Bind, NFS, SIFS, HTTP. Put them all together in some sort of static thing and then, you know, put an interface on top of it and then tell you that you can install, for example, Linux and Solaris with it. Well, we wanted to take another approach to this and say, what if you could generate all these services you need and then have OpenPCF help you with using the services you generate to do installation? We aim to support all operating systems. This is our credo. When we develop something new for OpenPCF, when we think about changing the model or changing interfaces, we think to ourselves, can it still match this credo? And it's a lofty goal and maybe an impossible one to reach, but it's a noble goal so we keep it in the back of our minds. So it's written in POSIX SH. Now POSIX SH is cool because POSIX SH is a very low common denominator. It's something that runs on 95% of the operating systems out there nowadays and even the systems that don't have it by default like Windows or DOS have good upstream implementations for it, like SIGWIN and services for Unix or whatever they call it nowadays because they've changed the name so often on Windows and you have DGGPP on DOS, which is actually also in a complete POSIX environment. It's licensed in the GPLv3, so it's open source and at the end of my talk, I will give you obviously a link to the webpage where you can download it and check it out. So let's take a look at the framework. The framework, first and foremost, exists from platforms. Don't try to read this. This might be a little bit difficult to read. It is just for illustrator purposes. Now a platform in OpenPCF is an abstraction that tells it about a specific operating system. Now, for example, here we have four little squares and these squares are different variants of Red Hat. So you have version four and version five, IPv6, X86, 64, and here we have an example one called RL5, X86, 64. It tells OpenPCF about what kind of init system is used, where is data stored for bind, where is data stored for some other service modules. It tells it about specifics of that platform and we currently have quite a few platform descriptors. This is the current stable version, five operating systems on a lot of different architectures totalling 16 platform descriptors that we currently know about. On these platforms, we can set up surfaces. Here we have a surface and if you look at this surface, you can see, for example, this is a DHCP surface which has an implementation in it called ISC DHCP-3. Of course, it's insinuate that any surface you can make a machine provide can be implemented by multiple systems. It doesn't have to be ISC DHCP-3, you can create an MS DHCP module and then have created a Microsoft service. So currently we have 15 surfaces in the main distribution. So there's things here like bind nine, DNS surface, SMTP by POS62, IMAP, POP, SASL, SMB, LDOP, NFS, all kinds of surfaces with 18 implementations in total. Here you will actually see the example of having multiple implementations for a single surface which actually has to do with the fact that certain surfaces are not available on all platforms. So you have to take that into consideration. So these surfaces can be grouped and they can be grouped in roles as obviously very convenient because if you don't have roles then you cannot easily group machines and functionality wise. So these roles are associated with configurations. A configuration stores information about your landscape. What does your data center look like? How many networks does this have? One, five, 10. How big are these networks? How are there sitter masks and net masks associated? Names of companies and company information that is used to generate certificates. That's all stored in a configuration. And lastly, a configuration associates a platform. So if you look at this example, here you have an example of a complete configuration and this is a configuration where OpenPCF has enough information to actually configure the surfaces defined in the role on the platform of choice. And the nice thing about this is that you can switch like this, your entire configuration to different operating systems. I think that here we switched quickly from Red Hat to Debian to NetBSD and it will give you the results you expect. It will configure these surfaces according to the specifications in your configuration and set these surfaces up automatically. So then you as a human, what can you do with OpenPCF then?  Well, you can build configurations obviously, clean them, install them, uninstall them, start them and stop them. This is what you actually type in the command prompt to generate configuration and make it active or take it away. So knowing, having this quick overview of the framework, how would this work on a physical machine? So let's take a look at automated surface configuration in practice. We take an empty machine, suppose we're on an island, we only have a couple of CDs with us and coincidentally these CDs are the current platform descriptors of course and you want to install your machine. So there's no luxury like PXC available yet or something so we insert the CD, install the operating system of choice. We place OpenPCF on the system in say slash root OpenPCF or slash OpenPCF, whatever. You can actually leave it, you can actually take OpenPCF off if you're ready with a machine by the way. You place a small configuration file which is really small. This is actually the entire configuration file for an OpenPCF run if you don't have to change anything, if you can work with existing platforms and existing roles. So here we associate a role with here, the universal role. Here we associate a platform and here we have our company global information and here we have our networking details which is an array of networks which are named and which have a sitter mask. This array can be as long as you want and this will take care of, for example, DHCP ranges that are serviced, bind domains that are serviced, et cetera. So when you've done all this, your services are ready to be staged. They're configured, you can do something with them. So when you use the build command, the surface configuration and data will enter OpenPCF staging area. When it's in the OpenPCF staging area, you can actually install and start it after you've inspected it and you like it. So if you install and start, it's active on the machine but the nice thing of course is that if you don't like it, you can go back. You can actually clean. You know, when you uninstall, you get back to the staging area and when you clean, you're back at the beginning again and you can repeat this as many times as you want which is very convenient if you're developing services and working with it. So these services here are the services we set up automatically with that configuration file. So we have this machine. It's running all the services we actually need for deployment of operating systems. So let's see how we can use this machine then. Software provisioning then. We have a data center, 120 machines made with Inkscape, by the way. And we zoom in a little and we take this first machine that's running all those services. Only it's running services, but it doesn't have data yet. So let's associate the data store. It can be a USB disk. It can be a Symmetrics if you like your storage a little bit bigger. And you put some ESOs on this. Now OpenPCF has the tools and utilities that can help you with connecting those ESOs to HTTP, NFS, SIFS, TFTP, DXP, DHCP and make sure that you can install it. It also has tools that allow you to register machines in the installation system. So when you've done that, you can actually install your operating systems, just F12 install those machines, push OpenPCF to these boxes using things like CF-Engine, SCP, Puppet if you want and then have OpenPCF run its build, install start routines and you're running your different services, different roles on different operating systems times the entire data center. This is actually stuff we test for real in our testing environment. So having all this in overview now, I wanna give you a really quick because I don't have too much time I see, overview of features. We support many operating systems. We do automatic connection to needed third-party repositories. Truck is not in Red Hat 4. OpenPCF knows about it, will connect to extra repositories and warn you that you're not connected. Automated dependency checking, so it knows which packages to install to provide a certain service. Openport detection, you accidentally left port 25 open, you're trying to install postfix. You can't, OpenPCF knows about it, warns you about it. And RBAC and firewall detection. Upcoming features, more platform descriptors, HPUX, Lars, and AIX, and held up service integration for modules. That's my talk, 15 minutes is up. Wait a second, thank you. Have a look at OpenPCF.org. And I hope I got the idea across.


we would then create what I would now call the second element of this war metaphor as the killer chart and the killer chart Is kind of like the data visualization equivalent now, right? So the killer chart is not something that tells what's happening or you know the how or what of the Organization because there are enough people that can visualize what's happening It basically has to come to some element of why Something's right either illustrates why a problem is Existing the organization or point towards a possible solution, right? And I think that's the key role of data visualization and or if you want to say data visualization in the story telling comments, right? You want to visualize the data in a way Not like a chartomania and a thousand charts to kind of build You know build like hey, I've got all the data here is all of them in the visual form go take, right? Or here is a dashboard explorer go figure out for yourself, right? What do you want is a narrative in the sense that can build and explain why something is happening and How when you explain that? the client or your Whoever your in audiences Comes up with some new inside out. I think that's the role of visualization