Rufi, mwa mwzi, kutuiko kweha mwzi kwa kufi anginiskati snuchani, na mwzi, mafutia mafutia kweha mewa mwzi na binun, uitima tumi niw luqe wa diru na mafutia nifi uitima uitima ganii mwa mwzi, mafutia mwzi na mwzi, mwzi na mwzi, mafutia, eno mafutia mwzi, cor電i na mafutia nifiti na mwzi, mafutia, tmwzi ya, mwzi n braえて 1tmmachine already in Qatar and the days are moving live quite remember when World Cup came in a lot of opportunities were being created or there was a lot of opportunities that were created for those people that came into a country from all different sectors of the county we look at the security we look at the greeners we look at hospital deshikta we look at um tourism sector we look at the fashion we look at retail all different departments I think kwa kwa na hwa na uziiwa, na uziiwa kilo kilu apotiniiti mga kwa kutile wasi stipอะ Na kota ekututu, udziiwa nula nula kapo nili kwa h용a n�ugini wiko nakaatutu Kwa ina kwa nila kwa hanyi ni-, na kwa nila kwa ako haikia kwa nila nila nila Ngiki kwa hwya kumilingu hwa nima sa ngikisha, nama kwa na msi na, Nisha nukul msi, ni, nukul nila nikilu nipafu nikilu nikilu nika Nisha nikilu nikilu nikilu nikilu nikilu nika Iwan mati malini fasten kule, uuni burاهiku para n�..." to patiya nera. Or, kva Chubu akunapende uum שא� huwa k걸i dey mihiyuki ele owe uza konga kwe. Mafiriiko cha stuaki kwen Makama ya habu na hendilia. Humani niha kwa cha kcoli? The are undone kawal pakemi. You have to exist. And if you don't exist then you have to pay what you call a no of a state charge which will be absolutely something that is a little bit high and you have to be dig in your pockets. What could be the humble advice to anyone that is on that visa or anyone who said that workup project and you are going to exit khamibuak. Yes, fine. The first thing that you need to do is to try to look for something, try to look up for company. Definitely that can give you an offer later and that company is willing to give children will also be employed and approval then also need to have hotel booking in a way in other so it becomes a little bit complicated for you to have what you call a visa This visa however, something that you need to understand but it will be very easy for recruitment agencies to take up those parts of the jobs they will have those jobs advertising all the companies then they can recruit you to come on what we call a work visa of 2 years when you come into the camp with a work visa of 2 years you can work of that contract remember i told we have two types of contracts we have what you call the limited contract which is two years then we have unlimited contract which is two which is five years so you definitely need to understand which kind of contract you are signing with that company if it is limited that means it will be two years so after the two years you can change you can look for something else to do if it is unlimited then we're and good if you have agreed to that and depend on how much money you have agreed then definitely it will be after five years of which you have to to finish it of then you can change or depending on which kind of mutual agreement or what kind of commercial agreement that you've agreed with what you call your employer then definitely it can help you also move away in that direction so it will be that will be the possible ways for you to to have your jumba or to come back in the country because things are not going to be very easy especially also we look at people who are ready or being the residents here with kataidi some of them will have to exist some of them they will have a lot of all they will have to overseas to get out of the country some will have to resign from their companies to change into companies so there's going to be a load definitely there's going to be a load in the country that definitely anyone or one in the person that will definitely require to prove out and definitely so so if you try to get all those ways out it can enable you secure your job in your coming coming back to the country hope after I try to share up something we will buy some links from the next question but don't forget to subscribe to the channel and don't forget to click that notification bell thank you so much for the support is very good see you again


Hello and welcome to my talk for Esmar Conf 2022. I'm Bronwyn Hunter and I'm a PhD student at the University of Sussex and today I'm going to be presenting and demonstrating how we can use transfer learning to facilitate rapid text classification in R. And for background my PhD is broadly focused on the synthesis of different data sources such as social media and also academic literature to understand large scale patterns of wildlife exploitation. So why use automated text classification? So identifying relevant data sources to include an evidence synthesis particularly when looking at different sources such as academic literature and grey literature can be one of the most time consuming stages. And given increasing publication rates this could create barriers to evidence synthesis. As a result researchers are increasingly using automated text classification methods often based on machine learning to conduct the article screening stage. In addition some of the more state of the art machine learning algorithms can actually achieve performance comparable to manual labelling. Although machine learning is increasing in uptake some of the more advanced techniques often require specific programming skills particularly in Python. They also often require large amounts of training data which have to be labeled manually to achieve high performance. So in this presentation I'm going to be talking about how we can adapt some of these approaches that are generally used in Python to use in R and also how we can use something called transfer learning to reduce the amount of manually labeled data we need to build these text classifiers. There are many different machine learning models that we can use for text classification. There's random forest logistic regression, naive base, K nearest neighbor support vector machine and then some of the deep learning base methods like neural networks and transformers. Given the number of different models available it can be difficult to know which one to use. Today I'm going to be talking particularly about transformers and hopefully I can convince you that even though these models are quite complex how we use them is actually a conceptually appealing approach. Why use transformers? To illustrate why we might want to use these more complex transformer based models I think it's first useful to think about some of the pitfalls of the other models I've mentioned. Some of the simplest text classification models such as naive phase look only at word frequency to make a decision about the topic or the sentiment of text for example. And whilst this can work quite well for longer text and it has been successfully applied to some evidence synthesis because word order isn't taken into account these methods often fall down for shorter pieces of text and in evidence synthesis we often only have perhaps the title or the abstract of a paper. In contrast more recent text classifiers use what we call recurrent neural networks. These models are based on the logic that a words meaning is a function of this context. In these deep learning models words are fed in sequentially and what we call the hidden state which here is represented by these circles is a function of the hidden state of the previous word such that the hidden state of the final word contains information from all of the words in the sequence. This sequence representation can then be fed into a classification decision. As you can see from this illustration representation of the question mark the final word in the sequence contains quite little information from the first word what. In essence these models struggle to represent relationships between the words that are far apart in a sequence and also in practice because words need to be fed in one by one they can be quite slow to train. So now we thought about some of the other models we could use what is the transformer model approach and whilst I don't have time to go through the full architecture represented by the diagram on this slide I will just highlight some of the key features of this model. So firstly in contrast to the recurrent neural networks texts are fed in as a whole rather than sequentially meaning that these models are much quicker to train. The key feature though is what we call self-attention and this self-attention mechanism is part of one of these encoder blocks in the model. Essentially self-attention looks at an input sequence and decides at each step which other parts of the sequence are important. So in this example the boy is holding a blue ball we know that holding blue and ball are all related to each other but the word blue is not actually related to the word boy and this self-attention mechanism is able to learn these association between the words in the text and hopefully build a more realistic representation of natural language. Now since the introduction of transformers back in 2017 there has been a proliferation of models that make use of these self-attention mechanisms to build models of natural language. One such model is called BERT and this is the one that I'll demonstrate the use of today. It was first introduced by Google and it stands for bidirectional encoder representations from transformers. So what this model does is it takes these encoder blocks from the original transformer model and it stacks them on top of each other. So the commonality between all of these models that make use of transformers is that they take this pre-training and fine-tuning approach when applied. Essentially we take these models they're pre-trained on a large body of text which helps to build a representation of natural language. BERT for example is trained via masked language modelling which is where the words in a sequence are masked and the model has to predict which words fit in the sequence as well as next sentence prediction. So once that model has been trained on a large body of text we can then adapt it for use on a range of different tasks in natural language processing one of which is text classification. In essence the learning from the pre-trained model is transferred to the application and that's why we call this transfer learning. Hopefully the previous slides have given you a little bit of understanding of transformer based language models and their key features. Now onto the important part which is how we use them in practice. And whilst the models are quite complex in themselves how we use them has been made really simple by the Hugging Face Library and this is available as a Python library called Transformers. So what Hugging Face has is a repository of these pre-trained language models. We can then take one of these models off the shelf and adapt it for whatever task we want to do. In the case of text classification we can take BERT for example. We can obtain a representation of our text via the CLS token from BERT and then we then add a classification layer which is what makes the decision as to whether that text is relevant or irrelevant. So say we have a collection of abstracts that we've downloaded from Web of Science for example. We can take a subset, label them as irrelevant or relevant based on our inclusion criteria. The training data is then used to fine tune this whole architecture and the testing data will be used to assess how well this classifier is performing. If it performs well we can then feed back in the rest of our data and use that to obtain our final set of relevant abstracts. One thing I like about this approach is that there are loads of different pre-trained models to choose from some of which have been trained on domain specific corpora. For example CYBERT is a BERT based model that has been pre-trained on a body of scientific literature so that learning from the pre-training can then be transferred to the classification. How well then does this approach actually perform? Here I've shown some results from my own PhD work where I was comparing the performance of different machine learning approaches in classifying academic abstracts for relevancy. Here I looked at naive phase which I mentioned earlier, a simple feed-forward neural network and finally our fine-tuned BERT model. The graph on the left is showing F1 score which is a function of both precision of the model and its recall so that's how many of the actual relevant abstracts did the model classify in the final data set. As you can see it's actually small training size but achieves higher performance than the other models and particularly when we look at recall BERT is by far outperforming the other models and is actually retaining 97% of the relevant result, relevant abstracts in the final data set. So I hope that this is a fairly convincing example of where BERT can achieve high performance without the need to label thousands and thousands of data points. Whilst hugging faces made it really easy to use these transformer models in Python, there aren't any tools to make use of transformer models in R. This is where our reticulate package comes in. Reticulate allows us to use Python libraries in R and thus if we're doing other stages of evidence synthesis in R we can basically streamline our analyses. Before you get started with reticulate you need to make sure that you have Anaconda installed on your computer and this will allow us to make use of Python. You'll also need to set up a virtual environment which has either TensorFlow or PyTorch installed. The fine tuning of some of these models also does require you to have a GPU available. Now I'm going to run through some code examples. These are just snippets actually so the full code will be available on my GitHub repository but here I'm just going to illustrate some of the key parts. So once we've loaded in reticulate we can then install our desired Python libraries and in this case this is our transformers library using py install. Then using the import function we can import that library into our environment. Once we have our transformers library imported we then want to use the dollar sign operator to access the models and methods within this library. So to load in our tokenizer which splits the text up into tokens or words or word pieces we're going to call our BERT tokenizer from pre-trained and then the name of the model that we want to use. Then we can also load in our model to be fine tuned and here we're using BERT for sequence classification. So the architecture that I illustrated earlier with the BERT model and the classification head that's actually available as a whole model that we can download and fine tune. So the transformers library has what we call a trainer module and this is the method that we're going to use to fine tune our model but the first thing we need to do is set our training arguments and most of these I'm leaving as default values but the key ones that we want to add in ourselves is the output so that's where the final model is going to be saved. The number of training epochs, the batch size so the number of training examples that are loaded into the model at once and the evaluation batch size and again we're calling methods within the transformers library using that dollar sign operator, so transformers training arguments. Next we want to initialize our trainer so we're calling transformers trainer and we're initializing it with the model that we loaded in earlier, the training arguments that we set in the previous slide, the training and testing data and then the method which we're going to use to evaluate the model performance. This is defined as a separate function which you can see in the full code in my GitHub. We then create the trained model by calling trainer and train and once that model is trained we can use it to generate predictions. So by using the predict function we will get a prediction for each of the classes and then by using the argmax function we'll get the class with the highest probability. So those are the most important functions and hopefully you can see that by just using a few lines of code we can train a really high performance model for text classification. Thank you for watching the presentation I hope it's given you a little bit of an introduction into transformers and how we can use them for text classification in an evidence that this is context. If you want to know more about any of the models or the concepts that I've talked about I've linked here a few blog posts and videos that provide a nice introduction into these. I've also included a QR code which has a link to my GitHub repository and here you'll find the full code and also a couple of data sets that I use to generate these examples. Thanks very much.


