The 2nd Battalion, 8th Cavalry Regiment, is in Estonia preparing to train with their NATO partners. Staff Sergeant Aaron Jackson explains how the CAV is training for a different kind of fight. What moved into last night was the seizure of an airfield and establishing an OP just securing ground, getting our teams to move forward, detached from a squad or a larger element, and get them focused on conducting observation and then reacting to contact from both enemy OP's and also a larger force in which they might not be able to fight and just getting those team leaders to focus on that decision making process and understanding what to do when they cannot fight that fight and how to break contact. And that's really going to tie into our training with the Estonians tomorrow and next week because the way that they fight is they work in a lot of the delay operations. They work a lot of screens. They work a lot of OP's and attack and withdraw. So us practicing some of the things that we don't get a chance to do all the time at our home station is really good for the guys. It's a good change of pace for them. Reporting from Tapa Estonia, I'm Army Sergeant Jason Alvarez.


Hello everyone. My name is Mr. Sandesh Parek. I am currently working as an assistant professor in the department of computer science and engineering at Walchand Institute of Technology, Solapur. In this session, I am going to introduce you to some of the approaches and challenges while developing the mobile app. At the end of this session, you will be understood the different types of the challenges and approaches in the development of the mobile application in the Android platform. Let's start with the different application development approaches. There are mainly three aspects which considered while building the app. First one is the business use case. In this, there are three cases. First one is the business to consumer such as the banking where the app is provided to the customers directly. Business to employee such as when doctors check the remote patients and monitors his health. Such cases is referred as the business to employee. Third one is the business to business to mobilize the supply chain management like vendors, suppliers, etc. Second aspect is the profile of the user. Every user should produce his own profile in the app. For example, the consumer, agent, partners and executives, etc. And third aspect is the mobile device. That is the type of the mobile device and the device connectivity and the platforms used on the mobile is also an aspect. Now we will see the different approaches. First one is the native approach. In this, the native app is created on the native platform using the platform API. Second is the web approach. In this, the mobile application is not installed on the mobile device. Actually it is rendered in the mobile browser on the network. And the languages such as the HTML, CSS and JavaScript are used to build these apps. And third one is the hybrid approach in which the native and web approach both used in this way. Third, three different philosophies. First one is the web-based philosophy. In this, the web is generated for the application development. And the web approach applications are used and the native wrappers are also used. And in this way, the user get feel like it is installed on the native mobile platform. Second is cross compiler philosophy. In this philosophy, the hybrid app is generated using the web technologies such as the HTML, CSS and JavaScript as we discussed earlier. Third one is the middle-well philosophy. In this, the hybrid app is installed in the middle-ware server so that it can facilitate to the consumer to interact with the enterprise server. Now let's see the development challenges. User experience specific challenges are within short period of time. App has to make impression on the user otherwise it will be collapsed. Second is that it should have the native look and feel. And third one is responsiveness means it should respond very fastly otherwise customers will not gain any interest into that. And it should get the user's preferences so that it is called as the personalized app. Next is the functionality specific challenges. It should consume the very less battery and the computing power so that it should be a throughput oriented app. Second is the network access. That is the app should be used relevant network to interact with the user. Next challenges are the data specific challenges. Whatever the data related to app is provided with the security that no one authorized person should get that data and the data of the user should be kept in the private. These are the challenges in the data specific challenges. Next one is the platform specific challenges that is the different type of platforms are already available in the market currently. So that it should be available to all the platforms should adopt the app. Next one is the screen type. Different types of screens are available in the market as we know of the different size and different shapes, pixel size, resolutions and apps should grasp each of these. Next one is the input mechanism that it should get the data by various input mechanisms such as the touch screens, trash balls, quality keyboards, etc. These are the five tenets of the winning app. That is first one is the intimate. It means the app should be belonging to the user. Interactive means app should be interactive with the user. Immediate means in sense of the response it should be responded to the user. Next one is the it should be intelligent and insightful to the user. Now there is one question for you guys that is beyond these terms discussed. Do you think there are any other terms which are impact on the mobile app development? If yes, then list. Yes, there are so many other factors which have the impact on the mobile app development. They are the way in which app is distributed and the place from where app is installed and the environment in which app is accessed and the device which is used. Four logical components of the Android apps are there. First one is the activity that is the process going on in the app is called as the activity. It mostly has the active user interface. Second one is the service that is provided at the background to the user. Third one is the broadcast receiver. It means whatever announcement during the app procedure like the incoming call, SMS, Wi-Fi location, availability, etc. are received by the broadcast receiver and content provider provides the facility to exchange the different types of data which is shared in between the app during its working. It is the new facility provided to the user in this way. Now let me start with the activity in this session for a user which typically begins interacting with an app by starting the activity. It is not necessary that the app should compulsory get the activity or the app may be without the activity also. But over the course of the interaction the activity goes into the various states during its lifetime. And during these lifetimes according to the states he visits it should be visible or the hidden to the user. The main states of the activities are active, paused, stopped and disturbed. Active means which is in focus and interacting to the user. Pause means when some of the notifications generated by the app at that time it goes at the background and user will not interact at that state. It is called the paused. Next one is the stopped. That is when user escape from the app that is by hitting the back key at this state is called the stop state. And destroyed means in this sense where the app is relocated and all the memory allocated for the app is destroyed. So it is the lifetime of the activity as we see on create it is created and on start it is start its procedure. On resume it resumes its procedure and then it becomes the active state. And again on pause it is paused, on stop it is stopped and on destroy the memory allocated is destroyed. And again on create it is get created. In this cycle the activity procedure is continuous in the app. So these are some references I used to make this video. Thank you.


