I'm Charles Vaught. Roof foals are the number one immediate killer of miners today. Sometimes however, a roof foal doesn't kill, it simply maims. I have Larry Strayer with me today, and Larry will tell the story of the accident that occurred at his mine. He'll begin at the beginning, take us minute by minute through what happened to him, and then tell us a little bit about what his life's been like after. Larry? Well, I'll try to tell the story the best that I can remember. It was just another June day, June the 5th of, my brother worked on our crew. I went down, I always picked him up on the way to work, and while I picked him up when we went out to work, and went in and got dressed and got on a man trip and started in the mine, and we got in there and we was pulling stumps, and we just finished up on the right side pulling the last stump, and we started moving on machinery and that over. I was a border operator, and my cousin Ernie was the other border operator on that crew, and we was moving the border over to the left side to start pulling across again, and we was hanging cables up in that, and I don't know where Ernie got to, but we was going to belt off that night, we was working second shift, we was going to belt off that night, so we finished hanging cables up and I started down towards the feeder to help them guys start belting off, and as I was going down there, they took a, they started splitting the stump, they took one cut out of the stump there, and I noticed that Barry was, the miner operator was up looking at the roof, he just pulled the miner back, and so I figured I'd get him a hand, it looked like he was getting ready to pull down some loose rock, so I went up and talked to Barry, and he told me that there's a loose piece of rock hanging in there, and he tried to cut it down with the miner, but he was turning the cross-cutting, he couldn't get the bullwills on the roof the whole way to cut it down, so we caught the rock bar, and we tried to pry it down, and it was sort of feathered edged out, maybe two foot from the last row of bolts there, so Barry was on the other side of the miner, and we was trying to pry it down there for a few minutes, and we decided that we'd just leave it up and bolt it up, so I, I just turned to start walking back towards the back end of the miner, and I just got a glimpse of something out of my right side there, and it was like, like the whole, the whole cut came down, and I sort of seen it got a little glimpse of it coming down, and I tried to jump at the same time, I tried to yell over to Barry for him to get out of the road, and but before we had, you know, time to do anything, it was like down, come down really fast, and it caught me right on my left leg, right about from the knee down, and I was laying on the ground there for a couple seconds, I could hear Barry over there trying to yell, I guess, I talked to him after that, and he said that there was like a lot of rock on him, and he couldn't, couldn't breathe too good, I guess, you know, a lot of rock was pressing on him. Well, I was laying there for a couple seconds, and the boss came running up around the corner, and he stopped at me, and I told him that I was all right, that Barry was on the other side of the miner, and he, I figured he was in pretty bad shape, so I told him to go over and help Barry, and a few seconds after that, Ernie came up, and he came to me first, and I told him to go over and help the boss get to rock off of Barry over there, so I was laying there for a few seconds, and there was a few other guys came up from the crew, and he was all over trying to get Barry off from underneath the rock, and while I was laying there, I wasn't too worried about my leg, I was just wondering if Barry was going to be all right, because I knew he got covered up pretty good, and I didn't know if he was going to make it or what. Well, they finally got Barry out and got him on a stretcher, and Ernie came over, and there's a pile of posts laying there behind me, he grabbed two, two props, and put a prop underneath the rock, and put another prop underneath the post to try to wedge the rock up so I could pull my leg out. We got his back against the roof and put his feet on the props, and he got her up so far, but I still couldn't pull my leg out. Then my younger brother, Brian, came up, he was a buggy runner on the crew, and Ernie tried to pry him down again, and then Brian pulled me out from underneath the rock. Well, luckily Ernie was an EMT. He cut my pant leg up and cut my boot off, and he was pretty messed up, and there was a lot of blood in that, and he put one of them air splints, so you blow up on it, and then they put you on a man-tripping. We was on our way out, and I remember there were a couple of times, and there were a couple of low spots there, the roof was only a couple inches from my face, I just wonder if he was going to clear or not. But we finally got outside then, and that was towards the end of the shift then, and a lot of the guys from the shift starting were standing around a man-trip there. Everybody was standing around, nobody was, it just seemed like nobody knew what to say, everybody, everything was quiet, and there was a guy there that I ran track with in high school, I just more or less stucked up and said, I guess we won't be running no races within an near future here, and just something to break the ice to let everybody know that I was all right, and he was getting buried in the ambulance then, and then another ambulance came and they put me on the ambulance, and I remember it seemed like a long, long time to get to the hospital. Whenever we got there, one of the owners of the mine was there, whenever he opened the ambulance, he asked me how I was in that, and it was pretty late at night then, and then my wife came running over, and she was all shook up in that, and I sort of wanted to say something though, it was, it was her birthday then, so I just told her happy birthday and see, to settle her down a little bit, and then, well they took me in the operating room then, and then they just, while they put me out, I guess I woke up the next morning, and they had my leg strapped up in the air with all kind of pins and stuff going through it, and they, the next couple days, they took me down to the operating room and operated on about once a day, and to try to fix it up, but after a couple days, a doctor came in and said that there was nothing they could do to save it, they'd have to take it off, so at the time it really didn't bother me too much, because it was just like, I don't like a bad toothache or something, it really hurt a lot, and I just wanted to, you know, quit hurting, so I just wanted the pain to go away, I guess, so then they came up one day, and they took me down, and they took my leg off, and then I woke up back up in the hospital room, I just remember, I kept looking down on my leg, and it seemed like it was, you know, supposed to be there, for about a day or two there, I just was sort of, in the days, I guess, you know, sort of, but after a while, after a while, I got over it a couple weeks later, I went home, I was happy to be home with my kids and my wife, and then I got an artificial leg, and then the company, I was lucky the company left me go back to work, they have a pretty big shop outside the mine that they rebuild my equipment and work on man trips and that, so they gave me a job out there, that's what I'm doing now, and Barry, he, the other guy that was in the accident, he had pins put in his legs there, I guess he had them in for almost a year, and then he finally did get them taken out then, and he's doing all right, he's probably loading coal right now somewhere, he's one of the hardest workers I ever worked with, and I can't say enough about him, he's a really nice fellow, and anything I have to say is, I know there's a lot of you guys out there who likes to fish and hunt and stuff, I like to fish and hunt a lot, and I miss going jumping on the brush pile and waiting for a rabbit to come out the other end, or dragging a buck out at the end of a hunting day, or putting a pair of sneakers on and go wading in a river fishing for bass or whatever, and I have four kids at home, my little boy is five years old now, and he's just learned to ride a bike this year, and it just seems like it's really hurt you whenever you can't run alongside them to try to help them ride a bike for the first time, there's like a lot of things that you want to do that you can't do anymore, and then I know a lot of you guys who've probably gone into mind after watching this film, or tomorrow, or whatever, all I can say is, when you go in there, you know, if you're going to do something stupid or whatever, you ought to just start thinking about it for a couple seconds, because it may, you know, mess your life up forever, which really isn't worth that one mistake, you know, I mean, worth to your family, or to the guys that you work with. They say hindsight is 20-20. What could you have done differently looking back that would have kept this from happening? Well, like, well, I guess whenever me and Barry was pulling out roof down, we got pretty involved in what we was doing there. We would just, like, we was in by the bolts there a few feet, if we would have, you know, just stopped and thought about what we was doing there before, you know, we went ahead and did it, you know, we'd probably be all right today. Were you still in by the bolts when it fell on you? Yeah, we was, we wasn't in rough while, we just like maybe two or three feet, like I said, I really didn't even get time, I just turned around and come down, I can remember laying there and looking up at the bolts, hoping that the bolts above my head was going to hold the rest of the roof up there. So you almost got back under the bolts before it fell? Yeah. Like I said, you know, a lot of guys, things, they're fast in the mining, they can get out of the road in time, but for as fast as that roof come down, like I said, I just turned around and I didn't even get a chance to jump or nothing, the whole place was down.


