Lootlove gets candid about the not-so-glam side of motherhood. It's no secret that being a new mom isn't walk in the park. Even though mothers have mastered the art of multitasking and sometimes make things look so effortless, this couldn't be further from the truth. Lootlove and Reason welcomed their twin girls into the world a few months ago. And, while Lootlove loves every moment of motherhood, she's also honest about the chaos that comes with taking care of two newborns. She has been sharing snippets of what her life has been like since the arrival of their twins. And, it's hilarious. Don't for one second think maternity leave is a break from work. Lootlove announced the arrival of their twins by sharing the sweetest post about how blessed she feels to be their mom. I can't believe my god loves me this much. I can't believe these perfect, beautiful baby girls chose me to be their mom. I've finally transformed into, mommy love.


Today we have the capability, for example, to stitch together Wi-Fi networks.  But you can imagine a world in which the Wi-Fi access points have an incentive mechanism built in where if I open up my Wi-Fi access point, anyone going by can use it and their phone will automatically connect and pay some micro pennies using a Wi-Fi coin. And I'll collect the Wi-Fi coin in my network, and that will be credited for me so that when I go traveling I can use other people's Wi-Fi access points, and that's now all done seamlessly. And wherever there are gaps in coverage, entrepreneurs will say, well, I can make a lot of Wi-Fi coin by dropping a Wi-Fi access point here. So you could use a blockchain-based network to create a global distributed Wi-Fi network that would be very high bandwidth throughput maintained by all the nodes owned by nobody and would be upgraded on demand just based on where the usage needs. Now, to create that kind of a network, now let's say I'm a group of developers who creates that network, what I'll do is early on I'll program the network to give a lot of tokens to the people who are providing the first Wi-Fi access points. So in a sense I'm bootstrapping the network. And what I'm basically saying to them is like, if you're an early adopter, your Wi-Fi access, Wi-Fi tokens are going to be worth a lot more later and you'll be able to get a lot more Wi-Fi credit or even sell it for cash. Same way if I was trying to compete with Uber with a blockchain-based network, the early drivers would get a lot of compensation in my new Uber coin so that when my Uber beats the normal Uber, they'll be rich because they took risk early on by driving people around before there were enough riders. So tokens kind of can help bootstrap networks and solve the cold start problem that networks suffer from. But now in the regulatory environment we're in, these are all considered securities. So under securities law, I can't just distribute you a Wi-Fi coin or an Uber coin because I have to worry about, did I comply with securities laws? Am I ripping you off? Are you speculating? And there's such onerous restrictions that it basically just kills the whole thing. So at least in the U.S. we seem to have gone from this model of like everything is a utility token to everything is a security token. And that kind of uncertainty is making it very hard to innovate. So one example that I think a forward-looking regulator could do is they could say, okay, when things have a dual-use case, like a utility token and a security token, we will err on the side of letting it be used for utility early on. We're going to work with the companies to have a clear regulatory framework. And then you could see a whole bunch of companies that want to experiment with utility tokens basing out of here and bootstrapping large networks that could then eventually go on and compete globally. Because it is the nature of these things to be winner-take-alls. So if we build a rideshare coin that takes over from Uber or we build a Wi-Fi coin that takes over from Spark or Verizon, that's going to be a global network. So this was interesting about crypto. You can launch a crypto company from here that can literally take over the whole world. There are no barriers to adoption in crypto. There's no language barriers. There's no app store download barriers. There's none of that. So if you had a friendly regulatory environment here, you could literally build the internet and financial system that runs the world 20 years from now. Instead of everyone here being a vassal of Facebook or Google or YouTube, they're all using a New Zealand developed property and all the people here who adopted those coins early on would actually be fabulously wealthy.


