On this episode of Eat Sleep Code, we’re in front of a live audience at Code PaLOUsa talking about all things mobile. For this episode we’ve assembled a panel of mobile experts featuring Sam Basu, Mike Branstein, and Nick Landry to share their advice on tackling modern mobile development.
Samidip Basu (@samidip) is a technologist, Apress/Pluralsight author, speaker, Microsoft MVP, believer in software craftsmanship, gadget-lover and Developer Advocate for Telerik..
With a long developer background, he now spends much of my time advocating modern web/mobile/cloud development platforms on Microsoft/Telerik stacks. His spare times call for travel and culinary adventures with the wife. Find out more at http://samidipbasu.com.
Developer, technology evangelist, author, and geek dad. Passionate about systems architecture, ALM, and NativeScript! (co-author of NativeScript in Action)
Nick Landry (@ActiveNick) is a mobility pioneer and expert specializing in the design and production of mobile applications for consumers and the enterprise using diverse cross-platform technologies including Windows Phone, Windows 8, iOS, Android, Mobile Web, Xamarin and PhoneGap.
Nick is a Senior Technical Evangelist with Microsoft in the New York Metro area and works with developers, students and IT pros to help them learn, adopt and use the Microsoft developer platform to design and build the next generation of apps for Windows Phone, Windows 8 and Windows Azure.
0:00:00 Automated Voice: This podcast is part of the Telerik Developer Network. Telerik, by Progress.
0:00:16 Ed Charbeneau: Hello, and welcome to Eat Sleep Code, the official Telerik Podcast. I’m your host, Ed Charbeneau, and today, we have a special episode recorded in front of a live audience here at…
0:00:26 Audience: Code PaLOUsa!
0:00:28 Ed Charbeneau: Hope you enjoy the show.
0:00:35 Ed Charbeneau: Okay guys, so welcome to the mobile strategy panel. My name is Ed Charbeneau. I work for Telerik or Progress. Developers seem to know us better as Telerik from the brand of.NET products that we’ve have built over the years. But now, we are Progress, and I work for Progress as a developer advocate. And part of my job is to do stuff like this and record a podcast. And I also work with some of these panel members here. We’ll start with Mr. Sam Basu here. Sam, wanna introduce yourself?
0:01:09 Samidip Basu: Sure thing. So good morning, guys, and thanks for being here. So my name is Sam Basu. I unfortunately happen to work with Ed. I’m also a developer advocate for the Telerik products at Progress. And a long-time Microsoft.NET guy, but also, stepping to web and mobile, so that’s me.
0:01:26 Ed Charbeneau: And next, we have Nick Landry. Nick works for Microsoft. Nick, tell us a little bit about you.
0:01:33 Nick Landry: My name is Nick Landry. I’m a technical evangelist, which is the original term for developer advocate, but it’s the same thing in the end. You might call it different but…
0:01:41 Samidip Basu: So you don’t preach at a church anymore? [laughter] Come on!
0:01:45 Nick Landry: So yeah, I’m a technical evangelist from Microsoft. I’ve been in Microsoft for three-and-a-half years. Prior to that, I was an MVP, Microsoft MVP for 10 years. I’ve been in this business for about 25 years now. Speaking of mobility, I’ve been doing mobility for 15 years now, or as I like to call it, five years before the iPhone came out. So it was a very different landscape back then. Today, I focus on cross-platform mobility. But beyond mobile, I also do IoT, both server side with the cloud, and client side with electronics. I also do conversation as a platform, including the session I just did with Bot Framework, digital assistants, computer speech, natural language processing, and cognitive services. And if you saw my session yesterday morning, my last pillar of specialty that I’ve been focusing on for a year now is mixed reality, specifically, with the HoloLens, which is, in a way, another form of mobile development. So that’s what I do.
0:02:45 Ed Charbeneau: And next up, we have Mike Branstein. Mike is a Louisville local here working for KiZAN. Mike?
0:02:52 Mike Branstein: Yeah, thanks very much. I’m Mike Branstein. I’m a developer. So my area of specialty are particularly.NET. I’ve been doing.NET since.NET was.NET. And been recently getting into mobile. And wrote a book on NativeScript, one of Telerik’s products on mobile, which will be published soon. Other areas of specialty are TFS with build and release automation on TFS. I really love that, and along with the DevOps and Agile spaces. So I’m excited to be here and really get real about mobile.
0:03:28 Samidip Basu: Do you need hugs, Mike, with TFS?
0:03:30 Mike Branstein: Oh, I always need hugs.
0:03:33 Samidip Basu: So the green text, guys, by the way, that’s our Twitter handles. So if we are done with this, and if you still wanna ask us questions, keep the conversation going, just ping us any time, we’re always on.
0:03:42 Ed Charbeneau: Absolutely. And we’re gonna get in some back and forth discussion here. I think we’re gonna kick things off with a little bit of each individual’s specialty, first. Sam, why don’t you give us a little bit of an overview?
0:03:54 Samidip Basu: Yeah. So this is one of the slides I use to give folks an overview of all the different options you have, and then, we’re gonna dive into Xamarin. I know Nick can speak to Xamarin quite a bit as well. So I think when you look at building a mobile app today, there are lots of ways in which you can do it. It all depends on… The technology stack that you’ve picked really depends on your skills as a developer, and the type of app that you’re building, the type of audience that you’re trying to target, and what kind of codebase you wanna keep maintaining. So maybe this is my one-man spiel on all the different ways in which we can go about it. So the lowest-hanging fruit, sometimes, is mobile web. If you have a website, and we’ll talk about responsive maybe in a bit; there is no reason why the website cannot work nicely on a mobile device. There are lots of frameworks that help you out.
0:04:40 Samidip Basu: So that’s the easiest thing. The hardest thing, maybe, on the other side of the spectrum is native. You can target native apps for iOS, Android, and Windows. The challenge is these are three distinctly different platforms with distinctly different IDEs and programming paradigms. So it’s hard for one individual to learn all of these things. It’s actually harder for enterprises to maintain three different teams with three different skillsets, and yet, have one app from three different codebases. So that gets hard. But I’m a huge fan of native, as I’m sure Nick is. You get closest to the medal, best possible developer experience and user experience, but it’s hard. So that’s when you look into going cross-platform options. If you look at cross-platform options, it again depends on the technologies that you are already familiar with. If you already do web stuff, there are lots of options for you.
0:07:04 Nick Landry: One thing that’d be important to point out, since most of the audience here is not doing mobile development yet, is to recap quickly, also, what tools do you use to build native apps? Because for example, if you’re an Android developer, then you’re gonna be using Java as your primary platform to build Android apps with the Android SDK. Historically, you were using Eclipse as the IDE, but in recent years, Google has adopted Android Studio, which is based on JetBrains IntelliJ, to actually build your android applications. The whole build system is completely different; it uses Gradle. And so, it’s a whole mindset you have to get into of Java, Android SDK, Android Studio, and you can do this on both Windows or a Mac.
0:07:50 Nick Landry: If you’re building for iOS, then you have to be on a Mac, that’s an absolute certainty. It’s an Apple rule. The only way that you are allowed to compile an iOS package is using Apple’s tools, writing on Apple’s operating system, running on Apple’s hardware. You cannot get around that. And the tool is Xcode, that’s Apple’s IDE. The language, it started with Objective-C. Maybe somebody could close the door back there. The language is gonna be either Objective-C, historically, which is now losing favor because let’s face it, it’s Objective-C. And it’s been replaced by Swift, where… Objective-C is still supported, of course. Swift is the new language that Apple has created, and it was later open-sourced as well. And you could now only do this on a Mac and they have their own SDK for it.
0:08:47 Nick Landry: And then, for the Windows applications, and when we say Windows, let’s immediately clarify something. Windows is a big world. There’s the desktop applications, the traditional Win32 apps that we’ve been building for years; we’re not talking about those today. We’re only talking about the store side of things. I don’t wanna just use the term “mobile” because a Windows Store app can run on a desktop, can run everywhere. So it’s what we call the Universal Windows Platform, so what used to be called WinRT in the Windows 8 days. And it’s got rules also in Windows Phone and everything. So a Windows 10 application is gonna be built in Visual Studio using C#, and you can also try to extend/use things like VB or F#. But C# is pretty much the primary language, comes with its own SDK. So that’s why now, if you wanna be a mobile developer, you gotta know all this. Or the other options we’re gonna be discussing here.
0:09:41 Ed Charbeneau: Yeah, I think you made a good point to it. I think mobile, in general, is getting to be a very fuzzy term. We have a lot of devices that are mobile, but they don’t necessarily show themselves as a small candy bar-sized device. We have things like HoloLens and IoT devices that have different types of inputs. We have speakers that are mobile but have personal systems on them. So the topic can really get to be wide-ranging.
0:10:13 Nick Landry: And even the iPad pro is chasing the laptop market now, and trying to turn it into a true laptop replacement, which I won’t comment on that. But mainly, it’s iOS. So if you wanna build for that, it’s more almost of a laptop application you’re writing, but you’re still using those same iOS tools.
0:10:33 Mike Branstein: And Android isn’t just your phones, your tablets. There’s watches, there’s TVs, all of the Android Wear…
0:10:39 Nick Landry: Set-top boxes. Yeah, everything. Yes?
0:10:43 Audience: You said you won’t comment on why the iPad is a productivity device. I heard that in the news, but I don’t know, really.
0:10:50 Samidip Basu: So the question is, can the iPad Pro really be a productive device and your laptop’s replacement?
0:10:56 Nick Landry: It’s subjective, really. The iPad is a great consumption device. This is where I have to give you my personal opinion. I’m not speaking for Microsoft on this one, but from what I’ve read, it’s basically what makes or breaks a platform. It’s the apps. It’s the apps, but it’s also the model of the operating system. IOS was designed to be a very siloed environment where apps are isolated from one another. And let’s face it, when you own a productivity device like a Mac or a Windows machine, you wanna have access to your entire file system, manage everything in there, and then, launch one app or another to do your work, switching around. And this is something where, frankly, Apple is still playing catch-up in terms of functionality to both Windows, and even, honestly, to macOS. MacOS is much more of a desktop and a laptop operating system than iOS is. But I think Apple also sees that iOS is much more popular than macOS, so I don’t know what they’re gonna do. Some people speculated they might merge them. I can’t speak for our competitors, to be honest with you. And Apple is also a partner, not just a competitor. But the bottom line is, Tim Cook said he was not gonna merge them.
0:12:08 Samidip Basu: I don’t think they are.
0:12:09 Nick Landry: Others are saying that iOS is gonna be the platform of the future, and macOS is gonna get deprecated, but who knows? You would have to ask Apple.
0:12:15 Ed Charbeneau: Yeah, one of the things we haven’t seen is the Mac operating system pick up touch in a useful way.
0:12:21 Nick Landry: Yeah, I don’t think that they ever will.
0:12:23 Ed Charbeneau: So it’d be hard to see that that operating system be a mobile type of a device.
0:12:29 Samidip Basu: Yes, so I think, to answer your question, I think it depends on the audience. My mom doesn’t really need a computer anymore. If all she’s doing is Office and web stuff, the iPad Pro is just fine. So we developers may not consider that to be a productive device, but for a majority of folks, it is. So it all depends on who the target audience is.
0:12:49 Nick Landry: Yeah, we also believe in it. We put Office on it. In fact, when they announced the iPad Pro, Apple had actually invited one of our Microsoft executives on stage at an Apple event. I know, at that point, the temperature in hell was probably -10 or something because…
0:13:04 Samidip Basu: It happened back in 1984, one time.
0:13:06 Nick Landry: Yeah, it was basically a Microsoft executive on stage to talk about Office for iPad Pro. As I said, they’re our partner as well.
0:13:13 Mike Branstein: Yeah, I like to… Different, not just consumer groups for these tablets or… So iPad Pro, for example, but even as a developer, I might choose a different device at a different time of my day in what I’m doing. I’m not pulling my whole laptop out if I get home and just wanna browse the Internet. I’m pulling out a tablet, I’m using a tablet. If I’m just casually looking at notifications, that might be my watch or my phone. It’s a different type of day for a different person, which is why I think there’s a success in all these variety of devices.
0:13:43 Nick Landry: And when my laptop is also a tablet… [chuckle]
0:13:47 Ed Charbeneau: And I think we’ve covered pretty well that all of these different approaches to building whether it’s an IoT-based device, or an iOS or Android, or Windows Phone, or any of those things require some kind of specialized language, tools, platform if you’re gonna build just natively for one of those devices. I think we’ve got that squared away. So as developers here at a conference, one of the things that I would be looking for is, “How do I cover as many of these bases as possible with a single language or platform so I have the least amount of learning curve, and development time, and reach as many devices as I can?” So let’s talk a little bit about some of those type of approaches, which should be things like Xamarin, NativeScript, mobile web, Apache Cordova.
0:14:41 Samidip Basu: Yeah man, it’s 2017, you really have to be a cross-platformer. And don’t tell me that your app isn’t available on the phone that I have. So as developers, I think it’s our responsibility to make sure whatever we are doing reaches the max audience. And devices and platforms shouldn’t be the deterrent anymore. And to your point, there are lots of ways in which you go about doing this. It’s sort of a flowchart, and you lean one way or the other based on your skills. If you are hardcore on the web stuff, go all-web. If you are.NET, then go all Xamarin. I think that’s easy for the road.
0:15:14 Ed Charbeneau: Yeah, and Xamarin covers how many device? Well, not how many devices, but how many, say, platforms? ‘Cause we’ve got the major two operating systems, and we also have things like Tizen and watches.
0:15:28 Samidip Basu: Yeah, everything. So this is, again, one thing that I think Microsoft loves saying because Xamarin completes that.NET story. So with.NET and C#, there is nothing you cannot target. Everything, every device, you can target. That includes iOS, Android, UWP, obviously, which immediately means if you’re making apps with Xamarin for UWP, your apps now run on HoloLens, on Surface Hub, and all of these futuristic devices. But you also have folks like Tizen and Samsung pick up their stuff. So hey, a Samsung fridge, your Xamarin app runs on it. So I think Xamarin is one of those blanket technologies, which really cover all platforms. And you’re doing this all from a C# XAML codebase, using the IDE on your chosen platform, Windows or Mac.
0:16:14 Mike Branstein: Now, I think there’s… We’re leaving out… All four of us, we are.NET developers, that’s our primary platform. But there’s also the rest of the world that doesn’t do.NET.
0:16:26 Ed Charbeneau: Yes.
0:16:26 Samidip Basu: Sure.
0:17:04 Ed Charbeneau: Yeah, and let’s double-clarify: Native meaning no WebView at all.
0:17:08 Mike Branstein: No WebView at all. So when I say, “Hey, go put a button on my screen,” it’s rendering, not just rendering, but it is an iOS button, it is an Android button, and that’s how it works.
0:17:38 Mike Branstein: You’ve said it exactly right.
0:17:39 Nick Landry: And so, it’s an interesting distinction because the word “native” gets used a lot, but then, what is the definition of native? When you’re just using the one platform and the native tools, the original tools from that manufacturer for the platform, it’s easy. But when you start using these cross-platform tools that all claim to be native… So with the Xamarin team, which if you haven’t heard, we bought Xamarin last year, so Xamarin is now part of Microsoft. For the Xamarin team, our definition of native, and it’s up to debate, I guess, it’s three factors. The first one is gonna be the native UI, meaning that this application, the controls that you will see in the UI for that app are gonna be the native controls of the platform. So not a WebView like you said, not a custom rendering of a control from that solution. It’s basically gonna be if you put a button, it’s gonna be an iOS button, or it’s gonna be an Android button, or it’s gonna be a Windows button, the way that it would be if you had used the native tools on that platform; and so on for the entire UI.
0:18:46 Nick Landry: The second factor is gonna be native performance, meaning that the app is compiled. And it’s gonna be compiled, at least, at the same level that it would be when using the native tools. So on iOS, an app is natively compiled. It’s unmanaged code, just like standard C++, and it’s running native code that is built against the CPU. Just like on Windows; on Windows, a UWP app is a native app. There’s a lot of people that get confused because they see.NET languages like C#, and they use Visual Studio, and it looks like.NET, but a UWP is not a.NET app. It’s an app that can follow a.NET profile, but ultimately, it is compiled natively. Do a File-New project, Universal Windows Platform, look at your targets. You will see x86, x64, and ARM. “Any CPU” is not there, ’cause the only way you can get “Any CPU” is when you have IL code like JIT-compiled code at runtime the way that.NET does it. So.NET can be considered native anyways because it is JIT-compiled at runtime in a CLR. But a UWP app is truly native in a sense that it’s compiled by the same compiler that a C++ compiler would be using.
0:20:05 Nick Landry: And then Android, Android uses Java. Java is also native, but it’s managed code as well, in a sense that Java gets compiled on Java bytecode. And then, the bytecode, at runtime, gets JIT-compiled by the Java virtual machine, which on Android, is called the Dalvik Virtual Machine, Dalvik VM. Or the newer runtime since Android 4.4 now, if I remember correctly, is ART, which is basically Android runtime. And with tools like Xamarin, for example, we’re not adding an extra layer on top of Android; we’re simply replacing the Dalvik VM or the Android runtime with the Mono run time. So that your C# code gets compiled into IL, and then, JIT-compiled at runtime by the Mono runtime to generate machine code directly for ARM devices or wherever your Android is running.
0:20:57 Nick Landry: So to recap, we have native UI, native performance, meaning compiled code not interpreted at runtime, but compiled at runtime or compiled at compile time, and the final one is API access. IOS comes with its own set of iOS SDK and frameworks and APIs. Android has its own. Windows has its own. And a true native application needs to be able to call 100% of all of the APIs of each of the three platforms. It doesn’t mean that code can be shared because there’s a lot of APIs on iOS that don’t exist on Android or Windows, and vice versa. Or sometimes, an API exists in all three like, I don’t know, Bluetooth? But those APIs are wildly different in all three, so you would have to write the code three times. But the app could be considered native if you have access to those APIs. And that was the main thing that people were complaining about things like Cordova, because Cordova gives you only a subset of those APIs. And then, if you end up trying to call APIs that are not supported in Cordova, you would have to write your own plug-ins and things like that. So to be truly considered native… So, I don’t know if you agree with this, but…
0:22:12 Samidip Basu: No, I do.
0:22:13 Nick Landry: The UI performance and API.
0:22:39 Nick Landry: Yeah, right.
0:22:41 Ed Charbeneau: Is it compiling a code for machine, or is it interpreting it?
0:22:44 Mike Branstein: It is taking the code, and I believe it is an interpretation of that code.
0:22:52 Nick Landry: You can, but anyway, that’s another thing. [chuckle] But no, but I agree that… So that’s where somebody could call all of this native, but there’s different levels of native. And by our definition, it meets two or three. But if you were to compare performance, I’m sure that for equal code, equal skill, the true native would be much faster.
0:23:17 Ed Charbeneau: I was not up to using this.
0:23:18 Nick Landry: But anyway, it’s up to using the site.
0:23:19 Samidip Basu: Not tremendously faster, yeah, so I think…
0:23:20 Ed Charbeneau: Not tremendously, no. They’ve actually benchmarked this. I think this is one of the things that drove us, the Apache Cordova type stuff is what drove the engineers that progressed/build NativeScript, is that we wanted the performance of native, and I think we’ve done a good job reaching a 99% effort on that.
0:23:42 Samidip Basu: And some of it like React Native, just for honesty, what Facebook does, this is the way web guys can actually build native apps, and this is as close as you will ever get to the medal. So yes, we can say two out of the three things are clearly checked. The third one, it’s a little integrated at contact.
0:24:00 Mike Branstein: It’s highly-optimized.
0:24:01 Samidip Basu: Yeah.
0:24:02 Ed Charbeneau: It’s very highly optimized. If you were to write something like a game that has to take full performance of that device, then you may see some sort of lag or something like that. It might not be a choice for a gaming situation. The main line-of-business application, your end-users aren’t gonna see any kind of performance difference.
0:24:21 Nick Landry: You could do some massive data crunching as well.
0:24:23 Ed Charbeneau: Yeah.
0:24:23 Nick Landry: If you are running an algorithm, and you’re running a lot of data, loops and everything, then that’s where compiled code… We all know how developers are. Developers are very opinionated. There’s a lot of purists out there. And for a lot of developers, if it’s not machine code for the CPU, it’s not native. But it could still be optimized and be adequate, I would say, good enough for the scenario you have. As you said, if it’s 99% or 90%, some developers might be okay with 80%. It depends only on what your needs are, what your users also are gonna demand.
0:27:15 Ed Charbeneau: So let’s talk a little bit more about the web developer side of this ’cause we talked about if you have a web forms-heavy or Windows-heavy development team, and you have a web-friendly development team, these are the choices. What if you already have web applications that are deployed, and they run fine in the browser, and the browser works on most mobile devices? So why can’t I just use my existing application and make it mobile?
0:27:45 Samidip Basu: So you’re essentially asking, “Is mobile web still a legit strategy?”
0:27:49 Ed Charbeneau: Absolutely.
0:27:50 Samidip Basu: Yes, and I mean yes and no. So I think it depends again on the app. If it’s a line-of-business app, and if you do not want to dive into the device’s specific features, and if you do not have any monetization needs, you do not need that app to be in the store… Like you’re a local restaurant, you’re a local church, or whatever, schools, yes, it’s a great option. There’s…
0:28:09 Ed Charbeneau: I don’t wanna interrupt you. I wouldn’t look down to restaurant apps and schools.
0:28:13 Samidip Basu: Oh, I’m sure, yes, yes.
0:28:14 Ed Charbeneau: Line-of-business applications as well, behind your firewall, don’t need to be in a store. And they can be rather large and fully featured.
0:28:23 Samidip Basu: Yeah, sure. And again, what we call mobile web is also evolving. So maybe we’ll get into progressive web apps, eventually, but there’s this whole idea that the web can be a really nice distribution model. You just don’t have the store presence. And again, the stores can be a mixed bag. I might almost argue iOS or Apple stores and Microsoft stores having these millions of apps. It makes it hard to find your apps. So if you are just line-of-business app, or even a B2C app, and you just want customers to find you with the link, than yeah, mobile web still works, knowing that you will have some limitations of how much you can do on the device.
0:29:02 Mike Branstein: My question always, to a business, might say, “We need an app,” is the first question is, “Why? What aren’t you achieving with the solution you have today? Is there a business demand, something driving you to go and invest that money to build the app?” Maybe it’s really marketability for you to say, “We have an app,” and just to have that. And maybe that is the reason. But you really have to have that discussion first to determine, “Is this going to get me something more than I have today? Is it intended to bring a new line of business to us?” Or, “What is that business driver, first?”
0:29:36 Nick Landry: The question also is, “Who are your users, and where are they located?” It’s very easy to just keep an American mindset where we live in our 4G/LTE networks and get access to everything, or we get Wi-Fi everywhere, but if your app needs to reach the users that are in other parts of the world, I could show you a map, for example, of cellular data coverage in India and Africa. And you’ll look at the map at first and say, “Well, it’s not too bad.” But then, the moment I turn off 3G and 4G, and only show you the areas where… Or rather, where you only have access to 3G and 4G, now, it becomes very, very small because most of these users are still on 2G data cellular, which is extremely slow.
0:30:23 Nick Landry: So the big difference between an app and mobile web is that the app, you download once. So maybe, you’ve downloaded it when you were over Wi-Fi. And there’s a lot of people that it’s actually what they do. They don’t have connectivity where they live, so they go to a village or a town where they get access to Wi-Fi. They download their apps, they get access to their news, they download their data, they do their banking. And then, they go back to their village where now, they’re in offline mode the entire time. If you have a pure web solution, it’s possible to do offline, but you’re gonna have to jump through a lot more hoops.
0:30:56 Nick Landry: And when they are connected, if you’re connected over 2G, you would prefer to just exchange a little bit of data rather than having to download all of the HTML markup that’s required to power a web app, including the images and the HTML code and everything, because everything is baked together. So that’s where an app is gonna be superior for those kinds of users. So ask yourself, “Where are the users? Where do they used it?” And then, it doesn’t have to be rural Africa; it could be rural America where there’s areas we only have one bar in a certain situation. So you have to ask yourself, “Where are the users located?”
0:31:31 Ed Charbeneau: Yeah, I was gonna add to your point and say, we are in Louisville, Kentucky recording this. And everybody in the room, if they’re not from Louisville, they’ve probably traveled from Ohio or Tennessee, maybe. You’re gonna drive through those areas. You’re coming through anywhere south of here, it’s gonna be very low bars, or you’re on the EDGE network. And there are lots and lots of farms and businesses throughout those areas, and there’s been a lot of IoT automation, mobile devices, and all kinds of computing devices being deployed into the farming industry. So you see a lot of stuff out there. And if you’re on a farm in the middle of somewhere in Ohio or Tennessee or even Kentucky, you’re probably not gonna have some kind of strong Internet connection.
0:32:23 Samidip Basu: You guys are describing a Sunday morning ritual where I walk a mile, and I get my water for the week, and I get some apps. [chuckle] Just to last me the whole week. So yes, that’s a legit consideration. But also, if you look at what the mobile web is morphing into, you guys see Google push progressive web apps big-time. So maybe we can just have a quick definition what that means. So the idea is every website can be a nicely fully-featured app on your phone. And it’s not easy to do. Not every website can do that, it’s an engineering effort. So the idea is you will download the app. It’s a spa, and you’ll download the app one time when you put it up for the first time. And then, it does a whole bunch of offline caching for you. It has service workers running in the background, and you can actually pin the app as an icon on your home screen, but you’re giving your prime real estate. And beyond that one, you can walk back to your village, and you’ll still have an app that works like an app that you get from a store.
0:33:25 Ed Charbeneau: And there was some word about Google surfacing these progressive web apps in their store as well. I don’t know if they’re gonna be located in the same positions as the actual native applications, but there will be a section or something that’s going to show these progressive web apps.
0:33:47 Samidip Basu: Yeah, so…
0:33:47 Ed Charbeneau: They’ll be installable from the store, even. Whether that allows you to pay for them or not is yet to be seen. I don’t know if that’s something that’s a capability.
0:33:56 Samidip Basu: Yeah, this is all new. We’re trying to figure this out. Yes? Yes sir?
0:33:58 Audience: That’s a… Bing announced that crawlers…, some things that’s relevant to.
0:34:10 Samidip Basu: Yeah, yeah, so do…
0:34:11 Ed Charbeneau: You wanna iterate it so we can…
0:34:13 Samidip Basu: Yeah, so the audience here made a comment that Microsoft announced that Bing crawlers would actually list out these progress web apps in-store, or in some other way as you search. So to answer your initial question, “Is mobile app, mobile web still a legit strategy?” Yes, very much so, and it depends on the type of accurate building, and the audience, and again, what type of codebase you wanna keep maintaining.
0:34:38 Nick Landry: Okay, we got a question. How will Project Rome affect all of this?
0:34:43 Samidip Basu: What is Project Rome, to get…
0:34:44 Nick Landry: What is Project Rome? So first of all, I’m not the authority of Project Rome, but at least, from what I can tell you: So first of all, to understand Project Rome you have to understand the Microsoft Graph. The Microsoft Graph is basically the… Like the sum total of everything that you know about a user. So of course, at first, it starts more as a corporate graph where you know about who the user is, who they work for, the contact info. But then, it could also be the documents that they’re storing in OneDrive Business or SharePoint, what email messages they’ve exchanged; so it’s basically all sorts of information. Everything is secured, of course, to the sense that you don’t have access to stuff that you’re not supposed to see. So Project Rome is now being able to have applications, any kind of application; it could be web-based, it could be mobile, they could be desktop-based that participate as part of the Microsoft Graph so that you could start an experience on one device, and finish it on another device very easily.
0:35:56 Nick Landry: So at the moment that you are launching an application on one, doing some work; then later, when you switch to another device, that app could, if it’s Rome-, Graph-enabled, it could then tell you like, “Hey, this is where you were over there. Do you wanna continue working where… ” Basically, on your work, on your document, or your email, or your process, or whatever you were doing with someone. So it’s about carrying people from device-to-device and preserving the experience, instead of forcing people to think in terms of form factors and device families, and having to finish everything to go into one place or another. It requires developer participation, of course. The developers will have to then use Project Rome to connect, basically, to the Microsoft Graph, and understand the experience. And the SDK gonna help you to create that experience for users.
0:36:48 Samidip Basu: And then, that’s the point Mike was making. And I think something like this is continuity of user experience. And it almost has to be cross-platform because throughout the day, I’m on Windows, I’m on my phone, I’m on my Xbox, and then, you want that experience to follow you around.
0:37:03 Nick Landry: Right. And Project Rome is not just about Windows.
0:37:05 Samidip Basu: Yup.
0:37:06 Nick Landry: It’s about if you’re on iOS, it’s about if you’re on Android, if you’re on the web, on anything.
0:37:11 Mike Branstein: As a part of my normal day, I’m constantly on three or four different devices, not necessarily my network domain joint computer, but I’m also on my Mac, on my Surface Book. I go over to my phone. I go into customer’s computers too, but I still have that same identity that I bring with me. And I think this concept of identity is important to the whole concept of the Graph and Rome, where I’ve got my corporate domain identity that I’m bringing with me. And it’s all about continuity for that experience with you.
0:37:41 Ed Charbeneau: Yeah, I think we didn’t quite cover all of the web stuff that I thought we should cover. So I’m gonna bring it back that way a little bit. And I’ll make a good segue here ’cause you guys were talking about using devices, using multiple devices throughout the day, using them in different scenarios. And when you’re using those different devices, sometimes, you might be using an app that’s native, and then, you might go to your desktop and sit down and use something that is a web-based application, but they’re both the same application, as a whole. So you have these companion apps. Office does this very well. Microsoft Office has very good online tools. You can go right in and edit a Word document or Excel document right in the web if you don’t have the capability to install that on your device. So with mobile-responsive web, it doesn’t mean that any one of these technologies is dead. Mobile web isn’t dead. Responsive web apps aren’t dead. PWAs, maybe part of the future. But you can have this ecosystem of companion apps, and the larger application may be a web app. But something like a expense reporting application, you may need the ability to use your camera and take the application with you. And take photos of your receipts, and have that uploading into the larger web application that you use at your desktop.
0:39:20 Nick Landry: I think towards that point, Ed, you’ll see all of the platforms are starting to move towards the availability of having. You have your web portal for the app, or a UWP app, for example, and then, using and sharing a lot of that code across over to the mobile side. And there’s different strategies and different ways that they’re doing that, but you wanna preserve that experience. And also, from a development side, I don’t wanna write an app for my mobile, and then, have to go worry about that desktop or web app that I’m gonna deploy that’s more fully-functioned to the web. I actually only have to do that maybe one-and-a-half times. It’s never gonna be equal one. I’m gonna do it once everywhere, necessarily, ’cause I’m gonna have a little bit different experience on both sides because of form factors. But you’ll see that all of the vendors are pushing towards that to make it easier for us to have a single way to do, and match across all the platforms.
0:40:13 Ed Charbeneau: Yeah, and I think it’s an important point to make while we’re all up here on a panel like this that it’s not a versus so much. We’re not trying to kill off each other. It’s not a battle. There’s a lot of cooperation between these different platforms. And sometimes, you need to build different strategies to cover all your bases. So let’s talk a little bit more about IoT devices and non-traditional mobile… Not the small screens. Let’s talk a little bit about IoT mixed reality, stuff like that.
0:40:50 Nick Landry: Actually, the first thing I would talk about is what I was just covering in a session before this. Who attended my Bot Framework session just before this one? Because our tagline at Microsoft, anyways, is that bots are basically the new apps. And the reason for using that term is that when you interact with software you’re using, either a computer, or a phone, a touchscreen, a mouse, some voice maybe, but it’s mostly touchscreen, mouse, and keyboard that you’re using. And yet, when you interact with other human beings, how do you do it? You talk to them. Maybe you chat with them using plain natural language, whichever language you speak. Maybe those chat channels can be various. It could be over Facebook, it could be over Skype, over WhatsApp, SMS messages. We send email to people. So it’s interesting that how we’re trying to make software smarter and smarter, but yet, our way of interacting with software is very different from the way that we interact with other humans.
0:41:56 Nick Landry: And the premise of bots is that by turning our software into these intelligent services, we can now chat with that software the same way that we chat with humans. And better yet, we can even have a three-way conversation between two humans and maybe a bot. And again, just like we’re not trying to say that one thing is gonna completely trump the other and get rid of everything else, bots are not gonna eliminate the need for apps, of course. But just like I can go into my Uber app and say, “I wanna call an Uber, enter my location,” and then, see a map where it’s coming from, and then, call the car. I could very easily also just pull up in the middle of a chat and say “@Uberbot, I want a car,” and connects the location services, knows where I am, and then, shows, “Well, we have this car X minute away. The fare would be about this much. Do you want the car?” “Yes.” Or, “Where are you going?” for example. So, “I wanna go there.” “Is this the address where you’re gonna go?” It could even show a map and a chat conversation. And then, “You wanna order the car?” You can either type yes or no, or bots could even show you, sometimes, buttons yes or no. It doesn’t have to be all text-based.
0:43:13 Nick Landry: So if you have someone maybe that they are a different device, or they don’t have the Uber app installed right now, they could easily just connect to a bot depending on channels. Or maybe they have someone who’s coming over, and I will say, “Let me call a car,” and then, they could immediately do it in chat while they’re chatting with the other person. And then, the other person will know what the ETA is for Uber before they have to show up so they can hop on. So it’s all these little scenarios that we’ll start integrating into our day-to-day lives with other human beings while still using software, and that’s where bots are pretty cool.
0:43:48 Samidip Basu: So I think to his point, if you look at IoT and HoloLens, and all of these other devices, is this type of development… We are still tied to native platforms. We are not talking cross-platform yet on these devices.
0:44:04 Nick Landry: Yes and no.
0:44:05 Samidip Basu: Yes and no? [chuckle]
0:44:06 Nick Landry: So yes and no. First of all, you have to understand IoT is Internet of Things. So IoT is typically gonna be machine-to-machine. The human comes into play whenever you want to know what’s going on with your IoT devices, the data that is coming in, what’s the status. But typically, a good IoT setup is gonna be autonomous, it can run on its own. It’s gonna have intelligence by analyzing sensors out there. And then, if something needs to be turned off, or activated, or deactivated depending on the status observed from the sensors, then it has all the intelligence to do so. So it’s called machine-to-machine, or pervasive computing, or embedded computing; there’s a lot of terms for it. So the key is that we’re talking about mobile development, and these devices are mobile devices, but they’re mobile devices that talk to each other. And can you cross-platform? Again, it depends on the platform you’re using. IoT, first of all… If you think mobile is diverse with platforms, IoT is the explosion of hardware from devices that have megabytes to gigabytes of memory, to devices that only have kilobytes of memory.
0:45:14 Nick Landry: When you’re in a kilobytes memory environment, you can’t start bringing in these extra tools that give you the platform adaptation layer so that you can re-use code from another platform, but it depends what you’re running. So for example, if we look at a very popular device in the IoT world like the Raspberry Pi, then natively, the Raspberry Pi will either run one or more flavors of Linux; we also run Windows 10 IoT core on it. And the programming model for Windows 10 IoT core is UWP, the same thing that you can use as part of a XAML project when you’re building C# with iOS and Android. So yeah, we can actually participate this way. But if I’m using Arduino, now, I’m just writing low-level C++ code. C++, by definition, is cross-platform, but the APIs you’re calling are gonna be very different. But maybe there’s a library that you wanna call from the application that would be shared. So that’s why it’s yes and no because a lot of these tools will have their own native platforms. But if you wanna share code with IoT, then yeah, it’s possible, you can share a C# code. Node is also very popular in IoT circles where usually, it might have a bunch of sensors. And you’re gonna have maybe a smarter brain running again on something like an Intel Edison or Raspberry Pi running a Node application, and instantly taking control of weaker microcontrollers. So I would say again C++, C#, and Node are the probably…
0:47:09 Ed Charbeneau: To just add somemore confusion to the mix, you also have… A lot of the things that you guys are mentioning are ultra modern ways of doing IoT. You also see ancient machinery out there that’s maybe 50 years old even. They have programmable logic controllers on them. And manufacturers of these things update them by just jamming a board in there that’s got wireless capabilities, and also, that’s an IoT device.
0:47:37 Mike Branstein: Well, what’s different? Yes, that’s been around forever. What we’re seeing now is this is more accessible to the average developer. Absolutely, yeah. And aside from that, I look at how are you gonna be building and deploying and keeping these devices up-to-date with security? Security, especially in IoT, is an incredible concern. “Do I really wanna connect a light bulb where that company is gonna go out of business, potentially in two or three years, to my home network, to my business network? I better make sure that I can update that platform, I can keep it walled off from all the other parts of my network.” These are real concerns, and as IoT begins to explode…
0:48:18 Ed Charbeneau: The tack vectors do as well.
0:48:20 Mike Branstein: Yeah.
0:48:22 Nick Landry: Things are the new apps. [chuckle] So lots of the new apps. There’s a lot of apps out there. [chuckle]
0:48:27 Ed Charbeneau: So we have the IoT machine-to-machine mobile. We also have where we’ve got our devices, and we throw them in a piece of cardboard and stick ’em on our face. Let’s talk a little bit about that experience.
0:48:42 Nick Landry: So yeah, VR, mixed reality. So again, this is where it’s all platform dependent. On the Google side of things, they’re very Android-centric. So again, you’re gonna be able to reuse any of the same tools for Android to create those experiences from native Java with Android Studio, to using Xamarin. Or of course, in the case of VR and mixed reality, since it’s… Usually, you’re dealing with a 3D environment. This where people are gonna start looking at 3D engines to actually do this. And that’s where Unity comes into play. And Unity is probably the world’s most popular game… I would say AAA-class game engine, and certainly, one of the most powerful as well. And what’s very interesting is that Unity is cross-platform. It supports virtually everything from WebGL to PC like Linux desktop, Mac, iOS, Android, Windows Store, Tizen, and PS4, PS Vita, Xbox, Nintendo, and everything. And the way they do this is via Mono. And because the Mono framework, again, lets you run C# code everywhere. But yeah, you use a few techniques also called IL to C++ where they convert the IL code directly to C++ so they can natively compile for the platform, but it’s all routed originally in Mono. So in a way, the way I explained it is Unity is to games what Xamarin is to apps because it’s all based on the Mono framework, or both of them are.
0:50:15 Samidip Basu: I find it interesting that these alternatives to.NET are almost as old as.NET itself. Mono has been around since 2003/2002.
0:50:22 Nick Landry: Yeah.
0:50:23 Samidip Basu: So that’s when Nigrel and those guys started the process of taking.NET compiled code onto these other platforms, and now, you see all of these things light up because of Mono.
0:50:32 Nick Landry: .NET is awesome! And F# is the best! [chuckle] So I agree.
0:50:36 Ed Charbeneau: No bias there at all.
0:50:37 Samidip Basu: No bias.
0:50:38 Nick Landry: I’ve tried the other stuff and… [chuckle]
0:50:40 Ed Charbeneau: Real quick, you said AR and MR…
0:50:45 Nick Landry: VR and MR.
0:50:46 Ed Charbeneau: Oh sorry, VR and MR. For those listening who may have not heard these terms before, let’s kinda… Yeah.
0:50:52 Nick Landry: Okay, so you’ve got the three main umbrella terms. You have virtual reality, I think is the one that most people are familiar with. Virtual reality is all about being immersive. You are tricking your senses into believing that you are in a world that doesn’t exist. So it requires a headset where you completely mask your view, and you could see a stereoscopic display that will basically create a 3D world for you. You will typically wear headphones that completely isolate the sounds around you, so it’s very immersive.
0:51:19 Samidip Basu: So the one that makes you puke.
0:51:20 Nick Landry: That’s VR. So in all fairness, because you’re tricking your senses, especially when it comes to a spatial orientation in your inner ear and equilibrium, if the motions of your body are not matching your field of vision, so that means if you move your head, and there’s the slightest delay in between the motion of your head and the display being updated, then this is where you can induce motion sickness. And it’s said that the barrier, to at least be below the threshold of motion sickness, is eight milliseconds. So you have to be able to track the user and move around. And even in eight milliseconds, it can be considered a threshold. So imagine being able to track a user in space, and then, being able to transform that into a new position and render the environment in eight milliseconds; it’s pretty high. So the moment you go to 10, 20, 50 milliseconds, then people will get really sick.
0:52:18 Samidip Basu: Yeah, and that’s why you have the Oculus Rift rendering 90 FPS per eye, and you need these huge gigs to actually run the thing.
0:52:25 Nick Landry: Exactly because it takes a lot of power to do so, it needs to be tethered. And yeah, so I would say Oculus Rift and HTC VIVE, basal SteamVR, probably still the most popular platform, same thing with Google Cardboard, and Daydream as well. And then of course now, on the… Well, I’ll get back to that one. On the other side of the spectrum, we have augmented reality, which is purely you could see the world around you, but we are simply adding an overlay of information on top of the world. So think the Iron Man suit, where you can see data. Think jet fighters, which is the original heads up display, where they could see a projection on the glass in front of them to see additional data. Pokemon Go where you’re just lifting your phone and looking at the camera to find Pokemons. Or those AR mapping/directional apps where you can see there’s a McDonald’s there on your camera, or there’s a Starbucks over there at this distance and everything, simply using your compass and your accelerometer and your GPS.
0:53:25 Nick Landry: And then, we have, in the middle, we have mixed reality. Mixed reality is where you’re blending the two. You’re blending the real world, you’re blending the virtual world, but instead of just putting a layer of information, you’re truly creating a 3D hologram. And that hologram can be in front of a physical object, or it could be behind a physical object because you have spatial perception that comes into play where it knows that there’s a table here, that there’s a floor, that there’s a wall. And then, if I put a hologram behind the table, even though it’s always oriented on top because you’ve got the display on your face, it knows to occlude the hologram based on the spatial mesh that is detected by this table, and all of this has to be done in real time. So anybody attend my HoloLens talk yesterday? Few people, yes. I demoed all of this, this is all real. It’s been shipping for a year. And we call it mixed reality. By the way, this is not a term that we coined; it’s a term we adopted because it goes so far beyond what augmented reality does because it is truly blending the real world and this virtual world together. And in the case of HoloLens or Windows mixed reality, really, we actually are using UWP for this. So again, you can share your code with iOS and with Android, as well.
0:54:43 Ed Charbeneau: So we’re getting close to our time. Let’s give a quick shoutout to some of the tools that we talked about today. We talked about Xamarin. You can find that at xamarin.com.
0:54:54 Samidip Basu: Is that what it’s called? Is that what it’s called?
0:54:55 Nick Landry: It’s baked in Visual Studio now. So when you install Visual Studio 2017, you can choose your workloads. Cross-platform mobile development with C# is part of that. So by installing this, it will bring in all the dependencies.
0:55:06 Samidip Basu: And I’m on a Mac, and you get Visual Studio for Mac now, which is beautiful, Visual Studio for Mac. Yes, the same. Almost the same, exact, that experience. And the tools of the ecosystem have gotten pretty rich. There are plugins, there are competent stores, and there are sharp UI controls. So again, don’t try to reinvent the wheel. If your app needs professional look and feel, look at some of the UI controls that you can get out-of-the-box. We make some. So that’s Xamarin, that’s your staying in the IDE of your choice, on the platform of your choice, and you’re writing a single codebase.
0:55:34 Ed Charbeneau: And then, we have NativeScripts, nativescript.org.
0:55:35 Samidip Basu: Yup. So I’ll let Mike speak to that. What are some of the tools?
0:55:39 Mike Branstein: Some of the tools I would look at across both Mac and Windows are… I use Visual Studio Code. VS Code is an awesome editor. It is an absolutely awesome editor.
0:55:51 Nick Landry: Who uses VS Code here? Just curious.
0:55:53 Ed Charbeneau: A lot of hands.
0:55:53 Nick Landry: Yeah. By the way, VS Code, free, cross-platform, and open source.
0:56:00 Mike Branstein: So I’m using that across both my Mac and on the Windows side, and using Node.js underneath with NativeScript to run the development for that, with the NativeScript libraries.
0:56:10 Ed Charbeneau: You can go to nativescript.org, click “Getting started.”
0:56:25 Ed Charbeneau: And then, we talked about Unity. Go to unity.com.
0:56:29 Nick Landry: Well, unity.com is the main Unity site. It’s technically unity3d.com, and then, from there, you can get the tools. There’s a whole learning section. And it’s a tool that’s easy to get started with, but it can take a lifetime to master because it is a professional-grade game engine that is used even by AAA studios.
0:56:47 Ed Charbeneau: And what about UWP?
0:56:49 Nick Landry: UWP, just go to…
0:56:50 Samidip Basu: Dev.windows.com, then…
0:56:52 Nick Landry: Yup, dev.windows.com, and then, from there, you’ll see all the different areas that are supported from IoT, and mixed reality, and mobile, and traditional Windows desktop. So it’s all there.
0:57:04 Ed Charbeneau: And some of our teams have worked very closely together on that with Telerik UI from the VP, which is free and open source. Go ahead, Sam.
0:57:12 Samidip Basu: Yeah, I was just gonna bring up the open source aspect of this. A lot of the tools of our trade are now open source, which is fantastic, it’s a very nice collaborative environment. Xamarin open sourced all of their SDKs in the entire framework last year. That’s opened up xamarin.com. So if you need to build from source, and if you want to contribute back, they’re accepting upwards of 700 code requests in a year. And everybody’s trying to chime in. On the UWP side of things, there are lots of tools. There’s the UWP Community Toolkit, which is a community collaboration with Microsoft. We have a UI for UWP suite, which is a UI Suite of about two dozen controls that’s all open source.
0:57:52 Ed Charbeneau: Windows Template Studio.
0:57:53 Samidip Basu: Yep, it’s all, again, integrated with your UI. So again, most of these tools, as I’m in NativeScript, is entirely open source. And all the plugins and everything is open source. So again, as you are working with these things, know that you have choice of your IDE, of the tools that you wanna use. And much of the tooling and UI is also open sourced. And contribute back ’cause that’s how we all give back our little two cents into the ecosystem.
0:58:18 Ed Charbeneau: I’m gonna go ahead and wrap things up. I wanna thank everybody on the panel for being here today. Thank you guys for joining us. Hopefully, we provided a great discussion for everyone. Again, we’ll go down the list here. We have Sam Basu.
0:58:31 Samidip Basu: Yes. So again, parting thoughts are look around. You have lots of choices. When you wanna do mobile, again, to Mike’s point, ask why you’re doing mobile, and what is it that you’re trying to do. What’s the kind of codebase you wanna maintain? What’s the kind of code sharing you want to achieve? And then, look around the tools. The tools and ecosystem have come a long, long way, so choose something that you’re really fond of, and you want to maintain, and it suits your needs.
0:58:52 Ed Charbeneau: Nick, closing thoughts?
0:58:54 Nick Landry: Always learn, guys. That’s the key, always learn. You’re at the right place to do this, of course, by coming to our conference, but definitely keep learning. If you’re a web developer, go into mobile. If you’re already into mobile, go into VR and MR. Learn bots, learn IoT. Seriously, go always learn. Developers are kings now. If you don’t like what you do, it’s on you.
0:59:16 Ed Charbeneau: Nick? Mike, sorry.
0:59:19 Mike Branstein: That’s okay.
0:59:20 Ed Charbeneau: Nick is Mike’s brother’s name, so I can be at fault there.
0:59:24 Mike Branstein: Yeah, I would say stick with what you know while you’re learning. So as you’re going into mobile, still explore, but use what you know. If you do web stuff, go a web route. If you do csharp.net, Xamarin’s an awesome choice, go Xamarin.
0:59:42 Samidip Basu: Yeah, and then, thank you guys so much for joining us.
0:59:44 Ed Charbeneau: Thank you! Thank you everybody.
0:59:46 Samidip Basu: Thank you!