Hi everyone, Joe for Jasby's casebreaks.com coming at you in 2016 at Donnery's Optic Football Mega Box Edition. Random team break number 14. At the end of the break, with a new dice roll, we'll re-randomize everybody's names. In the top eight, we'll get a spot in that football mixer, the 7 Box Quick Hit Football Mixer. It's a pretty nice break too. Big thanks to these wonderful people here for giving this a shot, trying to win a mixer spot for a fraction of the price. There's all the teams right here. Good luck. Let's roll it. Eight times. Also in the background, San Diego Padres in Texas, Joe Musgrove for the Padres working on a no-hitter. He's got two outs away from a no-hitter and 107 pitches. Three and a five. Eight times. One. Two. And eighth and final time. After eight, Matthew down to Robert. Three and a five. Eight times for the teams. One. Two. Five. Six. Seven. Seven. And eighth and final time. Dolphins down to Bills in this 2016 set. All right, here's the first half of the list right here. Oh, Grounder to the pitcher. Is he going to tag him out? There's that right there. It's a road game, Teddy. It's a road game. That's why no one's... Those Rangers... Those Rangers fans are probably just like, I don't want to get a no-hit. Oh, then the stadium will explode. Look at this goofy dude. All right, two outs now for Joe Musgrove. No trade windows in these little things. Sorry, I'm being distracted by this no-hitter here. Potential no-hitter. Just lay down the bunt. People would be so pissed and lay down a bunt. This should be it. There it is. First no-hitter of the season, Joe Musgrove. Joe Musgrove. Would you believe it if I told you that Joe Musgrove would throw the first no-hitter of the 2021 season? Wow, that's first no-hitter in Padres' team history according to MLB Network. Wow. Padres have never had a... I feel like they've had some decent pitching over the decades. You would think. Good job, Joe Musgrove. Nice. Kyle with Last Spot Mojo in the mixer. Excellent. We just have to do one more of these and then we're in Brakesville. Homegrown. What do you mean? Is he from San Diego? Wow, yeah. I didn't realize that. He was born in El Cajon, California. Went to Grossmont High School. When I was back home to the Padres, he probably grew up in a Padres fan. Wow. There's Jared Goff, a piece of his jersey going to Will and the Rams. Bulldog fan. That's actually nice. All right. Let's flip back to this list right here. What a no-hitter for Joe Musgrove. Robert down to Matthew. New list right here. New dice. Let's roll it. Let's randomize it. Six times. One out of five. Top eight after six in the mixer. Good luck. One, two, three, four, five, and sixth and final time. After six, there's six right there. Top eight. So from nine down to 32 sad times. Robert, sorry. Very close. No cigar. But thank you for giving this a shot. I appreciate it. Top eight. Thank you. You're in the mixer. Karen, Brian, Matthew, Jaden, Kenneth, Robert, John, and Gabriel. I guess I don't feel so bad for Robert anymore. He's in. There you go. Top eight. Congrats to you. Thanks for getting in. I'm Joe. I'll see you next time for the next break. Bye-bye.


