Thank you guys. Thank you. So our presentation is called the startup. Why ember? It's not a typical ember Presentation like you're used to it's not that much about the code It's more about how we transition to use ember before we didn't use ember and we think it's awesome. So so This is me. I'm Nora. I'm French. So pardon my English my French dish be nice It's my first talk in English. Yeah, so I've joined the company in last October I've been there in show my homework for almost six months and Basically when I joined the company, I didn't know anything about ember I was kind of a senior developer in France but like a full-stack Ruby on Rails developer and when I came to London like it was a whole new word for me like Okay, you can have to stack and that's just in Ruby like ember and Ruby and I just discovered ember But and with the help of Sam and Miguel that is actually in the audience today. So, yeah, that's me So my name is Sam. I'm from Belgium. I joined the company about I think next week. I will be there for one year I was there from the kind of the beginning when we did we did the transition and it was quite a journey So we work for show my homework Just want to give you a small introduction. What's what is show my homework that was showing my homework? It doesn't have to be we save you time so you can focus yours where it matters Set reuse and edit homework in a click provide your students with instant feedback and save time marking with our Autograded quizzes and spelling. So basically what is show my homework? So show my homework what set up by a former teacher and it's basically to help students parent teacher to Set up homework and so just big platform where you can share Everything resources for the school and assign homework submit your assignment a submission. Sorry a sign assess and great. So, yeah So the previous tech before I arrived was a old Ruby stack with Ruby on Wales and jQuery. So really basic Performance issue, but we'll talk about that later So a big question why switch it was a working product It was a good product. There was a pretty much sold product, but there was a big issue in my Experience anyway for a new design. The design was really old really 2009ish and so that was one of the biggest things The scalability we were growing quite fast and I think the previous tech could not really keep up It was getting slow. It was getting hard And obviously we were a startup. So we need to keep up up to date with the latest technologies, which obviously is ember so So why why ember so I samsaid Before the company was just dealing with this code kind of old-fashioned app in Ruby on Wales and There was this performance issue and actually they were digging into how we can switch and what we should actually adopt As a new front end. So they were digging into that and Ruby on because we were using Ruby on rails ember where structure. I think like Ruby on rails am I wrong Miguel because you're you were you were there as a Yes Yeah, yeah Okay, so I'm questioning I'm questioning Miguel because Miguel helps a lot in switching from old-fashioned stack to this new stack and Obviously participating participated in taking the decision to switch to ember So ember is good for scalability as some say we do both the user base in one year performance. That's amazing and Actually easy to maintain because now we have the core in Ruby and we have the front end So it's really too dedicated The API and the front end so really you can have two team or full-stack developer working on that Yeah So we work with Miguel which is who is a Contributor to ember so it's really really help a lot because we really have like the cutting-edge front-end Structure we can ever dream off. So yeah, that is really cool to work with that and Yeah, I'm boss here lie again really good easy deployment. You cannot be as fast at that We just a run a common on slack and no not on slack. That's right. Yes On the deploy and just yeah mind blowing So then was a big question how are we gonna do this from a really old framework, which was not updated in a long time big question rewrite the whole thing from scratch or implement try to implement it in a working website and obviously, I think there was a lot of thought about it to actually do it in the current website and just start gradually implementing it because it was It was a working product. So you cannot just take it offline and start over So there was this kind of transition They were hoping to gradually do it which they said no some people just said no, let's not do it We start from scratch. We just said build a new product use the old API because all the information is there Try to make it in Fairly small amount of time. We only had three months kind of three months to do the first product which we Basically almost finished and then started all the because we still had to Maintain the old API. It was not easy to maintain all the API and the new way to to write new endpoints for for the new ember But eventually after a lot of struggling we did get through it So we started from scratch to a whole new working product with the latest technologies ember We did of course use Mirage and acceptance tests in the beginning Mirage is one of the most awesome tools just to build your application And then just or you just mimic whatever was the old API and then just after a while Just switch over see if it's working with the new with the old API and then at the same time Updating that API without breaking the old the old website who? There was only one expert Miguel and two JavaScript experts all the way in the beginning Which actually one of them is a regular guy who comes here Mario? He was one of our first JavaScript developers there so The question is so what we didn't really point out is like then the switch between the old and new Stack occurred last year May around May And actually the team was really really tiny just three people and they really have to hire But has he may know how you're hiring process is just take really long So how do we grow up to handle such a revamp because actually the the management team gave them Three months to build the walls to revamp everything which was nearly impossible So arriving in September because this is the beginning of the school year The product wasn't really stable really stable actually in the front end, but not in the API So they hire a lot of new people. So now we have a big new team So seven full stack developer to freelance to DevOps to product manager one QA guy Which is really get a really young but really really I just say efficient one designer in the house so if you join you will be in this team and To make it more How do you say efficient on a daily basis now because we are 11 people we have I do say we have Split the the big team into two teams. So you have the core team and the future team So the future team is basically working on the new feature and caught him is just maintaining the whole stack Front-end driver. Maybe when you want to explain that so yeah, we have front-end driven development So that means well we both of us are in the in the feature team So we are building new features and as it was kind of hard Building the existing features because you you already have the back end and it's quite hard to I mean We did do it and in Mirage everything was working But then we switched to a real API which was existing which you cannot just change and it was just a weird way of thinking to first start from an API and then work to Mimic everything in Mirage So now at this point we are working with Mirage so we built the whole feature or The most of the feature especially the endpoints in Mirage and when it's working when it's working How we expected how we wanted to work then we're starting working on the back end Yeah, that's what we do Actually currently it's really hard actually to have two team I mean to kind of developer and really working together front-end back-end and just say you know what back-end just wait Until we really implement that into the front-end and that is a big new thing for us and we are still working on that So now we have two weeks print Basically, it's pretty new for us because we have been growing so fast. So we try to tend to as you say what was too to explain but sometimes Just extend for some reason because we are always I just say overbooked Feature flags so this is a really cool new thing we have implemented lately so Basically, you just release in production as soon as possible You are not waiting like few months before releasing and you just hide that from the teacher student And whatever just for your deaf team So yeah Travis is running on Github. I mean As normal as it should be So As I mentioned we are or we were at least a really small startup we are growing It was not the experience I hope for when I arrived in the sense of we did make a lot of mistakes Just gonna sum up some of the mistakes in the hope you guys if you ever try it or you know work with Ember Keep these points in mind Try to be up-to-date with Ember Jazz Because we had this problem that a certain point as in all frameworks It will update at a point and we were getting behind and then our good friend Miguel had to jump in and do every single Update one by one and then release it and then go up to the next one So now we are trying to maintain it as good as we can we are getting behind again But we are trying to get it get it right Then we had a lot lack of testing Which is actually a bit of a shame because there are such a good testing environments in these days We are using Q unit on the front end, which is really really nice Obviously all the Q unit will be tested by Travis Only when travel Travis passes then we can move on to the next stage or release it We recently started with testing our components as well because before we only tested our Acceptance test which was actually nice because you actually do the whole process as a teacher a student or a parent Which is pretty nice, but we didn't extend it enough There are a lot of things that were just ignored like some tests were Really small and some tests were really big checking if there was a Question mark in a sentence or like really stupid things is something that actually I regret that we didn't start from the beginning Because now I've started rewriting all our tests and it just takes so much time Document everything you do There is we had this problem that I was doing a code review and I was saying to the guys like we already have this whole Component the guy just rewritten a component exactly almost exactly as we had it before it was working We did write it in a proper way that it is reusable for multiple things to use for and The guy was just it's just a waste of time if you don't document your your things new people coming to your company If they go on your github page on your gift on your wiki page They can read all the documentation and that's how it should be when I started there. There was nothing. There was just one deployment command and I Don't even use this this command actually what help below is our code review Process I've really really changed over the past few months so before we were like reviewing each other code but without really being enthusiastic about that and We were basically searching for the small tiny styling issue like just code mistake and gs in but now we have cut climate we have For Ruby Ruby we have Rubik and stuff So in Travis so it's really nice because now when you are reviewing codes you review the logic and the strategy So you can actually detect if someone has just copy duplicating components. So yeah, it's participating in really improving our our code basically The next one is not a mistake. It's actually something really nice Which we have been looking for for a really long time We were we have this platform where you have a lot of options to choose from Creating a homework selecting classes selecting students Selecting dates all of these things which we used select two for which was a Plug-in an ember plug-in which was actually just a rep around jQuery Which was working fine until a certain extent and then if you go if there were some things You just couldn't do and then a really nice guy just said, you know what I'm just gonna write my own native ember Power select and that was it was a bit of a pain to update everything But once it was done it was so nice and it was really cool to have kind of Priority release for us because we were just liking basically Miguel saying, you know what this doesn't work for us He said, you know what just update the latest version of on the poor select and it was live It was really cool Updating Mirage, which we are still doing Mirage is an amazing tool.  So We are still outdated with Mirage, but that's the the next thing next thing on the list So that's one thing we shouldn't really keep up and then we have our internet explorer our best friend of course and Rendering our mobile devices, which is not fun, but we'll have to deal with it Yeah, because as you may know in some school, they are still dealing with IE 6. No, I'm joking but really late version early version sorry of IE and it's just awful awful So yeah, we are hiring. We're always looking for talent developers. This is our amazing team So they are really overbooked. That is why we are just two of us, but just you know what? We are hosting this umber how do you say project nice and it will be really cool because actually the office is really cool They will be really nice food drinks. I guess so and yeah, so if you want to join You are free to come to us So, yeah, that's about it if there are any questions, hopefully not the heart Yeah, I don't know if you can so basically what what happened before The team grew that fast. They were just a few people and the best engineer was kind of the CTO if it makes sense so Our CTO is Michael. He's a genius to be honest He's kind of a DevOps full stack guy But now we have two different team and we have kind of two head of I don't know hide of Engineering like do the head of engineering core team and head of engineering feature team. So, yeah We're basically to answer a question. We don't have a real CD. Oh, no Yes So how dynamic is that so I think Until now it was The API that was driving say we will build in the API and then we'll say to the front and a you know what designer Just do that and copy it in Mirage But now so it was dynamic But maybe not that dynamic because we were not asking as the right question about loading side loading you go loading and stuff So now we are doing that the other way building in Mirage and really adapting And improving our code and an API So basically if the front end guys come to us and say, you know what it doesn't work So can you just can we just see them and we view as a decent response to payload and stuff? So we'll definitely adapt it as we go and as we learn about like yeah page loading and stuff So we try to do that to be really dynamic the the old API the really old one is still in use They did update it but not enough and this is still a work in progress So they are still updating the old API, but in a better way Even though they are still behind on the version of Ruby it is a work in progress and it will be almost the same as That's If you have an existing API it is quite hard, but like we said if you have the opportunity to to Create a new feature which will have new endpoints My advice is just do it in in a in Mirage because sometimes it's just gonna make it easier to write rewrite Change small things and when it's done when you have the proper result you want then try to I don't know What's the back-end framework you're working with? Yeah, but then just try to replicate whatever you're doing in rails because whatever you can do in JavaScript for sure You can do in rails Mm-hmm What Miguel want to talk now Yeah You And I have the feeling that it's really hard actually to switch our mind and say you know what we are the front end We will be drive driving because it's kind of all I mean we are still old-fashioned in a way because we still consider really Developer as back-end developer and this is not true like I'm I'm a Ruby on rails developer And now I'm just doing and on drawing doing JavaScript that that could be funny, right because a Wide ago everybody was like yeah, you know what it's a back-end the most powerful guys and we'll be driving driving Exactly exactly Exactly Yes, exactly to be honest with you We have been working on a feature lately like kind of a book library and I was driving I was the girl from the API driving and I was like really proud of myself But then we have to review the json response so many time We have Lose a lot of time on that and now we are on the new feature which is really cool Sitting planner for for for the classroom, and we are just front-end drive driving and maybe the future will be half the time Of what we spend on the last feature Yeah, exactly exactly You are mocking actually you are mocking in Mirage If you Yeah That what we need more front-end guys Yeah I I from your fix-to-take. Do I adhere? You should be like, work, work, work, work, work. I don't think that's going to be so great to have, perhaps. I mean, I don't know, that would be a waste of API gateway, but it's a bit dodgy in terms of how the interaction is wider right now. But it's been able to just take that one specification out of the mood at every point. It's funny, because last month I was using Slack as an API swagger. Like I was on this feature, I've just lose a lot of time on that. I was just copy-pasting my JSON response and slacking that to Samsung. You have to put that into Mirage. And now, today, this morning, it was the way, the inverse. Like it was, say, you have to do that into your API. And it's mind-blowing. You have no idea how much time we are gaining on that. You mentioned updating, is that updating the version of Ember? Yes, Ember, Ember CLI, which are key points. You really need to keep up, because to upgrade to Ember, you need to follow a few steps. And actually, if you are behind three, four, five versions, you have to do step by step. You cannot just upgrade to the newest version. You have to upgrade step and then again and then again. And for us, it's not just upgrading this one and this one and this one, because it takes a lot of time. It's upgrading this one, releasing it to production, and then go into the next one, which is kind of tricky. I mean, there are some cases that you have to change a lot of things, which is risky. But it's our own fault. Is that easier? Sorry? Is it kind of easier? To me, it feels like the later versions of Ember is easier to upgrade than the latest version. Yeah, I guess. It depends what you're using in your app. There are some things, if there's a new update, we don't touch at all. You have all the steps, do this and this and this, and some steps, we don't have to do anything. But some of the steps we do. I mean, if there is a new version of Ember Power Select, we have to rewrite our whole website, just because we are so intensively using this. You are doing very well. Sometimes things break, but hardly ever it will get to production. So a lot of times, stuff will break and we'll have to fix it. But it's like the transition. You want to upgrade one model, you upgrade it, and then you fix whatever broke, which is not that bad. I mean, sometimes it's a lot of work, and sometimes it's almost nothing. And we didn't talk about Ghost Inspector, which is really, really handy. Do you know Ghost Inspector? We are working on that, like on QA and on production. And we do detect a lot of issues with that. So basically, Ghost Inspector is a tool that goes through your website as a user and takes screenshots and finds things on the page. If something moves, if something isn't there anymore, it will report it to you. Problem we did is we only run it on production, which is already too late. So now we are running it on our QA environment. We just want to keep up. We just want to be on top of the versions, because I mean, I don't know if there is an automatically upgrading system. I don't think so. You have to do it manually, right? No, yes. To be fair, the long 2.4 was the first long-term support release, and that only just landed. Yes. So the idea of a long-term support is that you can safely jump three versions, four versions into the future. And you will sort of know what's in store for you when you make that big jump. There's kind of this guarantee. Yeah. If you could rephrase that question, would you consider taking yourself to the long-term support versions? Yeah, I guess so. The thing is just it's going to be the same than keeping up the date. You just need to know what happened and what's going to change and then do it. I mean, that's, if it's one time a big chunk or four times a small chunk, it's going to be the same in the end. My name's Steve. Yes. I think there's more seats. One more question. We are currently evaluating and using the number at the moment on the flexibility for a new project. So in terms of you guys learning, what were the most tricky things and do you have any advice for me? Honestly, for me, when I started in the company, on my CV, I said, I know Amber. Basically meaning I know Amber. I know what it is. That's it. I did develop some things in Angular before, before that a lot of jQuery and native.js. If you're a good JavaScript developer, I think you will get it pretty fast, the hang of it. Because it's a pretty straightforward framework. Our old application, if I would get the code now for somebody who is pretty confident in Amber, they will for sure know what's going on and how it's working. Because everything has its place. I mean, it is a full framework and everything should work how it should work. If there is a computer property, you know what it's about to do. It's not some name that you define yourself or a function that you define yourself. You can do that as well. But the learning curve was pretty fast, also because we had an experienced Amber contributor working with us side at side. So all I know about Amber, especially the first five, six months, I just learned from seeing Miguel work. And that's the thing. You can actually learn it from seeing somebody else work if you know some JavaScript. For me, my most common mistake, because I didn't know anything about front-end framework, I was just playing with a DOM. So I was asking the guys, hey, how I should grab this element on the DOM and say, yeah, you don't need to actually grab this element from the DOM. And it was quite funny, because I was a jikrary girl. And for me, it was a whole new world. But as Sam said, the learning curve with Amber is pretty cool, because you learn a lot. And maybe because I came from Ruby on Rails, it's helped as well. So yeah. Just for my curiosity, who here is a front-end developer, like mid-level front-end developer, and want to improve front-end Amber developer? It's all seniors, all seniors. So you are all seniors. So the rest of the audience is senior developer, right? No. No? I'm not very big in it. All right, all right. Because we do, I mean, in this company, we do learn a lot. And as I said, I was totally new to Amber, and we have the opportunity to learn. So if you want to have more info. I do think Amber, no. No. That's true. But I do think Amber, especially now at this point, Amber is a really amazing tool. And let's see what Angular 2 is going to do. But I'm still the biggest fan of Amber. I mean, I started working with it, and then I just fell in love with the whole framework. Everything just works, feels so natural for me anyway. And as Jamie say, Polyconf, I think it's really suitable for big app like this. Like really structured, I don't know. So it makes you feel really confident in what you are building to have all this framework. And yeah, it's really, really cool. So. You were not missing the Angular 2? No. No, not at all. I mean, it was the thing that I was used to, but then again, this, for me, it just works so natural.  Oh, sorry, I thought they were talking about NG from Angular. It feels like there's more promise than reality, isn't it? No, it's getting closer to that. On that, I can say that the team at British Gas have 16 Amber applications spread across the British Gas experience. And they are in a position where they want to invest heavily in engines just as soon as they're ready. So they're talking to Dan Gephart. Amber engines, for those who don't know, is available as an add-on that works with Emma Canary at the moment. So if you did want to jump upon it early, you could. But I think for a lot of teams, I think you need the kind of structure that British Gas have, where they have a plethora of different applications that share things in common on it. It needs to be mounted in a common code base. But I think the promise is really cool. And it should, I think, end of the summer. Like, you probably have it at a point where it's useful for most applications. As I know, we are considering it early on the way until embers can be loaded, sorry, engines can be loaded as in company. Because if they can, if you can't load as in company, everything is in the same bundle, there is not that, the advantage is not that complicated. No. I think with that, how about we can? Let's go. Thank you.


