Hello everyone, this is Yu Zhong from the Interest Virtualization Team and my topic today is virtual LMMU with cooperative DMA buffer tracking. Okay, here is today's agenda. First, I'd like to talk about the background of static pinning and indirect IO and the problem of static pinning and our BLMMU. And why do we need the DMA tracking? Next, I will introduce the concept of virtual LMMU with cooperative DMA buffer tracking for direct IO. And in the end, I'd like to discuss upstream considerations of co-LMMU. Okay, as you may know, direct IO is the best performance IO virtualization method widely deployed in cloud and data centers. By assigning a hardware device to the virtual motion, the guest can perform DMA operations directly without the need of host intervention. At the host side, HiPyzer programs the hardware LMMU pitch table to provide the inter-guest protection. However, direct IO faces a problem of static pinning due to two reasons. First, most devices do not support DMA pitch fault. That means DMA buffer needs to be pinned in hardware LMMU before the DMA operation. Well, above pinned, we mean the DMA buffer need to be pre-allocated and mapped in our MMMU pitch table. Second, since HiPyzer has no visibility of the guest DMA activities, it has to assume that all guest pitches could be used as a DMA buffer. Therefore, the HiPyzer will have to pre-allocate and map the entire guest memory in hardware LMMU when the VM is created. And all the guest memory shall be pinned during the whole lifecycle of the VM. Well, the problem of static pinning is quite obvious. We have to tolerate the much increased VM creation time and also greatly reduce the memory utilization features. For example, advanced features like page migration, memory overcommitment, data allocation under swiping is not possible with static pinning. Well, one possible solution of static pinning is to expose a virtual LMMU to the guest. The primary purpose of virtual LMMU is to provide intro guest protection with virtual DMA revamping. Well, as a side effect, found grid pinning is possible with VLMMU. Well, when the DMA revamping is enabled in the guest, the guest will use VLMMU to map and unmap DMA buffers. And all these requests will be forwarded to HiPyzer to dynamically pin and unpin guest DMA buffers. In such cases, with the insight of guest DMA activities, static pinning is no longer necessary. Well, also, like virtual devices, VLMMU could be an emulated one or a power virtualized one. However, the VLMMU has its problems. The emulation cost of current VLMMU could be significant. For example, we have observed more than 96% performance downgraded in MIME-HD in the guest when DMA revamping is enabled in VLMMU. As a result, virtual DMA revamping is not used in most guest devices. For example, a VM can be created with no virtual LMMU at all. Or even with a VLMMU exposed, the VM can choose to run in pass-through mode, which disables the DMA revamping as well. Well, for guest security requirements, it varies. For example, DMA revamping is needed when an untrusted device is plugged in or when the device is assigned to its user space drivers. So although VLMMU provides an architectural way for learning guest DMA buffers, it is not a reliable solution to achieve fine-grained pinning. Meanwhile, we argue that the requirements of protection and pinning through the same costly DMA revamping interface is needlessly constraining. Because intro guest protection is an optional guest-side requirement. Whereas fine-grained pinning is a general host-side requirement for efficient memory management. The host needs the capability to efficiently track guest DMA buffers. So how about we decouple the DMA tracking and DMA revamping interfaces in VLMMU? That means we want a separate DMA buffer tracking mechanism in VLMMU without relying on any semantics of DMA revamping. And if this mechanism is efficient enough, we may expect most guests to always enable fine-grained pinning. For this DMA buffer tracking mechanism, we expect it to be orthogonal to DMA revamping. The enabling of DMA buffer tracking shall not affect the desired protection of DMA revamping. Also, DMA buffer tracking should incur only negligible costs. The performance expectations under different protection policies shall be sustained, non-intrusiveness. We try to minimize the changes in the guest stack, software stack. Well, such solution should be widely applicable. I mean, it shall work with all kinds of IO devices and it shall be easily ported to different VLMMU implementations. Extensible. The solution should be extensible to help address other limitations in memory management. For example, it can help to track the DMA pages during the VLMMU integration. Here, we propose a cooperative DMA buffer tracking as a pyroverterized interface. By cooperative, we mean bi-directionally shared information between the guest and the host about the DMA buffer information. And the fundamental information shared is the pinned status and the mapped status for each guest page. Well, the host tells the guest whether a page is already pinned. Hereby pinned, I mean, the page is allocated by the host and the mapped in hardware. And the guest tells the host whether a page is mapped by its DMA API. So with this information, we can minimize the number of VLMMU exits when guest maps pages through its DMA API. I mean, the page pinning requests are only needed for guest pages that are not pinned yet. We can also eliminate the number of VLMMU exits when guest maps DMA page. Also, our solution enables flexible host memory management policies. For example, the host can unpin any guest pages which are no longer DMA maps. Here, we name the LLMMU with such design as cool LLMMU. A virtual LLMMU with cooperative DMA buffer tracking in direct IO. Okay, this page is about the architecture of cool LLMMU. First, we introduce the DMA tracking table, the DTT, to hold the shared DMA buffer information. For example, the pinned status and the mapped status of each DMA. And in the guest, the cool LLMMU driver is hooked to guest DMA API layer. Actually, it's just a virtual LLMMU driver with our PV extensions. So this driver intercepts the DMA API operations in the guest and updates the DTT accordingly. For pages not pinned yet, the driver will send the page pinning requests to the backend. And at the host side, the cool LLMMU backend handles the page pinning requests and updates the DTT, setting the pinned status for the GFN. Also, the host cool LLMMU backend is synchronously unpinked pages based on the mapped status in DTT. Okay, let's take a look at the organization of the DTT, DMA tracking table. Well, as you can see, it's a hierarchical paging structure shared between the guest host and the guest indexed by GFN. So for each GFN, there is a tracking unit. Each tracking unit holds the DMA buffer information such as mapped status, which indicates if a page is currently mapped by guest DMA API. It is set and cleared by the guest DMA operations. Under the pinned flag, which indicates if a page is already pinned by the host. It is set and cleared by the host after a page is pinned and unpinned later. The accessed flag, which indicates if a page has been used for DMA recently. It is set by the guest DMA mapping operations and cleared by the host periodically. Also, there are five reserved bits, which can be extended. For example, we can add a dirty flag to assist the dirty page tracking in that migration. Okay, let's take a look at the process of guest DMA mapping operations. For the DMA map, the guest core ML driver will set the mapped and accessed flag in DTT entry for each target GFN. Meanwhile, it will check the pinned status of this DMA page and the pinning request is necessary only when the pinned flag is zero. The good news is that we found more than 99% of pinning requests can be avoided thanks to the DMA buffer locality. So it is very likely that a recently used DMA buffer will be reused in the following DMA operations. And when the guest unmapped the DMA page, the core ML driver just clears the mapped flag in DTT entry for the target GFN. So there is no VMA exit at all. And at the host side, the core ML backend performs lazy unpinning in a separated slide. It periodically checks the mapped status of each pinned page. For each pinned page with mapped flag with being zero, we will check the accessed flag, which indicates this page is not used by guest DMA recently. So if this accessed flag is zero, we can go ahead to unpin it. And any unpin the pages can be considered as reclaimable by the host. In the end, the accessed flag will be cleared regardless of its previous status. Okay, DMA tracking versus DMA remapping. Well, we know that in the majority cases, DMA remapping is not used by the guest. And the DMA tracking with core ML could be an efficient solution to achieve funded pinning. However, sometimes the intro gas protection may be needed. For example, DMA remapping can be conditionally enabled for some untrusted devices. In current implementation, the hop-hizer must fall back to static pinning as long as there are other assigned devices which are not using DMA remapping. Another example is that DMA remapping can be enabled when the device is assigned to guest user space driver. And later disabled when the device is returned back to the kernel driver. So in current implementation, that means to switch between the static pinning and the fine-grained pinning, which leads to increased overhead because the entire guest memory will have to be unpin and pin during such switch. So in such cases, DMA tracking offered by Coal ML can help provide a reliable solution for fine-grained pinning. So what if the DMA remapping is always enabled in the guest? I mean, for all the devices at all times. Well, DMA tracking in such scenario is only optional. But our evaluations show that even with DMA tracking enabled, the performance overhead is negligible. Well, here is the implementation. Our previous POC is done by extending existing virtual VTD. Well, as you can see, there is no ad hoc changes in any guest device driver. And we believe such concept can be applied in both emulated RLM mills and the pyroverse last ones. So as to the upstream plan, we'd like to implement it in virtual RLM mills. So for virtual RLM mill, we may need a new group of interfaces. And as to other logic such as guest DMA buffer tracking in DTT, and there's a hostile pinning, we believe the same code can be reusable for different real RLM mills. Okay, I'd like to talk about our upstream proposals and opens. The first is we would like to propose a new group of interfaces in virtual RLM mills. For example, the future negotiation of the capability of fine grained pinning. I mean, the DMA buffer tracking. Also, the base address of a device bitmap. This bitmap is bit indexed by BDF of guest devices to indicate if this device is a silent one. Because our DMA tracking shall be only applied to assigned devices. Emulated devices are not our concern. Also, the base address of DTT, the DMA tracking table. Meanwhile, we definitely need a page pinning request in virtual RLM mills. Well, about the host laser pinning, we created a separate QMIL thread, which is waking up periodically to perform the laser pinning. Whereas the pinning interval can be manually configured in QMIL command line. And I suppose adaptive interval may be multi-zero. Moreover, you may notice that the current MP policy is LRU-based. So maybe we can examine more policies in the future. Guest cooperation limitations. Well, this is a headache. That means when the host creates a VM, it has no idea if QLM mill will be enabled by the guest. The same issue exists in current VLRM mills. Well, current solution is to pre-pin the entire guest memory first, and perform the pinning during the address-based switching logic, where VLRM mill is enabled later in the guest. Also, guest BIOS may use direct signal. Well, even the guest BIOS had virtual RLM mill driver, and even this driver could be power virtualized. We still face the same problem mentioned above. So I guess in the short term, maybe we will have to follow the same solution in VLRM mill, I mean by pre-pinning the guest memory and MP8 when the guest enables QLM mill. But in some scenario, where the guest kernel is controlled by the cloud provider, there is no virtual BIOS in the VM also. So things would be much simpler. Moreover, it is possible that a selfish guest may deliberately report fake DMA pages. So, in the future, we may choose to build a quota mechanism about huge page mapping. Well, in our implementation, the DTD tracks guest pages are only in 4KB granularity. And then, of course, in QMIL, the backend can choose to conduct huge page pinning by merging continuous guest pages. However, we realized that such optimization will complex the lazy MP9 logic. Well, fortunately, our evaluations show that most guest DMA workloads are using frequent mapping operations only on many scattered 4KB pages. With one exception is the GPU workload. Without huge page pinning, we observed about 4% performance drop in open arena due to LTRB missed penalties. Another issue is sub-page mapping. Well, we realized that multiple DMA buffers may co-locate in the same 4KB guest page. For example, the small network package. That implies that one guest page can be mapped and unmapped in multiple types concurrently. So, in our implementation, the DTD entry tracks the guest DMA mapping count for each guest page. So, only when this mapping count of a guest page reaches zero, will the mapped flag be cleared for this page. Well, the last open is, what if the assigned device is SVA capable? I mean, for SVA workloads, on-demand pinning is already possible. It can be done in LRM and MUPID files. So, what's the value of DMA buffer tracking for such devices? Well, the reason is that a typical SVA capable device has to support mixed workloads with SVA workloads or non-SVA workloads. And it also may submit global configuration data structures. All these are not affordable. So, a cooperative DMA buffer tracking could still be desirable. So, here is performance evaluation based on our previous POC. Well, we choose the wide range of benchmarks to evaluate the performance and memory footprint in some devices such as the 40G, NIC, and NVMe SSD and Intel GPUs. All the benchmarks show near to 100% performance compared with direct dial without VRM or DMA mapping. Meanwhile, we found that the pinned guest pages are much fewer. For example, the maximum number of pinned pages we observed is only just about 1% of the entire guest memory, which is 32 gigabytes in our configuration. Also, if we do not prepin the guest memory, we can wait in this much reduced development creation time. So, for the detailed environment configurations and performance data, you can find it in our USNICs paper. So, in summary, current VRM emails cannot reliably eliminate static pinning in direct dial. Well, co-RM email can offer a reliable approach to achieve fine-grained pinning with a cooperative DMA buffer tracking method. It dramatically improves the efficiency of memory management with negligible cost. Meanwhile, it sustains the desired security requirement in different protection usages. And it can easily be applied in various VRM email implementations. Well, and of course, as previously mentioned, co-RM email is not perfect. So, any comments on any suggestion will be welcome. Okay, that's all for this presentation. So, please feel free to raise your comments. And also, you can always mail us for any questions about co-RM email. That's how. Thank you. Thank you, everyone.