Okay, it's time for the next presentation. Okay. Stefan Karek. Yep. We'll present us some data-related work that is in a slightly different area, web services. So we're pleased to hear that data is not only for real-time systems and for embedded systems and for safety, clinical and whatever, but also for other important applications. So just a bit of history for me. I'm doing some open-source development during the last 20 years. I've done a lot of work on GCC a long time ago. And during the last seven years, I'm doing a lot of work on ADA, mostly interested in web application. So today I will present REST API and OpenAPI standard. And I will show you how OpenAPI and Swagger can help in creating a web application, REST application. I will briefly introduce OpenAPI and Swagger. Then I will describe how to create REST client ADA client. Then how we can write a REST ADA server. And how we can handle security with OAuth. And hopefully I will try to make a demo if it works. A little bit of background about RPC, 40 years of RPC. It's not new. I put a number of some interesting RPC mechanisms that have been used. Some RPC is an old RPC mechanism which was introduced for NFS. It used a description file which was close to the C language. And from this description language we described how the client and the server interact. You describe the protocol and operations. And from that you generate some client and server stuff. In 1991 there was a standard with the corba and the IDL with the interface definition language. And again in IDL you describe the interaction between the client and the server. And from this high level description you generate client and server code. ADA 95 has a distributed annex. So it was standardized a long time ago. And you had nothing to do except declare some pragma to make your operation removable. But it was ADA centric. Java on its side with RMI did the same in 2000. But again it's Java centric. Around the 2000 we saw the emergence of Wistel with the SOAP protocol. All of the above Sun, Corba, ADA and Java RMI use more or less binary protocols which is difficult to debug. When you have to understand the interaction on the wire it's difficult. So people tend to say it's easier with XML. And they created SOAP and XML for that. And so the Wistel describes the interaction between the client and server. And from this Wistel you generate some code. Also recently you have Google which has with the GRPC mechanism and protocol buffers. They are pushing their RPC mechanism and they have their own language. So what we see is during these 30 years we have the same goal. Which is we want to simplify the developer job first things. We want to describe the protocol between the client and the server. And we want to have the code between the client and server which is generated. We want to also hide the communication details so that the programmer just have to call a function. And that's it. Last is documentation. Documenting the interaction, documenting how you can call your server with your API is also important. So why Wistel and OpenAPI? Wist came also since 2000. It was first mentioned in the thesis of Thomas Fielding. It was a simplification. It was easier to use. It was an organization of URE to be able to make requests more easily than SOAP. Which came at the same time. The good thing with REST is that you can use it from your browser natively because it uses standard HTTP GET POST PUT operations. And what we see is also an increased usage of REST API with all the mobile applications. Google, Facebook, they all provide REST API because they would like to have more mobile applications developed with their own API. With all of this we need to have documentation. We need to document our API. And you need also a language binding. So each time you create on your own API you will have to write a Java binding, a C binding, a JavaScript binding and so on. It's complex. And here OpenAPI and Swagger is a solution. So this came as an emergence of a company which created Swagger and which then created the OpenAPI specification in 2010. And they made a consortium with Google, Microsoft and a few others to standardize the way we are going to describe REST API. They published their first, in fact the third version of OpenAPI recently last year. And the specification is available on GitHub. So here I'm focusing on version two of the OpenAPI because most of the tools that I will use use this version. The version three is not yet ready. So what is an OpenAPI document? This is just YAML or JSON file which contains well-defined tags. So here I have defined the well-defined tags. Info is a tag which you describe generally what your API is doing. You have a description of the security with security and security definition elements. You define host, base, base and scheme which tells you what is the entry point of your server, what is the host name, whether you can reach it with HTTP or HTTPS. You describe what your server produces, what it consumes, whether it generates JSON, whether it generates XML, whether it generates binary, whether it consumes JSON, XML or forms. And then one important part is the pass. In the pass part you will describe each operation in terms of URL pass and in terms of operation, put, post, delete. So this is really HTTP centric, REST centric. Then you have tags and external docs which is some additional documentation which brings some semantics to your API. You also have a description of data types, parameters and response. All of them are used in the pass. I will show you a little bit. So from this description what you can do, first is that you generate... Could we have... If you have... Just the pointer. Okay, thank you. First you can generate static documentation from the Swagger file. You can also have online documentation. The online documentation is interesting because within the online you can also make some queries and use your API. So it's an interactive documentation which allows you to play with the API. You can also generate the client binding so that you can immediately use the API. And you also generate the server part so that on the server side you have less code to implement. Swagger also allows you to generate Apache configuration and also provide support to generate automatically some validation... Sorry, validate automatically your API. So Swagger, we have a collection of tools in fact. An editor which allows you to edit, yes? You're saying validate the API to validate the server implementation or validate the API specification? Validate the server by injecting patterns and doing validation of your server. Okay. So the editor allows you to edit your open API specification and the editor will tell you a lot of things about mistakes that you could do. You have the generator which takes the open API file and generates the code for you. The Swagger UI which is a dynamic UI that you can include in your web server so that you publish your API online and everything is documented... Everything is published on GitHub. So this is a Swagger IO editor. So here on this part you edit your text. On this part it shows you the documentation and including the errors. So the generator, what it does is it takes your document and it is able to produce around 25 different languages including static documentation, REST, Ada client, the Java client, Python and so on. On the server side it is also able to generate Ada, Java with several frameworks with Spring and others, and Python and others. So I will briefly describe what is the process now to write a client with this model. The first thing that you will do to write a client is you will get an open API specification. Either by going to Swagger Hub they publish a lot of open API that you can pick and use, or you can look at API GURUS which is a repository which also publishes... Today there are more than 500 API from Google, Facebook, Twitter and others. These documents are available. You can pick them. You can generate the Ada client code with that, and then what you just have to do is use the generated code. So I will describe here briefly the open API file. So as I said, this is YAML or JSON file. In this example this is YAML. So you have specific tags. This is the tag that I spoke about, info, host. This is the primary tag. And here you will describe your API in terms of some general information. Here you have what is the server that will respond to this API, what is the base pass, a number of tags. Here you can access it with HTTPS and HTTP and so on. So this is general purpose description. Here we have really the interesting part. So here you really describe within this one operation. In this operation what it tells is that my API is accessed by going to slash to those. There is also the base part. And the operation is HTTP get. Here I have a description of my API. This is documentation. Here this API produces a JSON and it accepts as parameter, an optional parameter. The requirement is not true. The parameter is, as a name, it's a status. This parameter is passed in the query. You can specify query or form or others. You specify the type of this parameter. And here you also describe the fact that this string is in fact an enum which can have only one of these four values. Then you describe the response. And in the response you describe the schema, what is really returned by your API. And here this is in a definition that I will present a little bit later. Here you have the status of the possible response code that the API can return. So you do this for each API, each operation that you have. Here I have the description that is returned by my get operation. So you have some kind of syntax where you describe a record. So this is a record composed of ID, title, credit, donate, status, and so on. Each of them has a type, a description. So there are a number of predefined types in Swagger which has standard types. You cannot introduce new types. So there are some limitations. And you describe whether a parameter type is optional or not. I will describe it later.  You just use the Swagger code gen to generate the client part. And what you get is this set of files. So your input is this file, todo.yaml, and it generates all of this. Separated in client and model, you have on the model part, you have the data types which describe the response or input of your data model. And on this part, on the client part, you have all the operations that allows you to invoke, to call your operation. In these four files, you don't modify them. They are generated automatically. Your code is then in this part which you can change. And this is just a sample program which shows you how to start and call the API. So in terms of when your client is running, what component it is using, your application is at this level. You have generated this part which takes care of the interaction with the server, which takes care of the data which is passed between the client and the server. We have a small runtime which is using a number of libraries. So Ada Security is a library that I've created to bring the support with OAuth. Ada Utility Library is a set of, a collection of support that I've written to do a JSON and XML serialization. It is also doing some HTTP abstraction on top of CURL and AWS. So you can choose either you use CURL or either you use AWS. But this is transparent at this level. So the models package contains the type that I've described in the definition. In the YAML file, you have a description of what is returned in the response. And from this description, we generate Ada record. So the name of the type is taken from the name which is here. And each member comes from a definition that you see here. There are some parameters which are optional. Typically, I spoke, there was a required parameter which says ID, title, create date and status are required in the to-do definition. But the down date is a parameter which is optional. So it has, in fact, another value in Java language you can use a null to represent the fact that there is nothing. In Ada, we have no concept of having a null. So you have to use a specific type which is here a nullable date. We could have a nullable string which says there is nothing. It's optional. So in fact, this is just a boolean and the value. We also generate a vector which is used to represent, to manage the collection of to-do types. Just as recall, here I'm saying I have a type. This is my to-do type. But my operation is returning an array. So it is returning an array of to-do types. And to implement this, this is the Ada container vectors which is used for the implementation. So now, for the client API it is represented by the client type. So we have this type which is a tag type which is generated and it provides each operation that was described in the YAML description. So here we have a create to-do, list to-do. The name was part of the description and then you have, of course, the client instance and all the parameters and all the response of your API call. Now, to use your this API, it's very simple. You just have to declare an instance of the client type, set up the server where you want to connect to and then do the operation. So here, with these two instructions you retrieve a list of to-do. In fact, there's a list in this. Okay, let's see now on the server side it's a little bit more complex in fact because on the server side you really have, the first thing is that you have to write yourself the YAML and OpenAPI description. Then you have to generate the code and then implement what is behind your server. And then what you can do is also share your OpenAPI to a swagger app so that you share it with others. So on the server side the command to generate is this one so it's very simple. You just have to change the generator. So it generates a number of files. So the server is very close to the client model. So here, client and server will share the same data model. And on each side, the server specific files here you have some skeleton and the skeleton in fact contains all the work to extract the parameter from the request and respond, call the server instance and respond to the client. And here you have some files that you can modify and which contains the implementation of your server. Of course it is empty. Stefan, what happens then if you do this implement to server and then figure out, well I have to make some change to the API can you read on the generator? Yes.  So for example, it shows that if you run this command several times it generates everything. But if you decide to edit this file you will add this pass to the swagger ignore file and then the generator will not overwrite your own file. But then you have to adapt it yourself? Yes, you have to adapt yourself. So how much code would you where would you go in to adapt and how much code would you have to add on the generator? In general you don't have to modify this part and this part. And the part that you have to modify on this side is in general very light. I will show you. So on the server side we also have a swagger runtime here which is using almost the same component with a new one which is the add-aservlet which is a way to the add-aservlet in fact is an add implementation of Java servlet that I have done some time ago and this is a part that brings rest support for all the system. So it's run on top of AWS. Here you have the generated code and what you just have to do is at the top. So the skeleton. The skeleton in fact generates a server type limited interface with one procedure for each operation that is defined in your open API file. And in this operation what you get is you have your server instance you have the parameter input parameters and what your server has to produce. You also have a context parameter which gives you information about the request and the response so that you are able to do some more control about it. So what you have to do in fact is just implement this server type this server type interface so it's very simple implement all the operations which are declared by that interface and all the serialization and deserialization everything related to JSON, XML and so on. This is handled by the skeleton so you don't have to do it. The last part is the server model. There are two server models. One model which is we create one instance one server instance per request this is a simple model and another model where you create your server instance is shared among all requests. So you have to choose between the two models. When you choose this shared instance you have a single instance of your server and it is protected by a protected object so that if you have concurrent operation we are safe. So you just have to instantiate the skeleton generic package and then you have to register this package to the application and then when the server is started it will be able to serve the requests which are defined. A word about security so the security you will describe the security within the swagger document in two parts. First this is a general description of what security you expect so here this is OOF security in the security part you will describe the scopes so here the scopes are related to permissions so you allow writing to-dos and writing to-dos and then on the API part you will specify what is the scope which are required for the caller to make this operation. On the client side if you want to use OOF you will create a credential object and this credential object will hold the OOF information OOF contains a number of pieces I will not describe OOF completely because it's really complex so you will set an application identifier an application secret so this identifies the application from the server point of view you will describe the OOF access point and then with this call you will authenticate to the server with your username password and asking to the server this application I want read to-do and write to-dos scope so I want these two permissions once you are authentified you obtain a token and you just have to set your client credentials and you are done so now when you will make a call like this in fact what will happen is the authentication will be passed in this authorization here either in the bearer token which is here so this is an RFC 6749 for those who want to look and this is what grants you access to the API now on the server side what we have is each scope in fact generates a definition of read to-do permission which is in fact the instantiation of this package so this creates a definition of the read to-do permission and then the generated code what it does it uses the context to verify that you are authenticated if we are not it rejects the request with a not authenticated error and then it verifies with the context whether the client the application has the given permission the last part is more configuration you have to register the application which are allowed to connect so that means the server has to know the client ID and the client secret of applications so that it can verify that these applications are allowed to are granted the access and you also have to configure the possible user names user and password this is this is I would say some kind of toy you can do it programmatically but for the presentation it was a little bit complex ok so I I can do the demo not sure good luck yeah thank you keep on praying you are lucky so I will probably do I don't see anything on my laptop so it's not really easy that's ok I'm not going to make it ok so I will make it differently so here I have my to-do example where I have it's a final example I am sorry it's a complete example with a working client and a working server so in this part I have some the generated code on the client side so here you see the operation that I have created create to-do, delete to-do so these are the operations which are defined in my open API file just to show you the implementation of create to-do what it does is it serializes the parameters and it makes the HTTP the post call and it deserializes the results so it's very simple I will show you the client so here I have an example so I have my instance of the client I configure the credential of this client and then here at this line I am calling the create to-do with my title and I obtain a to-do object which is at this level and with this my to-do is created here you have an example of getting a list of to-do you obtain a list and then you can easily iterate over this list ok on the server side if you have to implement it's very simple I will serve for that so here I am defining my server type instance so it implements the server type skeleton that I have presented I have used shared instance so that I am holding all the tasks in the object which is here what I just have to do is populate populate the information return it and insert it in my object so the code that you have to write is really simple on this side for deleting a to-do is also the same and just to show you the skeleton so the skeleton does the same extract parameters before calling your implementation and then it serializes the results before returning ok so I cannot show you it's too complex to limitation and improvement and possible improvements for the future other things was a problem for this why because we have many many types of strings we have strings we have wide strings unbunded strings unbunded wide strings bonded strings bonded wide strings do we have more I don't know so it's nice to have it's all for the moment it's nice but each time you have to pass a string at some point you have to do a conversion I made a choice to use unbunded strings for every parameter which means that when you have an operation which gets a string as parameter you have to convert it to an unbunded string so it means that you come up to a lot of two strings or two string conversion to do from one type of the other enums are treated as strings it's not really good we don't benefit of all the all the benefit of having a real enum the problem is that in YAML every operation can define its own enum which means that we would generate one type for each enum definition and we would end up in other problems like having a lot of enum definitions which almost say the same thing and you will have to convert between them circular dependencies is also difficult in Java you can have circular dependencies in the definition of YAML and you can pass objects the representation of a circular dependency is a little bit complex you can do it with core pointers but then you would have to free the memory who owns what it's not easy the error model needs some improvement when you have a 404 error which is written by the server we can raise an exception but when you raise an exception you will use some information about the API call that you are doing sometimes it's not easy to always manage errors with just exceptions some possible improvements there is no support for files uploading a file is not yet supported and asynchronous operations are possible some clients generators support asynchronous calls this is just a matter of implementing this open API describe your rest API and swagger generates a code for you it's really easy you can publish your API you can use API published by others just do it GraphQL this is another way to make request to a server GraphQL was introduced by Facebook two or three years ago this is another challenge because it's another interesting challenge you describe elements of data that you want to retrieve you push some kind of GraphQuery to the server and then the server reply this could be a next challenge thank you what you describe is a lot like SOAP and what AWS is doing for SOAP so one in AWS you are able to generate a description file from a data specification yes is it available do you plan to make is it available no in fact the tool I'm using is tool implemented in Java by a community which is not ad-acentric this is a community which is oriented PHP Python JavaScript they focus on really starting from the open API specification and then from that generating code from different languages they don't do the reverse yes but you can get that with Pascal away and ask him to adapt his tool to generate this rather than I'm looking to this problem or possibly recently and although we so actually used the data specifications as a we used the data packages as a source code or some SOAP services but when we look into open API the first law was that we actually have better ability to document an interface with open API than with data package specifications so we decided to go with open API and then a custom unfortunately still proprietary implementation similar to what Stefan had presented and then they'll make the API specification as a reference generating the data from that it's going further by question how is it better than SOAP it's different in SOAP in fact if you want to do a SOAP query you have to create XML document in which you describe the parameter in which you describe the operation that you want to call and then you will have to you will use a post only a post HTTP command to invoke your request rest is easier to use in general because you will just do a get of a page put of the same page delete of the same page the HTTP keyword to express the operation that you want to do getting, updating, deleting creating when you create an object you post some content on a pass when you want to delete an object you delete a pass when you want to update an object you update a pass so it brings something easier to use which is in fact easier to construct because you just have to pass to construct instead of a complete XML document that you have to write to express I want to call this operation I want to pass this parameter on this parameter have your SOAP, your XML document that you subscribe to the server my question is with all these on Spagger app and OpenAPI website do these publish their own rest all APIs but we could just call Spagger all of these and get all the libraries at once iterate all the data from all these descriptions just using their own API I'm not sure I understand you Spagger API, the website which collects the APIs for all the services to be able easily to collect all these APIs they publish they allow you to publish your API but to collect them for us we are able to generate all the data code yes you can yes you can the question is I have a remark to you the ADACO generator the Spagger code generator contributed to the official repository the ADACO generator is fully integrated in the official Spagger distribution William Chen is an official maintainer and each time we fix something he integrated immediately the fix so he is really proactive at integrating fixes and improvement in his core project