Hey guys, Drew from GeoWarm here again to talk to you about the MN02-LTE from M2M and its connection to the Honeywell Vista 20P for both communications and interactive. This also applies to the Vista 15P. There's a few other models, but specifically the Vista series. If you are wiring for communications and for interactive, this is your video. So go ahead and get your M2M MN02-LTE and get it connected to its antenna, like so here. Screw it right on to the connection here. That's ready to rock now. As you can see, the antenna is magnetized so you can set it outside the box or you can put it inside the box, top of the box, wherever you want to put it. Just make sure that you have it connected. Now what we're going to do here is we're going to go ahead and get this connected. Prior to doing this, make sure to power down your security system entirely. Back up battery and power supply. Just go ahead and do that just to avoid anything happening. Nothing is going to happen to you, by the way, it's very low voltage, but it could definitely fry the panel. So we're going to go ahead and get this wired in for power first. So we're going to be going to terminals 4 and 5 here. Terminals 4 and 5 respectively, ground or aux minus, I'm sorry, and aux plus on 5, are going to already have wires in them. More than likely keypads or zone expanders or whatever else the case may be that is needing to utilize aux power. So we're going to take the black wire. The black wire is going to be wiring into aux minus, which is terminal number 4, and then you're going to go ahead and get that screwed down. Now there's going to be other wires in there. As I said, go ahead and put this in there along with it. Make sure to screw it down tight, make sure all the other connections are still made in there. Nothing slips out. Now we're going to take the red wire and we're going to get that into terminal number 5, like so. Super easy to do.  If it doesn't have a plate, just kind of get it wrapped around the screw and then get the screw tightened down. Now what we're going to do is we're going to wire in for communications, which is going to be the yellow and green wire. So we're going to take the green wire and we're going to wire that one to terminal 24, like so. So green to 24, which is ring, and then we're going to take the yellow wire and that is going to be going to 23, which is tip. Now if these terminals, 21, 22, 23, and 24 on the VISTA panels, have wires going into them currently for phones, so T1, R1, tip and ring, if those four terminals have anything in them, take the wires out of there because this is the only thing that needs to be connected at this point. Now, we're going to go ahead and wire it for the interactive application.  The white wire is going to be going to terminal number six. There probably are going to be some green wires or something similar like that in the slot already. As I said, don't remove those. Just screw this down in there along with it. Number seven is going to be the orange wire. You're just going to take that and put that in there. If there's wires in seven, which there will be, don't take them out. Just put this in there along with it. At this point, all connections from the M2M have been made. We have power, which is red and black. We have the data connection for interactive, which is here, six and seven, which is the white and orange wire. Then we have the communications at tip and ring here, 23 and 24, which is the yellow and green wire. At this point, you're ready to get your M2M activated for communications and for the interactive app. We're going to need you to give us the serial number, which is located right on the top. It's a six-digit number. Also, do not forget when you get this device, you're going to get a manual. In this manual, it's going to have your username and your password to get logged into the R-Control app. Do not forget to document this, save this. This has also got other helpful bits of information on getting this thing wired in, backfed, et cetera, through the panel. Of course, if you have any questions, go ahead and feel free to leave a message down below and we will get right back with you. Thank you guys for watching this video. Once again, this is how to wire the Honeywell Vista with the M2M for both communications and the interactive app. Take care, guys. Make sure to subscribe to our YouTube page and click the Show More tab underneath the video, where you can view valuable links pertaining to this product, similar how-to videos, and our low-cost, no-contract alarm monitoring services.


