Hello and welcome to another OpenShift Commons briefing. This time, we have one of my favorite Red Hatters, James Faulkner from the Red Hat Metalware team, coming in and he's gonna talk to us about building cloud native applications using some of the raw work that's being done at Red Hat and Wildfly form. So I'm gonna let James introduce himself. The format of this event is that we do the Q&A in chat and there's a live demo. And at the end of this whole session, when he finally takes a breath, we will have live Q&A. So James, I'm gonna let you take it away. I know there's a lot of content and I'm really looking forward to this one. Okay, great. Thanks, Diane. So hello, everyone. As Diane mentioned, my name is James Faulkner. I am a technical marketing manager in the Red Hat Metalware group. Today, we're gonna be talking about building cloud native applications with Wildfly Swarm and Roar. I'll give you a brief intro to Roar and Wildfly Swarm, but the most of the time we'll spend doing a hands-on demo so you can get a feel of what we're actually talking about here. So I won't spend too much time on the marketing fluff at the beginning. Just briefly, a couple of other OpenShift Commons briefings that have occurred late last year around Roar and building cloud native apps with Spring Boot. You can see the listing here. We also did one for a monolith to microservices journey describing how you can modernize your existing applications using Roar. So check those out if you're interested in more in-depth detail around modernization or if you're interested in Spring Boot or Roar in general. So again, I will give a brief introduction to Roar. So Roar stands for Red Hat OpenShift Application Runtimes. And what this is is a new product from Red Hat. It's a collection of curated and certified and supported runtimes and frameworks that are targeting microservice and cloud native application development for companies who either have existing applications that they want to modernize or they're building net new applications, cloud native applications. You can use the components within Roar to do that. So here's a market texture diagram of what Roar actually contains. So at the top, you see tested and verified frameworks. These are popular frameworks that have been proven to be very useful and effective in building cloud native applications like Spring Boot. There's a number of open source projects from Netflix around fault tolerance and other aspects of microservice development. And then underneath, we have the supported microservice runtimes which include JBoss EAP, which we've had for a number of years. We've also added in other popular runtimes like Eclipse Vertex for building reactive applications. We have Node.js for building reactive JavaScript applications and we also have embedded Tomcat for building more lightweight web applications. And then lastly, we have Wildfly Swarm which we'll get to in a moment. So all of these applications are packaged into a product from Red Hat and supported through our normal support channels. We also have a launch experience which I'll get to in a moment. But getting down to the nuts and bolts. So when we talk about these frameworks, how are they actually delivered to you as a customer or as an open source developer? Well, three of them at least are kind of Java based. And so you typically use things like Maven or Gradle. So we at Red Hat focus on Maven. So we have artifacts in Maven repositories which deliver these components to you for non-Java like Node.js in this case. It's delivered as a container on our Red Hat container catalog. So we have official supported channels for getting the bits into your projects and you'll see this in the demo as well. So I also mentioned the launch experience. So before you get deep down into building cloud native apps with Roar and you wanna see what Roar is all about if you head over to developers.redhat.com slash launch we have a kind of a guided wizard-like experience for generating new projects and these projects exemplify cloud native aspects like fault tolerance with circuit breaking and externalized configuration and securing microservices and so forth. So we call these things boosters. And so this launch site will walk you through and allow you to select the type of what we call a mission that you want to see an example of. You can also select which runtime you want whether it's Spring Boot or Vertex or Swarm or Node.js. You can deploy it to your local OpenShift instance or you can deploy it to OpenShift Online as well. So check that out if you wanna get started without too much fuss and without having to download and install too many things. Okay, so let's focus on wildfire swarm. So swarm is one of the runtimes in Roar. Wildfire swarm targets Java microservices. It has a lineage going back as you can guess from the name goes back to the upstream wildfire projects and this is an open-source Java EE application server. Wildfire swarm brings in a number of components from wildfire itself to implement a number of features that microservice developers need. Also, more importantly, it brings in Java EE features so that if you are a Java EE developer and you're looking to implement microservices, wildfire swarm is a great choice because you can leverage that existing expertise that you already have. Again, it brings in components from wildfire but it also brings in components outside of the wildfire ecosystem for doing a number of things like which we'll see in the demo in a moment. It also is an implementation of MicroProfile which is a new specification champion by a number of companies and we'll have some more detail on that in a moment. So getting down into the nuts and bolts of wildfire swarm, so what it is is a way to package just enough of the app server components needed to run your application. So these components are packaged into what we call fractions. So these are things that provide the small amount of functionality that you need. And so the way you build your application is you declare the fractions that you need or you let wildfire swarm auto detect what you need based on your source code and then it packages into a single runnable jar file which we call a fat jar or uber jar. So you can, again, you can add specific fractions that you need and only package those things that you need. So it makes it a very small runtime, easily deployable to a container application or a container orchestration platform like OpenShift, for example. Each of the fractions is also configurable independently. So each fraction may expose some configuration knobs that you can turn to modify things. So for tooling, as I mentioned, we focus on Maven in the wildfire swarm project. There's also a Gradle plugin, but you'll see the Maven stuff coming in this demo. And so we have a plugin for Maven called the wildfire swarm plugin, which is one aspect of the tooling. We also have IDE integration.  In the swarm case, it will also do the same. It'll generate a project for you or it will annotate your existing project with wildfire swarm functionality and gets you up and running very quickly. There's also a swarm tool which lets you wrap an existing war file if you have an existing application and you can't rebuild it for whatever reason, you can wrap it into a runnable jar file using swarm tool. And then lastly, there's a project generator very similar to what you get in the spring ecosystem with start.spring.io. If you head over to wildfly-swarm.io slash generator, you can choose your dependencies and click a button and it'll generate a project for you which you can download and then you're off on your way to building awesome stuff with wildfire swarm. So we won't use the generator today but we will use Maven plugin and the Jboss Forge add-on. Here's a quick screenshot of the project generator.  For building cloud native applications with swarm in particular, there's a number of features within swarm that come from either the Java EE upstream wildfly project or from other projects like Netflix to implement features that target specific for around cloud native. And the definition of cloud native is somewhat ambiguous but essentially there's a number of aspects of a project that make it cloud native and make it able to be deployed to a cloud environment with changing network conditions and different environments from the developer's desktop to a QA environment to a staging to production that allows cloud native applications can easily move through that. So the features you see listed here are exposed in wildfly swarm through various fractions or functionality within swarm itself. And I'll go through two of them today. There's a number of others that we won't get to because we don't have enough time today and you'll probably get bored watching screens fly by after 20 or 30 minutes. Okay, so I mentioned micro profile. So wildfly swarm is an implementation of micro profile. So this is a set of specifications championed by a number of influential communities within the Java ecosystem, including Red Hat, IBM, Pyara, Tommy tribe, et cetera. You can see the list there. Swarm is our implementation of this specification and this again targets Java microservice developers who might not need the complete set of specifications coming out of Java EE or they might be using a legacy platform like WebLogic or WebSphere. And they kind of want to move off of that and get into a more micro smaller, logically smaller implementation using a subset of what they know. So you can see the list of specifications that are included in the latest release of micro profile which was version 1.3, which came out, I believe about a week ago. It has support for health checks, for example, or CDI and fault tolerance. These specifications, interestingly, some of them actually started in the wildfly community and were donated to the micro profile community as a specification. Obviously that makes things easier for wildfly swarm but in other cases, specifications came from IBM and from the rest of the micro profile community members who are working on this. So great set, very small set, targeted specifically at microservices and it's very easy to use with swarm and with any of the other implementations. Okay, so let's get on to the demo. So the demo is based off of some source code on GitHub. You can see the URL that we're not a URL but it's on my GitHub account. So what I'm gonna do is take an existing application to warmify it and then we're going to break it apart into microservices and show you how you can build some cloud native aspects into those microservices using wildfly swarm and then we'll tie them all together. Essentially what we'll be doing is what we call strangling the monolith. This is a pattern that was championed by Martin Fowler a number of years ago where it allows your projects to slowly evolve over time into a more modular architecture without having to rewrite everything from the ground up. Okay, so let's get out of slide mode and head over to my trusty developer environment. So what I have here is a number of projects. I'm really gonna touch a couple of them today. So the first one is this monolithic application. This is what I was talking about. This is a Java EE application. Typical Maven build file here. You can see I only have one dependency or actually I have two dependencies. I have a dependency on Java EE itself because I've built this application over a number of years and I'm a Java EE expert. I also have a dependency on a database. So in this case, we're using an in-memory database for simplicity. So the first thing I wanna do as a swarm evaluator is I wanna start with swarm. So what's the easiest way to do that? Well, I have the forge, Jboss forge project has an integration with my IDE. So I've installed it and now I have a nice little set of menu items that I can use to get started quickly. So the first one is called setup. So I'm gonna just click this, just go ahead and click finish. And now my project has been swarm-ified. So you can see what it's done. Let me scroll up and highlight exactly what it did here. So it added a new property to my project for the version of Wildfly Swarm that it's gonna use. It added a plugin definition for the Wildfly Swarm plugin which integrates with Maven, which I'm using. And then it also added a dependency, a set of dependencies in a bomb, a bill of materials, which brings in the Wildfly components. As I mentioned, this is a Java EE project that was written five years ago with Java EE. I am not gonna touch the source code at all. I'm simply going to build and run it with Wildfly Swarm now that I've added these three very small components. So I'm gonna open up a menu over here which gives me access to my Maven target. So I'm gonna open up my project here. Wildfly Swarm is a plugin. So it appears under the plugins directory. And then I'm just gonna simply run it with Wildfly Swarm run. So what this is gonna do is package up the application into a runnable jar file and then run it using Java-jar. So very simple.  So right now it's building. You can see up here somewhere it did the auto detection. So out of the box it auto detects. So it looked at my source code and looked for annotations or looked for specific files and decided which fractions it needed to import. So it imported a number of fractions that I never even specified simply by auto detecting them. So it installed these fractions and it started up the project and it looks like it should be up and running now. So it's up and running. You can see here and it's running locally. So if we go back to my browser and open a new tab and go to local hosts 8080. It should be hopefully up and running. It's up and running. So here's my monolithic application. Didn't touch a single line of source code. I simply wrapped it in a runnable jar file with wildfire swarm. I let it auto detect what it needed. It created the runnable jar file and then ran it. So I can do things here. This is a online shopping cart as you can imagine as you can see actually. I can add things to my cart. I can remove things and I'm all happy and everything looks good. Okay, so that's pretty fun. Now let's move into the cloud native aspect of this. So it's still a monolith, but now I want to move it into a cloud orchestration platform. In this case, we're gonna be using OpenShift. OpenShift is Red Hat's container orchestration platform built on Kubernetes. And so to deploy that, I'm going to use another plugin called Fabricate. So Fabricate is an upstream project for building microservices with Red Hat technologies and other technologies. It has a Maven plugin as well. So I'm gonna go ahead and turn on that plugin and then it should appear in the menu here. So it did. So here's my Fabricate Maven plugin. But before I deploy it, the first thing you do with cloud native applications is one of the first things you need to do, you should do is create a health check. This implements a health check pattern. It allows container orchestration platforms to discover whether your application is healthy or not, which is really important for avoiding downtime during an update or for detecting when something's gone wrong and automatically healing the application, replacing the broken parts and bringing up a new version of the application. So I wanna add a health check and it just so happens that Wildfly Swarm and MicroProfile have that notion of a health check. So to use this in Wildfly Swarm, you need to add a new fraction. So I'm gonna use my trusty swarm tool or my trusty plugin here. Actually before I do that, I'm gonna stop this running process and now I'm gonna add this fraction that I need for my health check. So I'm gonna click the magic button again, bring up this swarm command tool and say add fraction. So I'm gonna add, there's a number of fractions. There's almost 200 different fractions you can add to swarm. The one I want is called monitor and this is a fraction that enables automatic health checking. So I'll click finish here. And the only thing that it did just now is it added this dependency information to my build file. I could have done that manually. You probably will do that manually once you become more familiar with swarm and the fractions it has, but it added it for me here and now I can go ahead and deploy my application with the health check. I wanna actually add some logic to my health check. So I'm gonna quickly create a new class in my monolith which is gonna implement my health check. So I'm gonna create a new Java class. So I'll call it infra endpoint. This is an infrastructural endpoint. It's going to be a Jaxrs. Was there a question? I think that we were having a little debate on the chat whether it was IntelliJ or Eclipse that you're using. Ah, it is IntelliJ idea. I lose. Okay. So the Forge plugin actually has a support for IntelliJ idea as well as Eclipse. So if you're using Eclipse, I think there's a NetBeans one as well but I'm using IntelliJ here. So I'm gonna create my health check endpoint which is gonna be a RESTful endpoint. So I need to add a path here of infra and I'm gonna create a simple single endpoint called check and it's gonna return a health status which is another class within a wildfire swarm. So check and it's gonna be extremely simple. I'm just gonna return healthy which actually has value in itself because this won't actually work until the application is up and running. So we will just do this health status. Dot named, we'll call it name.up. So I could add a bunch of logic up here to inspect the database or do something else before I return up and I can return down if it's down. But I'm just gonna go ahead and return up. So I need to annotate this with the RESTful endpoint annotations of get. So it's a get endpoint meaning HTTP get. The path is gonna be health and then the magic health annotation is a wildfire swarm annotation which identifies this endpoint as a health check. You can have multiple of these in your application and then wildfire swarm will aggregate them all and return kind of an aggregated value depending on all of those health checks as long as they all pass then swarm will be happy with that. Okay, so I've implemented my simple health check. I've added my fraction for supporting health checks. So I'm ready to deploy. So before I deploy I'm gonna go ahead and create a new project in OpenShift itself. So I'm gonna log into OpenShift. I have it running here locally. I'm gonna create a new project called cool store. I have my new project here and it's got nothing in it obviously because I just created it. So we'll just go ahead and now deploy it with fabricate. So fabricate deploy of my monolith. So this plugin will package the application with wildfire swarm and then package that into a Docker container image builder image shift that off to OpenShift and then it will go ahead and deploy that out to OpenShift. Let me make sure I'm logged in. I should be logged in to OpenShift. Yes, I am. Okay, so it's now created the, what it's doing is actually building it in OpenShift. So if I switch back to OpenShift we can actually see that build in progress. So you can see it actually already finished. So the build finished and now what fabricate will do is create the necessary Kubernetes objects to deploy that and get that up and running in OpenShift creating the deployment config object, the service object and a route. So it looks like it finished now. So let's switch back to OpenShift and you can see the application is now running. It's actually on the way up. While it's coming up, I can show you the health check. So within the OpenShift web console you can look at the health checks and you can see this path defined here, the slash health. This is the, you'll remember the health check that I defined was on infra slash health and so this is the aggregated version of that which will return true once it's up and running here, hopefully. So it looks like it's up and running. So we can check out the logs here, make sure everything looks like it's okay. Oh, you know, I forgot one thing. So when I turned on that health check in the, using the dependency or while fly swarm out of the box does auto detection which you saw momentarily ago by adding a specific explicit declaration of this fraction, I turn on that off implicitly because it thinks that I know what I'm doing and I declare all the dependencies in you but I actually don't know what I'm doing. So in order to turn the auto detection back on we need to configure this real quick. So let me do that. Fraction detect mode force. So I will go ahead and redeploy that one and then redeploy it. So this, because I again, because I declared the monitor fraction it turned off its automatic auto detection of other fractions needed. So I need other fractions obviously because I haven't given it any other fractions to depend on. So I'll deploy that, undeploy that and then redeploy it and it should come back up hopefully, switch back over to OpenShift here. It looks like that one's gone and my project is empty again and then it will rebuild and then come back on. So you can see now it's doing its detection properly because I forced it to auto detect so that the application will come up completely. So wait for that to finish. That should only take a couple of maybe 30 seconds or so. What's gonna happen is it's gonna deploy that same exact monolith but to OpenShift with a health check. We haven't talked about microservices yet and that's the next topic. So what we're gonna do is with our monolithic application which is a retail store, there are different components to that like a catalog for the number of project products that you have for sale. There's also an inventory system to tell you how many of each project, how many of each product you have left. So we're gonna split those out into individual microservices and then tie that into the monolith so that we effectively start the process of strangling that monolith where we can remove the inventory and catalog components because they're now independently developed by our inventory team at our company and the catalog team at our company and are no longer part of the monolith. So that's what's gonna happen here. So it looks like the new version is now finally up and running. So if I click this link here, I should get my monolith now and I see the monolith is running now on OpenShift so it's all well and good. So again, this UI is actually built from a number of different subsystems within the monolith which we're now gonna break out into microservices. So we're gonna do two of them. One of them I've already done, the inventory service.  So you can see it running here or you can see the source code to it here. It's a very simple microservice written in Node.js and JavaScript. I've already deployed it. So if I switch back to OpenShift and go back to this other project here called service, you can see the inventory is already up and running. If I curl it, which I could do, I can simply go like this and curl. I can do it like that. So I curled a simple, I accessed this Node.js endpoint, giving a product ID of this giant number and it returned me the fact that I have 337 of these products left in Idaho. So it actually doesn't matter what number I choose here because my lazy developers just returned whatever I give them. So product 4545 also happens to have 337 in Idaho. Every single product is gonna be in Idaho and have 337 copies of it. We're gonna use that to show you some interesting things with circuit breaking. Okay, so that's my inventory service. It's up and running already. So we'll skip that one and move over to the catalog service. So this is the second and final microservice we're gonna develop. This one is developed with Wildfly Swarm. I've already created the project. It has a RESTful endpoint for getting products and it has a kind of a simple, the way that it returns products is very simple. So it's actually a DOM. It's called DOM Get Quantity and it calls into the inventory system and gets the inventory of each product and then adds that to the return value. So let's go ahead and deploy that out to OpenShift as well. So I will close that one down, open up the catalog microservice, plugins, fabricate and I'll go ahead and deploy that out to OpenShift. So again, this is a simple catalog endpoint. It collects, it returns the products in the catalog with the inventory added to each component of the catalog by calling into this inventory service with very little error checking.  Okay, so that's building hopefully. It should take maybe 20 seconds or so to build and deploy and then we're gonna test it out and see what happens. More importantly, we're gonna see what happens when the inventory service is not working properly and we should hopefully get a big giant failure. Okay, so while that's deploying out, let's collapse this down and we will wait and the catalog service should appear here momentarily once the build is complete. Just like we built a wildfly swarm monolith, we're building the wildfly swarm microservice for the catalog service. So it looks like it's coming up now. So it's been deployed and it will start to boot up here. Again, I can watch the paint dry if I want. You can see the Java or the OpenJDK container images running my wildfly swarm microservice and it looks like it's coming up and it should be up momentarily. It looks like it's ready to go here hopefully. Yes, okay, so catalog service is up and running. So let's go ahead and test that real quick. So again, we'll curl that here. Okay, so my new catalog microservice returned a complete array of products. Each product has the same quantity of 337. Everything looks good. My developers went off on holiday and all of a sudden the inventory service has a problem. So I'm gonna go ahead and shut off the inventory service and let's see what happens if I try my product list again. So now you can see that it's sitting there waiting for a long time. And you can imagine what would happen if this was a real world product, a real world application like amazon.com and you went here to buy a birthday gift for your best friend and you get this annoying timeout and you're gonna head over to the competitor's website and purchase from there instead. So that's not good, that's unacceptable. I'm just actually gonna timeout after about 30 seconds. So what's happening here is obviously because I shut off the inventory service, the catalog service is unable to get the inventory and it then eventually timed out. So let's fix that. So what we're gonna do is we're gonna use Histrix. So Histrix is an open source project from Netflix. It does circuit breaking and bulk heading and essentially allows you to do defensive programming. Again, essentially adding an error check, right? If the service is down then do something else. So I've already got the code in here but before we can uncomment this code out, we need to add the fraction, the wildfire swarm fraction. So I head over to my palm.xml, I can, you can see I have a number of dependencies already declared here. So I wanna add a new dependency. Again, I'll just use the swarm forge tool plugin in my IDE here, hopefully. Yes, there it is, swarm add fraction. And now this one we're going to use Histrix. So I'll scroll down this giant list. Be nice to have auto complete, but we don't. So I'll just click Histrix finish and what it will do is add that again to my palm.xml right here. So very simple again, you probably don't need a tool to do that for you but it's fun and good eye candy for demos. Okay, so I've added that.  So I'm gonna uncomment my imports that I need just to speed things up. I've added some code for logging just to output some stuff to the log file so we can see what's happening.  So I'm gonna, and so this is going to essentially use a Histrix command, which essentially wraps that call to the inventory service with a circuit breaker. It protects it. So if things are not operating correctly, then what will happen is this inventory will kick in and Histrix will manage the checking of the inventory service so that when it comes back, it can start sending traffic to it. So it allows it to essentially recover. So the scenario here is you have a overloaded inventory service or a bug in the code and it causes it to fail and you need a backup solution here. Our backup solution is a very simple, hard-coded value. You would normally do something like check a cache or go to an alternate system or what you would have is multiple instances of the inventory system up and running so that if one fails, it doesn't bring the whole system down and the load balancer can rebalance and send traffic to the healthy versions of the inventory service. But for now we're just gonna use this simple work around here. Okay, so I've got my code. I'm gonna go ahead and deploy that out again. So I'm gonna undeply the old one and redeploy the new one. That shouldn't take too long and then we'll see what happens when the system is healthy and unhealthy. Okay, so undeploy the old one and I'm gonna go ahead and deploy the new one now. Let me clean it first to make sure it recompiles and does all the new stuff that I wanted to do. Okay, then I'll go ahead and deploy. If I'm in the right project here, yep, I am. Deploy and then while it's going, I'm gonna bring the inventory service back online just so we can demonstrate the failure scenario here. Okay, so it's coming back. The inventory service is coming back and the new catalog service is being deployed at the moment. Actually, I think it's building at the moment. So switch back and just have a look at that. Yep, looks like it's still building and now it's going to generate the necessary build config Kubernetes objects to invoke the build. And then it's going to deploy that out to the cluster. Okay, so what should happen is once this gets deployed, we'll test it again, obviously with the inventory service running, everything will look good. We'll shut off the inventory service and then get to see what happens with the, with HISTRICS and allowing HISTRICS to manage the fallback when things are not healthy and to manage the revival of the inventory service once it comes back online. And then the last thing we'll do is tie all of this into our existing monolith, which we already have running to kind of demonstrate the final strangulation process, which turns out to be extremely easy. Okay, so that looks like the new catalog services is deploying and it's coming up at the moment, which should be up momentarily. So once that is ready to go here, let's just take a look at the log file and make sure everything looks okay. Looks like it's up and running. Go back here. Yep, okay, so it looks like it's been deployed now. So I'll just collapse these two and let's go test our new circuit breaker. So let's hit it again. Okay, everything looks good. Let me pipe that to a pretty print thing. Looks like everything's good. Let me just hit this as many times as I want. And it looks good. Everything's good. So now let's shut off the inventory service and see what happens.  Okay, now let's hit it again. So remember the last time we did this, it timed out after 30 seconds. So this one took, there was a brief hiccup there where it's the call from the catalog to the inventory timed out or failed. And then Historic's decided that the circuit needed to be opened because the inventory system is unhealthy. So we get these negative ones here. And this is what we expect. If we were to tie this into the UI, which we'll do, you'll see the effect of this. So let's just bring the inventory service back online. And hopefully it should recover here. Right now it's probably still kind of debating whether the service is back up and running again. So we'll just hit it a couple more times and it should once it decides that the service is healthy again, we should start getting 337 again, which indeed we do here. Okay, so that is the circuit breaker in action. In fact, if you look at the log file for the catalog, which is where the circuit breaker is defined, you can see there the circuit breaker is here. There's fallback, success, short circuited. This was at the time when the inventory system was down, it was short circuiting. And then ultimately when it came back, it finally then returned success. Okay, so that's circuit breaker in action. All of the timeouts and thread pool sizes and all kinds of stuff that are tunable within history and through wildfire swarm and it's fraction configuration, you can tune all of that stuff. I'm just using the defaults here for demonstration purposes, but you would tune that based on the expected load and the size of your cluster and the number of instances of the services that you have up and running. So, okay, so the final step here is we're gonna tie this into the UI. And as I mentioned, it turns out to be extremely easy because we have these two services, catalog and inventory, but our monolith running over here has no idea that those exist and we're still getting values like 736, 512, 256, because the existing monolith has no clue that these services are out there. So in order to tie these in, we can actually use OpenShift's software-defined networking to do that. So this monolith, when I load this into my browser, it's making callbacks to itself to get the catalog and inventory information. I can intercept that and redirect it to my new microservices through software-defined networking. So let's go ahead and do that. So let's shift over to my new project here. What I wanna do is create what we call a new route. It's a path-based route, which allows you to intercept specific calls to a specific hostname and path and redirect those to different services running in my cluster. So I have two routes here for the catalog and inventory. I'm gonna create a third route called redirect, doesn't matter what you call it. The hostname is gonna be the hostname of the monolith. The path I'm going to override is the slash services slash products path, which is the path that the monolith makes a callback to itself using that path. And I wanna redirect that to my new catalog service, which in turn will call the new inventory service and then return those values back to the UI. So with this route in place, now any call from my monolith, I can switch back to the monolith and experience that. So when it calls back into itself, it's actually being redirected to my new microservices and getting the values from my new microservice and the corresponding back-end inventory system, which is controlled now by an independent team rather than the monolithic development team. And so I can now essentially continue this process. I can take the price service, I can take the shopping cart service and turn those into microservices and then similarly strangle it, strangle the monolith so that it uses these new services. And then ultimately I can turn off the monolith and I can fire all the developers that developed it and then move, maybe not fire, but find different jobs for them and continue on with my independently developed and autonomously deployed microservice teams. Okay, so that's it for the demo. So again, all of this code is on GitHub, if you wanna have a look. And there's actually a solution branch in there that gives the solution with the code that I added to this project so that you can get started quickly with the solution if you wanna see exactly what I did. Okay, so switching back to the final slide here. So that was the demo. So last summary slide, so WildFly is super awesome, built on the upstream WildFly Java EE community. Essentially it keeps Java EE developers in the game. So if you have experience with Java EE and you wanna continue using that in a microservice world in a new modular cloud native world, WildFly Swarm is a great option for you because it provides that path forward. It also implements the standards like micro profile and which has a huge community behind it and a lot of momentum. And we see great things coming forward with WildFly Swarm. Okay, so that's it. So I'll check out if we have any questions. Let's see, it looks like fonts keep getting smaller. Yeah, that was it. The disappearing fonts was the thing but I didn't wanna interrupt you. That's a good flow. You mentioned the GitHub repo. Can you pop over there in your browser and just show, so that shows up to where all the code is for this demo, that would be a good thing to have in here. The WildFly's been around for a while. So I suspect that a number of people on this call are already WildFly people. So... Good to remember if it was a WildFly Swarm example or a Roar example. So there's the URL. So I hit it on my browser here, you can see it. So actually I use this code for a couple of other things. We have a Vertex microservice and a Spring Boo microservice which we do a similar process for. So you can see the code in there as well. But here's the monolithic code which you can deploy to any OpenShift or Kubernetes using Fabric8. Here's the Node.js inventory and the WildFly Swarm catalog that we used in the demo. So that's all there. Well, I think you did a pretty awesome job with the demo even with the fonts shrinking but I think we'll always expand our screens and see that. Then there aren't any questions in the chat that I see. I'm giving people a couple of minutes to ask if you can also now pop back into your thank you. And slide. Then I think we're almost to the end of our hour and we will probably have more Roar talks coming up in the future. So stay tuned for that. And I'm gonna respect everybody's time and thank you very much James for another awesome presentation. Thanks for having me Diane, it was fun. Yeah, it's always, always is. You're always very entertaining and interesting content. So I'm very appreciative. It's like having a private tutorial every single time. So. Yeah, so that webpage there, developers. I've read hat.com slash Roar. You can get a lot more information about Swarm and Roar in general and details on what the components are and how they're supported from Red Hat. Cool. All right. Well, we look forward to more and hearing more from people are running WildFly Swarm or building applications with that and Roar and want to talk about their use cases. Please let me know and I'll give you the podium because we'd love to hear from you. All right. Thanks very much. Okay, bye-bye.