Jamaica's history of cooperating with international bodies goes way back. Matter of fact, we signed the agreement with Interpol in 1963, so that tells you how far back our relationship with Interpol has been, and we recognize that crime is a global affair. Jamaica is positioned in such a place where, within the Caribbean, where things like cocaine is transferred from South America to North America and Europe. We have had instances of fugitives hiding out here, and so we felt it necessary when the invitation came to agree to host this symposium because we know it would bring us in touch with many more law enforcers from across the region and around the world. And that forging of relationship that we have seen, especially since the symposium started on Tuesday, I think is going to go a far way in enhancing the relationship that we share with other law enforcement entities across the world. Mr. Cockiness from the get-go, he stressed that this is not going to be a talk shop, and so it is not. I think the practical examples of fugitive cases, the interrogation of the various databases that are provided, it's exposing other people who might not have been able to, or might not have access to these databases. It's exposing them to the reality that exists, help is out there, and they just need to reach out and communicate. They want to assure Interpol and other partners around the world that Jamaica is here, and we are willing and able to share whatever information we have, willing and able to participate in any operations that we need to participate in, and our commitment to cooperation is stronger than ever.


Ladies and gentlemen, meet Sylvan from Switzerland. Can I have some applause, please? Thank you. Sylvan came all the long way from Switzerland to make a talk about security, the internet and authorization. And I thought, I have no clue, but let's let him explain what happens next. The stage is yours. Hey, good afternoon. So I need a picture. I'm still trying to get a picture, yeah, we have a picture. So my slide is going to be in German, but I heard that there are some people who would like to hear it in English. My talk is going to be a little bit shortly for people who are not that technically at how the internet works, what's BGP, why we should do RPKI in the future, and how you would do something. How do you actually verify that what you get from the internet is legit? So this is the internet. On a serious note, what is IP? IP, or as a lot of people start to call it IP legacy because it really shouldn't be the standard anymore. IPv4, it has been introduced in 1981. And IPv6, which we call IP now, is more than 18 years old. So it can even drink alcohol legally. But still, there's people that don't use it. One term that we're going to use when you're talking about an ISP network is a prefix. This is practically the fixed part of a network. So if you do routing, if you have a destination, a prefix is what's always the subnet. And on the other side of your address is the host part. How many bits in your mask are actually free to use for individual hosts? So what's the internet?  Many networks, in the meantime, more than 60,000 individual networks in the world that had been assigned a number, they're called Autonomous System. And Autonomous System is someone who, as an organization, runs their own network. It can be multiple sites. It can be multiple countries. It can be multiple continents.  You don't know. All those Autonomous Systems, they do have an identification number. And you would get that from an organization like RIPE. And when you have an Autonomous System, you probably want some routing. You want some network traffic. So you're normally assigned some kind of prefixes, some kind of IP addresses. You can use in the prefix. You get online through a peering, through a transit provider. You probably have some friends.  And otherwise, sometimes you have to pay for it. So you go to a transit provider and you get online through them. And sometimes it looks like that. So BGP, that's practically on version V4, a standard protocol that you're using nowadays in the Internet. It is used to just exchange information. Information can be, hey, I have this prefix that I want to bring online. I have this V6, V4 prefix. BGP is also capable of carrying other information like MPLS. If you want to have virtual tunnels in your network, you can do a lot of it with BGP. It is pretty flexible. What you normally have is within your BGP routing process is an AS number. So we come back again. You always have your identification number. And it does scale pretty well. Nowadays we have about 778,000 routes in the Internet, just on V4. That's V4 only. V6, about 50,000 nowadays. So let's talk a little bit of problems that we have nowadays in the Internet. Well, the Internet, when it was built with BGP more than 10 years ago, like 30 years ago, it was based on trust. So in the early times, all you had to do is, hey, I have this prefix. Let's send traffic to me for all those IP addresses. What could possibly go wrong? Well, it turns out a lot of things can go wrong. So people started to have a little bit of filtering. Hey, I don't want all the stuff coming in. Hey, only send me 10,000 routes.  Well, it's kind of a gentleman's agreement with those route filters if you do it in a small scale. Problem is, how do you filter when you have 100, 1,000, 10,000 customers? How do you actually filter? How do you actually process those manual filters? So you need something better. Introduce a database. So if I, with my own ISP, can go online into a database, I can declare, hey, I have those IP addresses, this prefix, and I will announce it with this and this AS. Well, that's cool. On the other hand, not everyone verifies it. It's often slow. It's often outdated. And people were like, okay, can we do that more secure? Well, what's the most secure thing in the world? Definitely. Definitely a PKI. But nothing else was chosen so far. So hopefully that's not how your internet will look pretty soon. So let's talk a little bit about those RIRs. A RIR is a local regional entity. That's an organization. So for example, here in EMEA, we have RIPE. So as an ISP, if I want to be independent and I don't want to be a customer, let's say German telecom forever, but I want to be able to choose my suppliers freely, I have to become a RIPE member. As a RIPE member, I can get a certain amount of IP addresses. Nowadays, I think it used to be 1,000, should be 512 IP addresses pretty soon if they are changing their policy. So it is very hierarchical. So a very good anchor point for trust would be to go with those RIRs and I can actually get a cryptographic signature from them. So that's what I do. I go online and I can see my dashboard. My dashboard is looking like this. Hey, I have a V6 prefix, even for a foreign ISP. So my office is not with my own internet provider because if I have a problem, I'm offline so people can't call me to tell me something is wrong. So we have someone else. I can create a signature even for another ISP. But it's my network block so I can say, hey, that ISP is actually allowed to route my net block and I can create an ROA, a route origin authorization. And that's pretty cool because a couple of years ago, quite a few years ago, there was an incident with Pakistan Telecom where I think the telecommunications authority of Pakistan was saying, hey, you have to block YouTube. So they did. But they did a mistake. They created twice a route into nowhere, so the traffic just gets dropped into nowhere. But that was more specific than what Google was doing. And with RPKI, I can say, hey, I have this net block of a thousand routes and I don't only want to say this is only being routed for a specific AS number, in my case 41666. But I also want to say that nobody else should ever create, including me, should ever create a more specific route, a smaller route. Because if you do a smaller route, traffic goes to the more specific route. That's always the more specific. So with RPKI, I have a way to avoid my traffic to be hijacked without it even clocking up the routing table. Because nowadays, we have 778,000 routes. That's a lot. That's because half of them are the longest format possible. That's a slash 24, that's 256 IP addresses. It's incredible. It's really clocked up. This is a way to potentially reduce it without opening up the doors for more specific again. Because if I lose traffic, I really have to use my professional out-of-band management network. So what do I do to actually deploy RPKI? Well, I need a few components. I need some server to validate it. In my case, I use the RouteInager 3000. Because to be honest, the one from RIPE, which is the other competing software, it runs on Java. And Java is like, I always love those stickers, 3.3 billion devices run Java. That's a nightmare. So yeah. And what you also need is a router which supports it. I try to find a list on the internet which routing operating systems do it. I haven't found a conclusive list because the first source I found was from RIPE 63. And I think we're on RIPE 78, so that's like 10 years old or something. So that's really, really old. And in the end, you need something called a route map or another mechanism to say, hey, if I talk to this peer, so if I have an upstream, a transit, or a peer that tells me, hey, you can reach those routes from me, and I need to have a mechanism if I talk to that peer to actually tell my route to double check if that's valid. So what do you do? Well, as I said, I'm going to use RouteInager 3000. There's really nice tutorials in the internet. You need to go by the setup tutorial. It's easy to follow. You need a so-called TAL file for one of the five RERs because you're not allowed to distribute that file, so you need to download the file manually, place it to your server. And practically, you can start it with a single command if you try. You can also write a configuration file or you can use supervisor as a demon, so it just responds to the process if you want. Do however you want. You can use system D. You can not use system D. It's up to you. And in the end, that's how your service looks like. No, not really. That's actual production access point. So you have your router. In my case, I have Vios as my edge routing system. You have a line. It says, hey, configure me RPKI. Here's the route cache. Here's the IP address and the port. Done. It's a couple of lines. And then you have to define on your peer, which is your BGP configuration router. You have to tell it, hey. If RPKI is valid, do something with it. Because if you do a validation, you probably should be doing something. I mean, why would you verify anything if you don't do anything with it? For me, so far, because I don't want to block traffic yet, we're just in the middle of rolling it out, I just put a sticker on it. So a sticker is a community. It's just a label. I say, hey, if it's valid, give it 9100 as a sticker. Same thing. If it's an invalid route, an invalid route is not something like a two-specific route. So someone said on the right portal, hey, I only will announce up to a slash 22. But they actually announce a slash 23. That's an invalid route. That's a way too specific route. So I will drop it. Or in my case, because I don't want to drop traffic yet, I just mark it as, hey, this is probably bad. Some running some statistics. As a side note, this is how you can bend your fiber if your signal is too high or not. So I ran some statistics yesterday how the routes were looking like on my side. So on the button, I get 753,000 routes from the global table. So I think one of my ISPs isn't really giving me the full view. Out of that, I get already almost 100,000 routes. That's, for me, a pretty impressive amount, but still there's a lot of work to do. Valid routes, valid signatures. So if I were to only accept RPKI valid routes, I would lose routes for about six out of seven, I would lose. And then I can decide, do I just send that the default route, or will I drop the traffic? So far, I can't enforce anything on non-existing routes. So something that's not signed at all, well, yeah. And invalid routes, at the moment, I would lose about 4,500 routes. And if I recall right, I recently looked into it. And the most of it is stuff like invalid more specifics from three are far, so that would not totally kick me out. On your router, you should really, really sometimes clear your fans out. If you want to play with it with BGP, if you have some BGP infrastructure, here are some routes with RIPE. This is a resource I've used originally to go through it personally. There's a pretty nice tutorial online from many, many people. All my contact details, so that's also later on online on the slides. If you want to write me, you can also write me on a secure channel like Matrix, so we can also play with it. So a little interesting thing happened while I was here. Who here sent a postcard already on the C3 post? Raise your hands. Nobody sent a postcard? You guys really should. So I actually got one for the C3 knock.  Thanks for your work. So we actually got that snail mail to the C3 knock. So I asked around, what's the current status? So well, to be honest, we do a few things in the knock here. We don't accept RFC 1980. That's private addresses. We don't really want that from the internet. We don't use 100 or something that's carrier grade not. We obviously don't want anyone telling us, hey, your own IP addresses, you can also reach that with me. So we drop our own space that's standard. No multicast. We don't want TV multicast or any weird stuff from the internet. We have the usual length. So anything more than a slash eight is weird because nobody has that as a net block. Same thing with V6. And we dropped the default route. So what's still missing, what hasn't been done is RPKI validation. It's always the question of, do we want to do that? Do we not want to do that? So yeah, question is always, yeah, it can also go wrong. And it's a PKI. So one of the things that have been a quite interesting discussion is if you have a PKI on a route, it's the same thing as with an SSL PKI. You can also get your certificate revoked. And RIPE is an organization under Dutch law and RIPE could potentially, that's something I have discussed with other people, could potentially be forced by a court to create an invalid route so traffic to certain IP addresses in the internet might be blocked. The question is, will that even work or will people just say, hey, I'm just going to whitelist those IP addresses and traffic gets allowed again? It's one of the problems with a PKI. The next problem with a PKI is, what was it, Diginotar that got hacked? Symantec who had some security issues, wasn't there even a third CA which had quite some issues? So, well, we're hoping that RIPE knows their stuff. We really have to hope that they know how to protect their key, but if stuff really goes wrong, then you might have someone signing a valid route which should not do. Do we want it or do we not use this system? For me personally, since I want to play with new things, I started using it. So this is my RPKI validating router. On this whole thing, interesting inception level happened. So if someone wants to play with BGP, but they don't have their own IP address block, there's a really, really cool project called DN42, it's practically a darknet running on BGP with sometimes encrypted, sometimes totally unencrypted traffic. So some people on the internet decided, hey, let's use private IP space, let's create our own private network. And I ended up discussing with people, hey, what about if we do RPKI on DN42? So apparently that's already been done, and I found a website of a person who writes a blog article about that, and I was like, wait, Mr. Sherman, well, it happens that that's the same person who sent the NOC a postcard. So whoever that person is, I don't know if my postcard with the return packet has already arrived, but hi from me. So on that, I would like to open it up for Q&A. Are there any questions? I come with a mic. Well, or I'm also around, find me at the NOC. So it's not clear to me how you get your own signing key. I mean, you can sign your own routes. Is that correct? So if you do the BGP announcement, you sign your own routes. You have to go through your local RIR, at least that's what I understand. And how I did it and how it seems to work is you actually go with your RIR, which is, in this case, it's the LIR portal. So if you're, for example, a write member, which I am, so I don't really know the situation of any other RIR, how they are doing the process, but for me personally, I can log in with my online account with write and I see, oh, these are your routes, you're announcing with the space that you got from us. Would you like to create an RAI? So I can click online and say, hey, generate me a key and let me generate the routes. So at the moment, the key handling for my own space that I got is completely with RIPE. Not sure if there's a better way if I could generate the key offline and then upload the route objects so far, that's not what I have done. Because there's even IXPs which verify my routing and I see that it is working. So it works. I don't know if that's the optimal way. Okay. And the TAL file, that's a trust anchor something? Yeah, it's a trust anchor and... How many trust anchors are in there? I think should be five trust anchors from the RIRs, yes. And the six trust anchor that I have not implemented yet would be with my pairing with the N42 which is this research network. And one of the anchor files for some weird copyright limitation you have to download manually and place it into your folder TAL. Anyone else? Questions? So just to clear up, currently the people behind the Routenator 3000 project, the Annalenet Labs, they are actually the project that they got the EU funding for is the Quil project which is about running your own RBI certificate chain. And at the moment RIPE NTC does not support delegation to your own certificate but they plan to do that at some point and discussions are going on of what the policy should be in that regard. But Quil might be, for instance, if you are running an AS number with address space from multiple different regions then it would make sense to have one place to manage it. Cool. I wasn't on RIPE 78 so I might have been slightly out of touch also with the newest discussion. Thanks. Anyone else? Then otherwise, hit me up, hit me for a beer when we can continue discussion. Thank you very much. All right. Thank you, Sylvan. Big round of applause.


