 Can everyone hear me okay? Am I loud enough this morning? Do you want me to use the other mic or everyone can hear? Excellent. All right using WordPress API for some people. I hope this doesn't go over your head I'm trying to make sure that I'm speaking to everybody in a way that you can understand the real benefit of using the WordPress API to sync an app Now a little bit about who I am. I have a website Divi framework. I've been making some plugins and stuff It's kind of in beta. It's not really ready yet, but take a look at it. Follow us on Twitter I have MRK websites or MRK development any of those around You know Twitter Instagram LinkedIn all that kind of stuff. That's where you'll find me In this shot. I was actually shooting a screencast tutorial in the rainforest Because why not? so the great thing is is with the internet and stuff you can work anywhere and WordPress gives us so much freedom Gives us the freedom to do a lot of different things. So what do I do? Will I do training? Me and my wife have actually been traveling around Australia in a Winnebago Being paid to train a large Australian corporations offices It's pretty cool And we still run our business by using WordPress the internet and our wonderful MacBooks So by doing all of that we have really found that we love doing training Also make websites, of course WordPress all that kind of stuff love my Ionic stuff angular, you know all those different things. I really love geeking out on all that kind of thing And particularly I've been enjoying VR stuff lately VR video VR photos, you know and incorporating that into the web It's all pretty interesting stuff So why do we use WordPress? Well because it's free But it's not just because it's free. It's because it gives us freedom to build so many different things You think about it. Where would we all be without WordPress? You know, you would have had to have paid for some proprietary code You would have had to spend a lot of money You might have had to develop something on your own for a long time But the wonderful thing that we have with WordPress is it's free and we all contribute to this stuff all the time And it's fantastic There's also lots of users and lots of developers Which means that most of time if you can't fix something somebody else has already fixed it and I love that Simpsons episode where Homer is at the bar. He's talking at Ma when he says can't someone else do it? And like that's your term. That's what you should say. That's your pitch to run for Office and he everyone starts marching around and can't someone else do it? And the great thing with WordPress is most of the time when you guys go to do something Someone else has already done it and that's awesome. I love that because ultimately we're a little bit lazy sometimes So where are we going? then Kate well, we're just continuing to travel around and enjoy ourselves and Continue to make great things But as today, where are we going? Well, we're going to be talking about the rest API particularly in WordPress So what is the rest API? It's a way to get data out of your WordPress site in an easy to consume way for a lot of apps So normally all your data is in a web page, isn't it? And it's nice and well displayed for us to look at it But with the rest API Computers don't really want to pull in your nicely styled HTML and try and pass it and turn it into something for an app They want to be able to get the data and nice little controlling structures It's so that they understand what it is so they can do something with it Okay, so you can get like a list of users you can get a list of blog posts You can get all your different posts actually in a very simple list in an easy way for your application to deal with it That's basically what the rest API allows us to do So when do you use and should you consider making a native app? See everyone got really excited in the early days about apps didn't they and every business just was like I've got to be in the store and get an app and there was apps for a dentist There was apps for the hairdresser There was apps for all sorts of businesses that really weren't appropriate for apps So when should you consider building an app? Well, first of all How often does anybody here install a new app on your phone and actually use it regularly adopt the usage? Doesn't happen very often. Does it? We'll adopt websites a lot though So if you're trying to reach a new audience an app is probably not the way to do it because You have to get them to install the app So you still need a great website you still need web content and unless you're gonna do something I think that's actually stepping up above the content and that functionality of a website. Why would you need to make an app? You don't So the way I like to think about it is there's really two use cases of when you need to make an app The first is when you have a community of people and you want to get something in the way of that regular relationship Regular relationship is something like a school and that's the one I'm showing you today You see those parents have a daily relationship. Don't they with the school? they're dropping their kids off all the time and quite often there's communication issues because we all know that kids quite often don't Deliver the notes home to mum and dad right and There's you can't trust a five-year-old to be your communication channel As a private school when that private school might be charging thousands of dollars a term To be able to you know teach that student So it's really important in this case to have the app to help assist with that communication Okay Really good use case of an app another good use case is when you can't actually deliver what you want to deliver Properly on the web so another one. I'm gonna talk a little bit about today is a VR app that we're starting to develop Now we can't deliver the 4k VR video over the web API because it keeps dropping frames and a lot of things Just can't handle it But if you happen to know what an Oculus is or a HTC Vive VR headset They're excellent at dealing with this high-level video. So we're using the WordPress API to deliver that to a desktop app in this case So we can deliver the very high quality video to those devices that can make the most of it And these videos are kind of around 250 to 500 megabyte 250 to 500 megabytes here a minute All right, so you have a four minute video you got two gigs It's a big video Even my MacBook Pro can't play it. So that's a that's a Good advantage there. So the advantage of the local installation is I can use local stuff I can use those local features. Okay Really good use case of the rest API with apps There's also some bad things as well. It's not all rainbows and twizzlers it's There's issues isn't there What are the issues? Well, first of all, I've got to manage an app. I've got to deal with the app store I've got to deal with app updates deal with platform updates got to deal with debugging and testing and when that comes to Android That's pretty hard. There's a lot of different Android devices out there. It's getting easier But there's some disadvantages in that case because managing apps is not easy Okay, it's another bunch of skills that you have to add in there There's another bunch of expenses that you add into your build So, you know, you have to really consider Strongly if you want to go down this path Okay, you've got to really take a strong consideration before you pick an app But if you've got a real reason to get in that relationship if you've got a real reason to deliver that content Then I think it's well worth considering the rest API for delivering that information So our first case study today is the parks Christian school now the parks Christian school we've been making their website for years and They wanted to get an app for one very simple reason where I am in parks It doesn't take long out of town before you get very patchy internet And what we're finding is our emailing out this giant printable PDF to everybody. That's their newsletter And that didn't really work real good because it took ages for the parents to download it And that means they weren't reading it because they just simply couldn't download it. It just took too long Because I've got patchy internet So we started on HTML emails But then a lot of these parents weren't actually reading their email very often They just go into it once a week because they have to load up the internet and it was painful for them to do so So we created up and the app sits on the phones and synchronizes down It gives us the ability to deliver this content to Those parents and synchronize it. Okay This means that we can send the instant notifications. We can do calendar integration and things like that and that's all inside this app So when we add an event to the CMS in WordPress, it's instantly added to the app Inside the app I can then add it to my calendar with a native button So that if it's important for myself Because my students involved in that particular event. It's just a simple click of the button and it's added in That's pretty cool The great thing is that we also caches So every single time we pull that data down and there and McDonald's having a coffee. They're on the free Wi-Fi and they get it It stays in the app Okay, that means when they're out on the farm, they're in an area where the internet's slow It doesn't matter anymore. They've got the cache data held inside the app, but I'll show you that code shortly To build it we used ionic version 2 at the time it was beta, but I liked it so we used it anyway and We just fixed the bugs as we found them and submitted patch things and there's nothing wrong with using beta software if you test it for Use case right and it's open source. So if you guys find bugs in beta code Well, it's a good idea to tell someone about it and submit a patch So that's what we did It's got fantastic scaffolding tools and it's very simple ionic version 2 what I really liked about it It's sometimes when you build things you end up with what we call spaghetti code You'll stuff all over the place and very quickly it gets a little bit out of hand and you're a bit like What happens if I pull this and before you know what a meatball falls off that way? You know, oh, I better not pull that I'll pull this thing and nothing happens at all, you know And you realize there was no dependency on that thing at all You don't even know why it's there But you end up with some real messy code But I want it version 2 gives us some real neat setups And it has these scaffolding tools as well so that you can really just say hey Create me a new page with a controller and that kind of stuff almost like how we make post types I guess in WordPress with the CLI tools You know you make a new post type and what happens in the WordPress backend you get a new menu, don't you? You get the read and update areas you get categories and things like that So this is very similar as what we're doing here in Ionic and we mapped them up So we pull the data in can we read that? It's a bit too small or All right, but basically this code kind of does everything and We just we construct a URL here to get to the data So let's take a look at this a little bit more carefully. Which buttons the start one is it? There we go, right? So we've got the host so this is just coded in our app because we're using proxies when we developed it But that's just the parks Christian school WP Jason is what we the data that we want and we want all the posts of a type And a page number So this one here will give us if I put Post in there post type post or post type page or post type event. You get a different type of item, don't you? So if I want all my events just shove event in this post type and you construct in class So this page is just page one. Give me the first page of my events and I'll get my data out And basically this is our local storage So here what I've done is I'm getting a couple of different bits and pieces of code if you guys want me to do more Code as well can show you the actual project Do you want me to do that or who wants to look? All right, there's a few okay. We'll open that up. All right So we've got basically a mapping here some HTTP. We grab the local storage and bang. I just load it We get the post type get all the data and we load it It Looks pretty simple to me. I Hope you guys kind of find it simple Okay, so this is what I was talking about see how we've got our pages here on the left hand side So just here. There's all my pages Inside the app So I've got events FAQ news, etc So if we open up the news and look at the HTML here We can see this is using something that kind of looks a little bit like short codes doesn't it can I zoom that I don't normally have to Zoom my code so Yeah, that's right. So here what we're doing is we're taking Our content I've got a refresher button here to refresh it I've got a card and for all the items that I get out of that request that I showed you earlier I'll just loop through them and this just maps up. So it's very similar to looping over posts, isn't it? And you can see that all this is really nice because these are all components They're a bit like short codes when you have a short code. Everyone here know what a short code is So should the short codes? Yep. So you put parameters in a short code Don't you when you get a much more complex thing than the code you had to write it's shorthand And this is very similar But these are called directives in Angular and this is what we did to create these items And then we have an infinite scroll component at the bottom here and that does all our scrolling for us So that's pretty much it Now this got created Almost for us. We've got some scssc That's complicated Didn't have to do anything didn't have to style anything. It just kind of does it and This is what we call type script Type script is a way of writing our JavaScript that gives us types Okay, so normally one of the problems with JavaScript is if I send In an object and it's a number and I do the wrong thing with it All of a sudden it turns into a string and I do one plus one and it equals eleven instead of two All right, because you didn't have a type You didn't say this is always a number or this is always a string Now in some cases you do want one plus one to equal eleven in other cases You want it to equal to and in that case what you do is you define how that operates by giving it a type Okay, so here what we've done We've imported our Angular core component I've got my controller the provider is what actually provides the data I've got my date display pipe and that's a tool that we're using to format the dates Okay, so pipe is kind of like hey I want to put one thing in one end and get it out the other format and so you throw it through a pipe They call it an Ionic I've got my data in the page and of course I got my Google analytics item to track the analytics and All I really do then is just grab my component get the template URL tell it the provider tell it the pipe Man it kind of just all works like magic really It's really cool It actually didn't take as long to build this app. It was about three days From start to finish to build the whole app. I mean that's cool and it's very easy to find something So it's like oh, I've got a problem with my news provider. We'll just open it. There it is right there That's it That does all the magic of dealing with the rest API for me It's just that I mean that's just so easy It's amazing. So really all we do is just pull in a couple of components Grab the path to the rest API and all the data. It's given to me pretty simple For a lot of guys you're probably looking at this code going. Yeah, that looks simple, but I don't know how to write that well I'll put a post up on my website and give you guys the code if you want just take a look at it I mean, it's it's not that much rocket science. Ionic is very simple to use and Yeah, we've we found it to be great for us It's saved us so much time So were there any real challenges with this app? There were of course the big one was that we're in a beta setup at the time Ionic version 2 is now stable. So all those problems that we had are gone It was really just finding out how to do things because it was very early on in the development of Ionic version 2 It just meant that you know, it took us a while to find some documentation and out of the three days of development We probably spent one day researching Just trying to find stuff that other people had written and I'm terrible at writing blog posts and things like that and putting stuff out there I need to do more of it to share this kind of stuff Because once we share it all of a sudden it becomes so much more valuable to everybody This app had a certain amount of value But if I share it to you guys it actually becomes more valuable Because people can use that information can't they it goes beyond just these people at the past Christian school using it So where do I want to go with it in the future? At the moment, we don't have an automatic instant notification I'd love it if when you post something to the news on WordPress that you could put a flag on it and say Send an instant notification about this. It's important We don't currently have that so we have to go into another app to send the instant notifications It's a bit of a pain and I'd like to fix that The other thing I want to do is add some classifications from the API to notifications So for example, you could say all right, I've got a kid in Kindergarten, and I've got a kid in year six send me the notifications for those class use All right, so you just say I've got an enrollment year of this and an enrollment year of that there we go That's the student right there That needs to get those notifications so that you can send something to the parents say remind are there's a special assembly on for The year six kids this morning at 10 30 and they're all gonna sing something and do something cute And then the parents don't miss it right The engagement stats need to be improved a little bit We're just doing some simple stuff like you saw that simple little controller I did with Google Analytics just checking the views But I'd like to actually know what people are pressing and just a few more event hooks You know like people actually adding stuff to their calendar or not We don't really know Because we're not tracking it so I'd like to add those things in the other thing I'd like to do is make a login for the teachers to be able to send instant notifications to those groups So mr. Westcott comes along logs in and can send a notification to all the primary school kids parents Just bang, you know, that'd be great But the way it stands right now you can't do that and out of all of that it'll ultimately drive more engagement with the app So the next one I want to talk about is farm VR. You can take a look at this website We've integrated some nice VR stuff in there. It's still a work in progress We expect this to be launched in about four weeks time Tim I took that photo for him. That's near the dish in parks If anyone knows where parks is we've got a big satellite dish there And this is just on the road in a sorghum paddock there took this photo about four five six weeks ago something like that So why do we need an app for high res VR content? So we're going to be making a desktop app in this case and pulling the data in we're going to be using ionic again Everything I showed you before we're just going to take that stuff Throw it in there and get the data out. But what we do with that data is going to be different So we've created a custom post type in the website and this post type allows us to have different resolution videos All right, so I can set up four videos for one video that I'm actually going to deliver one will be the 4k Full higher res VR video that when you put it on the HTC Vive honestly like it's like you're actually there It's amazing We've shot some stuff and you put the headset on it. Just it's just phenomenal like you literally feel like you're there I did one where I walked out on the cliffs off Phillip Island Up onto the with the the sea all the waves were coming in and you know birds flying overhead and oh Gee, it's amazing. It was just absolutely amazing stuff. It blew my mind Got me really excited about the VR stuff So we're gonna pull those high res videos into the desktop only if you're on the website You'll be able to download it But there's no point is even trying to play it because even on my MacBook Pro here with a 2 gigabyte graphics card It drops frames. I can't handle it It's too much if I actually watch these videos on my Samsung gear and the Oculus headset I can watch it for about 10 minutes. Then I've got to put it in the fridge to cool it down Literally I actually put the phone in the fridge Right, it's not an exaggeration. That's what I do because you have to cool it down So you got to put it in the fridge for about 10 minutes watch for 10 minutes Put it back in the fridge for 10 minutes to manage the temperature of the thing Right, it's full-on video. It's great fun though Right, so we're gonna do these vibe apps and then possible mobile apps in the future for the Samsung VR store So we're gonna use the electron desktop toolkit for this Is anybody here use the atom editor? Yep, that's electron anyone here use slack Yep, that's electron Right, so electron is a way that we can use HTML to make desktop apps pretty awesome stuff, right? I Think it's amazing So we're gonna be using that and use the same ionic stuff the same everything suck it all in bang We've got a desktop app for Vive all those videos will download in a queue suck out of the Amazon cloud and download Onto your device and then you can experience these great videos that otherwise we can't deliver on the web right now So we can't actually deliver this content on the web. It's not possible You just can't handle it the thing just just just you know unless you want to cook eggs on your laptop There's no real point in trying to do this But it works great if you've got a vibe and a liquid cool desktop with all that stuff. It really does So I'm gonna pull the data in then we store it locally But in this case, we're not really talking about storing HTML data or JSON data was talking about storing the actual large downloaded files So it's really just going to be a download manager, right? It's not like you're going to go into this app and actually experience all the farming stuff It'll just be really download lists, you know So when will it be released we're actually aiming for around the first week of April and we expect this to come out so keep an eye on farm VR dot com dot au you can take a look at it now and You know, that'll be great. Now the thing is right now. I haven't actually told you anything that's real synchronization. Have I? Because we're pulling data in We're syncing it locally from the cloud, but we're not actually ever pushing anything up. Are we? See when you want to do that a couple other issues come out and I thought I'd just share those how am I doing for time guys? Well 15 cool. All right, this will take about five minutes and then we can do some questions so first of all right now With WordPress the authentication for a native app Is not ideal We rely a lot on cookies for authentication right now with WordPress And as a result if you're on page and you want to do editing and to do apps and things like that with like angular or view JS or Something you can use these JavaScript libraries to because you can log in Check your cookie that you logged in and then pull the permissions out of WordPress to be able to do things with the API But when you're on a mobile app, where are you going to put the cookie? You don't have them do you don't have like a same session state? So normally what we do is we have what we call an authentication protocol It's an agreement a way of operating your authentication Now at the moment there are some plugins for WordPress that can do this But they're not really core tools that you can use reliably Okay, so that the problem with this is you might end up having an authentication plug-in You might get your app going and WordPress might update Which you want to update because there is a major security flaw and your app will break and Then you've got to submit something to the App Store and Apple is notorious for being really fast Getting you in the app store. No as a matter of fact it takes a while sometimes you're talking two weeks So your app could be not working and not allowing people to log in and use it And if you've got in the way and manage to successfully get in one of those Relationships and all of a sudden your app stops working for two weeks Who here would keep an app on their phone and keep trying for two weeks? To try and reuse it again. You wouldn't would you you just go? It's broken the rubbish delete and you're gonna get flooded with comments in the Android or the app store about it being a crappy application Your application is horrible. I want to send you the bill to get the hells of my life back Things like that because hey users sometimes we get like that. We're just impatient and well we feel horrified This thing doesn't work But now that happens the good news is is rest and and the API is going to be getting some Oh off 2.0 So all of 2.0 is the easiest way to deal with your authentication Okay, we that's what we want and I found out we're going to get it Which is fantastic So I don't know how long that is away But once I was too becomes part of WordPress all of a sudden this synchronization stuff is going to become possible So let's talk about syncing data now. So WordPress and has one Powerful flaw. It's the thing that makes it powerful that actually gives it this flaw and that is post We extend post types all the time This is what sometimes gives us problems with Divi websites Because it uses posts a lot to extend and do things. It's all extending posts, you know We're commerce. It's the same thing, isn't it? We extend posts to all these things like variants and product types and things and all of a sudden We have this one table in our database that's getting hit a lot To deal with just about everything in our website So the post table is Powerful it allows us to do a lot of things, but it's also a weakness when it comes to dealing with the data So let's think about what we're going to do here. We want to pull down some data and synchronize now Let's say I've got a to-do list I've got my list of items on my to-do list and I created to-do list on my mobile app But I don't have connection to the internet What ID do I give that item? I don't know what it is on the WordPress app I've got 10,000 users creating to-do items How do I know what ID it is? I don't but I've got to give it something to make it relate to that list and to be able To be usable in my app. So I'll give it a temporary ID or give it a local ID Then I get my internet connection back and it has to synchronize that item with the cloud because now I want To be able to log in on my website To do with my to-do list because I'm at work. See I was on the train adding to-do list items. I'm in a tunnel No internet Get to work. That's got to have synchronized somehow in there and still have all the relationships that I set on my device So what do I do? There's two ways you can do with this But they all really deal with a lot of code. The first one is you have a local ID and a remote ID Does that make sense? I have an ID locally That just relates to your app on your phone But then when it pushes it into the cloud it gets an extra ID, which is the post ID Okay, and then you update it that way By synchronizing the two that gets really messy when you have lots of different content The second way to deal with it is you have a temporary ID and then when you update it You get the ID out of the WordPress cloud Out of the REST API give it back to you and you update the IDs The problem with this is if you have lots of related data all your relationships break and you have to have special cascading queries and The local databases in apps aren't very good at doing that You know so you end up on a right all this code just trying to deal with synchronizing quite simple objects and In my opinion WordPress is probably not the best tool to use for this Okay, if you've got things with this two-way sync going on a lot I wouldn't pick WordPress to build that kind of stuff I'd pick something that's specifically made for dealing with API's Specifically for mobile apps with libraries that help you do this One day it might be able to do this really well, but for now I would probably be considering other tools. Okay That's it. Thank you very much. I hope it didn't bore you for this morning And I hope you guys learned a little bit of something about how to do this as I say Follow my website and things and I'll put up some code links later today So you guys can get access to that code and if there's any questions fire away Oh one other thing as well the only stupid thing to do a question time is not ask a question So please just ask Yes Yep Yeah, it does We don't go over about 10 megabytes Yeah There's about 20 items in there in each area because the thing is we're storing JSON data It's very light. So when we pull the rest API what happens that pool of data that we get We just store it as exactly the same file format So then we didn't have to have any interpreters. So the thing is if we created it and put it in a database We would have to make a layer then to say Pull this thing from the rest API Then put it into the database Then pull it out whereas if instead all I do is I grab the item and every time just shove the file off to the side Then if I go out to the cloud and at times out all I do is say instead return this local packet of data Yes, we do so as the image comes down it runs through a case for again shoves it to a local one That's why we had that URL as a parameter and what we do is we change the URL to a local URL instead We save the file as a full query string or as a file name and this then means that as it pulls it down We just save it in it as a text cache basically as a local storage text cache. Yeah Does that make sense? Yeah, we found that to be really easy actually Yeah Like This is exactly right one command. Yep, you just pull the libraries in so there's anyone here used npm libraries like no Do anything like that go pull these sorts of things same sort of stuff. All I do is say ionic publish Android I get an Android app. I haven't used react native. Unfortunately I Likeed angular views for a long time. So for me moving over to react wasn't worth the investment in this particular app usage scenario so Well, I would say react is not a framework as much as it is a library Ionic is a framework. This means that everything you need in the framework is already there You don't whereas react your pool libraries in right from all over the place Angler and I on a frameworks So I don't need to go and find something to run my SCSS. I don't need to find something to do my type scripting I don't need to find other libraries everything's all built into the one thing with the commands and the tools to do it and I Personally prefer the framework approach when it came to the apps Although I really liked the look of react for You know using as an extra library and things like the WordPress backend. That's a great usage of it It's a library in that case that makes sense Yep Yeah, sure. All right divi framework.com. We've really enjoyed Divi We found it very very easy for our customers to do things, but we found it had a few minor weaknesses So what we did is fixed them and made plugins So we've got things like a breadcrumb module, right? We all like using Yoast SEO when the breadcrumbs so we made a breadcrumb module that does that and then we like using advanced custom fields So we made a tool for our post types that makes it real easy to use Divi to lay out the detail page And as we started building all this stuff, we're like, hey people might want to use this too other people might actually buy it Let's test that out and we'll make Divi framework.com So we've just been converting all our plugins to the point that they can be purchasable and usable We've got all the API is already working all our plugins are used on about 50 different websites now And they're getting very stable. So we really just need to pull our finger out and get our documentation done Don't we? Yeah, we've got a knowledge base layouts pre-made layouts for things Yeah, all sorts of stuff different types of posts for FAQ modules Just all sorts. Yeah, everything we kind of made for all our customers. We've just started to turn them into products Appsellerator was one of the big ones one of the things we wanted to make sure we're gonna use is Skills that we already had we've got a lot of JavaScript developers We didn't want to go and start writing Java and Objective C, right? So you're right that means you have to write the app twice So we looked at that other dot net thing as well. I can't remember what it's called now There's like a dot net library so we were looking at things that where you write the code once and it renders out multiple times So we looked at Appsellerator phone gap Ionic and when I was using Ionic I found Ionic version 2 and I just fell in love with it. It was just easy and elegant. So that's how I came up with that solution We've done apps for Appsellerator though. If you look at my portfolio the live video streaming I did for Vans and Billabong they were all done in Appsellerator titanium What sorry Yeah, okay, no, let's have to take a look at it. Yeah Yeah using native Yeah, Accelerator is the same it goes through a bridge to a native Yeah Yeah, same as Appsellerator actually that so the great thing for you guys is think about this when you build an app with phone Gap quite often everything that you're looking at is actually HTML. It's in the browser But it's just wrapped inside the app Some of these newer tools what they use is the actual native components. So instead of using a HTML button It's HTML. It's a real button That's taken out of the native environment and as a result you get faster apps by doing that and some of the new JavaScript things They go through a bridge interpreter So you end up with the JavaScript on one side and it runs through a bridge interpreter So I think what do we do it do it use a bridge for to join two areas So when you throw the code through the bridge it comes through the bridge and at the other end all those things are mapped to native components and They turn them into native views instead So if you want to do things I don't know if anybody knows about the Android stuff where you can now view the Android app without installing it. Have you seen that? So you can now use Android apps without having to install them So you can Google something come up and say oh, yeah, that looks cool This is the thing on a store you click it and you can actually use parts of the app And just download just the parts of the app that you need natively to maybe do a check out And then you can use things like Android pay and all this sort of stuff, right because you got the native environment there Now these kinds of tools use the bridging to get there And if you use bridging you can do that because you can make partials of your Android app I don't mean you don't even have to install it People can use it up without installing it It's going to be a massive breakthrough for Android because let's face it It takes us quite a lot to go and install an app But if we can use it before we install it well, that's really something and for people with low bandwidth usages That's really big too So you can check that out. That was at Google 2016 at the next Yes No, we're not using Firebase. Firebase wasn't released when we released this This app's already 18 months old or something Yeah Yeah Yeah Yeah, I think we'll take a look at that when we come to redeveloping But yeah, I think that's a good idea And there's a question up the back as well For VR For farm VR, we use if you look at the little eye in the corner of the VR images, click it It takes you through to the component that I use I use the Google web VR HTML components and someone turned it into a shortcode And I built a Divi component on top of that So that we can easily just like you basically just drag and drop the box Click it and that's available on the Divi framework website as well The VR tools The other one we use is Flow Player and we're looking at using Flow Player So we can do video playlists Flow Player has a VR playlist And just before we left Vimeo released 360 videos on Vimeo So we're now considering maybe using Vimeo instead of the flowplayer.org VR tool Because we don't have to pay for it Flow Player, you've got to pay for it, right? Yeah Why are you using any third party or program-based authentication around that at the moment? We made our own OWLTH 1.0a And then we didn't like it So we then built our own REST 1 about two years ago With OWLTH 2 And we actually used to use that for an app that I've since discontinued called Mockup App And it was a way to be able to take screenshots and load them into devices So if I wanted a shot, if someone sat here on their laptop with my screenshot in it You could upload the screenshot and do that So it would mock that up for you It was pretty cool, but it just didn't take off And I'm not very good at marketing or advertising, really So it just didn't really work But what we did with that is I wanted to have people pay on a WooCommerce site So I could do all of that and authenticate with the app that way And we had an OWLTH 2.0 integration to do that And to deliver the permissions to the app that was written in Laravel With various Angular stuff to create all the views using Canvas stuff Then we threw that whole Canvas object at the server It would render out the big nice images for us It was pretty cool for a nerd But obviously the end customers just didn't think it was worth paying for And just one of those experiments So we baked our own in that case And I've really just been waiting for the native stuff I should probably pull my finger out and help you guys a bit But I'm a little bit busy travelling around doing other stuff So alright, I guess that's it for now, Ralph If anyone wants to ask anything else, please ask me outside Thank you