I just want to do a quick test first to see how many of you are actually asleep right now. Can you just stand up all of you? So, yeah, if you feel like jumping, it's also okay because, okay, are there anyone asleep? Apparently not, that's incredible. You are very welcome to stand up during the whole talk if you want. We can do it as a day of the stroke or something like that. So I do both. I'm not going to bore you to death. So in the world of content management, it's not really uncommon to be competing over features that no one will ever use eventually. And that's a crazy trend, of course, but it's a very mature market and we see this all the time that CMS producers are battling over features that will just never be able to use eventually on the websites that we run on the CMSs. So I'm going to talk about how we as an open source project, how we see this and how we try to do something different from the pack. Does this work? I'm from Copenhagen. If you don't know where that is, you can see it up here. It was a really long flight. This is a typical picture of Copenhagen. Lots of bikes. We go around on bikes all the time. And interestingly enough, Copenhagen is about the same size and has the same climate almost as Detroit. But we use 10 times less energy than Detroit. So it's a very clean and very sustainable city of its size. This is also not an uncommon view in Copenhagen to see this stuff. It's definitely taken biking to the extreme. So one thing I want to tell you about me, because I've been listening to all the talks today, and when I hear Jason, this is what I think is happening. I have no clue what Jason is. So I'm just a UXer and I work with developers all the time, but I don't understand anything about the technical foundation of the work that I do. So, I'm the product strategist of the open-source news project. The stable version is only in 1.2 right now. We are only a couple of years out of alpha. So it's a relatively new open-source project. So as a designer and a product strategist of an open-source project, you can't really do what UXers really do, which is to design very specific user scenarios, because it's framework. And one of the things that I need to do well is to make a lot of developers, hundreds and thousands of developers happy to work with the system. And for doing that, we looked into different principles around the world and found that master planning and urban planning was a really nice area to match up with UX for software. And this is a famous architect called Oscar Niemeyer, and he said that building cities poses a beautiful problem, because you're essentially planning for something you don't really know how will be used. So we took a lot of principles from master planning and turned that into the software foundation or the UX foundation for the product. And one of the key principles is that a city such as this here in Singapore has to be inclusive and has to be able to include anything and anyone. And that's about planning for a Q2 you don't really know how it will look like. I'll give you an example. This is Copenhagen. And this is the harbor of Copenhagen in 1930. Everything done back then and planned in the harbor area back then was based on military and trade constraints. So this is the same harbor today. And there was just no way you could have seen how this would eventually be used back then when it was planned. And here's an example of the harbor being used for something completely different. This is me with the bathing in critical waters there. And coming back to the nearest project. This is the relatively small court team that I work on. We're about 20, 25 people. And here's some of the technology we work with. I'm told I don't really know what it is, but I know that it's BHP and something like that. So there's probably tons of stuff in it that I just don't know what it is. So an ESS is a community driven software project. It's free and open source. And then it comes from the type of free community which is relatively large and very old open source community. If you don't already know type of free, anyone here who knows type of free? Okay. A few, yeah. Probably all of the Germans present. It's pretty big in German speaking countries. It dates back to 2001 and the original version is way back from 1997. So we have two CMSs now. The original CMS and the new project Nias that I work on. And the type of three CMS is used to run, for example, the Lamborghini Web Science all over the world. And the Nias CMS is used for something like this, which is the American Express magazine for centurion card holders. Does anyone here hold a centurion card? American Express centurion card? That is what the minister earlier talked about. That we need more filthy, rich open source geeks. Because you have to be really, really, really rich to hold a centurion card. You can actually find reviews of a U-Boat for private use here on this website. But that's the CMS running this, that I'm the product strategist for. And the strategy that we have chosen is called COC. I guess some of you have probably heard about this concept before. It's just an acronym for very honest polish everywhere. And it's often accredited to the National Public Radio who's used that as the guiding architecture for what they do. And that has allowed fans of the National Public Radio to do their own applications that they then use to funnel content through from the NPR API. And so that concept is, of course, not new at all. It's been around since the dawn of digital, basically. But the world is just still only beginning to really come to terms with what that actually means. And we see lots and lots and lots of websites and organizations running on what is essentially old print thinking. Which makes it really, really difficult to apply a co-architecture. So this is also a slide that I don't understand anything about. But I know this is the one that the NPR uses, the architecture for the technical foundation for the co-APIs. What I do understand, however, is that we see code more hard from the technical foundation also as a cultural or cultural technology. We think we'll have profound impact on what we as human beings can do with the information that's presented to us. So first let me say just one thing. I really, really, really hate outdated information. So think about it. If I go to War Square and I'm directed in the wrong direction, that has a pretty direct impact. And that is just because of obsolete information. And if you take a new side effect of a medicine that's only discovered, which is then not reflected on a local version of the pharmaceutical website, then that has a very, very severe impact as well. Or if I'm an entrepreneur in Africa and I want to build a new business on some software where I research a lot, read through the features, and then suddenly discover that the feature descriptions are just out of date. That happens a lot and has a very severe impact. So the consumer management world has basically turned to personalization. We've just looked at Google, their personalization and personalized search and Facebook and said, okay, we've got to build that in for all kinds of websites. That's got to be inside the consumer management systems. And at the moment, lots of CMSs are focusing heavily on that. And it's all about one thing really. It's about bringing new relevant experiences, which is of course fine for a lot of different customers. But there's a bug here and a thing that gives us all a lot of problems when we're talking about infrequent CMS users. Because this is the interface that's typically used where this is the site for interface, site for is fine and everything, but this is the interface that an author needs to work with to do a personalization of a website gauge. So what you need to understand here is that in this moment when the editor is using this interface, they have to mentally and emotionally connect with the target audience. That's extremely hard to do for an infrequent editor or marketer using this kind of interface. So we've asked ourselves, will personalization bring us less or more obsolete content on the web? And we think in too many cases it will bring us more obsolete content. Why? Because it's very, very hard for the editors to actually understand the interfaces we're building for them and it takes an awful lot of time to produce all the content that's needed to do a personalized version of a website. It's enough for many organizations just to produce one version of the content in one language then let alone the other languages. So yes, we focus on the availability of up-to-date content. It sounds like a really simple thing to do but it's not when you get down to it. And we want to build a tool that help everyone know what it's known because that's really at the heart of content management if you think about it. Just take two seconds and think about that fact. It's actually why we think we still have some relevance as a product category. And in our dream scenario, we just want you to never, ever be able to say I didn't know anymore because you can always look it up. We want you to make you say I didn't find time to look it up. That's a fundamental change. So the web has given us massive availability and accessibility of information but because it's free for everyone to publish, it has also given us massive amounts of absolute information and a way to fix that is the idea of code. So how do we do that in reality? Because this is not easy when it comes to the infrequent editors actually editing content on our website. So we're working very intensely on the UX side of our product and are very inspired by Red Victor from our Apple employee who said that creators need an immediate connection to what they create. And we try to make sure that our editor interfaces provide such a direct connection. So you see there's a very great dilemma going on here and sometimes still is because we're all used to working with CMSs in the way that Kermit Grain describes as CMSs looks like databases that threw up all over the screen and it looks something like this, you know, standard forms. This is again extremely hard to use if you're still at the same time trying to connect emotionally with your target audience. And then some years ago many of us CMS producers thought, okay, we've heard the cry for better UX in our software, let's all turn to in-place editing directly in the template. And lots and lots and lots of CMSs and site builders are doing that today. And the problem is of course that if you ask your editors to edit in this way then they're going to tailor the content to a specific design which is the opposite of the cope approach. This makes it very, very hard to reuse content throughout different output channels because it's been thought about in one particular design which is, again, bold print thinking. So in the next return to a concept we call the edit preview framework and this is a part of the Nias interface on the right hand or on the side there. You have statistics showing the editor how the content is primed before it and you edit in something that looks like a basic, very minimal work processor and you can turn it into full-screen editing like in a super minimal processor. And then over on the top right over there it says Preview Central and there you can build your own preview settings. So that means that the prioritized output channels for your content can be built into the CMS so that the editors can quickly go through a different series of simulations or previews of how their content will look like for the end user. It could be in a search preview on social media, on Facebook or on mobile or on the desktop website again but it all comes down to the core content. So we can do structured or unstructured content in this way and still have it be previewable in prioritized output channels. So we believe very strongly in this that this is the human-centric path. This is human-to-human interaction. We want to build a CMS where you directly communicate with other human beings instead of doing a very data-centric CMS where you are essentially writing for the machine just as much as you're writing for other human beings. Just think about serial checks for example where content authors are constantly editing text just to get higher search rankings. So to achieve all this we need to design better interfaces and this is just the first step. We have lots and lots of stuff planned for like a more full approach but in general we need to let go of this whole print thinking and to a crowd like this probably not that wild for you to hear but to many, many, many organizations and people it's still very, very difficult to let go of this whole print thinking that content and form is glued together which it shouldn't obviously anymore. So the organizations are not yet digital that have problems doing this and we need to support editors to make that transition. We're growing in the extremely friendly teams we would love for people to join us. We have a couple of guys in India we have a couple of guys in the US most of us are in Europe but we would definitely love to include more guys. And if you want to check it out demo and there's a download of course and you're also extremely welcome to just be in touch with me. So I hope everyone is still awake and I just want to say thanks for the opportunity to talk here. Thank you.