What is going on everybody? My name is Alex Freeberg and today we're going to be looking at the top 10 Udemy courses for data analysts. I absolutely love the Udemy platform. I think it's fantastic. I love it so much because I don't have to pay a monthly subscription. I can just pay for that one course that I actually want to take and typically you can get every course that we're going to look at today for around $10 to $15. If you are interested in any of the courses that we look at today, there will be links in the description so you can go and check those out for yourself. With that being said let's jump into it and look at our first course. Now before we look at our first course I want to say that these are in order of how I would take them so the very first course is the first course that I would recommend taking at the beginning and the course that we look at at the end I would take last. Now the first three courses that we're going to look at are all sequel based. The first one is sequel server, the next one is post-gray sequel and the last one is my sequel. Now I could talk about the differences between each type of sequel but I will save that for another video. Let's get started with our very first course which is a sequel server course. Now in this course you're going to be going over sequel but you're also going to be going over something called T-SQL. Now if you don't know what that is it's a type of sequel called transact sequel and it is native only to Microsoft sequel server. T-SQL is something that I picked up early on in my career and it has been extremely helpful. I highly recommend learning it. Let's look at some of the things that you're going to learn in this course. In this course you're going to learn how to create and alter your tables. You're going to learn the very basics of the select from where group by having an order by. Those are the very basics that everybody should know how to use. It's also going to go into some of the more intermediate things like unions, case statements, and merges and then into some things that I would consider a little bit more advanced like sub queries, CTEs, pivots, UDFs, applies, things like that that are a little bit more advanced. When I got my very first job as a data analyst and learned that they use sequel server this is the course that I took and I definitely think it helped me get up to speed and learn all the stuff that I need to know for my job. The second sequel course that we're going to look at is the complete sequel bootcamp 2020 go from zero to hero a very popular course on Udemy. One thing to note and something that you'll see across the board on Udemy is that these prices are extremely inflated. It says 174.99. You can go and get a coupon or wait for one of their sales and get this for around $15 and that is for any course that you see on Udemy. So do not pay the full price. If you are seeing that please pay the discounted price. It is much much cheaper. This course is going to go into the basics as well. The select from where group by order by all of those things as well as some of the more intermediate topics. It says advanced on here, but it is more the intermediate things around sub queries and joins and along the way they have these assessment tests where he actually tests you on these things where you can take a break actually work through a problem and see if you really know it and then you move on to the next section. That's something that I liked about this course. You can kind of break away from all the learning that you're doing and actually take a little quiz or test and make sure that you know the information that you're taking in the third sequel course is my sequel for data analytics and business intelligence. Now I really, really liked this course specifically for the business intelligence piece. The my sequel stuff is going to go into a lot of the same things that we saw in the past two courses, the basics, the intermediate stuff, but this one specifically combines it with the business intelligence. So let's look at some of the things that you're going to learn in this course. Like I said, you're going to go through all the basic and the intermediate sequel things like we talked about in the previous courses, but this course specifically is going to show you how to combine SQL and Tableau together so you can build those visualizations with the data that you're actually looking at and working with in SQL. The fourth course is going to be a data visualization tool and this one is going to be Power BI and I absolutely love Power BI. That's what I use at work and for this course specifically it's going to take you all the way from connecting a database to building those beautiful dashboards and so let's get into what you're going to learn in this course. I think what you're seeing right here is a perfect representation of what you're going to learn in this course, which is you're going to learn time series, aggregation filters, maps, scatter plots, interactive BI dashboards and creating an interactive business intelligence report and these things are extremely important to learn. So if you do not know how to do these things currently and you want to learn how to do it, this is probably the course that I would recommend the most. The fifth course is going to be building interactive dashboards with Tableau. Tableau and Power BI probably the two most popular business intelligence tools. So let's look at what this course has to offer. Now this course specifically is around building dashboards. So if you want to get into a job where you already have a job where you are building a lot of dashboards, this is going to teach you a lot of the fundamentals of the very common dashboards that you're probably going to be using and creating dashboards like tactical, operational, analytical and ad hoc dashboards all have their own flavor and their own variety. And so it's very important to know the difference and it helps you learn how to build dashboards all along the way. The sixth course that we're going to look at is Microsoft Excel advanced the data analysis tools you need. Now when I got my first data analyst shop, this is the very first course that I took on anything Excel related because I really wanted to up my skill level in terms of creating pivot tables and using VLOOKUP and other things that I really just had no idea about. So let's look at some of the things that this course will teach you. In this course, you'll learn things like HLOOKUPs, VLOOKUPs and macros which are all really good to know. And then you can use slicers to actually filter your data. Now I get asked all the time, what do I need to know in Excel to become a data analyst or to be a data analyst? And I think that if you take this course and you learn everything that's in it, you should be set for just about any data analyst job. Now the next three courses are all Python related. The first one is very focused on data analysis where the next two are not. So this one that I'm about to show you is one that I highly recommend taking and the next two are kind of optional. But let's look at our very first Python course and our seventh course overall which is Python for data science and machine learning boot camp. And if you notice this one is also by Jose Portilla, let's look at some of the things that you will learn in this course. I am actually going to walk through each thing that you're going to learn in this course because I think that this course is so fantastic. The very first thing is you're going to learn about Jupyter Notebooks, very, very good skill and tool to learn. You're going to do a very quick Python crash course, which is just the very basics of Python that you need to know just to get started. Then you're going to go into a few specific skills, NumPy, Pandas, Matplotlib and Seaborn. All of these skills are extremely important to know. I use a lot of these in my actual job and so I know how important they can actually be. I use Pandas a lot and that is one of the things that I tell people to learn first when they're actually learning Python. Then you're going to learn Plotly and Cufflinks and Geographical Plotting before you get to the data capstone project. The data capstone project is just a very quick project basically going over the things that you learned and just having you redo them. The project was actually pretty simple if you were walking through the course because it basically was a different version of the things that you had already learned, but you had to put them all together and you had to figure it out. So for me, really helpful, you know that I personally love projects and so highly recommend doing the projects in this course. The very next thing in this course is a little bit on machine learning. Now you may not use machine learning or it needs to know machine learning at all, but I think that is extremely important just to know some of the terminology and how some of these things are used. So some of the things that you're going to learn about machine learning are things like linear regression, cross validation and bias variance tradeoff, logistic regression, k nearest neighbors, decision trees, random forest, support vector machines, k means clustering, principal component analysis, recommender systems, NLP, neural nets, deep learning, big data and Spark with Python. And I know I just threw a ton of things at you. If you do not recognize a lot of those things, that's totally okay. It's a lot of machine learning stuff that a lot of data analysts are not going to use at all, but I do recommend going through them. It is not a super in depth course when it comes to the machine learning part is a very high level and just gives you an introduction into each of those concepts. So I recommend going through that just in case you want to go into data science or just in case somebody around you is talking about it, you can be educated and know a little bit about that topic as well. The eighth course is another Python one is the complete Python scripting for automation. I am a big believer in automating any work that you can automate. And so this was a very good course that I took. Let's look at some of the things that you'll learn in this course. I'm going to be honest, the descriptions that this guy wrote out for this course were not extremely helpful, but the basic things that you're going to be learning are centered heavily around files and automating all those processes. So moving and organizing your files, as well as reading in files to your database and automating that entire process. Our ninth course and the next Python course is one that is extremely popular is automate the boring stuff with Python programming. You can even get this one for free. Sometimes it is so popular. Sometimes they just give it away for free and it is a fantastic course to take, especially if you were just starting out with learning how to automate things. Let's look at some of the things that you're going to learn in this course. I think this description is perfect for what you're going to learn in this course.  You're going to learn things like generating and updating Excel spreadsheets. You're going to learn how to crawl the web and pull information from online sources. You'll write a script that will send out emails for you automatically. You'll be able to write a script that controls your mouse and keyboard and clicks and types for you. And one of my personal favorites, one that I think saves me the most time in my actual job, which is writing a program that sends out email notifications. I actually use that all the time on my job because I hate sending out reports every month or every week. I like to automate that stuff and Python is a fantastic way to do that. For our 10th course, it's statistics for data science and business analysis. I get asked all the time, what do I need to know in terms of math and statistics in order to be a data analyst? This course is for you. Please take this course and stop asking me. What statistics do I need to know? What math do I need to know? This answers all of it. If you take this course and you learn everything that's in here, you should be set in even a little bit more than set in order to be a data analyst. Let's look at some of the things that you're going to learn in this course. You're going to learn things like distributions, inferential statistics, hypothesis testing, and regression analysis. If you haven't learned this already, I'm going to let you in on a little secret. Regression analysis is extremely important, so you should definitely, definitely learn that skill. Now, I know this is a top 10 video, but there were just too many good courses on Udemy. I had to include a few bonus ones. These next two are two cloud platforms that you can learn AWS and Azure. This is one of the very first courses that I took when I was learning AWS, and this is AWS certified data analytics specialty 2020 hands on. Let's look at some of the things that you're going to learn in this course. You're going to learn things like data storage and S3 and DynamoDB. You'll also learn MapReduce, and you'll also learn how to process the data with Lambda and Glue ETL. The second bonus course is Microsoft Azure Beginners Guide plus AZ900 updated 2020. AZ900 is the actual certification exam that you can take if you want to become certified in Azure. So let's look at some of the things that you're going to learn in this course. You're going to learn things like Azure virtual machines, Azure data storage, and then you're going to go into a lot more of the products that you'll actually use as a data analyst. Things like Databricks, Azure Data Factory, and Azure SQL Server, and this kind of gives you just a brief overview of how they were used and how you will use them as a data analyst. Udemy was the very first platform that I ever went to learn anything about data analysis. That's because it was affordable and it was cheap, and it was something that I could absolutely take without any huge money commitment. And so I genuinely hope that these courses will be helpful for you as much as they were for me when I was first starting out. Thank you guys so much for watching. I really, really appreciate it. If you want to support the channel, be sure to like and subscribe below, and I'll see you in the next video.