So the title is not clickbait, my mission is over, and I really will do a voice reveal at the end of the video, so stick around if you're curious. But with the conclusion of the ZBrush series, I have taught you everything I know, which is why today marks the end of an important chapter and the beginning of a new unknown era that you and I will be exploring together for the first time. That doesn't mean that I'm going to stop uploading new tutorials in the future, it just means that now you and I will be learning the content at the same time. There are a lot of things on my hit list, things that I'm currently learning and practicing right now, such as photorealistic faces, substance texturing and rendering in Unreal 5 with special effects.  Now the biggest change for this channel going forward will be the shift in scope. Up to this point, I've taught you specifically how to use the tools you need, but once you know how to do something, the next question is what should you do? Moving up to this point now I've taught you how to do is basically grunt work, modeling and animation. But the next step is to understand how to think, how to plan and how to organize things from a managerial slash director position. If you are working with a team, the worst thing that can happen is you spend too much money focusing on the wrong things, applying the wrong techniques and wasting your best resources on things that ultimately weren't necessary. These are higher level problems of leadership and management that most people will inevitably encounter in the future. That is someone who's been an indie developer for 14 years, I've had my share of projects.  So over the next few months, we are going to start tackling a lot more of the upper echelon problems that modelers and rigors generally won't worry about, which brings me to a new service that I will be opening up starting today. This has been something that I secretly really only made available to patrons up to this point, but I do offer 30 minute consultations and mentorships for 120 bucks. Most people have big ideas, but no experience and they come to me to help organize their project. Or sometimes they're a new 3D artist and they're having trouble improving and they just want some advice or tips on where to spend their time and how to practice more efficiently. And sometimes people just come to me with serious problems like they have a team but they're having trouble working with them and they're wondering what to do and how to handle it. And if you're wondering why it's 30 minutes instead of an hour, it's basically because I've noticed that generally the more time people know they have, the more time they waste. Every single time I've been to a company meeting and all of us know we are stuck in this room for the next 60 minutes. People start talking about their cat, talking about what they're going to have for lunch right after, people play rock paper scissors, I mean they just get distracted. I've never been to a single one hour meeting where the amount of constructive conversation summed up to more than 20 or 30 minutes. So that time limit is really just a way to encourage people to come prepared, clear, focused and ready to solve the problem and find workable solutions. So if you're in a pickle or have some questions, I have helped talk people through their art, through their animations, even help people organize their hentai dream game. So if you ever need advice or consultation on anything, literally anything that is related to my field, just send me an email because that is a service that I now officially provide. I plan to start doing more of these real talk kind of content in the future and I would eventually like to do some live stream stuff and have some fun with you guys in real time. As well as invite guests with different expertise onto the show to help find and share even more important golden nuggets of information and lessons that we can all learn from and level up. Since I'll be opening up this avenue for more free talk topics, I've decided to go ahead and come clean with my normal accent. Honestly, in the beginning, it was just supposed to be a joke, like wouldn't it be funny if Joey Wheeler taught you 3D? But people started to take it seriously and I felt like if I didn't keep it up, people would just assume the videos were fake. So I got stuck with it and just kind of kept it going. I already knew the channel was never about me. People subscribe to the channel for what I know, not for who I am. I personally never really cared about expressing myself. I only cared about expressing things correctly and I try very hard to keep it that way. But now, since I've done what I've set out to do and I consider everything from this point onward a fresh new start, from now on, let's go ahead and keep it real. All right, so this is Royal Skies. It's a pleasure to finally meet you and thank you for everything. I truly hope you have a fantastic day and I'll see you around.


Hello everybody, Andrea Trosky here with Dental Tutoring. So if you're either a dental hygiene or dental assisting student and you're taking the board exam, let's say within the next couple of months, and you don't know what to study, you don't know where to start, and I do have a few options for you. So I do have the board exam prep academy, but that includes everything. So that includes all of your mock exams, your modules, case studies, tutoring every Sunday, it includes everything. And I do suggest that if you do sign up for that, that you have at least three months to prepare, so you have the chance to look at everything. Now, I have had students sign up where they only have a month to look through everything, and it is possible and they have done it and still passed, but I do suggest signing up about three months ahead of time so that you can take your time. You have a chance to attend as many tutoring sessions as possible, because as I said, it includes mock exams, it includes case studies, our tutoring sessions are about an hour long, modules on every single topic, so there's tons there. But let's say you have only a couple months left or a month before the board exam, and mock exams only just isn't enough, you want a little bit more, you want that tutoring experience, and you want to be able to look at sort of a teaching video so you have something to listen to. So that is what I would like to talk to you guys about today. So let me share my screen. So this package is excellent for students who say have a couple months left to study or even a month left, but I wouldn't leave it too much later than that, because if you have only say a couple weeks to study, you probably would not have time to go through everything, so then what's the point? I mean, you could pick and choose the topics you want, but how I see it is you're spending your hard earned money, so you might as well be able to go through all of the topics because my teaching videos, my videos are about an hour long, and in this package you have access to all of them from 2016 and 2017, and starting late 2017, I did a tutoring session with the case studies every single Sunday, so that's a lot, right? So if you have at least a couple months, I would say, and if you're able to study every single day, then this is perfect because then you are able to listen to the topic. So I will actually teach you guys a lecture, plus we will go over case studies, and I find that these are perfect if you're taking the board exam soon because you probably feel that you have read enough and you don't want to read anything else. So I will post the link in the comments below, so then that way if you are interested in this, then you can have a look. So this includes all of my lectures from 2016 and 2017, so that's amazing. You can see them right away, plus it does also include a mock exam package as well, which is about 50 questions, I believe. Yes, it is. So this is huge and so, so helpful because this one here for everything is only $170, but for the full board exam prep academy, that's about $379, but that is a lot more. So if you have a year to study for the board exam for at least three months, I say, then the board exam prep academy is the better option because it does include a lot more. It includes mock exams, case studies, modules, live tutoring, everything. But this package here is more for if you have only a couple months left and you're saying to yourself, I don't want to read anymore, I just would like to listen to somebody teaching me the topic and that's it, so this is perfect. I'm sorry guys, I was sick all last week, so I probably shouldn't be talking too much because I still have a little bit of a cough, so sorry about that. But if you guys have questions though, please let me know. If you're not sure what package may be the best for you, just let me know because even if you're thinking that this might be too much, you might be thinking, I don't know if I have time to watch everything from 2016 and 2017, then I do sell mock exams also per topic. So if you feel that that's easier for you, just let me know and I am happy to help. But yeah, it just depends on how much time you can focus on studying and the type of studying that you want to do. There are always options, so please just let me know if you need anything and I will see you guys in the next video.


