 Thank you, so hey everybody Alex actually in from Toronto tonight, so it worked out pretty lucky I'm here to talk about Emperor Cordova. I did a vaguely similar talk at Emperor Conf This won't be repeat stuff But if you're interested in like how performance works or how to make these go zoom probably look there and not covering any of that Emperor Cordova is actually a library that I'm one of the main maintainers of We actually started as a fork of Emperor Cordova. We need a better naming convention here Emperor Cordova at this point is basically deprecated. The last commit to that was me right before Emperor Conf saying don't use this library Nobody updates it. Last time anybody ever touched it, but just to credit them. We did start as a fork out of that library Basically, we ended up lead maintainers didn't want to maintain bad legacy and decided to a hard fork and change what we needed to do So I'm gonna run through a couple of things and go through a live demo of just what this library does For those who don't know what Cordova does is it basically lets you build native mobile applications that are wrapped in a web view Sometimes you'll hear negative things in terms of you know, Cordova phone gap performance isn't as good as what you'd like to see The reality is you can nine times out of ten hit the performance that you need to hit It's honestly just understanding how like don't reflow mid through an animation and just your basic rules That may be a little bit looser with if you're working on a desktop So to get started with Emperor Cordova obviously need an Emperor project then just Emperor install Emperor Cordova This will do two things for you It will actually go through and make sure Cordova is a dependency of your machine now And if you're warning if you don't have Cordova installed globally, that's not something we do on your behalf It feels a little bit weird for a package to install a global dependency We'll also go through and actually create the Cordova directory inside your Emperor project for you It doesn't actually brick it you can still ship for web if you want. It's completely isolated from there So I'm gonna go through hooks first because then we're going to switch to a live demo But one thing we actually added to this library is hooks So imagine that within Cordova you're going through and you know building an iOS app building an Android app Or you're running this thing called prepare and imagine prepare is the Cordova equivalent of npm install Well, we're going through and reinstalling any plugins that we're using specific to a phone or any platforms It we're using if you don't like that syntax the reality is nobody does Cordova predates npm Still doesn't use package JSON still uses XML files. That's why sometimes our conventions are a little bit funny We have hooks there so that if you're about to do a build you need to warn somebody You know make sure you submit your app store keys properly or you're doing an Android specific build You want to maybe change your platform a little bit. That's what you'd use a hook for One thing actually added in the library last week as well Splash is coming but we now also handle all of your icon and splash generation for you for the phone devices So if you've never built a Cordova app before one of the worst things in the world is you need about 20 different icon sizes Depending on what platforms you're shipping for same with splash And if you get one of them wrong quite often you'll just be treated with a white or gray screen of death and the app looks like garbage So we're actually doing for you now This is all documented on the read me is if you give us a single splash dot SVG and a single icon dot SVG We'll look at every single platform you're shipping for resize the SVG to the right thing If you're dealing with splash which have different dimensions We actually handle that for you to and add white space based on your border coloring and we'll go and import that to the platform for you So just quickly running through what this library does and I'm going to demo library load for you Cordova build up the top I'm only not demoing these because we're a lightning talk don't have time to run through a full build process What that will do is it will run ember build for you It will then go through and copy all of your assets over to your Cordova directory Which is an ember Cordova slash Cordova and then it will run a Cordova build up the chosen platform for you So a single command you basically taken ember compiled it moved it to the phone and made sure that will work Open is just for the lazy hackers like me if you pass it a platform of iOS It will open the Xcode project for you if you pass it Android it will open the Android studio project for you That's actually configurable as well Prepare here is basically again the npm install of Cordova world Link is actually just going to recopy over assets. So sometimes when I'm debugging I'll actually go in and change You know something in the hard Cordova files just to see if it's working Link will just basically keep resetting that back to my last state for me So if we're going to demo it we can actually do library load on a phone You don't even need to be connected to the machine You actually can ship that to the app store if you want to I would really suggest you don't because it's still questionable Whether you're allowed to But for development environments and things like that. It's really nice to see your changes straight away and this last command down Here is basically just a proxy Sometimes it's 2 a.m. And I don't feel like typing in CD Cordova to run a native Cordova command If you're willing to wait for the extra five seconds it takes to pipe a command through ember Which probably not you can do that Last thing here before we do a demo. So we actually have a Cordova service as well So for those who aren't familiar the Cordova container will emit events of what are users doing on the phone Like hey my network just got spotty. Hey my battery just hit 10% user just hit the volume button whatever we're looking for So again, if you go to our documentation, it's pretty good for stuff like this We actually have all of these events bound to ember services for you So you can just in any route in any component say if the user goes offline I want you to react differently or if the user goes home and closes the app I need you to do a graceful tear down we give you the ability to do all of those things as well Let's go back here So to show you library load here I'm actually just going to do a build to a simulator on iPad air Is that big enough? Yeah, so it's not a very pretty app This is just something I needed right before I got here and you see we have the standard welcome to ember here And we're running in an iPad simulator, which you can see right up the top So I'm just going to open up Vim just to point out I use Vim and we'll do welcome to ember night and We're going to save that which is actually harder than you think one handed We'll go back and that's already reloaded So as you're actually editing your ember application This will work as long as you're connected to the same network that your Mac is connected to It will actually go through and keep reloading the app Chris or runs by it spent a lot of time last week fixing that onboarding experience So you don't even need to tell it what network you're on anymore That should be landing in the next day or two. It is going through QA The only caveat here is that if you're doing native work So you're changing your contacts plug in native to the device that doesn't hot reload yet Actually have some theories on how we can pull that off because you cannot reload native code as well Just something we've not had time to pursue yet So in short because this is only a lightning talk Everybody saw it. Anyway, use ember cord over. It's pretty cool. Thank you