I am First Lieutenant Weber. I'm a 70-210 air defense control officer and we provide control and aircraft of missiles to the MAG TAF. Today we focus on setting up our comm system, the inside of our OPVAC and the warfighter consoles we'll be working on and ensuring our radar is functionable. Our Marines in our unit are expected to go anywhere in the Pacific and provide control of aircraft and missiles so the more we can get to places like the Philippines, the better it is for the future in terms of preparedness. A lot of what we do in the air defense community requires a lot of cooperation, coordination and planning. By training with Allied partner nations we're showing that we can sort of transcend any cultural or linguistic or operational deficiencies we share and that we're preparing each other to work together in the long term future. Balakutan is a great experience for us because the Filipinos are a great ally for us so by being here we're showing them that we're looking to keep that relationship for a long time. Balakutan is a great experience for us to work with our Filipino counterparts and to show them not only that we can work together but that we plan to do it in the long term future.


trying to gain muscle, but you're over 50 and you want to do it naturally. Listen to this. Our next caller is Mike from Delaware. What's up Mike? How can we help you? Hi guys. I've really enjoyed your podcast and wanted to thank you for having me, allowing me to ask a question. I just a quick background. I'm 53, gonna be 54 this summer. Came up on my 50s in the worst shape of my life and decided to set some pretty audacious bucket list goals. And one of those was centered around fitness and I quickly discovered new about myself. If I didn't set a big goal, I probably wouldn't stick with it. So I went from nothing to setting a goal to win a over 50 bodybuilding competition. I'm happy to report that within with three years of dedicated work and some great help from folks like Craig Capruzzo and my trainer at the YMCA. I achieved my goal. Good job right on. Hell yeah. So it's been a really fun ride. I've I feel great. I'm in probably second best shape of my life. Maybe the best shape was when I was in the military, but I achieved that goal and I sent my photos into the the judge and said, what do you think? How could I do better? And not really thinking that I'd want to do another competition per se. But he said, you know, if you put on three to four pounds of lean muscle, you'd be competitive on a national stage. So that just totally reset my paradigm, I guess. And now I'm considering prepping to do another competition. And I don't know if that's a realistic goal for somebody my age. I feel great about what I've achieved. But I went from like two 10 and 23% body fat to the day I walked on stage, I was about 164. And by my little resistance scale, I was somewhere around 11% body fat. But I don't know if I can I've done pretty good at shredding, but I don't know if I can get bigger or not. Yeah. Okay. That's a that's a that's a pretty good question. Doug just pulled up your photos look really good. Right there. Yeah, that's him right there. Wow, fantastic. Yeah. By the way, say hi to Craig for us a good friend of ours. Yeah. Okay, so is this pot first off, I want to say something about bodybuilding judges. They're always going to say something like that. Keep coming back. Yeah. And, you know, be very careful. Don't get caught in the trap of, you know, sacrificing your health for a trophy, because it's it's an easy thing to do, especially once you start winning. Now, is it possible to gain three to four pounds of muscle? It totally is. It is it's going to be hard. But it's totally possible. And you did indicate in the written part of your question that you're doing this without any hormone treatment or anything like that. It's totally natural. Is that correct? Yeah. And you mentioned Craig, I don't want to overstep anywhere. He's been invaluable to me in this process has done a great job. And he's he suggested I look into that. And he also put me on to your podcast. I become a mind pump junkie. I listen to it when I'm driving all the time. So and so I just am hesitant. And I'm I'm seeking information, I guess. No, that's a good question. What you know what, Mike, we have a free hormone forum that is, you know, managed by actual hormone doctors. It's it's I believe it's my is a mind pump hormones on Facebook. So you can go there, join there, you can ask any questions. Now, I'm going to give you what I what they've said before on this particular question. But I do want to make sure you know I'm not the doctor, I'm not a hormone specialist. Now what they have said is that you can go on testosterone replacement therapy therapy go back off, and you'll go back to where you were before with the right kind of treatment. So a lot of people believe, once you go on, you have to stay on that's not necessarily true. Now my advice is this, I don't think it's a good idea to go on hormone replacement therapy just to build more muscle. I think it's more of a improve your quality of life thing. If you get your hormones checked, and you feel good, and you're not bad, and you're doing okay, I don't necessarily see why any why you would need to go on them. Now, would you gain muscle on hormone replacement therapy? Yeah, I mean, if it raises your testosterone, it could probably help. But if it's if your quality life is great, and you're healthy, I don't necessarily see the need for it, especially not for, you know, bodybuilding, I really don't see the value in it for, for, you know, competing, you know, on stage, especially if that's not your, your absolute passion. I do think it's totally possible to gain three to four pounds of muscle. You just started working out a few years ago, three to four pounds is totally possible by manipulating your training and your diet and really fine tuning things with everything. And maybe the pre contest diet portion, working on that a little bit. And then last thing I'll say, and Adams, you know, he said this many times, and I'd love his input on this.  So you don't necessarily have more muscle, you just got to look like you have more muscle. Yeah, Mike, you, you sound like a client that I would love to train because you seem like the type of guy that if I whatever I tell you to do, you're going to follow to a T based off of the discipline it takes to get yourself in the kind of shape you did in the time you did it, which I think is is awesome. I think if you were my client, I would actually just kind of challenge the way you're thinking as far as like, you know, we can stay in this bodybuilding phase and we can bring you an even better physique the next time around. And I had a lot of fun doing that myself. I did six shows over the course of three years and had a blast doing it. And I'm very competitive. So what turned into a thing of first proving, can I do it? And then I did it. I got on stage in place like fifth, my very first show, which gave me kind of the bug. And because I'm competitive, I then turned it into, okay, let me get on a national stage, see if I can do that. I did that. Then I took my first first place show and then I went pro. And so it became this like very, very fun, challenging time of my life that I enjoyed. Now I also sacrificed a lot of other things during that time. I probably wasn't the best, you know, partner. I know both in business and in my relationship, because I was so consumed with myself and my sport and what I was doing. If you have that freedom to do that and maybe you don't have the same type of responsibilities today that you maybe had 10, 20 years ago or whatever, then why not? We could do this. We could definitely bring you into the next show, you know, leaner and tighter, a couple pounds more muscle on you and do that. Now if you were allowing me to be coach and say, you know, what do you think, Adam? I'm at 50 something years old. I just put myself in some of the best shape of my life. What's another good goal for me to do? I would love to make you run through something like a maps power lift and let's see what we can do with your strength. Or I would love to put you through maps performance and say, you know what, dude, let's, let's, Mike, let's see how, how much we can improve your mobility. Let's, let's check out your squat. Let's check out your debt. Let's check out some of your movements and let's, let's see if we can improve some of these, these movements and get you not only looking the best you've ever lived in your life, but now let's start looking at the best movement or feeling the best you've ever felt in your life. And I would take your same, your same attitude and discipline that you obviously applied to competing bodybuilding. And I would want you to apply that in maybe a direction towards bodybuilding or maybe a direction towards powerlifting or strength, right? So if you allowed me that, right? If you allowed me to intervene on your, on your goals and what you would do, what you're open to doing, that's where I would push you because I think you would, you would overall benefit the most from that. But if, if you're focused on the bodybuilding thing to your original question, absolutely, we can put on three to five pounds of muscle. We could do that naturally. In fact, especially a body that's been as lean as you've been coming back the other direction is some of the best muscle gains I've ever had is after I've dieted really hard for a show, I reintroduced calories, I changed my programming up a bit, and I guarantee muscle is going to come on your body even at your age. So long as I, you know, hormones are, are fine, which I'm assuming they probably are if your body's responding the way it is. So, you know, the answer is really, is diving into what is it, Mike, you really want to get out of this. And if, if bodybuilding is something you find you're passionate about right now, absolutely, we can go after that and bring an even better physique on the next show. But if you were open to suggestions and ideas, I would want to push you in the direction of let's get, let's get really hyper focused now on mobility for a while, or, hey, let's work on strength and see what we can do with your discipline there. Such great advice, Adam. I 100% agree. And then as far as the hormone stuff in your question you asked about, you know, chances of cancer with increased testosterone, the best studies now show that your cancer risk actually goes up with low testosterone, not with high testosterone. Of course, we're talking about within the range of what's considered, you know, healthy. We're not talking about super physiological bodybuilding doses.  But again, we're not doctors. So if you go on that forum, you can ask questions. And if you want a consultation, you can actually talk to an expert and then ask those questions. We're not the ones that are, you know, we're not qualified really to answer anything, any questions along those lines. But you're in a pretty damn good place, Mike, at your age, getting to where you did, what Adam said is great. And I think if you did that, if you went mass performance or power lift, I think it would be great for your body. It's very different than what you were doing before. And that might be what actually puts that muscle on your body because it's so much more strength and performance focused. And if you don't have those programs, we can send that over to you, Mike. Oh, gosh, no, I don't know. And I don't want to ask for that. I mean, this has just been really, really helpful. Just, and Adam, I love what you're doing it. I don't want to take, this was part of a larger goal I have, which part of the reason I've enjoyed your show so much. I'm an ag guy, I grew up a farm boy, and I was still working agriculture. And my real dream is to give a TED Talk. And my TED Talk was to say how I won an over 50 bodybuilding competition, eating GMOs, whole milk and eggs. So I've enjoyed your like the Zbiotics episodes and things like that. And so much of what you say just makes sense. And I just like I say, the competition piece, I like where you're going with that, Adam, that that makes a lot of sense to your suggestions, because the competition was I don't, I don't have a burning desire to go back on stage, but I am very competitive. And when they kind of threw that carrot out there, I was like, well, I wonder, I like pushing myself for something that I never thought I could do. I could, I could tell Mike, I could direct that. Yeah, I could tell. And that's why I said you'd sign up for a powerlifting competition. One of those clients that I used to love to get a hold of your very rare. And when I get a hold of a client like you, I would try my best to influence you on what I thought would be, would be best for you.  And now I'd be challenging. All right, let's look for so other goals and other pursuits within, you know, health and fitness and see what what else you could do. I bet a powerlifting competition would be a blast. I bet you'd have a lot of fun doing that. And they have age categories for that and of course weight categories. So it's a pretty, you know, somewhat level playing field. I bet that would be a lot of fun. Yeah. And even if you didn't get and compete on, on stage in that, I think just competing with yourself saying, okay, let's check where your, your deadlift, your squat, your benches and let's write a program and follow it and dial in your diet and let's see how much we can improve that over the next three to six months. We'll set, we'll send those over to you, Mike. Okay. Josh, guys, thank you so much. Thanks for what you're doing. Really enjoy your show and keep it up. And thanks, thanks for answering my questions and giving me some ideas. Yeah, no problem. And send Craig our love. Yeah, yeah. Keep us posted, Mike. Let us know how you do. I sure will. Thanks. Thanks so much. Thank you. That's a great position to be in. Oh, I love, I love, you could tell, I could tell this is like my, one of my favorite type of clients to train right here. I mean, you got the discipline at, at his age to put himself in that kind of shape and to get up on stage like that and perform that well. Like that's one of the things I love that I loved about competing is and why I know what we've, I ragged on it a lot early on in the show when we first started, but it did have tremendous value as far as the one, disciplining yourself to be that consistent for that long of a period of time to get there. And then you learn so much about your own body and diet and how it responds to things by going to that level. That's why I was trying to, after you said mass power lift, it like so many bells went off for me. It would be so perfect. That makes so much sense. It's competitive. It's objective, right? It's not judged. It's you lift the weight or you don't, and it's a different direction than bodybuilding. Nobody cares how you look. It's all about how much you lift.  Yeah. It's now it's like, let's really add into that and build the muscle. So exactly what he needs to, if you wanted to go back to power. I bet you that's what puts the three, four pounds muscle on him. So that would be my guess. Well, that's kind of where I was thinking too, is like he wouldn't have to abandon this whole idea of maybe even competing again. Yeah, it could be down the road. Yeah. Go run, go chase strength for a while, get really good at that, try and improve that. And it'll only feed into his physique if he wants to go compete maybe next year. Totally. Hey, if you enjoyed that clip, you can find the full episode here, or you can find other clips over here. And be sure to subscribe.


