 Ladies and gentlemen, so welcome to our special edition of the Grammarine de la Programme Anthome. Again, what we're going to do is simply just go through what is new those days with Grammarine and Grammarine forms especially, because since April of 2016, back in April, quite a lot of new tools and toys are popping up the next, the development experience kind of cool. So I just want to make sure that anybody that is interested in Grammarine forms especially knows about it because things are looking around the corner. Just to let you know quite a lot, a big chunk of those cool stuff are actually still in alpha and beta, whether they're getting there, but it's probably just a good idea to still start in playing with it. Anyways, my name is Ben Nisham Ali, I'm a Grammarine evangelist and a sale entrepreneur with a bit of agile side and a cucumberist, which is a good thing to be doing too. Just to, in order to figure out what level of technicality I'm going to employ today for my speech and who's not technical or not so much, or yes, one, excellent. Who knows about Grammarine? Excellent. Two, three, three people in half, excellent, great. So okay, I might just do a quick introduction about Grammarine in any case so you can have an idea about what it is all about. So Grammarine is a mobile application framework, which is really a kind of wrap up around existing platforms such as iOS, Android, Mac. What it allows a developer to do is just to write one chunk of code and literally deploy it to various platforms such as iOS, Android, Macintosh and later on probably something else. That is also pretty cool because it leverages the power of C sharp, which went kind of open source by the way, and therefore that's a platform that is quite tested, robust, not that much memory hungry, fast with some awesome libraries, super active because every single release you've got some great new tools popping up. So that makes it kind of cool. So as I just explained, pretty much a typical Grammarine application will have just like a shared C sharp logic, so that is going to be, let's say you're developing an application in NVC, sorry I've got to speak to technical a little bit because otherwise I'm not going to make sense. If you're developing an NVC application, for instance, your model and your controller are typically going to be written in C sharp. If you go the NVVM way, your model and your model are going to be written in C sharp, like let's say a good old XAML WPF application. So we want just to reuse all those bits and then the little bit that we see there is just a UI. Each platform will have a different API for the UI the same way then Windows will have at the time Win32, let's say, a windowing framework and Mac will have Cocoa, something. Yes, same, so iOS has got its own API for developing application which is going to produce some buttons and some scrollers and some whatever. Same for Android and same for Windows. So let's say that with this kind of setup, you're going to maybe save like 60, 70% of your code depending how crazy your UI tends to be. To be fair, the crazier the better, there's nothing more annoying than a really, really boring application. So make sure that your UI is very, very good but that's another topic. So there is quite a lot of questions about performance when we're talking about Xamarin. Is it going just to be a layer on top of everything and slow down as a whole malarkey? No it doesn't because it's going to literally run as fast as a native application because it is a native application as demonstrated here. Ultimately, we do some aid of time compilation when we're deploying an IPA to an iPhone so it runs as fast as a normal application produced through Xcode and that's pretty much the same setup we're just using the Dalvik just-in-time compilation on Android, exactly the same, no speed loss at all. To be fair, I think it was like two or three or four or five years ago, some years ago let's say, somebody just decided to figure out what if instead of I think the Dalvik machine on Android will have just like a C-sharp virtual machine and I think the whole operating system so Android just went up the roof like I don't know, five times, ten times faster. It was kind of cool but it didn't get anywhere because at the time Google and Microsoft didn't share that much love which might change in the future or not. So that's a funny one as well, so write everything in C-sharp, C-sharp now runs on two plus six billion devices. I don't know if you just have a rock hole pinging your computer every five seconds and say, hey install the new version of Java, it runs on three billion devices. Yeah, so that's probably, it didn't move for the last five years maybe. But above that, since Microsoft acquired Xamarin and made it open source so as just to interest most of the community, I'm pretty sure that this number might lose its comma pretty soon and especially with the advent of Internet of Things and how Microsoft announced you are just making the IoT stuff very, very fun but again that's another topic but that is going just to go right up. So in order to develop Xamarin, you can technically do that with Notpad or you can do Editor if you feel like it or we can leverage Visual Studio which is kind of good especially with a good extension called ReSharper or Xamarin Studio that has been since Evo 2016 quite abated. The UI is nice, we've got a dark theme in order to be able to code in the dark like a vampire which is pretty cool, usually kind of slick. Although I must admit I do have a preference for Visual Studio because ReSharper is just one of those and code lens and a lot of other stuff but yes, which both of them are free by the way. Everything is free up to with them and conditions. Xamarin Platform is included in Visual Studio, yes it is. Xamarin Platform is open source, hooray, that's very good. I haven't started contributing myself to the code yet but I contributed to a side project called XLAB which is a pretty cool project but quite a lot of stuff to put in Xamarin Platform but I didn't write to Miguel de Icaza directly because apparently he wants just to chase the people that say in the past that they wanted to do a lot of stuff with Xamarin SDK when it was in a closed source and that is going to chase them probably with something, weapons, Mexican, pinata, pinata, that's what he would do. So make Xamarin Forms, so build a native UI for iOS and written Windows from a single shared code base. So what he does is a following. So this is what I just went through a little bit earlier, shared C-sharp logic just like 60, 70% view, not the view map, your view model and your model or your view and controller, sorry, model and controller and then you just have your UI layer for each platform so write three times the same thing with just different API. Thanks to Xamarin Form and good old Jason Smith which is the one responsible for all this awesomeness, well that's, well I can't move there, okay I'm going to point from here, yes now we end up having really one layer of user interface and just a little bit of something that is going to be specific code that will fall into the category of custom renderers or just native control includes mostly, mostly that. So the way it's done is actually with XAML, XAML you, if you are into the Microsoft kind of ecosystem, you might know it because this is how you used to do your silver right and the WPF application, so that's just like a Microsoft micro-language for user interface that is pretty nice, decent, clean and so forth. What those dudes did, Xamarin is just encapsulate all the three different platform controls into just like one tag basically, one markup element. So when you say text box that is behind the scene going to actually render each of those platform kind of elements and just present it to the controller and yes, but ultimately your UI will have only one element. So the things which is kind of cool is like unless stuff like PhoneGap or other time accelerator, which was a JavaScript page, but that was not a problem, but extending them and just getting to a level of details that is literally as good as a native API was kind of horrid. Here's a good thing. It's like very, very, very simple just to extend through custom renderers or native includes. So your level of detail Xamarin form which somehow at the beginning had a reputation just to build some line of business application, something kind of simple UI. I'm developing some Xamarin form application that are fairly difficult in terms of UI and everything is pixel perfect with animation and some flashy stuff that just rocks and the performance is just pretty, pretty good. So Xamarin form is good for any project. It's readable, it's maintainable, you don't have this horrible, it's the death of the code behind basically. Code behind should have died just like 10 years ago. Now that is just like helping it a little. No to code behind, no to code behind. There we go. So what's included a shared UI code? Yes, no. Yes, there we go. So this is just the stuff you are getting for free with Xamarin form. So 40 plus pages, layouts and controls built from code behind or XAML. Forget the code behind stuff, it's fine. We should not. But let's say just XAML. And it's kind of also all those things are extendable. This is literally what I just went through a little bit earlier. They're just getting all the elements of the different platform and just like kind of hiding it into like one tag. So for one button, it's going to be one button tag that's going to render a UI button on iOS, a whatever button on Android, and a button button on Windows, let's say. Two ways that are binding, if you're into MVVM, be it by developing with Xamarin, you might encounter it in frameworks like AngularJS. Even, yeah, a lot of frameworks have that. That's the ability to get two elements, be it code or be it UI elements and code, and make them talk to each other simply by registering each other in such a way. So for instance, you will end up having on the MVVM application a view model that will have, let's say, a username field. And then you'll have on your UI, a username text box. When your text box will be just modified by you entering your username, that will automatically bind to the field which will be on the view model. And you can also be the other way around. Whenever you modify your view model, that will automatically modify the user interface. So that is kind of cool navigation that's a wrap up around the navigation of those three dudes. An animation API which is kind of not 100% there, you just have the basics. But again, that is something that is encapsulatable by your own doings again. As on top of that, the library SDK is open source now. A lot of people are going just to add more to it. That's going to be beautiful. And a dependency service. So for the one using dependency injection, which everyone who does a bit of programming should do, break, resume. Everybody who does a bit of programming should do. Dependency injection service, I'm not going to say what it does, but anyways, in Xamarin Forms, it is implemented on the shape of an attribute in the net that you will just add to your class and then have access to the service that you are. That's just technically your service registration. It is good and convenient if you want to do some simple stuff. There is some drawback and shortfalls that I can see on my day-to-day development. For instance, let's say that you have some bits of your shared C-share logic that doesn't only run on your phone, but let's say on your website and on API somewhere else, because you want to share more code than there is that. Let's say that this code is not only shared by your mobile apps, but also by your server, by whatever you want. If you use registration from Xamarin as an attributed stuff that only Xamarin Form will understand, that is just going to create some problem somewhere else. Also, you cannot really register generic dependencies and want too many, let's say, like one interface multiple implementation. That's also not possible. And the messaging center, obviously, which is just in order to be able, if you know the messenger pattern, that's the same thing. That will allow you just to observe, subscribe, and just kind of shortcut your application dependencies in order just to do something funky. Of your liking, for example of layout pages, I'm not going to go through that. But yes, that's pretty much going to satisfy most of the customers. You can probably do your own if you feel like it. Controls are just the usual one, ranging from an entry, which is just like a text box to a view cell, which is just like a list cell, a slider, such bar, progress bar. That means that this image cell is going to be, with one tag image cell, is going just to be literally rendering one iOS, one Android, one Windows image. Yeah, the usual producers of controls for any website framework just started to jump into it. So you probably recognize Taylor, he can come from the one. 36 as well, well, just two. Two, that means that if you are, it's mostly really short and like a hard piece of UI, I suppose. So, well, that's just like a simple example. Again, it's a bit blurry from here, suppose it's blurry from your side. But what it does is just literally what I was saying. Here, we've got a, this is a tabbed view. We cannot see the tabs, but let's imagine there is a tab here and here, which says what profile and settings, just by simply creating a tab page as, on your example, as demonstrated there and created some content pages under the children of the tab page, let's say profile and settings, and then stuff some kind of an entry in the text box, entries in the text box, and a button that is going just to literally render that for each platform, iOS, Android, and Windows. And that is a famed bending that we were talking about here. So that is going to bind to your user name on your view model, past one of the view model. And that is going to bind to a command. So if you are into MVVM again, you left the event-driven programming nonsense and just got to your senses, actually that's a funny sentence, to actually bind a command to your UI, which is testable, it's got a lot of goodies. And there we go. So that was the Xamarin Form 1.0, I suppose. Cheers to the camera. Let's continue. Now let's go to Xamarin Form 2.0. XAML compilation, which I'll get in detail later. Android AppCompat, which is cool, but that's about it. Yeah, ListView, Catching Strategy, and PNGester Recognizer, and yeah, UWP Preview. So compilation. So XAML markup was just a kind of, performance was all right, but that was, that could have been improved because obviously you just have a parser that is going to be looking at runtime at this series of tags and just like a swap it with the native control of the platform. So they did something cool, which is just enabling the compilation, which is going to do that at compile time. So at compile time, let's just get that all packaged nicely, no interpreter or just parser, we'll just look at that, which just definitely improved the performance as I say here. So for what doesn't matter, that's the option it is. And at present it's just like literally a tag your stuff on your XAML page that is going to tell the compiler to compile. AppCompat, that's something on Android. It's mostly about having some kind of views to share your stuff with Twitter, Facebook, email, and also got something to do with ActionView. If you're into Android development, you know what it is, now it's including some of the forms. If you don't know what it is, then maybe look into it or start doing some Android development. So it matters, so that's a list of view caching strategies, so that's kind of important. If you are looking at performance, you've got a list, a list will have some images, some tags, some whatever, a data source. So you've got two ways to handle the way this list is populated. Either you reuse a cell, so a cell while scrolling is going to get out of the view, and therefore that is going just to be freed and will be just like available to be reallocated with some content later on, which is kind of freeing some memory, but that need that you will need to, if you are going to re-run the, let's say, screw up the same cell, well, we'll have to fetch it again. So retain is just not that. Retain is just like, oh, this is going to be this one forever until we just want to explicitly overwrite it. Recycle is just like, OK, let's reuse as we go. It does improve the performance list. You can be kind of tough. Window support, yes. So yes, we're getting in UWP, which is kind of cool. Silverlight 8 is going to be deprecated. That's good because it's a bit old. So goodbye, Silverlight. So now we've got examine form 2.1. So we've got control templates on it, data template selector, FX, well, that is like a bit technical. So when you are creating some custom renderers, which is literally what already exists, so when you see a text box examine form in the background, that's going to be a text box, native text box on iOS, on Android, and on Windows. And you want to expose some properties to this tag, to this markup element to, let's say, like a text box. And the way you do it is just like properties of your XML, really. You just create those bindable properties. And that use generics. Generics are cool in most cases. Here on the UI level, that was just causing the, well, there is a process to not be that fast, let's say. So instead of just using a generate declarator, you just do that statically with type of and so on. So let's get into the control template. So a control template is literally the ability to aggregate multiple examine form elements in a template. So let's say I want to have in this case a header, a footer. And here, that is just going to be where my content is going to be. So that is encapsulated in this kind of markup. We just say somewhere, here a control template. It's got a name, which is la, la, la. And it's got like a label on the top, label at the bottom. And here's got the content presenter, which is this bit. So that allows you here to simply on the content view, which is just like a page, basically, to use this control template here with a template that we just created. And that will automatically, oh, yes. The pointer, and I like doing that, it's still fine. It's nice, it's nice, it's good. Some extent. All right, all right. Thank you. Wow, I can walk. Excellent. Yes, so that control, that's your content that is here. So again, this guy will have a template called TLTemplate for whatever reason. And inside of your content, you can add, because this guy added a label and a button that you can see here, here, here, here. So that allows you just to, again, reuse a set of control. That's a nice shortcut. Data template is something similar, but for list. To some extent, so just have a data source that's going to be having a repeatable objects that you will bind to a list, let's say. That allows you just to theme it, really. Yes, so effects is something that I think my friend Udara went through last time. An effect is a bit like a custom renderer, but it's just like lighter. So you can only just change a couple of properties. I think we've got two override on it. So you cannot, yeah, no method or events, no replacing of the control, that's correct. So you just have an unattached and detached, which is just pretty much set up the stuff and then clean up. You can attach that to any kind of control, and that will just be able to modify as a color or something. Something like that, just like some UI properties. So nothing too funky. Xamarin 2.2, so nothing much was happening there. Maintenance release. Yeah, margins are cool. That allows you just to have padding and margin to your XAML. I think that's the interesting bit. Yeah, Windows map, 2D score view support. Yes, that was something that was not there before. I think we've got the details later on in the carousel view. So the carousel view, as it says, just allows you to have a series of images or content that you can just swap left and right in order just to change. The content 2D score view support, that is a simple scroll view where the content didn't fit into one view. So some is hidden, let's say, at the bottom of your app. Scoring up, we'll show it margin against just self-explanatory. So now the pretty cool stuff that are coming up our way, I believe, that are just direct from Evolve. I think that most of them are in alpha at present. So there is a feature that a lot of XAML developers wanted for a long time, which is a previewer. So beforehand, XAML didn't really have a way just to render before running the application, really. So you are trying to do your best and say, but you didn't know what an application was going to look like until you run the stuff. That is no longer the case as I can demonstrate here. So we've got to, yes, we can see that. Excellent. So let me just, it is just a project loaded on Xamarin Studio. Going to set that at project. I'm just going to build this project quickly. Just simply to demonstrate that we can actually see XAML rendered prior. Okay, one build error, I suppose. No, really? I don't believe you. Let's, that's my preview. I'm not on the right place. Here we go. Preview iOS. Here we go. So that is a bit of XAML, sorry. Got a bit of XAML here. Let's just remove that as well. Right, so let's do a quick example here. Loading speakers. Look, let's search for speakers. Okay, here we go. Text speakers, ah, come back. Yes, here we go. So we can see, we've got a label here with some text here, loading speakers. So if I just change that to VED, here we go. Or XAML is updating in real time without needing any compilation. Can change the color to something more funky, let's say. So the color, background color of this label is purple. Let's put it to white. Bim, done. So, and you can just add some text box. So I want to add on the label. Let's just do some nice copy and paste because I'm slightly lazy. Up, Bim. Two, excellent. So it works also for underage, but that allows you to see really in real time what the UI that you are going to do looks like. And it supports also some funky features such as the binding, the data binding is actually live as well. So let's get, let's say that you've got an API that is just going to service some JSON in the cloud. Just as the data binding of whatever is your data source to look at that source. And you'll be able just to see that in real time, which is kind of cool. I like it very much. So that's the Example Previewer. URL navigation, so that's deep navigation. What that means is the ability to click on a URL on your phone and that is going to open the relevant app that will understand it. So on this example, for instance, there is an app called Evolve, which was just as a program app, a companion app for Example in Evolves that was in April 2016. This URL will have just a little bit of malarkey embedded on it. By clicking on it, it will say, okay, need to open the application that is the Example in Evolve. And that will go straight to the page within the application. So that's kind of cool. Ah, yes, we've got something else called data pages that will probably just like be very, very liked by enterprises that allows you to literally make an app without coding. So ultimately you'll have a data source, some JSON, most of the time I suppose, and you just feed that to your application and this application will generate the master detail page. We're talking about really when there is a master to detail kind of page setup like this, for instance, I'm just going to demonstrate that quickly as well. Well, we got that probably around here. Right, actually, I could, what are we doing with time? Ah, have a little bit of time. I could attempt to do that like from scratch to see how long it takes, maybe five minutes. If it takes too long, just tell me that you're really bored and we can take it from there. Right, so I'm going to have a little bit of this first. Cheers, camera. Right, okay, that actually is a project that is already done, but let's ignore it. Let's be crazy, because demos that you do in real time in conferences like that never work anyway, so I look a bit silly, but that's fine. I don't mind looking silly. I can look silly even without coding like this. Wah! Silly, silly, right? Yeah. Exactly, can do it. This thing, this thing, strong, just been gritty. Right, all right, so let's do a new project. And that's going to be a blank XAML app, yes, that is correct. Let's call it whatever, very good. Okay, that is just Xamarin.Form app. Simple and efficient. Let me just get something there. Up, nice shit shit. Might have like two seconds to talk about the weather if you want, or the Brexit. Any British nationals in the audience? Yay! Good. You want to know what I think about it? All right, I'm just going to make a diversion by eating this thing. Yes, doesn't matter. Excellent. So, yep, you can see probably. So Xamarin.Form project, as we said a bit earlier, well, we didn't maybe. We'll have like a shared code project, which is a PCL, portable class libraries, which is a kind of subset of the done from work. Android app, iOS app, I'm going to switch to iOS because it's more fun somehow. It's just like, well, the reason it's not because it's more fun, the reason is because I'm using a lot of alpha stuff. iOS tend to be slightly more stable than the Android stuff because Android's got more dependencies and the new get hell can happen very easily. So that will probably guarantee that the thing will not work. So for the sake of sake, let's do it this way. Right, so we've got absolutely nothing here at present. Excellent. First thing we need to do is just to get a couple of new get packages, which are what we need in order to build the data pages. That's just some clever logic that somebody just decided to design. So as with the references, you get packages. Yes, now we don't examine in forms, we've got that already. What we need is xamarin.forms.pages, pages, yes. Pages, come on, you can do it. Xamarin, yeah. Good catch. You got it? If I add some goodies, I will give you, you just want a Jasmine green tea from Microsoft fridge there. A limited supply, very nice. So I'm going to get that. As you can see, it's only in prior lease. If I just untick this box, won't get it. All right, awkward silence. It is, is this edible? Probably not. Right, done. Sealing, yeah, okay, ah, yes. Okay, I just forgot something. I'm not connected to the internet. Yes, no, I am connected to the internet. Let's, well, that seems to be finding it. I'll try that. Now the second has been, ah, yeah, good, yes. Thank you. So now we need something else called theme, theme, theme is good. Yes, a base. So a theme is just, yeah, really, what it is. It just allows you with some kind of CSS. Oh, there we go. To theme your application, or at least a view. Yeah, okay. Then I am going to do, unfortunately, the same thing there, that's super annoying, but that's the way it is. So if you've got to check your email, or, I don't know, do something else, go for it, it's going to take an extra two minutes and a half, examine, yeah, but when you do something from scratch, you've got to do it from scratch, otherwise, you know, that's cheating a bit. Why, no, hello. No package is found, I cannot believe it. A page is, ah-ha. All right, we're getting that as well. I need to do that on yet another project, then after it should be quite fast. I could have, yeah, no, not good. And actually it's going to take like, no, it's 750 already, we've got two more speakers. I'm going just to not do that. Let's go back to the other one. Let's pretend it just all works fine. I've got all my packages done already. So sequentially I'm going to show you what you need to modify before running. First of all, you have a look at your app, which is just like the hook on running the Xamarin.Forms application. What you do, you just add like a theme, which is a reference to a theme, which is what we are going to use in order to be able to theme to the data page. And then we just add a resource dictionary, which is something cool that you'll have to look into it. Anyway, just to make sure that it's available to our application to use, so that it's just going to be those dark themes again. Then what we need to do, we need to set the main page as a page that we're going to create. So I don't have the time just to go deep in details unfortunately this time, but just to show you that little code is involved more than anything else. So trust me, I know what I'm doing. Then you, here we go, you just need to create a page, which is going to be the one that we're going to display. What it does, it uses a list data page data source, which is literally the meat of the data pages. Again, it's going to get some piece of JSON and magically going to display that into a master, which is a list to detail page without you doing any coding. So here, what we are saying, just go to this data source and just let's use that for all data. So if I go to this data source, I think I've got it somewhere there, I believe so. Yep, beam, here we go. That is just like some event kind of JSON, just like some image, some room, some biographer, some stuff like that, that's it. Here it's kind of important. The style class is literally what is going to produce a mapping between your JSON and your style. So it's something that we can modify. I will not go through that, but it's just something very easy. Then, yes, you just need to subclass the list data page, which is just a type, again, of your example view. And what, and that's about it, I believe. That's all you need to do, yes. On your iOS code, do absolutely nothing at all, I believe. Yep, that's it, cool. Okay, we're going to run that. So literally, that is literally the whole code. No more code is needed. And now this is why I'm going to run it and it's not going to work because that's the way demos work. What, no, we don't need licenses anymore, right? Oh yes, I just put it somewhere else. Yeah, maybe. Is that running? What did it do? View has been canceled, absolutely not. I refuse. There you go, now it's building. So basically the longest bit would have been just to simply get those new packages. Then once you've got them, literally, we're talking about like 15 lines of XAML, maybe. And suddenly, all right, I need to make that a bit smaller, maybe. Windows scale, 50%, yes. That's going to work, that's going to work, that's going to work. Come on, just do it. And it doesn't work. Ah yes, it works. There we go. So that is just this JSON that has been got, again with just these couple of lines of code saying simply get this JSON and just do something funky with it, apply a theme that is, the theme are just, previous are just like a new get packages. So the ID is just more and more people are going to make more and more themes that will allow you to have just some application that looks cool without having to do anything. So but again, it's a master, it's a list and detail page. So if I click on this guy, it's going to show the details. Beautiful, without having to do anything. Isn't it cool? And it doesn't look to crummy either. So I can see just like for mocking up an application super quickly, literally even a non-coder can do it. Non-coder means there. Yes, you can do it. You see, awesome. This one is for you. Right. So that was as a demonstration of that thing. Let's go back to where we were. Have I got, that's it. Themes, la, la, la. Yes, okay. F5. Oh, whatever. I think we're just like getting to the end anyways. Da, da, da, da, da, da. 2.1. FX went through that. FX2, da, da, da, da. Your own navigation data pages. That's what I just demonstrated. Themes, they have been demonstrated indirectly with the pages, which just allows you just to get again. It's just like a CSS theme, but nice implemented so far. You could just do some kind of theming by adding some resources to your main XAML file, saying that, okay, let's call, I don't know, blue detail is going to be this type of blue and just like CSS, you can just use this class back into your code. But that is just like a bit more thorough. Native embedding, I mentioned it a bit earlier. So that allows you to embed literally some native code in XAML informs by using some preprocessor directives. Yep. Yeah, that's about it. Ah, no, just like quickly, one second, quickly to show you something very, very cool that Xamarin just did. Let me find that somewhere. It should be here. Workbook. Yes, so I don't know if you are familiar with like the C-sharp kind of, how do you call that, that command line that allows you just to literally evaluate the evaluator, evaluate some C-sharp as you type without having to run it. So here, that is something kind of cool. I am just going to create a workbook on iOS. For the same reason that the Android one may be a hit and miss on this level of alpha. And what it will allow me to do, it will allow me just to do stuff on the phone just like as I go without having to compile anything. It's just like literally like a scrapbook, say, okay, just show me an alert. Add a label, do this, do that. Here we go. So that's a guy. So we got a, okay, let me do that a bit smaller. Simulator, hardware. Was it already? Window, here we go. Scale. Scale, 50% my friend. Here we go. So we can do something along the line as come back here. There. Okay, let's do something like this. So I do var alert, alert equal new UI alert view. That's what an alert is in iOS. And it just takes a couple of parameters such as hello, hello, hello, hello, maybe a bit of world. No, actually, hello foo for change as well is too easy. That is just nothing. Then just have a, okay. And then another null path, done. So that is a veriting and just say, oh, there we go. We just have this tag now in this variable. Now I'm just going to ask for this one to show the alert.show. Because we're using Roslin, we have all the intelligence goodie built in. And that is cool because, oh yeah, nice. That just worked out of the box, also with Android. Just another one quickly, something that is just var map equal new, what that called already, yeah, map, map kit, map kit dot map view, map view, empty map view. Yes, up, up, up. And we want your eye screen, dot main screen dot bounds. Yes, up. And then we go to key window, which is just like your window hook, root view controller, root, no, not to root, root view controller, dot view, dot sub view. So you're literally navigating your hierarchy, dot add, add, add, can I have add? Hello, hello, the views dot add, one dot add, here we go, no, add sub views. And we use, literally I just created a map and I'm going to add it to it. Map, map, here we go. It's not up here with that, maybe like this. Sub view, yeah, that's correct. Okay, oh yes, yes, it's there already. Here we go, hello Singapore. All right, that's all for me today, I believe. Because that's why I'm going to take all the time and I don't want to do that. If you want some questions, maybe let's do that after the other speakers, if I've got some time. Thank you very much for that.