The floor may not be in your old box. Usually, sitting outside and enjoying the sun is not my thing to do. You see, I'm a full-time gamer, and pretty much love every single one. Now, I know what you're thinking. Oh wow, he's just going to tell us about some horrible life experience he had with games, and tell us that he will never play them again. How cliche.  It's the only thing I have. I am truly alone. The game runs on Unity, and there is no way you will find it on the Internet. Don't even think about it. On the weekend, I would browse the Internet for cool free games until my eyes turned bloodshot. Usually, I would go on to games old, but every once in a while I got a tiny bit adventurous. That's how I found, alone, the game.  So I downloaded it and found all of the parts of the game in a little zip file. Control.text, settings.text, alone.exe, and an AVI file entitled, alonewatch.avi. It was about two minutes long, and I decided to watch it to see if it had any clues about the game inside. The video was black for about 30 seconds before it zoomed in on a person in their computer chair, looking at the screen. Oddly enough, it looked quite like my computer chair. And hey, it even had a can of soda on the disc, that's when I realized that I was looking at myself.  Someone was watching me. That was for sure. Still, there were three more questions left and answered. Who, how, and why? I looked behind me for a split second before returning to the computer screen. Unbelievable. The exe file name had changed itself. PlayNow.exe now stood before me. I knew what I had to do. I double clicked and prepared for the worst. The game started out in a small forest where you played as a man with a small handgun. A message popped onto the screen saying, Head to the house now. After it said that I looked up onto the badly designed hill and found what I was looking for. Oddly enough, I learned that if you stay idle without pausing long enough, the game starts playing itself. I mean sure the man walks at a much slower pace and pretty much walks like a mentally diverse child, but still he will inch closer to the house. Halfway to the house, I began to realize similarities between my apartment and the house I was walking to in game. Suddenly I began to realize that whatever had stalked me had great knowledge of every detail in my area. Soon I came upon the place where all of the homeless people sleep at night. I decided to pause there and get some rest. I quit the game and went straight to sleep. I had nightmares that night of whatever was stalking me. But I knew I had to finish the game. My musty apartment sucked, and when I woke up my neighbor was angry because there was a leak in his apartment and decided he needed to tell the whole world about it. I got up, turned on my TV, and flipped on the news to see if anything good had happened to America. That's when I saw something that made me gag.  I turned off the TV and went to the bathroom expecting to vomit my guts out. I didn't, and I immediately went to my computer to check the game. The exe name changed again, this time to notalone.exe. I was so scared that I began to cry, and immediately began talking about how alone I was, how my dad died and my one gave me up, and how I was raised in the orphanage for life because nobody wanted me. After crying I knew I had to play the game. When I started he had moved to the apartment doors. But this time I couldn't move my character. I could only watch. He shot everyone in the lobby. Everyone. He then reloaded and hopped on the elevator. Floor 7. My floor. I tried pausing, no use. Shutting off my PC didn't work either as it said that it couldn't close the game. As I looked away, the door flew open, and it all went black. I woke up in the ER, and they said that they had caught the man who did it all to me and everyone who lost their lives. I felt like it was all my fault. They said that before the killer was shot by police, he immediately stated his name. Dan Springfield. My father's name.  I couldn't know for sure. All I knew is that everyone was safe from him. I write this from the hospital with the laptop they gave me. Everything seems to be good. Wait. I hear gunshots. Are they sure they killed him? I think he's coming. I am starting to hear footsteps down the hall.