Don't I'll just give you a brief introduction. We are an e-commerce company. Basically, we are into ticketing. You can buy tickets for movies, Facebook, anything that you need in India. Okay, so today what I'll be talking about is how we rebuild the entire app which you already have right now. We have rebuilt it from scratch. We will talk about what went in, why did we decide to do all of those things, and give you a brief idea as to what is happening. So this is the short agenda as to give you an idea of what we'll be talking about. I will get, anyways, we'll go through them each one by one. So when I say a rewrite, I want to talk to you about what kind of a rewrite it was, whether it was just a small UI, what did we exactly change? So to begin with, it was a ground up rewrite. So nothing from the old app was used. None of the source code was used on the new app or anything. It was not only just the code which was not being reused. We changed the entire UI and the UX of the way the app behaves. So the app has been having the same set of UI and the UX from like five years now. This is the first time we have gone ahead and changed it to revamp it totally end to end. So just to give you an idea, even before I delve into the recalls, the new rewrite took us approximately about three lakh lines of code to get done on the existing, just to replicate the existing app out there today. The new app has three lakh lines of code. Took us eight Android developers, around 10,000 cups of coffee and like six months of time to get this done. So that should give you an idea as to what kind of a rewrite it was. So today before, by the end of the talk, what the aim is to give you an idea as to should you rewrite your app? Like what does it do? If you are in that boat, whether you are considering, should I rewrite my app or should I just patch it up and let it work as it is working. So that is the objective of the talk today. I will try to help you take that decision as to what is happening, what kind of effort is involved so that you can make that decision whether do you need it, do you need a rewrite. So we'll begin with looking at book my shows motivations of rewriting first. Like why did we choose to rewrite? So what happened was a year ago, I was given that option to improve the performance of the existing app or do I want to rewrite it? So I of course took the rewrite option because I always like to be latest. So a few bigger motivations we'll look at as to what why did we choose to rewrite it is not just because I wanted latest. So I'll break them down as problems and challenges. These are problems and challenges that the old app had previously, which we wanted to overcome with the new rewrite. So the first thing which would I would classify as a problem was spaghetti code. So if you don't know what that means, it does basically a bad paradigm in like a word which is used to indicate bad code in general. So there is nothing called as bad, bad code. It is just that it lacks something like a naming convention. So if you see the examples at the right hand side, you can see there is no standard being followed. The variable naming is all over the place. There is underscore being used. There is a lower case of a case. There is everything in lower case. So not having a naming standard will hurt you in the longer run, wherein a new developer comes to you. It is very hard to read this code. Like if you give me the code, I would say I will not be able to understand what is happening here. Lack of reusability and modularity is again a big challenge that we had. So we have a as an example, I'll give you a rating screen in the app which the app has. So you can rate a movie. There are multiple screens where you can rate the movie from. You can rate a movie via push notification. You can go to the synopsis page of the particular movie and then rate it. You could even go to the ticket history and then rate it. So like this is just an example. So this is like three places where you had it. The old app had the rate functionality being returned at all the three places. Each activity had the logic being there. So why it should have been just in one single place so that you know, okay, like rate as a functionality is one to the entire project. It should not make a difference where you are calling it from or where it is being used. The other thing which was a big major hurdle was tight coupling between the business logic and the UI. So if you can see this example, everything here is very use case specific. And if you see at the very top, like you see you you see GA so Google analytics code. So right from your analytics code to your view to your business logic of modifying checking whether it is credit card debit card, all of that was happening in one single screen. So tomorrow when you modify the screen it is you just two things. One is breaking existing functionality and it is very hard to understand why where what is happening. So debugging also becomes a problem. The other biggest challenge which book my show had was scalability. We over the past years, few years have been growing at a scale, which we did not anticipate. Our users have downloads have grown up and users users drastically, but the app has not been able to keep up with the same. So and adding a new feature was very hard. So in general, I'll talk a little about what scalability issues we had as well. A lot of it was redundant duplicate code. Again, I'll come to a simple example. This is how the world have used to make a HTTP call. So every API call which you make would go ahead, create a new HTTP post, HTTP URL, add those patterns, do the basic text and then make the call. So what would happen is for every API call, the same things would half of the things would keep repeating, but they were just written everywhere. So a lot of duplicate code was being there. This kind of code is very hard to refactor. So as an example, let's look at that. You say I give you look at one, two, three, fourth line that it has a parameter called as a timeout and it takes in a 30 seconds, 30,000 millisecond kind of. So let's assume you wanted to increase or decrease this timeout for all the API calls with this kind of structure what would happen is every single class you would have to go and modify that 30,000 value, which is very bad if you like, you know, have to touch 20 different files to make one small thing. Ideally, this value should have been at one place and that updating that value should just be changing it everywhere. So it would be kind of started becoming hard to refactor. This call started causing delay in our app really cycles as well, wherein our app updates started becoming slower. And of course, when you have code like that, you end up with a lot of regression bugs. Like when developer tries to touch something on a particular screen ends up breaking somebody else's feature on that screen altogether. So it becomes very cumbersome. And again, this also affects your development cycle in terms of everything that you touch on that screen has to go through a thorough QA process. And that takes time. Like you have to get through QA if there is something broken fixed, that cycle keeps on happening until you get there. So again, a lot of delays being introduced before for a very small functionality also, like imagine adding just one line of code and you end up saying, okay, I will take four days to test it an hour to develop, but four days to test, which did not make sense at all. Like it was becoming the bottleneck for the company. AB test. So what the company has a challenge wanted to do was try a few things based on AB test. So basically wanted people to look half of the users go to a particular, see a particular view and rather see a particular view so that we could take our conversion ratios and all of those things as well. So that was very hard with the new old app to be done because of the way it was structured. It became very hard to run a AB test and that was something was the company wanted from a long, long time. So let's look at what we did. These are some of the major challenges and problems and the motivations behind why book my show was really good. Let's look at what did we change? Why, how did we do it? The first thing that was changed was the architecture. So for over the past two years, you have kept clearing MVP, MVP and so many of these have come up. Like everybody keeps saying MVP, MVP is great, MVP is great. It helps you do that. It helps you do this. So one thing I had always complained from the past two years was there was no example out there in the production in the wild saying, yes, I have used this in a production on a 10 million plus user base and it works the way it is saying. Everybody says it is nice. Everybody gives the most talks about it, but nobody did it in a real world. So we took it up as a challenge on ourselves. We wanted to run a very leading edge kind of tech stack for the new app. So we changed the architecture to MVP, doesn't have to be MVP. Like I keep getting this question a lot of time with architecture is the best according to you. I would say there is no silver bullet. It is based on what you are trying to do is that is more important. MVP suited book my show does not necessarily mean it is the best or it should suit you. It depends on your use case. So you don't know what MVP is, just a quick glance on the right side. You break up your code into use presenters and models. Presenters are basically responsible for the use of basically responsible for the UI. Presenters and models being your business logic and presenters being the interactor between both of those things. So we changed after the architecture the big change was the user experience in general of the entire app as I mentioned. I will show you a few things. So now we have smart filters in the new app. So a lot of people if you have been using the website you have you already have used this feature on our website wherein you could filter show times by time and price as well. You could tell okay show me all the shows all evening shows within the price range of 100 to 200 and we would filter that. So that comes up with the new app. We have those filters now. Seat layout something which was a most used screen in the entire app which we have today. So what we noticed was a lot of people would go to the seat layout screen then figure key they did not find the best seats which way they were trying to look for. So what they would have to do is go back change the show time change the category and then come back again.  So now the new app gives you a quick switch at the top itself. If you see you can change the show time right away from here itself. This is a 8 5 p.m show. You could just click on it and get the show time. You also can change the quantity as well. So previously it was very hard to change the quantity you would have to go back choose the show time again and choose the quantity again. So now you do not need to do this everything happens in this single screen itself. The synopsis page went through a bit redesign as well. We now show you very rich information about everything related to the movie right from the runtime to the lead cast and a lot of things on the synopsis page. The other big thing that happened was unit testing. So as I said that cycle of update kept going higher and higher. One hour of code would four days of testing did not work out. So we started off with that approach where we wanted everything to be unit tested within the code itself and not rely on the manual QA thus reducing the times. So this is just a sample test which we have which basically test presenter as of this is the presenter test I believe. So that is one thing. So this is why we did it. This is what we did. We chose to do a few things different from what you would have seen in the regular Android voice. We will quickly have a look at what they are packaging. So the general packaging has always been of the factor you club all your activities together you club all your adapters together. So what ends up happening is you have if you are having you have an application like book my show at that scale you your activities package has like 300 lines of active 300 classes activity you have 200 adapters so it becomes used and like you know it is very hard with not no standard naming convention it becomes very hard which adapter is being which use where which makes debugging harder. So what we went ahead and did was package strength by features. So as a screenshot if you see everything related to summary page would be on the summary inside the summary package everything related to the settings and the seat layout would lie in the respective packages. So tomorrow when you have a bug that is how you get a bug right somebody reports a bug to you he says on your seat layout this does not work. So I exactly know what the set of files to look at to it becomes very easy to debug because seat layout I know there is a package named a seat layout anybody can debug it not only the developer who has written it just to give you an idea what the package internal packages look like. So let's look at coupons as a feature internally we have coupons as a functionality has three sub features you can add coupons you have to get the coupons from the server and you can remove the coupons which you have previously added so they are sub package as well based on that standalone module. So Arun also spoke about just in his graded morning in today morning wherein break up your project into different things and add them as a dependency that is exactly what we have ended up doing. So on the right hand side if you see our network our analytics error models all of these are separate projects and repositories by themselves. So what happens is your motivations are two one is it is easily refactored today we use retrofit as our networking library tomorrow if you want to use volley for some reason move away from retrofit it is very simple that does not need to change some some team can independently work on the network module fix make those changes give me a pre-compiled jar or a new versioned ar file and I just include it so that becomes dead simple in terms of integration and your timelines become parallel. So previously what would happen is if you are trying to do volley you would either create a separate branch and then merge it and you would have conflicts or you would wait until he finishes and then start on with the changes he has done today you don't need to do that because both of them can work parallely without since they are both two different projects all together. So this is just an example of how we have broken up all our things into separate repositories just to give you a fair idea as to how we maintain how does I how do I know with with moving from retrofit to volley nothing breaks so we follow try to follow the standard Java API kind of structure wherein if a method is public and has been exposed in any version or a jar file which has gone out the structure and the parameters the return type nothing ever changes so if you see my app always talks to network manager does not does never talk to retrofit directly network manager talks to retrofit and gives me that thing so I have created this abstract layer if you see this there's something called as get trending API if you see there is no mention of retrofit within it and the response return type is of observable so the app who is calling this will only call get trending API does not need to know whether I'm using retrofit or volley for that matter so you could easily switch tomorrow and nobody will even have a problem with it same thing with the analytics thing just to give you you a fair idea we have a rapper class on the analytics manager as well self sufficient view so this was a pretty interesting idea I'll take the rating as an example again as I said it was being used in three different places in the entire app you could write your code logic in one place but you the UI would still need to be included in three different places we were still not happy with that we decided why can't both the UI and the logic stay at one place and everybody reuses it so this is what we went ahead and did so there is something called as a view provider a abstracted layer which we have written on top of a manager kind of thing the activity whoever wants the view right asks the view provider to give me that view what the view provider does is it builds that view returns the view and you can just show it in your activity does not have to be declared in your XML pre predefined so you could essentially put it in activity ABC as of today and tomorrow if you want it indeed it would just be one line of code just to give you an example as well this is what the code looks like so we used view stub here in this case you could return a regular view also it would not make a difference so if you see he just inflates the view so does the find you by ID has the logic for everything inside it sets the click listener as well so this is a self-sufficient view it not only returns you the view but the click listener on those views also are handled by that itself so you say give me a ratings view the ratings view comes up the ratings view has edit text now it has a submit button wherein it has to make an API call so you as a developer do not need to know somebody has already worked on the ratings view so you say give me the ratings view and when you click submit you do not need to know what is happening with API to head what to do all you need to know is whatever the value is the view will take care of it so you do not need to bother at all so these views are self-sufficient in that way wherein the logic and the UI is both on them itself so I in particular was not happy with the way android developers write API request calls params the way you too much of lowercase uppercase mismatch of cases happening too many problems occurring so what we decided was there has to be a better way of doing this we wanted to be very user friendly developer friendly more like so that any new developer that comes in the company it does not have to go through like 10 20 different documentation just to understand what param is the key and what is the value type it is expecting so we created something called as a param builder these are nothing but simple plain old Java objects so if you see this is just an example this is a plain Java class which has a ton of strings and defined in it so these are key and values defined here so what that lets me do is looks like something like this so I say new API builder and I do a dot on it now since this is a separate project and as I did as a dependency I get autocomplete on it so I the moment you do new API builder dot you see all the available API which you can make a request to and once I choose the same API which we just saw and it do a dot again you all see the set parameters available so you do not need to know what the key are what the URL is what the type is you don't you as a developer do not need to bother okay like is this a post request is this a get request what are the keys that I'm supposed to send to this what are the session time modes that I'm supposed to send so none of that is on the overhead all you do is focus on the values which you need to be sent so they are written in a way wherein they are human readable as well so if you see set app version who is version so that you just understand just by reading at it okay this is what I have to send and the dot build API parameters will set up everything and give you a custom object of the thought so two things here as I mentioned improved readability autocomplete just by looking at this piece of code I can tell you what parameters it is expecting and what is not I do not need to look at the documentation dimension naming so we were again unhappy with the way android developers name dimension file it is always a fight between these two you either take a very generic approach as at the bottom you define font dot font underscore large font underscore small or you take the very specific approach give it the activity name underscore image underscore all of those things so both have their own set of problems so the below one has this problem wherein if somebody is using font dot small and tomorrow somebody changes that font dot small from 12 dp to 14 dp everybody who uses it breaks away who whereas you might just want 12 dp there and 14 dp somewhere else if you use a specific one you well that's all the problem you end up with tons of duplicates 16 dp 16 dp has been declared like many times in your things because all of them are specific what we did was embrace both of them so if you can see at the top we define something called as demand underscore 3 dp 4 dp 5 dp 6 dp at the bottom there was specific naming so in this example particular you can see c-clayout activity underscore text coupons available size and that would then reference the dimension declared at the top so now it avoids those duplicate every dimension is declared exactly one and you still have that specific city so that you can debug quickly okay this is the dimension which is being used so you do not need to know what is happening so I would want to talk to you about what were some of the learnings or the outcomes which we read like six months we have been working on this so I mentioned using MVP as the architecture which we use for the new app one thing which we realized over time is I would not call MVP an architecture I would call it more of a design pattern it is not really a full-fledged architecture architecture it is more of a design pattern use it if you know what you're trying to do if you want clean code this is one way of doing it but it is not a full-fledged architecture kind of thing wherein how MVVM would work so that has been one big learning so you always can't skip anything about talking about without talking about multi-dex so if you are using the latest stack something like a retrofit dagger and anything on those lines rx java you will hit this limit very fairly soon like there is a blog post as well which says if you use google play services along with these four libraries you will hit the 52k limit without even having one of your own methods so out of those 64 65k 52k methods are gone away so that becomes a problem so of course your easiest solution is multi-dex go to your application class multi-dex.install this end of story multi-dex should work our experience has been different so what happened was we started facing a lot of crashes on devices which are not up to the mark with google standards so xiaomi phones redmi phones what would happen is the app would just crash away like it did now so one thing is that take care of it one quick solution if you are running into that same problem wherein it is crashing on such devices is extend your application instead of extending your application class by just extend multi-dex application that solved a lot of crashes for us I have no clue why though the other thing which you need to look at when you enable multi-dex is the startup time so one thing that has happened is the startup time has gone up on a device below api level 21 where multi-dex is not supported natively the startup time on a cold start might increase by a few seconds so that is something you should seriously consider whether you want to do it or not maintenance so after all of this the whole reason of doing this was maintenance one thing I would say is it has been able it has now become very easy to maintain a particular the app in general so we do not any longer feel a problem when it change comes since the views the presenters and everything has a single responsibility I know what to change before and it does not break anything since you have unit test the unit test automatically tell you before even before you give it to the qa that it that it is breaking you need to fix it so maintenance has become very simple very easier to do maintaining the app is now very easy in general the other thing is adding new features so adding a new feature also has become fairly simple as an example our previous average time a new feature basic feature would go live on by a developer single developer would be around seven to ten days worth of work today after the new architecture we are seeing the same feature when we rebuild the same feature on the world app and the new app as well so on the new app we are able to do it in like two days so that is one big gain like your development time will drastically efficiency wise will improve so that is something which you might be interested in if you are looking to build a product on the longer run wherein you have a lot of features planned and scalability and maintenance is your concern then I would definitely suggest you to rewrite it in a particular fashion does not have to be MVP as I said you could use any MV VM any of those whatever suits you better I like to call it MVW M model view whatever so you can use whatever you want to do it with it will just work the same to be honest so that has been pretty much what we have done I'll just talk to you about what we plan to do in the coming months as well dynamic view rendering so this has been on a list for a while now so as you saw I spoke about self-sufficient views what we want to do is send some data some sorts of JSON from the server and render those views on the fly without an app update so imagine doing this wherein I have a recycler view with I have a ratings view so tomorrow on any screen the server sends you a particular key all I need to do is just inflate that view there so it does not make a difference any longer to us so eventually what we would want to do is control view rendering all together you would want to be able to position items one below after all from the server without an app update one thing which I also forgot to mention is when you use architecture like this for that mvp mvvm your code base increases in size what used to happen in one single java class with one activity is now spread across five to six different classes you have interfaces you have use case controllers you have their presenters for each just one single screen you have six different things so that takes time like development time goes up there writing six different screens in their respective packages all of that takes time so what we were able to do we have a basic demo of this working wherein we used annotation processors to generate all of this so what did happen is you could go to a terminal right now it is a command line tool you could just go to a terminal and tell him what you are trying to do give him he this is the name of the screen and I need this kind of a particular view what did you do is two things it would give you a view let's say you say give me a recycler view with this name so what it would do is it would set up a activity for you it would set up a adapter for you it would give you a recycler view in the xml and would take care of writing the presenters and the domains all together you just have to go there and put your business logic all the boilerplate for you is generated all of this happens at compile time using annotation processors so that is something which we are very excited about in the future we would want to generate a lot of code like this wherein I could just go to the terminal in this project I want a recycler view with so these these these features and it generates the basic setup for me I just have to implement the business logic out of it so we would eventually want to move to an event-driven architecture we used event buses in our current in the new app as well specifically we used auto our experience has been a mixed bag kind of thing wherein it is very nice in decoupling everything you don't have that hard binding okay I need to implement this interface on this activity it takes care of it by on subscribe and push but one big there are a lot of problems which we face with event buses in general so as a quick example what I could do is let's look at the show times so you have a show times response model which is created of same plain old Java class we just created now let's say the user went to the screen he's shown a loader the network is call is still going on he went back and came back quickly so what would happen is if the response would come since the model object is the same for both the api calls that happened so I would there would be no way for me to differentiate whether it was the first one or the second one that came through so that becomes a little problematic in such edge cases everywhere we have to have a flag kind of thing where did this user call something so that has been a little big learning wherein event buses have been a little backfiring to us to be honest that should be it I should be open to taking questions I have 12 minutes hi thank you for the talk so is this new app was like parallelly getting build like meanwhile the old app is there or like how was the development process so we in book question specifically what we did was we had a four member team android specifically i'll talk android specifically four member team existing who was maintaining the old app we did not touch those resources we hired a built a parallel team of eight members and they built it within the six months so both of them were working parallelly for the past six months currently this new app is in a strange rollout phase wherein it has been rolled out to 20 percent of a user base by the end of this month every it should be on 100 and everybody should have it but then how did you handle like the code duplication like a feature being developed on the other one and then you probably have to afford the code on the new one because you need a right like everything from 100 correct so what a good question like you know what happened was there were a few features which the old app could not wait for like we could not push those features away so what we ended up doing was of course we had to write the old app team wrote the feature on the old app and while the new app team did it on the new app because the architectures were way too different to reuse anything to be honest hey yeah so we had similar issues while dealing with auto building an event-driven architecture and using like a view page or something and ridiculous number of flags and publishers and subscribers to just figure out where the event is going when you go out of the app and come back in so how did how did you fix your event-driven architecture because one day we woke up and they have put up on the GitHub page saying we have deprecated it please use rx hour so you're like you know what we just deleted from our app we are not going to use it anymore so how did you deal with this so there were multiple solutions which we came up with one was you could modify the if you are talking about the same screen thing right on the same screen if you are getting he goes back and comes back again and the call comes called gets two times and you get two responses of the same type what we one simple solution was having a flag enabled whether I have called this API already in the past or not that would tell me whether okay have we already called this and there is the response coming supposed to be something else so what we ended up doing like that was a quick hack to do it what we actually ended up doing was we use rx Java and observables to for our networking tied with retrofit whenever you the user went away and we did not need that information I would cancel that API call all together or unsubscribe so you could either cancel that API call the first one or you could just unsubscribe the current subscriber yeah so we are doing the same then yeah whatever was a very bad decision to be honest like in the coming future I would get rid of auto and use fall back to interfaces yeah thank you yeah so you're showing your code so at one place you had the dt problem and you assigned variables to all the dp sizes correct so I mean we followed I was sometime back I was working in Monster and we followed the same practice for colors and I mean I was doing that and I was wondering why am I doing that I mean that's a that even though I implemented you know our manager and everyone told us to do that but I found it to be a very bad practice because in the end all color like a color 93 you know the whole hash code a hex code and map to the color itself and they were about like 100 200 colors same thing you did for the dp thing correct so but I mean I think there is no point behind it what would be the use case of I mean what could be a possible reasoning for you to do that so it is debugging becomes easier so what happens is when you have a huge layout and let's say you have like 14 different colors in that thing and you have no clue which color is binding from where okay now when you want to debug what would happen is you would have to click click click go to that then realize okay this is not the color I am looking for go back this is not the text you color which I am trying to change so what would now if you look at my slide what so what this would do is with such specific naming conventions like seat layout activity image coupon tag height I exactly know what you I am talking about on the UI so we try to map it how it looks on the screen in our XML as well correct correct so so you are saying like I could have just written 6 dp here correct so we did that we did that we started off there the problem was 10 different developers 10 different screens everybody wanted a 8 dp everybody would define 8 dp 8 dp 8 dp we had 10 8 dp so duplicate so that is one way of handling it where when we wanted to be unique hi hi on what bit on what basis did you choose 20% of users to enable new application so that was a stage rollout we started off with 5% at as of now it is at 20% so it has a place so place or stage rollout we do not choose the users how do you see the difference between old app and pardon how do you see the difference between old app and new app very drastic differences one thing is development is easier today we are able to do things which we had never imagined we would be able to on the old app one example is deep linking what we ended up creating was one single class with deep links everywhere so today you could give me any book my show html link and I would be able to deep link it to a particular section in the app and it is very smart enough to figure out fallback so let's say it will be smart enough to figure out okay you tried to open this page but you did not have a particular value which was needed to render that page what did you do is it would make an epi call get that value and then render that if that is a possible use case how did you find out the area that you needed improvement so most of it is user feedback since the website went live a lot of people have been asking us for price and this filter on the app for a long long time so majority of our us changes have been driven by users feedback so I have two questions one is that are you going to make a few things that you think can be open sourced like these auto generated code and dynamic view rendering or things like those so we have spoken about it we might not open source the entire thing but we might just put up a demo sample which gives you how we did it so as to just to answer your question that auto generated code right look up something called as annotation processors just try to figure out to match your use case it has nothing look just so if you have used butternife in the past if you have used dagger any sort of annotation like if you have used android you know annotations at the rate overwrite that is what tells android okay you are trying to do something so we use the same concept where and we have at the rate generate at the rate generate make presenter what that would do is you will need to just compile it once and when you run it it would automatically generate a set of classes in the folder so but yeah hopefully I will at least put up a sample project which you can look at and mother question is like how do you deal with db schema updates so do you use a no-sequel kind of thing or you will use SQLite or how do you work so the old app uses SQLite the new app uses rel so there is nothing much of a difference apart from the speed and the performance to be honest it still has the same problems from migrating from the older to the newer version so you write like multiple schema changes codes again and again like if we have to so one thing which we have learned is writing for scale involves a few thinking changes as well the way you think about it was more important so today whenever I ask request the server side things to send me a key a response a value kind of thing I usually ask them to give it to me in a json array instead of a json object so let's say tomorrow if today let's say ads we are doing native ads within the content so within the movie list you see a third card being as an ad so that ad would come through but what would happen is okay today you wanted to do one ad tomorrow you said to add now your json structure changes you can't break the older api but you want to have the new one so what we end up doing is we created json arrays so json arrays with one element as of now so tomorrow if you want to scale you can keep just adding whatever you want to that is one thing on the client side of things is we try to make it as I said I try to maintain a very public kind of facing interface from all those other projects so what we do is we usually take in our hash map as a parameter okay so what hash map let's me do is add multiple params over time without breaking the constructor so if your constructor is not changing you do not have to bother and of course we use dagger for dependency injection as well so everything is injected rather than being created so testing becomes easier so hash map has been a great thing but hash map again comes at a cost memory is on the higher end for the hash map compared to a comma separated string comma constructor so we try as much as possible to keep the hash map structure followed because it works for us because our requirements keep changing that much let's say we are using certain library for now okay so we have a non-standard phone and that library doesn't work so how do you are going to handle it so never actually came across something we do not support non-google pay services nothing in china everything has been in india for so honestly that does not we have not really thought about something like that can you give me an example if something has happened to maybe i can then relate like why would a library work on x and not on y because at the end of the day just java right so you use rx java rx java is still java at the end of the day it's not something else just a simple thought that if you are using an image library yeah so sometimes it might work and really it didn't come out across that such cases okay not really to be honest we have never faced something like that yes we do hi you said you are using you developed a view provider for reusing some components like and not only views the functionalities attached to those views also yeah so why didn't you go for fragments for developing fragments instead of creating new view provider and so fragments provide can provide the same functionality i guess correct but so fragments we have two problems life cycles being attached which i do not want to be responsible for i let's say just want to show a dialogue on a screen i would not want to use a fragment and if you are using a fragment you need to know the position of the fragment beforehand in your XML that can be handled you can you can to be honest but we chose views were simpler so if you see the synopsis page had a small strip of lead cast right so that has been written as a separate view and functionality together so tomorrow if you could give me a event a movie code i could randomly show that view in any screen of the activity without anything okay but again the fragment should work as yeah hi uh just want to ask like uh there are two questions from my side one like why do you choose mv mvv m over mvp like what specific problem you are not able to solve by m using mvp so mvp also what we chose right has been heavily customized so mvp clearly says your context android and all of those things need to be there we have customized mvp also to match our requirements and one thing we have learned over time is there are always exceptions so if you look at the seat layout screen which we have there is too much of interaction happening typical mvp implementation would mean your activity and the presenter would need to communicate via the click would need would go to the presenter the presenter would then call something on the view so that was too much of happening so seat layout is the only exception in the entire app wherein we have everything in a single activity again so mvp we chose for mvv m because uh mvv m we did not want to be uh doing view models and we had no interest in data binding anytime sooner so mvp seems like a more possible solution because we wanted to unit test our presenters independently as well so all our presenters ideally in an android mvp project the presenter can contain context application android related things but we have made it a point our presenters also do not have anything android related so the only thing that is android related is uh rx android schedulers dot main thread which obviously can be switched with a test subscriber okay so like you are saying like you are prefering mvp at the end of the day we are because it's a pitta use case better okay and like but you said like uh like you are using some of the properties of mvv m as well so we not only use some properties from mvv m we have looked at wiper which is an equivalent of mvp in ios okay so we really like the router vip er r is the router part of it so we modeled our navigation and everything on the router side of things so i have a class called as router or java which is one single place anybody who wants to navigate anywhere in the app has to go through that screen so that happens wherein like you know you get a push notification that screen comes he processes everything and he knows which screen to redirect you to or if that screen is not available at a particular point of time maybe like a new feature was added in a newer version of the app versus older version to one ita so what it would do is it would gracefully fall back if it is a web either open a web view or give a error to the user i think we can do that simply in mvp as well by using rx like by using subscribe or unsubscribe i think we can do that you can you can i'm not saying you can't i'm just giving an example as to what we have been trying to do it's not just looking at mvp or mvvm or something else it is trying to pick up things which are good and across even across places as well thank you yeah if you had to estimate the time it would have taken you to refactor the app what do you think it would have been pardon if you had to refactor the app how long would have uh the new app the old one so i give you a timeline oh you started from scratch right it took you six months starting from scratch if you had to refactor the old app into the new one um difficult to be honest uh i would give it into the new one as in what terms like do you want just a number of days you think it could have taken you like when you're deciding to refactor or rewrite the estimates it would have taken me approximately the same time to run based on the tight coupling right every screen i had to do that so that makes it also i didn't quite understand the dimensions thing you've done here because you still have the dimensions on the score 28 repeated as many times as you would have if you just yeah but that is just a reference to it right and it is declared at once so it is not i'm not defining 2dp like two different times it is just referencing to the exact same thing but they still have a one-to-one mapping right like with dimensionals go 28 wherever you would have had 28 so that's a one-to-one mapping correct so isn't it just boil of it it is but much more readable it depends on your use case again as i said like we prefer because scale scalability and maintenance was a bigger concern to be honest thanks a lot thank you