If you pluck the string of an electric guitar, it makes no sound, right? It's only when the body of the guitar records the shape of the string and plays it back through an amplifier that you hear sound. Similarly, when let's say two black holes orbit and collide, they ring the three-dimensional drama of space-time. It's like the whole space rings like a drum. I am so thrilled to introduce tonight's event with Jenna Levin discussing her new book, Black Hole Blues and Other Songs from Outer Space. Jenna Levin is a professor of physics and astronomy at Barnard College of Columbia University. She has been awarded a Guggenheim Fellowship and has contributed to an understanding of black holes, the cosmology of extra dimensions, and gravitational waves in the shape of space-time. So, I did want to talk about the discovery. How many people heard on February 11th the announcement of what people touted as the discovery of the century? How many people heard about the announcement? How many people sat wrapped while it was being explained? Okay, same number of people. How many people within about an hour were like, yeah, I don't get it? Okay, that's probably all of you. No, it's not an insult, it's just an incredibly subtle and difficult subject. When the Higgs particle was discovered, how many people heard about the Higgs discovery? You know, it's hard to understand the role the Higgs plays in physics, but it's not hard to understand that a particle was created by smashing two things together. Right, you smash two things together, you make debris, you made a particle. The gravitational wave discovery is so esoteric. Here's how esoteric it is. In 1915, Einstein writes down his general theory of relativity. It's his lifetime accomplishment. That year, Carl Schwarzschild, who's a German infantry soldier, writes him from the front. It's actually the Russian front. I was going to say the Prussian front, but it was a Russian front during World War I and says, I've been reading the Prussian Academy of Sciences between calculating ballistic trajectories, as you do. I've been thinking about solutions to your equations and he wrote down the solution for the existence of black holes. Now, nobody called them black holes at the time, but it initiated a correspondence between Einstein and Schwarzschild and Einstein said to him, the most important topic for me to turn to at this time, isn't this mathematical solution beautiful, but nothing will allow something like that to form. So the most important topic is the existence of gravitational waves and he says to Schwarzschild, I don't really think they exist. So let me tell you what they are. The idea that Einstein comes up with is that space time around a massive object is curved. Now how do I know that? If I were to take like this book and I was to throw it. Was that bad grammar? I speak pretty good English. I write pretty well. I was to throw it. If I threw that book, would it travel a straight line? It would travel a curved path. It's that simple for Einstein. The earth is not pulling on the object. The object is falling freely around the earth. It must be that the space around the earth is curved and it's really intuitive actually if you think about it. And if I threw the book harder, it would take a straighter path but still curved. And if I threw it hard enough, it would actually go into orbit around the earth and it would be a circle. It would be falling all the time but always just clearing the horizon. And so Einstein comes up with this intuition for a curved space time but it takes him a long time to mathematics it. By 1915 he does. Now here's where gravitational waves come in. If I'm to move the earth, those curves must follow the earth, right? The International Space Station is in a circular orbit around the earth. If the earth moves, surely the circle has to move with it. But nothing can travel faster than the speed of light. So the waves in the shape of space time must communicate to the rest of the universe that the earth has moved and relocated. And that the circular orbit of the International Space Station has relocated with the earth. Those very waves are the gravitational waves. Now Einstein told Schwarzschild in 1916 he didn't think that they were real. It's really interesting. And then in 1937 he writes a paper saying, again, he goes back and forth on this for a while. He writes a paper saying, gravitational waves do not exist between acceptance of the publication and press. He sneaks in a different version that says that they do. And it goes on like this for a while. He says, you know, Professor Einstein, you have to be very careful. Your name is going to be on these papers. And he thinks my name is on plenty of wrong papers, you know? He said about himself, when I was a student, I was no Einstein. So this is going on for decades. This is such a subtle esoteric problem. If you felt after 15 minutes of exposure to the announcement of the discovery of the century that you didn't understand it, you shouldn't feel bad, right? So it took Einstein decades to feel secure in the knowledge that gravitational waves were real. By the late 60s, Ray Weiss, who's a dear friend and a beautiful person and works down the street at MIT, was a young professor at MIT. He was just hired and started a gravity research program. And they asked him to teach a class in this complex subject of general relativity. And he tells me what I knew about general relativity, you could stick in this finger, you know? But he says, yes. Because, you know, he has this whole gravity program. He can't say I don't understand general relativity. And he describes that he was bumbling. He says, I was bumbling, but the students didn't walk out. Because the whole while he was trying to imagine, how would you measure space-time? How would I understand this in a visceral way, in a physical way? And he dreams of this experiment. Let's say the sun blew up. And waves in the shape of space-time traveled eight minutes to get to the Earth to tell us that the sun wasn't where it used to be and that our orbit needs to adjust on the curves in space-time. And he imagines, what if I hung mirrors that would bob on the wave as it passed? And I shine, you know, I put a laser between them. And the laser would keep track of the location of the mirrors. And it would tell me if the mirrors were bobbing on the wave. This is much like something bobbing on the ocean. And he called it a haiku. It turns out there aren't clocks precise enough to do that. So he went one step further. He said, imagine I made an L-shaped instrument so that mirrors at the ends of the L bobbed in the wave. And I put the laser shining between the mirrors. When the laser recombined back at the apex, if the mirrors didn't move, it would recombine perfectly. If the mirrors oscillated on the wave, like things floating on the ocean, it would recombine imperfectly and you could measure that. And he called it a haiku. He said you would think nothing would come of it. He started to build an instrument that was one and a half meters long in the plywood palace. Do you all know about the plywood palace? This is part of your local history. The plywood palace, otherwise known as Building 20, was a shoddy structure thrown up on the MIT campus during the war effort. It was meant to encourage research and radar and microwave engineering. And it was meant to be up for ten years at most and torn down. It was a crappy structure that inspired its inhabitants to violate it liberally. And they were so inspired by being able to punch holes through walls and tap things from the pipes and puncture holes through the ceiling that nine Nobel Prizes came out of the plywood palace. Possibly a tenth with this discovery. And Ray started to build his one and a half meter little machine in the plywood palace dreaming of the sun blowing up and oscillating the mirrors. And one of his colleagues said, literally said, I do better looking out the window. And it was true. He realized he couldn't detect anything from the sun blowing up. And that's because gravity is incredibly weak. You know, the whole earth is pulling on me and I have no problem like resisting the earth. That's crazy. Gravity is phenomenally weak. And at this time, early 70s, people didn't even know black holes were real, let alone that gravitational waves were real, right? So what could possibly cause space time to ring energetically enough that it would be detectable? And people weren't sure there was anything. So Ray tries to get some money for his little machine and it's turned down by the National Science Foundation. And he finds out that people in Germany have heard about his idea and are building a better version and it's bigger and it's technologically more sophisticated and they're great scientists and they're great engineers. And he's got nothing. He's got no money. He has no backing from MIT, no offense MIT. Now he is backing from MIT, trust me. And he thinks to himself, I'm going to miss out. Now I have to tell you there's something else about the machine and that is that it is not like a telescope. If you think about everything we know about astronomy, we really know about things that come to us from light. We take pictures of the sky, right? The Hubble pictures, pictures in all these different wave bands. We have this kind of silent movie of the universe. It traces back 14 billion years. It's 92 billion years across, light years, sorry, rather across. But it's a silent movie. Gravitational waves are not light. It's like a ringing drum of space time itself. I likened the instrument ray dreamt up to an electric guitar. How many people play electric guitar?  I know that you just don't want to admit it. If you pluck the string of an electric guitar, it makes no sound, right? It's only when the body of the guitar records the shape of the string and plays it back through an amplifier that you hear sound. Similarly, when let's say two black holes orbit and collide, they ring the three-dimensional drum of space time. It's like the whole space rings like a drum. And LIGO is like the body of the musical instrument. It records the ringing shape of the drum by these mirrors. And it plays it back through conventional amplifiers. The experimentalists literally listen to the detector in the control room. They listen to it. So this is not a telescope. It's different. It's like a recording. It's a recording of the sounds from space. So Ray's at this point where he says to me, you know, when I was a kid, I had one ambition in life and it was to make music easier to hear. It was to make a better circuit for FM systems so people could listen to the Philharmonic in my living room. And he had this dream of this crazy cosmic recording device to record the sounds of space. This was very integrated in who he was. And he said, I was about to lose out. I had no funding. I did not have the support of my colleagues. And he says to me, the next big event was I met Kip. So Kip Thorne is an iconic astrophysicist who at the age of 30 was already a professor at Caltech and super accomplished. And I feel like Kip dreamt of something bigger even than himself. And they began this campaign. Now we're going to fast forward 50 years. Everyone thinks that on February 11th when they heard the announcement, these people just turned on the machine and it succeeded. Ray is in his 80s. He is still walking the tubes, you know, looking for wasps. It turns out urine from the wasps corrodes the steel, stainless steel. Causes punctures and the vacuums. You know, he's there all the time. He's working on experiments. I cannot tell you how many times people have said to me, we better ask Ray, you know what's going on. So Ray says to me in August 2015, the advanced instrument has just been completely installed. Machines are locked. They know they've reached this experimentally remarkable achievement. The instrument is not one and a half meters. It's four kilometers long. Because as they said, with one and a half meters, you'd do better looking out the window. So they made the machine four kilometers long. There's two instruments, one on a remote site in Louisiana. It's not as remote as one would like because they're logging forests out there and that's not so good, but they've compensated for it and to their advantage actually. And there's another instrument in Hanford, Washington. Each one spans four kilometers. And it's a billion dollars later and now instead of just Ray and Kip and another person around Driever, who's a Scottish physicist who joined the team, there's a team of 1,000 people around the world who work on this committedly. And Ray says to me in August, if we don't discover black holes, this thing is a failure. Which was part of the inspiration for the title, Black Hole Blues. I was like, oh, there's my title. And people told me to be 2018 before there's a discovery. 2018, 2020. And instead in September, September 13th, 2015, they turned the instruments on, which just means that they're locked, which is no mean feat. It's not like flicking a switch. It's a big operation to get the laser locked so that it's really hitting the mirrors and everything's where it's supposed to be. But they decide that they're not ready yet. So they postpone the science runs. They're not ready yet. They're not in any big hurry. Before they make a discovery, after all. They're not in any big hurry. So they're interrupting the machine. Ray says, on Sunday night I was there looking for radio interference.  So he gets on a plane and he goes back to Maine. Graduate students and scientists are working hard on the instrument. They're interrupting it. They're banging on it. It's constantly falling out of lock and they're purposefully doing this. And by four in the morning, Louisiana time two in the morning, Washington State, everybody just decides they're exhausted. They put down their tools. They go home. Within the span of an hour, the gravitational wave from the collision of two black holes, 1.3 billion years ago, was emitted at the time that multi-celled organisms were fossilizing on the Earth. Came from the southern sky, hitting a nearby navial at the time Einstein was born and sort of reveling about the notions of space-time. Hitting the outer solar system in the hours that Ray was disturbing the machine looking offline, looking for radio interference. Eventually rings at about 4.50 a.m. the machine in Louisiana and is recorded. Seven milliseconds later, skimming across the continent, it rings the machine in hand for Washington and is recorded. By the time Ray wakes up, eight something a.m. east coast time, it's billions of kilometers away. But he looks at the logs and he thinks, what the hell is that? He sees in the logs a signal candidate event. And it was the first human-procured recording of any sound from space. I liken it to a sound, not just because this is a recording device, but because if you were floating nearby those two black holes, your ear could technically ring in response. You literally could hear it ring. I mean, I'm not swearing to this because it's not an experiment I'm willing to perform. But if you were nearby the two colliding black holes, it's conceivable that your eardrum would ring in response and you would literally hear it. So it's very close to a sound. So it's the first human-procured recording from the sounds of space. And it was the collision of two black holes 1.3 billion years ago. One of them was 29 times the mass of the sun. One of them was about 35 times the mass of the sun. When they collided, we only saw the final one-fifth of a second. I shouldn't say saw. Recorded the final one-fifth of a second. It was too quiet before that final moment. So it's like mallets on a drum banging on space-time and not until they're going near the speed of light, each one a couple hundred kilometers across, and they collide. Was it loud enough that even for these remarkably sensitive instruments to record, it settled down and went quiet as a black hole about 62 times the mass of the sun. It was the single most energetic event we've ever recorded since the Big Bang. The power that came out in complete darkness in the gravitational waves exceeds the power of all the stars shining in the observable universe combined. It was absolutely not only a remarkable technological achievement, but it's the first time we've ever been able to record something utterly dark. It's the first time we've ever recorded two black holes colliding. And if you heard the news a couple of weeks ago, they announced another event that they heard on Boxing Day on December 26th. So I would actually just like to like have a moment of respect for the experiment. I'll give them a little applause. Yes. So I should clarify that I'm not actually in the experiment. I'm a theoretical physicist. I did get my degree from MIT, but I was working on more particle physics sort of things. And I'm not in the experiment. I'm not an experimentalist. I've been known to ruin boiling water more than once. And I'm rarely allowed into a lab. I was very grateful they let me anywhere near the instrument at all. So what happened in my path to writing this book was very much kind of a moment of admiration for the physicality of the experiment. My work is very pen on paper and it's very mathematical. And I truly believe in what we're doing. But it seemed like something else entirely to build something, right? It's a whole other level of commitment and a whole other level of sort of intensity of belief in the idea. And I just became very enamored of the experimentalists and their accomplishment. And so the book really tracks, it's like a climbing Mount Everest story. When I wrote the book, we didn't know if they would succeed. And I do have an epilogue about the actual detection. But I love that the book was written without the knowledge of the success because I think it really conveys the sort of intensity and insanity that's involved with a scientific endeavor like this. And I think it really epitomizes Ray's statement, you know, if we don't detect black holes, this thing is a failure. That's quite a thing to say at 83 after you've been doing this for 50 years. But it's an honest thing to say. So thank you very much and I'm happy to take questions at this point. The universe is 14 billion years old but how do we know that it translates to 92 billion light years across? That's because the universe is expanding at a particular rate over the history of the universe that we can track. It's expanding at a certain rate in the early history and that the expansion of the universe has accelerated, has picked up pace over the past little while. Like right now, we know that the universe is actually getting faster and faster in its expansion and that's the confirmation of the existence of dark matter. So we have to calculate it. It's not a simple equation. It's not like it is in flat space, I simply say if it's been 10 billion years, light has traveled 10 billion light years. But in an expanding universe, the expansion of the universe makes that bigger. So even though the universe is only 14 billion years old, it's bigger than 14 billion light years in each direction, which would be 28. It's actually 92 if you do the formal calculation. I mean 92 might not be exactly right. I mean the numbers change as we understand dark energy better. Would it be more fair to say that the observable universe has a diameter of 92 billion years? Absolutely. It would be more accurate to say the observable universe has a diameter of 92 billion light years because if you read my first book, How the Universe Got Its Spots, it's on the question of whether or not the universe is infinite or finite. All we know is the light travel time and the light travel distance. We don't know if the universe extends beyond that infinitely and in fact even in the observable universe we're not 100% sure the light hasn't made more than one trip around. So if you imagine you're here in Cambridge and you were to walk in a straight line and just never turn left or right, never slow down, you would eventually come back exactly where you're standing. It's possible that the universe itself is finite and connected in a funny way so that the light has traveled more than once around. But it's very unlikely. If we look at the universe, we cannot see any evidence on the large scale when we look for it and we take it seriously. We can't see any evidence that the light has wrapped around more than once but we do take seriously the idea that there are extra dimensions beyond north, south, east, west, up and down and that those dimensions are curled up very small and so it might be that when the universe is born it's born democratically with like ten spatial dimensions all of which are wrapped up but for some peculiar reason only three become large and so this is one of the intriguing questions why would six stay tightly small and three become large? Although even as we speak there's no observational data that says there's more than three spatial dimensions. Well, I have a theory that dark energy could come from the extra spatial dimensions so maybe dark energy is an observation of extra spatial dimensions or maybe I'm wrong. Those are both very valid possibilities. But you know I'm not attached to these theories like if it's wrong it's wrong. We're just grasping at straws at this stage. Second part of the question was, analogies are great, vital to understand things but this is one scientific experiment if you will that did receive light publicity. We reported these on a cable news guy. Yeah, it was amazing. I did Al Jazeera. Yeah, so the thing is, is it fair to say and I just want to know if I'm right or wrong is that I think that right now in this country you have millions of, let's say, lame and catwalkers walking around thinking, oh, scientists actually recorded sound where in fact it's no more sound than if you plug in headphones into a radio telescope. Oh, it is more sound than that. Yes, and I'll tell you I understand what you're saying. So if I can translate. So the Cassini mission which went by Saturn's rings and things like this recorded electromagnetic radiation which is a form of light in the radio band and simply opted to translate it into sound which you can do all the time. It's just like a cool thing you can do with filters. This is technically different in the following sense. If you were floating near the black holes and they were colliding you have to put yourself at an optimal distance. They actually ring space-time in the human auditory range. Your eardrum as a mechanism, at least it's conceivable. I haven't studied the anatomy in detail but at least it's conceivable would ring in response. Even in the absence of air you would hear the black holes. You wouldn't see them. Your eye is not a detector of gravitational waves. You would technically hear them at least conceivably. It's hypothetically possible. And so in that sense it's much closer to sound. It's much more like the electric guitar. So if I unplug an electric guitar and I play it there's some sense in which you know what I mean when I say it's making a sound. Even though I have to plug it into the amplifier to finalize it. So I do think it's much deeper than a crude sonification of data. But I've read somewhere that Stephen Hawking said that the mathematics of the black hole looks like you get it by understanding that it's a two-dimensional thing that is then projected with three dimensions. And that sounds like the black hole that the universe is a whole of it. Yeah, this is really due to Lenny Susskin and Gerard Asift. Yeah. Are you asking if that's true? Yes. The universe really has the possibility of being a whole of it because the mathematics is the two dimensions. It's very, very important stuff is what I can say now and it's clearly the case. It's a really deep stuff. The idea is this, that the event horizon of the black hole which is the region beyond which light cannot escape which is the shadow of the black hole that that area measures the amount of information that can be stored in it. Not the volume, okay? The amount of information you can store and this is due to technical reasons goes like the area, not the volume. So the argument is if you can encode everything on the area that's a lot like what a hologram does. A hologram takes the information and puts it on a surface but it looks very three-dimensional. So in our reality we think there's more information in three dimensions that you just don't capture in the hologram. You know, I've got an inside, I've got a heart and guts and this kind of stuff. But in black hole theory you can prove you cannot have more information in the volume that you can encode in the area which makes it sound very much like a real hologram as though nature forbids more information than can be encoded in the hologram. And that's due to again Gerard Atouft who is a Nobel Prize winning physicist and Lenny Susskind. He's an absolutely incredibly fascinating visionary guy. As far as we can tell, that may well be true but this is really forefront stuff that's in hot debate and it's not resolved. There's a lot of other reasons to plead that the universe is a hologram that you know stated wrongly and publicly then. Well we'd like to be able to do the same thing in cosmology. We'd like to be able to say that if I look out at the universe and I see that it's expanding which is what was sort of brought up earlier that all of the information in the entire volume of space can be encoded on the surface of this observable. Similar kinds of arguments. It hasn't been effectively translated to cosmology yet. That is something that everyone would like to do but have not done yet successfully. How did they know it was 1.3 billion years ago and it was two black holes? Plus or minus a couple hundred million years and you know, give or take a look. If you imagine hearing your iPhone you know the ringtone so well that you can tell if it's far away, right? And similarly we know we can predict incredibly well and this took decades of hard work on the theorists' behalf. Decades of hard work to be able to model the ringtone which actually you can get on mygo.org for your phone. So that we, you know, when they first got the recording it looked a lot like black hole collision but it took them time to analyze and get the masses right and fit it. So basically what you're fitting is sort of the note that's being played depends on the masses. How loud it is depends on the masses and the distance and you can fit these things to tell if it's two black holes that are 10 solar masses each and closer or 30 solar masses and farther and you can fit it within a certain error and we don't know the distance to better than a few hundred million years. We don't but, you know, that's not bad. We don't care so much about the distance and we might later as we get further along because it'll mean we're hearing them further in the past if they're further away and that might be relevant for us understanding the systems but it's a pretty easy thing to lock in after several decades of hard work. Are the speeds of the collision always the same when black holes are moving in space? And if not, then how do you determine their mass if the rings of different masses shoot? Yeah, the speed. So the black hole mass determines the size. So these black holes were a couple of hundred kilometers across which is pretty small, right? And they're nearly, they're roughly 30 times the mass of the sun but they fit into a couple hundred kilometers, you know, seriously intense objects. And so that means that you can tell how fast they're going around each other because they're really close together. If you had much, much bigger black holes in some sense they'd be going slower and they'd be further apart. So you can tell both how fast they're going and how far, how many orbits they take. That also helps you determine their sizes, right? So if you think about it, sorry? Yeah, because basically it's like mallets on a drum. It sort of oscillates once every full, it oscillates actually twice every full circle. So it tells us how fast they're orbiting which tells us how close together they are which tells us how small they are, right? And that tells us their masses. So the question, more abstract question is can I reconstruct the motion size of the mallets from the sound I hear of the ringing drum? And the answer is yes. Now there are some things we can't tell very well but the masses in the distance we can tell pretty well. They're also spinning and that's harder to determine. What would be needed to visualize a very visual wave? So you would rather visualize it than hear it. What? If you, do you have a stereo system? Do you ever see the wave like if they play the bass? You know how they do? That's the same thing, okay? So if you look at the data in a picture it looks like what you would look at if you're looking at garage band and you're turning down the bass. It's exactly what it looks like. It's like a wave and if it's loud it's got high amplitude and if it's high frequency, high notes it's oscillating faster and if it's low notes it's oscillating slower and that's exactly what it looks like. When they first told me about the detection they showed me a picture. They didn't play me the sound, right? And they showed me a picture which is exactly what you would look at in garage band at the bass. And what was amazing was not only did you see the black holes collide which was meaning they got louder and higher frequency, higher notes. That's why it's a chirp. It goes whoop and it scoops up because they're getting faster and closer together. It increases the frequency just like two mallets on a drum. And then you see them ring down to one black hole which is stunning. You see them collide and it makes this blobby thing which then sheds away its imperfections and becomes a flawless black hole. Black holes are not like anything else in the universe.  And you can actually see all of this in the waveform. It's pretty crazy. What do you think of Tegmark's mathematical and universe hypothesis? Sorry, Tegmark's? Max Tegmark's? Is Max here? Max is a fan of mine. I think when Max says something like... So Max Tegmark is a professor from MIT and a colleague and a friend and he says things like objects are mathematical. What do I mean by the electron? I mean a list of its mathematical properties. That's what I mean by the electron. I would agree with that. Absolutely. I don't know what else I would mean. So the electron is also a fundamental particle. It has a specific mass, a specific spin, a specific charge. There are no two electrons that are even slightly different. They're absolutely identical. This is also true about black holes. You cannot say that about anything else in the universe. You can't say that about a star. You can't say that about a book. You can't say that about two copies of my book that they are identical. But two black holes with the same mass, charge and spin are absolutely indistinguishable. It doesn't matter if you made them out of copies of the encyclopedia Britannica, or if you made them out of rhinoceri. Is that the right plural? I don't know why that came out. Who knows how the mind works. You absolutely could not tell the difference. Or antimatter for that. So in that sense, they're closer to electrons on the artist stars. Speak a little bit to what is next. With LIGO? So amazingly, not only did LIGO detect a gravitational wave before 2018, it detected black holes, which everyone told me would be last. So what's next for LIGO is to do old fashioned astronomy like we do with any other telescope. So we're starting to understand the black holes were bigger than we expected. And we're going to try to figure out why that is. There are more of them than we expected. Of the three notable events in the first science run, they all appear as far as we can tell from the whole collisions. We've heard nothing else. So not only are they the first, they seem to be all that we're detecting. Now that might just be that LIGO is working better in low notes. And as the experiment improves in the higher notes, we'll start to hear neutron stars collide, which are dead stars that didn't quite become black holes. We might hear neutron stars with little mountains on them, making monotones as they sort of paddle spacetime. We might hear stars explode. We might hear something we've never imagined before, but I hope, I would hope that we're going to detect something that we have no idea what it is. And that's every scientist's real naughty little hope, right? Like when they discovered the Higgs, people were like, yay, we did it. And they were like, oh, is that it? So it's sort of the same thing with LIGO. We really want to, you know, when Galileo pointed a telescope at Saturn, he did not foresee quasars and galaxies colliding. And so that's what we hope. It'll open up the universe for us. Less than 5% of what we know about the universe is luminous. The rest of it's dark. So the aspiration is that maybe we're going to record this soundtrack to this silent movie that we've mapped.  That's a really good question. I started out writing a book about black holes, which is my bread and butter. I teach black holes all the time. I researched black holes. I've written many papers about them. I literally, I gave a TED talk in 2011 and when I came off the stage, somebody said to me, I heard you writing a book about black holes and I was like, it's my agent here. Sure enough, you know, he was already hawking the book and I thought, alright, I could do that in my sleep. Instead, I ended up doing something really different, a much more narrative book where these guys are like characters in a way to redirect. It's a lot like science. You set out with a certain hypothesis and then you have to realize that there's something more interesting in the other direction and it was really painful for me. It's why my book was two years late and it was also why it was perfectly timed with a discovery. So had I not been two years late, you all wouldn't be here. And it was hard because I have a long-term relationship with women and I didn't want to suddenly become the writer and not the scientist. And all I can say is that was difficult but the LIGO team has been very good to me and very generous and spent time taking me around the sites and you know, it's a long-term relationship to cultivate. I've cultivated that relationship for a very, very long time and I'm just relieved nobody stabbed me in the eye. I think that's a perfect note to end on. Thank you. GE being the green company it is, I think there's an opportunity for them to do something really creative and visionary here. Perhaps set an example for what the rest of the Boston Waterfront could be doing. Presumably their lawyers have checked the maps and know where they're going to locate.