Well, hello and welcome. Happy Tuesday. Thank you for showing up today for my talk, SQL Like Joins in Base R. And I'm Monica Wahee and I teach data science and I do data science. And if you wonder what data science is, it's, I guess, science, right? I'm an epidemiologist and a biostatistician, but I do data science. So you've got a data question, I'm the person to ask. And so today, I'm going to answer your data questions about SQL Like Joins in Base R. Doesn't that sound nice that they're SQL Like? So why am I excited about SQL Like Joins in Base R?  I teach SAS, if you're having trouble with SAS, it's a hard program, but it's good to know it. But SAS does not do joins. I mean, you can make it join the way SQL does, but the terminology is not joined. The terminology is merged in SAS and how you approach the programming is different. I mean, the results is the same. You take two tables and you hook them up together and somehow, when you're done, you get one table. That's a mush together version of those two tables. And the deal is if you're doing it in SAS, you're using the sort of sort, sort merge that probably sounds familiar to you. But if you're doing it in SQL, you're like sort, sort merge. What are you talking about? It's join. I do left join and right join. Okay. So already we're all confused because there's these different sets of terminology, but regardless of whether you're using SQL or SAS or R or anything, you can execute these joins or do these merges and get the same data set as a result. It's just terminology. That's all it is. And the terminology follows the actual programming. And so that's why the terminology is different. Okay. So now let's go into R. Let's make it even more complicated. Okay. So R is open source. Okay. And SAS is not. So I love R, right? And when people built R, they thought about what people already knew out there and a lot of people already knew SAS and SAS like languages. So if you download and install R, you'll notice that it's pretty lean program. Like there's not much in it because it depends on you installing packages. Okay. So in base R, if you want to do joins or merges, remember the same thing, just different programs, you want to do that in base R, you're sort of doing it the SAS way. Okay. Because you have merge and stuff. Live people don't like that. So what they do is they say, I'm used to SQL. I don't want to use this base R. So I'll use this package. Deplier. Okay. Like I have on the slide. I didn't even know why they called it deplier. It's like pliers, right? Like you can use tools and pliers. It took me a long time to figure that one out. But the package deplier is a great package. If you're used to programming in SQL, you're just doing the same data management things you would do in base R or in SAS using, you know, it's just so you get to use SQL like language. Okay. And so if you're like, oh, I'm familiar with SQL. I don't know how to use base R. I'll just install the deplier package and start using it as if it's SQL and start doing my joins the way I used to do in SQL. Then go be my guest, go right ahead. But I don't really use SQL that much.  And also deplier outputs a different kind of data frame. It's called a tibble. I say tibble, but it's actually spelled I think TBL like table. And I don't like how that looks. I like how the base R data frames look. And so I tend to do all my data management in R in base R. And it's probably because I'm all sassy because I learned SAS. And so that's why I wanted to hold this event today and teach you is I wanted to show you, if you're sort of SQL-y and you're like, I don't know how to use base R to do these SQL like joins, I'm like, I'll show you today. Because it's really important because if you don't do the joins right or the merge right or whatever you want to call it right, you'll drop records or you'll lose data, you'll screw it up. So I'll show you how to do it and make sure you did it right. But before we go on, let me take a moment to invite you to my free online workshop, application basics, adding analytics to pipelines. So if you're like me, like I was just talking about, and you're from sort of a healthcare background or more biological background and you do statistics and informatics, you may have missed a lot of terminology in computer science and in business systems. And you might be wondering, well, why do I need to know that? Why do I need to know about these things? Well, it's because nowadays, we're expected to analyze data coming out of those applications. And if you don't know the terminology, and you don't know how applications are designed, or how they store data, how data go through them, then you can be very confused if you receive some data set and you need to analyze it. So that's why I'm holding this free online workshop, application basics, adding analytics to pipelines. Oh, I see. Somebody likes base R in the chat. Yay, base R. I love base R. All right, so R is an application, right? And if you sign up for this free workshop, what will happen is I'll give you the Zoom links we'll meet on Saturday and Sunday. I say each group session is four to five hours. That's more like three to four hours. I kind of shortened it so you can have a little weekend on you. But what we'll do is we'll have, I'll teach from this online course, which is part of my core courses for my group data science mentoring program, which you can also ask me about if you're interested. And it's this applications basics course. So we'll be going off of that. And then, but we're going to be, it's a workshop, we're going to be doing interactive stuff. You can do some networking and talk to each other and come up with new designs for adding analytics to pipelines. That's our theme. So please don't hesitate to sign up for this free workshop. And now we'll go back to the regularly scheduled program. All right, joins in base R. Oh, and you want to download the slides, I put the link in the chat, because then you get these links to these two blog posts, but there's not, they're not just blog posts. The blog posts also have GitHub code. So like our code on GitHub, which I'm going to demonstrate. So you want to get these slides so you can go to this blog post so you can get the code. All right. So like I was just saying on the last slide, in public health, a lot of us use SAS, but some of us use Python and R. And so if you use SAS, you're used to merge commands, but in SQL, there's a join command. And so if you're not used to the join terminology, it can be kind of confusing about the different types of joins. But I'll sort of go over it. First, I'm going to go over the joins we normally want to do in public health. Like I'm going to kind of bias it towards our normal work in healthcare analytics. And then I'm going to explain like why you would do the other joins and when that happens. So the thing that if you're a SAS user and you're used to sort, sort, merge, what you're normally doing, even though there's more to the coding, is you're normally doing a left join. And so, and you may not realize this, but I'm going to explain it to you using actually NHANES data as an example. Okay. So if you go to that blog post, one of those blog posts, actually, I'll go to it right now. This NHANES data, so just quickly, if you want to know more about NHANES data, I already have a video on it I did a couple of weeks ago. But, and I'll post the video, you can find it on LinkedIn if you signed up on LinkedIn, because it was an event a couple of weeks ago. So in the NHANES data, just quickly, it's surveillance data, it's public health surveillance data, and it's available on the web. And it comes in these little baby data sets. Okay. So it's like epidemiologic like interviews. So the like ask them, you know, do you smoke tobacco and about exercise habits. And there's also examination data. And what they do is they unfortunately save all of these data sets separately. So there's a primary key for the, it's like a study ID called SEQN for sequence numbers. So that's like the ID, like if you're going to do sort, sort, merge, that's what you would be sorting on. And then in each data set, there's like hardly anything, there's like just a few variables. So what that means is you have to download a bunch of them and join a bunch of them together. Okay. And so what's happening here is the data set you want to start with is the demo data set or the demographics data set, because that has a list of everybody in the whole study. So that's probably going to be the longest one you have. Okay. And that's, the idea is each one of these data sets should only be like a one to one join with that demo. Like if I'm participant 183, I'm going to be in the demographics data set for sure once. But I may be in the smoking data set or maybe not. And that's the issue, right? So first, we download the NHANES data. And here I set the working directory for this working directory here. So I could demonstrate this. And then because the data are in SAS XPT format, I'm using this foreign package to unpack them. So this is the native data set is this demo here. This is the first one. So I'm going to read that in. And that's called demo A. So I'll just show you it a little bit. Like this is it.  And that'll give you an idea what the column names are. So see, these are all demographics data. You know, here's the SQ, SQ, and that's like the study. All right. So I was working with some oral health people and I wanted to read in the dentition data, this oral health exam data, so called a dent A in that this is the native data set. So here we go. We'll read that in. And then if we want to know, here I'll just change this. I want to know the columns in it. We'll go look at those columns. Oh, look at all those columns. Yeah. There's like a column for each tooth. It's a tiresome data set. It's a pretty, I'm not very happy with the data set. But anyway, it's good for a demonstration, right? So you notice the SQN. So the issue is, let me just show you. So you know call names now. Now I'm going to show you N row. So N row is number of rows. So in demo A, the number of rows we have is 15560. So like 15,000 rows. Okay. But now let's look in dent A, right? So we know the business rules say, the business rules, that's a term you can learn in our workshop, say that dent A should not have more records than demo A because demo is everybody. You know, if anything, dent A could equal demo A, but it doesn't. That's the problem. So let's look at how many here. So there's only 13,000. So in other words, like we're missing, you know, somehow about 2,000 people didn't do their dental exam. That's probably pretty realistic. Okay. So why would I say we want a left joint? Well, the way it works is that I guess that people invented SQL read left to right. So the idea is, if you say two data sets in a row, like demo A comma dent A, then demo A is to the left of dent A. And if you say I'm doing a left joint, what you're saying is I'm taking demo A and I want to keep that solid and join on anything from dent A that matches. Now, if you do that, if you do a left joint the way I just described, what will happen is when you're done, when your merge data set exists, it will still have 15,000 or whatever columns, because it'll just have blanks here for anybody who didn't join who wasn't in dent A. Okay. And that's why they call it left joint is because the left side is forcing the right side to be that way. And if the business rules were broken, and I added like records to dent A that had SEQNs that are not in demo A, if I'm left joining, those won't join either. Like it's the one on the left that's like controlling it. So if you were the other way, if you went the other way, you were like, Monique, I don't care about who's in demo A. I only care about who's in dent A. Well, guess what that is? Well, if you put demo A first in dent A second, and you want dent A to control it, then it's a right joint. So I remember when my boss was explaining this to me, I had this boss who knew SQL, and I didn't know SQL. And I was like, I don't understand. I mean, there's this other concept of inner joint, which I'll get to. I understood inner joint, but I was like, how do you know left, right? He's like, it's the order you say the data set in. So obviously, if I'm doing this thing where I'm like putting the demo data set and then just joining on whatever matches from dent, I should do a left join and do it in that way. I should do this awkward right join and put demo to the right and whatever. So you're supposed to have like good programming formatting. Oh, hi, Suhaas. I'm glad you're here. All right. So now that I managed to read in demo A and dent A, I'm going to teach you a really important thing to do first is before you join this, look at this ugly data set before you join them together, first trim off only the columns you need. And this is a little trick I do in R that you can kind of do this in SAS, but it's easier to do in R. So first, what I do is I create a vector. I keep underscore demo, what that stands for. That's a vector of the variable names that I want to keep from the demographic data. Yeah, it is super easy in R. It's way easier than it is in SAS. In SAS, I think you'd have to make like an array or something. It's just too hard. I always have to look up SAS whenever I do something funky like that. But anyway, so all we're doing here, see the C and this is combined. And these are just words, like these are just characters. But if you go like if I do call names, demo A. Yes, you can use the calling numbers. Absolutely true. In fact, I'll demonstrate that if I remember. Okay, so here are the call names for demo A. So you see SEQN, but I did some sort of review of the literature and I decided I only wanted DM, DY, R, US, C, Z, which is one of these. So I'm just making this vector just say these two words. Like right now, it's just like a vector that says two words, these two things. And then this is also a vector that says the, so the reason I'm keeping the SEQN is that's the primary key. That's the index. Remember from SAS, sort, sort, merge, that's the thing we're sorting out. So we got to keep it. So I'm keeping, so these are just two vectors, right? Okay, now I'm going to trim. Like remember how I called this demo A? Well, I called it A for a reason. So I can keep advancing it to like B and C as I change it, right? So the, so let's look at the number of rows in demo A. It's just 15,000, we knew this. Okay, now see this trick? See this demo A and then these brackets and then keep demo. That's like secret code to R to just trim off these and put them in demo B. So I'm going to do that. And then when I do call names demo, see how lazy I might just go up here, demo B, we're only going to get the keep ones. Ta-da. Okay. So, and then what I like to do is I like to do an N row of demo B because why? We didn't want to drop anything here. I mean, we shouldn't have dropped anything here. But, and then here's number of columns and call is number of columns. So we see there's two, and oh, I put the column names down here. Okay, so we're going to do the same thing with dent A. I'm just, I'll just run it and see here, we just got these two. Okay. So now we have two skinny, two skinny databases or data frames. One is shorter than the other, like dent B shorter than the other. So now we're going to left join. Okay. So with the demo denominator and left. So, so what am I going to do first? This is just good hygiene is I'm going to do the number of rows first. Okay. 15, five, six. So I know we just did that. But, okay. Now I'm going to make merged underscore A. So what am I going to do? Well, I don't have to sort sort. Luckily, R is more recent than SAS. Okay. So I'm going to do merge. Then remember left and then right. So I'm going to left join. So I'm putting demo B first comma dent B comma. Then this is the primary key. Now normally I can put by equals and I can just put quotes, SQN, but it didn't work. I had to actually put the C thing. Like you remember how I did up here? So I don't know why I did that. Okay. But then here is the key. All dot x equals true. And that's your way of saying I'm left joining demo to dent. You can probably guess what would happen if we did all y equals true. That would be going backwards, dent to demo. Okay. So, but this all x equals true. So I, so big picture, we've got this demographic data set. We've got these other NHANES data sets that are smaller. We're going to be joining stuff on to it. We should probably keep doing a serial left joints, just to accomplish this task. So let's do it. So we have merge here and then on CQ. Okay. So now we're going to, so we know this is 15,000 on our left, the left data frame of our left joint. So we don't want to lose any records is 15,000, but we know dent B is only 13 something. So we want to make sure that our all x worked in merged A is the right life. So here we go. Okay. So this is the N row of merged A. Great. We didn't lose anything. And that's what was supposed to happen, right? And so now, if you were to look at, actually, let's just look at merged A. I don't know if you'll see, you see all these NHANES, these are NHANES from like this probably one right here. This is the end of the data set, you know, the columns. This is probably ones that didn't have a record in dent. So they ended up having NAs there because the left joint forced it. Okay. So now what I sometimes do when I'm doing joins is I'll add flags for whether it's in a certain data set or not. But this one wasn't a really good one to demonstrate that with because normally, if something's in a data set like dent A, there are values in it. But there were records in dent A that had no values in them. They like weren't filled in. So I was like, oh, so what I did to make a flag is I made a different business rule is I, so I created a flag called in underscore OHS. That was the name of the dental one. And I set it to zero. But OHS, IMP, that was a question of whether or not you have a dental implant. And one was yes and two is no, which are both answers. Okay. If they didn't say anything else besides one or two, I mean, that was the only variable I picked. Then if they said one or two, then they were in OHS. So we have their data. Otherwise, we don't. And so by adding this, but that's sort of a weird way to be perfectly honest, what I normally would do is I would modify dent A and I would just add a column that says indent, like in dental or whatever. And I make it just say one, like all of them. And then when they merged on, that one would be there. And the ones that didn't merge would be empty. And then I'd be like, oh, if it's empty, put a zero. And that's, and then each time, like here, I'm merging on the smoking variable. So I did this with smoke, the smoking data set. I just picked out a variable I wanted. And now I'm merging that on. See that here, like, I think you have to run everything or it won't work. Yeah, here. So now merged B has the smoking variable in it. And so what would happen is I'd have like indent, one, zero, and then in smoke, one, zero, whatever. And eventually I'd have all these flags and I could see if they was in all of the data sets. Or I could also like down here, remove some of them, depending on whether they like here, I'm saying box one is merge B, this is to evaluate selection bias, because that's the problem with this data set. But anyway, I mostly wanted to talk about these merges. Now I'm going to go on, if you have any questions, you can put them. Oh, I was going to talk about column numbers. One of the things, let me go on here. So let's see here, call names. And, okay, so I'm just going to run this. Okay, see this one here. And see how it says Seqn OH, OHX, IMP. This is this is column number one. And this is column number two. And let me actually, let me do this on dent A to sort of show you what the, okay, see here, like, see how this says seven. This is actually the seventh column. Okay. It's really cool. So in SAS, it's a lot easier to automate things by using variable names, right, like you make arrays of variable names, not their positions, right. In R, I found it easier to automate things if you use the actual column number. It's just sort of hard to get the syntax right a lot of times if you're doing like functions and stuff, and you have all these quotes. So what you can do is there's, I don't have the code for it, but there's a which command, not like which like boil, bubble and toil, like which one of these, the which command that you can run on say like which is, which column is OHSO5CSC and it'll return a number. And so what I'll often do is run this which command and get a number and then use that number in my automation. And I run the which command just before I do the automation because these columns move around like you can tell I've been moving them around a lot, right. Oh, and Austin points out that grep is pretty good too. I found that grep is, I don't know why I've had better luck setting values with which. I think I've had better luck automating other things with grep, but you know, I'm not that good of a programmer to be perfectly honest. So I just use whatever I can get it to work. But yeah, so, but if it's like imagine that I say, okay, I care about this variable, which is happens to be 67, 68, it happens to be variable 69 right now. Well, if I use this name, it won't, it doesn't matter whether it's 69 or two or whatever, it's going to get the right one. But if I use this number and I hard code it, then, and then I change sort of what I do, it might be grabbing the wrong one. But what I can show you is that you can do, I don't know how to do the merge code, like, I think you can, I'm not even going to try it because of course, if I'm going to program in front of you all over, but I can show you a little bit about how to use these, the numbers. So, so it's not only columns that have numbers, it's rows that have numbers, as you probably guessed, right? Like in SAS where they have the OBS, you know, this has, it's called row names. So if I do dent A, and I just do, so it's row comma column. So if I do like one comma one, I'll get, I think probably the first SCQN in it, right? Yeah, that's the first SCQN. It's row one and column one. But if I just want the whole first row, I can just make this empty and we'll get like, yeah, see, here's this person's like teeth measurements. Or if I just want the first column, I can go over here and get rid of this and just make this empty and do like this, right? And see, that's all the SCQNs. And you can do all kinds of fancy things, like I can say this is row one to five. And I just want columns four to 10. And I've got that. So that's sort of how you do that. And that's makes it really cool. Let's see here. So we have a note from Austin who says, Grep is amazing. This is what I love about base R, the row slash column referencing is so straightforward. Oh my God, yes. So thank you, Austin for pointing that out. Part of the reason why I don't use this supplier is because I like using this terminology that I like being able to switch between the column, the numeric column and row notation and the names. But I'm a little confused about the Grep because where what are you specified? Like you're looking for ABC or XYZ, or you probably have a whole thing in there.  Like is it a data frame? Or like, I don't know. See, that's what I get screwed up with Grep on. And so I always end up doing witch, but now I can't even remember how to do witch. So probably not the best programmer here. But I wanted to quickly sort of go over mistakes that you can make using base R and you can screw up your joint. So the first one is that, so this was the correct left joint. So first, using good hygiene, you put your denominator, like the longest dataset or the dataset that you want to not screw up. Like you want the same amount of rows in the results. You put that first on the left, and then you put whatever you're right joining on on the right. Maybe it's in there, maybe it's not. And then you say all X equals true to tell R, that's what you did. You put this one on the left on purpose. But here's the first mistake you can make. Instead of all X equals true, all Y equals true, then you're going backwards. So here's demo B, we know that this is 15. Okay, now we're going to merge dent B onto demo B. Okay, so we're going to make that, we're going to use all Y. Okay. So notice, remember how in dent B, there was only like 13,000. And because we use all Y, it dropped the records from demo B that weren't matched by dent B. Okay. And so that's a problem, right? And by the way, this is kind of an awkward thing to do. If you really wanted to do that, you should probably do a left join, put dent B first and demo B second and use all X. That's basically what my boss was teaching me is like, right joins are weird, like just don't do them. Just do left joins and be clear about it. Okay. But you can try to do a left join and just screw it up. And how you can do that is have your all X be right, but the data sets in the wrong order, right? So if I want to keep demo B, but I accidentally put it in the wrong order, I'm going to end up with the same problem where demo B is 15,000, but my merged A is only 13 something, right? Now here is the problem that people tend to have more commonly is that they just forget this all, all X true or all Y true thing altogether. They just say merge demo B, dent B by SEQN. And that's called in SQL and inner join. So that's only going to join the ones where they're both equal. Now, because there's a one to one relationship by our business rule in here, what this is going to end up doing is just getting us the 13,000, some right. Now, what would happen is if this was a more complex data set, like there were, you know, this was like maybe patients and encounters, right? So there could be multiple encounters per patient. What you'd end up doing is just keeping patients who have encounters. So if there were patients without any encounters, they'd be kicked out. If there was encounters that were often they were connecting any patients, they'd be kicked out. And this is often the mistake that is made when people are merging. They want to do a left join, but they forget this all X thing. And then they don't do it. So in public health and biostatistics healthcare, we often have data about enumerated experimental units like people or hospitals. And they're like entities. So if you from informatics, each time you have a table, the primary key is about an entity.  And they have a table of all the cars available. That's the entity of that table is car. And so we want to join on or merge on attributes from other data sets. So like the cars, like let's say there's a four door two door car, you know, that's an attribute of the car. So but there might be other attributes of these cars like their vehicle numbers or whatever. And you'd want to merge those on from other data sets. So we're concerned with assembling a full picture, like a full row of data about each individual in the data. So let's say I have a list of hospitals in Massachusetts, and I'm joining things on maybe I'm joining on information about like the county, the hospitals in our county population or anything like that. And I just want to fill out this row of information on these hospitals. But that's mainly what we do when we're doing like biostatistics. And I guess I should say epidemiology because our epidemiology is always based on these individuals, right? But other things, other uses of sequel type joins are happen a lot in data warehousing, which I also do of health data, right? So let's pretend that Anaheim's data set was a mess instead. And there was like duplicates in healthcare and like claims data, like insurances, they often have duplicate claims because like somebody will submit a claim to get paid and there's something wrong with it. So I have to resubmit it. So you have to, so these joins can be helpful in deduplicating. And you can use them strategically. You can also use them, especially if you read that other blog posts, you use them to understand overlap between data sets. So let's say you have a list of patients from one place, and patients from another place, and you have like their social security numbers or something, you can use these different joins to figure out like the Venn diagram of what patients are at both places. And also, a lot of times people use really complex joins and they don't do something simple like I just did in R. They'll have platforms that are doing joins or they'll like have software that's doing all this for them so they can look at it and make sure they're not doing it wrong. And often they're doing that to create like huge data sets for training AI, you know, artificial intelligence, like they're kind of piecing together like transactions and stuff like that. So there's a lot of like, I don't want to undersell the sequel programmers of the world. You're amazing. But I'm not one. And so I'm going to use base R. And I'm going to do my sequel like joins using my base R and my options in it. All right. So thank you very much for coming today for my talk on sequel like joins and base R. If you weren't here in the beginning, I just want to remind you that I want you to sign up for my free online workshop. It's Saturday and Sunday, December 16th and 17th. It's on Zoom. And the title is application basics. And our theme this month is adding analytics to pipelines. So if you're like me and you were trained in healthcare analytics, you often were not trained in computer science or the background of how applications are built, how they're designed, what they actually are technically. And so I had to learn that all on my own. And the reason I did it is so I could be better at analyzing data from applications because you kind of have to understand them if you want to analyze data from them. So if you want to analyze data from applications and you want that background and you don't have it, please sign up for my free workshop. It's on Zoom. It's based on an online course from my group data science mentoring program, which you can ask me about if you're interested. But you get the course for free and we're going to do all these interactive things. So it's like really a workshop. You get to network and interact with people. So everybody look in the chat, Austin said call names, parentheses, dent A, and then you've got the brackets and you've got the grep command. So, and as Austin explained, this grep, so the pipe in the grep command is an or, right? And I believe you could probably use an ampersand for the and, you know, if you wanted 11 and 12 or maybe even a colon. So this is in the scenario say that you would know that you're looking, oh, this is columns 11 or 12. So if you're looking, if you know 11 or 12, it's like you're looking at columns 11 or 12, right? Or yeah. But you know, in any case, what you can do, what I often would do, maybe I should do, I'll do something on the witch command, is I'll use the witch command to figure out which is the position number of whatever column I want. So it doesn't matter what I did. I ask it that and I put it in like, I'll call it like if it's OHXDent, I'll say OHXDent underscore pause for position. And that'll be a number. And then I'll use that as a variable, like in that grep. Like I'll use the variable name instead of the actual number, because then I know the number's right if I do the witch first. Yeah, I, oh, column names with the string 11 or 12. Okay, that's what I was saying, the column names with the string 11 or 12. But again, so how would you do it if you wanted to use grep? Well, you just Google for grep and you look for, in fact, how do you do it if you want to use witch? I always Google for it and I always find something on stack overflow. So that just shows you how much of a programmer I am. I'm stealing people's code from stack overflow. But in any case, I agree with Austin, base R gets the job done. And so you can certainly, as long as you're paying attention, do your merges properly in base R. All right, well, thank you so much for showing up today. So I could talk to you about doing SQL Lake joins in base R and how to do your end rows to make sure you don't drop any records, right? And please strongly consider signing up for my free online workshop. And we'll have a nice weekend together. And so thank you for showing up today. And I hope you have a good week.


