Thanks. Hi, my name is Lukasz Konkol and I will speak about performance optimization and profiling as an examples I will use comparison of Python code and patterns inherited from other languages like CC++ Java Yeah, I would try Okay, let me introduce myself a bit. I'm working as a senior Python developer at STX next It's a Python software house located in Poland I have also gave my talks at the Python UK last year and PSS which is a Python conference in San Sebastian in Spain and I have also shared my knowledge during Local meetups in in the post 9 in Poland, but what's most relevant for the topic I'm really interested in performance optimizations and I'm really fascinated in it Okay, let's check up the agenda. I will first introduce you shortly to the topic of the performance aspects Then we would have a live demo and Then I will summarize that I talk shortly and at the end We would have some time for questions But before we get started Let me get to know you a little bit better Who have ever used any profiling tool? Okay Who is using that frequently like on daily basis in daily job Okay, not that much And who is just starting a journey in Python Okay And who has used any other languages and then Python like cc++ Java Okay, that's much Okay, so let's get started What are the base aspects of performance? First of all, it's CPU We all want our code to be as fast as possible And that's what our client and our end user most cares about Google statistics says that Then that more than the half of the users will abandon the website If it takes more than three seconds to load And more over each single second calls customer satisfaction to drop by about 15 percent and conversion to drop by around five to ten percent Another thing is memory The truth is that we don't care about the memory until we run out of it And I must admit it's fair approach because why should we care about something that is not affecting us? but We should be still aware that any memory leak can affect our software for example in On daily basis in testing environments, we don't use as much fixtures as we would have in production So the scale makes a really difference here Last factor is input output of operations And for example database operations or file system This may massively influence the first aspect so the So the time of Loading an application or running But it also has another side effects There are specific limit limitations or on the simultaneous Input output operations For example database has transactions which may log and hold each other File system has a limits on number of open of similes than usually open files Moreover some services like Google App Engine Provides resources like database up to certain quota Then each read and write to database over that limit costs you real money What should we do to optimise our code in a good way? First we have to plan and predict our approach Implementation and the data structure which we will use And predict which which one will give us the best results Then we should profile our code It would be good to provide a few proofs of scon of concepts Of course if we can We should use some fake data just to indicate which one would be the best But that's not all once we ship our code We should monitor the performance in the living ecosystem Keep in mind That you will not be able to test each data set You can be almost sure that your end user Will have some edge case you could not invent on your on your testing Environment And note that this may be also related to the Text stack the user is using Once you have production benchmarks collected you should identify bottlenecks and quick wins And it really depends on each specific case You should then take a look into optimizing your code again You should first look into quick wins and bottlenecks But should we optimize everything of course not there is no point in Optimizing as something that that will give you like 5% gain and It will cost you a few weeks or even months of work So about profiling tools there are a lot of them available in a pipi I will just introduce a few of them, which I will use during the demo First one is C profile it's To inspect the CPU usage as divided by functions That's part of standard library And it's most accurate of the available tools Next one is memory profiler. That's a third party library. It's available on pipi It's better than other options, but it's still not perfect Results may vary a bit which I will present you later during the demo And it also takes some time to profile the memory Next one is CIS. It's built-in library. It provides us with low-level operating system API which we can use to To inspect for example CPU usage of the process or the memory And last tool is this It's also built-in our library We can use it to disassemble the Python code and Inspect it on lower level Okay, so now it's time for demo. Is that font size okay? Okay, so let's start with the first example First I will show you the usage of the tools. I Will I will use during the presentation so first one is the function which I will use Profile the CPU usage So I'm creating the list I'm creating the second list and then I'm deleting the first list and returning the Second list Okay, and how do we profile it? We can we should import C profile Then import the function which we will use and provide it as a string So it can get evaluated so we can see that Six functions has been called during during the execution of the main function It took 0.02 seconds And we got number of calls of each function Here in the last column we have the file name line number and the function name Yeah, we got the number of calls of this of that function we have total time of all the calls Then we got time per one single call average time Then we got the cumulative time Which is from the start up to the end of this function Yeah, and cumulative time per call We can also pass some additional arguments to see profile But I will not do it for now. I just want to show you the simple cases of CPU profiling, okay Another Another tool which we can use for profiling CPU is time it but it's not so accurate as C profile mostly because of a garbage collector not being crammed in time it So let's run the second example Okay, we got one second 1.85 seconds It's The time of running the 100 or it tries on This example. So what we provide here is the real function to to measure measure and The setup string which also will be evaluated before running the The real function to to profile Time it is also available With the dash M time it then we should provide the setup string and Then the string with the real function to profile This will gives us a bit more readable Result so we got the information that we have run a 100 loops best of three of the of these loops is 18.5 milliseconds And we have also nice plug-in for for time it in I Python We should just import import the function Then we was percent sign time it CPU profile And here we will have even more user friendly way of showing the results We'll also have the standard deviation Yeah, so we got average time here and then the standard deviation here It has been run in 100 loops and it has been around seven times Okay, so that's about the performance CPU performance Now let's go to the memory profiling so On the function we need to profile We should call the the creator We get we got We should import memory profiler first Then use the profile Decorator from this to the library And we have a few optional parameters like precision. Yeah, that takes a bit longer it probes the Memory usage of the process after each line so here we got the Code we're profiling We got the starting memory usage And we got increment and the total memory usage here. So here you can see that first list took about 1.85 megabytes second one took 1.87 megabytes and Then when we release actually the least a We get back one megabyte of memory What that may mean? that We got garbage collector didn't run yet or There is one more thing some Small integers are being cached by by Python So these are just few of the reasons but there are definitely more and moreover there is We should also keep in mind that it's just A probing so it might not be a hundred percent accurate accurate. Okay Another example will be greatest common divider So we will disassemble it and see what the result will be Okay All these codes are listed in Documentation of this library So we got here the we're setting up the loop We're loading the y variable Then if y is false we will jump to line 24 So over here Okay, in next line we're loading x and y We're calling binary module function then we store it in temp variable Next line is assignment of y to x So we're loading loading y and storing it in x Next line is assignment of temp to y We're loading temp and storing Y and we got the end of the loop. So we're jumping back to the second second line over here and Then we're loading x and returning it So that's the simple example of Disassembled Python code. I will also use it later for more interesting examples Okay Another thing is What Another thing I want to talk about is the reliability of profiling. So we'll call both CPU profiling and memory profiling three times and See the results Yeah, I know that We got three different times Keep in mind that it might depend on many factors like another processes Being crammed in the background I tried I tried to isolate that virtual machine as much as I could but But it still differs between the course About the memory We also got different results here First First reason behind it is as I said before Python caching and It's mostly visible in difference between the first call and the other tools So here we got different result and Here we got the same result at the end the increment still differs but it's because of caching in Python, okay Another Example is Creating lists by list comprehension by appending the result and by extending the list so Definitely the fastest is List comprehension Then four times slower is Creating list by appending each subsequent item and a bit faster is extending the list so whether you would have the possibility to extend use it because it's Small gain but in the scale it can really differ next example is comparison of data types tuples lists sets and dictionaries, so the fastest is the least Then we got sets tuple is much slower than than list and set and dictionary is Even more slower is the slowest of these collections, but we should keep in mind that dictionaries are Keys and values pairs. So the construction of it takes time. Moreover, there is a hashing function which is hashing the keys and We can see also the size of these collections So smallest one is is tuple then we got list set and dictionary Set is much larger than Then tuples and the list It's almost four times larger but the reason behind it is that It's just optimized dictionary in the implementation so it just have keys and dummy values and It's using just just the keys of the of the dictionary and that's how set is implemented Okay, next example is using the Values of the two lists iterating by indexes Zip function and Using a dictionary so zip function is the fastest one Then we got dictionary and Then we got iterating using indexes of two lists. So zip looks like the best option, but It's really not so usable in most cases But dictionary is is still fine next example is checking if element is contained within the list So first one is just in keyword Second one is running through all the list and checking if the element is present And the last case is a binary search over the list. So we're splitting the list in two equal parts and comparing if The element is present in left or on or in the right part of the list then doing that recursively Note that the list must be sorted before running that operation So I compare All these checks For two cases first one is positive case. So We will find this element in the list and second one is That we will not find this element in the list. Okay, so First one is in keyword So we can see that it runs two times slower if element is not present in the list So the implementation here is a Bit optimized for loop over the elements Then we can see the for loop over the elements implemented in Python it's In positive case, that's one point six seconds and for loop is two point five seconds and it also keeps the the trend of Positive to negative ratio, so it's still two times slower and Last one binary binary search It's definitely the fastest one. So in Keyword is Pythonic way to check if element is present But if we really care about performance and really need to run it fast binary search is the best option here even if the Implementation is more complex, but it's still not that scary, right? It's just Less than 15 lines So if we really care about performance, we should use more complex solutions, but which are more efficient Okay, next one is swapping the variables First example shows swapping using temporary variable and second one is swapping tuple so assigning tuple of Y X to X Y. Okay, so swapping Using temporary variable appeared to be faster now Okay That's not what I expected that might be as some Some process running in the background which is interrupting that yeah again, but different is not so So because now probably if I run it again It will finally give expected results. No. Yeah. Yeah, it's it's finally finally gives the smaller value for swapping tuples So let's see how it's How it looks in disassembled code We got Here it's it's swapping tuples. So we're loading X and Y and X then rotating these two Storing in a storing X and storing Y and then returning known While here we got load fast store fast load fast store fast and again load fast store fast. It's Three times load and store instead of to Store and and load and store Next example is efficiency of string construction first one is f-string Introduced in Python 3.6 and next one is formatted string and the last one is percent Formatted string so f-strings is are definitely fast test And then we see that percent formatted strings are in the middle and Format is longest. Yeah, it's nice to use but it's low But now in Python 3.6. We got f-strings. So let's use it okay, so we got nested look here and And What I will do is iterate over the smaller portion of data in outer loop then Iterate over larger amount of data in outer loop and then split it equally between outer and inner loop so in all these cases we got the same number of iterations okay, so maybe Let's guess which one will be the fastest so the first the first example who thinks that it will be the fastest Okay, second example Okay, and the last one Okay Not everyone plays a bet but Okay Let's run it Okay, so This one is the fastest one so second one. So iterating over more items in outer loop Which I will expect otherwise, but it's up here. It's not Yeah, and there is not much difference between The first and the last example Yeah Let's see at the disassembled code because it may explain a bit more So here we're starting first outer loop Here we got we start we're starting Inner loop here. We're finishing the inner loop and here we're finishing outer loop. So It's really What we would expect is that iterations over inner loop would be faster But it appears that the iteration over outer loop is faster Why is that because here we're We're jumping To the inner loop and here we're jumping to outer loop So if we jump over here frequently It's a bit slower than jumping over here Not sure if that's If that explains it, but yeah It's it's pretty pretty hard to explain on that disassembled code but the fact is that More In outer loop is more efficient than Than in the inner loop. Okay next example Using global variable versus Using parameter So again, who thinks that the global variable would be more efficient Okay, who thinks that parameterized variable more efficient. Okay Let's see we're frequently using the global variable But it's not so efficient as parameterized version it's We will see their reason over here in disassembled code. So their only difference here is that in Global global variable is loaded with load global instead of load fast over here So that's the only difference and it appears twice Where we load this global variable or x parameter over the function. Okay Next example is slots who is familiar with slots Okay, so I will explain it a bit deeper so slots are the listed parameter names that Object will be restricted to so if we got slots x over here We cannot dynamically assign a self dot y for example It will just throw the runtime error. We will not be able to do that okay, so But that sounds like an restriction for us But what does it mean from for from performance point of view? It's Definitely faster with slots and as we will see in the second It consumes a much less memory than just the regular object without slots So we can see that it's three times more memory here used The reason behind it is that objects without slots Will over allocate the memory So that we can we can see it over here. It's three times more that may of course differ based on Different different number of slots if we for example gives it give here like five five five Variable names or ten it will differ Okay, so that would be all from demo part Let's summarize it shortly Okay, so first Predict what would be the best solution based on your experience there's based on the examples You just saw or just based on your hunch Predict but to have preliminary data And don't trust it at all always profile your code Predictions might be misleading When I was preparing examples for this demo, I encountered a lot of surprises We have also seen the scene one. I have to run this three times because Data data was Not perfect enough, I would say So things do not do not behave as we expect Yeah, we should always profile our code Even if you think it's fast enough or fast test Just check it for your own For your own piece of mind, right? And the last thing Calculate return on investment So try to find the best ratio between possible profit and optimization cost There is no point in spending Weeks on optimization, which will give you an unnoticeable improvement Hey, thank you for for your attention You can find slides on the left side within the link or QR code I will also put it in on the europitan website I have also pushed the code snippets to github link is also available here It's Repository is private for now. I will make it public right after the talk and I will so appreciate any feedback about my talk so I can improve myself To give better talks There is a link on the right side to the feedback form It's simple anonymous form. I would really appreciate if you spend a few seconds to share your opinion Thank you very much So we have time for a couple of questions I see their hands Thank you for the talk I was wondering is there any easy way in C profiler to give kind of like a person's tax So there was total time there was cumulative time Is there anything where you just give a parameter so that One line or one allocation took let's say 80% of the total time something like that just not to calculate the whole thing Yes, so that might be not so visible in the examples but there is total time of all the calls or total time of Or time per call for the function you can also Give a parameter to see profile to sort the results by specific column Okay, so we can sort for by total time or time per call and also one short question So in terms of that slot at the your example didn't allocate anything to a particular slot So let's say if you allocate a hundred megs or like read a file Of the same size with slot and without slot. Do you think will make a difference? Yeah, definitely because It's it's always good to profile the specific case because that depends what you're putting in the in this variable but in general Object without slot is over allocated. So it will just allocate some some memory Right after the object to have some space to some dynamic assignments Thank you Who is okay? I've got two questions actually the first one is are there any graphic tools for the For the profiling libraries you've shown. Yes, there are graphic tools I didn't listed them because I wanted just the simplest tool which will be most accurate but there are many tools you can just Google it and Yeah, there are a lot of them. I checked like week or two weeks ago There were a lot of them. All right. Thanks. And the second question is Since the profiling if shown us is not really reliable and not hundred percent reliable Should we rerun it multiple times to get a better Understanding of how the how the application performs. Yeah. Yeah When I run the memory profile or a few times in the loop for example It gives it stabilizes with with the time. So first run is Like a bit inaccurate But then it's stabilized and gives at least the total memory usage on on the stable level Then increment also stabilizes like we see we saw in the example with when I run three times the same function with with memory profiler and Total total Memory for per process has stabilized in the second and second and first line but Increment still did not stabilize but it will stabilize at some point because it probes the memory By inserting the the probes in into the code Okay, we have to stop here. Thank you very much for your talk