I'm Charlotte Ann Lucas with NowCast SA, and I'm here today with Drew Galloway from Move San Antonio. NowCast, most people think of us as sort of local CNN or public television on the internet, and our mission is actually civic engagement. Tell me about what Move San Antonio is trying to do. Sure. Well, thank you so much, Charlotte Ann, for having me here today. It's a pleasure to be on NowCast. Move San Antonio, in our most basic essence, gives young people a voice in politics. We are a grassroots, non-partisan, non-profit organization building political power in underrepresented youth communities, and we do that three different ways, through civic engagement, through leadership development, and through progressive issue advocacy. And so we work across San Antonio on every single college campus registering young people to vote, teaching them about issues that they should care about and that matter to our generation, and then ultimately encouraging them just to go cast their vote, make their voice heard. And we train young people how to be community organizers and how to do peer-to-peer engagement and how to talk to other young people about these issues. And then we go out and we actually talk to legislators about issues that we care about, things like the millennial economy and voting rights and equity issues across the city. And so we're so proud to work here in San Antonio. Last year, our group registered 8,568 new registered voters here in San Antonio. And so it's a great honor to be here in San Antonio. That's terrific. And you just get some validation from Berkeley, from UC Berkeley, about actually being able to increase the voter turnout, not just the registration. Absolutely. So like last year in October and November, we participated in a nationwide test with Civic Nation, which is a group that cares about voter turnout and young people voting. And then also with UC Berkeley, who did the statistics on that test. And so we worked in two precincts onto the west of St. Mary's, and we knocked on every single door in that neighborhood. We sent phone calls into that neighborhood. We use text messages to communicate with the members in those two neighborhoods.   Just get out there, cast your vote. Your voice matters. And we gave them some literature on the election. And we also invited them to an election day party that we held in both those precincts. And so when it came around to election day, we held a huge pizza party. We had like a dance off contest. We had games and just made it really, really fun. And what we saw is we saw that young people not only came out to like enjoy pizza and vote if they could, but they also brought their parents out. And so it was, they made it into like sort of a fun, recreational family environment. And so after everything was done, after UC Berkeley crunched all the numbers, and we had two control precincts where we didn't do any work and they analyzed that, turnout in the two areas that we did work in jumped 7% last election cycle. And so we're really, really proud of those numbers. Our team worked incredibly hard. And we're validating those again in the municipal election by going through additional tests to make sure that, you know, the message, we believe that the messages go out, talk to every single voter, tell them that their voice matters and they will get out and go vote. Well, and as you mentioned, the municipal election is coming up. May 6th is an election for the mayor and all 10 city council races, city bond issue, school issues. So it's a pretty big deal. And one of the things that we know, while in November, there was something in the vicinity of 52% of eligible voters came out to vote, historically municipal elections have been really, really pitiful. That's the nice word for it, but it's really embarrassing too. We have in Bear County an 80% voter registration rate, and in municipal elections, somewhere in the vicinity of 11% or 12% voter turnout. So I mean, what are we going to do this time to try to move that up when it's an election that some people can't even remember what day it is, right? Yeah. Well, and you know, if you look at the number of voters in 2015 that were 35 and under, it was only 3% that turned out. And so like, so we work in demographics with young people. And so we are out every single day right now doing voter registration. We have almost a 20 person team across San Antonio doing that work every single day. We're telling them that their voice matters. And once we get them registered, we're bringing them into a lot of events that we're holding. So for instance, last night, we just held Know Your Rights training at Northwest Vista with Raisa's in the next couple of weeks, we have an equal pay event. So issues that we're hearing from young people that matter to them, we're keeping them engaged by bringing them to events, having them interact with candidates through happy hours and that kind of stuff. And then ultimately, it will be much, much easier to mobilize them and get them to turn out. And so the goal this year, I know across San Antonio, there's lots of different organizations, but we're all talking, we want 20% turnout. So we're, we're shooting high, but like we're working hard towards it. Okay, we're in, we're in, we're in for that. So we're going to be working with you on one of these events that's coming up on April 1st. And you've got something really special planned. And by the way, if you can't be there in person, you'll be able to watch it live on NowCast. When we appreciate your support and so glad to have you. We have seen all the candidate forums that could come up every single cycle. And it's predominantly where, you know, politicians come into the front of room, answer a couple of questions and then take questions from the audience. That's the standard, you know, candidate form. We thought, how can we make this different?  And so the way we thought about is we're going to make this really fun and engaging and entertaining. And so I'm happy to announce that on April 1st, it's a Saturday night from six to nine, we're going to do the Move San Antonio Youth Forum. And it's called San Antonio Night Live. And and so it's going to be it's going to be sort of skit based. It's going to be a great way to have fun and talk about issues in a really fun, interesting way. Infrastructure is not like the most interesting conversation. But you know, you're going to learn a lot about like what city council does, what the mayors believe in. And it's going to be just an incredible opportunity to get together and talk about issues that affect our generation. So all of the candidates have been invited to this and invitations go out this week or next week. Okay. And and and hopefully, and it will be a night not just for the mayoral candidates, but for city council candidates as well. We're going to try to fit them all in. So that's why it's two and a half, three hours. But it's going to be fun. There's going to be, you know, different types of activities for them to do. And it's going to be it's definitely going to be a different candidate form. But it's going to be it's going to be something you're going to remember. Absolutely. And and and I think I'm really looking forward to it. I've had a little sneak peek behind the scenes. And that's why we're involved because this is going to be really, really good. And and it's also going to be something that you're going to want to go back and replay. And so we'll be able to read one. Yeah, if you can't make it to the brick, you can find it on nowcast.com. And and yeah, so it's going to be something you're going to want to look at and you're going to you're going to it's going to be really informational but also fun at the same time. That's terrific. Well, just a couple of reminders. Early voting in this election starts on April 24. And I want to point out something that that we've done one of the things that we've done well. At nowcast, I say we have an early voting map that you don't need to download any app for you just when when you're ready to go early vote, you just go to your phone and say early voting San Antonio our map pops up and it tells you where the closest place is to vote. And I'm really proud to say that we've had over the past several years 170,195 different people have used our early voting map. That's amazing. I used it last last election myself. So so thank you for doing that. No app needed. Just download that thing. And the election is on May 6. And there's probably going to be a runoff. We think there's going to be some runoffs. And so but it's going to be it's going to be a great time, you know, like at the election is on a Saturday, we're going to do party at the polls on a couple of those days as well. So keep an eye on our website. It's move San Antonio word or our Facebook page. We also have a Twitter feed. Instagram and Snapchat all at move San Antonio spelled out. And so you'll be able to find all those events and things that are happening all the way up to May 6. And the best the next one coming up is April 1. April 1. All right. Thank you so much. I really appreciate you being thank you for all your work. We really appreciate it.


