00:00:10 Matt Welcome back everyone to the Xamarin podcast, keeping you up to date with the latest and greatest in mobile development for xamarin developers covering the world. The xamarin.net Azure and more and today we're featuring another built with hammered story. An app built by American Airlines. I'm at soak up and today I'm joined by Kieran Gadla and Chandra Pachala from American Airlines. 00:00:32 Matt And Alexi struck from Microsoft Mobile customer advisory team. 00:00:37 Matt Alright so before we get into it. Kieran tell us a little bit about yourself your development background an what you do for American Airlines. 00:00:46 Kiran This is Kiran Gondola. 00:00:48 Kiran And I have been developing ever since I was in college and continuing to do so. 00:00:53 Kiran I have started as C plus plus developer and then.net and then went on to do some JavaScript framework development and. 00:01:01 Kiran Still, continuing to do some of the angular stuff. 00:01:04 Kiran I'm currently currently the product technical lead for mobility and I have been involved in creating a mobile apps using Cordova and some of the native native Android applications so. 00:01:17 Kiran I recently had had some exposure to Xamarin and react native and stuff, and right now, we have. We have started implementing xamarin on a full scale and. 00:01:29 Kiran The and continuing to do so on xamarin. 00:01:33 Matt Alright Anan Chandra well, what about you is your role. This same at American and a little bit about yourself, too, if you can tell our listeners. 00:01:40 Chandra Yeah, I I have similar background asking as well. I stand on the.net framework 3.5 and asp.net then. Some some of the JavaScript frameworks, then. 00:01:53 Chandra I overall I have 7 years of experience and recently. I started like 2 years ago, I started with American Airlines and that's where my mobile mobile development exposure has been started so I I do have Cordova experience too. 00:02:09 Chandra And started working in Xamarin because I have similar background with the C Sharp. So yeah, that's that's been that's been my experience. 00:02:20 Matt Alright and then Alexi you're on the Microsoft Mobile customer advisory team or bobcat or M cat, so tell us a little bit about what M cat? Does I think if you guys as like the mobile experts at Microsoft. You're out there in the real world and you're doing mobile development hard cores so. 00:02:39 Matt Tell us a little bit about you and what the M Cat team does. 00:02:41 Alexey Yeah, we work closely with various customers and doing lots of stuff with them. Starting from the usual code reviews, but also doing design and plan architecture refactor code discussing how to better approach specific issues. 00:02:59 Alexey And basically helping them to succeed with their apps delivering better faster application written in Xamarin. 00:03:07 Matt Alright very good, so now this app that we're going to talk about is a little bit different than the rest in that it's not available in the App Store. It's used internally at American. So Karen can you give us a rundown of what the app does? 00:03:23 Kiran The application is basically a mobile platform for Tac OPS, it's a master application. 00:03:27 Kiran And also call S launcher app. 00:03:29 Kiran So that is the application that is being used on different kinds of devices like and different kinds of OS version operating systems. 00:03:37 Kiran And. 00:03:38 Kiran These are used by different user groups like employees, contractors and the main purpose of this application is. It provides single sign on to multiple suite of apps with our IDB providers. An also manage is the users validity throughout his shift, duration and this application is basically a data driven application that is being controlled seamlessly through the. 00:04:01 Kiran Admin side in the back end. 00:04:03 Kiran And this application uses we communicate different kinds of messages to the end user like a layers or any upcoming changes updates and provide statuses to some kind of feedbacks. 00:04:17 Kiran And this the main purpose. Another key feature for this application is it provides easy navigation to the easy navigation of the app icons to the user irrespective of the device user logs into as these are the shared devices that are being shared by different. 00:04:35 Kiran Different set of users. 00:04:37 Kiran An also Additionally this app provides app usage for analytics and reporting based on what geographical area and what user type. This this gives us leverage to modify our dashboard on how to show these apps. 00:04:54 Kiran And some of the capabilities that includes our dark and light theme and offline capability. 00:05:00 Matt That's very cool, so we hit on a bunch of things that was right there. An I I got the tour of the app before we came on fairly sort of recording and one other neat things that it does it. I thought it was super cool was that there is a message center on this app. And so this app is used out in the field like let's say mechanics working at certain airports. 00:05:20 Matt And what we see here is that like if there's a weather system coming through an airport. You can just target. Let's say Dallas 4th Fort Worth and say that there's a big thunderstorm coming or something like that, so China. Can you tell us a little bit more about how you went about an implemented that portion of the application? 00:05:38 Chandra Yeah, so we, we have admin side where where admin can go in and you know send a particular message to you know, one station. Let's say DFW. They can type in and whether it's a high priority or low priority and you know submitted and. 00:05:58 Chandra Behind the scenes, we use the API where API does it does say that particular message to the database and also send it to the Azure notification hub so a notification is sent to all the DFW devices. 00:06:16 Matt Now notification hubs that's going to be my new Azure Service of the month. Whenever I do release his podcast. This one so awesome and but uh Alexei. We just did some documentation that that MoD CAD team. Help me right and it goes through like a reference architecture on sending notifications. 00:06:38 Matt Out 2 devices. 00:06:41 Matt Instead of having like the the device itself using the API 's and the DLLS or the libraries from notification hubs. It goes through a Web API first so can you kind of walk us through? How how that all works? 00:06:55 Alexey Yeah, sure an actually we 00:06:57 Alexey Started in this app. We started doing registrations directly from the app with notification hub. 00:07:04 Alexey And let likely the documentation was almost up and ready for that and we switched to registration through the API service for to be a proper architecture on how you should register for push notifications with notification Azure notification hub and also send out all kinds of notifications. 00:07:25 Alexey So basically you are registering your device through API service, providing device identifier or user identifier. 00:07:35 Alexey And then back end North Lees registration basically when whenever it needs to send a message. 00:07:44 Alexey To a specific device. 00:07:45 Alexey You can select it by let's say in your scenario by airport and to send out notifications only to that group of people and with tax it's very convenient to do. 00:07:57 Alexey Using Azure notification hub and that's how it should work and documentation, which is up and running already describes that. 00:08:07 Matt And I'll put a link to that Docs in the show notes. But yeah, it's brand new documentation is one thing that we are trying as an overall team at Microsoft to do a super great job with is putting together that narrative of how anybody can go in as a mobile developer and get a full picture of how to use. 00:08:25 Matt A mobile with Azure and get it from front to back using authentication push notifications how to use certain databases the whole thing. 00:08:33 Matt But we're not here to talk about that. We're here to talk about this app and lungs are on Azure. And we're kind of going off what the app does, but will swing back to that there are a couple of different things that we're using that you're using with this app and one of 'em is app center. But I want to talk about first is that you're using test center and app center so. 00:08:53 Matt Give us a little information on what you're doing there. 00:08:56 Kiran So yes, so we are using app Center for app. Analytics and app crashes and what our goal would be is like right now. It's all the all the app crashes and app. Analytics armor, stored in app Center but that is not really persistent. So we would be using app insight, where we will be exporting all the data from app center to the app insights. 00:09:18 Kiran At that point to run the report 's by management staff directly like doesn't need to be an IT involved there directly by our business users and. 00:09:27 Kiran And another thing that we're using like you mentioned Test Center. It's for automation testing an app center has got some huge number of different variety of devices real hardware devices that are hosted in some some stack and you can pick a device and it's it's up in a few minutes, and you can directly host your application and start. 00:09:48 Kiran Doing your automation testing right there, so and we're using our xamarin UI test for automation tool. 00:09:54 Matt Alright so let's get into a little bit about Xamarin. UI test actually no. I'm going to step back. So let's talk about app insights. And so you mentioned before when we were talking about the overview of the app that it kind of customizes itself based off of. 00:10:12 Matt How the users are using it so if somebody is using it's also a like a dashboard so if somebody is using it one way. And so it'll customize itself, so it makes it easier to use in that way is that am I getting that part right. 00:10:28 Kiran Yeah, you're absolutely right, so the dashboard is very since this is data driven that gives us leverage to have a different dashboards for different sets of users. Let's say like you are using a one suite of apps like your top 6 apps that are being used might be different from other other other set of users so we would want to have that. 00:10:49 Kiran Always displaying on your home screen, so we, we can shift around those apps based on the user activities. How they use it and based on like? What is app usage we would we would be taking some appropriate decisions? 00:11:04 Matt OK, Anan that info information is coming from app insights. 00:11:08 Kiran Yeah, that that's the goal right now, it's it's coming to the database directly, but we would be right now, we're having everything stored in app center. But it's not persistent. We want to move everything to app insights and that is where like reports will be running. 00:11:24 Kiran And the decisions will be making from there on. 00:11:27 Matt And just to clarify for everybody else is that the application what it does partially is in addition to like the message center. It also gives you the dashboard where folks can actually go out and launch. Other apps that are pertinent to their job so we're just going to give you an over so you can have it in your mind 's eye of what the app is doing so. This is then A. 00:11:47 Matt Salmon forms app genre am I correct in saying that yes. 00:11:52 Matt Alright so can you give us a quick overview of the architecture that you built it with I'm guessing it's going to be MVVM. 00:12:01 Chandra Yeah, you're right so we, we have to support existing Samsung top tablets and also the knew the new iPads that we are, we planning to deploy so that's why we we? 00:12:14 Chandra We choose Xamarin forms so and when we are going to like what's the best way to go. And when we met the The Alexion, Alex, Alex, we were given different options and? 00:12:30 Chandra So as we have the the you know that.net framework experience, then we like it's very family for this so that's Why? When we went to them with the MVVM framework. 00:12:44 Matt As we were talking before Alexi said that not only does are we using xamarin forms, which everybody knows is our cross platform. 00:12:51 Matt Framework but one of the great things that forms can do is that we can drop down into the native code without issue. And so Alexa do you want to give me a little overview of what you are doing with that. 00:13:03 Alexey Yeah, absolutely even though we started with Xamarin forms and developed quickly the user interface. There was a need to access the native functionality in this particular case background in priority to do some request periodically and in background refreshing. 00:13:24 Alexey Access token and that was easily done through fall back to native part. Xamarin iOS and Xamarin Android without need to reconfigure anything so you basically have instant access with native services to do that. 00:13:40 Matt One of the other things that I saw that when we were going over the app before. This is that it displays a lot of information about the device itself. And so can you tell me a little bit about how you win and got that information here and I'm going to let you go with this one how you go about getting some of what type of information are you gathering or displaying from the device. 00:14:03 Matt And how are you going about getting that? 00:14:06 Kiran Yeah, for that I would like to thank Xamarin Essentials team because that is the huge, huge thing. 00:14:12 Kiran I love Zambian forms but Xamarin Essentials is even even more becausw. 00:14:18 Kiran All the information that you just saw was. 00:14:21 Kiran Using Xamarin essentials like we use, we get app version what? When like is it the first time app launches are visited what kind of device info like? What is the device serial number everything like you get most of the details out of Xamarin Essentials Sanford is a form factor and we use it for secure storage. 00:14:42 Kiran So there is an essential she's one of the key thing for this project and. 00:14:46 Kiran We are in love with that Xamarin essentials stuff that gives us leverage to access a lot of native functions without having to write any of the native codes. 00:14:54 Matt I know the team will love to hear that information. I'll be sure to pass. Some feedback so if you have any requests to after the show. I'll take those requests and I'll pass on that, too so. 00:15:03 Kiran Yeah, that will be good Galaxy was Alex he was one of our help for that because. 00:15:09 Kiran We had some issues with some of the things an way in the very next releases of Zambian forms that was addressed like flyout menu is playing and. 00:15:19 Kiran There were some other things, but that they they were really quick to address them. 00:15:24 Matt It's awesome to hear So what I'm going to go back with John right so one of these or one of the main purposes of this app. Then is to go with you have to sign in for it. And so that's one of my favorite topics is identity, but you're not using Azure AD, and you're not using B to see which. 00:15:44 Matt That's fine, but it kind of give me a run through about how you're doing identity and how you're storing the tokens. 00:15:51 Chandra Yeah, yeah, so we, we have internally. Currently we have 2 identity providers. We kind of migrating into one. But currently we have to support too, so as you know, we have a lot of applications in our suit so. 00:16:08 Chandra When a user signs in we, we have to keep the users signed in for 10 hours, so bind our cookie or the access token expires. 00:16:20 Chandra Like a 2 hours one hour, 2 hours what we have to do is that we are sending a silent notification every one hour to the device when the user signs in and behind the scenes. We we call the all the services to get the latest the cookie and. 00:16:40 Chandra Access token I mean, you know, and make it. 00:16:44 Chandra Make it alive for next 10 hours, so that so that's how we keep the user. Active signed in in the and also we provide the access token and the cookie to other users. I mean, other apps actually using the keychain access group that's that's 00:17:04 Chandra They are like form specific for iOS oh man. 00:17:11 Chandra Yeah, that's why we keep the. 00:17:12 Chandra User active for 10 hours. 00:17:15 Matt And so, yeah, authentication identity that's always that's always fun to deal with so since you will be offline. Gary could you give me a little heads up on what you're doing to handle all the offline data so I can imagine that you're going to have to have an onboard database so how is that going so? 00:17:35 Kiran We currently have it. 00:17:36 Kiran On SQL Lite, but we're planning to switch to switch to couchbase Lite and along with Azure Couchbase. Full version of Couchbase in Azure server, so. 00:17:46 Kiran Which would be doing the sync seamlessly and only the mutated values will be on sync so the less bandwidth will be used in. 00:17:56 Kiran We are so there is always a challenge on the challenge in the airport with the network. So we wanted to mitigate some of them with you, having the app to be offline capable and we're almost there. To achieve that so. 00:18:09 Kiran View all the dashboard data that I was talking to about the data driven it's all stored in the stored in an app and that would be displayed an when user user goes into non non Internet area non network areas. So he can still do his activity. He can still launch other application. He can still submit a feedback and all those are all stored in. 00:18:32 Kiran Stored in the cache or the offline offline. I mean in a SQL light or the couch base. Lite database and that will be synced. Once you once he comes to an Internet so it's all done in an offline manner. 00:18:45 Matt So yeah, when you combine identity and you combine offline syncing and conflict resolution. If you have to get in that. That's really something that mobile developers have to deal with, and it's one of the hardest things that you have to you have to push through and so Speaking of difficult things. Alexi when you came over and help the American Airlines team was one of the. 00:19:05 Matt Hard things that you had helped them through whether it's was architecture or a specific problem with building the app was one of the things that you thought wow this is. 00:19:16 Matt For this particular application this is tough to figure out. 00:19:20 Alexey Essentially this application is a launcher for different many other apps and the goal was to accomplish this with less effort because the app was already originally developed in different language. 00:19:36 Alexey And we need to implement it before I ask and decided to go with Xamarin forms but still the challenge was lots of other applications to run. 00:19:47 Alexey So we were working on solution on how to run them conveniently even load them dynamically and that was the biggest challenge and still. 00:19:59 Alexey Having all these apps working together using a single sign-on and smoothly for seamlessly for end user. 00:20:08 Matt Alright so we talked about the hard stuff Chandra. What did you like the most about working with xamarin or xamarin forms or even Azure? What did you enjoy most about working on this project? 00:20:19 Chandra Me and as I mentioned Mommy. I'm most of my professional experience has been working on C sharp so moving to examine was like it, it. It wasn't much, much effort. I I just have to learn like one of the pages like Xamarin Essentials and. 00:20:40 Chandra How it how it done shared between different platforms Android and always yeah? 00:20:50 Chandra One of the 00:20:51 Chandra So one of the biggest for me that Xamarin forms has lots of samples on GitHub almost on every feature and the documentation was really great, so, so that's that's being the most most thing I like about gambling points. 00:21:10 Matt I love that you said the documentation that's one thing. Obviously, we talked a little bit about that before with the notification hubs example. But yeah, documentation is so important. If it's not written down. It doesn't exist and I've said it before on previous podcast is that? 00:21:25 Matt We want to get to the 5 minutes to delight on every single aspect. Not only on the xamarin pure xamarin aspect, but also on using Azure with salmon where you can sit down and write a sample application. In 5 minutes. You have it working and you think about this is cool. So yeah, I love that you said that and that's where we're trying to get across all all services so cool. 00:21:46 Matt And it's very important so Kieran same question to you is what do you like? What did you enjoy the most? What working on this project? 00:21:55 Kiran So we have started this project from the scratch using xamarin so got to learn a lot of stuff on xamarin what we have, I have expertise on mobile side like I know what mobile can offer and I have C Sharp background. So it wasn't a lot of learning curve, there, so that was quick so to meet the business deadline. 00:22:17 Kiran You got to be quick and designing something like this so this was. 00:22:20 Kiran Kind of pretty important decision that we made to choose xamarin out of other things that we, we have done some poses and we are very happy with our end product so this shell, Jammer in shell is one of the key things like I didn't mention that but that was. 00:22:36 Kiran That is one of the awesome things. It gives a lot of things out of the box an like flyout menu or Tab Bar. Whatever like it doesn't need to do, and navigation is a lot easier into jam Rachel. 00:22:46 Kiran An example in essentials it gives so much flexibility irrespective of what OS you're on and it is. It is allowed the way it's growing an? 00:22:57 Kiran And also like gradients like we use the background gradients and that like we were actually planning to use some 3rd party like pancake. View and it is a powerful tool, but with Xamarin 4. Dot, 8, even like gradients and teams. Those are all like embedded in Xamarin forms so you have less need to use any of the 3rd party things. 00:23:19 Kiran With every new release that Xamarin forms is releasing and with the hot reload or we use for UI design with the debugger rainbows. So there are a lot of things that we love with Xamarin and Xamarin. UI test of course, it resides in the same solution for the automation testing and. 00:23:37 Kiran And this is a Microsoft product and everything goes In Sync like app center also supports xamarin apps and. 00:23:43 Kiran So it's all like app Center Azure Xamarin, so it's all go sensing. 00:23:48 Matt Is this just by you mentioning that we're using shell you're using gradients from forms 4 dot 8 this is a? 00:23:56 Matt Up-to-date brand new app essentially I mean, it's you're keeping it. You know latest and greatest So what did you? How did you feel about the gradients being put in there? 00:24:05 Kiran I love them because I was using I like I said, I was using some 3rd party library for that and and it. It offers a lot more than this gradients, but I didn't find any better way, and with 4 with 4 dot 8 release. You know like we, we try to keep up-to-date like whenever you guys release it. We try to update as soon as we can and. 00:24:26 Kiran Try to implement and we never had any issues all all we had is like. 00:24:30 Kiran Issues were resolved like lot of issues will result like flyout menu was displaying when bottom tab tab or was there, so that was, I think removing 4 dot 6 or 4 dot 7. 00:24:41 Kiran So. 00:24:43 Kiran And also there was some with HTML text type, and 48 address that issue so there is always no challenge really like to update something and it. I recommend everyone to update like whenever you see a new version of Xamarin forms. It actually reduces a lot of bugs. 00:24:59 Matt Yeah, the same apartments team really just they keep on chugging along with the with the other podcasts or the Xamarin Podcast would I do with James is that we always have something new to talk about with form so it always it's a nonstop material for us. 00:25:14 Matt So let's talk about a couple other cool things that I saw while you were demo. ING the app for me. One of 'em being and everybody was it. Dark mode, so Chandra? How hard was it to implement dark mode. 00:25:28 Chandra It was it wasn't much because we were able to keep on we were able to keep 22 files for dark and light mode. Those are from the styles and the the different images that we want to show all the to do is that use the? 00:25:49 Chandra Examine it essentials to find out whether it's in dark and light and apply based on that, so it. 00:25:55 Chandra Was really easy? 00:25:57 Matt It's that's really neat that it wasn't a lot of work to do. But yet you can give. It almost seems like a different app for the user or it gives us such a fresh coat of paint. So to speak and it's it's a small thing, but it's a really big thing as far as a user interface stuff goes. 00:26:13 Matt And then another cool feature that I saw was the is that when you push out those notifications is not a one way street, the user out in the field, you can essentially communicate back and forth on certain type of notifications and so Karen could you give us a little bit overview of what? 00:26:33 Matt That is all about. 00:26:35 Matt And then how you went about implementing that. 00:26:37 Kiran OK, so we just don't want our user to submit a feedback an. 00:26:42 Kiran We get it and we don't respond to that or we just respond to it. Once we're working on it or something like that, and don't keep track of that some somehow somehow so rather we want to have a constant communication between that so it acts like it acts as a thread so once once user submits a feedback. We have an admin that where we respond and Azure notification hub. 00:27:03 Kiran Come see the picture to send any notification that we're going to put in respond to the feedback so that user is aware of that. 00:27:10 Kiran And user can have a constant chat between that particular issue like we say like we're working on it or what is the issue and we can have that constant thread going around until the issue is fixed so that gives the user more elaborate and also the person who is working on it. 00:27:27 Kiran The more attention on the what the actual subject is. 00:27:31 Matt That's that's great, so notification hub, so you can do a broadcast messages to all the devices in the field. You can do it to like a subset of devices and I feel like ones that are just registered from working at a certain airport. Let's say, and then you could even do notifications to a particular user for ongoing feedback. 00:27:51 Matt To help them out, so that's you're really using the full gamut of what notification hubs can do, and it's awesome. So Alright Alright Everybody. We're going to go back now and do the pick of the pod. 00:28:06 Matt Alexei. 00:28:08 Matt What is your favorite thing that you're using this week? 00:28:13 Alexey Um so my friend from Virginia shared with me, this app, which is contact tracing app. Apple and Google partner on that and provided that this API 's and everyone was talking about them, but eventually no one has. 00:28:34 Alexey Implemented anything and my friend recently shared an app. 00:28:37 Alexey Kobe device, which actually provide you that functionality with ability to get notifications of exposure an submit if you were exposed and yeah now. I'm feel safe, even though this app is for Virginia. I still feel safe looking at your exposures overtime. 00:28:59 Matt If you I guess you just have to pick up and move to Virginia. I'm assuming you don't live in Virginia, but no. 00:29:04 Alexey I don't I live in Washington. 00:29:07 Matt At China what is your favorite thing of the week. 00:29:13 Chandra I don't have any other apps, but I started working on Android or Android version for this. Uh this same app and I found that I don't have to keep fonts and images in Android and iOS in different projects which. 00:29:32 Chandra I learned that I can keep both in common project and using in different platforms. So that's a cool thing and I'm really excited to use that feature. 00:29:44 Chandra In Xamarin forms. 00:29:45 Matt That is a super cool thing that I love it. I love it. Ann and Karen. 00:29:52 Matt Up to you now, what is your favorite thing of the week. 00:29:55 Kiran Lot of things and to name one, I would say like I have been more concentrating on cloud recently so I would say app services. 00:30:05 Kiran Is one of the things that I loved it so how it is like it's a platform service and? 00:30:12 Kiran What is keeping at the price is? 00:30:17 Kiran Very interesting so it is it is exciting to use app services so I was leaning towards Cuban 80s and then. 00:30:25 Kiran Actually, we decided to go with app service is based on what it offers and how much learning curve. There is like with the.net background and all with if you're going to use something else. There is a lot of learning curve. But with with app service is it is so much easier. 00:30:42 Kiran To implement that we just knowing with the knowledge already you have so that is one of the cool things. 00:30:48 Matt Awesome gotta love it gotta love your app services alright guys. Where can anybody find you Alexi where if I want to follow you on Twitter? I want to see your GitHub? Where can I find you? 00:31:00 Alexey You can find me using my first and last name. 00:31:02 Alexey Which is Alexis truck and you can find me everywhere like Twitter GitHub Instagram? 00:31:09 Matt Alright and Chandra. 00:31:11 Chandra I'm on GitHub and Twitter with the username Peach and overdone. 00:31:15 Matt Cool. I don't care and. 00:31:17 Kiran You can find me anywhere with Kieran gondola. 00:31:20 Matt Alright and I put all that in the show notes and of course. I'm code Mail. Matt Twitter GitHub. I don't know. I'm not on Instagram. I'm not that young are cool, but Twitter and GitHub. Of course, and well gentlemen. Thank you very much for joining me here on this customer success story. I really enjoyed it. It's cool to see that a very large company like American Airlines is using xamarin building a successful app with it. 00:31:45 Matt Add with that. Thank you very much and will talk to everybody next time.