editors often work in different ways on their videos. Many plan out their movie in what's called a storyboard ahead of putting their video together. Then they capture footage for the movie clips in their storyboard and edit it as planned, either for themselves or with or for a client. Almost all editors eliminate their bad footage and only import their really good footage because, as I've said, video takes up a lot of storage space on your computer, so it's smart to limit your imports. In this class, we're learning to edit by recreating or copying a video that's been done before, but you can give it your own touch too as you're learning and confidence grow. Also, imitation is the best form of flattery, so with video editing, it's helpful to try to reproduce another's work and effects. That's how you learn. Remember, be curious, explore, play around with the software, and look for editing tips on movies on television and at the theater. So to begin our movie story, our video will first show a happy and thriving town. Next, it will show it being hit and somewhat devastated by a tornado. After that, it will show the use of drones to survey the damage with video of the devastation so a mission can be planned and enacted as soon as possible to help the town and its inhabitants. And texts will tell the viewers what's happening or what they are to do throughout the video. We started in the last video with our Disasterville text at 6.5 seconds in length, thanks to adding a freeze frame image to make our clip longer than the clip's four second length. Next, we added the gazebo clip. We're going to change the gazebo clip later, but for now it's fine to leave it where it is. The remainder of our clip's order includes about 23 clips, which are fairly easy to find in your browser. You should have a copy of these clips for the movie and their order and names in front of you, but you'll notice that the browser doesn't list clip's names. So how will you find them? There is a way to see each clip's names. Above the viewer right here, you see this little eye enclosed in a circle. Go ahead and click on that. Well, you'll notice that nothing comes up because I don't have anything selected. So let me select any clip, click on the eye, and you'll see that this clip here is called Injury. All right, and you can click on any clip to find out its name and be sure to click on the eye enclosed in the circle. In addition to the Information tab here, you can also just easily search for a clip in the search box. So Injury I think is one clip's name. Let's type that in and see. Yeah, it'll pop right up. So you can use this window as well. All right, so what I want you to do is to pull in order each of these clips to your timeline. And you don't need to edit them at all. It does say seconds at the end of each clip's length or name. And I want you to ignore the time associated with these clips for the time being. After those first two clips that we added earlier, we're going to pull each of these 23 clips in to make a movie. We want our total clip time to be about three minutes and eight seconds. Well, why you may ask? Well, if we're going to add the same music that the original video has, it will be necessary to have the same length. Know that we could change the music though and give the video entirely our own spin. So once again, add these clips as they appear in your browser. So for example, the next one I want is Town View right here. Then I want Town All. Is this Town All? Town All. I'm going to click the plus button. Then I want text regarding before the disaster struck. That's right there. I'll press E and so on. So once again, add these clips as they appear in your browser. We'll edit our clips to the way we want them to appear after they've all been added to our timeline. And one thing you should know, you can control how much you can see within your timeline by sliding this timeline settings slider here. All right. Slide it to the left.  And if you want to make changes to a clip, you'll want to drag it all the way to the right so you can really see things in detail. Lastly, some of the clips have audio. You can see the ones that do by selecting this wheel here. Click on it. And I already have this audio dialog box check that says show waveforms. You can uncheck it and you'll see that the waveforms disappear. Waveforms are colored blue and they appear underneath the clip and they signify that a clip has audio with it. So that's how you can see it. And I advise leaving that checked for now. But if you want to hear it, you have to do something else because as I slide over this, I don't hear it at all. You can go up to your menu, click on view audio skimming. And what you'll notice is that there's a check mark by audio skimming now, which shows that it's activated. Now when I skim over a clip or play it, the audio is there and can be heard. The only clip we want to have audio, though, is the tornado clip. To turn off the audio on other clips that have been dragged into our timeline, what you want to do is look at this line here, alright, that signifies the volume level for audio on a clip. What we want to do is drag it all the way down to zero so that the audio can't be heard. We could also have imported these clips by stating that we don't want the audio, all we want is the video, but we didn't do this, so this is the next best method. So good luck adding the movie clips to the timeline and once again just raise your hand and the coaches and I are here to help you as needed.