Hey guys, long time This is just an update Kind of sort of an update video to let you know What is going on with the oil catch cans? I'm at a I got me a shop. That's why I Am not doing Videos as often as I used to You know five maybe six of you That watch my videos may know that I used to work out of my garage now I got me a shop there is Three more base over there. Anyways, you may know or not. Well, if you don't This door is just okay. I believe it was Two years ago or so. I don't know a while ago. I had an issue with the driver's side catch can oil catch can I have set up of three. I'll show you in a minute and After just one session it would overfill with oil the one attached to the left side driver's side cylinder head and Well, I couldn't finish a finish a 20 minute session because I didn't want to leave oil On the on the racetrack, obviously for obvious reasons so I thought I went online and you can buy a like a A Check valve thing from Cusco. I think they make it. It's like three hundred four hundred dollars Or set up a different kind of a catch can, you know, like an IEG Stuff like that My stuff vents into the atmosphere. Let me show you. So this is it The reason I'm here is I'm just doing some look. This is from flying rubber On the racetrack as I parked this thing in Was it October? whenever the last Michigan And not a robot gingerman Restrike is I just came back home parked it and I was it still have a tank of 85 fuel, which is corrosive I'm gonna Actually, just I was gonna drain it and put a few gallons of 93 octane, but I'm just gonna fill it up with 93 Do a half and half that's gonna lower the 85 and That should be, you know should fix the problem. It should be safe to sit for a few more months It is the first of January 2024 today actually and It took me so much time to actually get to this car The the tire pressure in this wheel was 18 psi You can you can tell how the at the track was maybe in its 30s 32 34 I don't remember so you can now see a was an 18 PSI difference in between hot tire and now well it is 30 out anyways and Yeah oil change obviously because 85 I was running it I was actually got it up to my 85 content was maybe up to 70 percent according to my access port Which is pretty high pretty good But it is corrosive if it sits in your oil. So an oil change after a race track Track day I should say is important. So, you know, don't wait months like I did so oil change tire pressure You know overall check No major issues. I got an oil leak very minor oil leak from this wealth cover and a rear diff Which I'm gonna have to address the rear diff. I'm gonna leave alone the rear diff. I'm gonna have to address Come springtime So this is my setup Block catch can Driver side catch can well not anymore. Let me explain This used to be the driver side catch can this hose used to go right there and Passenger oil catch can Now this is the driver side catch can and this is the passenger catch can you can see This hose runs all the way down there To the passenger side and then this guy here Runs down to the driver side Now in my head The idea was You know before I would make a right turn Especially maybe even on braking during braking this would the hose was just right straight up to here like a foot-long hose Maybe not even straight up to this catch can obviously the same from here to there This catch can is the same I have to had to change this a little bit to make it all You know function So the idea behind this in my head at the time before I even did this during a right turn this oil that's Connected where it's where's the house This one this one here you can't see it, but it's runs right over here It will not get up to that to that catch can because well I mean, you know all this the the g-force goes this way the hose runs Goes that way obviously right and the same thing for This other catch can make in a left turn this will not go there the g-force Gravity is working against This hose so there's no no, you know way. This is gonna fill up quick But it did but not quick it took three sessions for this for maybe I Would say I would collect it this much oil. So that's one hour of on the limit Driving that catch can this much the black about the same this Maybe this much something maybe going on Well, no, I was gonna think because no that's the passenger side so Some for some reason this catch can fills up quicker, but it's much much slower. So It worked. This was essentially I don't know $15 Don't get any hoses. This has to be oil resistant holes. Okay. All these hoses are all resistant transmission hose is Also, okay, I should this is I think a transmission Hose anyways, don't get clean hoses is what I'm saying. That's it cheap way If you have the same issue as I do Just flip the catch cans around problem solved instead of buying fancy 3 $400 check valves. So this is it Tires are in bad shape Probably one more track day and they got a go but I plan to do more autocross Stuff this year. I Think I only did one track day last year last season Just didn't have the time back to hibernation See you. Oh one more thing. I did change the axle back From a two and a half to a three inch Be the reason because there was something rattling inside the tip on the two and a half the two and a half went on the O6 impresa With some of you may know and this guy is too close to the bumper and it melted it Here I'm probably gonna trim this and maybe buy the Cover I never liked those. I have to figure out somehow how to lower this another half inch or so and You know cut this off basically check out this forerunner 2000 In perfect condition the frame is nearly spotless check that out Inside super clean. We are doing just as a precaution. We are doing Rad bearings in frame rad bearings and main bearings had to pull the transmission We're gonna replace the transmission to a better one. We're also doing timing. Oh Yeah, this has a cylinder gasket issue. This has 306,000 miles guys. Let me show you the bearings. Here's the rad bearing. Keep in mind 306,000 maybe 308,000 I don't remember over 300,000 Check this out. This is this is I mean, this is the rad bearing and this is the main bearing You got to give it to Teora seriously You know Amazing They don't they could stay they could have just stayed there. We didn't have to touch anything But look at this perfect Obviously, you know, it's got a few leaks here and there But I mean it is just Well, there is a Texas or a California Truck used to be somehow we ended up here If this this this looks like If it was in the Midwest Where I am right now, obviously It looks like it's been here for it might have been here for two three years Maybe four but this is a 20 Two-year car 22 year old car Crazy after this video. I'm gonna put out a longer video and the actual Michigan gingerman track day Which happened months ago better late than never. That's it. Ciao