Welcome back to React Holiday Day number two. I'm Chantastic. Today, we're talking about props. Now, props are a way for us to configure our React components, changing the data that's inside of them. They're a lot like function arguments. In fact, they are function arguments. Now, how do we use them? In React JSX, props are going to look a lot like HTML attributes. So we can pass in the name that we want as an attribute. Now, all of these attributes are going to end up in this props object. Components take one argument and that is props and it comes in as an object. So no matter what we put here, it's going to be like a key value pair. So we'll have the key name with the value of string Bulbasaur. So now we can configure our component to use that. Let's delete what we have here. We'll use curly braces to interpolate JavaScript values into these React elements and it looks like this, props.name. Remember, this is going to be our key. This is the value. We see that here. Boom, we did it. We used props to configure our component. Now, let's make another component just to be sure that I didn't do some other trickery that we can pass in another name. Venasaur. Oh my gosh. Let's do one more just for fun. Ivisaur. Hope I spelt it right. Great. So now our component is customized through props. Brilliant. Now you know props.


And so I brought my good friend, Laura Mikatish. She's here with me. So just a little bit of background. I've known you for like what, two years now? I think it's yeah we're on two years now. Two years. We met through the fitness agency that we're both at naturally fit agency and that is our agent. She's amazing. She's a goddess. She's a goddess. Yeah and a mom and she doesn't just care that we are like you know good looking and we're fit and we're camera ready but that we're also socially conscious and we used to have these regular meetings pre-pandemic in-person at the offices and Laura oftentimes would be there and I was just moved by her energy and her passion and how well-spoken she is and just how how self-aware she is especially when it comes to her body and her mental health and well-being. So I've been struggling this past year and a half like majorly like never before in my life with my body and my weight and so I just I remember the last time I had a complete meltdown. I immediately thought of Laura. I reached out and I was like hey Laura can we please do this talk for my my YouTube because not only will it help me but I think it'll help so many people who are watching you are in a similar position and because I'm always just I want to support Laura and give her exposure and all that stuff. So all right I'm done ranting. Hi Laura welcome. Thank you for having me. Can you just start with telling us a little bit about your journey your story as it relates to fitness and weight loss and your weight journey? Sure. So right now I am a pro bodybuilding coach and also a health and lifestyle coach but I didn't start there I was over 320 pounds but by the time I graduated college and my health issues were really out of control so I was struggling with hypothyroidism. I was teetering on the edge of prediabetes and things like my heart and those conversations were coming up with my doctorate 22-23 and then I decided I considered having weight loss surgery which brought me to the idea of needing to be really strict and really well monitored and really focused and not binge eat which was what I suffered from and I tried it out and I started going to just be consistently in the gym and show myself I could be consistent with food and exercise and then I just fell in love with it and stuck with it. It's been like it's been seven years eight years of me doing this every single day and now I get to help not only pro bodybuilders who maybe are struggling with their relationship with food which is entirely common incredibly common but also I work with men and women of all ages who have been struggling with their weight their whole lives and have never had a space to really vocalize their thoughts their insecurities their issues and relationships around food and now we've kind of created a safe community for that. I have no idea that you train bodybuilders.  So I did my first bodybuild pro bodybuilding show in Muscle Beach Venice in 2019 place third and at that time I was 160 pounds stage weight obviously as you know that's not sustainable since then I went from 160 to the most I've ever weighed is like 175 over the course of the pandemic it kept going higher like 180, 185, 190, 195 I finally tipped over 200 I think 203 was my max and I was just like I can't I can't describe the despair that I felt hitting those numbers and then also feeling like a vain narcissistic asshole because there are other people who are obese and and people some people are looking at me like what are you talking about you're not fat and I'm I look at the mirror and I'm like I mean it it's it is it's actually 40 pounds of plus of fat so I'm not just making it all up but but yeah I have it's such a hard time I think that I think that the issue people miss when they're sort of trivializing that feeling because you're you're talking about a feeling that a lot of the bodybuilders that I work with have which is that they step off the stage and they look the leanest and the smallest that they're ever going to look and then over the course of time whether that be circumstance or bulking or whatever it is they're forced to shift from this identity themselves to another identity and what happened with the pandemic is you shifted from an identity of being somebody who felt like they were physically fit able an athlete to now not only have you put on you've put on some weight but you've actually had to shift your entire identity which people miss you've gone to feeling like you don't know how to control your feeling like you don't know how to be consistent with exercise and so the identity that you had as a bodybuilder as an athlete all of those things it almost gets shattered when not when you put on the weight but when you lose the control yeah and knowing that I'm supposed to be like a fitness model and a bodybuilder and I'm a representative of the fitness community then I also kind of like feel like a fraud also and that really it brings a lot of shame especially with dealing with a net and like trying to get work and working with her I've turned out a lot of things just because I can't and I think it came to a head when I recently did the today show and I saw myself and it was like this like achievement like I'm on the today's show talking about HIV and AIDS and it was supposed to be this like really joyous moment and I was with my boyfriend he was so excited with me and I was all I could feel inside was just just I felt so horrible um but looking back I realized you know I I lost my main means two main sources of income at the height of the pandemic restaurant where I was bartending for eight hour shifts completely went sedentary after that and then my partnership with AIDS Healthcare Foundation so I was in survival mode and just working what I could at a desk and so my whole lifestyle changed but um I'm wondering for you was there like a key turning point in your life where something kind of like triggered and then it you kind of set you off on a journey of rediscovering yourself or yeah how did that come about yeah um I was not a not athletic athletic child I loved sports I loved activities um I was just lazy so any time I got the chance to relax or sit or lie on the couch and watch tv I took it um and I was also the kid who was like such an athlete on the field but would not do cardio for the life of me I was known to hide in the shed or two to get out of it um wish that was a joke but I did everything I tried everything growing up I went to fat camp one of the coolest experiences I ever had was going to fat camp and being in a place where everybody kind of looked like me and had the same ability level um I did Jenny Craig I did weight watchers I did personal trainers I did all of those things they just didn't stick um and I was so so so desperate for them to stick which I think a lot of times we gloss over it's like I was so desperate for them to stick at the time I have no idea why this time it's stuck other than that it was the first time where it didn't matter if I lost any weight or looked any better it only mattered if I was consistent so what happened was I graduated college I had worked in the film industry since I was 13 like backstage doing sets and things so I immediately booked it to Los Angeles and I was in a relationship and my relationship stayed back in Vancouver um I ended up moving back to Vancouver to try to salvage that relationship and when it ended I was it was the first time in four years that I was entirely on my own I was making my own decisions and I just remember like that relationship ending and all of myself worth being wrapped up in whether or not he wanted to stay and when when I realized like oh shit he's not going to stay like this is really it this is over and I'm by myself then I realized I was writing my own story and that I just had to like I didn't like the story I was in so I changed it yeah it's interesting how so often like our ultimate low points are what kind of shakes this up and you mentioned something interesting that it was more about being consistent so it sounds like it was more you fell in love with the process versus the result yeah I was it was process not progress focused which I think is crucial I use this I have this conversation with my clients all the time like if you can develop consistency around your fitness you can always tweak and change what you're doing but it's the showing up good or bad that you have to learn you have it's the discipline that has to be in place it's not just you know you buy the perfect plan from the perfect trainer and you get the perfect but it's like no you show up every day on a good or a bad day and you're consistent do you have any advice for people when they're just having a really really off day and they're in that moment of complete despair because there's nothing you can do in that moment to change the situation so in those moments um habit is crucial so I actually have my clients that I know are going to struggle with this because we all struggle with it I front load them I have them pack their gym bag and their clothes and their spare outfit and they leave it in a bag at all times in the back of their car and they also have one in their house so there's a couple of things about habit that's really important to understand but the first is right now is we all have triggering behaviors that once they're done that activity will get done right so like if you have to go to a friend's party and you have to hail a taxi or a cab or get an uber once you're in the uber you know you're going to the party like if you're going to exercise once you're in your sneakers you know you're going to the gym or like once I'm in my car I remember when I was trying to when I was just starting to go to the gym and I was trying to make it a routine I was like how do I like sucker myself into going every day and I I remember that I loved the feeling of being on pre-workout I'm being on pre-workout like it's a fucking drug um so I was kind of so I put a cup of water and the pre-workout in the scoop ready to go next to my like nightstand and then as soon as I got up I'd be like I don't want to move I don't want to do anything all I have to do right now is put this thing in the cup and drink it and then the rest will take care of itself yeah that was your like yeah um so I think that is really really really important like from a habit perspective if you have the habit you have so much more of an opportunity to actually get there but if you don't have the habit and that's when the hardest thing is to show up when you don't see the results or show up when you don't have the habit I would say that also being willing to what I call I call it five minutes so no matter what you get into the gym for five minutes and you can leave it can be the crummyest workout you ever had and you can turn around and you can walk out but you just walk in the gym for five minutes even if you're just pacing around killing I don't care if you go to the bathroom go to the locker room go do whatever you need to do but five minutes will most of the time get you going that's so good because there are so many times when I think oh man it's like 7 p.m. right now this is like this is rush hour like I'm not even gonna get the machines that I want and talk yourself out of it but then sometimes I'm like just go and if the machines are busy then you can do something else you can go on cardio or whatever and so yeah that's super important and you almost never have a bad workout when you show up on one of those days you're like oh I remember that I kind of want to be here I don't think I've ever been like man I would really wish I hadn't like gone to the gym today I really regret it and during the pandemic you guys it's not just like oh I get it that this is in your living room it's not necessarily that you were going to a gym but even just putting your workout clothes on and starting the youtube video for five minutes will change everything yeah where can people find you they can find me on instagram at the iron giant s or iron giant test calm if you want to reach out about working together from food disorders or from you know trying to get healthy and always feeling like you're failing that's where you find me I'm on on tiktok on facebook all on all the things okay and that's the website is iron giant test calm yep okay great well thank you so much for coming on and joining me and talking to me about this weighty subject for me I would love to have you back periodically to like kind of deep dive a little bit into certain areas if you're if you're willing I would love that yeah I think there's conversations that need to be had out loud between friends and we can do that okay very cool awesome please like this video if you liked it subscribe if you haven't already check out Laura please please please her content is so valuable and so inspiring Laura thank you so much and we'll see you soon thanks for having me one more thing before I go if you have any comments or questions for Laura anything you'd like her to speak on discuss for us to talk about in our upcoming videos please put them in the comments below and we will be sure to look at them all right now I'm really gone peace