Thank you Steve. All right. Thank you very much. Thank you Well, it's a pleasure to be here today and this is a very exciting time It's very exciting because we are in a convergence of technologies and business practices and needs on the part of the industry the the industrial automation industry and What's what's really exciting about this is the the confluence of Both hardware technology software technology and Standardization are all coming to play to create a new value proposition In industrial automation as it has in the DoD market space Couple of terms before I get started just I want to just get some definitions out of the way You'll hear the term face Face is future airborne capability environment. It was a standardization process. It still exists today It's in process started back in 2010 and the purpose was to bring capability to the warfighter In a much more rapid and economical sense than was previously able to be achieved that's been running for six years and As of this date, it's very successful and Went through a lot of birthing But the point we're at right now is it is open for business Software is being created under an open architecture construct certification is in process And a market space is opening up open process automation is taking advantage Reuse of a lot of those fundamental concepts and so what we're going to talk about here today is What that influence is on industrial automation another definition as you'll hear the term continuous process flow and batch process flow continuous process flow is an operation like in a refinery where you have feedstocks coming in Operations are done on those feedstocks and product is created in a continuous never-stopping process okay Batch processing would perhaps be the food or pharmaceutical where you create a batch of material you process it You package it and then you clean up and start over again. Okay, so it's in batch This system or these concepts are applicable to both so the industrial motivation what what brought this about is in Exxon for example and other industries as I've learned through my discussions with different companies These companies are facing considerable replacement of legacy projects that have been in place for a long time And they're trying to figure out how to replace those systems that are going obsolete and Do it in an economical way so that capital expenditure and operational expenditures are optimized they looked at state-of-the-arts existing proprietary systems and There were several factors that said maybe there's a better way of doing it They were concerned about the high cost of technology refresh the Expense or inability to integrate third-party Products into those existing systems So for example one of the stories that was related to me was I've got PhDs Working in the back lab that are able to create optimization algorithms for creating product But I can't get those optimization algorithms into the control systems because There was proprietary barriers or inability of standardization So that's one one area that they want to address Market liquidity for sophisticated development tools because a lot of these systems similar to the DoD market space are closed there wasn't a Ready market of Applications and software and tools that were generally applicable across these systems So they said that's another itch. We want to scratch can't get them on the existing systems Does not allow the independent acquisition of system components Where his face was focused on Software Industrial automation is focused on hardware as well and the ability to bring third-party Hardware and software into these systems is extremely limited and they wanted to break that paradigm and Then finally the security model Was considered to be bolted on not intrinsic And here's where the emergence of technology comes into play is the ability to integrate Embedded integrated Security technology is upon us today And I think a lot of that's been brought about by the industrial Internet of Things Where there's a ready market for industrial security for or security for the Internet of Things That same technology is now applicable and available for use and control systems whereas before it was aftermarket bolt-out To the first order so where his face started in 2010 Back in 2013 The open group had a conference in Washington. I was giving a presentation and Exxon mobile happened to be in the audience and At the at the lunch luncheon table with Don Bartusiak and Steve Batar were sitting there and Couple of the folks and this was a DOD spot or DOD Market space conference. We said, you know, what do you guys what your interests here? And you know why why are you here and what we found out is their concerns their needs were identical Almost one-to-one mapping with the concerns we had in the DOD and why face was stood up And so they were interested from that point on in 2013 Defense avionics industries have transitioned from a proprietary stovepipe approach to more of an open architecture The face construct is aiding that so applications in the avionics market space For subsystems are now reaching the point where the software that enables those can be transferred from platform to platform Assuming that those platforms have a face operating environment on them and that's a big assumption But that's the market that we're the space we're moving into That analogy is going to exist for industrial automation as well in the DOD motivation Again, what drove us with face was the long lead times even for urgent needs to bring new capability to the warfighter Platform unique designs limited the reuse of software and increased cost So that created barriers the competition within and across platforms That was the primary driver for the face consortium standing up back in 2010 and As I said this analogy with industrial automation is almost identical in the same principles and practices that we used in Face we're now using in open-process automation form or OPA So what's driving all this? This is a curve that was I believe published by GE Aviation looking at the complexity of software as a function of time and what's driving it So this curve and by the way This curve is interesting because I've seen in several Studies by DARPA and and IBM and a couple of others that this is almost a universal curve of complexity For for software-enabled systems. So this curve shows the growth of complexity in avionics systems Starting back I'd say in the 60s moving up that where that dotted line is Into the 80s early 90s and then where we are today In the key driver for this if it's hard probably to read in the back of the room But hardware dominant versus software integration dominant What we mean by that is these systems back then These are avionics systems But again, this if you think about it for a second this really applies to medical systems to industrial systems Back in the hardware dominance area functionality was was done in an electro hydrodynamic manner gears analog digital or analog dials and and data Differential equations modeled by inductors and capacitors That all rapidly transitioned into software enablement where it touch screens Data fusion functions so on and so forth where the complexity of the software Naturally grew and so the concern in face was we were reaching an unaffordable point for the next military vehicle So when face was stood up we looked not to start over again and and and and You know build something that someone else built but let's take advantage of what's out there already and that's a recurring theme That we're that we're using is reuse of existing standards So in the commercial market space commercial avionics were facing the same concern the growth of avionics complexity driven by the movement from analog systems the digital systems was on an exponential curve where the a38 or the beat the 7.7 87 was reaching a point where it was potentially going to be very expensive through the incorporation of an integrated modular architecture Standardization they were able to drive the cost and complexity down to affordable levels And so we said to ourselves in the in the face consortium back in 2010. There's hope for us There's things that we can do with regard to standardization that will make this Possible to drive costs down and we're seeing that today. We're seeing cost reductions Now on the industrial side, I'm giving credit to Exxon for this slide They used it in an industry day that we held Going back in the in the 20s. It was very simple analog systems pneumatic controllers Then in 1959 60 it moved to the first central computer And I think this was done by an avionics company by the way or a defense contractor Who came up with this and then moving on into time in 1975 to 78 Again, think that curve that I just had up there the increase in complexity With regards to digitization started taking hold Moving forward into more complexity doing more functions and software growing it further and At the same time the cost and complexity and obsolescent issues We're growing with this So today where we're had headed is what can we do to reduce that through standardization? And so what we're looking at is a virtualized system Using a high availability of real-time processors similar to like a mission processor that we use in the avionics world tying it with a high-speed bus and then having end Channels single-channel modular Distributed edge devices and that allow direct access to these sensors and actuators and so this this this complex system Digitized system a lot of proprietary interfaces is now being The vision is to drive that down to a much simpler system through the use of modern-day technology And standardization So what are those factors to achieve this breakthrough system? And that is what ExxonMobil by the way is charged to do and put Lockheed Martin under contract to create for them leverage consortium hardware and software standards development And when we talk about hardware and software standards We're not just talking about a set of standards for the sake of technical standards what Steve mentioned Earlier was the coupling of business practices And I'm gonna go back again to the face consortium. We looked at what caused other open architecture Standards to fail in the past because there's been a lot of open architecture Standards as I'm all sure of you in the room know that have not been successful And the key factor behind that was the business side of it the business practices Creating a market space certification. So for example in face We don't allow waivers we don't allow deviations you're either 100% Conformant to the face standard or you're you're not registered in you're not able to brand your product as face conformant If you take that two steps down the road what that means to the program manager that's that's gonna utilize that face product in his or her system Means that they don't have to risk up if they have that assurance that that product will work and It's 100% conformant and it went through a certification process and it is in a library or a registry for discovery That reduces risk tremendously on the part of the program manager and therefore he or she does not have to risk up the price of Acquisition to cover that risk for mitigation second factor is the power of emerging multi-core processing It's incredible. What can be done in a microprocessor today and the emergence of multi multiple cores in those processors and the The ability of localized memory and what you can do in those coupled with software Operating systems to enable it just it's it's mind-boggling. What can be done? In in a system on a chip today that wasn't available five or ten years ago availability of high capacity networking 10 gigabit and And higher so that your aggregate bandwidth of all these systems or sensors and actuators that are tied to the network can be managed and Controlled and sensed And that that network is also intrinsically secure Whole new technology that's emerging that's available to us today. That wasn't available 1020 or five years ago intrinsic security the ability to sense Problems that that may be attacking the system are now coming online in the commercial world and And is available to be taken advantage of and the utilization of a lead system integrator somebody to tie it all together and Lockheed Martin for example, we get the contract from Exxon mobile to do the requirements analysis, you know The system engineering v diagram starting with user needs and requirements derived requirements and Then all the way up through integration and test That's a very disciplined approach to creating a complex system and so plans processes and procedures are very important because all those interfaces have to be documented all the requirements have to be documented and the Derived requirements have to be levied on to the subcontractors Vendor neutral technology Okay, we look at the supply base in a vendor neutral fashion when we do a selection We do a trade analysis. It's vendor neutral It's based on all the factors that are associated with a trade study to select the very best vendor to do the product a deep technical depth of field Bringing together the experts both chemical engineering controls engineering systems engineering to build the product and then as you get up going up the other side of the v-chain logistics planning Experience in the Open software and hardware standards and that we are a founding member of the future airborne capability consortium technical standards and business Practices were one of the factors of why Exxon selected us And then from a risk reduction point of view programmatic expertise subcontract management configuration management logistics So today what we're doing is And where we are in the program is We've done the requirements analysis We've levied those requirements onto this onto sub derived requirements for the subcontractors and we've sent out RFPs to subcontractors for a prototype system And we're waiting for those replies to come back in and Then we will be awarding contracts to subcontractors to build a prototype system to test these concepts Okay, this is a journey. We're on and this is a prototype phase that we're in right now So a lot of people ask me wow you guys are opening up all these standards and you know How am I gonna make some you know, how am I gonna make any money on this or what are you doing to me? and so The whole key of this is standardization All right, and so I use this chart. I've used it many times is what's standard on all these devices The interfaces Okay So if you had a house that was built in 1940 or earlier even and it was wired For an incandescent bulb on the far left That same Infrastructure can be used today all the way on the right for an LED Now from a value proposition point of view, what have I said to you? Hey, I'm gonna sell you these LED light bulbs but Get a change your house to 12 volts DC Now you got to go to two pin prongs call electrician in what do you think the market? Successive that would be probably zero to none, right? But by standardizing on that interface the base we're able to Have a hundred year evolution of technology in the same infrastructure It's a very simplistic analogy, but that's what we're trying to do here standardize the interfaces Certify those interfaces. So, you know that circular Screwbase is the same as that one over there. So when you buy it, it will fit. All right, that's a hundred percent certification And what but what's competitive about these is the application design? So think about that for a second. All right, the interfaces are standardized But the design the business logic as we move into software Can be proprietary and licenseable and so on so forth. All right, he is what this is all about is interfaces and standardization What's different? in the face initiative we We're analyzing the business aspects in parallel with the development of the technical standards So in face we split a technical working group. That's strictly worried about date architectures Segmentation of the of the software operating systems And then the business side which is primarily interested in contracting. How are we going to do contracting in this new environment? What's the certification processes? We're going to use and what's the way that you the user or the? Seller can discover or publish What you've created. Okay, and then third fourth is outreach. How do you advertise this? We meet under the a voluntary consensus standards as a voluntary consensus standards body And there's two two rules that are two laws that we regulations that we Stick to and one is the circular one a 1 1 9 Which allows government participation in a voluntary consensus? Creation body and the National Cooperative Research Protection Act which has very strict rules about these companies getting together And not creating an antitrust situation Okay, so there's very strict things about what we can talk about and what we cannot talk about So for example contracting Your contracts that are about to be let so on so forth are forbidden to be discussed in these in the consortiums We analyze previous away open architecture efforts and We conducted a quality attributes workshop engage both the buyer and the seller and then there was a great aggressive Outreach by the industry and government the sum of that is that both the buyer and the seller sat across the table from each other And they're doing that today in the open process automation. What's beautiful about that is the sellers Really get a chance to to Understand the issues that the buyers have and vice versa in a very non Confrontational environment to sit across and understand why I need this on the other hand why I have to sell it for this price Though that interaction occurs during these meetings So the common software baseline framework that came out of face was two things a common framework oops go back a common framework and Then shared software components That sit on that framework and the best example I can use for that is a very another simple example is You go, you know tax season is coming and you go to Best Buy or whatever and you or go online And you get turbo tax or one of the other tax preparation forms and it doesn't matter Whether you have an HP computer Lenova whatever type computer at home hardware as long as it has the same operating system on it You have that that that Transparency of hardware and that's what we're trying to achieve in face and also in OPA So that software as long as you have a common framework what we call an operating environment sitting on the hardware and It can be multiple different vendors of hardware And then you have shared software components. We call them unit support ability UOPs in the face consortium You'll hear that quite a bit and in OPA that'll start to emerge and then variable operating system components of various certified Operating system Providers in face. We broke that into an architecture broke it down into the architecture into segments And a top-level description would be this column here is the operating system segment Okay, and that contains contains the OS and then we have another segment We called IO services, which is where you could say the drivers reside and then we have platform specific Services segment which you could consider that to be a translator So if you have a legacy equipment that you're trying to communicate with that has data models that are associated With that legacy equipment you need a translator and so that would sit up in the platform specific services segment And then up in portable components is where you would have your actual application sitting And then transport services segment or on the right-hand side is basically the switchboard all the messaging and Data passes through that that transport services segment that routes it to all of the various other Segments now the beauty of it is and I know it's hard to see in the back of the room But these green lines Represent the interfaces go back to the light bulb, right? those interfaces in face are all standardized and tested and Certified with software tools that the consortium presents and also other elements of a verification matrix So as we now move into transition to industrial automation We have a similar Existing layered architecture, which is the from the Purdue model the the four layer five layer Model for industrial automation L4 being business planning and logistics and L1 through 3 is the computing platform and basic control and human machine interface and then down L level zero is the sensors and actuators and then we have a safety critical system, which is a third Backup system that is independent of The level zero through level four Now when you see this tie-in here, this is not a tie-in from the point of view of control Where the level zero through level four controls this the the safety critical system But the safety critical system may be monitoring Like think of a diode connection of the various sensors and so therefore this was the model that they work with You saw in that previous picture for many years. Well, what we want to do is Is break that down into basically three layers Which is the L1 through L3 function? We call it on the the OT data center okay, and think of this as a Real-time advanced computing platform think back to those microchips that I was talking about those multi-core processor chips that do a Tremendous amount of have a tremendous amount of processing power And the applications will sit up on that operations platform Go back to the architecture that I showed you for face the segmentation. So those software chunks That's a technical term those software chunks that sit up in that architecture our unit support ability that means that Steve could build a unit of portability to the standard and it will work on Dennis's system and vice versa Okay, it really doesn't exist today. That's the vision of where we're headed in the doD world We're proving it out today Okay, there's there's contracts let already that's doing it. So this isn't pie in the sky stuff This is real stuff. It's just moving it into a new market space the real-time service bus is That network as I said earlier that has the aggregate bandwidth capability to handle a large array of devices on the south end of it and So that aggregate bandwidth again open open standards not proprietary so that a you as a supplier can create subsystems that can tie into that real-time service bus so things like the data models and Network speeds and protocols so on so forth will be defined and again credit stacks on mobile We use this charted in industry day earlier So I want to make sure they get credit for that another key point is the DCN distributed control node the key of the distributed control node is It'd be a good example say you got a fuse box in your house you got 20 breakers in it 20 circuit breakers right and they're all filled You want to add two more circuits to your house? All right, what do you got to do? The box is filled you got to add another box and so now you're carrying that whole complexity of the box and The infrastructure to support that the idea here and this is this is another breakthrough idea is can we go down to a Singular one-to-one relationship between the distributed control node that controller that's monitoring a sensor or Driving an actuator can we go to a one-to-one relationship with standardized hardware interfaces? standardized software unit support ability on it so that when we have Upgradability or a need for upgrading a need for expansion. We can add in DCNs on a one-to-one basis So got a couple more functions. I want to bring in a couple more sensors add a couple more DCNs Into a standardized backplane not a proprietary backplane a standardized backplane So that's the concept we're playing with right now with regards to the DCNs in in addition with the DCNs think about regulatory control and This is another key function is if we have fundamental regulatory control Let's say of a furnace Okay There's n number of functions that have to be monitored on that furnace and number and n and m number of actuators to control fuel and And air or oxygen into it What if we group those together in a regulatory fashion so that should we have a failure in the real-time service bus? that these n num n and m number of DCNs maintain regulatory control of that furnace without having to rely on upper-level controls and So those are some of the concepts that we will be testing in the prototype as well In addition you see the traditional DCS distributed control system these this is what exists today Analyzers these are devices that are like gas chromatographs that are online that are measuring the output of product Machinery monitoring safety systems wireless gateway and programmable logic controllers What we will be doing is putting in Rappers software wrappers above these so that if you go back to that model where I said in the Platform-specific services segment we do data translation So in this case we would build data translators for existing legacy equipment To map into the new system this allows us to enter into brownfields and us I mean the industry to enter into brownfields We have existing equipment already and it'd be prohibitively expensive to rip all that equipment out and put in something for the sake of open Architecture you want to be able to walk into that system Piece by piece and we studied this in the face consortium We came up with five scenarios of how to do that including adjunct processing so on so forth And so the wrapper concept allows you to use existing systems translate the data And get it into the new system So key operation open architecture characteristics are Provide standardization of the key interfaces. That's number one. That's very important Support the layered architecture principles. That's those five layers. I was talking about So you don't mix Application software with data translation where they're now tightly coupled. And so if you have to replace that you got a headache It's gonna be very expensive. Let's break that up into two different components Standardize the interfaces and then be able to procure those from different sources if that makes economic sense to do that Or you can buy it from the same firm Facilitates abstraction. That's key abstraction of hardware for example because hardware is what goes obsolete and that's what we're fighting constantly is the obsolescence of microprocessors and FPGAs and so on and so forth and so by abstracting that hardware through these standards and certification we're able to greatly mitigate Reduce the cost of obsolescence life cycle management. So key attributes adaptability Configurability to meet different needs you have a system. It is now modularized So now you can take that system Put it in this plant Take the same components reconfigure them put it in this other plant Or different subsystem or move it to a different move it from continuous process to batch process So you're covering multiple market spaces Talked about modularity and portability already scalability. I've talked about that with the DCMs and interoperability Another key focus is data modeling both the data architectures and the models that are used to represent Information in the face consortium. We didn't we didn't start from scratch and and come up with a new data model We utilized data models that were from other organizations We also applied a certification process to it so that again you have that risk reduction On behalf of the the costs of the system Other key system attributes required in an open architecture environment are of course security safety and reliability and Each of those systems has analogies to the DOD space that we did in face airworthiness system safety for example So opa open process automation. I would say has very similar objectives to face future airborne capability environment Establish a standard common operating environment Okay, that's it's the TurboTax example I used okay No matter what system you have at home as long as it's got that operating system on it You can you can doesn't matter what the hardware is Create a strict set of open standards for that environment in opa it extends into hardware So and there's there's precedence for that already There's open VPX for example is a is another standards body that does connectors Before so many jumps up and says wait a minute that that could drive costs pretty high I'm just using that as an example of hardware standardization opa is going to be looking at what makes sense from From a hardware point of view Establish portability based applications as I said earlier with all those attributes From a business point of view create a conformance program. That's number almost number one on the business side Create a registry of portable software Question I often get on this this one is wait a minute. I spent all this money to create IP in my software I got put it in a registry and Expose it and the answer is absolutely not What's in that registry is metadata that describes your software application and it's open and it's published and It does not contain proprietary information. It's just a set of metadata that represents. What is your software? the Repository where that software resides remains 100% under your control in your company That's not touched at all by these standards the registry. However is is is an open Database that people can go and look at for reusability purposes Create contract guidance It's nice to have an open standard. It's nice to have this technical standard, but how do you buy it? How do you buy products to it? How do you sell products? What do you put in the RFP? How do you respond to the RFP? So part of the work of the consortium the business side of the consortium is to provide guidance a document That would go to your procurement folks or your contract folks and it gives them guidance on how to write an RFP How to respond to a an RFP with a proposal? and then obtain Industry and DOD program management endorsement and these are again. These are objectives. So what we mean by that is Outreach we held an Executive forum where we invited Executives in the in the DOD industry and I expect we're going to do the same in OPA where they come in and And and see demonstrations get presentations get an understanding of what these concepts are all about And how they can impact in a positive sense their business. So that's that's what the business working group focuses on creating documented Processes and procedures for each one of those elements and the open group on their part is The carrier of the message and also the publisher of the message. So we create this information Open group then takes it and through their process and publishes it to the world and And helps out tremendously in those areas So the OPA the benefits of face and OPA we believe absolutely it establishes new markets and new suppliers Creates both software centric and for OPA. It's going to create hardware centric market opportunities It's going to allow the introduction of third-party capability. You're going to have companies That now will emerge that Have created products both software and hardware That are going to add such value To the down to the to to the end users process that Here to four were unable to be put into the system and provides the opportunity for rapid insertion of an innovative concepts the ability to Understand those interfaces have your own PhDs for example in your back labs Being able to test those optimization algorithms quickly in the system and then put them into the system So they may generate something in MATLAB Today it's very difficult to get that MATLAB product into the end of the system Tomorrow should be relatively straightforward lowers the cost of doing business common standards lower cost and schedule risks As I think I've talked about this already pretty much with regards to risk management of known standards using systems that are built to known standards and And life cycle cost reduction Through obsolescence management standardization of that software hardware enables the rapid insertion of new capabilities reuse of software components and hardware elements Allows industry to economically reuse even within their own facilities and Reduces long-term obsolescence impacts so with that There's any questions. I'll be happy to answer one question I do get asked quite often is You know what what's the impact? To the to the integrators or the existing industry base and we got that a lot of that on the DoD side In the aerospace business and I firmly believe that these open standards through the certification process is an enabler It's an enabler of existing Companies to do even more and to penetrate even more markets and it also allows new entries So I think it's a win-win situation for both new entrants and existing Players in the industry with that any questions That's a technical term I Do and the crossover I think is it I think the crossover is in the area of Data as a service and so now that you in you know, if we look at the enablement of information flow through IOT And the ability now perhaps to create new markets where you're you're offering a service based on that data And there's some examples that exist about exist already for example with Major capital equipment Being remotely monitored Bering gets hot in a locomotive and information has gone goes to a central Database and monitored and And Information is provided to the user based on that but you need to do maintenance pretty quick So I see yeah, I definitely see a crossover between the two the other side of the coin is security is in my opinion security is very important and It's one thing to Have this ubiquitous data. It's another thing To absolutely ensure security in that environment. So that's that's the key Enabler and key enabler to that my opinion Using the vendor neutrality So if I understood the question correctly I would I would answer it this way you start with a set of requirements derived from user needs you take those requirements and you Build a set of derived requirements For each subsystem whether it be a software element or hardware element, right? So you have these these derived requirements Then you go out to the supply base and You evaluate what the supply base can offer in a vendor neutral fashion And then come up with based on the the trade space that's created the best value to the customer Imagine changing the face name It's a great awesome standard that sounds a bit like a weapon system Well, yeah, that's it. Yeah Brand identity is is something that's that's very important. Of course for the industrial automation Market space we have OPA open process automation. So Face is not really utilized in that space the name face. It's used as an example in the same vein of Not wanting to reinvent but to reuse so the principles and practices derived from the face consortium are now being used in the OPA open process automation consortium But the branding is is OPA With Yes The key factors are the business practices Associated and the technical openness and the certification Those factors are almost universal no matter what market space you're in we happen to pioneer them in face But they're those same concepts are applicable Just about to any market in my opinion about this forum one way of describing is the face standard is change is changing continues to change the way that Product is bought in that maybe it looks industry and this is likely to do the same across multiple industries As you say, it's it really doesn't depend on the industry. It's that those components mean that this is Pretty wise Could we have the person that asked the question clarify it and we'll be happy to the goal is to get these objects and their attributes collected in a Sort of authoritative way so that you can essentially go to a singularity of repositories now We do have another standard ODEF that can help in that But I'm curious if there's been any active interest and entertainment of trying to cluster a brain together these various industry repositories well the key repository That we've set up in the in the future of born capability environment is The is the registry not repository registry For the units of portability that fall into those segments that I showed in the presentation And those units of portability the definition of the interfaces and the data model for those are carried out in the technical working group that define The key attributes of those interfaces the apis for example that are allowed to be used in Each of those five segments and they're a restricted set of apis and they get More restricted as a function of safety profile a general purpose profile safety profile and security profile with respect to that specific Term that you have there. I'm not aware of the utilization of that in the face consortium But I would refer that question to the architects in the consortium Question We're so you're you're getting a snapshot in time on the open process automation and also face face Just talk about that for a second face has now delivered Technical standard. I think we're up to we're just about to deliver a 3.0 And we have a verification matrix delivered Certification processes all all the elements needed delivered with respect to OPA. We're meeting we literally kicked off OPA in late December early November and It's it's it's still in the the the formative stages. We've stood up a business working group We've stood up the technical working group. There's progress being made and next week at the automation research council forum the ARC forum We will be coming together for a face-to-face meeting to map out additional roadmaps and deliverable items Because we are now including things like hardware and hardware interfaces. It adds a little bit of complexity But but I'm but also we're drawing an awful lot from face with regards to Some of the technical standards and things like that and also existing industry standards for Interfaces a whole set of industrial standards again in OPA. We're not and this is very important We're not reinventing the wheel. We're not creating a new standard for the sake of a standard I call it a standard of standards. We're looking at what's in the automation industry today That's standardized. We're picking the best of those and that's what we did in face And once we pick the best of those then we're going to put a certification program in place So we will be mapping that out At our face-to-face. We've already we already have some some straw man Roadmaps, but we'll be that's that's our work product for next week