Hey guys, welcome to SSU-Litex, so till this side and this is continuation of SSIS tutorial. So today we are going to see about the XML configuration. If you haven't watched previous video of this video series, so I strongly recommend to watch that video where we have seen what is the configuration and how we can implement the sequence over configurations. So in this video we are going to see about the XML configuration. So let's get started. So as per the requirement, we want to load the data from this table to this table. So this table is total having 26 record and the destination table which is having 105 record and one more thing that you need to take care if we can see in the source table the name column which is having nwarecat data type and the destination table that is having wirecat data type. So now we need to load the data from this nwarecat data type name column table to wirecat data type name column table. So go to on the ssdt and we will try to implement this package first and after that we will be going to implement the XML configuration. So go to on the ssdt and let me use Dataflow task. Double click on this and here we want to load the data from the sequence over table. So we can use the OLEDB as a source and in the destination we want to load the data into sequence over table again. So we have to use OLEDB destination as well. As we have already seen in the source we are having a column which is name column and that is having nwarecat data type. So we have to use the data conversion to load the data into wirecat data type destination table. So here we can see this data conversion. So we have to use this in between source and destination. Now let me try to configure the source. So double click on this here we can see OLEDB connection manager. So click on new. Here let me click on new. In the server name we can select this one and after that in the database so we want to make the connection with the SSIS test. Here is the connection.  So in the table as we have already seen so the table name which is EMP data underscore destination nwarecat. So we need to select that table. So here is the table in the columns we want all the column let me click on okay. Now we can select the source to the data conversion. So we can connect here. Now double click on this data conversion. Now we want to convert for this name and from this unicode string to non-unicode string. So we can select this and click on okay. So everything looks good. Now we can connect with the destination. Double click on this and here we are going to use the same connection manager because table is available in the same Cosovo and in the same database. Now we can select the table. So the table which is EMP data underscore destination nwarecat. So here go to the mapping. So all the mapping is succeed but instead of the name we want to use this copy of name column. So we can map this and click on okay. So now we can execute and we can check whether the package is executing successfully or not. So click on start. So here we can see 26 rows should be inserted in the destination. Stop this package. Go to on the ssms and execute it. So here we can see 131. So data is inserted from this source to destination. Now we need to configure XML configuration on this package. So how we can do that? Now here we can see inside the control flow right click anywhere. If we are not going to see the second option which is the package configuration then you have to go on the solution right click on this and after that you can see convert to project deployment model. So if you are not going to see that option then here you can see the option for convert to package deployment model. So you have to click on that. So this will be going to convert as package deployment model. After that you can click on this and you will see this option. So now go to on this package configuration and here we can enable this and click on add. So once we add then it will open this package configuration wizard. Let me click on next. Here it is going to ask the XML configuration file and the other options. So this time we are going to see about the XML configuration. So we have to select this option. So we want to keep our XML file in this location. So let me compare this and here we can specify this path and after that it will be going to ask the config file name. So the name you can specify anything like testing dot config. After that you can click on next. Now it will ask which property we want to keep. So here we want to have this connection manager. So we can select this connection manager and other options that you can also see the variable if you have any and other properties that you want to select can be selected by this checkbox. So I am going to select only the connection manager and click on next. Then we can click on finish. Then we can close this. Now let me try to execute this package. So this time it will be going to refer the same sequence over and as we can see previously it is 131 now it should be 157 that you could see. Now go to on the file. So this is the config file that we have. Now let me open this XML config file. So open in node path plus plus. So here we can see the option for the connection string. So you can scroll in the right side. So this is the property for the connection string and the value which is in the right side. So this is the data source and instead of loading in this sequence over we want to load this in this sequence over. Everything will remain same in this case. Let me save this and close this. Go to on the ssdt and let me try to click on start. So it is executed successfully. Let me stop this package go to on the ssms and here let me try to check it here. So now data is loaded in this sequence over instead of the second one. So this is the XML configuration. So thank you so much for watching this video. If you have still any doubt then you can comment in the comment box. I will try to response on your comment and if you are having any scenario or any question then you can also comment. I will try to record a new video on the same. Thank you so much. Have a great day. See you in the next video.