Hello, my name is Wasim Swali and I am a cloud solution architect working with Mirantes and today we will be talking on how we could use Lens in order to collaborate on managed Kubernetes clusters like for example EKS and AKS. But first you have this scavenger hunt so just collect these QR codes and then you can come to the big garden to collect your prices. So don't worry I will display again this slide at the end of the talk. So yeah, this is Lens. It's basically a Kubernetes IDE that you could download and install on your laptop. It could work on MacBook, Linux, Windows, here for example I'm using MacBook and this is the main actually where we could see all the Kubernetes clusters that I have added. We could see for example K0S, the zero-friction Kubernetes from Mirantes. We could see like I have here mini-cube for example. We could see Rancher and of course we could see EKS. So Kubernetes cluster from AWS. So in order to add a new cluster it is very easy. So here for example I will show you how to add a cluster. I just need to add the cube config. Yeah and that's it. And then I could for example customize it a bit very quickly. For example let's call it MKE. This is another distribution from Mirantes. Here we go. We have our Kubernetes cluster that we could start using it. So now let's go to EKS. So this is basically EKS. So this is the main display where we could see the telemetry. So by default Lens would leverage the Prometheus stack if there is any already installed. Otherwise it's very easy to ask Lens to install this Prometheus stack for you. For example here I could go to settings, Lens metrics and then I just need to activate this stack and in a couple of minutes so Lens would install the Prometheus and start to pull this metrics. So here for example we could see the CPU usage, memory and the ports. So let's dig deeper. For example if we click on notes we could see of course here we have only the workers because the masters are handled by AWS. So here if I click on one worker for example we could see of course the memory CPU disk ports. We could see for example the internal IP, the external public IP. We could see for example that it is ready. It's already in the cluster. We could see how many CPUs we are using and of course all the ports that are in this worker. We could see that are actually up and running. And of course if we have enough rights we could leverage these extra options here. We could exact to the node. We could for example coordinate. We could like drain it and we could do a lot of things. Of course this is a class cluster so it's not recommended like doing it from here. So let's go now to the workload. We could have a very good knowledge about what's in there. We could see the ports, deployments, demon sets. It's like one single panel view and this is a little extension in order to show you how it is deployed. So I will come back to the extensions later on. The same way we could have here the ports. I can see for example in the default namespace I have these ports here. I could go a click on one of them. Again here we could have a very good knowledge about the pod and we could for example exact into the pod. We could for example get all the logs of this pod and we have a lot of features and functionalities. So the same way with deployments, demon sets, stateful sets, replica sets, etc. So here for example let's click on this deployment. We could see that we have a lot of deployments that are already here and if I want I could just have a terminal session. So this terminal session would put me directly into the context of this ECAS cluster. It means if I deploy something in this terminal session, let's say I would like to deploy WordPress. So very easily we could see that it's deployed into this context. If I click here in this mini cube and I deploy something it would be it will automatically switch context. So as you could see it's very easy to handle like different Kubernetes clusters. Again if I take this WordPress for example so I could leverage these extra options. I could for example scale it. Here it's only one pod with a few clicks. I could have like multiple pods. We could see here the new desired states and now we have three pods which are already so up and running. So same way we could have like the configs. We have the config maps, secrets. So the resource quota which is related to namespaces. So same thing with the networking. We could have for example the services. Here for example I deployed Apache and I would like to know whether it is working or not. So it's very easy. I just click here in Apache and then I make some port for what. Yeah you could see that I could find very easily what's happening with my cluster and all the deployments on my cluster. So same with the storage. Here we could see for example the storage class on AWS and here we could see all the events that are happening with my clusters within a click as well. And this is for a certain time. I could go down. There is one more interesting feature. It's a Helm charts. So as you can see here I could see all the Helm charts that I already deployed. So for example I have this Apache that has been deployed and by default with this we have some actually we have some repositories which are already added like Bitnami for example or I have my own repositories that I add to myself. And of course these are the default length features but in order to make it grow easily we have the next extensions. So if I go here I could see that I'm having different extensions. We have some extensions which are developed by Mirantis, some extensions which are developed by some of our partners like for example Aqua Security, this starboard extension that is able to analyze and give the CVs. We have the cube cost extension for example or you could like develop your own extension in order to really fit your needs. So this is a very interesting extension for example it's called resource map. So this would give you a very good idea about all your cluster and how applications are developed. For example if I take the Apache that I already deployed with Helm charts so let's zoom in. We could see here that it's so deployed by Helm charts here. We could see for example we have this deployment and then we have the pod and we have the service. We could see that thanks to the right colors the pod is up and running and my application is up and running. Yeah. And there is one more functionality that I wanted to show you today. So okay so now I can handle my cluster it is fine but how can I share it with the colleague? So one way would be to share the cube config but the thing is it's not very secure. So we developed with the lens the so lens spaces. So it's very easy to create a new space. Here for example I have multiple spaces and I have already created one for OpenMFRA for example. So there is my colleague Robert who just joined the company and actually this is so Robert VM he just actually freshly installed lens so he doesn't have anything. You see that the cluster is empty. So here within a few clicks so I just need to actually right click here and then I add this cluster to team space and then I would select the team space and the region and I just apply. So actually I already did this for ICAS because it may take like a few minutes but let's do it again for this mini cube so I will show you how to share for example this mini cube. So here I add cluster to lens spaces. I select the space. So let's select this OpenMFRA space. I select the region. It should be the closest like between myself and my colleague right. Let's say like Europe for example. I just hit so add cluster to team space. Yeah and I could see that it was added successfully and then I could just go to this space here and check what was added to this space. So here I could see that we have this ICAS and then after a couple of minutes so depending on the network we will have as well this mini cube added there and so if I go to my colleagues VM here so he would be invited through message to actually join this space and so he will join the space and then he would go to his space and then he could find that we have this mini cube and ICAS. He just need to click here and to add it to the hot bar for example to make it easier and then he could start to leverage this cluster and to work on it. Yeah so this is all I had for you today so thank you for joining this session and yes I have also a few hats so please feel free to take a few ones if you want. Thanks a lot.