Once everybody Jason for Jasper's case breaks calm twenty twenty one opinion one and one basketball Pikachu number two sells out with This last random number block for the Thunder rockets birds nuggets and blazers and again You get a piece of all of these teams for a fraction of the price You would have paid for all of them remember we go by the first number on the left side of the show number dash And again any one-to-ones go to spot one any zero any redemption Sorry go to spot zero and any non numbered cars are randomized as a group including any downtown potentials Here's a dice roll there's a customer names Gretchen down a will and of course zero through nine Let's go dice roll it and we got ourselves a six and a four ten times. Good luck one two three four five six seven eight nine ten Boom will the top down to Gretch all right six and a fourth ten ten one two three four five six seven eight nine ten Zero down to three All right, so will you have zero seven six Gretchen with four will with eight Matthew with nine Kurt with two will with one Five in Gretchen with three so coming up next guys is the picker team Jasky's case breaks calm


Thank you. I'd like to thank the organizers for inviting me to give a talk, the very last talk. I'd like to thank you all for surviving and coming. That's real strength. Muy fuerte. As the last talk, I think we should also thank the organizers. I was going to parlo in italiano, but I can't. So let's thank the organizers. I think we have Alan, Bruno, I forget who else. Michelle, Dick, is that it? That's it. OK, so I'm going to try and give a talk that will be pretty low-key, won't be too technical and too difficult since it's the last one. But if that's too much and you perhaps want to understand the internet works in this room, if you perhaps would just prefer to look at some lovely pictures of cappuccinos, let me put up my Instagram account. Hopefully I can spell it correctly. Well, actually, I realize I'm not spelling it correctly. Instead of the O-S, it should be an I, but I'm American. So please admire. I'm just as happy as if you like my cappuccino photos during the talk, or if you like the talk, that's great too. My underscore cappuccinos. And if you know anyone in Italy who's looking for barista, I'm available. OK, let's get started. So I want to talk about a theorem about hyperbolic three-manifolds. And if I ever state the actual theorem, it'll be at the end. I think I want to, because it's somewhat technical and involves some three-manifold topology, which I don't think we've talked about in the last two weeks. So I mostly want to concentrate on examples. And I'm going to focus on just a simpler version of what we want to talk about. So let's start with some definitions. So I want n to be a compact three-manifold. And what I'm going to be interested in is hyperbolic structures, complete hyperbolic structures on the interior of n. And I'm going to restrict to those that are convex co-compact. So we want to look at, so convex, so I want to study. So CC of n, this is going to be convex co-compact, hyperbolic structures. Now for what I, the theorem that I ultimately proved is colds and more generality, but this is just to keep the discussion simpler and more concrete. So let me just say what this is. So what is this? So this is a complete hyperbolic structure on the interior of n that extends the conformal structure on the boundary. OK, so if you want to think about this in terms of an atlas. So here is a picture of our three-manifold. And here is hyperbolic three-space union its boundary, which we can identify with the Riemann sphere. Well, what I can think of this as being defined by is some sort of atlas of charts. So I'll draw a little neighborhood of, say, a point in the boundary. So a point in the boundary will be topologically just a half-space. And I want a chart, which maps this to a little neighborhood in H3 union its boundary, where the boundary of the three-manifold is taken to the boundary of hyperbolic three-space. So this is now isometries of the hyperbolic plane. They extend to conformal automorphisms of the boundary. So this will give us a conformal structure on the boundary of them. And those are the kind of hyperbolic structures I want to study. Now, certainly every three-manifold doesn't have such a convex co-compact structure. But it turns out that if, by a theorem of Thurston, if n has any interior of n has any complete hyperbolic structure, then it does have a convex co-compact one. And in fact, Thurston's famous hyperbolicization theorem tells you exactly, gives you an exact characterization of when these things exist. OK, and what's the other observation is that a conformal structure on a surface, oh, and I'm going to let's rule out one thing, I want to assume that, so, I don't want any tori in the boundary. So no tori boundary of n. Again, this is just to make life simpler. Oh, actually, it's ruled out by the count. There won't be any tori in the boundary of n because I'm assuming the structure is convex co-compact. That's a consequence of it. So in fact, nor will there be any sphere. So in fact, what happens is if s is in the boundary of n, then the genus of s is going to be greater than or equal to 2. And in fact, a conformal structure on the boundary of n, so if m is one of these convex co-compact structures, so in general, m will be a hyperbolic structure and n will be the manifold throughout the talk unless I get confused and switch them. Hopefully I won't. So if you have some component s in the boundary of n, then s of n is a conformal structure. But by the uniformization theorem, this is equivalent to being a hyperbolic structure. Every conformal structure supports a unique hyperbolic structure, and of course, a hyperbolic structure determines a conformal structure. And what we're really going to be interested in is if we know something about this hyperbolic structure on the boundary, what can we say about the geometry of the manifold? All right, so let's first start off with sort of a classical theorem. Oh, and let's make one other assumption now in the manifold, which will also simplify things. So I want to assume throughout the talk, I want to assume that the boundary of n is incompressible. So what this means is that if I take, so I have some component of the boundary, then the inclusion of s and n is injective on pi 1. Then we have the following theorem, which is a classical theorem. And let's, the big chunk of it is due to Bayes. There's lots of other names on convention. It says that this space of convex co-compact hyperbolic structures on n is naturally parameterized by the Teichmer space of the boundary. OK, so here is one answer to our question. How does the geometry of the boundary that determine the manifold, it determines it completely? If I give you a hyperbolic structure on the boundary, that's going to give you a unique hyperbolic structure on the interior. All right, but we'd like more precise answer to this question. And so here, so let's think of some more detailed ways we can try and understand the geometry. So let's let yama and the boundary then be an essential closed curve. OK, so if we have a hyperbolic, so if we have a convex co-compact hyperbolic structure on the interior then, or if we have a hyperbolic structure on a closed surface, then every essential curve, every curve that's not homotopic to a point, is homotopic to unique geodesics. So we can measure the length. So we can measure the length of gamma as a geodesic on. So if we have some hyperbolic structure M, we can measure it on the boundary of M, which has a hyperbolic structure as a surface. Or we can push the curve into the interior of the manifold. Or in the three manifold M, in the hyperbolic three manifold M. In both cases, we have some geodesic representative, once on the hyperbolic surface, and the other time in the hyperbolic three manifold. And so I'll denote this. So this is length in the boundary. And then here is length in the manifold. So a natural question is, how do these two lengths compare? So that's a pretty straightforward question. And hopefully we have a straightforward answer. So in one direction we do. In one direction we do. There's a pretty elementary bound due to bears that tells us that if I know what the length of a curve is on the boundary, then I can get a bound on that length in the manifold. It's called the bears inequality. And it says that the length on the boundary, two times the length on the boundary, is going to be longer than the length of the curve in the hyperbolic three manifold. OK, well, what about in the other direction? What about in the other direction? If I know, if I have some control over the length here, can I say anything? Can I get any upper bounds in the length here? And the answer is no. And there is an easy way to see this from this parameterization theorem. OK, so what I'm going to do now is, well, this isn't possible in any three manifold, but we certainly can construct three manifolds where we have two curves on the boundary that aren't homotopic as curves on the boundary. Say they may lay in different boundary components, but are homotopic in the manifold. So now let's assume that gamma and gamma prime in the boundary then aren't homotopic in the boundary, but they are homotopic in the manifold. OK, well, we could do this. It's not hard to construct a manifold of such a property. So for example, we could choose N should just be a surface across a closed interval. And then we could take gamma and gamma prime to be the same curve on the surface, but on the two different components of the boundary. Now what does this parameterization theorem say? It says we can take any hyperbolic structures we want on the boundary and realize that as a hyperbolic three manifold. So, well, so what we could do, I mean, let's assume these curves are, say, simple and disjoint. We can realize a final hyperbolic structure so that this curve is much longer than this one, for example. We can find some convex co-compact structure such that the length in the boundary of M of gamma is, say, much greater than the length of gamma prime. OK, well, then what do we get? Then we know from this bear's bound here, let's put two's here just to make it. So we can apply this. We know from this bear's bound that this is going to be greater than the length, this is going to be greater than the length of gamma prime in the manifold. But in the manifold, the two curves are equal. So what we see is that this curve is much longer on the manifold, much longer on the boundary than it is in the manifold. We're not going to get, there's no way we can possibly get a bound in the other direction. So another way of saying this is if I just tell you the length of some curve on the boundary, that you're not going to have any lower bound on, there's no way you're going to produce any general lower bound on the length of the curve in the manifold itself. So there's one very important special situation where we can say some very concrete information about how the geometry of the boundary determines the geometry of the manifold. And I've already mentioned this. That's when n is just equal to s across some closed interval.  Genus greater than or equal to 2. In this case, dc of n, this is the quasi-fuchsian manifold that were discussed earlier by Jean-Marc and Sarah. And here I won't say what this theorem is, because it would take at least the whole talk. So there's the model manifold theorem of my three co-authors. So this is Brock, Marian Minsky. And what this theorem produces, it produces a combinatorial by Lipschitz model for the geometry of the manifold. OK, so I'm not going to say what this model is, but let me say a little bit about the kind of information it can give you. So the way you build this model, you need some instructions. And those instructions come from the curve graph. And what do you want to input in the curve graph? Well, so I have this quasi-fuchsian manifold, so x and y is the hyperbolic structures. So x and y are hyperbolic structures on s. So there are two points in Teichmann space. And what's the information we want to get out of them? I want to take a collection of curves. I want these x and y to determine a collection of curves. And how do they do that? Well, what I basically want to do is I want to take the shortest curves on x and the shortest curves on y. Well, I need to be a little bit careful about that, but I don't think I want to say it too precisely. But I have some curves, which I'll call gamma x. So this is, say, a collection of curves. And another collection of curves called gamma y. These are collections of bounded. They're not really bounded, but anyhow. Simple cos geodesics and y. And from this information, I can, for example, figure out what are the bounded length curves in x and y. So here's sort of a sample thing you can find. So if alpha lies on a tight geodesic in the curve graph, Cs from gamma x to gamma y, then alpha has bounded length in the three-manifold. So this is the kind of thing that you have this information about the geometry of the boundary. And it tells you about the geometry of the three-manifold. So you can get much more precise information than this. But this is just sort of a sample of the kind of thing you can prove. So what if you have a manifold that is not just a surface, an interval boundary over a surface? It's not just s cross i in the more general setting. So well, one thing we could do is we want to apply this great model manifold theorem to try and study this more complicated manifold. And the way we can do that is we can take a cover associated to the surfaces. So if s is some component of the boundary of n, let n sub s be the corresponding cover. OK, so maybe we have some longer piece of chalk here. Or at the end of the conference, it looks like we only have little bitty nubs of chalk in color. So the rest of the talk will be in color. Box where? Yeah, this box is filled with itty-bitty nubs of chalk. Or here's another box. Maybe we'll know this box. Yes, if anyone wants like little three-quarter inch nubs of chalk. Thank you. You found Francois's phone. You found the chalk. OK, well, maybe it would have been better if I had given the rest of the talk in color. All right, so we have this cover. Now, the cover is going to what does this cover going to look like? What is it going to look like topologically? What is it going to look like geometrically? Well, we can sort of answer both those questions at once. So it turns out that this cover will be one of these quasi-fuxian manifolds. Of Thurston, if m is some convex co-compact structure on n, then this is really a very special case. So ms is now the hyperbolic structure induced by taking the cover of m corresponding to this cover here, then ms is quasi-fuxian. OK, so this is a special case of what is known as Thurston's covering theorem. In this case, when it's actually a little bit easier to prove, well, it's easier to prove if we assume that our beginning manifold is convex co-compact. This is zero to zero proof. In any case, we have that this manifold is now quasi-fuxian. In particular, it's going to be a copy. It's once again going to be homeomorphic to s plus or close interval. OK, well, this is great because we have this theorem, this model manifold theorem, which tells us a lot about the geometry of this manifold. Except to take advantage of this theorem, we need to know what the two conformal boundary structures are. OK, well, we know one of them. So when I take this cover of n associated to the surface s, well, s is some conformal structure on it. And that will be the conformal boundary of one component of n of s. So if I look at this covering map, sort of at the top, it's just going to be an embedding. It's going to be an embedding of some collar of this manifold here. But the lower end, we don't know what that is. And that's what we're trying to figure out. If we want to use the information that we have here, then we need to know what that bottom surface looks like. So if x is the hyperbolic structure on s in the boundary of m, then x is one component of the boundary of this cover. OK, so what is the other component? Well, let's give it a name. And so let's let. So if I take this component s, then what can I do? I take a hyperbolic structure on m. I take the corresponding cover associated to the boundary surface. That gives me a quasi-fucine manifold by this theorem of Thurston. One hyperbolic structure is x. The other, I call sigma s of m. So this is the hyperbolic structure on the other. OK, well, I wrote this sort of suggestively. This is a map. So sigma of s, it's a map from convex, co-compact, hyperbolic structures on n to the Teichmer space of s. This is called the Skidding Map. This is Thurston's Skidding Map. OK, so we'd like to understand the behavior of this Skidding Map. So if we make some further assumptions on our manifold, we get a pretty good answer. So a manifold n is a cylindrical if every properly embedded annulus has a proper homotopy into the boundary. OK, so if you have an annulus that's properly embedded in the manifold, well, you can just homotope that to some annulus in the boundary. So for example, this is very, very much not a cylindrical, right? Because you can take a curve on s cross 0. You could take the same curve on s cross 1. And they generate an annulus that you're not going to be able to homotope into the boundary through a proper homotopy. That is a homotopy that keeps the boundary curves in the boundary. OK, so then we have, well, let's give this its name, what is called the Bounded Image Theorem. Well, this is generally attributed to Thurston, although there's a pretty significant last bit at the end that was first written down by Richard Kent. And well, what does this say? It says that the Skidding Map, so if n is a cylindrical, then sigma s, bounded image. I'm going to go into the chalk here. All right, maybe we have more. OK, so this is a very important theorem. It was a key piece of Thurston's proof of his hyperbolicization theorem. So the reason he was studying this is there was a certain gluing problem. He wanted to glue together two hyperbolic three manifolds to make another one. And this bounded image theorem played a key role. OK, so roughly speaking, and I don't know if this point could be made into an actual theorem, but roughly speaking, now what you can think of, if you have these a cylindrical manifolds, is there's some core of them? If you have any convex, co-compact, hyperbolic structure in n, what does it look like? Well, basically there's some core that's going to always be the same, or coarsely the same. And then the ends are going to look like quasi-Fuxian manifolds, where for each boundary component, the skidding image is coarsely going to be the same. So having bounded image, if you're doing, say, geometric group theory, well, you might as well think of this as being a point or something. So this gives you some starting point to describe a model for what the hyperbolic structure of one of these a cylindrical manifolds looks like.  Let me just mention one conjecture before I move on. There's a following conjecture on Minsky's. So this theorem says that this image is bounded. So you'd like to be good to prove something stronger. And that is the following, the diameter. This is, again, in the a cylindrical case. So the conjecture is that the diameter of the image is bounded by a constant only depending on the genus. So I think one of Minsky's motivations for making this conjecture is that, well, we've learned quite a bit about the geometry of hyperbolic three-manifolds in the last 15, 20, 30, 40 years. And this is a pretty basic question that we still seem to have quite a tough time figuring out. There's various partial results, but I will not mention them now. OK, so how might we generalize this? How might we generalize this? So to state that the actual theorem that we prove involves some discussion of the characteristic submanifold, and I don't think I could. I'd be too embarrassed to discuss the characteristic submanifold in front of Dick. So I'm going to avoid that. And instead, just stick to a very concrete example, and then maybe at the end I'll say something about the more general theorem. OK, so what I want to do is talk about a very specific submanifold, the book of eye bundles. And it's going to be very non-acylindrical, but it's also not going to be a surface bundle. So it's about the books of eye bundles. So let's let sigma 1 through sigma n be compact hyperbolic surfaces with one boundary component of length l.  They're hyperbolic. Maybe they have varying genus. But their boundary components are all the same length. So let me say that I'm going to do some geometry and topology at the same time. The book of eye bundles could be constructed purely topologically, but I want to think of it geometrically as I do the construction. OK, why do I want all the boundary components at the same length? Well, I'm going to glue them together. So glue boundary components by an isometry, form a two complex, so I'm just going to glue all these things together to form a two complex. And let's give this curve a name. The curve we're going together, let's call this gamma. That's the curve where all these things meet. OK, so in fact, you can embed this in R3 if you wanted to. I won't try and draw the picture. It's not that hard to do it, but it'll be on my personal drawing talent. But I can thicken this to form a compact manifold with boundary. So I won't really discuss this particular issue in the talk, but there's actually more than one way to do this. This is an example of a way of constructing three manifolds so I can rearrange the way I eat. So why is this called the book of eye bundles? So these surfaces are the pages, and we're putting them together to make a book. And you could rearrange the pages. And this gives you an example of three manifolds that are homotopy equivalent, but not homeomorphic. Putting the pages in different ways, I can make the homeomorphism class of this three manifold change. This gives lies to all sorts of interesting phenomena, which I will not discuss today. Well, how can I make this into a hyperbolic structure? What I want to do is I want to take this two complex, and I want to embed it. I want to take its universal cover, and I want to equivalently embed it in hyperbolic three space. So this x, it has some geometric structure to it. Because as I was saying, these surfaces that I'm using to build it, they're hyperbolic. They have a hyperbolic structure. So there's some geometry to this. And I want to see that if I make the geometry correctly, I can isometrically and equivalently embed the universal cover into H3. And then, well, when I say equivalently, I mean there's going to be some group of isometries of H3 that are going to act when restricted to the action of the universal cover of this thing will be the deck group. So I want to embed universal cover x tilde. I want to embed equivalently x tilde in H3 such that there is a group, gamma, of isometries of H3 that fixes x tilde set-wise, not point-wise, and acts as the deck group. So this universal cover will be sitting in H3. I'll have this group of isometries. And I'll have this group of isometries. And then when I restrict the isometries to the x tilde sitting in H3, it will just be the deck group. So the quotient will be this two compotes again. And if I do this carefully enough, I'll get a three manifold, H3, gamma, which is one of these convex co-compact structures on my book of iBundlesM. OK, so there's a lot of things, a lot of care I need to take when doing this. But the key thing that I want to think about, I'll draw it over here, so what does that universal cover look like? Well, it sort of looks like a tree, except it's got an extra dimension. But what do I need to do? If I want to embed, say, the regular trivalent tree in H2, it's a similar problem. I mean, if I look at this, there's going to be branching in every direction. And I want to try and fit this thing in H3. So what happens when I do the same thing with a trivalent tree in H2? What do I need? What sort of geometric information do I need to know about the tree to be able to do this? Well, the point is I need the edges to be sufficiently long. If I want to embed this tree in H2, if the edges were too short, then the thing could start hitting itself. But if they're long enough, well, what happens is any sort of path in here looks like a quasi-geoskeleton, they don't intersect. So to embed this tree, we need these edges to be long. They have to have some definite length. If we can't do this in R2, we can't do this in Euclidean plane, and if the edges are too small, then the picture will look too Euclidean, and there'll be some self-intersections that will run into trouble. So you can probably make some estimates using Gaussian A if you wanted to, but don't worry about that. So we have the same issue here. But what do I mean by edges? What is the length that I need to control? What is the length that I need to make sure is too short? So a necessary condition for embedding x tilde equivalently is that the shortest proper geodesic arc, the sigma i, must be sufficiently long. OK, you can sort of the corresponding thing in the three-dimensional picture. This is like some geodesic arc. This is like the lift to the universal cover of some geodesic arc connecting one boundary component to the other. OK, well, there's just a sort of a simple area argument you can do with surfaces. If these boundary curves are very long, then there will always be a very short arc. So this leads to the following. The length of L must be bounded. I mean, I'm sorry, the length of gamma. Length, gamma, bounded. This is the boundary. OK, well, this isn't maybe the most satisfying proof. But this is a special case of a theorem of thirst. Hopefully, this is the motivation of why it's true. So this is very different than in the case of just looking at a surface bundle. Well, what is a surface bundle? A surface bundle is a book of eye bundles with only two pages. And in that case, there's no control over the length of any curve if you're looking at an arbitrary hyperbolic structure on a surface bundle. But if you start adding pages, if your book of eye bundles is non-trivial, it has three or more pages, then the binding curve, this curve gamma, is going to have uniformly bounded lengths, only depending on the topology. OK, so now let me state our theorem. OK, so this is the relative bounded image theorem for this very special manifold. OK, so I'm not going to be able to control the entire skinning image. There's no way, because as I was saying at the start of the talk, for curves, so if I take a curve that's lying in one of the pages, I can make its length be anything I want on both sides. OK, so there's no way I'm going to be able to control the length of curves that lie on the pages. The only thing I'm going to be able to control is the length of this curve gamma. And so let me state it. So let's let S be a component of delta M. Then there exists some L greater than 0, such that the length of gamma on the skinning image, so for all, the length of gamma on the skinning image is less than L. This particular manifold is very close to being an eye bundle. It's sort of as close as to being an eye bundle as you can be without actually being an eye bundle, and this is the only curve that we have any hope of being able to control. So notice by the Bayer's inequality, this theorem applies the statement of Thurston, but we very much use the statement of Thurston to prove this. So we're certainly not giving a new proof of that. So again, this is the point. All other curves that lie on the surface, I can make them as long as I want. So there's no way I can be able to control their skinning image. They control the length of any curve in the boundary, and controlling it in the manifold. And since every other curve, I can make as long as I want in the manifold, I can make it as long as I want. So let me just say a bit about why this is true, and then maybe I'll say a bit more about what you expect more generality. So the result of Thurston is that the, so you have this binding curve, the core curve, where all the pages are glued together. And Thurston's result is you take any hyperbolic structure in the book of eye bundles, there is a universal bound on the length of that core curve. And this was supposed to be sort of why you should think that that's true, at least in this special case. I mean, his argument is different, but I mean, I don't know. I mean, probably for this special, I mean, he personally much more general. And probably for this particular situation, you could use this kind of argument to prove this statement, but that's not what he meant. OK. So let me just say a few words about why this is true. So what's our picture? So we have this book of eye bundles. So I'll draw sort of. So here's our original complex X sitting inside the manifold N. And let's say this is the surface S. And then we lift to the cover. So M sub S, the cover. And on the top, we have, OK, so here, I used X too many times, didn't I? OK, so over here, we have the original hyperbolic structure that was on the manifold M, boundary of M. And then down here, we have the skinned image. OK. And well, we have this result of Therson that says, if I look, so OK, so I have the curve gamma, which I'll draw as a dot here, and I'll draw as a curve in here. I have this result of Therson that tells us that curve gamma has bounded length. It's uniformly bounded length in the manifold. Unfortunately, we know that having uniformly bounded length in the manifold doesn't tell you anything about the length and the boundary. Doesn't give you any upper bound of length and the boundary. So what can go wrong? And so basically, there are sort of two things that can go wrong that could make this curve gamma be much longer down here than it is here. One thing is there might be some short curve, there might be some very short curve that lies below this curve, so this is some short curve gamma. And the other thing that can go wrong is there might be, this is a really different color, let's see, there might be lots of curves. Well, maybe they're not short, lots of bounded length curves. So these are the bad things. We want to rule out. We want to rule these things out. One, two, rule out both. OK, and why are these the two things that are bad? Well, this is, as I was saying before, we have this awesome model manifold there, and it tells us a lot about the geometry of three manifolds, and it comes from that, comes from that. OK, so how do you control this? Well, this is where the cores come in. So we have this sort of nice x sitting inside here. And what do we know about x? Well, we know all the things that we know about hyperbolic surfaces. So for example, we know things like the diameter of this surface is bounded away from the thin part. There's various things we know about the geometry of these surfaces. And then the other piece we know is bounded length, from this theorem of Thurston. So that's a very, very rough sketch of some of the ideas behind the proof. And let me just say a little bit about how you can do this more generally. So in general, is built three kinds of pieces. Eye bundles, air-based cylindrical manifolds, solid tori. OK, so this is the characteristic sub-manifold theory that I'm avoiding discussing. So there's a unique way of breaking your manifold into these pieces, which I am not being very precise about. But roughly speaking, what can I do? Well, I can take, say, some eye bundle, and then I can glue it to some three-manifold that's, say, some compact three-manifold with boundary. Or maybe I'll draw it slightly differently. Over here I have some, say, a cylindrical three-manifold. Oh, I'm drawing those there. So here's the boundary of it. And I can take this boundary of the eye bundle, and I could glue it to some curve in the boundary of the a cylindrical three-manifold. And then I could do the same thing over here with some other a cylindrical three-manifold. And maybe this three-manifold has some other boundary component. Maybe I'm doing some eye bundle. You can just piece these together. And what's the point? Well, the window is this part. So this is the window. The eye bundles are the window. You can see through them. You can push the curve from one side to the other. And the general version of the relative bounded image theorem says that if a curve is homotopic outside of the window, then you get this bound.