Welcome to Kids Fun Science. My name is Kevin. My channel does fun and easy science experiments. Please remember to click that subscribe and the bell to be reminded when I post my next experiment. It really does help my channel. A little bit about myself. I've been running Science Nights and Live Science shows since 2004. Parents and teachers would ask me at Science Night, how do you do these experiments? So I started this channel so I could show them how to do the experiment, what they need for it and most important the science behind it. I have over 400 experiments on this channel and so if you can't find what you're looking for just drop me a note and I'll show you where it is. All these experiments you see in this video are the top ones I've been doing and the links are in the description below if you want to do that experiment. Thanks for watching and please enjoy!


It wasn't different in Oendo State where the chief Imam of Akhure, Abdul Akim, Akhure Day, advised Muslims to uphold their obedience to God in the spirit of forgiveness. During Eid prayers, he also challenged the Faithful to be promoters of peace, coexistence with people of other Faithful. I just want to do it as a test for Ibrahim Ali and after that Allah replaced him with a very big ram so that to kill him instead of killing his son, it basically means a total submission to the will of Almighty Allah. The Lea Festival is one of the recognized festivals in the whole world. We all celebrate God, we thank God for what God has been doing for us and God has been so kind to our Akhure people because of the Muslim prayer, because of the Christian prayer, so we continue to appreciate God and continue to be thankful. Hello, hope you enjoyed the news. Please do subscribe to our YouTube channel and don't forget to hit the notification button so you get notified about fresh news updates.