With the STM8 series, ST is positioned in the top 4 suppliers of 8-bit general-purpose microcontroller worldwide. ST will pass the 6 billion units of sales of 8-bit microcontrollers from which 5 billion units of STM8 and 1 billion units of legacy MCUs. In fact, ST has just qualified a new ST front-end fab in Singapore to ensure the strong demand of the market for STM8. I would say performances, flexibility, easy-to-design and some really cool features. STM8 8-bit performance and quality are well recognized and benchmark worldwide. STM8 products are housed into a wide range of packages from 8-pin SO up to 8-pin FQFP package, with similar pin-con capability to offer to the designer a very easy migration inside the entire product portfolio. ST, STM8 are also granted from minus 40 degree up to 150 degree and embedded flash memory is ranging from 2 up to 128 kilobytes. There is a whole lot of really smart functionality. If you want to find out more about STM8, please go and check ST.com slash STM8 webpage. So many applications actually. We are in automotive, consumer, personal electronics applications just to name the most common ones. A few examples of applications that are augmented by STM8 are e-bikes, small detector, toys, wireless car charging. Actually, we are everywhere. Actually, developers can benefit from the unity and coherence of STM8 ecosystem, which is very similar to our well-known STM32 ecosystem. Essential integrated development environments, so-called IE's, are similar and based on IR systems, resonance, cosmic and arino to name the most famous ones. Our embedded software ecosystem is also shared and built around STM32 and STM8Q. Last but not least, our hardware are all identical and offering multiple discovery kits, nuclear walls and sharing a stealing programming tool. Be sure to check all of them on ST.com slash STM8.