All right, y'all, I'm gonna go ahead and get started. So there's a few warnings slash caveats before I get started. First one is, as you saw earlier, I was heckling Nathan heavily. I expect equal heckling in return. The second one is that I gave my slide deck to a friend of mine, Alex Machnier, before presenting.  So hopefully it's all good. It's all in good fun, hopefully. So we'll see what happens. Slightly nervous about that, but it should be good. So the idea here is, I'm gonna talk a little bit about how we take Ember, how we take the framework and conceptual stuff from where we started, where we're coming from, and into the future. So, but first, a little bit about myself. I'm an Ember core team member. I have a severe open source problem, although I will say I'm recovering slightly. I have some blank spots on my timeline now. So I'm very proud of that. I do not suggest anyone go for crazy streaks. Interestingly, they took the total number of days in a streak down just a day before I hit 1,000. Just saying, I may have broken the GitHub UI so they had to change it. And I work here at Twitch. It's really awesome to work with so many smart people. I've never quite been on a team with this caliber of folks before. If you're interested in a job, we are definitely looking for good people. Any talk that I give, if you've seen them before, I always talk a little bit about my family. These are my boys. There are now, they are seven and eight. And I just couldn't do any of the stuff that I do without the support of my family and them. And so I always like to throw them up on a slide. So I'm glad he did not add any mustaches or anything to the kids. All right, so the first thing is like, so how do we keep moving forward? How does the framework, like Ember has come from some really bad times. I started with Ember just before the 1.0. I'm sure many of you have been involved longer than me. That's great. We can trade war stories later. There's plenty of beer. So at Ember 1.0, we had all sorts of things, all sorts of concepts that later turned out to be really horrible ideas, like really, really bad things. And I'm sure some of you are still dealing with some of these things. So we had like views, container view where you can manually create view instances and like append them completely on your own where you'd have the view helper, which could potentially change the context or whatever. And then proxy and controllers. So your templates turned into essentially a nomad's land of not knowing what Curly Curly Foo actually points to. Is this a model property? Is this a, what is this a computer property on my controller? What is this thing? We had context shifting, making all of that even like 10 times worse. So with context shifting, like you'd have in each and then the block for the each would be like 50 lines long, of course, filling your editor. And you have no idea where Curly Curly Foo is coming from. Is it the iteration? Is it the item you're iterating over? Is it your item controller? Is it a computer property on the actual controller? Is it a route model property?  Literally nobody knows. So yeah. And then testing seriously. Who did testing? Anybody in 1.0? Like really? Is that a thing? I tried really, really hard to test the first 1.0 app that I wrote and failed miserably. Like really bad, like it was horrible. And I got really sad. Okay. So now today we've come some place, right? We've gotten rid of some of the horrible baggage. Testing actually kind of works mostly, right? There's things that are that need to be better. There's things that we're trying to progress on. But you can do it, right? Like most people today, like if you read Hacker News, I feel like I'm in like the Twilight Zone because like Hacker News is like, ah, if you want to test, you should use Ember. I'm like, what? So this is great. So you have a bunch of different kinds of testing.  There were still some legacy add-ons you could use for a while to help you transition. But the idea is basically, if you look at a template, you know where things are coming from. You know, if you see Foo in a thing and not model that Foo, you know it's coming from the controller or the component context, whichever the context is at that place. The template land became much closer to basically a lexical scope, right? Like things that we can actually reason about and not troll ourselves. So this is great. And now the future, right? So, so, so, you know, where we're going. Like basically we're gonna have, you know, we've got an RFC open for the new project layout, which is the module RFC. It proposes a brand new way of laying out your project as well as additional packages or engines or add-ons and repo add-ons and stuff. And it learns from a lot of the things in the past. We've got the same sort of process in RFC coming from the testing perspective to make, to like sort of bridge the gap between acceptance testing and integration testing, unit testing and making them all have a consistent API. And we're, we've been focusing like a lot on the performance, the runtime performance, the individual rendering performance, the re-render performance, all that kind of stuff. And that's gonna continue to move forward and to make it more modular. As Nathan mentioned, like where you can bring Amber is an add-on. You can have individual parts that are more swappable. You can augment the core framework with additional things or remove things that you don't need, right? Like you may not need some, like, because Amber follows Amber, you may, we ship things that most apps probably don't use. Like things that were possible in 2.x that we have to keep around until 3.0, but you may not use them. So things like that where you'll be able to strip those sort of features out of your app or out of the build of Amber that you're using and make your code even leaner, tree shaking, all that kind of jazz. So that's where we're going. So, okay. Hey, boys. So how the heck do we do that, right? Like that's the thing that we all care about, right? Like that's the thing that's tricky. We have to know both where we've come from, what we have today, what we have to support, what the APIs are, and how do we get, oh well, and then where we want to go, like what's wrong with it? We have to identify those things and then we need to figure out like, what's the future? What do things look like? So how do we do that? So the first thing you have to do is troll Yehuda a little bit and you've got to figure out what's wrong. What's wrong with the system? What do you have in the system that is problematic or doesn't work? It was really easy in number one at .x. When we got to like one five, one six, it was really easy to sit down and look at those things and say, wow, this is really messed up. And now similarly, we're like at two eight now or two eights and beta now, it's also easy to see things in two X that we wish that we could move forward on, we could get rid of or migrate forward on. So the first step is like identifying what's wrong. It's identifying and figuring out what are the things that cause pain, what are the things that are preventing you from moving forward? The next step is probably obviously to plan. So I like to call this like read me driven development, like essentially figure out forget about the baggage of the past and figure out what do you want it to look like? What do you actually want the ideal API to be? When we sat down and we looked at like contact shifting or template scoping and stuff like that, we actually had to figure out what do we actually want it to do and then how do we figure out how to make it work? Obviously being compatible, being Denver compatible is immensely important for us, but it's also really important that we have a path forward and we know where that forward place is, right? So the second step is to plan and figure that out. So then with Amber, especially recently, we've been really trying to push forward the RFC process and communicate and talk to users, figure out what people's problems are and make sure that we're on the same page from the core team perspective of what we think is wrong and what cause people pain and communicate with users, right? So we have RFCs open, I mentioned earlier, we have RFCs open for the module unification stuff, for testing, to line testing up with all the three different types of testing in one mechanism and there'll be even more things like with angle bracket components will come down and there'll be another RFC for that, hopefully pretty soon. So it's really important to communicate with the community in our case to figure out, hey, this is what we see as problems, we're all working in perhaps, we're all sort of feeling the same pain and we're banding together to sort of figure out where to go and what we can do and what we can make better. So this communication is super important and frankly, if you look at the threads on some of the RFCs, you can really see how the conversations with the community have directly shaped the direction that we've gone. Like a whole bunch of different things between module unification where we, we had an initial RFC that we proposed and ultimately people just flipped out, right? It was horrible essentially and then we did like 50 or 60 iterations, like there was a gist that we were putting together before we circulated it with a second version of it with users and it was like 60 different revisions of that gist, like where we came up with things to the point where we had considered and discarded so many things that we didn't actually remember why we discarded all of them anymore. Yeah. So the next thing is implement, right? So we have to figure out, so now we know where we're going, now we have to actually implement it, figure out how to make it happen and then make it happen and figure out then how to make it backwards compatible, how to make it work with people's apps today, hopefully ship it outside of Ember as a separate piece from Core so that people can actually use it and test it and give feedback on it before we bake it in as part of the framework. Similar to what Nathan is talking about with Adam, right? Like Route Recognizer would be great if you could pull this in. Now right now, unfortunately, that is slightly trolling because like you're actually shipping two versions of Route Recognizer to the users like to your runtime because there's no way Ember right now ships is like one blob like ember.min.js or whatever. So we need to get better at that, right? That's part of the process, right? But at least now we can iterate, we can actually have a way for those enterprising souls to actually test these things and figure out how to move forward, how to make it better. And then bring that back for the whole group and make everybody have access to the good times basically. And then repeat. Do it over again, start all over. Realize that all the things you thought were perfect in the new design are also horrible. And start fresh. So that's fine for the core team. It's fine for us to do that instead of sitting in our little ivory tower and say, hey, this is where Ember is going, this is what we're gonna do.  All right. All right. Thank you, Alex. The thing I'm here to tell you is that it's actually the same thing you're supposed to do in your apps. It's exactly the same problem that you have in app development today. It's the same problem that Casey told us about with Engines, the same problem Nathan's talking about with LinkedIn's Routt Recognizer taking a second. It's the same problem that I'm gonna tell you about. It's literally the same thing. So in your app, you have problems, right? Like there's things in your app that suck. I guarantee you, I promise. Ask somebody, they'll tell you. There's things that are bad, right? There's things that you should make better or that you could make better, right?  They are building blocks for building your app, right? So it's literally the same thing. Like you need to identify the things in your app that do and don't work and just know, hey, these are pain points. These are problems. We should deal with these. You should make a plan. It's exactly the same thing. Like literally you should say, hey, using this component is either costly or painful or troublesome or very trolling, right? Like the API of this component, invoking this component, maybe it's a form or a text field or something. It's really, it's horrible, right? So you should make a plan. What do we want to do? Like sometimes it's fix it. Sometimes it's replace it. Sometimes it's like delete it from the code base and never think about it again, right? But you have to make a plan. You have to figure stuff out. And then you have to use bananas. And so then you have to communicate. You have to communicate with your project managers. You have to communicate with your coworkers. You have to figure out, like you have to say, hey, this is the plan. This is where I'm going. This is where I think we need to go. And you have to get buy in. You have to convince your coworkers or your project managers or the stakeholders or whomever you're working for or with that, hey, this is where we want to go. This is important. This is more than just shipping in a feature. If we keep shipping features, eventually, and don't fix these things, eventually you're going to be the point where you can't ship features anymore. So this communication is key. You've got to get their buy in. You've got to convince people that you need to be able to move forward. And then you're going to implement. Usually in App Land, I say it's easier. It's actually not easier. It's somewhat easier because you actually know exactly the API that's in use. Whereas from a framework perspective, sadly, Ember has a lot of APIs, most of which I wish didn't exist. And we have to support all of them because that's what we are guaranteeing. That's important for us to say, hey, you can use these things. This is Ember. But from your app, you may have a specific component. And this component has problems. When you go and redesign a component, you can easily see all the places it's invoked. It's not tricky. It's not complicated. You know exactly where it's used. And you can make sure that you replace it. So you can implement this. Now, the implementation may be fixing it. It may be replacing it. It could be essentially deprecating it. And in one technique, for example, that I've used here is when you're going to build a new component, build a new one for the next use case, the next usage of a given shared component, and then have a test that errors if you use it more than x times. So that way, you just don't get worse. You can make sure that you are only invoking the component at the same number of times. And slowly over time, it goes down. And you know that it's getting better. And you can do the same sort of things that we do. We do an Ember. You can deprecate. You can have things that give compile time warnings. You can use ESLint features to do warnings on given method calls, things like that. It's the same sort of things that we do in Ember. And then you like the hamster in the background. So I don't think that's a tomster in the background. I think that's a hamster running on the wheel. You keep going. Like, you don't stop. You keep running. There's always things that you're going to keep doing and try to make better. So basically what I'm telling you is that app development is not that different than framework development. And the problem space is roughly the same. You just don't know it yet. That's it. So I have time for some questions, I think. There's going to grab a microphone. Wait till you get the mic before you ask questions. Hey, Robert, great talk. So let's talk about how we convince our bosses to go through an RFC process or some kind of communication where we get to actually push back on a new feature. Yeah, so there's a few things, right? Like, first of all, if you work for someone that literally doesn't care about your input, why are you there? That's the first thing. The second thing is you basically have to have a report. You have to have a way to communicate. Usually there is a process where you can maybe add things to a backlog or parking lot or whatever, where you can flag things, hey, this is messed up. We should deal with this at some point. Now, sometimes you'll flag those things and they will literally never come up to work on and they'll never move forward. But other times, more often than not, like you bring it up and say, no, this is getting really important. Like, hey, this feature is not tested or these things are not testable or things like that, right? So I can't sit here and tell you how to talk to your boss, but I can tell you that talking to your boss is really important, right? And the stakeholders, the project managers, whomever it is that is in charge of deciding the future of the product, those people generally, if they're actually good at their jobs, generally care what your input is, right? They generally want to make things better because they want to keep iterating. They want to keep adding features, right? And if they want to keep adding features, they need to make it easier to add the features. So I don't, I think I'd basically just like walked around your question. Thanks, everybody. Thank you. Thank you. Thank you. Thank you. Thank you. Thank you. Thank you. Thank you.