Good day, fellow investors. Yesterday we discussed the shipping sector and as promised today I'll give you a shipping stock, a very, very interesting stock. A stock that would make you invested alongside Norwegian shipping billionaire Magnate Friedrichsen. He has about 11 billion so he has been investing only in shipping for the past 50 years. More areas from GLNG, tankers, marine harvests, the salmon business, etc. So he is diversified so keep that in mind before investing in a stock like Flex and LNG. But Flex LNG is also an interesting stock upside of LNG trading around the world more demand for gas. And it might be very, very interesting because the upside is really, really high and you'll see that. But there is always, as it is shipping, the risks of downside because the situation in shipping can become very, very terrible for some moments in time. So let's start with the analysis. So we can learn more about the company in this 3-minute video and it will really explain what the company is doing, what is the upside, what's the downside, what are the risks and what is the investment thesis. In the 20th century oil replaced coal as the main energy source and since the beginning of the 2000s, there's been a gradual transition towards natural gas, the cleanest burning and most environmentally sustainable fossil fuel there is. According to BP, natural gas will overtake both oil and coal as the biggest fossil fuel within 2030 due to its clean properties and features. In recent years, LNG supply has increased rapidly and has more than doubled the last 10 years. A further increase is expected and in 2050 the world's energy demand is estimated to be twice as big as in 2000. That means even greater demand for LNG. According to Bloomberg estimates, close to 100 million new tons will be sanctioned in 2019, which is 25% of the existing capacity in just one year. The process of natural gas production begins onshore where the gas passes through factory pipes and is cooled to negative 162 degrees. This decreases the volume of the gas 600 times and makes it easier to transport by ship. When it arrives at the import terminals, the LNG goes through a re-gasification process before it is sent through pipelines to the end consumers for heating and electricity. Today, Qatar is the largest exporter of LNG, while Japan is the biggest importer. Going forward, the majority of LNG supply growth will come from the US, while there will be a gradual increase in demand from Asian countries, meaning longer sailing distances and need for more vessels. There has been a revolution within LNG carriers over the last 15 years. Flex LNG's efficient vessels use 50% less fuel and have 30% larger cargo capacity than the steam generation. This provides customers with the lowest transportation cost in the industry. Therefore, Flex LNG is able to respond quickly to current market needs and effectively deliver large LNG supplies to customers. Right Ships Flex LNG's fleet consists entirely of 5th generation LNG carriers with a modern two-stroke propulsion system, providing a substantial reduction in transportation costs. Right Time The LNG shipping market has rebalanced with higher charter rates and utilization levels, as well as increased interest for longer term contracts. Right Market The LNG shipping market has very strong long-term fundamentals due to increased demand for LNG, emissions focus and commodization of LNG, resulting in more trading. Right Sponsor Co-invest with the most successful shipping investor around, with evidence track record from Frontline, Golden Ocean and Ship Finance International. As I said, the owner of the company is Jevron Trading, indirectly controlled by trust established by the billionaire John Fredrickson for the benefit of his family. He owns a lot of ships across the world, Golar LNG Frontline, etc. So he really knows what he is doing and he is betting on the company. And a good quote for him that explains how shipping is. So he says, I've been in the market in tankers for 50 years and I like it. He says, for me, it's still fun. It is the only sector where you can earn back a year's losses in the space of a week. So this is shipping. You lose, lose, lose, but then you make it big. Is it time that you make it big with LNG? We will see now. So this company is a company set up 10 years ago to really take advantage of the growth in the LNG liquefied natural gas shipped across the world. So they made the private placement 2018 for 300 million at the double the current valuation. So you can invest now practically half the price that John Fredrickson and his peers invested just 10 months, 12 months ago. When it comes to risks, the risks are very well explained in the annual report. There are many risks, operational, building ships, market risk, credit risk, interest rate. So over supply of vessels, if the LNG market doesn't grow as required, attractive funding, if they can finance all those boats that they are built, they are now building still eight boats to have to be built. Five vessels have been built and that's always a risk. Even if for now they have found excellent financing terms. Discount on equity is not that high, but significant. 529 million market capitalization on 827 million of equity. So that's a very good number of shares, outstanding 54 million. The equity comes from the owner's investments where they pay shipyards to build those ships. So it's not like something without a margin of safety we can say, but still with shipping you never know. Depends on the spot rates, vessel values depend on the rates they can get when shipping. At the end of 2018, there was 500 million in debt, but more debt was issued recently and will be probably issued to continue with the financing of those ships. The biggest risk is if things are bad temporarily in the environment, the debt covenants get breached, the lenders will ask for more money and that's usually when a shipping company doesn't have more money. So there is always the risk that the owners recapitalize the company and dilute you at the worst time in history. However, on FLNG there is a lot of potential on the company. For example, at current spot prices around 50,000 or lower than 50,000 per day, what the ship earns, the company breaks even. However, if spot prices reach 200,000 dollars per day, which happened I think at the moment in 2018, each of FLNG's ships will make about 54 million dollars per year in free cash flows. Multiply that by 13 and you can see that the company can make more than the current market capitalization in just one year. This is investing in shipping. So zero making money now, but if there is a crunch and if there is a lot of demand for shipping liquefied gas across the world, then this company can make more than what? 700, 800 million dollars in one year. Repeat, the market capitalization is crossed close to 500 million and that is free cash flow after everything. This is the upside and this is why Friedrichsen is invested in shipping. As you can see, rates have been also higher than 200,000 dollars for a moment, September, November, and you never know when those will spike again. The thesis from FlexRNG is that there is higher demand for LNG, higher supply of LNG coming online too with all the projects in the United States and across the world and there will be a high need for LNG vessels to ship that LNG across the world and there won't be enough probably in 2020, 2021, 2022. So we might see that spike of let's say 500 million that would probably increase the stock price 5 or 10 times. The risk is always what if those rates stay below 50,000 then this company will probably never make any good money. That is the risk reward. See how it fits your portfolio. To conclude, FlexRNG is really a risky bet but you have to see how does that fit your portfolio whether you can sleep well with having such a stock in a portfolio where the potential for 50% loss and then a takeover 100% loss is really there but there is also potential for 5x upside over the next year to 5 years. So that's something you have to see. Okay, am I ready to do those things in my life? Am I ready to spice up my portfolio? And then see, okay, what can happen? Over the past 10 years it has been a disaster for shipping so you have to think, okay, I might be in it over the next 5-10 years try more different ways and on one of those you will make 5x your money. As would Friedrichsen say, shipping is an industry where you can make up for years of losses in just one week. That's how it works, that's how those spot rates explode and ships suddenly make tons of money for a period of time. That's investing in shipping, it's a crazy environment but see how this fits your portfolio. So check my stock market research platform to see whether it is something for you. There is a 28 money back guarantee so if it's not something for you, simply ask your money back.  Thank you and I'll see you in the next video.