Okay, we're back here live at HP Discover. This is, we're in Las Vegas for day three of three days of wall-to-wall coverage at HP Discover. This is theCUBE, our flagship program. We go out to the advanced instructor, Sillen from The Noise. I'm John Furrier, the founder of SiliconANGLE, and I'm joined by Koos. Hi everybody, I'm Dave Vellante at wikibon.org. And this is theCUBE. We're here with Kristoff Fister, who's the vice president and general manager of the business service management component of HP software. Kristoff, welcome to theCUBE. Thank you so much. So tell us a little bit about the business that you run within HP software. What's the focus? Absolutely, so it's called business service management, and what we do is we ensure availability and performance of large data centers, the infrastructure, as well as the applications that run within that infrastructure. So we're talking about problem management, change management, is that right, or? It's more identification, event management, the analytics that go with it, and across all components of the data center, networks, systems, storage, the apps, and everything around it. And does helpdesk fit into that, or no? Helpdesk is closely connected to it, so people typically deploy our solutions in what is called the closed loop incident problem management framework. And so once they get events and they need to deal with them in a more systemic manner, meaning there's no quick fix, it becomes a trouble ticket, and that's when it goes into the helpdesk and the change management system. And once that's done, it comes back to us and the events get closed out, so it's very closely connected. Ah, okay, so the change management database is part of your organization, or is it not? It's not, okay, great. So you have to feed that, yes. But you work across these boundaries. Okay, so you guys have the application lifecycle type part of the software group, is that your group too? So look at it as the application lifecycle management to the left of me, that's where the development happens. Once the development of the app is done, it gets into production, that's where the operations people are, and they use business service management tools. And then once things break bad enough, then it goes through the service management. So I see it in the middle between these two. So you get to fight the ops and the dev guys. So you're the dev ops broker, right? So you're brokering no downtime to, hey, I'm just iterating fast, right? So that's the challenge we're living in right now is the dev ops culture is hitting the enterprise. That kind of is...  And it's true that there's still significant balls between the development folks and the operations. And yeah, some of the stuff we're trying to do is trying to break down these balls. Yeah, IT service management is still quite siloed. And so talk about how you're breaking those down. I mean, one way is obviously you can have a single CMDB, but a lot of times customers don't want to go to a single CMDB because they have their own database. So talk about what's going on. What are the big trends that you're seeing within service management? Yeah, absolutely. So one of the things we're hearing a lot now is the old management paradigm of sort of instrumenting your IT environment for known problems. Where you have the systems, you say, I got to drop an agent on that thing and then they're going to instrument that agent for events and all that stuff. It's becoming difficult to do. Why? Because these IT environments are becoming so dynamic. They're growing so fast. And so this paradigm of management by exception is something that customers are more and more struggling with. And so we see a shift happening where instead of that paradigm, there's this notion of collect, store, and analyze that's becoming a trend. And so that's exactly what we're responding to with this notion of operational analytics, where you bring all this machine data into one place and then you drive analytics on top. So one of the things we had George Kedifon yesterday, EVP of the software group, and we were talking about the new style of business, not just IT, but business, and that's certification. I mean, I'm oversimplifying kind of what, now it's my words, but he was basically saying certification, new ways to write code, and he made a reference that with open source, there are now a variety of different languages to program in. So one of the hot areas that we didn't get a chance to talk about is visualization. So on big data, that's a very, very hot topic, visualizing data. So on the code side, you guys have a lot of SaaS offering where developers can actually look at visualization, a lot of automation on code. Can you just give us an update on where that is in this operational analytics piece? Yeah, absolutely. So we were focused on doing advanced analytics on top of this data lake, if you want to call it that way. And advanced analytics has a number of different components. It has a component of machine learning, algorithms, but also visualization is becoming very, very key. Why? Because to be able to understand what's going on, humans can, I read that once we found that interesting, in text form humans can process about 200 words per minute. If you give them a picture, they can process the equivalent of about 2000 words per minute. So visual is, you know, makes business sense. It's not just, you know... Make sure it's worth a thousand words, literally thousands of words. Exactly. We're 2,000 words. Yeah, but that's true. We've got the real stats to back it up now. And so visual analytics is part of what we do around advanced analytics, and so... Good, sorry. Yeah, I... That was your demo yesterday, right? Yeah. That's why I wanted to connect to that. Or you use, you know, hot data type of charts. And that, you know, that allows you to represent heat in the IT environment. It's very, very critical. And a big complex in the IT environment, you've earned my hotspots. And it's using, it's not just the same technologies that are applied in...  Yeah. And so they do... Americans, too. You know, pointing thermal cameras at their houses to see where the heat escapes. You know, it's using some of these same, same ideas in the same context. Point that camera at my house. But so, but for those of you who didn't see the demo, it was, it was very cool. It's like a heat map, but it's also a time machine. So you gave the demo, right, on stage yesterday. So you basically were able to dial back. So you said, you saw red, bad. And then you were able to dial back in very granular increments. I mean, by the minute or second or whatever it was, until you started to see, it's almost like a weather map when you see the, you know, the storms coming in. Is it? It's red, red, red. No, it's good. Oh, what happened now? Okay, so how do you determine what happened? How does an individual determine what happened? Well, so, you know, that this time lapse analytics is one of the analytics we do. One of the advanced analytics. And it's really the concept of, you have all this data in one place. You collect it over, you know, long periods of time. And you have it in these high speed databases. And so all of a sudden you can go, you know, back and forward in time in your IT environment, because the speed is there. You have the raw, you know, processing power to do that kind of stuff. Before, you know, in these BI type solutions, you could do similar things, but you had to type a query, wait for six hours, look at it, and then, you know, sort of think about what you need to do next. Now you can go, you know, back in, you know, whatever increment you want. So you can go back and look at your IT environment, how it was three hours ago. And if it wasn't better shaped than it is now. And then what might have, you know, potentially caused the issue because you don't have just the performance metric and the visuals, you also have the log data at exactly that point in time. And so it's very, very quick to sort of pinpoint issues. And it's very exciting. So this time lapse analytics, this is new, obviously. Absolutely new. So how do I buy it? If I have a license of your existing IT service management, can I add onto this? Not as a consumer. So we're announcing it at this show and it's going to be available in Q3 calendar of this year. So you can't buy it right now. Right, okay. But once it's available, you can absolutely buy a license and deploy it and get better. What's happening in terms of the sassification of your business? Because a lot of IT service management products are, you know, installed on-premise. You know, many of them are many decades old and they've evolved over time. But is that model moving to SaaS and what's HP doing in that regard? Yeah, so we see, obviously the help desk market is the one that's furthest along in terms of sassification. You know, we're probably at 70% or so penetration already. Other areas of ITSM or business service management are a little bit further behind because, you know, especially on the infrastructure side, it's not, you know, you have agents to deal with. And so it's not, it doesn't suit itself as well for SaaS. But we think the next piece that's going to go is around application performance management. Where you do end user monitoring, end user behavior type stuff. And so we brought out about a month ago what we call our performance anywhere solution which is application performance management on SaaS.  So this is, you know, the next big thing in SaaS, we think. And one last question, if I may, before I turn over to John. So are customers still using a lot of spreadsheets to do the sort of infrastructure, incident management, problem management, or is it really beyond that? No, we're beyond that. But, you know, where people are, I was in Japan two weeks ago and what really struck me there is that, you know, people are still very, very focused on, you know, the hardcore infrastructure management, managing networks, managing systems.   And so you want to get ahead of that game. And so that's why the combination of application performance top down and bottom up infrastructure management is such a big deal. I mean, I saw obviously the great story from HP. Obviously they have a lot of perspective with the big data from the network and the app side. But I want to ask you about the market trends. So obviously for applications, automation is very important, right? So, but with open source, social presence, there are people who are located all around the world. So talk about the collaboration development environment that's there with open source and talk about some of the automation and how do you guys address that? And specifically around pricing and business model, because it's clear that, you know, your vision is right on the money with, you know, the idea of how people develop, right? It develops all around the world, follow the sun, variety of different perspectives. Yeah, we do that ourselves. And also automation. George was mentioning yesterday, Kedifu was like, okay, everything was green, but also there's one spot of the code that might not be seen. We want a predictive mechanism to fix those things. So that's automation and that's, so developers need that or they need someone else who might be coding to see the changes. So there's all this change management of the code to automation. So talk about the productivity, the social collaboration and then how do you guys price that? Remember, I'm on the operations side of the house. So, you know, the development piece is not really, really mine, but, you know, we see a lot of, you know, automation happening there in the sense that, you know, once you discover a problem and you can use analytics to do that and do it very, very quickly with some of the new technologies we're bringing out. But then you would also, you know, very quickly remediate the issue. And their automation is a big deal now in terms of, you know, instead of an operator going, you know, through their own scripts and all that kind of stuff, you can automate a lot of, a lot of through aviation. The way we do it is through runbooks. So we integrate runbooks into our monitoring solution. And so these runbooks then can either run fully automatically if that's what the customer desires or the operator can step through, you know, in a step-by-step way through the runbook that at any given point in time say, you know, I want to execute the step or I don't. And so that's how we look at automation in the context of monitoring. Let's talk operations then because since that's your side of the house we're going to leave the app side for the other guys in the software group. But, so DevOps obviously is the mall. You see that with mobile. People who use Amazon, for instance. I have the Node.js, I'm coding this. And the mindset is a developer mindset, iterating. So downtime is simply just reboot, add more code, push new code. You go to an enterprise and you bring that kind of mindset. They want agile, but this idea of the thing could go down is just not an option, right? So we call that no ops, right? So ops dev really becomes the focus. So how do you guys manage that? They want fast app pushing code, but the ops piece has to be reliable. There's SLAs involved, there's maybe some security issues and other things. Can you talk about that trend and how you guys are looking at that? Yeah, it's really, you know, customers are at different stages as you look at that.  And, you know, they're very far advanced in that regard. And then you look at the other end of the spectrum, oftentimes government agencies, and I've talked to a few here where, you know, again, the walls between dev and ops are still so high and the politics involves and all that kind of stuff. And so it's very, very difficult to push the dev ops a religion now.  And so being able to automate releases, being able to do that for not just, you know, the application itself, but all the underlying infrastructure is a big, big, It's a QA issue on the hardware. Tell them, you know, the networks, right? You mentioned earlier, networks. So doing the release management is one thing, but you got to manage the QA of making sure things are tested. Absolutely. I mean, that's pretty critical. Absolutely. And so, again, that's, you know, that's more on the dev side of the house, but, you know, doing the load testing before you roll things out, making sure that, so, you know, a good example of that is, we showed this coffee app in main stage.   So there was some significant load testing involved, you know, given the size of the audience. And so, you know, once that was done, then the app, if you like, was moved into production. Christophe, what's the meaning of business, the term business service management? Is it because you're running the business of IT? I always think of IT service management. Is it because IT is so connected to the business? What's the reason for that? Well, we think that, you know, IT needs to provide business value. And one of the ways you, you know, you can look at that is to say, look, instead of just managing, you know, you know, some infrastructure or the app or whatever, you really want to look at the value that's being delivered to the business. And so, looking at, you know, the service that's being delivered and the value that service provides is what we call, you know, business service management. So what's the, we sometimes, John and I like to sort of talk about the horses on the track. What's the competitive landscape look like in this market? What's going on out there? Help us squint through where HP fits and what's going on. Yeah, so we think we're in a great place right now because there's lots of disruption.  And I think the stuff that you've seen on main stage around big data, Haven, and how we take advantage of that in the context of IT management itself is very, very different. Okay, so you've got the big systems companies all play in this space, correct? Presumably. And then you've got some third party guys that play. Some of them are privy partners with you. And then you've got some, I guess, upstarts that are coming in, right? And there's big disruption going on with cloud and big data and that's what you're trying to capitalize on. Absolutely. Good. All right, so what's next for you guys? What should we be watching for? Well, you should watch for, you know, rolling out another round of exciting capabilities around analytics. So we're just getting started. We're just scratching the surface. You know, the visual analytics that we've presented are just the start. We're going to work on that. We're going to work on exciting algorithms that actually over time should allow us to predict where things are going.  Am I able to predict that there's going to be any issues based on the data I have, you know, similar, you know, similar concepts or setups in the past, you know, can I predict where things are going to go? That's the next step. Okay, Christophe, thanks for coming instead of theCUBE. Obviously, predictive analytics, big data. I mean, this is the future. Rapid development environment, rolling things in production fast. That's what mobile world is showing us. That's what, I'm doing it in reliable. And that's the enterprise value opportunity. Not just the wild, wild west. Some of our folks do it out there. Dave, we can talk about that. Although we love Amazon. Thanks for coming inside theCUBE. This is theCUBE live in Las Vegas. Thank you guys for having me. So as we discover, we're right back on the next guest after this short break.