I guess I've been in four models. I've been in the parachute in and out, which I've attacked while I was there, and said, I don't work this way. Now what I've learned from that is that most of the teachers don't follow up because they're constructed, you know, they're, the model says, I'm gonna take notes, forget it, we don't have a relationship. The other model is just, you know, you come in for maybe two days of work, but I always wanna come in for two nights or three nights, depending upon the flight schedule, because that way you have time to have meals with the teachers, and I think that's really important. And so I think that if you're there for model two, which could be a two-day presentation, that you should build into your budget a minimum of two nights, so that you can meet the teachers outside. That way they feel more comfortable, and you can begin to develop relationships. The third model, which I think is, builds on that, which is really effective, is if you do the two-day, but you commit maybe to a week that will be spread out over the year, so that you could do, let's say, a weekend, or maybe three days in the summer, but you go into their classroom for a day, and then you do a two-day institute with them in the weekend during the school year, so that you can see how the work progresses. I think that's a great model. Then the fourth model is where you're there for a week, and you spread your material out, and you work with master teachers, you work with curriculum folks, and you really get to know the teachers. And the last day is spent really working at the tables with the teachers, helping them personalize their own lesson plans, and help them incorporate the material, or find out what material you should have brought that you didn't bring to help them. And that's what I think is the most effective.