How can the narcissist leave you like you never existed? How can they just leave you like you never meant anything to them? When you first met the narcissist It was very intense You felt something that you had never felt before It all happened very quickly and then you became inseparable You became so closely connected It's like this is it This is the person you're meant to spend the rest of your life with You just couldn't imagine being with someone else You couldn't imagine anyone else making you feel the way they do You had amazing chemistry You had this unbreakable bond This strong connection And you just couldn't imagine ever being without them They may have told you they loved you They may have said they wanted to marry you and have children with you And while that's something that might have made you distance yourself in the past With the narcissist it just felt right It felt like it was meant to be Maybe you never really believed in soulmates But this engagement was unexplainable You couldn't describe why you felt this way You couldn't put it into words It just felt right And the narcissist made you believe that they felt the same way They fed the same feelings back to you So you believe that it was real You believed that you both wanted the same thing You believed that you were going to grow together And that everything was going to be good As time went by You began to notice some unusual occurrences Maybe it was something they said Maybe it was something they did But whatever it was It seemed out of character for someone who was supposed to care about you For someone who was supposed to love you Something didn't seem right But whenever you suspected that something was wrong But the narcissist was there to assure you that everything was okay So you ignored it You overlooked the red flags You continued investing all of your time into this relationship You believed that you were building something meaningful with this person Until one day It's like they suddenly got cold feet They suddenly started acting different towards you They became very cold They became very bitter and resentful towards you As though you did something to them But if you ever confronted them on it They could never quite put it into words what you did Or if they did It never seemed relevant to the situation It never seemed to justify their change of behavior Because you knew that someone who loves and cares for you Would not treat you that way Even if you did something wrong They would try to work it out with you But no matter what you did to try to make it up to the narcissist It was never enough Maybe you tried to have a normal conversation with them Maybe you tried to understand where they were coming from Maybe you bought them gifts or tried to be more affectionate with them But no matter what you did It didn't change anything It just became this hopeless situation Where you were doing everything you could to get things to return to normal While the narcissist had no interest in working on anything It's like they were trying to destroy everything that you had built together Until one day They just disappeared Like you never existed Like you never meant anything to them Like they were just playing a role the entire time How can the narcissist leave you like you never existed? How can they leave like you never meant anything to them? Don't they have a heart Don't they have a soul? Was it just a game? Were they playing a role the entire time? The truth is it's nothing for a narcissist to leave you No matter how much time they spent with you It doesn't matter if you were together for 5 or 10 years It makes no difference to a narcissist Because narcissists do not attach to people They do not attribute importance or value to you In their minds everyone is replaceable Everyone is expendable People have relatively little significance to a narcissist And therefore they are able to be abandoned and destroyed People are replaceable You never meant anything to them They never cared about you They never loved you They just saw you as an object They just saw you as something they could use to fulfill a task or function Narcissists are self-absorbed and they lack empathy They cannot see you as anything more than an object You're just something they use for a specific purpose They cannot connect to you They feel nothing for you Their feelings are only reserved for themselves They are logged into a world of their own making Where you cannot reach them You cannot connect to them So it's nothing for them to leave you You are just an object You are just their supply And when the supply runs out They just look for a new object Something that they haven't destroyed yet Because no matter how important you think you are to the narcissist The truth is you're still replaceable They do not value anyone or anything All they care about is their own emotions They are driven by their emotions And if you don't make them feel good about themselves They will drop you like a hot potato No matter how much of your time, energy or money You have invested into them It means nothing They don't care And there is no way for you to get them to see the light They're just going to see it as though you're trying to manipulate them As though you're trying to trick them into doing something that they're unwilling to do And that will only make them even more rebellious That will only make them even more out of control They have no empathy They have no empathy They don't care about how their behaviour is affecting you They can't even see you Everyone the narcissist encounters Is either an extension of their idealised false self Or a reflection of their insecurities You can't be anything else in their world There is nothing else So everything you thought they loved about you Never even existed to them They never knew you They never knew anyone They don't even know who they are And you never knew them Everything you thought you knew about the narcissist Doesn't even exist That person who you thought was your soulmate Was just an illusion They mirrored you They appealed to your own ideals And after all of the struggles and pain you may have endured in your life You wanted to believe that it was real You wanted to believe that you had finally found what you were looking for And they played on that They tricked you But in some situations They may have felt like it was love Because in the beginning They see you as an extension of their idealised false self They see you as their perfect reflection But they never really loved you A narcissist can't love you Because they just see you as an object All they care about is what you can do for them Or how you make them feel That's their idea of love But they cannot connect you as a person They cannot attach themselves to you And that is why you may remember That you never had any deep conversations with the narcissist Everything was superficial Everything was very shallow They lacked depth Because that's all there is to them It's a false self And there is nothing underneath that All they can do is repeat back to you Things that they have given from other people All they can do is imitate whatever they think is valuable Whatever they think is desirable or attractive But they cannot give you anything real They cannot give you anything with a foundational structure Which means that it was destined to fall apart Because it was built on a house of cards It was built on their own insecurity That's why they created their false self Because they're very insecure They created their false self because they wanted to be loved They wanted acceptance They wanted to feel like they belong somewhere The irony is that by doing that They have made it impossible for them to ever love or be loved Because now all they have is a false character They don't even exist So it's nothing for them to leave you like you never existed Because they never existed in the relationship anyway And deep down they know there's no future in something That started out as a game Something that started out as an act of manipulation Which is why the moment that you begin to catch on They are out of there You may never see them again Because they know the jig is up They've been caught out and they have no defense So their only option is to leave Thank you for watching I hope this video resonates with you Please like Comment Share and subscribe If you would like to donate My PayPal link is in the video description Coaching inquiries You can email me at coaching.narcsurviver.co.uk Thank you for watching And I'll talk to you soon