There have been violent confrontations between Palestinians and the Israeli police over the past several months. Amnesty International has documented 18 Israelis and 34 Palestinians killed in March and April, including six children. In May, footage of the funeral of an Al Jazeera reporter allegedly shot by Israeli police led the yuan to call for an international investigation. Though overshadowed by other wars and crises around the world, the Israel-Palestine conflict, stretching three-quarters of a century, is intensifying. A growing number of Palestinians are in favor of living within Israel, having given up on the idea of breaking off to form a separate state. But their lives are constrained by both the Palestinian Authority's corruption and the omnipresence of the Israeli military. The Palestinians comprise a community roughly the same size as the Jewish population within Israel, but don't enjoy the same freedoms and face major restrictions on their movement. What policies could help the Palestinians achieve more political and economic freedom? Fadi Salamin is a political commentator on Arab-Israeli affairs and an adjunct senior fellow at the American Security Project. He's a vocal critic of Mahmoud Abbas, the head of the Palestinian Authority, and has survived two assassination attempts. As Salamin believes that an important step in liberating the Palestinian people is monetary freedom, specifically Bitcoin, which can help them bypass the Palestinian Authority's control over their finances. Reason caught up with As Salamin at the 2022 Bitcoin Conference in Miami. Fadi Salamin, thank you so much for speaking to reason. Thank you for having me. I'd like to start out a little bit about your background. You've started your political career since you were 16 years old. I was born in Hebron. I'm the oldest of nine children, and I initially came to the U.S. as part of a Palestinian delegation for an organization called Seeds of Peace, where we would meet with Israelis who are also participants in the same organization, and we would discuss what life was for the Palestinians. It would have been the first time for many Israelis to meet Palestinians. The setting, the area where it was done, was done in the United States, away from Israel, Palestine. That was really my introduction to the political world, the world of politics. That was also the first time where I genuinely had serious conversations with Israelis about how life is for Palestinians. To my shock, I assumed that all Israelis would know how difficult it is for Palestinians under Israeli occupation, but many had no idea. What did you take out of that experience for meeting Israelis in terms of the Israeli-Palestinian conflict? It's hard to put it in a concise statement. There were many firsts. For example, you talk about what it is to be Palestinian. If you're an Israeli living in Tel Aviv, you don't come across Palestinians. But if you're an Israeli who is a settler living inside the West Bank, you see Palestinians, but through the lens of right-wing extremist Israeli politics. At 13, at 14, at 15, these are not concepts that you are comfortable with or easily trying to define or even explain to someone who's the same age as you. I would say the first takeaway was they would see me as a human being, as a normal person who's talking, eating, playing sports with them, and so forth. But then you get into the weeds of the issues, the rights of the Palestinians, the history of the creation of Israel, and then you start getting into the narratives and how the narratives diverge. But then also almost something that remains with you regardless whether you agree on the politics or you disagree is that you see the humanity of the other side. For the average person who's even more removed from the Israeli-Palestinian issue, what's it like to be a Palestinian in Palestine right now? So let's just take an example. If you're a Palestinian today living under Israeli military occupation, your life from A to Z is fully under control by the Israeli military, meaning if you want to go to a hospital, if you want to go to get an education outside, if you want to get married, if you want to get your ID, if you want to get your birth certificate, your passport, all of these are decisions that can be interrupted, canceled by an Israeli military personnel.  I've known students who their whole entire life path was altered just because they were prevented from getting to medical school outside, whether they were given a scholarship and a room and board and were given a full scholarship to be doctors. But because an Israeli officer decided you're not going, we're not allowing you to travel to this country, they had to become a construction worker.  Most of your work actually touches on something different. Another obstacle that faces Palestinians and that obstacle is actually the Palestinian Authority. So how does the Palestinian Authority play in the role of the occupation? Does it help? Does it augment and how does it add to the complexity of the issue? The way I see it today, the Palestinian Authority is a burden on the Palestinian population. I've always dreamed of an independent Palestinian state that is a democracy, that is free of corruption. But sadly, corruption is the number one enemy of democracy and we've seen this in places like Afghanistan, like Iraq. Palestine is the same today. The Palestinian Authority, almost 84% of the Palestinian population believes that the Palestinian Authority is corrupt. We've spent almost $40 billion inside the Palestinian territory since 1993, almost very little to show for that money. We do have very wealthy politicians. Most of the economic sector is monopolized, monopolized by politicians who are directly linked to the president. The president is in his 18 year term, 18 year of ruling as president and he was only elected for your term. So you can imagine that if you are a young Palestinian hoping to have a role in the economy, in the political process, you have no chance.  So it's making a life that's difficult, extremely, extremely difficult. So what is the role of the Palestinian Authority in Palestine? At this point, they're basically a security agency that coordinates security matters with the Israeli military. They offer very few services and you could see this through their budgetary spending. The two thirds of the budget is spent on security, while one third is actually split between all the different sectors, including health, education, and so forth. So it's a very bankrupt organization that definitely needs reform. I'm not against having a Palestinian entity that coordinates not just with Israelis but with the rest of the world, Palestinian affairs and Palestinian issues. But for that to be successful, you have to introduce transparency, anti-corruption measures, democracy, democratic practices into the equation. And these are all variables that are missing. They do not exist. Going back a little bit to the role of the Palestinian Authority, as a Palestinian, how would you face corruption by the Palestinian Authority? What does that look like? It exists on every level. So the majority of the Palestinian economy depends on labor in Israel. And it's been by design like this for decades. And so if you're a Palestinian worker, you need a permit to enter Israel. In order to get a permit in Israel, which is provided to you free by the Israelis, you have to pay the corrupt official, who's now the Minister of Civil Affairs, you have to pay him an amount almost equal to $500 a month.  You have to pay $500 a month to keep your work permit to be able to go into Israel and earn a wage that you can spend back on your family. That wage also on top of the $500 that you pay as a bribe. That wage is taxed. Social security is held from it, which you never see as part of your future. It's not like when you get a certain age, you will be given back that taxes or and so that's just one simple example. And then you move up, right? You have, for example, the tobacco industry in Palestine is completely controlled by the president and his children. They were local tobacco farmers who were trying to grow their own tobacco. They were taxed at an extremely high rate where they had to completely close shop because the foreign imported tobacco products, which were owned by the president and his family were not taxed as high, right? That's another example. Then they monopolize other parts of the economy, car imports, car dealerships, groceries. You name it. If you want to have a successful business, you can't. So let's say I am a person that wants to go. I'm a Palestinian that wants to work in Israel. What are the steps that I want, would want to take to be able to go to Israel, work, and then come back? And if I were to get paid, what currency would I be getting paid in? And how do I bring it back to Palestine? Or does it stay in Israel? How does that work? If you're a Palestinian trying to work in the labor market in Israel, you need a permit. That permit, what it means is that they do a security background check on you and that you are deemed as a low risk on the security scale. Therefore, you're allowed to enter the labor market. To do that, you have to submit your application to the Palestinian authority, which in turn will submit that to the Israeli intelligence. When you submit your application to the Palestinian authority, they tell you, for us to help you get this permit, you have to pay us a monthly fee of $500. And this is a fee that's off the books. So let's say you go into Israel, you get paid always in Israeli shekels. Let's say you're paid about $100 the equivalent, $100 a day. That stipend, some of it is taken off as social security, some of it is taxes. Some of these taxes are actually sent back to the Palestinian authority. And you as the employee, you never see the taxes that are sent back and you never see the social security that was deducted from your paycheck. Now, you can bring the shekels because under an agreement that the Palestinian authority signed with Israelis, the only legal tender that the Palestinian authority can use is actually the Israeli shekel, a currency that the Palestinians have no control over and have no say in its supply or the way it's spent or we have no say in the Israeli monetary policy, obviously. The point here, Noor, is if you are a Palestinian living under the Palestinian authority, under the Israeli occupation, you have, you're really battling all kinds of forces, whether corruption, whether military occupation, whether lack of freedom, lack of expression, no independence whatsoever. No say because your bank, let's say you earn your wage in the Israeli labor market, your bank account could be frozen on Trump charges. You could be completely innocent, but one person in the security establishment of the Palestinian authority does not like you or you haven't paid your bribe to them, then they will cut off your permit. They will write false information and send it to the Israeli intelligence agencies that says this person all of a sudden is a high-risk individual and should not be given his permit. And then until you pay, they will correct the record again. And so it's a very, very corrupt environment. Let's touch a little bit on the aid aspect of things. The U.S., you know, a lot of countries in the world, but especially the U.S., we send a lot of aid to Palestine. Where does that aid go? To corrupt individuals. Sadly, the aid that is sent by the U.S. or Europe goes to mostly benefit corrupt Palestinian officials. I know it's not an intentional result, but that is the fact. And unless we change the formula in which we are giving aid, so we are not enabling corrupt officials, we're not enabling a corrupt environment, I think the idea of aid will always work against values that we believe in as Americans, democratic values. Because again, corruption is the number one enemy for democracy. And if we're sending aid to strengthen and embolden corruption, we're fighting democracy. And it doesn't make sense to me as a democracy, we'd be spending hundreds of millions of dollars to fight the possibility of Palestinians one day having their own democracy. We need to step back for a second, not only to stop the aid, but stop the way the aid is being sent. And that's what we talked about introducing Bitcoin into the equation. Bitcoin is a solution where the Palestinian authority not only is not involved, the banks are not involved, it's direct aid from the United States, it's direct aid from those who are giving aid directly to the individual who is able to receive it in his or her wallet and spend it accordingly. So we're able to see the results of the money that we're sending.  What are you talking about here? The title of the panel Bitcoin is freedom and Bitcoin offers a way for people living under repressive regimes in corrupt societies to earn a living outside of the confinements of corruption, outside the abuse of dictators. And I am a big fan of Bitcoin, especially in Palestine and for Palestinians, because I feel it's one way to curtail the influence of a corrupt regime like the Palestinian authority. But also it's a new way for a Palestinian generation to join the rest of the world. Much of the conflict has held back Palestinian youth. We, you know, the Palestinian population is very young. Gaza has two and a half million people, half of them are under 18 years old. Two thirds of the Palestinian population is under 30 years old, right? 70% of our population is very active on the internet. So if we're going to lift up our society and move it out of poverty, move it away from corruption, move it away from the brutality of the occupation, we need to look into new ways. And with, you know, people looked into the politics, looked into the justice and the injustice, but very few looked into the financial solutions. And I see Bitcoin as a peaceful mean to empower the local population. And by the way, it's not just Palestine. Look at Afghanistan. Now the women who are working on robotics and other ideas are being paid by Bitcoin. Look at Iran, look at Russia, Ukraine. And so in Palestine, Bitcoin is already familiar, but it's not very popular yet. My goal is to link with as many people as possible here, make it available, educate as many people as possible, and spread the idea. How can a Palestinian, you know, at this point right now, you know, transact in Bitcoin? Is that possible inside Palestine? It's possible. So you could, you have two options. You can retain your currency in Bitcoin, and you could pay each other in Bitcoin, depending if the other person has a wallet and is able to send or receive Bitcoin. But if also you decide to sell Bitcoin in exchange for local currency, there are groups that there are exchanges that can actually do that. There are groups on Telegram, there are groups on WhatsApp even, where you could just meet up and say, okay, I'll exchange this many satoshis for this many shekels or dollars.   I think the Palestinian Authority and others will do whatever they can to push back against Bitcoin, because it undermines their monopoly on the economy. It undermines their, you know, income generating model, which they've built for themselves, corruption. But I think this is something you can't stop. And it's already gaining attraction among the young Palestinian population. And it's just a matter of time before others are aware of it. And my goal, my role is really to make wallets as available as possible, the knowledge as available as possible using the right seed signers for the local population so that it's actually a matter of fact that nobody can stop. You are wanted by the Palestinian Authority. Will you explain to us how, how did that happen? I received several death threats, but the most recent one was a death threat by the military wing of Fatah, which is the party of the president, President Mahmoud Abbas. I have grown to be a local critic of the president, of his corruption, of his undemocratic rule. Since 2011, I've talked about how we need to have elections. It's unacceptable that a president can stay 17 years in a one-four year term. It's unacceptable that a president appoints himself to rule by decree, which is almost, basically is a king, right? Only kings as far as I know rule by decree. We have no parliament because the president dissolved the parliament, does not allow parliamentary elections, does not want presidential elections. And so my criticism has been, how do you expect the normal Palestinian to grow up in an environment like this? You know, a Palestinian who's now 15 years old, living in Gaza, has experienced already four wars, four wars on top of this. No elections, no democracy, no freedom of movement, no jobs. And so this has been my voice and I've always put the criticism first at the president.  And then in June tried and succeeded and killed my friend Nizar Banat. A group of security agents went into his house, grabbed him, beat him up with metal clubs until he died. That's why it's for the president and his authority, they see the ideology that I spread as being very dangerous. They blame me for waking up the youth against the political system when really what I'm doing is normal. You can't be an educated anybody, Palestinian or any other nationality living in America where you see around you a democracy functioning and then not hope that some of that would exist in your own country and where it would exist with, you know, among the people that you came from. And you know, they call us human rights activists, you know, anti-corruption activists, but I really believe that we are dreamers, we're dreamers without illusions who hope one day that democracy would be the norm in our countries so that, you know, I left when I was 14 years old to get an education in America and I hope that nobody else has to leave, you know, but if you want people to stay, if you want people to hold onto an idea, you have to give them a compelling idea. And to me, democracy is a very compelling, successful idea. So that's why I'm wanted because I'm a pro-democracy anti-corruption activist. Do you still think that's the two state solution possible? The two state solutions in the current environment I think is already dead. I think you will find very few people that will tell you it's alive. I think the veneer of a two state solution is kept alive in order to be able to play politics and say that there's still the hope, there's still the possibility. And so some, you know, some politicians will go and pretend that it's possible, but I think everybody knows that it's dead. It doesn't exist anymore. What do you think the average Palestinian thinks about right now in terms of, you know, solving the conflict? Because, you know, on the outside it just seems ideological. The reality of that is a little different. I remember asking during the last Gaza war, asking different friends, I was going to do a TV interview and I asked him, what is your message to the world? What do you want the world to know about you? And I remember the common phrase was, we just want to live. We want to have a normal life. That's it. Peace is a luxury at this point. It's not an attainable, you know, goal, but a normal life would be really amazing. That's basically it. That's our demand. A life where I could get up as a Palestinian and say, today I'm going to go to the doctor. I'm going to go to Tel Aviv, buy a computer maybe. Yes, I'm going to import my goods and be able to sell them online. I can buy something online, which I cannot as a Palestinian.  That's it. Are you going to go back to Palestine at any point? Yes, I will go back. I go back often, quietly, so that the president doesn't know that I am there, but I'm always there. Fadi Salami, thank you so much for talking to me. Thank you so much, Noor.