Hello, I am Dr. Awdoomer Nethalkar. I am a consultant neurosurgeon and spine surgeon at Manipal Goa Hospital for last 10 years. And I just want to educate the general public about the entity called headache because headache is one of the commonest symptoms associated with a neurological disorder. Now, which headaches are significant and which are not to be taken very seriously? The prevalence of headache in India is around 62% of which migraine is about 32%. So it is that common. So it needs to be tackled very seriously. The commonest headache that we have is migraine headache, tension headache, cluster headache and sinus headache and other non-specific headaches. Now, as far as how to diagnose this, as far as the migraine headache is concerned, it is mostly one sided and it is throbbing or pulsatile and coming all of a sudden very severe in crescendo and resulting into vomiting at times and vomiting relieving the headache. Now, this vomiting is associated always with nausea. The tension headache comes as a band around your forehead or your back of the head or around the temples and it usually comes at the end of the day in the evening. Now, this tension headache is not secondary to tension. It is called so because there is a tension in the muscles of the head. The third headache is the cluster headache which is usually behind eye, very severe stabbing and with crescendo and descendo resulting into vomiting at times. And other non-specific are related to fever, any temperature that you have can give rise to headache. One more headache we should be aware of is the sinus headache which usually comes on the forehead or below the eyes associated with the redness of the eye or running nose.  It's not like that. Usually a headache which is around 5-10 days old, you must consult a neurospecialist. And the brain tumor headache usually comes early morning. It wakes you up from sleep and this is dull. It's not very severe. And then it is associated with the vomiting which is projectile. Projectile vomiting is something which is not preceded by nausea. It just comes up suddenly because of the raise of the pressure of the brain leading to vagus nerve stimulation and vomiting. And this vomiting usually relieves the headache. So, if this headache more so it is associated with a blurred vision or a double vision, you must always consult a neurospecialist. Because double vision, blurred vision headaches are 90% associated with the brain tumor and can take a serious turn if they are not attended to. Also, any headache associated with the paralysis of the hand or leg on one side or numbness of the hands or legs or any associated symptoms like unconsciousness, epilepsy, you must immediately consult a neurospecialist. Everything will be okay if you consult the doctor as early as possible.