En we creëren heet om je huis te lopen. Dus een beetje over de producten, we testen met een robot framework.  Het is een bedrijf met een Android en iOS app. We supporten veel verschillende protocolen om hier van een apparaat te bevinden. We kunnen ook met apparaatjes van andere vandaars gebruiken. De meeste feature is zone control. We kunnen de temperatuur in de ruimtes controleren, individueel en niet als een hele systeem voor je huis. We maken ook de apparaatjes controleren. Het is de onderdeel van de apparaatjes die je ziet. Dat zijn de elektronici die de HMI geven. Controle de burner, pumps, fans, valves. De apparaatjes is met een businterface om de thermostat te connecten. Het heeft ook een veilig kritische deel, omdat we meestal gasapplies zijn in de sterkere regulaties. Dan een beetje over testautomatie, want als ik een businterface ben, als tester begon ik in een project van een prachtige product. We hadden een app en we waren aan het uitleggen. De manier waarom we dat doen, met manier testen, in ieder geval over en over, hadden we denk dat we iets meer nodig hebben voor dat. Dat is waarom we begonnen kijken in testautomatie. De eerste is waarom we want testautomatie. We willen feedback. Als je iets vervolgd hebt, wil je snel feedback over wat je vervolgd hebt, of dat werkt. De tweede is, we willen automatisch een repetitive regressie test. Er is niets minder behoorlijk dan over en over dezelfde job. We hebben ook tijd om de release te creëren, want nu is het met app-developement, maar ook voor ontdekend producten. We hebben de omgeving om te updaten, zodat we heel makkelijk kunnen creëren fixes of expanden functie. Dat leeft ons in de onderdeel, dat we willen ingewikkeld hebben in producten-developement, en dat we flexibel zijn in creëren producten-configuraties en de levering van frequent updates. Hoe hebben we dat gedaan? Het was een lange manier voor ons. De dingen die zijn op de gedeelte, zijn wel welk knowne voor je. Maar als je testautomatie begint, het klinkt veel makkelijker dan het eigenlijk is. Wat moet worden gedaan als je met testautomatie begint, moet je eerst besluiten wat je wilt testen op welke niveau. Je hebt natuurlijk unit-testing gedaan door de developer zelf. Integratie-testing, het testen van partijen van je producten, en in de eind, de acceptantie testen, voordat je de producten releaset. Voor elke niveau moet je een testarchitectuur creëren. En wat je hier ziet, de testpyramide, als we op de testautomatie begonnen hebben, was het meer of meer of minder upside-down voor ons. Dus als je unit-testing hebt, dat zijn de meest makkelijkste testen om te creëren en te implementeren. Als je in je testpyramide hoort, naar de end-to-end testen, die testen, want je werkt met een zwart bocht, is het heel moeilijk om te implementeren. Je moet de systeem van de buitenkant veranderen. Je hebt niet veel kennis over de binnenkant, dus die testen zijn heel moeilijk om te implementeren. Daarom moet de meestal van de testen op unit-testing zijn, en alleen de end-to-end testen moeten als mogelijk minder zijn. Als we naar de robot-framing kijken, als we begonnen hebben, hadden we de testpyramide upside-down. En dit is eigenlijk de keuze waarin de robot-framing kan helpen. Een robot-framing behoort zich over... je kan veel interfaces overleven, maar het bedoelt de reale product van de functie. Als we naar de robot-framing kijken, een kleine historie, de robot-framing was eerst ontwikkeld in Nokia. Het is nu door de robot-framing, en natuurlijk kan je het gebruiken voor veel verschillende manieren. Maar het bevindt het als een test-automation-framing, dus het maakt je de toolen om proper testen te doen. Het meeste is dat het heel extendbaar is met libraries, en het bevindt je ook met goede functie-reporting. Bezins van de robot-framing is het besteld als een Python-modul. Dus natuurlijk moet je Python, en je kunt het easily extenden met andere toolen, ook Python-modulen. Bijvoorbeeld gebruiken we Modplotlip, PySerial, en je kan veel van andere deel nemen. We gebruiken Aconda als een package-management systeem als een setup of testenvironment, PyCharm om een robot-test en Python-librariëtes te rijden, die worden gebruikt door de robot-framing, en natuurlijk Jenkins als een build-automation-tool, waarin we de testen van bevinden. Dan een beetje over hoe we eigenlijk de robot-framing gebruiken tijdens de testen. Eerst zal ik een beetje over de smartroom-termostat vertellen, en dan zal mijn collega Windel over en je meer over hoe we testen of de controle uniten. Wat is de room-termostat? Het is goed om een beetje van hoe het systeem functions, dus we hebben de termostat in de midden. Het kan de verschillende ruimte controleren met elektro-electric radiativels. Het heeft een buskonexie naar de applies. Natuurlijk hebben we de app en een backend om bevinden, en alle soorten parten. Dus als we het testen willen, dan zie je al wat interfaces naar de room-termostat. We moeten wel denken over een systeem hoe we het testen kunnen. Dus hier in deze foto hebben we de room-termostat, de verschillende modules die erin zijn, de main-control uniten, de wifi module, de HX8 module, we hebben nu de ZigBee. We hebben natuurlijk de connectie naar de applies, we hebben een backend connectie en we hebben een app. Eerst hebben we besloten, ja, toen we besloten over de testen, we hebben gezegd, oké, als we integratie testen, we willen alleen de room-termostat testen. En we willen de app separate testen. We hebben ook een testset te testen samen, maar dat leeft ons met de volgende setup. We hebben de app gestopt, we hebben de HX8 module gestopt, want dat is externelly gevolgd. We hebben gestopt, of applies, en we hebben alles geconnected tot een testexecutor. Als we de robot framework op de top van dat hebben we een testarchitectuur, die we hier kunnen zien. Op de top hebben we of testcases, die we proberen per functie te geven. Aangezien dat, zijn er resources, robot framework supply's met een manier om generische keywords te defineren. Bijvoorbeeld, we hebben een resource om de room temperatuur op 20 graden te zetten. En we kunnen dat in alle verschillende testen gebruiken. Met de resources zijn we heel handig, dus je kunt het uitleggen, of je hebt een heel mentaal testcase, want als je iets veranderd in je logiek, kan je het in de resources veranderen en moet niet veel testcases veranderen. Als we terug naar de onderdeel gaan, we hebben natuurlijk de robot framework zelf. En onder de robot framework hebben we de verschillende libraries.  Wat we hebben gedaan, is dat we een library hebben gecreëerd voor onze HX8-communicatie naar de radiële files. Dus we kunnen actief controleren hoe de user een radiële file gebruikt. We hebben een simulator die zegt oké, ik simulate, ik presse een button op de file en dan... Our library provides that to the terminal status, so we could give a reaction and robot framework captures the reaction and checks if that is the desired function we want. By implementing this, in this way we can set up a dynamic environment, we can... Sorry? I have a question. Before going to the implementation, can you give us a small example of what we intend to do in the previous video? Because right now you are describing what you intend to do, how you intend to implement in that figure. What we integrate here is the behavior between the whole firmware of the main control unit. Sorry, you wanted to know what we are integrating in this figure. What we are integrating here is our firmware of the main control unit and the firmware of the Wi-Fi module. These are both supplied by ourselves and we want to be sure that they work fully together. Is that... And to end testing is... And to end testing is that we also include the app, so we change something on the app and we want to know what happens. For instance in the room, the user changes something with his or hers app. Okay, then back to the implementation, so we built a library for every interface we have. So here we can create a setup, for instance our house has four rooms with four thermostatic radiator valves or with only one thermostatic radiator valve in a room, multiple radiator valves and so on. So we can differentiate in how the setup is the user uses his or her thermostat. Also we have, on the other hand, have simulated or appliance connection. So we can simulate different appliances users have an open-term appliance for a competitor on-off appliance or also different appliances made by ourselves. Then in the middle we have the API, the app users. And we also have a debug connection by which we can control the device itself for instance to let it reboot to certain modes and so on. On the first slide about how we, how you should test and the bottom, it said create a testable product while for instance this debug interface is very handy for us to automate or test and it's really necessary to do good testing with our product. Then at last from my part a little example about how we handle the different interfaces when you send something out with a robot framework you expect an answer back the easy way to do it is send out a comment wait 5 seconds and read back if there is a result but your system behavior changes over time as you expand your product and make a more complex setup so in that sense testing should be a little dynamic in the beginning we counted a lot of failing test because of small changes small timing changes and so on when we looked better into or a test we found out robot framework has a very nice keyword what is used over here and wait until keyword so please you ask robot framework please repeat this keyword, this part so read the line from in this case the serial interface check if it's successful and then continue if it fails it checks again in 1 second so you can say in this part we have we tried 10 times with intervals of 1 second we check if the profile has been set in this way because we are also we have a little bit external dependencies for instance what is used here the setup of a wifi connection you cannot exactly predict the behavior you are encountering so we used this keyword a lot in our interfaces and our testing became much more stable than it was before this was it for my part my colleague Wendel will continue on the appliance control unit alright well thanks everyone I see a lot of people so that's good news so you care about testing and I think that is good because software always contains bugs and that's not so nice so I will talk a little bit about the appliance itself you can see it here so this is a schematic overview of a home we have a bath tub and some radiations for the heating house and in the bottom you see it's a combination boiler so it provides you with warm water and that is what I will zoom into so if you look at this boiler this is a more or less schematic overview of the inside of a boiler so it's not it doesn't have a lot of IO it has a fan, a pump, a valve you see here and then it will connect to the radiator of to the warm water supply also we are very fond of acronyms so over there you see the dhw for example that means domestic hot water and so we have really a lot of acronyms but I will try not to use them and to control this appliance we are developing a so called control unit it's a piece of electronics with software and it controls the appliance and what I will talk about now is how we tested the software of this control unit so what is the software architecture inside this control unit we have made use of a hardware abstraction layer which means that we can run on two different platforms on top of this hardware abstraction layer we have the behavior of this control unit and we have some application behavior saying when a certain request for heat comes in we have to do this, move this pump to this valve that kind of things and we have two other main parts which is the bus communication it's a sort of serial communication and a burner control which controls the flame really the burning of the thing and for the microcontroller on the right that is what we will put on the control box itself so if you go in the right flow the end result will be a hex file which we can flash on the microcontroller and that we use CMake and IAR for IAR is a compiler proprietary and on the left we use GCC and the result of that is that we have a DLL and actually both we use for testing so the right we flash in the device and we test it on the hardware itself and the left we also can test of course on the left you have to deal with we have some IO and some interfacing so you have to step that out so why did we do this why would you create a PC build well to my opinion it has a lot of benefits to do this because when you create your code such that it works on two platforms your code is more cleaner so it has less pollution of header files for certain targets you can test actually really a lot of your functions without that the hardware is already available you can test for example the communication protocol and also you can accelerate time so if you flash it on the real board you really have to wait for example we have functions that for example every day we should run a pump so we put it in the lab we wait one day no it didn't work and if you do that on the PC we will know faster if that function is correct so at the moment we can accelerate about 26 to 50 times so it is pretty good so we can simulate a day in half an hour and that saves us time of course there are also disadvantages the obvious ones you have to do this work so I would say do this next to that we simulated the control unit software itself on the PC platform we also created some dynamics in simulink so it's a crude approximation of what a system will do in reality we've done that with simulink and then also this dynamics are then there is code generated from this dynamics and we also put it in a DLL so we now have two DLLs so how did we test this two DLLs with robot framework so we have written our test in robot framework I will show that in a minute and then we have written a custom robot framework library which connects the two DLLs that I just described and one cool thing you can see here is that we can run this test.robot we run it through robot framework and we can configure if it runs on the simulated environment so to say or on the real thing so what we can do is run the test first on the simulated environment which is of course close to reality but not a real thing and then when we are satisfied we can do one last test on the actual hardware and validate if the product behaves as we want so a little bit about the simulator set of how this works what we have done is that we we run the physics of the physics DLL and we copy all the values that are measured we put it to the control unit simulator we let the control unit do its thing and then we copy the outputs of the control unit again to the physics and this goes on every 10 milliseconds it is repeated we implemented our libraries in python by the way so now for the live demo effect yes so the backup slides are there but I don't know if they are needed so what I want to show is do we need to duck no, it will be okay so the function that I want to show you what we are going to test is what we called the chimney mode it means chimney means the exhaust on the roof of a home and what happens is we install a appliance in a home and you test this by hitting a button and it goes full power and then it shuts down and you know okay everything is connected correctly so it is a sort of a test mode so we are going to test a test mode so as Alex already said we used a pie charm to edit our tests so I will first show the test I am going to run so here you see the robot framework syntax if you know robot framework this will be familiar to you if you don't know it the intention of robot framework that these tests should read quite naturally so how it works is that you have some keywords which indicate some steps so what we did we grouped our test suite into logical functions so we have about 13 function groups en this is group 8 and then we have a test 1 of this function and this test the chimney mode and what it does is you can read what the steps are to do this test so we set it to 100% then we verify that the function is activated then we remove this request we check that it is gone and also we check that it is going back to stand by mode so actually a pretty simple test what you can do with python for example that is really handy you can control click and go to a keyword and then this is a keyword which sort of implements this step and in this step you see okay if you want to wait for stand by you have to do that by looking at a certain variable and it has to be a 203 for stand by function we have this status code so we'll wait for the 203 for say 110 seconds it's quite weird unit but we use that so now I will run this test for that we use con emu to run our test because to run a robot framework it is handy to run it from the command line en as you see 3 tests are executed from this chimney test en if everything is well I hope I don't know how to do that so now we come also to a one particular nice feature of robot framework which is the report you can see the report here it is a log of the test we just run of course I don't have any hardware here so this is the configuration for the simulated version of the previous setup you see that you have all kind of statistics how many tests pass, fill how much time it took so if I zoom in on the chimney test you will see here in the report zoom in a little in this report you can see exactly the same steps what you have as described in the test green here means ok red means not ok in this case it's ok if you look into you can also expand this keyword and then you see that for example this keyword we used wait for emsverbal which wait for the status for some time you can look really into it and also what you can do is in there you can see what messages were passed between the test and the control unit so that is really normally when it's green you don't look at it when it's red you want to know hey what happened and then this comes into play and also here you can toggle between certain levels of in the report and one thing we did was let's see so since robot framework is written with python we also used the mudplotlib library to include some figures of the temperature say the temperature is over time so since we started here a test mode which goes full power you see that the temperatures went up quite a bit from 20 to 40 degrees of course this is on a simulated environment so there is no way of telling if it is precisely as it will happen in real time but it gives you some a good feeling of what goes on and in the end you see that the temperature stays the same because we stopped the appliance so it will be hot for some time you can see here more at the top this is the burner power in percentage so how much power did we apply to this system so first it's a little bit that's actually a little bit weird but we also have the test mode itself so I don't know what that first thing is but you can see here what the system did over time so that brings us to the summary so what did we learn when doing this for the last I think year robot framework is a good tool to test embedded systems you can have keywords you have a lot of libraries you have python, ecosystem all these things you have the python, IDE and the test itself can be really readable and also what we did was we run the test on the host system which accelerated our testing times what we also learnt was that if you have a lot of tests you also have to maintain these tests so that's also what Alex said in the beginning with this pyramid really use a lot of unit tests and don't use robot framework too much I would say because then you have to maintain all these tests so if you have say 300 tests I think in our case we have maybe 200 different test cases that's a lot of test cases and if something goes wrong you have to really search where it goes wrong so maybe you don't want to have too much of them and also if you have we also developed our own libraries those also contain bugs sometimes so yeah that is we want to keep that as simple as possible so that was maybe what we learnt what we want to improve where we want to go we want to be able to test the room thermostat for example with multiple different appliance types so that we can check if the software works against the variant of other hardware and in there we want to better organize the tests and for the control unit part what I really would like to do is speed up the simulations even more to get the test time down and also make this test more robust to variants of products since we have a lot of different say we have a lot of control boxes which are all small variations and what I would like to do is we can have one or maybe a couple of test tweets but that they run and that they can handle this alright 10 minutes left that's good and we have time for some questions so thank you almost now last thing you were saying about speeding up tests we've got very similar stuff going on here these are our host development things but you can sometimes explicitly build a set of tests where you take time out entirely so there is no virtual time and then you can run them as fast as you like it's simply how many logical steps rather than speeding up simulated time write a test where time is not one of the variables that can make a huge difference yeah that's an option but maybe that's more a unit test what you would then write sorry so the question was to speed up time you can also yeah the question was you can speed up time but you can also eliminate time right so currently the system that we created is really focused on time so that would be hard but I would do that what you say in a unit test I mean just we've got an example here where we're moving a strangely similar piece of hardware to you where we're simulating moving a valve and there are a whole bunch of tests we can do which merely make sure it does the logical correct steps timing is not relevant to those you have a sequence of steps yeah alright yeah so you've covered the flat of functional tests what about non-functional ones like do you have these ones is it somewhat useful for banks so the question was do you have these are functional tests functional tests and you mean non-functional tests can you give an example of a non-functional test no we don't have we don't have the non-functional test we don't have the performance of the boiler we still do that in a lab environment so that we have the real thing we test that so then we really know what the performance is so it is mainly focused on the functional things yeah do you evaluate the correctness or the fullness of the test I didn't see any mentions to code code no oh yeah so the question was how do you evaluate the completeness of the test suite yes so we don't we don't do any mentions I don't know if so we don't use code coverage yet but I think that is a very good idea to do that so then we can see how much we cover we do the code coverage we do that when we run a unit test we do the code coverage this test we don't have the coverage enabled we should more or less have requirements coverage with this and that's very hard to track at least in the way we were yeah obviously people don't change their central heating systems very often so how long do you expect to support these products internet things while I buy today do you expect to support these products so the question was how long do we support these devices how long do we support it 10 years and appliance is longer there are also regulations for that how do you evaluate the simulated environment is similar to the real devices so the question was how do you the simulated environment is equal to the real devices so how do you do that we did some measurements in the lab and what we did was the simulated environment we applied the same inputs and compared the outputs to what we have measured in the lab so that's basically how we did that anymore oh yeah in the back so the question was did you find in reality some extra things that you didn't find in the simulated environment that's a good question so in our simulated environment our temperatures are really smooth we don't have any noise so in our reality there's always noise so so this is something that we found in our labs for example we had some noise on our sensor that we didn't spot in the simulated environment because everything was maybe too ideal I need to fix it exactly there so we can shake hands we thought about that so the question was have you tried to simulate the noise in the test environment I'm a little bit opinionated about that because I don't like randomness in the test so if you would do that then you would add some random variations to the test and then you have the situation in the test once it fails, you run it again it works I don't like that but you could do that so I think we should do something like that so you can get round I agree what you say but it's definitely going to work if it gets through the 10,000 test and then you can go with the randomness so I think what we want to do is what we also want some random inputs to check if that will disturb it so that's more question for Alex the question was what is the role of the backend and do we test that as well well that's a little bit an organizational organizational answer we have there because what I showed is the part of the product we create the backend is maintained in a different team we use for different products so they also have their own test but what we do continuously in our integration test is we use the backend in the test so when things go wrong it also could be in the backend so that's it's not ideal in the repeating the test cases and seeing what goes wrong but just to be sure we don't miss anything we use it actively in our testing yes we also test your question was if we also test the api and yes we do because that's a way a robot framework interfaces with or thermostat also by using the api and setting comments like the aptos yes your question was if I understand correctly how do we manage the different platforms we run the test on the simulated platform on target testing those are the finds which we can give to a robot framework on startup so we have a configuration file which configures the environment you want to test but the actual switch between the platforms is in our python library so a robot frame we did not implement any switch actively in robot framework but we implemented it in the python code ok