Hey guys, welcome back to our channel. My name is Andrea with Food and Mentory Adventures in Food and I am here today with a quick fill in haul from Aldi. I spent $71 in some change, so I will jump right in for you guys. So I grabbed some of these extra large flour tortillas. My husband loves these things. He makes breakfast burritos and also different types of wraps at lunch since he is working from home and has been since the pandemic began. And then I saw this holiday cranberry candle. It smells so good. They had two other scents. They had a first snow, which kind of smelled like peppermint and then they also had a vanilla, but to me this one smelled the very best. If you've never had their candles before, I'd say they're probably better than bath and body and they burn evenly and they have a really strong throw or scent. Then I grabbed some sugar and I needed some onions for recipes. I was completely out of tomato sauce, so I grabbed six cans. I think those were 30 cents each and then they had all sorts of cute little cookie kits. So I grabbed this one. This was $2 and some change. Mini trees, shortbread cookie kit and so it comes with a cookie cutter. It comes with the mix and it comes with the little sprinkles there and then all you need to do is add butter to it and it makes 48 cookies. I saw it somewhere. Oh, there it is. It makes 48 cookies. So they had this one and then they also had a pinwheel one. The pinwheel was a sugar cookie and the cookies, sorry, were red, green and red and green I think. And so they had that one too and it was the same price, but I preferred this one and then they had this ugly sweater sugar cookie kit and it was $4 and some change. Now I thought these cookies were already made and that you just decorate them, but they're not. You actually have to bake them yourself, which is fine. I just didn't read it well enough before I picked it up. But it comes with the sugar cookie mix, the frosting, all the little candies that you see all over the little cookies and then piping bag and it was $4 and I think it was 49 cents. So I thought that was a really good deal and it's super cute. And then I needed some cabbage. I'm probably gonna make some sausage and potato soup pretty soon. And then I needed some more baker's joy. Of course, this isn't baker's joy, but this is their knockoff for baking. It's a non-stick spray that has flour in it already. And then I grabbed some salsa verde for some recipes. I grabbed some jasmine rice and then I grabbed my favorite butter cookies. They only bring these out around Christmas.  Let me see if I can show you the ingredients because there's nothing weird in them, stuff that you would have at home, flour, sugar, egg, butter, fat and whey. That's it. And these are the best butter cookies ever. Love these things. And then I grabbed some animal crackers. I am addicted to these animal crackers. I think they were $1.99 a box. And if you are old enough to remember McDonald Land cookies, these are what these taste like. They're so good. Grabbed my rice, that's a staple for me. I grab it every time I go to Aldi because I make a lot of different rice dishes. And by the way, our what's for dinner videos come out on Tuesday. If you're interested in seeing the types of food that we eat and recipes that I cook, I was almost all out of cheese. So I grabbed some sharp cheddar slices and then also a brick of cheese. I prefer to shred my own cheese for recipes and not use the pre-shredded most of the time. So grabbed a brick of sharp cheddar, grabbed a brick of Monterey. I don't know that I've ever seen this Wisconsin extra sharp cheddar, but I grabbed one of those and then also some Colby. And I don't think I've ever seen just plain Colby. I've seen Colby Jack, but I don't remember. Maybe I have. Grabbed some bacon totally out of that and needed some. Grabbed these two new cheeses. From what I understand, it's supposed to taste like the Trader Joe's, what's the name of that cheese? I'll insert it because I can't remember the name of it. But it's supposed to be like that, but it's way cheaper. So this was 389, both of these. So this is just an Australian grass-fed cheddar cheese, Unexpected Cheddar. That's the name of the Trader Joe's, Unexpected Cheddar. So that, and then I also grabbed this one, cheddar and Parmesan cheese. That sounded really good. My husband and I both love cheese so we can eat this with some crackers.  And this'll be good just to have if I need to throw some cheese on something. I love this gourmet spreadable cheese and they don't always have it. So whenever I see it, I grab it and I just eat it on crackers. And then I also like this chive and onion cream cheese bread. I use it for bagels or for cooking. And then I have been looking for these in my store for a very long time. They hardly ever have them. I like Rice Krispie treats and normally I make my own Rice Krispie treats but sometimes you just want a quick fix. So I actually do not like the Kellogg's Rice Krispie treats that they sell on a box like this. To me, they taste super sweet and artificial. I've heard that these are way better and they don't taste super sweet and they taste more homemade. So I'm excited to try these out. And then the last few things I got, I got for my 10-month-old son Harrison. He loves these rice crackers. So I got him a banana strawberry and then also an apple. And then I got him two of the containers of the banana puffs. All right, so this is everything that I picked up on my quick Aldi fill-in haul. I hope you guys enjoyed this video. If you did, please make sure to give us a thumbs up. If you have not subscribed to our channel, I certainly hope you'll do so. Thanks so much for watching and we'll see you guys next time.