So Spotify recently released their new fans to the report and I want to get into some of the bigger points that they made. The first is that Latin America is the biggest consumer of new music. Now I'm all for pushing the international basis but I had no idea. I didn't know that Latin America was consuming more new music than anybody else. A fan that says your track will listen to it three times more. They say that six months after saving the song a user will typically stream you three times more than they did before saving you. Fans playlists lead to more streams. So it says that a person will listen to you 41% more and look at your profile 12% more after adding you to their personal playlist. On average the top 5% of your fans listen to you six times more than the rest of your fans. This one is a big one to me. And last 53% of releases peak more than seven days after release. So keep promoting your song after it comes out.


to present the praxis we aim in the museum of San Cúpat del Vallés. For those people who doesn't know the place, I really encourage you to come and see our monastery. It's just 20 minutes from Barcelona. It's just like a little travel from here and it's a very unique space as you can see. So I really appreciate if you can come and join us. I will do my presentation based on five praxis, five practical things we carry on in the museum of San Cúpat del Vallés. But first of all I would like to do a reflection about which are the main ideas of the heritage and the museums are places for socialize and to create opportunities, to create social peace and for that reason I will propose you like understanding culture and heritage as a weapon of massive construction. I like to see that because I think it links very appropriately with the discussion we had before. So like not a weapon for destruction but for construction and used as a tool, as a tool for creating new opportunities as you have explained before as a place for a gift response to a very complex society with different needs and special needs, a place for doing together, to create together, learning by doing. This is the main philosophy I think we have when we do our projects. Heritage, archaeology in our case, used as a tool for integration in the end. Why using museums as socializing agents? I am always talking about museums because I work in a museum, not in the archaeology field because I'm not archaeologist but I am very lucky to work in a heritage place so I am referring all the time to the museums in this case. I will illustrate this by six main ideas of why we should use museums or heritage places as socializing places for agents. First of all, in my opinion and I think you will be, you will agree with me, the museum or museums in general or heritage places are spaces of prestige, I mean places for culture. They must be seen sometimes like remote or very, some kind of strange spaces for people but at the same time I think people feel them like a prestigious spaces. For example, a few days ago I think the case of the Brazil museum, we know that it was burned and people in the streets were very impressed of that. So we can see museums sometimes like very, very strange places, not like everyday places but at the same time I think people feel very proud of them and to have this heritage. At the same time I think they can give self-esteem or as Clara says quite often the sense of place, sense of being part of it, part of this heritage. Second point, museums are places of uniqueness, like different places, original ones, not the same like I don't know, the square, the school or the supermarket. And in this sense they should be a motivation if we can know how to do that. The museum or the heritage places as well can link, they can be like bridges between different type of communities, different type of audiences. They draw bridges as well between academic culture and more popular one. So we have really a good opportunity here to explore that for museums are mirror spaces. If we have, for example, weaknesses in our society, we have to explore them and to show them. So we have problems, let show these problems, let reflect our problems in our museums. We must do that, it's like a difficult exercise but I think it's good to share and to create spaces where weaknesses or troubles have been exposed. And for that reason we will see it in some practical cases afterwards but I think it's a good exercise because they can be also places for, provide self-esteem to the people when participating in them. In the fifth position museums are spaces of sensitivity or in my opinion they should be because heritage is not just stones, heritage is more than this, it's something about, something related to emotions, something related to memories as Clara said before, something related to our past, our identity. So let's take part of it and if we can do that and if we can use emotions we can link it with heritage. For that reason museums are perfect platforms for sharing universal feelings. Museums are places of opportunities I have said before not only because they are mirrors of diversity or complex societies but also because we can for example give working opportunities to people. We will see it in a project I will present that is Be My Guide, it's a project I will show you after and for that reason I think museums can be like guarantors of a real accessibility using different strategies we will see it. Okay, this is a kind of reflection I wanted to do before and now I will explain the practical things we have been developing in the educational department of the Museum of Sankogat. First of all the Museum of Sankogat is a local museum, Sankogat has like 9,000 inhabitants more or less, so it's like a middle city not a very small one but it's like a standard one and in this sense we are using the heritage and the environment we have that we feel like very proud of it to take advantage and to try to do better our society, our direct society, so our community. Okay, let's see the first example is called FEMO Museum in Catalan it's Let's Do a Museum. Let's Do a Museum is an inclusive and democratizing artistic project where we work together with couples, so one artist, one local artist and one person with special needs work together in order to create a work of art. This work of art will be in an exhibition afterwards in the Museum. The good thing is that the inspiration comes from the city place, from the place, from the environment, so from the monastery. The main objective in this case is to create a more comfortable space like a cozy space in the Museum and to create together with no limits and in a very free way, in a very comfortable way. The second project I will explain you is Tell Me While Weaving. In this case the heritage we use is related to contemporary tapestry. For quite a long time the San Cugat had a very important fabric or place for creating tapestry contemporary tapestry and in this sense we have to use that to help women who have suffered from gender violence. In this way we create a real network not just the material one, not just the tapestry, but also because we are creating an empowerment network with the women who have suffered. The third project I will explain is Be My Guide. This is based on guided tours led by people who are affected by Asperger's Syndrome. It's a kind of autism and since 2016 we are carrying this type of guided tours with the main objective, the main objective we have is to fight against the stigma of the autism on the one hand and on the other give working opportunities for all because these guides have the opportunity to develop a work in our place. Clara is okay. It's the the last project I will I will present is Saint-Nalphan Field the Mat where we make works of art with blind not with the eyes covered. The special thing in these workshops is that Teresa Navarreta that is a blind artist creates these workshops so the people are with blind eyes just created by the distractions of these blind artists. So the main objective in this case is that you feel like the other you feel like the people who have special needs so you can't empathize with the suffering or the problems of your people and to end my my presentation I would I would like to define our weaknesses because we try to do the best we can but always we have weaknesses of course and one of these is that a budget is always reduced not only for the money but also for the human resources in heritage places and museums you know it very well we want to do lots of things and we want to improve it and so on but we are just four people so this is very difficult to do. We have also complexity in our audiences because they are very heterodox so we are not psychologists we are not specialized in this we are heritage management things people sorry so it's a quite difficult thing another thing is the compromising of the proposals that sometimes for the budget we cannot do it longer in the time and the food point is the difficulty of the evaluation I am very impressed of the evaluations you you you had because they are very professional and this is our I think it's our main weakness because as we are just four people and we have no money so for evaluation thing and for the reverse in the evaluation we must we need a lot of time and to invest money as well so for us it's always the weakness the weakness thing to do and the difficult the more the most difficult thing to do and I don't know if I have time to just one minute okay practical we decide to finish in my opinion when we do socialization programs in heritage places I think we must always start with real needs so don't invent needs just look around your place and no and think about okay what my community I think what my what's my community maybe just ask them what do what do you make visible what do we do this is related with the communication not only for the abstracts not only for the presentations but also for being in the in the media and in the social network thank you very much working as transversal team in way this is a clear thing in the technological teams I think we must do a very transversal transversal work implying different type of people and always be of course always be rigorous with the contents because if we are socializing our heritage but we are not rigorous and serious with what we are explaining it's it's not it's not fair and last analyze and evaluate everything we do and as I said it's the weakness point we have so we must improve I have no websites like magical websites but I always um I always uh share this Antonio Machado birth that is you make the work the way while walking so let's walk and let's see what's what's going on thank you