My role is the ITC, which is ISR Tactical Controller. I work with MQ9 specifically in this case, and my job is to coordinate between them and everyone else. This is my second year doing Northern Strike, and last year one of the things I noticed with the communications up here is that we're not all talking the same language. Part of that communication piece is I'm able to speak that same language and translate what's happening at the exercise from a white cell side and convert that into a tasking that the MQ9s would be able to understand and looks like a daily mission that they'd receive and make it look as real as possible. So when we're back home we're flying 24-7, 365 days a year, and when we're doing that we're not able to always do the types of trainings we'd like to do. Up here at Northern Strike I'm working with people all throughout the country actually, and I'm able to communicate with them just like we would on a real-world mission and coordinate as if Alpina were the deployed location. So it's very similar to real-world training, but it gives us opportunities to do things that we wouldn't want to have to do until you practice it like you would here at Alpina.


Do we have one? Apparently not. OK, we're good to go. OK, so we're going to start a little bit early. I have, like, 20 slides. So it's kind of like two minutes per slide. Try to go really fast. I hope not to disappoint anybody. There is so much of a visual content. But at the end, you'll get the idea why. So my name is Miguel Suniga. I'm part of the Cloud Platform Engineer semantic team. We're building private cloud inside of our things. And today, I'm going to talk to you about platform as a service. So as you see, platform is supposed to be on top of the IAS stuff. And there are multiple options. As you know, IT, there's multiple ways of doing the same thing over and over and over. And I decided to start playing with these ones, which is Kubernetes and Mesos. And on top of that, I put it on top of OpenStack, which got me here. So thank you, everybody, for starting and for coming over. And let's go with the agenda really quick. We're going to have how to design your platform. We're going to talk about the architecture, managing resources, how you manage containers, how HA gets set up in there, and then jump into a really quick security part, how you can define your platform services. Because there's a lot of confusion on how Docker runs things and what exactly it is. And also, how to roll out new services out there and questions. So let's go and start first. So first of all, design your platform. As you know, the best way of designing a new system is going over and figuring out what exactly it is that you have there. My apologies. What are going to be running, pretty much? What are you going to be running?  And this is really important because there's, I mean, every old platform as a service that they come over, whether it is Docker, if it is CoreOS, if it is whatever it is, is not a silver bullet. So sometimes to get a real platform as a service, you need to mix all the technologies that you have, depending on the use case that you're running into it. Also, the other thing that you need to be aware of is how secure do you need to be? Coming from Symantec, we are actually focusing a lot in security. But there's a lot of these technologies that they don't offer any type of security at all. So you need to figure out whether you abstract the security layer, probably two layers above, or if you put it under another layer, they say I'm going to do a network isolation. Or I'm going to create, like, this is my data center and I have a rack where I'm going to drop everything that is really confidentially or something like that, and we're going to run it in there. And the last one, and really important, is where you're going to be running. So everybody saw the Google keynote and what happened there. They were just jumping from one side to another. And you have to be aware of this because even though it seems to be magic, this stuff breaks. So it's not really good to just go over and say, I'm going to go ahead and just try to deploy here and deploy here and then move from here to this other cloud and then into my data center. All the technologies that we're going to talk about right now, they're not related specifically to OpenStack. You can run it on top of OpenStack, but at the same time, you can run it on top of any other cloud or even on your physical servers. So those are pretty much one of the initial steps to figure out how you're going to design the thing. The most important ones, like I mentioned, is those who are identifying workflows and applications and how secure you need to be. Everything else can be pretty much waited after it. So after you have designed your application, let's see the architecture. I'm going to show you three types of architectures. One of them is using Mesos. The other one is using Kubernetes. And the other one is using Mesos and Kubernetes. So if you see here on the diagram, the way that it works is that you have your hypervisor and you have your Mesos layer underneath. So you have a master and then you have Mesos layers. Quick question, who has an idea on what is Mesos or who has worked with Mesos? Okay. So let me just jump into really quick on what Mesos is. Mesos is a task scheduler. It was designed at the beginning to be able to increase the Hadoop speed and at the same time, you just run a task and we'll go over and grab any X amount of resources that you tell it from your cluster and execute the task. When the task is done, you pretty much go back into it and reports the output. What they have done is that they enable it, running the task as containers. So you can pass over and tell it, I'm going to go over and use this container, this Docker container, pull it on and then execute it. That means that you can have any type of application inside of your Docker container and run it as another Mesos task. Mesos uses Docker by default, so, but you can actually plug it to any other external containers that you might want to go over and use. So the way that it works is that you have your master and then you have frameworks. What are Mesos and for Mesos, a framework is a way of actually interacting with the cluster itself. One of the more popular frameworks out there is Aurora that is being used by Twitter and Marathon that is used by Mesosphere. What they do is basically just taking care of that, whatever task you tell it to, whether if it is a container or not, you're going to execute it constantly and constantly. If it dies, bring it back. Doesn't matter where it is, if it is on this node or on this node, just bring it back. So with that in mind, the way that this stuff works is that you go over and say, okay Mesos, you're running on all these VMs. I'm going to create a new container, let's say a LAMP stack. So you grab it over, you tell it execute this LAMP stack with, I don't know, 300 megabytes of RAM and two CPUs. It will go over and query across all the cluster and figure out who has resources enough to run that thing. It will spin up your container and have it running in there until you kill it or basically until it dies. If you're running Marathon, then it will basically just wait until Docker removes the container and bring it up right away. Like literally it goes over and takes, sometimes when you're loading containers into Mesos, you have to put a delay inside of the container because of how fast Mesos works. It will spin it up in less than a second if one of those containers die. So the way that it works is that you have the user interaction is that uses basically Docker network. So like any other, like if you were running Docker on your VM or your virtual box, it's pretty much the same deal. Just makes the IP table runes and all that kind of stuff and you access it through the host, in this case, through the BEM IP. So let's move on to the next one. So that's Mesos and OpenStack. Mesos runs on top of its Java-based, real cool framework that you guys, I mean, you can go and check it out. Now comes Kubernetes. Kubernetes, what is doing? Kubernetes is more like a container orchestration. I'm pretty sure you already went through a lot of talks here on Kubernetes. And this is our setup that we have in, well, I mean, pretty much any setup goes the way. You have the hypervisor, hypervisors, then you have your SDN and you have a BEM that holds scheduler and then also holds the controller itself and then you have the API. The user interacts to the API to request and say, Kubernetes, go and create me this pod or go and create me this other replica controller. And pretty much Kubernetes goes into each of the other BEMs, which is running a client named Cool Lady and says, okay, I need X, Y, or Z containers of this type or of using this image and just keeps them running. One of the differences that on Mesos, since it's more focused into executing tasks and Kubernetes is more, even though it's based on Borg, is more into like microservices. In a pod, you can have multiple containers running the same, and not actually the same thing, but the whole idea is that you have each of the pods are gonna be the couple from every other pod, except if they're a replica controller which are exactly the same. But let's say you have an application and you have your lamb stack here and then you have a JD server on the other one. You create the pod in a way that you're gonna have everything related to that lamb stack and you put it in there and then on the other one, which is gonna be the other pod for your Java application or JD, you create it and you then talk between the two of them at the API layer. That way, if something goes down or if you need to upgrade, you're upgrading it specifically on that pod and don't have to interact with anything else of your application itself. One of the problems here on running open stack is that Kubernetes requires another layer of networking. Right now, CoreS came up with Flannel, which allows you to go over and deploy the networking itself, and that's only for allowing the containers to talk to each other between one container and another on different hosts. So the way that it works is that if container D needs to access container C, it will go over, send the traffic through the Qubelet proxy, Qubelet proxy forward through Flannel, which is just another SDN on top of whatever you have on the SDN, and then send it back to container C. That's the way that it allows you to talk between each other. Qubelet proxy, besides of providing the routing for the internal network, provides also load balancing and provides also the access for the user into the containers if you want to go over and set it up as a service. I could probably talk, actually I should have do three talks instead of just one for each of these ways of doing things, but I'm running out of time, actually. Well, anyway, let's keep moving forward. And then, so we've seen already the first one, which is just executing the container, like if it was anything else, the only thing is that you have a really nice cluster that is keeping all the resources for you and it's spinning it back if it dies. You have Kubernetes and OpenStack that probably a lot of people is related to it and how it works, which works pretty well, and then you have this monster, Kubernetes, Mesos on OpenStack. And what I'm saying is that here is basically the two technologies working together, and this was a breach that the guys from Mesos were created and actually works pretty well, in which literally you're telling it, you're gonna be running the Mesos cluster and on top of Mesos, you're gonna be running Kubernetes. What exactly or why doing these stuff so complicated? Put it this way, I know that Kubernetes, some of you might know or not, it has its own HA, but it's, I mean, crashes, it crashes a lot. Trust me, I've been playing with it for a long time.  So in other words, you're abstracting the manage of resources and saying Mesos, take care of where I'm gonna be running, how much CPU I'm gonna be running, how much memory I need and just keep me up and running and then you have Kubernetes on the other side going over and telling it, okay, now here is my application and this is how it's gonna be set up and this is how it needs to interconnect between the different pods. So this is not like literally running Kubernetes. It's the Kubernetes Mesos project. Grab the code from Kubernetes and modify it so it can actually talk as a framework for Mesos, meaning that you can still go over and use them, it has its own client, which is called QCFG through which the same way that you use the regular, I don't remember what's the name of the Kubernetes client, but you use it to create pods and create everything, you use this one to create the pods, container services or whatever it is. The only difference is that on the Mesos live, you have first marathon.  You go into Mesos and you tell it, marathon, execute these three containers for me, make sure that they are up and running. This is how much memory and how much disk I need and there you go, take care of them. Once Mesos brings those up, you literally can go over and just call, okay, Kubernetes, go and deploy this replica. What is happening is that on each of the Mesos lives, it will go over and Mesos will spin up your three containers and make sure that they're up and running and then go ahead and go into the rest of it. Once you talk to Kubernetes, Kubernetes talks to Mesos and says, you know what, the user is asking me to create a pod and for this pod, I need X amount of resources. Mesos go figure it out on which of the nodes I need to put it. So it goes over and puts the thing up into it. Mesos itself runs Kubernetes in as a task and then Kubernetes talks directly into the Kubernetes API and the Kubernetes controller and the scheduler to figure out what exactly needs, like how it's gonna be configured, like if they have services, if I need to go and talk to the networking or if I need to go and pull down specific images into it and then you have everything up and running. Benefits of this is that, I mean, I'm sorry, for actually accessing the stuff, you can either do it through the Qubilate proxy that basically Mesos is controlling also. At the same time you spin up your pod, you will basically spin up a Qubilate proxy on each of the VMs running. So you can access your thing through there or you can have an HIProxy if you wanna load balance through a different, a lot of containers and just access all your application through every single place. On this setup, you also need Flannel because at the end, even though it's being executed by Mesos, the same architecture of Qubilate is still running. So you have to have Flannel to be able to talk between different containers running on different servers. It's been really fun to go and deal with this one because it really gives you an overall idea on how both systems are actually working and they are able to communicate and everything.  Pretty much you go over and through the QCFG client, you talk to Mesos and Mesos literally talks to the API or actually the QFCE talks to the API, the Kubernetes API, set it up on the controller and then the controller itself talks to Mesos and tells it, you know what, now kill this stuff. Kill those containers that you have running on this physical server. So you get the best of the two worlds literally.  You just go and add the next server, put the Mesos live into it, add it to a cluster and you have more resources. So it's a lot of, it's really, I don't wanna say this but it's kind of like exciting seeing both of them running. So managing your resources. Let's go into a little bit here. So what exactly is gonna be managing your resources? Like I said, Mesos taking care of these things. Each of the Mesos lives goes over and reports like I have X amount of disk, memory and CPU available for any X, Y or Z tasks and I have all these other tasks running. From the Mesos point of view, you don't have anything else than tasks. It doesn't matter if it is like a Docker container, if it is a script running or if it is like that path running. For Mesos, it's just a task. All the Kubernetes components, you can run them also on the BM itself. Let's say you don't wanna use marathon. You can run them inside of another BM and just tell it, okay, here is gonna be my Kubernetes API, here is gonna be my Kubernetes scheduler and here is gonna be the controller. I mean, not sorry, the scheduler, the API and the other section, I'm kind of nervous right now. Anyway, but if those die, you have to go back and spin them up manually, which includes like, okay, let's figure out what is gonna be supervising the fact that I have my Kubernetes setup running all the time.  If that thing dies, like if the Kubernetes API die or if the whole node dies, if the whole node dies, Mesos picks it up and goes over and says, I need X amount of resources, spin up Kubernetes API again. If the Kubernetes Docker container dies, it will just go ahead and try to respind it on the same MesoSlave or actually go over and look for all of the slave that has enough resources for it. So it's really good to have everything under Mesos control because you would have to, I mean, you don't worry about having running and everything. So the pods and the containers, whether if it is just a single container or a whole pod or multiple pods, all of those are done as Mesos tasks. The good part of this is that you can go over and let's say you want to graph stats. You can graph stats at the Kubernetes layer, which will give you like specific stats of the container itself and how it's running. But let's say you wanna have stats on how it's running on the physical layer. Kubernetes came up with Seattle Visor for it. It will give you like, okay, I have this task running and it's consuming X amount of time. Forget about it. You'll have Mesos. Mesos reports like how much CPU, how much memory and how much space is using each of the tasks and how much actually, since when they started, when they stop, and if they have any problems at all. The other thing that I'm gonna go over into it is how Mesos manages the whole VMs. One of the things that are really another plus, put it this way, is that you can run Mesos on a mixed environment. You can have your Mesos masters in physical servers and then just go over and tell it I have this bunch of VMs in a cloud and use them as slaves. You can even define sections that it's gonna go over and tell the Mesos server, okay, this is the cloud for X, Y, or Z loads, just deploy here. These are physical servers for X, all type of tasks and loads, deploy here. So it doesn't matter where you're running, you can just go ahead and start the Mesos daemon and as long as you can connect back to ZooKeeper, which is the only bad thing that I see right now. You can go over and tell it run anywhere and just make sure that you're managing each of the different resources the way that you should do it. So now let's jump into a little bit more of how we're managing containers. We already saw the physical part, the VM part, the resource part. Let's jump into this stuff. This is probably more like everybody knows how it works. Kubernetes manages all the containers. You define your things into pods, you can run a container only, you can run a service and a replica. Who from here is actually running Kubernetes already? Nobody, nobody running Kubernetes? One, okay. Let me just go into a little bit into how Kubernetes runs. What Kubernetes, each of these thing of pod replica service is pretty much kind of like a unit. A pod is a collection of containers that they're like really tight couple. So you can have one or more containers running in a pod and it will be, you don't see the pod as, you can see it as a group of same type of containers and they can share data and they're gonna have something more in common. The replica is just saying, okay, this is my HA just in case that pod dies. Kubernetes make sure that you have another one exactly like that one, prepare just for HA. At the same time, it can run them at the three. So the replicas work besides of HA high availability. It basically works as load balancing also because it will give you like, this is my pod and you can tell it, the replica has to have at least two. So it will create your original and then two more. If one dies, it will basically keep adding the other one and recreate the pod and recreate the pod. And this is all everything internally. Now how you actually jump into the access of the pods as you know, getting into Docker containers kind of difficult from the network, but Kubernetes takes care of that with services. Basically what a service is, is just an entry point. You can go around and tell it, okay, this is gonna be my service that is gonna be running on XWARC pod and it's gonna be talking to, I mean, sorry, this is my service that is gonna be running on XWARC pod and it will send all the traffic to these pods that you have here. So the Kubernetes service, as you saw in the previous, let me just go back really quick. Where are we? Where are we? Here. The Kubernetes service, all of them are defined inside of what it says KM proxy. The Kubernetes proxy is the one actually doing all that kind of stuff. And it does not only provides load balancing and HA, it also provides the routing between the Flannel network, which is down there. And it also, I mean, at the beginning, was also providing DNS. Now they basically split it up and they manage DNS as separate container like another piece in there. And you can go over and tell it instead of learning like IPs, you go and say, okay, I need to jump into my cool container and I need to talk now to my cool container two and I need to talk my cool container three. So Kubernetes rather, I mean, doesn't force you to have static things into each of the containers. It would rather go over and have the Sky DNS, which is the thing that they're using for actually managing the DNS on Kubernetes and allows you to go and define names and doesn't matter which is the IP. Kubernetes takes care of saying, okay, I have this IP into here and this is the IP of the Flannel and of the IP of the Docker container in Flannel. I'm gonna forward the traffic order. So going fast forward. Where are we? Okay, there we go. So I already talked about a little bit on how they interact with each of these things. The way that you manage this stuff is through the QCFC client that the process that the Kubernetes methods client has, which is basically just a wrapper to the original QCL to the original Q from client from Kubernetes. So any flag that you pass over in Kubernetes is also valid on this other framework. It doesn't have to like, oh, I need to change everything. No, literally the only thing that changes is just the name. It's really straightforward. And the other thing is that I'm already said about how the replicas work and how the services work and how the pods work. So I think we're good on that. Let me see what else. I think I'm still missing something. No, let me just move forward and probably I'm gonna come back. So high availability, how it's done. Here's just a explanation on between the three different frameworks, which one provides what. So if you wanna reach high availability through Mesos, you gotta use something like Aurora or Marathon that basically keeps your containers up and running. For Mesos, it's just a task. Whether it finishes properly or crashes in the middle for Mesos is done and reports back saying, I'm done, I'm done with this one. The only thing is that if you go over with Mesos only and Marathon and any other things, you need to have an HIProxy load balancer in front of it or something similar to it to be able to just like load balance across all of them. All of that is gonna be just accessing each of the different hosts. Kubernetes has its own HA components which I'm gonna be out of scope but I already explained them how they work, which is the Kubernetes proxy and the replicas and the controllers. And the other part is the Kubernetes Mesos which has the HA for all the components of Kubernetes up and running and you manage those through Marathon and then you have the load balancing that you can be like either through HA proxy or use the Kubernetes proxy itself. Now jumping into a little bit more crazy stuff like security. So now on security, how are we getting this stuff? This is the difficult part because one of the problems is that none of these are multi-tenant, none of these provide like any, Mesos provide some types of ACLs and that's pretty much it. Kubernetes is also in the latest B1 beta 3 API. It's actually putting, I think they're putting ACLs also but it's not really easy to go over. So the way that we're managing it is that instead of saying we have just a huge cluster since we're basically running on top of OpenStack we're telling, okay, for XORC user, create this cluster, for XOR user, create this R cluster, and for this R user, create this R cluster. So you can allow the users to spin up different clusters depending on what they want and you manage the security outside of it and abstract it. And it's been working well. I mean, it's not something that is gonna go and say, okay, everybody is like completely secure from like I can go and talk to it but the thing is that we don't have, we don't give access to users to use the QB lady client to go and spin up things. We literally force them into a portal and then the portal does everything for us in the backend. There are things that we were running Mesos with SC Linux, which was a big deal. I mean, sorry, Docker with SC Linux which was a big deal before and we're using, I mean, it's Railways but we're using CentOS 7 which actually works pretty well for this one. The other security concern and this is more for helping out the network isolation is enable IP tables dropped by default. Please people enable IP tables dropped by default. All this stuff runs fine but pretty much you can attack anything that you have on Kubernetes on whatever it is because IP tables gets set up by Kubernetes and even though they actually put in different specific rules for each of them you still have everything on like accept everything for me. So you could easily go over and do like man in the middle attacks. You can easily go over and do all our type of stuff on the denial of service and distributed denial of services and bring down everything into one simple touch. Now, I'm still on time. Okay, how are we gonna design these platform services? Okay, to design the stuff. This is the second part that I was gonna go. Already talked, so I already explained how the framework works. Now how are you gonna use it? So think of this as cattle. Don't think it as like, okay, it's my container. I need to have my container. The containers are ephemeral.  You cannot bring them back. Make sure that you have a container and you have a volume where you're actually putting the data into it. Second, containers are not VMs. They are not condensed VMs. They are processes. That's the reason why this mix works pretty well. Mesos is a process scheduler. The containers are processes.  Just is a process.  That's how it's this stuff designed.  They've been up in there since Cherut. Cherut was the initial container and that's been run since, I think, before I was born. So your thing. VMs or containers. This is one of the things that I learned from the Cloud Foundry guys. Not everything is for a container. Some things you have to keep them on VMs and physical servers. If you go into everything trying to put as container, you have to move everything into a stateless type of architecture. Sometimes it doesn't work. It will just not work. Sometimes you have some custom application that is actually doing really typed streaming data into it and you have TCP handshakes that even if one is broken, it will basically restart the actual session. So you have to make sure that you have a pretty good idea on what you're doing and this is the reason why I mentioned the design. Figure out what you're running at the beginning because once you get to this place, you're gonna know, okay, I need VMs for this one and I need containers for this stuff. Or I can rearchitect my application to instead of using VMs and everything into it, just put a bunch of processes in a single pod and then just go ahead and run it inside of Kubernetes. If you have Marathon or Aurora or whatever you're a fan of, use it. Why? Because there's, I mean, it will help you a lot. Like the cluster that it's running right now, I don't even have to monitor it. I don't even have to spin up a ticket for it. Goes down, it brings back it automatically and that's the whole purpose of these frameworks. The other one, security parts, Docker, who here is using Docker Hub? Anybody? Nobody? Nobody's using Docker Hub? Like Docker Registry? Okay, a few of them. Use a private Docker. You can go over and tell Kubernetes instead of going to Docker Hub and pull down everything from the internet, use a private Docker thing. Don't go into, pull down whatever you have over there.  So microservices, what is that? Anybody has any microservices idea? No? A few of them. Anybody has done SOA architecture in the past? Okay, more, more. So you already have done microservices. It's the same deal. It is the same deal. The only thing is that it's just like rebranded and newer and with all the learning and experience that we have from SOA architecture. But at the end it's pretty much the same idea. Kubernetes is designed to do microservices. Like I mentioned before, the pod is not just one container, it's a collection of containers. And the whole idea is that you have multiple pods talking to other pods based on API. This allows you to go and say, I need to, I don't know, do an upgrade on some application that I have in a container, you can bring it down and bring it up. You don't have to interdependencies. You don't have to, pretty much allows you to upgrade easily because you're upgrading per component. And the other one, the one that I mentioned, is your pass. You know what you're putting in there, but don't expect that it's gonna solve the world. It's not gonna solve the world at all.  If you're willing to go ahead and say, okay, I'm gonna use Kubernetes, I'm gonna use Chorus with Lead, I'm gonna use Heat, go ahead and do it. I mean, probably you're executing Heat to bring up the messes containers and the messes server and then you're inside of the, or put it this way. You have Heat that's been up to the BN running Chorus and then you deploy messes into it. You have pretty much a lot of the things that you can go around and do. And to be honest, I mean, I haven't seen something that is like silver bullet for pass applications because sometimes you're gonna go and say, okay, I have a really cool application but it runs on Windows. What are you gonna do? Now, how you roll out new services? Rolling out new services, like I mentioned it, use your private Docker. It's not really difficult to set up. You can just literally call pull down the Docker registry and just Docker run, Docker registry. And you have your own private Docker registry set up. Create a UI of abstraction to the users. I love simple things. Who doesn't love simple things? Why going over and telling the users or and don't take it because I'm also part, I do architect a lot and that's the reason why I like simple things. Why do I need to learn like the CLI? Just click a button. Although it looks like Windowsy but it's easier sometimes to just go and click a button and have everything into it. Manage the clusters with marathon. We'll already talk about it. Where containers are processes and one of the other things, use CI CD. CI CD will allow you to go over and tell it, build my new Docker container, put it in place. Okay, I have my new Docker container. Go over and tell Kubernetes deploy this new replica using this new image. And all this stuff you have to use it in the backend. Don't think that the users are gonna be sometimes knowledgeable enough to figure out how to do all this stuff. That's the whole UI abstraction it is for. And two of the things that you can go and use is those two projects that we have there. Continuous is like the CI pipeline that we open-source it. And Strategos is pretty much the UI that I'm talking about. If you wanna go ahead and give it a shot, feel free. Here it's pretty much an example of how we're rolling out services. We have the users that goes into Continuous. Basically, that's kind of like a reverse engineer Travis CI that we have. They don't even have to worry about knowing CI itself. You just upload your code, your Docker file, or whatever it is, put a configuration file and tell it execute Docker run. By the end of it, the CI will basically, you will have it inside of your Docker registry, which is available to your cluster itself. And then you can either from CI itself call the UI and tell it go ahead and deploy this new stuff. Or once the UI basically refreshes with the new image from the Docker from the Docker registry, the user can go over and define, okay, I have my downtown, I'm gonna go over and tell it deploy this stuff. And this, everything is just like done through API. They don't have to worry about anything. It's really simple to use. We have to use it to do crazy stuff. Well, not really crazy stuff. Some stuff, like for instance, we need it, and this is just one of the projects that we're having there. We need it dashboard. That was gonna allow the users to create dashboards on the fly. And literally go ahead and say, okay, I have my dashboard and I have all these metrics and I'm gonna need to go and use it. The way that we deploy it is that we grab dashing. Dashing is a new, it's a dashboard framework that Shopify created. The only problem is that it's a Rails, it's a rack application, written in Ruby. So we're scaling it and doing all that kind of stuff. You need to go into the server and modify the files directly and then reload the application itself. The way that we're doing it with the framework is that we just give the users, create your new dashboard, put the name into it. We give them the list of widgets that they can see one after another and just select, okay, I want a meter, I want a graph, and I want something else. And then, just a huge text area where they copy, paste, whether if it is Java, Python, C, whatever they want to pull down metrics from whatever they want. And we go over and drop it into a container and gets executed into the framework. They don't have to know anything else. In less than probably two minutes, the dashboard is already pulling the data and pretty much putting new stuff into it. So as you can see, you can go over and create really different stuff, really amazing stuff that you can think, okay, not even a single way I can automate this process. But now that you can go over and say, I need a new, I have a new container, which basically is a process itself. You can scale it as much as you want. You don't have to say, okay, I have only my server here running and I'm gonna do something else. On the same framework, not only the dashboard service is running, it's basically running also the CI application. Why? Because Jenkins has a plugin for Mesos, which literally you go over and tells the Jenkins master, talk to Mesos, figure out where you have resources, and send this job, execute it, send it back and report it to me. So it gives you a lot of functionality with one single cluster itself. And you can go ahead and do really amazing stuff with it. And I still have four minutes left. Okay. Yeah, almost. So with that in mind, there are some links here where you can go over and put it in there. You can pretty much just grab the things out of the semantic GitHub account. Skrotevos is gonna be uploaded on June 30. Kubernetes, IO, Mesos, and Marathon, which are basically the tools that are here. You can go over into it, or you can just wait until the first two are gonna be available. And you can just one click bot and deploy it anywhere that you want. And with that said, I'm gonna leave the rest four questions, which I think is like four minutes or something. Any questions? Oh, do we have a microphone, just that one? Okay. How long? How far? Okay, so the question was how well Mesos handles the fact that you lose a VM or a physical server? It works really well. I've been testing it out and literally killing, like, destroying VMs on top of OpenStack. And they will go ahead and Mesos will detect that the job is no longer running because the Mesos slave basically reports, I think, every second to the Mesos server, or every half a second. I think you can configure it how fast you want it to report. You have to take into account that every time it reports back, it creates a log. So you have to consider it, to put all those logs into either DevNul or something else to not to just run out of memory in the server itself. But it does, it works really fast. Like I mentioned, there are some times where things go down and I don't even care about it because it's been managed by it. The whole framework, like for instance, the CI framework that is running on this stuff is probably around 70 servers. I'm able to support up to losing 40% of them. And the application won't go down. As long as not the same components go down, I mean, it will just skip them up and running right away. Any other question? No? Okay. Well, appreciate it. Thank you very much for the time.