All right, first of all, thanks everyone for coming taking the time Yeah, my name is Nicholas This is a picture of a town called Freiburg is in South Germany. It is my current home and my workplace But of course, I'm not there right now because I'm here at the Euro Python And it's actually quite funny Euro Python. You think if you think of it, it's a compound word Python is a programming language and Europe is a continent which is a geographical concept. So you would think maybe the conference is I know 5050 split between Python and Geography, but I have found that that's actually not the case and to rectify this a bit. I'm Donating one slide of my presentation to geography. So if you're not interested, please bear with me Let's go Central Europe the red dot is actually indicating the position of Freiburg where I'm coming from it's wetched wedged in between France Switzerland and Yeah, I've actually come here by train which was really nice So the trains here in Italy were all on time air conditioned and very fast now I'm I had to cross all of Switzerland for this and of course, there's a problem because there's a There are large mountains there in Switzerland namely the Alps and Until last year you actually had to go over the mountains, but last year the Gotthard base tunnel opened up and we can just smoothly go through the mountains and Yeah, it's a really nice tunnel. It is just over 57 kilometers long and it's the longest train tunnel in the world It's actually the longest traffic tunnel of any kind in the world. So, yeah There's your geography fun fact if you if you will but of course, I'm not here to to talk about Geography or tunnels although I would like to but I'm here to talk about web development now I'm a web developer at a company called MPS Which is an abbreviation for a bunch of long German words. I won't bother you with now And yeah, just you have to know we we make medical software And the title of my presentation might be some some of you might have thought it's a bit provocative And I would like to say of course, I know Python is amazing for web developers. We have all the cool of Frameworks like Django we have flask and we have pyramids And of course, there's nothing wrong with them Of course, I'm I'm sure there's something wrong with all of them But you know, they're just amazing and please do use them if you look on Wikipedia You will find that there's actually a whole list of Python-based web frameworks that I don't even all know Some of them are considered dormant, which I'm sure it's just a nice way to say dead, but you know Um Right So these are all cool cool Frameworks that do very much very much work for you But I do suggest that sometimes it can be useful to you know, not have such a huge framework But use less use like very little to get the job done and I would like to present to you three reasons why we might want to do that. The first is You want to learn stuff, right? For example, if you wanted to learn how an internal combustion engine works You wouldn't look at the whole formula one car, but you would instead just take the engine out and see how it works And the same can be said for web development If you run into I mean if you're in web development and you have maybe a Django app or whatever You will eventually run into issues You have to debug them and you might have to understand how the Whiskey communication between your app and the server so the web server Application works you have to understand HTTP headers weird cookie configuration and all that stuff. So if you want to look at These things and try to understand them. It can be a good idea to play around with just a small very minimalized stack and familiarize yourself with them second Motivation for using less could be to avoid over engineering Over engineering is a bad idea in most I would say in most situations Right it was your time it was the resources It generates a lot of dependencies which makes it kind of make can make it hard to update stuff So, I don't know if you just want to Make a website for your parents to have their favorite cookie recipes or something then I don't know Maybe you don't need to to use Django for that and of course It's always a security risk to use more stuff because more stuff means more surface and more surface means more attack vectors just for a Fun little example if you're in the national rail operator in a country you might not want to use full-brown windows machines and which are network enabled to display your timetables because you might get hacked and the third reason and This is actually a reason why I got into Vaxxorg Yes, you might want to do something something so specific that the general the general purpose frameworks Bring with with them stuff that you just don't need And make assumptions that are just not relevant to your case so And this brings me to The product of my company Which is called chemo compile We build it together with the University Hospital in Freiburg. It is a program to plan manage and document chemotherapy treatment now chemotherapy treatment of course Can be very risky for example if you make just the tiniest error in dosage calculations You might actually harm patients if you make Make an error in maybe a date So you send out an order for chemotherapy to be prepared a day early. You might have to throw away Medication worth 15,000 euros. That's not a made-up number Right chemo compile is this is a marketing sentence, isn't it? It's built with modern web technology Whatever that means It's now used in hospitals in three European countries and if you will enumerate the Most the biggest German can't speaking countries then you might not be far off Let's go quickly over the application Architecture it's a web application as I said so somewhere in the customers Internet there's a server where our software is running and then every computer laptop Tablet that has access to the server can just use Software this is actually quite un from uncommon for professional Products they are often Client base and you have to install everything on each workstation for yourself So our customers are very happy to have a web web based Application a front-end is built with AngularJS It's a single page page application and in the back end. We are of course using Python I'm not going to tell you which version because that might be a bit embarrassing actually It's not to six though And then for the communication we have a rest API which just sends back-and-forth Jason data So this immediately Eliminates the need for any kind of HTML rendering in the back end which frameworks like Django and so forth Bring with them But there's more going on. It's not just a web application. We have to do some Actually a lot of communication behind the scenes where we have to talk to a database. That's not all that uncommon But we are also tightly integrated in the infrastructure that's already there in the hospitals So we have to talk to a hospital information center to retrieve patient data. This is done with a Protocol called health level seven has anybody ever used it or really couple So you would maybe agree that it's kind of ancient and a bit clunky at times So, yeah, for example, there's no you cannot just request patient data You have to sit there subscribe to a message queue and wait for the data to come by and Store it like in your database for later use which is can be a bit complicated. We also have to talk to lab Equipment so or lab lab servers to yeah to read basically retrieve Data about blood samples and so on Which is also done with h7 We have to talk to printers believe it or not most of these hospitals have a sort of like a printer based workflow where doctors Plan a therapy and it gets automatically printed out and at certain times in certain compute in certain printers and then people Yeah, automatically start to work on them So we have to yeah, we have to talk to printers. We have to make basically you have to make a LPR call and Finally, we have to talk to pharmacy systems Because as I told you all these chemotherapy medications, they are Well, they're highly individualized. So each Order is prepared and mixed basically for for the patient for the day Specifically so this is not a pharmacy like your corner shop pharmacy This is a pharmacy within the hospitals or basically it's more of a chemical lab basically and there is Expert softwares that handle these kinds of processes and we have to implement then Interfaces to all of these systems so yeah so this all of course happens within the intranet and for each installation there's only like maybe 20 clients maximum operating Concurrently so this really takes away a lot of Scaling things that you have in Problems that you have in regular web application because we just we just don't have to do it Yeah, so we Prototyped our application actually with Django, which was of course very easy and nice, but then we just found out at Django's It's okay. I'm not saying we couldn't have done it with Django, but we instead Decided to basically roll our own On our own stack and we did that on top of a cool tool called verge. So now Back to gives a bit of a weird word It has a lot of consonants It's very long and hard to pronounce and you of course know what's going on It's German and it's actually a German tool at a German word for tool very generic And it's actually a very generic tool as well so it kind of fits Um Right Vaxxx is developed by the Poco team if you were here on Monday I'm in Ronaha is a famous member of that team Other products include flask Sphinx, ginger to the templating engine and more It's called well the documentation calls it a whiskey utility, so it's specifically not called a framework and Yeah, because it's just intentionally left very lightweight. It's basically yeah, it's a toolbox. It's a toolbox for replication And not more it leaves you very very much freedom to use Whatever things you want to plug on top of it or leave them out right it has no or M no templating engine none of these things that most frameworks would bring with them and It's yeah, it's the basic of flask the basis of flask if you've ever worked with flask You have actually also worked with back toic and the Wikipedia page says it says it's also the base for others But I don't know what these other things are Okay, let's go quickly over the features of back toic Yeah, it's the most important thing it's it's for making whiskey applications whiskey is for those of you who don't know But it's a web server a gateway interface. So it's the protocol that python applications who generate dynamic Websites used to talk to the web server the web server being an engine X or Apache One of those programs. It's whiskey 1.0 compatible. It has a lot of helpers to To facilitate the communication between with the web server for example The most important concepts in a whiskey or in any web application really are of course requests and responses. So The client requests something Responses generated by your program and sent back. So these are actually wrapped in back toic with Objects that let you introspect them work with them create them and so There's a couple of HTTP utilities this sort of touches on on the Learning how stuff works thing that I said earlier There are nice nice tools to introspect headers to yeah, basically look at headers parts form data handle cookies write cookies parse cookies validate cookies I guess It has unique could support of course It has an URL routing system Which is optional. So you don't actually have to use it But it's of course something that most replication would use in any In any form. So there's a nice routing system, which is also very lightweight. We look at it in a second And for developers, it's actually this is my favorite part about works. It's very friendly towards developers You have a nice test client and not environment builder which lets you Which lets you build environments to test your application in different kind of Circumstances and there's a nice interactive debugger. I think that's also part of flask so you can Interactively debug your application in the browser Yeah, let's look at how a basic works like application looks This is it you just have one function and the function takes two arguments in viral and start response and these two arguments actually Given by the whiskey protocol. So in viral is basically holds the environment information Which is the request and configuration data and start response is information needed to then send the Response back How it works like you can then use the request Constructor to get in at the actual request out of the environment You can then access for example in the arguments so the action get get arguments in the URL with that object and you can use a response construct have to put to basically Construct the response and send it back And then you have yeah, I have a nice test runner run simple which just runs your server for development purposes This gets even easier With the request application Decorator which takes away or sort of hides the parsing of the request because this is something that you would most like They want to do all of the time and you can just return a response object So this is the easiest application that you could build notice that there is no no URL Mapping routing of any kind going on So every request no matter the path would just go to this one function But if you would want to do URL routing you can use the nice built-in Map functionality you would just build your URL map and you would have it You would pass it a bunch of rules and these rules basically consist of a URL template and an endpoint and the endpoint can be anything So it's very simple. Also in this Regard most of the time, of course the endpoint would be some kind of view function here I just have some strings and in your yeah in your URL templates you can use placeholders For example, you can request an integer you can request any Yeah, any of a couple of values or just a default which is the last Example which is then just passed as a string and Yeah, this is how you would use it. I'm a bit I'm a bit behind so I'm just gonna skip over this Another nice concept in vector got a middlewares Middlewares are just a cool concept to compartmentalize your application So you would have logically Separated parts of your application as single waxer applications and you can combine them as needed For example, you would have a part of the application that needs database access You would have a part of the application that maybe don't it doesn't and you would also serve static files You can then connect them in work site with You could connect them in work site in this fashion and all of these objects are middlewares, so In the end a request would come would come through and would be passed to the first middleware which would take care of user authentication and Then if it's if the request is for static file would go to the static file middleware and The response would be sent back up and then there's a special dispatch of middleware which can dispatch between different whiskey apps and For the database part We also use a db connection middleware which we can plug on top of it and Yeah, any of the middlewares can manipulate the requests or the response Can decide to send it to different parts or can decide to Just send the response back up This is how you would look in the code So this build application function would just take an app and put shells of middlewares just around it How this is basically the example of from the previous slide and you would wrap your my database app In a db connector middleware and you would then plug that in Into a dispatcher middleware which takes the non The my regular app which is the part without the db app access under one URL root and the now db connected part under another URL and then we can wrap around the shared data middleware to serve static files and this is of course something you would only do in In the development environment because in your production environment you would most likely do that with your web server So this is very nice if you yeah, you can with these middlewares you can have different setups for different Yeah use cases very easily for example the last thing that we wrap around is the authentication middleware Which we would maybe not want to use in our development stack because we Or in our test stack because we don't want to deal with authentication all of the time The HTTP utilities I'm just gonna gloss over There's apparently HTTP has a bit of weird Date formats and also different dates formats and we're so it has Utilities to parse and write all of these Yeah, you can as I already said read and write cookies easily you can for example parse form data This is what it would look like You would you just simulate simulate a request with form data and in the end we can access it with a dictionary Now the fun part is always the testing right Works it has this really nice concept of the test client and I'm not a hundred percent sure but I think it's basically the same in flask and Yeah, you can just parse the client your your application and then you can call on this client All of the your favorite HTTP methods get post delete put will have you Give them the URL you want to access and if you have data or want to Pass special HTTP headers. You can also give it to them to to the client and And you just get the response back and you have now are just simulated the whole Replication which is very nice and then you can run assertions like I want to have like a success status and The data should look like this Very nice to use very nice to use as a pie test fixture for example just This is of course very eat very simple, but in in a fixture you could also do the Plugging together of the middlewares and everything Then you yeah, you just define this once and just use the fixture Everywhere or you could have different kinds of clients for example as I said, maybe you don't want to have the authentication in most of your tests so you have a client that doesn't use the It doesn't use the authentication and you have a special off client which just Wraps around the authentication middleware and when you want to test the authentication you use this fixture to for example check that If you're not logged in you get a 401 Now I'm not brave enough to do a live demo. So you will have to live with the screenshot of the live debugger Here I have just put together a simple application if you look at the URL bar. I requested 18 for something and I got a key error. So I can Just go into the browser open up an interactive terminal where I get thrown into the scope and I can introspect all All the things in the scope and I find out I have actually requested the I've actually requested the location of Europe Python 2018 which is as far as I know not defined yet and this is the problem with my application This debugger is also implemented as a middleware So if I want to use it, I just wrap the debugger middleware around My application and any exception that bubbles up will just get caught and presented in this nice way Yeah, so those are the things I wanted to mention these are of course only the things that I use mostly with Wackzeug Please take a look at the great documentation If you if you want to see what what other things there are Yeah, and if you have a Wackzeug application, you can use you can just do anything on top of it Right, you can connect to a database we for example your sequel alchemy, but you can use your favorite or M You could use ginger to to render documents which we do for example to render PDF documents Use salary to schedule tasks Asynchronous asynchronously or any other task runner that you like Talk to third-party applications with requests for example to to call other APIs Makes this calls and I don't know go wild Remote control a robot to wash your dishes or whatever That's pretty much it. Thank you for listening if you would like to talk to me about Yeah, tunnels train tunnels or Wackzeug talk come talk to me or find me on Twitter. Thank you All right, we've got five minutes for Q&A any questions Just one question. I'm curious about why What did you prefer of that? So I go there are other choices like web app or I don't know other webop Which is the foundation of pypyramid and pylons and it's nearly the same so Well, I'm fully disclosure. I was actually not around when we made that decision. So I don't know. I don't also don't know The tool you were talking about I guess it's just a matter of taste In the end we wanted to be very much in control of the stuff. So we wanted to have Yeah, lightweight libraries and write most of the stuff ourselves, but you could you could have used most other tools as well Over here. Thank you for your talk. It was really nice Out of curiosity, which parts of Django were too bloated for you? Yeah, well as I said it's it's just for these For these these special applications as I said Template rendering for example, we didn't want to use that. We also didn't want to use the Django ORM Which is I guess just a matter of taste And at the time. Yeah, we were just not all of us were not too familiar with Django. So then the difference So yeah, we had to make a decision basically to learn Django in like an expert level Which we didn't really know if it would benefit us enough. So or the other alternative was to roll our own stuff Any more questions? Okay, I have a question for you. Um When would you choose Vexoic versus Flask and why? I don't know. It really depends on As I said, I'm not I'm not just suggesting that you can't do all these things with other things I think Django REST is also in existence. I maybe have to look at this Yeah, Flask brings with it On top of this routing systems, I think the ORM is also optional. It's like a plug-in. I don't know I think yeah, it depends on the on the on the use case It's I think it's a really nice tool to to learn stuff if you want to dig into how how HGP-Whiskey work use work talk Yeah, or yeah, if you want to do something special Oh What is this start response function in the whiskey function? Yeah Besides of the environment I Would have to say I don't really know. All I know is that it's somehow it's a callable It's somehow used to Generate the request. You're not do you know more about this? It's part of the whiskey spec I think yeah, it's a callable which I don't know if you look at the whiskey spec, which is in a pep somewhere explains it Yeah, all right Think we're done. Thank you very much. Thank you