Hi everyone, my name is Ishaï, I'm the CTO and co-founder of Lifecycle. Today I'm going to talk about how to create an amazing onboarding experience for developers when they engage with a new codebase, a new and unfamiliar codebase, using self-contained development environment. I'll start with a short story, a few years ago I led the development of an internal product that was later released as an open-source solution for feature flagging and remote configuration. Now, during that time, we wanted developers at the company to contribute code to the project. It was an open-source project, after all. And we, to achieve that, we've organized a company-wide Acton. Because the project was called Tweak, we naturally called it a Tweakathon. And we were excited, we created additional documentation for the project. We created a dedicated backlog for the event, we promote the event, print t-shirts. But at the end, well, it didn't work that well. We got very few contributions. And the main reason was that developers were struggling to run the application, let alone write code or test it or develop new features. And it was because Tweak was a complex application, still is a complex application. And it can take lots of hours and frustration of developers and lots of tricks to make such a complex project work on a development machine. And today I'm going to talk about how we can create a better experience. Before we dive into that, let me tell you a bit about myself. I'm Mishai, I'm a CTO and co-founder of Lifecycle. I'm a full-stack developer for at least a decade. I'm passionate about cloud development, backend architecture, user experience, developer experience, functional programming, and of course, Docker. I'm the creator and maintainer of Tweak, an open-source cloud-native feature management solution. That's what I talked before. And I care deeply on simplicity, consistency, and elegance in code. So that was me. Let me tell you about Lifecycle. We are an early startup that's building the next-generation collaboration tools for development teams. It's based on building continuously playground environments that are rich and interactable and any stakeholders in the organization can engage with them. And we are trying to bridge the gap between coders and non-coders. The project is currently itself, but it will soon be in public beta. So be sure to check it out. So let's get back to the problem. How does it feel to start working on a new complex codebase? Okay, so first of all, we are trying to build and run. And we might encounter the problem that we have there on iOS. Or we have missing dependencies that we need to install, like SDK, language SDK, run times. In many cases, we have a conflicting SDK like in Node. We can have like Node 12 and it will call Node 16. The same can go with Ruby or Python or the Net. And beside that, we have the package managers that are going to probably fall some random errors that we are going to search them on StackOverflow or ask someone that managed to get it properly. Afterwards, we'll read the readme and try to make it work. We'll run some magic scripts and watch them fail in some cases. We might need to change our host file, install other tools and dependencies or databases or whatever the readme required us. And maybe if you're in an organization that have lots of security, you might need to install a root CA or something like that. And additionally, afterwards, we are trying to develop that debugging not necessarily work. Breakpoints are not triggered. The ID might not have correct autocomplete or dependencies. The code watch rebuild mechanism doesn't work and we have exhausted our watch files and we need something like Watchman. ArchModel reloading doesn't work because whatever WebSocket issue or course issue. And maybe we have additional problems with external dependencies that we need to use and connect and configure. And then we get to integration test. And well, that's an all different nightmare with Selenium and other tools that require much more complex and they are flaky and not working properly. But the worst part about it beside all of this is that usually after a few months of working on a different project, we'll probably need to do it all over and over again. Because the environment change, our computer change and then we'll be like, ah, again. So why is it so difficult? I mean, all developers love to build tools. I mean, shouldn't we solve this problem? I mean, probably every developer know it to some extension depending on the complexity of the project they are working. So it's difficult. Part of it is because we have so many tools. We have so many versions of different SDK and run times, different operation systems. We have this work on my machine syndrome that if it work on my machine, I'm not going to touch it and well, I'm going to use this old machine that work and install a new developer machine after mine will burn or something. We have fast amount of tool chains and ID and they are rapidly changing and we have new and new versions. Our development flows are much more complex and can easily break. It's not just building and running. We have debugging. We have watch. We have water loading. We have Docker months. Our developer machines are polluted and overloaded with tools. And yeah, it's a waste of time and lots and lots of frustration. To solve it, I mean, what's the dream of the development environment? Well, the way I see it, we want developing environment that are consistent. They provide the same predictable experience. No random stuff that is happening out of nowhere. They are reproducible.  So that's important. Additionally, they are isolated. They are not affected by other stuff that is running on my computer, whether it's other developer environment or my machine itself. They are self-contained, meaning that all the dependencies and tools needed for development are defined and packaged inside that environment and they are unbreakable. We want struggle with countless hours to get things working again. In the worst case, we can just rebuild it. Now, some of the things are said about containers and about Docker. That's one of the premises that it provides with Docker images. And two years ago, this code, one of the most popular ID, had support for developing on a container. It was part of the remote extension. And the interesting part is, I mean, in the past, there are some companies that use a VM and they provision them and the developers use them instead of their own machine. But there are some problems with that. Besides that, it requires lots of operations. In addition, we somehow don't have the best experience because the ID itself is not running locally. But in this code case, the front end of the ID is running locally on our machine and the back end, which contained the application file, a terminal session, the language server and extensions on the running, are run in a server that is packed inside a container. So we get a local experience, but we operate on a remote file system and on a remote machine. So that's pretty awesome. And I'm going to show how we are going to use this technology. Before we begin, I'm going to show lots of examples on different code repository and how to run them. All the examples and slides are available on GitHub. So you can check it out afterwards. All the tools in this presentation are based on open-source and free-to-use projects. So you can use them yourself easily. And most examples here are far from bulletproof. They can be optimized. And some of them use tools that can be considered experimental. That's a bit of a disclaimer here. So let's begin. And I'm going to start with a project. It's a simple one. It's a CLI tool for creating ASCII art from images. It's a simple image to ASCII. The project is written in Go, but it's an older version of Go before we have Go models. And I'm going to run it with a development container. So let's open it. I have it here. And that's the open-source repository open, or actually a fork of it for all repositories I'm using at Fox. And you can see that the IDE looks like a regular VS Code, actually run inside a development container. We see it here in the status page in the green one. What does it mean? Well, I'll show a quick example. If I open here a command prompt, and yes, I'm running Windows, which is embarrassing, but I'm going to try to run Go. And I don't have it here. I don't have it here because it's my personal machine. And it's not a development... The OS operation system does not have any developer tools beside Docker and Git. So I have Docker, and I can see that here I have the... The different development container running. We'll get to it afterwards. But what's interesting, we don't have Go here, but we do have it here. And the reason for that is that this terminal is not running on my actual computer, it's running inside the development container. So how does this happen? How does this happen? We have a dev container that defines... that we're going to use it... that contains instructions for VS Code how to open this environment. So we have some settings related to Golang. We have extension that... means that the extension of Golang is going to be installed inside the IDE. So we see it here. And we have a Docker file that contains the image... instruction for how to build the image for that development container. So we can see that it's a base Ubuntu image.  We need to use... we need to use Go without Go modules. And we also install a DEP which is a... it's an early Golang dependency manager that this project is using. And some extension for the shell that we have autocomplete for Golang and Git. Okay, so that's basically it. And another thing, we can see that the PWE, the directory here is actually gofrcgithub.com inside the go path of a module. Now, the reason for that is because it's an old project, we have to clone it in a specific directory. So to achieve it, that we have a workspace that defined this folder and in the dev container, we have also... we create a sim link for that directory. And that's pretty awesome because on my machine it will be really terrible to put it in that way. And I mean, I always have a problem with Go that it... Go in the past that it has... I mean, it forced me to install the project to clone to a specific directory. That was a terrible experience. Just in my opinion. Okay, so we run in the right folder with the right tools. We have also DEP, which is for the dependency. For checking the Go dependency, we have the Go package here. And I'm going to try to run the project. And I'm going to put a URL that I'm going to turn into ASCII. Now, it doesn't work because this CLI only works with files. It doesn't work with URLs. So I want to edit this feature. So I'll go here to the convert. And you can see that I have autocomplete and everything work properly. Basically, the code that I wanted to change here is the function that downloads the image. And it's the open image file. Now, I'm not going to do it right now, but believe me, it's only a few lines of code. I'm just going to check out to a branch that I've already implemented it in. Okay, so we can see the open image file as HTTP check. And if so, it download the image. Very few lines of code. And then I'm going to try to run it. And we see we have an image. We can also run image of myself here. So everything works properly. And we've added some code. And we have a good experience here. Everything work out of the box. Despite this is an older version of Go and Go models that we need to insert in the same directory. Actually, in most cases, opening the repository and making it work properly with the tool can take more time than implementing this small fix. Okay, so let's get back to the presentation. What we've seen here, we saw development container that is integrated with the SCM. I could do a checkout to a branch. I did remote code editing. I have a remote terminal. And we configured the environment. We set up the runtime SDKs, the shell extension we want. Some takes with environment variable and path like the Go models and the sim link. And we defined the extension we need. In this case, a single extension, which is a Go link. So that was simple. Let's try something that is a bit more complex, a web server. So that's a simple flask app to send email-based email and based on SendGrid example. We have here some new challenges, such as running and interacting with a server and managing the applications in Python also and also managing secrets, because we need to have like SendGrid API key. And I also show how we can debug it. So let's get to the next example, the simple email sender example. So we have here a dev container with Python. We can see that we have the extension of Python. We have a docker file. And the docker file in addition to installing Python, or Python is already installed because it's a base image, we are going to install an additional tool called SOPS. SOPS is a tool for encrypting secret and then we can put them inside the repository. How does it work? Well, I have here the secret encrypted JSON that contains SendGrid API key and mail default sender. And you see that the data is encrypted. We can't use it, but I can decrypt it using SOPS-D and write it to a .n file. I actually have the script running in the init. So let's do it. And what is happening? The SOPS-YAML definition defined the PGP key that we are supporting. It actually can be not just PGP, it can also connect to a cloud encryption service solution like Azure Key Vault or AWS KMS. And now that created the .n with the right values. To showcase an example how it looked like, I'm going to take another file that we have here, an example, and I'm going to decrypt it. We have here some secret number, so I'm going to decrypt instead of the secret. I'm going to decrypt the example. And we see that we got the data with some secret number before. It didn't work before because this format is not compatible with the .n that I was asking. So very simple, that's the value, the meaning of the universe. And okay. So let's try to run our Python app. And you see that I've already have a configuration here. That's because that in the lunch day, so I define how to run the application here and how to debug it. And I'm going to run Python debug. And the application is running. No, because the application is running on a port inside the container, so I need to do a port folding to be able to access it on my local machine. So we see that it's already did it automatically, but if we look here, we have a port, and we see that the port 5000 is bound to port 5000 on my local machine. So if I'll go here, I'll have the application running and I'm going to send an email at ebc123 at mailinato. Mailinato, let's check. Yeah, I'm testing ebcd. Oh, it's ebcd. ebcd123 at mailinato. Maybe I should copy it. No, it's work. Great. So we have the email and it was sent. And beside we see that the application is working and I'm interacting with it on my local machine. I can also put breakpoints. So let's go to the app pie and put here some breakpoints and send again. And it's stuck probably because of the breakpoint and we see the breakpoint here. So we have a good debugging experience and it works after the box and that's awesome. So let's kill it. Oh, yeah. And let's talk a bit about it. So I'll go back to the slides. So we saw the usage of secret encryption. So the secret stills, the secret sits inside the repository but encrypted. We are using Mozilla SOPs for encrypting and decrypting the secrets. In this example, I'm using a GPG key. I haven't show it, but if I'll go here to GPG list keys. So that's it. GPG list keys. No, that's ASCII, sorry. That's the project. GPG.list keys. So you see that I have the GPG key installed on that machine so I can use it for decrypting the data. So GPG keys are nice for that but there are so many problems with GPG. So in most cases, it will be better to integrate with a cloud encryption as a service solution such as KMS and Key Vault. The metadata is saved and encrypted which make it easy to do defing and check history. And this is a practice that is popular when using GitOps. So in GitOps we want to have our deployment configuration configured inside Git as a single source of stuff but in many cases we need to encrypt secret so one of the solution is to encrypt the secret and put them in the repository and they are going to be decrypted by the CD solution via push or pull. And because it's a popular practice there are other solutions as well to achieve that. Additionally, we saw some other IDE settings like the launch setting that we are used to define the configuration of the Python app and we put it inside the dev container and also port forwarding we can fold port on the local host and the port forwarding definition itself is also part of the dev container a JSON file. Now the next project is more complex. It's a real project, not like that. Simple app. And it's an open source web-based RPG for organizing your life. It's called Abitica. I remember that I played with it like a few years ago and it got a lot bigger and more complex and it has new challenges. It's a huge project. We have front-end, back-end and DBL and we are going to run it. So the first thing we are going to do because this is a full stack app instead of running in the dev container we have a Docker file we are going to run a Docker compose which will contain the dependency we have. So we have the dev container of the app here but additionally we have the DB Mongo Express for easily viewing the DB documents and the traffic which is a reverse proxy I'll talk about it later why we need one. So that's basically our services and in the launch of the JSON we have a configuration for the client the server, storybook which is for the UI component and also a file for the documentation site. So I'm going to run every one of them. Let's run the docs the server I see that the client and the storybook are still running so no need to run them and let's check it out So the reason I wanted to use a reverse proxy is because I can we are running lots of services like for services and I want to use only a single port to serve them so a reverse proxy can use we can use a reverse proxy for that and based on the host we are going to serve the right website so let's see how it looks like how it looks like what does it look like So I'll run them in parallel The first thing to load is Mongo Express Here we can see the database and we have a user database and we can see that I already have a test user here we'll talk about how we have this user we have the we have the commentations site here that's also part of the repository and storybook for looking at the component and here we have the application itself I see that I've already signed in so I'm going to do a logout and re-login So how do I have a user in this application? It's pretty simple, when the application is created I've created a script here that is going to post create command for the dev container that is going to insert data directly to Mongo so the data is containing a test user some tasks and some groups data and basically every time someone is going to create the development container they are going to do initial data it's called data fitting so if I'll go here and try to log in I have a test user and the application is running as you've seen before I have all the user has already initialized with some data so we'll see a list of tasks here the page takes some time to load I think it's like several tens of megabytes this page so it can take some time here we see the task and I can change them and some tasks so that's pretty awesome and notice that we have four different applications that are exposed on the same ports how does it work? Well, we use a wildcard localDNS like localTest.me it means that everything if I'll put like a command line here so you'll see that if I'm going to use an NSLOOKUP so it's going to put to 127.001 and basically every subdomain of localTest.me is going to go to my localhost now on the localhost I have a single port but based on the subdomain I'm routing it to the right place how does this magic happen? so we are using a tool called traffic which is our verse proxy that have very smart service discovery system so based on some annotations we add to the local compose we can define what the host that we want to run and what port we want to expose to traffic so basically that's what's happening here and traffic itself is running on port 8000 so I'll just stop the app okay let's go next now the next project so that's with our full stack application with Docker compose database another thing that I haven't shown we have here here we have Mongo extension so we can also see the document here directly from the ID and it's time built in and in the dev container as well what's the extension we want to use okay sorry for the flicking images so we have installed some additional tools we use a DB image of Mongo and Docker compose we did data seeding with basic script alternatively it can be done by replicating or cloning data from staging or production we use a reverse proxy to route dependencies to several subdomains instead of port we use wildcard localhost dns so localtest.me or xap is a similar one and we use traffic a very simple and developer friendly reverse proxy now the next project is personal and naturally it's tweak the project I talked about before and it's very complex project we already use Docker compose inside for developing and because this project contains several microservices, several databases, messaging system cross service communication it's polyglot so we need to install lots of different SDK to provide good experience the architecture looks something like that so yeah it's a real complex system and yet we are going to run it and even quite easily so let's look at tweak devcontainer and because we already use Docker so we are going to install in our devcontainer a Docker and Docker installation what does it mean? if I do docker ps I have a Docker demo that is dedicated to this dev environment so it's like running Docker inside of Docker so I'm installing Docker inside of Docker I'm installing some extensions I'm installing .NET, Golang Node.js and Yarn and I'm installing tilt which is a tool for rebuilding watching and rebuilding services and pushing them to the Docker demo I'll show in a minute how it looks like I can run it a bit like Docker compose up but with auto-reloading so we have a devcontainer we have all the relevant extension one for Golang, for .NET for a Docker itself we have the extension here, a prettier we have a script that installed all the NPM packages and everything that we need and and the idea here that tweak has a a yaml for development it already had it initially that defined all the services and some services are mock, for example we have an open-id server mock to fake an open-id provider or open-id connect provider like Google for example and additionally we use Redisir and we use Minio which is a solution an an object storage solution that is wire compatible with S3 so we can use it instead of S3 that is one of the dependency of tweak as well okay so we have the tilt running tilt define how to build all the images it loaded the Docker compose yaml and it also supports auto-reloading as we are going to see in a second for features like the UI so it's copied the file for my computer to the internal container now notice that if I'm going to do docker ps here I'm going to see all tweak services that are running now if I'm going to open tilt so in tilt we can see all the resources that are running that they were built we can see the log for issue service for example we can look at here at the editor and here we have the editor running and I'm going to show example of editing code in the editor oh I have it here open so I'm going to change the welcome message everyone just let's see that it's sorry spoiler so that's what it looks like welcome tweak and I'm going to change it to allow everyone change the font to 60 change the color of it and save now we see that it changed instantly and we have a great developer experience with just opening the dev container and running tilt up and that's for all the services and I can't I mean it's pretty amazing I wish I have this kind of solution a few years ago we had so much a better hackathon with it it's really amazing that you can go to a complex project like tweak and start developing and everything just work not just for the editor but for the all the component as well so I'll go back back to the to tweak in this example we see a docker in docker example there are several techniques for running nested containers in this example we use actual docker in docker we are developing in nested containers and using tilt and docker compose for rebuilding and watching and not reloading and naturally because we're running inside containers and our code is run inside development containers that require rebuilding things will get a bit slower but it's totally worth it additionally we saw an example of mocking cloud dependencies so in tweak we use a docker image of a database Redis production we use a cloud solution equivalent we use a wire compatible solution to S3 to S3 it's Minio for OpenID connected to OIDC mock server we can mock cloud dependency additionally with full frameworks like local stack or encrypt credentials and connect to dedicated tenants or do dynamic provisioning that's also an option if we want to have real cloud dependencies and I'm going to finish with the last example which is a cube cost it's a tool for managing Kubernetes cost the reason I'm going to show this example because it uses Kubernetes so it's pretty cool and we need Kubernetes metric server and parameters so I'm going to turn off tweak because it's quite heavy and we'll move to the last example so here I'm in the cube cost dev container and you'll notice that I have a Kubernetes running here I have a cube cutout and I have also a Prometheus here I think that it's in a space monitoring yeah and it's basically we have like before we have a docker file but instead of just installing docker and docker and docker we install cube cutout and Elm and another cool tool that is called K3D now K3D is a tool for creating clusters of K3S which is a very lightweight Kubernetes distribution so we can do like a K3D cluster list and see the cluster and it's actually running inside docker so if I'll do a docker ps I'll see the K3S images running K3S v1.21 so that's pretty amazing we have a Kubernetes that runs inside docker and we also have a registry for putting the image so tilt can integrate it in the build, in the watch build loop which is amazing and we also have a Prometheus YAML that define how to run the Elm chart so one cool thing about a K3S that is that it has built in support for Elm chart is that there's a custom controller and a custom resource that called Elm chart and we can declare these Elm charts declaratively so it's pretty cool and I'm going to run it the same way we have a tilt up instead of connecting to the docker compose tilt interact directly with Kubernetes so the same will apply if I'm going to change code it's going to rebuild the image we are going to serve it as well just that you notice we have the contributing guide and to build a product besides we need to install Kubernetes and Prometheus we need to build the image create new space apply it and do a port recording and every time like this manual steps I need to build the image when I'm developing but here I'm doing something else completely I'm going to do it but everything is happening automatically thanks to tilt so that's pretty awesome so here we have need to refresh it here so here we have tilt running with cost model and the UI we can see that it works here the API it costs data model and we can see that we have data and we also have the UI here and I'm going to show that it's working and integrated it works against the relevant backend here now the nice thing about it that in this case while the cost model is a component the UI is a local one so it's kind of lighter in that regard we can see that in tilt file we have a local resource and a Kubernetes resource so that's about it we can see that we have all the right ports here and it's real, real data awesome so that was the last example thank you for listening so far I'll go back okay so the last example was a cube cost and basically it's Kubernetes local development is already difficult there's lots of fragmentation, we have mini-cube, docker for desktop micro, Kubernetes kind and using a single Kubernetes distro and version can make life easy in this case we use K3S it's a minimal Kubernetes distribution you can push to the dedicated registry that is built-in with K3S installation or in this case it's actually by K3D it's the configuration is in K3S but K3D is running the dedicated registry and it's stable, cluster can be recreated easily just to showcase that I'm going to here I'm going to tear down the cluster okay and I'm going to recreate it and you can see how fast it is and if you work with other Kubernetes tools before you know that usually creating a Kubernetes cluster takes can take some time this happening in less than 20 seconds and it's running inside a container so it's pretty amazing I have working Kubernetes so that's about it now it's also about built-in with an end controller that I'm chart declaratively and we still use tilt for building, pushing and running and to put this setup simply we have a Docker host that inside is a dev container that we have the run registry K3S node that run container D that run our app or to put it visually so that is for the demos okay so we saw container as development environment the good thing about it that the development environment configuration is also source controlled and correspond to the application code the developer machine stays clean it can scale well to multiple environments without conflict it can run locally or remotely easily because it based on Docker our own setup is life cycle contains of tens of micro services in goal and in typescript auto model reloading with frontend, our own Kubernetes custom resource and controller external dependencies that we have GraphQL engine, database full Blon CI system, container registry and lots and lots of stuff and CLIs and SDKs and the time it takes to rebuild our environment from scratch is about 15 minutes the time to build run test code changes are 10 seconds around it, time to onboard new developer it's 3 hours less than that and that includes remote provision of a dedicated host on AWS and giving all the right access and credentials time to introduce new tool and update this development if needed it's less than 5 minutes and we're constantly adding a new CLI or tool there's no more work on my machine occurrences there's no stand on the developer machines because they are running remotely developers need to deal with less with secrets because they are in the repository so no passing them around and our team work on both M1 and Intel Max so it's pretty amazing I hope to optimize it further and build cache so if several developers build the application so everyone will get a better build performance snapshot for reducing the initial load and in the future use a cloud provider optimize for dev machine then of course location hibernation, CPU, RAM etc there are some drawbacks over decorating the initial setup can take some time it took me several hours to add this dev container as a file for almost everyone of the repositories I showed you there are so many tools here some of them are bleeding edge so they can break we have additional code to manage which is the dev container, the Docker file, the initialization data seeding dev environment are not standardized yet so if you use a different solution that VS Code and Docker there are different standards on how to do it so we are coupled in our solution to VS Code, Docker, Git and Linux there are several performance issues and there are some security challenges when working between development and production although it's solvable now can we do it without VS Code? so it's probably possible to use a terminal based code at all we can use it for that example but it should work also there is Gitpod.io and Fiat that have similar features with a different configuration file called Gitpod.yaml JetBrains is a solution for remote development that you can run a projector inside the application or the VM or the container and it's supposed to work a bit like it's supposed to stream the environment I'm not sure how well it works because I haven't tried but there are so many developers that love JetBrains stack so definitely worth keep watching and we can run local ID with documents but to be fair it doesn't work that well I haven't shown example of serverless but it should probably work in many cases at least the cases we can run it locally so basically we should use a fast framework an SDK that can run locally and for the past features we can use tools like Minio or local stack or emulators or something like that and if necessary we can throw infrastructure code tool to the mix like Pulumi or Terraform and do like a dynamic provision for every development environment we create all the examples I've shown are mono-repo I'm not sure what's the best way to approach it in a multi-repo maybe a single-dev container with multiple sub-modules maybe treating other repositories as dependencies there are some interesting project that take approach that we have a git URL and can translate it easily to a Docker image native mobile if I'm very optimistic about a multi-repo or other editors native mobile is a disaster the problem exists and I remember engaging in epic battles with mobile IDE and with Gradle it might be possible to stream the applications that they run in emulator and then we stream it but the experience is not optimal containers are also optimized for Linux for running mobile app emulator we need to virtualize, massive virtualization the IDE themselves are mobile are tailored for mobile development so it's very difficult to develop an Android iOS project without their own development tools it's pretty easy or possible with cross-platform frameworks such as React Native or Flutter and now it's part of the larger trend that we see that is happening that we put more stuff in the repository like LinkedIn, style guide, documentation, open API CI pipeline definition, workflow design system, etc etc at the end we have self-contained repositories all code tools, knowledge definition and process related to project we sign the repository, get acted as a single source of tools the code is more accessible, we are lowering the barrier of entry, the applications are portable and as developers as code owners we can create a fine-grained developer experience which is awesome all of this is happening part of an emerging ecosystem we can sit with remote development environment cloud IDE, PR environment which is one of the things we are offering at Lifecycle specifically PR environment and I've shown many tools here different challenges and solutions and what to use all the resources and examples will be uploaded to the talk to the talk page and to my talk repository and to my Twitter account so you can check it out and thank you very much