I think the work that 5-4-ADA did with the Strike Brigade out of the 101st was the first step of many to come with short-range air defense units supporting the maneuver commander. They did it today using the Avenger Weapon System, and they'll continue to do that as they continue fielding the M-Shorad Striker Weapon System, which will be more maneuverable and more survivable on the battlefield. So I think it's successful as today was, successfully engaging two outlaw drones. I think the future is even brighter once the new M-Shorad vehicles are up and maneuvering with that force. I think the work that 5-4-ADA did with the Strike Brigade out of the 101st was the first step of many to come with short-range air defense units supporting the maneuver commander. They did it today using the Avenger Weapon System, and they'll continue to do that as they continue fielding the M-Shorad Striker Weapon System, which will be more maneuverable and more survivable on the battlefield. So I think it's successful as today was, successfully engaging two outlaw drones. I think the future is even brighter once the new M-Shorad vehicles are up and maneuvering with that force.


Jack, we're going to the Super Bowls. Okay, I have Madden 22 installed, downloaded on the PlayStation 5. I'm gonna be completely honest. The most patriotic American thing that's ever happened is getting Madden 22 for the PS5. Madden is the best MMORPG. Xbox Series X is better. Dude, what year is this? Console Wars in 2021. Is this 2002? It's a game. Can I fix this before I get banned for DMCA? Finalists, some real music. The tradition of American football. They said there wasn't no World War III. I said, hell, World War III happens every Sunday in the fall. Look at how different this is from yesterday. Look at the hair. Like actually poggers, dude. It's actually Pog, people pog on a tree hard forehouse, dude. Isn't this, dude, this is what it should look like. This is what pregame for a football game looks like. Not the, the, they were playing against each other before the game.  Like this is the show, dude. See, this presentation is so much better than last year, dude. This is so good. This is hype, dude. All right, fellas, listen up. We got Minnesota Vikings. We got Minnesota Vikings this weekend. Hell, listen, offensively, they're hurting bad. Good for us. But defensively, this is a damn good defensive football team. It is we have gotten to spread the ball around the field. They got good linebackers. They got a good secondary. We have to spread the field horizontally against these folks. Sorry I'm late, Coach. Someone put IC Hot in my jockstrap. OK, you know what? Scratch that. One, stop putting IC Hot in other fellas' jockstraps.  You're a grown-ass man.  Eatin' Coach. All this IC Hot on the field. Nice. Good, it's all pump-no-dumb, dude. All pump-no-dumb, son. OK, Michael Parsons. I literally, Parsons, Parsons.  You have an open lane, straight, direct shot at him.   Good lord. Wait, who's hurt? Oh, nice. Oh, what you're doing back there, bud? Hey, we got to get some pressure. Dude, look at the fans, dude. This looks so good.  Oh, it went right into his hands. It's the essence of football for footballers. Oh. Oh.   Oh, what? OK, hey, good stop. Dude, we're going to light it up, dude. Minimums. Oh, oh, easy. Oh, easy. E. Oh, look at that, dude. Yard time. Dude, see, this is all new, dude. This is a big warning to this team, man. They know now that they have to stick close to these receivers because they're ready, ready, ready? And beat you consistently throughout the game. You can rush more aggressively off the edge. Oh, my. Oh, my. I'm going to drink. Oh, no. Oh, no. Oh, my gosh, dude. I'm so lucky. Upper arm fracture. What? I'm so lucky. No, that's the wrong guy. Man, this is incomplete of number 7. Oh, no. Oh, no. No, dude. Dude, look at him. He just gets outrun. Oh, yes. Michael Gallup. Skip it a button. Oh, my. Exituted. What was that? So posessionals stay to say. And they're operating in plus territory. I actually heard it. No. Oh, the crowd have intercepted.  If we get a field goal, we will tie it up. OK. We're going to try this again. No. Stop. See if he has that confidence. And that one. OK, we're going to try it again. Why do I keep trying this? No, he's running. Why is he running? And he'll be out of the crowd. Look in deep in the direction of Cooper. Oh, my. How do you call timeout? How do you call timeout? How do you call timeout? I don't know how to call timeout. What button do you press? On the touchpad? OK, I have one second. Please work. OK, I'm spamming it. I'm spamming it. Mark Kiddum low. Kiddum high. And watch right here. Oh, save. Nice, dude. Tie to half, boys. Tie to half. All right, folks, listen up. Listen up, fellas.  OK, but I'll be honest with you. We had about two plays. It's 10 to 10, but we had about two plays. And they're both deep throws to Murray Cooper.  Can we go to city bars after the game? No, that is literally. No, absolutely not. Now the scoreboard. Why are you spinning? Oh, he completed. Prescott, you have to catch the football, dude. It's going to work this time, I promise. Because he looks to throw. Dude, dude, dude, dude. Be an athlete, dude. Just be an, that's all I'm asking. Just be an athlete.  Thanks for the great stream, man. What are you doing? Where are you throwing that to, Tebow? McKenzie Alexander with a pick. He brings it back to right around the 26-yard line. We've thrown two interceptions this game, and neither of them are from my quarterback. Authentic Cowboys fan experience. No, let's go, Parsons. They go play action. Cousins. No! You just got burned. What are you? OK, it's OK. We're only down seven. We're only down seven, boys. We got this. We got this. Now on third and fourth to third. Oh, no, no, no, no. Get intercepted. Dude, off the tip. Hey, it's OK. No, we're not going to lose, chat. We're not going to lose. This is not a loss. You know why? Because of the Philly special, dude. OK, one more time. One more time, one more time. This one's a touchdown. This time it's a touchdown, I'm telling you. And first and 10, Elliott. OK, OK, Amari Cooper. Ready? Prescott off play action, but it's incomplete. Cooper, now Prescott, and it's intercepted at the goal. Dude, come on, guys. We got this. Dude, the mechanics are different on the PS5 than on PC. OK, OK. Minute 36 left, chat. Minute 36, no timeouts. Do you believe or do you doubt? Let's go Philly special. We'll watch as they scan. Always going to let this go for the end zone. No! Oh, what? How? How? Dude, how? It's looking a shot in the end zone. Defend. Dude, it hugs him. I should have been Philly special, dude. The music. Why did the music stop? This is awkward. I was one of the worstest places to play football ever. Hey, coaches fan, it's me, Jeff Gladney. Thanks for telling Prescott to throw it to me a few times today.  It'll really help out next time I'm in contract negotiations. Get out of our locker room. Here's the $5 bucks we agreed on earlier. Get out of our locker room. Absolute worst NFL coach. Fire the sky.       Now I gotta go talk to the damn. Coach, we asked for ice cream yesterday and we still haven't gotten it. Can we please have ice cream after the game? No, there's no ice cream after the game, OK? That was one of the worst plays the Athletes might have seen collectively as a team. Watching your team in the red zone is like watching myself make love while drunk.  What cream should I use?  I'm the coach. Coach Fondt, man, dud, man. These boys, man. What the frick dud? Fire this joke. OK, here's what we're doing. Listen, I don't want to look at you all. I don't want to look at you all boys, dud. Man, what the frick this darn coach? Dud. Listen, I don't want to take one more look at you all. OK, we're coming in extra practice tomorrow. How are we supposed to win a damn football game? Coach, there's only so much you can execute when the play qual is the 10th Philly special of the game. That wasn't me. It's supposed to be a trick play. No, that was Tim Tebow kept calling that on. Not your only play. Listen. Coach, it sprinkles. Dougals and I want to invite you over for scones and espresso tomorrow.  We just got the front room redone and it's a calming post-modern feel.  Can I give you a hug, coach? No. Nobody has a hug. I don't want to look at you. I don't want to smell you. Coach, you stand. I don't want to see you. That was a heck of a defeat, sir. I don't want to hear you. But I think everyone in the stadium is wondering one thing. What is your preferred method of eating corn? OK. Do you eat at lengthwise or widthwise?  Do you use your offhand or dominant hand? I know some people will spit on the end to make entry a little smoother before consumption. That said, what's your preferred method, coach? You eat corn the long way and that's it. Now listen. Sorry, coach. I pooped my pants halfway through the game. I'm leaving. OK.    I just want to say y'all look terrible.   OK?   I got to go. I got to press conference to attend to. All right.  OK. Yo. Coach, I need that butt-paste real bad. Can you please pass it to me? That ain't a question. Leamer here from Madagascar Times. Slash slash, I don't think it is fair for all of you reporters to make fun of coach's fan for losing to the Kansas City Chiefs. They are a strong team that anyone could lose to them. Dot slash slash, away does fan lost to the Vikings. W.O.M. Eagle Old W.  And there's going to be some major, major, major changes. It's Mr. Underscore Mustache from the T3 Financial Times. I talked to the grounds crew and they said it was your choice to remove the coffee from the press room. Rebuttal? I'm not a damn, I don't handle that. That is not my job. My job is to coach football. Football coach is coach football. How hard is that to understand? Hey, coach, for giving us this free win, we thought it would be appropriate to give you payment. So we have ordered 15 happy meals just for you.  Thanks, coach.