The mission of the Air Force Systems Command is to research, develop, test, evaluate, procure, and produce new materials and systems in support of aerospace power. Systems must be of superior quality, yet be affordable and maintainable, and above all more than equal to the systems of a potential enemy. The first Air Force aircraft to be developed specifically for the close air support role in a combat zone. It can loiter in a combat area for almost two hours and still return to a base 250 miles away. The A-10 can operate on 2,000 foot runways close to the battle area to improve its response to combat conditions. It's also designed for rapid turnaround between missions and sustained operations over a long period of time. Its cruising speed is 340 miles per hour for low altitude and low airspeed operation where faster aircraft are less effective. This twin-engine single-seat aircraft can carry up to 8 tons of mixed ordnance, including conventional bombs and air-to-surface missiles such as the Maverick. Its unique armament, however, is the 30-millimeter gattling gun which can fire 2,000 or 4,000 rounds per minute. This gun can defeat heavily armored tanks in a single strafing pass. For survivability, the A-10 combines a backup flight control system and self-sealing fuel tanks with protective armor enclosing the cockpit area. The armor protects the pilot from both high explosives and 23-millimeter armor-piercing projectiles. The A-10 has advanced avionics, including a head-up display unit which couples a visual presentation of both combat and flight information with target identification and fire control equipment. The Tactical Air Command received the first A-10 in March of 1976, and eventually over 700 aircraft will be in service. Dane is a large radar system on Shemya Island, one of the most remote points in the Aleutian Island chain. This phased array radar is 100 feet high and 96 feet across. Its face contains 34,000 elements that can transmit and receive signals. Primarily, this radar gathers intelligence information from Soviet ballistic missile flights. In addition, it provides object warning and tracking in the event of a general missile attack. The Cobra Dane system is operated by the Aerospace Defense Command. The GBU-15 is a modular glide weapon designed to destroy targets day or night and in adverse weather. The planar wing version is launched from high altitudes and the cruciform wing weapon from low altitudes. The baseline kit common to both configurations includes the control module, warhead adapter, and television guidance module. Unitions carried on both include the Mark 84 2000-pound general-purpose bomb and the Su-54 dispenser for cluster munitions. Guidance options include TV data link, imaging infrared and distance measuring equipment. The planar wing design is effective for high-altitude long-range attack. The B-52 launches the weapon, initiates mid-course corrections, and directs it into a target with extreme accuracy. For low-level short-range attack, the cruciform wing weapon is launched from fighter aircraft. This design is highly maneuverable for mid-course corrections at close range, improving accuracy against ground targets. At low altitudes, the TV guidance system is effective against targets such as missile sites, ground vehicles, and ships. Further development will produce a family of modular glide weapons for use in high threat areas. While the Minuteman program has been continually improved to increase range, accuracy, and reliability, the Air Force is concerned about improving the survivability of the land-based ICBM force. To fulfill future ICBM requirements, the Air Force has initiated the MX program. Two major tasks are underway, the study and selection of mobile basing options, and the definition of a new and larger ICBM. Two mobile basing options have been selected for more detailed evaluation, the shelter system and the trench system. The trench concept includes a network of underground trenches that would provide no specific aim point data for enemy missiles. The trench would be strong enough to resist blast pressures, yet still allow breakout for missile launches from unmanned vehicles. The shelter concept involves a random switching of missiles between hardened shelters on mobile transport systems. It would force an enemy to execute a complex and difficult attack to destroy each sheltered missile. The missile design itself would result in larger payloads, improved efficiency, and increased accuracy over the Minuteman III. Current hardware validation is in progress to reduce technological risks and provide reliable development cost estimates. Systems Command has been looking at future transport aircraft for battlefield support operations from short, unprepared forward landing strips. Two prototypes were considered. The YC-14 prototype maximizes its lift capability by mounting two engines above and forward of the wing's leading edges. This forces engine exhaust over the upper surface to improve the wing's lift characteristics. This design also reduces the aircraft's infrared image to ground-based detectors. Additionally, the high-engine position lessens the chance of foreign object damage during operations on unimproved surfaces. Another prototype, the 4-engine YC-15, is more conventional in design, relying on large flaps through which engine exhaust is blown for increased lift. A special flight control augmentation system improves handling at cruise speeds and aids low-speed approach and landing performance. The YC-15 has a landing gear system designed to distribute aircraft weight over a relatively large area. This improves performance in both normal and unimproved landing surfaces. Both designs include an improved rear-loading ramp, a high tea-tail for stability, and a wider fuselage for increased cargo capacity. Both designs must be capable of airlifting over 25 tons of cargo from conventional runways and at least 19 tons from 2,000-foot dirt strips. Additional design goals require a 400-mile radius of action with a ferry range of 2,600 miles. Both prototypes cruise at speeds just under 500 miles per hour, yet can successfully maneuver at approach speeds as low as 95 miles per hour. The F-16 is a lightweight fighter aircraft designed to complement the more sophisticated F-15 in the air superiority role and supplement other aircraft in the ground support role. It combines proven system components with advanced engineering technology to achieve a modern yet low-cost fighter aircraft. Non-metallic materials are used in certain structures to decrease weight. Borrowed from the space program, a fly-by-wire flight control system improves flight performance and contributes to maneuverability. A 30-degree recline cockpit seat reduces the effect of high G-forces on the pilot. Automatically variable wing leading edges are used to improve lift, directional stability, and buffet characteristics. Other features include a control stick located at one side in a single-piece bubbled canopy giving the pilot much better visibility from the cockpit. The F-16's weapons include a 20-millimeter multi-barrel cannon and heat-seeking missiles mounted on each wing tip. Both are coupled to a head-up display unit which shows flight information as well as combat information for acquisition and tracking of air and ground targets. Five tons of various air-to-ground weapons can be carried on wing stations. The F-16 uses the same advanced technology engine as the F-15. This simplifies logistics and it's more cost-effective. This improved engine produces more power per pound of engine weight than the best previous fighter engine. It allows a maximum speed of over Mach 2 and a radius of action of over 500 miles. The F-16 was selected by several NATO countries for their air forces. Through a multinational consortium, these countries and the United States will co-produce the F-16s to be used by them. Combining advanced aeronautical designs and proven electronic components, the F-16 offers a high performance and cost-effective addition to the tactical fighter force. The global positioning system will be a worldwide network of satellites transmitting precise, jam-resistant navigational signals. These signals could be deciphered by special receivers to determine longitude, latitude, altitude, speed and time. 24 satellites will orbit the Earth every 12 hours to provide highly accurate and continuous global coverage to the Army, Marines, Air Force and the Navy. With this system, a ship could determine its precise position on any ocean in the world within 30 feet. A tank unit could accurately determine local time for a coordinated attack. Additional applications include precise weapons delivery during and climate weather, proved approaches and poor visibility, accurate aerial refueling rendezvous and more efficient search and rescue operations. Monitor stations around the world would continually gather the satellite signals. During the 1980s, the NAVSTAR system will provide an accurate, cost-effective global positioning capability. It provides the National Command Authority and Strategic Air Command with a highly survivable airborne command post to replace the EC-135. The E-4 with its advanced equipment offers more effective supervision of strategic forces during a general war. It includes many improved features such as nuclear hardening, an advanced technical control facility, satellite communications equipment and a larger battle staff capacity. Able to carry nearly three times the equipment of the EC-135, the E-4 also has an increased flight endurance of 12 hours. This could be further extended by air-to-air refueling. The E-4s serve as intermediate national emergency airborne command posts. The Air Force was selected as the executive agent for the Department of Defense in all NASA space transportation system activities. This includes a space shuttle vehicle to be launched into orbit for space missions during the 1980s and beyond. The Air Force is developing the interim upper-stage propulsion system and preparing launch and recovery facilities at both Vandenberg Air Force Base, California and at the Eastern Test Range in Florida. Based on NASA estimates, the Air Force confirms overall cost reductions for DOD space missions while improving future operational capabilities. The space shuttle will deliver greater payloads at a lower cost per flight than present launch systems. After delivering satellites to orbiting positions, the shuttle could make maintenance visits and eventually retrieve satellites, returning to Earth with up to 16 tons of payload. As part of the testing program, the shuttle was mated to a 747 for tests, evaluating the vehicle's flight characteristics. After its mission, the shuttle will glide back and land on a 15,000-foot runway, much like conventional aircraft. It could perform more than 100 missions during its lifespan. The shuttle will become a valuable asset for NASA space operations and the Department of Defense. A modified 707 is the basis for the E3A Airborne Warning and Control System. It serves as a command and control center in both tactical and air defense roles. The E3A's sophisticated electronic equipment can detect, identify and monitor the interception of opposing forces during a conventional war. Its unique radar looks down on a large geographic area from 30,000 feet and detects targets without losing them in ground clutter. At 250 miles, the E3A can spot fighters at low altitudes, regardless of terrain or weather. The E3A incorporates a tactical air control system to monitor and direct encounters with enemy aircraft. Computer display screens indicate detailed information on the progress of all aircraft to provide the mission controllers with a display of battle conditions. More flexible than land-based radars, the E3A greatly improves the capability to manage an airspace. The F-15 is a new advanced fighter aircraft capable of gaining and maintaining air superiority against enemy fighters in all types of aerial combat. It's designed specifically to secure the airspace over a battle area to allow tactical missions to operate without the threat of air attack. The F-15 is the first U.S. fighter aircraft whose engines produce thrust greater than the weight of the loaded aircraft. It has even exceeded the speed of sound in a vertical climb. These engines, together with an efficient wing design, allow the F-15 to maneuver very tightly without losing airspeed. This is critical in a medium or low altitude encounter with enemy aircraft. This twin-engine fighter has a fuel capacity for a 500-mile combat radius and can use a variety of aerial weapons. The F-15 has been tested against a modified F5E to compare its combat capability with existing fighters. The F-15 consistently maintained a combat advantage. The sophisticated avionics systems in the F-15 greatly enhance its combat effectiveness. Its versatile radar permits target detection and tracking from point-black range to beyond visual contact. It can also distinguish targets below the aircraft in spite of ground clutter. The head-up display unit shows separate information for each weapon system as well as flight information to assist the pilot during combat. Against aircraft like the F-4, the F-15 has achieved an overwhelming win record during combat maneuvering tests. The F-15 can use all the classical maneuvers and use them in a greater variety of situations than any previous aircraft. The F-15's outstanding performance in all types of weather, day or night during complex combat conditions enhances U.S. air superiority into the 1980s and beyond. These are some of the highlights of the Air Force Systems Command Research Development Test Evaluation Procurement and Production in 1977. Only through vigorous and progressive programs can we maintain the edge in aerospace power.