Ambar's Brigade Nigeria has committed to developing youth leadership skills for national service and patriotism, highlighting the impetus of investing in future leaders for nation-building. National President Professor Sam Singh Dunar encouraged youths to focus on shaping their future and careers despite economic realities and restiveness. National patron at Nuhu Dika also emphasized skill acquisition for youth, self-reliance and aim to empower them through self-sufficiency certificates. The youth makes up about 35 to 45 percent of the population of a country and these are the workforce of a country. When a country is full of youth, it means the country has a future. No things are difficult with respect to employment. Most of the percentage of people that are unemployed are the youth. But there is a need for us to learn a thread. There is a need for us to be self-reliance. There is a need for us to have something to do so that we don't depend on government color drop alone. By so doing, I'm sure the youth will contribute their quota in nation-building. We believe in the country called Nigeria, with quite a lot of government policies going on. We believe the country will be better and there is future for tomorrow for the youth. So the earlier we catch them, the better for Nigeria and the society. My vision for the boys is catching them young with the word of God, then empowering them so that they become self-sufficient. Even with their certificates, they should be able to have something to do for the society. Whatever certificate you have, you need to use your hands. It is something tangible, something practical that even when government is paying you, you rely back on something. It does not all depend on government. It can be self-sufficient in all. Other stakeholders emphasise the significance of character-building and disciplining youth as future investments urging them to avoid violence and drug abuse to protect their image and cover Nigerian government policies to prepare them. The No Boys Brigade is a youth ministry which encourages young people in making them actually the best citizens and leaders of tomorrow. That is the recognition that has been made. My encouragement to him as he joins us is that he will not relent in what he's been doing. The town has been taken to a wider horizon that is now recognised as a national patron. Always take the youth at hand. Always make sure that you fix these youths where they are supposed to be, where they can also be.