judge of Karnataka High Court came that day it was also first and today also it's first and as they say that if you have something common and his the way sessions are doing well on the previous one we expect that it will continue to remain one of the fastest moving sessions because the way he takes insights of a particular topic is always party and it gives the insights which anybody can understand in fact it is one of the rare webinars where normally I got messages to the effect that they had heard this miss webinars time and again with the ease with the cheesebook now the third seizure and arrest are important aspects under the NDPS Act though in other criminal jurisprudence also it plays its important aspects and section 41 42 43 and 50 also are the important aspects as such which one would like to understand and coming from a speaker who is not only known through his judgments but is erudite speaking of things and hammering the point at the say hitting the nail at the top of the head it's one of his art which is Michael Kunahan he was quite busy taking sessions with the Karnataka judicial academy we continue to persuade because we kept on receiving the messages that we should call this is going on and as they say before the Gandhi said the most peaceful way is the best way to persuade somebody and eventually he just is going to accept it and it's that is all in the lighter way and he has always that important flip to give the knowledge and today we are partners with Rukram and associates in this webinar I will ask Mr. Rukram give just a brief point and in the end we will have his conclusions from him over to you Rukram evening everybody because I think you have not left any single point for me to mention here and I wouldn't take much time because I don't want to come midway and people are said to listen to his lordship so once again on behalf of Beyond Law CLC and my personal behalf I extend a very warm welcome to his lordship over to your lordships yes so thank you Mr. Vikas and Mr. Thiru Vikram I think straight away getting to the subject we are going to discuss I think only four sections out of the total 83 sections contained in the NDPS Act and all these provisions are procedural in nature I think the general understanding within the advocates or with the judges I think that procedure is only a handmade of justice so even if there is any violation in the in complying with the requirements of the procedures I think that may not affect the substantial substantive rights of the parties unless of course the accused is prejudiced thereby or any miscarriage of justice is caused I think that is the general impression but when it comes to the NDPS Act I would say that better not we carry this impression I think as all of you may be knowing the scheme of the act see the unlike the traditional crimes say like murder theft assault etc NDPS Act deals with a special species of the offenses and that too of recent origin what we call it white collar crimes or the socio-economic crimes affecting the public at large and moreover these crimes are committed by organized gangs well equipped with all modern gadgets or modern technology I think the ingenious way they operate or the committees offenses it far surpasses the expertise or the acumen of our law enforcing agencies I think of late I think on the 29th itself you might have read in the newspaper that four foreign nationals were apprehended where they were involved in growing hydroganja in the villa where they were staying and that too for the new states using LED lights heaters and temperature regulators you can imagine how far and why in what sophisticated manner these offenses are committed and added to that if you see that even the law commission in its 155th report has observed that there is generally nexus between the politicians law enforcing agencies and the offenders indulging directly in such crimes I think it is all because of this the stringent provisions are devised under the act to contain this menace of drug trafficking and drug addicts I think the presumptions are cowed or enacted in the act special courts or the special machinery is constituted both for the purpose of investigation and for conducting the prosecution the special procedures are laid down and more than that wide powers are conferred on the investigating agencies even and the investigating agency can arrest on the spot without even complying with other ordinary procedures what we find in CRPC or any other criminal jurisprudence or the criminal procedure so that being the case that is certainly there is a likelihood of the powers being misused to the disadvantage of the accused and therefore the provisions what we are going to discuss now if you really see that these measures are prescribed under the act only to safeguard the interest of the accused it is to provide or provide a measure for the fair investigation and for fair trial which is a constitutionally recognized guaranteed right of an accused therefore when we discuss these four sections we should not we should approach this with the this perspective we should not go under the impression that these are the procedural matters we have got nothing to do with the trial of the accused if you understand the significance and the implications of these what you call these four provisions I would say their importance cannot be undermined at all now in order to understand what is the effect or the implication of these provisions I would just request all the viewers just to take note of the fact that the provisions relating to search seizure arrest are found in the criminal procedure code I think there are all of you may be aware section 41 deals with the powers of the police officer to arrest section I think I need not to dilate on that provision section 46 prescribes how the arrest has to be made section 51 says search of the arrested persons in chapter 7 we come across section 93 search warrant by the courts section 100 which is very relevant and which has got a bearing on the subject what we are going to discuss deals with how to conduct search of a closed places what all requirements or preconditions to be followed by the police officers how he has to warm how what is the document he has to prepare to to instill the regularity or instill confidence in the procedure or in the arrest or this seizure that he has affected section 165 deals with the search by the police officers without warrant so therefore what we must understand is that there are enough provisions in the CRPC for affecting the search arrest or seizure and even if you see section 51 of the NDPS Act section 51 provisions of the code of criminal procedure 1973 to apply to warrant arrest searches and seizures so even the special procedures what we are going to study the act itself says the provisions of the code of criminal procedure shall apply in so far as they are not inconsistent with the provisions of this act to all warrants issued and arrest searches and seizures made under this act so the provisions of CRPC are made applicable even by the specific or express provision of the act itself and in this context if you see section 4 of CRPC even section 4 what it says all offenses under the IPC shall be investigated inquired tried or otherwise dealt with according to the provisions here in after content so for IPC offense the procedure prescribed is as per the CRPC then all offense under any other law shall be investigated inquired into tried and otherwise dealt with according to the same provisions so CRPC basically is applicable not only to the IPC but also to the other laws but subject to any enactment for the time being in force regulating the manner or place of investigating inquiring into trying or otherwise dealing with such offense so except to the extent that is provided in this special acts I think the provisions of CRPC are made applicable to all the offenses the investigation trial or the entire all the incidental matters connected there to so this matter we should remember because it has got a bearing on the discussions that we are going to have in other words the point that I want to tell you is that provisions of CRPs are applicable even to the searches seizure or an estimate under the provisions of the well in respect of the offenses under the provisions of NDPS Act except to the extent provided therein and what is that except to the extent provided in the special act and that exactly is what we are going to deal today and that is the provisions or a special procedure which is contemplated in section 41 42 43 and section 50 so we can locate the very provisions of the act so it is this the special procedure how it differs or differs from the general provisions and only to that extent we have to apply the these provisions to any investigation or to any search or arrest that is made by the investigating agencies I think if we go into this act of course these four provisions they on the appearance I can say they look very lengthy and what you call repetitive but I think we can explain you can understand these provisions or the gist of it itself we can immediately we can gather see section 41 deals with the power to issue warrant to deals with the issuance of warrant that is subsection 1 of section 41 deals with the issuance of warrant of course for the purpose of effecting the arrest search or seizure it only subsection 1 deals with the issuance of the warrant who can issue the warrant under this provision a special procedure has been contemplated is because of the nature of the offense it says a metropolitan magistrate or a magistrate of the first class or any magistrate of the second class specially empowered by the state government in this behalf may issue a warrant for the arrest so this subsection 1 of section 42 states that a warrant for the arrest or search of seizure could be issued only by the magistrate specially empowered not by any other ordinary magistrate specially empowered and second condition what he has to do to issue the warrant to in this he may issue the warrant so specially empowered magistrate to for arrest of any person he has reason to believe to have committed the offense so one precondition I said these provisions are engrafted as a safeguard to the accused to protect from the arbitrary use of powers by the investigating agents to say that he is been accorded with a fair investigation a fair trial and therefore one of the safeguard is that if a search or an arrest has to be made the warrant must be issued by the magistrate empowered and that magistrate should have reason to believe that an offense under the provisions of this act has been committed or any of the or any evidence is of relating to that offense has been concealed so that is the subsection 1 deals only with the issuance of the warrant by the magistrate subsection 2 deals with the authorization by the gazetted officers of the department see that because having regard to the I said the way in which the offenses are being committed a special procedure has to be made for to expedite the investigation without waiting for all these procedural asses so therefore subsection 2 says see a subsection 1 says the warrant can be issued by the special by the empowered magistrate subsection 2 and authorization can be issued by the gazetted officers of the department of the central government which are those departments central exercise narcotics customs revenue intelligence or any other department of the central government sir it should be gazetted officer officer including the paramilitary force or the armed forces is empowered in this behalf by general or special order so that gazetted officer also must be empowered by a special order or a general order or any such officer of the revenue drugs drugs control exercise police or any other department of the state government is empowered so and the gazetted officers of the central government of the following departments or the gazetted officers of the state department who are duly empowered by a special order so that is essential otherwise if that condition is not fulfilled the whole exercise will go far so that is the idea so then so he can authorize but on what condition what are they on what basis is important is by general or special order if he has reason to believe from personal knowledge or information given by any person taken down taken in