Hi everybody, Joe for jaspyscasebreaks.com coming at you with 21-22, Pani Noir, a basketball two box. Pick your team number seven from jaspyscasebreaks.com, half case from a fresh case. Very big thanks to, that's the number of luck results, big thanks to everybody here who bought their team straight up, I appreciate it. On a Tuesday, pick your team number seven. So it was Hans with Last Bot Mojo, got the bucks last before we pulled the remaining teams out for one big number block, random number block randomizer which we did in a separate video.  Right over here. I'm going to need these dice, we've got to pick which two boxes we're going to do in a second.  Alright, so we'll go one, two, three for the top two boxes and four, five, six for the bottom two boxes, use that die right there, one, two, three, four, five, six. Six bottom two boxes and these we will save for pick your team eight which I've already loaded up.  Jaspyscasebreaks.com, we'll put pick your team eight right there so we know these two boxes are from the same case. Here we go, seven autographs for memorabilia cards per box, on average, Luca on the front of here. You know, we love the sneaker spotlights, a lot of good stuff in here, good luck everybody. The one per case metal card is always a cool looking one too. I'm going to really fix this issue here, these cards. Just use the immaculate boxes, Panini, all right, got a redemption on the bottom, card here, good luck everybody. One out of 35, Jonathan Caminga, world champion, goes to Mark and the Warriors. Warriors, come out to play, yay, you got Brandon Ingram, four out of 35 for the Pelicans. Kevin for the Pelons, might be a pretty decent team next year. We got Damontis of bonus, 33 out of 99, this is still Pacers edition, this is going to go to Jeremy. We got New Wave jerseys, Cade, Cunningham, seven out of 99, Detroit picked up straight up by Nicholas. We got Dish Night, Drew Holiday, 63 out of 75, Bucks, Hans, Last Bomb Mojo, Noir Icons, Alonzo Morning, it's pretty cool, 85 out of 99 for Charlotte. Charlotte is our first random number block hit, so if you're new to this, here's the number we go by. Not that digit right there, but that digit, 85 out of 99. Number five is Brian Frank, won that spot in the filler. Mark Aguirre, 97 out of 99, Otto Noir, anybody have any guesses on that redemption on the bottom for bragging rights? Larry with Dallas, we got Arvitas the bonus, Damontis is dead, 52 out of 99, Blazers, Blazers, I try to say Portland and Blazers kind of smash that together and turn it to Blazers. For the Blazers, two. Portland two is going to be for Carl, Last Bomb Mojo. Silver screen debuts, 56 out of 99, Zaire Williams. Grizzlies are a number block team, so that goes to six, 56 out of 99. Carl, Grizzlies six, Rex guessing Charles Barkley, Rex if it is Charles Barkley and if you get the team right, guess the team. I'll give you a zillion dollars in break credit. Ooh, sneaker spotlight signatures. Jacked up might be right. It is a sneaker. J, A, Jama Ran, jacked up, nice. Sneaker spotlight signatures, Jama Ran. Grizzlies are a number block team. Redemptions go to zero and that's for Carl. There you go, Carl. That is nice. I hope you redeem it. I really want to see what that looks like. Did I say there was a case hit here? I think I was thinking of impeccable. Royals back up again. Good luck, everybody. Thanks for the fill. The next half is in the store, so check it out, jashbscasebreaks.com. We got Anthony Davis, 23 out of 99. For my Lakers, that's going to be Lakers three. That'll be for Daniel. Reggie Jackson. Basketball player Reggie Jackson, 9 out of 10. That'll be for the Clippers. Clippers, 9. That'll be for Daniel as well. Cade Cunningham, 34 out of 35. Detroit, Nicholas S. I love the base cards in war. They have different additions there as well. They look really sharp. New Wave jersey, Davion Mitchell, 32 out of 99.  Going to Oliver and his kings. There's Oliver in the chat right now. Oliver and I just miss each other. Just like two shifts passing a night. It was just a high buy. Just kind of waved it in his car. No, it's OK. You have things to do. Got a life. 25 out of 25. Dual Relic, Quentin Grimes, Knicks. And Mazwan Bride, both Knicks. That'll be for Mark. Reggie Jackson, 18 out of 25. Two-color patch. That's another clipper. Going to eight. Mark Price, 57 out of 99. The price is right. Going to Cleveland. Cleveland's a number block team. Cleveland's seven. Cleveland, this is for you. Carl with the number seven. There you go, Carl. A few more here. We got Luca Garza. 86 out of 99. No, Luca. I am your father. Detroit, Nicholas. Two more. We've got a nice sneaker spotlight. Tony Parker, 60 out of 99. For the San Antonio Spurs, Spurs are a number block team. So that goes to Spurs zero. That's Carl, 60 out of 99. These sneaker spotlights are pretty sharp. All right, and the last one is another sneaker spotlight. 63 out of 99. KG, Kevin Garnett, sneaker spotlight autograph for the Celtics. Boston, Boston three is Daniel with Boston three. Three sneaker spotlights in here. Pretty nice. Could be a sneaker spotlight hot case. So get into the next one. Jaspy's casebreaks.com. I'm Joe. I will see you next time for the next noir break. Thanks for watching, everybody. Jaspy's casebreaks.com. Bye-bye.