Welcome to another episode of Frightfully Forgotten Horror Movies, and this episode is a request from one of our patrons, Gonzalo Valdez, who would like us to do 1980s Inferno. This one was written and directed by the master himself, Dario Argento. And it shows. A lot. The first note I made about this movie was super Argento. D. McCloskey is in this and he was mostly an actor for TV and soap operas more notably. Irene Miracle is in this and she was in Midnight Express and Puppet Master. A lot of familiar faces are in this from a lot of like Italian horror movies and like Argento movies too. Movie starts off with one of our main characters, Rose, reading a book called The Three Mothers and it tells the story of three evil sisters who rule the world through sorrow, tears and darkness and they rule the world from three different houses which are in different places in the world. These houses are built by this architect and it's this architect who has actually written this book. Rose kind of believes what she's reading in this book. She believes it to be true and she actually thinks that she's living in one of the houses it was built for one of these sisters. Walking back to her apartment and she's thinking about these keys that are mentioned in the book. One of the keys is in the cellar and she's looking at the cellar and she makes a connection like the cellar and she sees like a grate underneath. She actually goes underneath. Yeah, it's all easy too, she just lifts it up. At this point it's very dreamy, not even sure if it's real or if she's dreaming all this. Well, she drops her brooch in this water well she's got to go and try to retrieve it, right? Super deep. It's like almost a whole other world underneath here. This woman could hold her breath for a really long time. Corpse kind of floats in her and she freaks out and goes back up the ladder, right? She writes a letter to her brother who lives in Rome, doesn't even have a chance to read it because he's too mesmerized by this woman he's seeing. Again, you're not even sure if she's really there or if he's imagining it because it's so dreamy. This friend ends up actually opening the letter and reading it and then the letter just basically says what she saw and what she suspects and she thinks she's living in this house of this evil sister decides to take it upon herself to go actually take out the book. She goes right at closing, like what a, you don't do that, you go right at close.  Please exit through here and she goes to go through what you assume would be an exit but this exit actually leads to these weird passageways and stumbles upon some weird witch type person, these cauldrons and everything like. All these weird vials that are boiling. And these witch hands with these long fingers which will look familiar if you've seen another Argento movie. Goes to grab the book away from her, she gets to the cab again which looks like another Argento movie in the cab. This is Trasa. This is Trasa. So Sarah gets back to her apartment building, she's freaked out and she meets this guy.    They put on some like this opera music, calm down and relax a little bit. Opera music is so calm. The lights start to dim down and the power starts to go out so the song starts to cut in and out. He kind of goes to the fuse box, I fixed it. He just comes out of the darkness with a knife through his neck. Mark ends up finding Sarah dead in her apartment and he ends up actually finding remnants of the letter that his sister sent him but he didn't get a chance to read before and he ends up going to New York to find his sister. In the meantime, his sister is in her apartment seeing all these like weird silhouettes through a door and she starts to get into all these weird passageways and all of a sudden you see these hands, these witch hands with these nails grab her face, puts her head right into these nails and you see the hand grab the top of a window pane, jams down into her neck. Mark now has gotten to New York, he's gotten into his sister's apartment, he ends up finding a void space underneath the floor and that's where we're going to end it because there's a lot more that happens, there's a lot more people that Mark ends up running into and a lot more weird situations. So this movie is kind of the forgotten sequel to Suspiria and a lot of people may not even know that you know Suspiria has a sequel and that's big shoes to fill. It broke through, right? It was big and not just in some home country but it was big in North America and it basically blew the doors open for Italian horror and now he is here trying to do a sequel to one of his best known movies and man that's gotta be tough. You can only really go down from Suspiria really I mean and but this this movie doesn't go down, it stays along the same lines it's just that it's different maybe if this movie does get some bad reviews it's probably because it's not Suspiria. Exactly and you can tell, you can tell that Argento is trying to be different from Suspiria like Suspiria starts off super strong, lots of gore and deaths right in the beginning of the movie and this movie you're like where's all the Argento gore fest bright red bloody deaths they're not there until probably halfway or past halfway through the movie you start to see that so you can tell he's like okay I don't want to be a cookie cutter movie maker right I don't want to just do Suspiria again. That's exactly what people would accuse him of doing yeah oh this is just Suspiria again so either way he's kind of fucked. Exactly and the movie does do a great job of sort of starting to flesh out this world with these three mothers, right, these three sisters because you can't just have another Suspiria and just have killing you need to have start to have story underlining it. You don't really put it all together until about halfway through the movie oh this is a sequel or in the same world the Suspiria and you get a bit more back story to Suspiria and then you get teased a little bit for the next movie too right with the next sister the music it was done by Keith Emerson and it's quite a haunting score actually the pacing of this movie is very odd I found like it's very Italian the first half of the movie is just people wandering around yeah these beautifully lit spaces these weird spaces kind of just yeah looking around halfway through the movie it picks up there's dialogue and you get okay now things are moving he does a good job of sort of immersing you into the world right the kills are great oh yeah they don't start off right off the bat then they start happening quickly after right bookstore guy yeah he's drowning all those kittens and then he gets eaten alive by a bunch of rats yeah help help if they're eating me alive help somebody does come to I guess help them and they just kill them yeah and there's a woman that gets eaten alive by a bunch of cats yeah cats getting like throwing at all this mayhem and suspense and everything it's like that the witch is commanding all these animals architect yeah tongue by his his own voice box yeah and just his wheelchair tips over and it's just enough just enough that his neck hangs in this movie too there's also a sense of urgency about three quarters of the way through because a fire starts in this building there's a sense of urgency in the pacing really starts to pick up because mark finds that void space a fire that's going on right in the meantime that he's not aware of yeah the movie's called inferno for a reason yeah typical are gentle like he picks his settings very well everything is huge everything looks so big in this movie right took it to an epic level right and it's it's an epic sequel so if you did not know that there was actually a sequel to Suspiria and you want to check it out but definitely check out inferno and also check out the movie that came after it the mother of tears so in the meantime keep drinking