I think telemedicine is another tool in pet health care and the partnership that we can have with brick and mortar veterinarians is I think the long-term opportunity. So can we integrate with their medical records? Can we be their partner for off hours? There's almost a third of pets are adopted through shelters. So how can we better equip shelters who also don't have enough veterinarians to provide care to people?


Propaganda warps our very humanity, notes from the edge of the narrative matrix. There's so much more to propaganda than just manufacturing consent for governments and wars. It trains us what to value, what to think a successful human being looks like, where to place our interest, energy, and attention. It shapes our very personalities. It warps our humanity. Show me someone who doesn't think propaganda has much power, and I'll show you someone who's been highly propagandized. If people could understand the massive yawning gulf between the world as it actually exists and the narratives we've been fed about it since childhood, there'd be immediate revolution. The real world is as different from the propaganda world as it is from any work of fiction. The CIA is officially forbidden to conduct operations in the U.S. What the CIA is not officially forbidden to do is hand an unscrupulous American news reporter a bombshell scoop about a foreign government, which just so happens to build a narrative in the U.S. that advances CIA objectives. That which has been presented without evidence may be dismissed without evidence. It applies to arguments. It applies to claims by U.S. intelligence agencies. Propaganda has distorted people's perception of reality so severely that Twitter cares more about musicians pulling their content from an app because they don't like a podcaster than the fact that the most powerful government in the world is flirting with nuclear war. There are easily 10,000 issues in this world that are of greater concern than the fact that Russia annexed a small territory that overwhelmingly wanted to be annexed in 2014. America's buddies Saudi Arabia and Israel have been bombing their neighbors constantly with extensive U.S. support. The friendship between these nations and the U.S. exists not in spite of their nonstop military butchery but exactly because of it. If all the countries involved in a dispute say there won't be a war and only one country says there will be, it's not hard to figure out who the aggressor and instigator is. It's not that I always side against the U.S. It's that I side against whatever side is in the wrong and that tends to be the most powerful and destructive regime in the world. If you don't believe the U.S. could be consistently on the wrong side of foreign policy disputes, it's because you've been extremely propagandized about its behavior on the world stage. It can't rightly be called anti-U.S. bias if your criticisms of the U.S. are unassailably correct. You simply cannot dispute the fact that no other government is doing anything that rises anywhere near the level of depravity as spending the 21st century killing millions of human beings in wars of aggression. It's not that I have some arbitrary grudge against the United States and frame all my positions on every issue to fit that bias. It's that the U.S. really is quantifiably and demonstrably the most tyrannical government on earth by an extremely wide margin and thus naturally tends to be in the wrong. The social engineers will always prefer to censor dissident voices online via algorithm manipulation rather than overt deplatforming when given the choice simply because it silences a lot more people with a lot less public outcry. If you agree with an ideological faction on every issue, it's not because you share the same values and principles. It's because you suffer from a lack of values and principles. You're just a blind follower of the herd.  We're seeing the narrative that Tucker Carlson is a Russian agent aggressively pushed by mainstream pundits not to attack Carlson himself but to manufacture the consensus that anyone who criticizes U.S. policy on Russia is suspicious and untrustworthy. If you get your information about the world from Tucker Carlson you're just as MSM brainwashed as if you get your information about the world from Brian Stelter or Rachel Maddow. The brainwashing just happens in slightly different ways. Sure Carlson might say true things I agree with sometimes but so does Anderson Cooper. They just tell different truths and different lies.  There has to be some truth mixed in. The people in my mentions who regurgitate MSM talking points on China because they heard it from Tucker Carlson think they're so very different from the people in my mentions who regurgitate MSM talking points on Russia because they heard it from Wolf Blitzer but they're not. They're exactly the same. The TV man is not your friend. If Russia was an actual threat they wouldn't have to keep lying about it all the time. In ancient history our stress hormones were used on saber-toothed tiger attacks. Now they're used on made-up mental narrative fluff like whether we're adequate, what others think of us, a podcaster saying things we don't like, Vladimir Putin annexing Eastern Europe or China taking over the world. It's not legitimate to complain that people talk about problems without taking action or offering solutions. Spreading awareness that there's a problem is taking action toward a solution. All positive shifts in human behavior are always preceded by an increase in awareness. You're not going to get to solutions until a sufficiently large percentage of the populace understands and accepts that they are needed. Even if you do come up with the perfect solution on your own without the help of the collective you won't have the numbers to enact it.  People first need to understand that our current systems don't work and then to understand why.