Minister for Tourism, Investment, Creative Industries, Culture and Information, Hon. Dr. Ernest Hele and Parliamentary Secretary Hon. Ghibion Ferdinand, along with Permanent Secretary in the Ministry, Donna Lynn Vitey have been meeting with entities under the investment portfolio to chart the way forward for St Lucia. Friday, 13 August 2021, the team met with investing Lucia to familiarize themselves with the work and processes of the agency. It is really to get an update on the work program of the various agencies, to get an understanding of what they've been doing, to also get an understanding of how they see their work program evolving over the next five years. With a new government in place, there's a new mandate, there are new visions, there's a new vision. The idea is that we would want to ensure that the agencies understand our priorities for us and to have that interaction so they understand where we want to head. Some of the agencies have been very proactive in reading the manifesto and already starting to suggest how they can incorporate the promises made in the manifesto within their work program. So I think for us it has been a very productive week. Parliamentary Secretary in the Ministry of Tourism, Investment, Creative Industries, Culture and Information Honour Bill Gibyan-Fildinen indicated that some of the initiatives of investing Lucia are in alignment with the government's vision for the country. We noticed that there's a boost program that is aligned with the idea of the youth economy that the Prime Minister had been very articulate about in our campaign and we were able to get a sense of what is happening in the investment Lucia with other major developments such as the land rationalization in the North and South and I think that gives us an idea of what programs investment Lucia has that can help us achieve the objectives that our government has set. Chief Executive Officer of Invested Saint Lucia, Roger Cherry says Invested Saint Lucia and the Government of Saint Lucia have a similar objective to put Saint Lucia and Saint Lucia first. One initiative being undertaken by the agency that speaks to this vision is land rationalization. Part of our strategic initiatives has been to give Saint Lucia ownership of Saint Lucia and one of the main initiatives that we've done towards that is to facilitate land ownership by two strategic initiatives. One is land developments, land that investment Lucia owns have been developed and sold primarily if not 100 percent to Saint Lucia's. The other aspect of that is land development as well but what we call land rationalization. In that case the individual Saint Lucia's who have lived on lands owned by the state or by invest Saint Lucia for a number of years and the aim really is to provide the basic infrastructure at least and in some cases very extensive infrastructure and sell those lands at reasonable rates way below market rates to two solutions. The minister and his team will continue to meet with key agencies under his portfolio as he charts the way forward. From the Government Information Service, Humayde Makh reporting.