We would have litter arms on the ends of these two white poles right here, and then the litter arms, you would raise it up, and you'd raise the litter up, and then put one litter where that is right there, and you'd do that for both sides, and then you can have four litterers. So basically, if it's a really uncomfortable area, that's probably where you want to set up. It's hard to get in, because speed is important. So as you're moving to the patrol base, right now, it's a team security. The two teams might be, like, a team of patrol officers, right? Radio 2, they look similar, but some are just newer models, some are older models. Radio 2, they look similar, but some are just newer models, some are just newer models. Lieutenant Colonel Duke Rhyme, D-U-K-E-R-E-I-M. Lieutenant Colonel Duke Rhyme, Italian commander of 423 Infantry. So we're out here participating in Cobra Gold with Thailand Army Forces. It's a great opportunity for us to come together in a multinational exercise with our army and their army. So it's a great opportunity for us to partner with the Thailand Forces. They've got some new striker variants that we've had for the last couple decades, and so we're creating a unique opportunity to work together to show our TTPs, our tactics, techniques and procedures, along with some of the things that they've developed over the years and come together as a fighting force and trade great ways to train and work together. Anytime we get to work with our multinational forces is a great opportunity. We get to see what they're capable of, they get to see what we're capable of, but most importantly, we get to create those relationships, those lasting relationships that will bridge generations to come as we continue to fight alongside each other in the Indo-Paycom region. No, I think this is a great opportunity for all of us to come together. Our forces, we didn't get to do this last year because of COVID, and so I think it's a unique opportunity that we could come together. We still had some restrictions, but we fought through those, and it shows the importance of this exercise as we continue to build relationships and training throughout the region. Staff Sergeant Geraldo Almondaris, G-E-R-A-L-D-O-A-L-M-E-N-D-A-R-E-S. Okay, so what's going on here is we're building relations between the United States Army and the Thailand soldiers, the Royal Thai Army soldiers, and we're just teaching them, showing them our tactics and showing them how we run battle drills, showing them more of how we set up defenses, offenses with strikers and dismounts. Actually, they have a great sense of urgency. They did pick up on everything very well. I'm PFC Charles Fairbairn, C-H-A-R-L-E-S-F-A-I-R-B-A-I-R-N. I'm a driver. So what do you do? I drive the striker. I've been really active in teaching, and I'm a striker leader, so I'm really knowledgeable about the striker. I've had a big part in teaching them how the striker works, like how to PMCS the striker, which is doing the basic maintenance on the striker, teaching them about the weapon systems and stuff like that. They've been really receptive to everything that we've been teaching them, really engaged, and I feel like it's been working really well. Just their readiness to do anything. It doesn't matter if it's as far as maintenance or dismounting from the striker and pulling security, they're always really moving to it and getting stuff done. Just about their culture and some of their different tactics. Their strikers are different than ours and what's different about their strikers and stuff like that.