058 iPhreaks Show - Windows Azure with Chris Risner

Download MP3

The panelists discuss Windows Azure with Chris Risner.


PETE: It’s a conspiracy. [Would you like to join the conversation with the iPhreaks and their guests? Want to support the show? We have a forum that allows you to join the conversation and support the show at the same time. You can sign up at iphreaksshow.com/forum] CHUCK: Hey everybody and welcome to episode 58 of the iPhreaks Show. This week on our panel we have Andrew Madsen. ANDREW: Hi, from Salt Lake City. CHUCK: Pete Hodgson. PETE: Hi, from Berkeley. CHUCK: I'm Charles Max Wood from DevChat.tv, and this week we have a special guest, and that’s Chris Risner. CHRIS: Risner, that’s Risner. CHUCK: I should have asked beforehand. PETE: [Inaudible] for a while, Chuck. CHUCK: I know! CHRIS: It’s a 50/50 chance whether or not someone’s going to get it right. PETE: [Chuckles] CHUCK: Well, I self-corrected one way or the other, right? CHRIS: Exactly. CHUCK: Do you wanna introduce yourself really quickly? CHRIS: Yeah, so my name is Chris Risner. I am a Senior Technical Evangelist at Microsoft, and here at Microsoft, I focus on Microsoft Azure, which is Microsoft’s cloud platform. More specifically, I'm kinda – why I'm here today, I really focus more so on mobile connectivity, including iOS into Microsoft as your platform. CHUCK: Alright. I have a very important clarification to make – it’s Ázure not Azúre, right? CHRIS: Yeah, so no azur, or azzur, or however it would be. It’s Ázure, yes, so Ázure. CHUCK: There you go, official word. I guess we can end the show now, that’s [crosstalk]. CHRIS: To be honest, if I can just get people to say Ázure, I think I'd have accomplished my goals. [Chuckling] CHUCK: There you go. PETE: I wanna start off with a little bit of what's called a definition type-thing. Ázure – Azúre – Ázure –. CHUCK: It’s a shade of blue. PETE: Okay, thank you. Alright, that’s Azure. CHRIS: Perfect. PETE: I think it’s one of those Microsoft things where it’s a word for lots of different things. It’s like a word for a bunch of things. What is there in the context of mobile? Because I always thought of Azure as being like Microsoft’s answer to Amazon EC2, but I also am not super educated on Azure. CHRIS: Yeah, absolutely. That’s one of the biggest and most common questions, is you know, “It’s a cloud platform – what does that really mean?” A lot of people are familiar with EC2 or AWS and stuff like that. If you sat back and kinda look at it from a big picture, Azure is a very comprehensive cloud platform. If you wanted to host something like a Windows server or Linux virtual machine, you can do that in the IaaS part. There's also Platform as a Service, which is if you're doing IaaS, you're still responsible for the operating system and keeping it updated, or when you step up to PaaS or Platform as a Service, your responsibility is a little bit less; all you have to do is pull your code. Certainly, you can use either of these options as a backend if you're building a mobile application, but that’s a lot of work, especially if you're not familiar with building those things. There's other features of Azure that really tie more closely in with mobile. One of the really big ones is something called Azure Mobile Services, and that’s basically a Backend as a Service. So if you're building an iOS app and you need someplace where you're going to do your data storage, and you wanted to do push notifications and user authentications, stuff like that, this is something that you can spin up and drop an iOS framework, your SDK and your application, and then really easily connect into Azure to do those things that most mobile applications do need. Our backend [inaudible] store their data in a way that would trigger push notifications – a really powerful capability that you get super easily. In addition to those high-level IaaS and PaaS and Backend as a Service – yeah, there's a lot. There's a ton of other services that are part of Azure. For example, if you need to do media streaming, there's something in Azure called Media Services, and that has an iOS SDK that lets you stream media down into your iOS apps. There's always [inaudible] were doing DRM, and doing [inaudible] and stuff like that, so tons of different services that you can also take advantage of whether you're building a mobile app or you're building something really quite comprehensive. PETE: I think there's a lot of – sometimes people get mixed up with –. You were talking about, like you said, IaaS, which is Infrastructures as a Service; PaaS, or P-a-a-S – Platform as a Service; and then Backend as a Service – MBaaS, if you're a Mobile Backend as a Service. The shorthand I use for remembering those, and you can correct me – I'm off here because I think it’s a little bit open to interpretation – Infrastructure as a Service is like the super low-level, basically EC2 is a good example of that; and then Platform as a Service builds on top of that, and that would be something like Heroku as an example; and then Backend as a Service builds on top of that, or is even a higher level than that, and that’s something like Azure Mobile Services or StackMob, or Parse - all those other kinds of types. Is that roughly correct? CHRIS: Yeah, that’s definitely correct except for one case and that’s StackMob. Now, they're pretty much dead, so –. PETE: Oh yeah, because they got acquired by PayPal, right? CHRIS: Yup, exactly, but other than that, you're spot on with your comparisons and analogies. So, yes. CHUCK: I always thought of PaaS, or Platform as a Service, as opposed to Heroku something more along the lines of Linode or things like that – is that incorrect? Is it Infrastructure as a Service? PETE: Yeah. CHUCK: Or did the definitions really even matter? CHRIS: What we’re seeing now, especially in a cloud, and there's more and more talk about this, is kinda like a blending of what PaaS and IaaS is. Specifically though, a traditional IaaS is something where you are getting that BM and you're doing that low-level work on the operating system, whereas with PaaS – whether it’s on Amazon or on Google Apps and something like that – that low-levels abstracted and all you have to do is produce some unit of code, whether it’s web application or a worker role type thing, and then ‘hey, here’s somewhere where you can deploy it, and it’s going to be super scalable.’ It takes a little bit of that low-level stuff away and gives you this unit that all you have to do is make a piece of code that'll run there and then you can scale it out really easily. CHUCK: Okay. Where does Azure fit in? CHRIS: Azure is basically just the name for all of these capabilities as part of Microsoft’s platform, so they're all part of Azure, if you will. PETE: So they're really like, from the iOS developer’s point of view, I guess the stuff that is most interesting for an iOS developer is the Mobile Services stuff, which is the BaaS. [Chuckles] CHRIS: Yeah, so if you were –. PETE: Oh, man. I thought I had a really good mnemonic of –. It’s like Parse and PaaS – they sound similar, but then I realize that Parse isn’t a PaaS, it’s a BaaS, or it’s an MBaaS. That’s how I [inaudible]. CHUCK: Yeah, you said MBaaS and I was thinking, “Mmm, fish.” Anyway. PETE: MBaaS. CHRIS: [Chuckles] Specifically for iOS developers, there's really three front-facing features that you'd look at as far as what's in Azure that would be really easy to use and that’s Mobile Services, which I mentioned is the Backend as a Service. There's also something called Notification Hubs, which is, it doesn’t matter whether you're storing data in Azure or not. You can use notification hubs basically as a push notification broker, and both Mobile Services and notification hubs work cross-platform, so if your company isn’t just building iOS apps, there are SDK’s for other mobile app platforms as well. The last one, we’ve got Media Services that I've mentioned before. There's other services that you can take advantage of, but those are the three that are super easy to get into and start using from an iOS developer perspective. ANDREW: I have a little experience with Parse, and it kind of sounds like a similar service to your Backend as a Service. I'm a little curious to know some of the differences because I think a lot of the people I know have used Parse; I have a little weariness now that it’s been bought by Facebook. CHRIS: Yeah, that’s something that I heard a lot of when it was bought by Facebook, but –. They're both Backend as a Service; they kinda have similar offerings. Some of the differences are the technology involved – Parse is built on top of Amazon, the AWS stuff. One example of a difference is that Parse’s data backend is actually in NoSQL data storage. Typically with NoSQL storages, you don’t have the [inaudible] ability to query that data because it’s not relational. Mobile services, by default, is based off SQL database, which is super-highly query-able, but you can have some issues with doing data scalability depending on how much data you have. Obviously there are solutions for both these problems, whether you're on Parse and you need to find a better way to query your data, or you're on Mobile Services and you need a way to do SQL. One of the biggest differences though is what the capabilities are of the Azure platform as a whole, if you ever need to go beyond the backend service. If today you're using something like Parse and you realize, “Hey, I really need a virtual machine that does x” or “I need to figure out how to integrate with y.” If it’s not something that’s specifically offered by Parse, well, you kinda need to figure out how do you even do that, how do you connect into the Parse system to get your data and things like that; whereas when you are using something like Azure Mobile Services, if you need to do these other things, you basically have the full power of the Azure platform right there, so if you need to use a VM, you can create a VM. That database that is storing your data for your mobile service? It’s a full database inside Microsoft Azure, so if you want to connect a website to that same database, or you have a backend job running in a VM – anything that you might wanna do, it’s all there, and you can basically do it without having to go find some other solution somewhere else. CHUCK: Okay, cool. ANDREW: That makes a lot of sense. PETE: That’s a pretty good differentiator, actually. I hadn’t thought of that, but that’s actually very helpful if you do need to do more than just mobile, or if you do wanna plug into that, get down into the nitty-gritty. CHRIS: Right. One other thing is that the whole idea of the cloud is that it should be hugely scaleable. If today, you're just building your app, you don’t need a lot of horsepower behind that, but then if your app gets featured in the App Store, you need to make sure your backend can tolerate the load. Azure Mobile Services, pretty much everything in Azure, as you know, super, super easy to scale – easy to point [inaudible] you drag a slider from the left to the right to add more scale to your services most of the time. But certainly, at some point, some people – you may wanna go beyond, or have different capabilities that you can't get out of your mobile service out of the box, and that’s where that situation comes at hand where it’s like, ‘well, I can start mixing my mobile service and something I wanna deploy, whether it’s the PaaS offering or in Azure websites.’ You have a lot of options when and if you wanna go beyond what you get out of the box. PETE: Can I run and kind of, maybe not arbitrary code but is there the option for me to put some kind of code in back [inaudible]? I think Parse lets you do that with JavaScript. CHRIS: Yeah, so basically when you create a new mobile service in Azure, you choose whether you want your mobile service to run in JavaScript or in a node.js service like JavaScript, or in .NET. The .NET stuff’s new and it’s in preview, but basically what happens –. [inaudible] on the JavaScript side, when you create a table in your mobile service, or you create an endpoint, you can basically create a service like JavaScript, so a node.js script that will run. In the case of table operations, like let’s say you're trying to insert data into your table; this script will run and you can do data validation there, you could pull third party services, you could send emails – basically anything that you might wanna do there, and either you can save the database and do stuff after that if you need to do more server-side logic, or you can [inaudible] the database and then respond. In the case if the data doesn’t pass validation, you can just reply directly to the app and say, ‘sorry, I couldn’t save this; here’s why.’ You get that ability to do that server-side logic and it’s actually pretty cool. When you go to the Azure portal and you create a mobile service, you can actually edit these scripts right in the portal, which is super convenient for development time when you're just trying to get things working, and then later on, or even right away, you have the option where you can basically clone or maybe get a repository of all those scripts. You can pull down all your scripts locally and edit them locally and then push them back up. You can use mocking frameworks to test them locally, which is kinda cool, so really cool options there. If you are more familiar with .NET, which I'm going to probably make a bit of an assumption – say, if you're an iOS developer, you may not be big in .NET, but you can also do .NET for your backend if you want. If you are familiar with doing C#, for example, you could do the same sort of backend coding and do it in C# if you want to. PETE: S#, if you wanna be a hipster. CHRIS: Yes, absolutely. [Chuckling] PETE: Can I run arbitrary code? Can reference npm modules and do whatever I want? What are the restrictions? Presumably I can’t mine Bitcoin. CHRIS: Yes, so you could probably – legitimately, you could probably try to install something that would do it, but I'm sure the operation center would probably shut you down pretty quick. But once you clone the – like to get a repository of your scripts locally, you can basically install npm modules into that repository or you can edit your packages file, and then when you push it up to your mobile service, your mobile service will basically pull down those npm modules, so there's a ton of functionality you can do there. You are going to have some restrictions as far as what you can do. There's a certain sandbox aspect to the mobile service; I can’t think of a specific example of what you could do but if you certainly tried to, for example, access some location that you're not allowed to on the file system of what's surrounding your mobile service. You get stopped from doing that, but there's tons of stuff you can do there. PETE: Gotcha. So in Heroku I'd imagine where you can’t access the file system – what about if I wanted to cache something in some temp directory? Am I guaranteed that it’s always going to be on the same instance with each request, or is it going to be somewhere arbitrary? CHRIS: You wouldn’t necessarily want to cache something on the local file system. I'm pretty certain that you do have access to a temp directory, but the thing is with Mobile Services is that, because it’s – if you look at the cloud, the whole levels of abstraction, you look at IaaS or virtual machines at the very bottom where you have very strict control over everything, and something like Backend as a Service at the top where you don’t have strictly control, but you're given a lot of stuff out of the box. Well the thing is with Mobile Services is that on the backend we’re going to kinda control how many virtual machines are actually running your mobile service for you to make sure that we’re able to meet the needs of your mobile service scale level. You can’t always be sure that you'd be hitting the same VM, but there are other services that’s part of Azure. There's a couple of different caching options, including one based off Redis. If you wanted to do just strictly caching what you probably wanna do is from your scripting layer, those node.js scripts, store something in that cache layer and then pull it out from that same cache layer. It’s really easy to do that because there is a node.js library or SDK for a lot of each features in Azure, including some of the cache stuff, and so all you'd do is you'd pull in this Azure node module in your scripts and you can start talking to the cache stuff really easily. The same is true if you wanna start talking to the noSQL-based storage app part of Azure so that you can kinda mix between using the built-in, really easy to use SQL, and then the noSQL stuff as well. So, tons of capabilities, but it kinda depends on what you wanna do. CHUCK: So on the Backend as a Service or the – what were you calling it? Mobile-something? CHRIS: I think you're referring to it as Mobile Backend as a Service, but Mobile Services is the product name. CHUCK: Yeah, Mobile Services. Is there an iOS library or Cocoa Pod or something that you'd pull into your app that gives you that interface in your program? CHRIS: Yeah. Basically what you do is if this is the first time that you're going to check out Mobile Services, what I would say is go to the portal and create your mobile service. The first page you go to is this quickstart page, and it says, ‘hey, what platform are you building on?’ Here you’d say iOS and then you get two options – you can say, “I want to connect an existing app” or “I wanna create a new app.” All of the platforms that we have SDKs for, they come with a [inaudible] to-do list application, so if this is your first time playing around with it, you can download this template and see how things are working. Essentially, if you go to the other option where it’s ‘I've already gotten that’, it’s going to say, ‘okay, download this iOS framework and drop it into your iOS application in the framework’s holder,’ and then you can start basically using that as your SDK from inside your iOS app. It’s all very objective-C friendly, so it doesn’t look like some weird, not-objective-C Cocoa library. It’s specific to the platform. PETE: Is there a Cocoa Pod or do I need to do the draggy droppy thing? CHRIS: I don’t think there's a Cocoa Pod yet; I don’t think we have at least one, but let me – there may –. CHUCK: I like that term ‘draggy droppy.’ CHRIS: Yeah. PETE: I think it’s tricky when it’s – from what I understand – or I think I might be wrong, but I always kinda assumed that Cocoa Pods are hard to do when it’s closed source because Cocoa Pods wants to just be source code that you can pile in rather than static libraries. CHRIS: Well that’s actually a great thing to bring up, because actually the SDKs for our Mobile Services are completely open source, so –. PETE: Oh, awesome. CHRIS: One of the issues that I had a while back, I was working on an application and we hadn’t updated the iOS SDK that you get when you pull down the framework to be 64-bit compatible, so I literally just went over and pulled down the SDK myself and recompatibled it with 64-bit and I was ready to go. Obviously that’s been fixed by now, but all of the client-side stuff, it’s completely open source. Now you see an issue, you want a poll request – it’s all there in GitHub. PETE: This is awesome. I'm looking in the website, and even the Azure website is on GitHub and people have been contributing patches to the documentation for their website. CHRIS: Yup, we’ve been trying to move a lot of stuff towards this very open model where if you see an issue with documentation, you can proactively make a fix or let us know and we’ll obviously fix it. But yeah, same thing with the SDKs – even with the quickstart applications themselves, they're all in GitHub, so it’s all really easy to see how things are working and where they're at. PETE: That is great. Microsoft has changed. CHRIS: Yeah, well we’re trying to work for everyone and be friendly to everyone. CHUCK: It’s kinda interesting – and I'm going to take this tangent a little bit – that Microsoft has kind of been the –. And I think the open source community has done this a little bit, where they made him kinda the poster child of being anti-open source and things like that. I don’t know how true it was in the past because I really wasn’t involved enough or had to fight any of the battles, I guess, that any of them had fight, but these days I've talked a few people over in Microsoft like Scott Hanselman and a handful of other Microsoft engineers and it really does feel like they are moving much more toward embracing the community and saying, “Hey, we’ve got products that will make your life easier and we’ve got ideas that we are opening up to the community at large” and they don’t have to have that tight control. They do want some things, like the platforms, Windows and whatever, but they don’t have that tight control over some of these solutions where they really are solutions and not platforms or programs. CHRIS: Yeah, and I think that’s pretty much the common perception now. I'm relatively new to Microsoft, at least working here. I've been doing either Microsoft-related developments or – no, I mean I did that for a good five years before I went over and started doing iOS and Android development, so I've been familiar with Microsoft. It’s really cool to see and understand that Microsoft knows that if we really want to continue to thrive, we really need to be a.) open, b.) honest, but c.) friendly, depend on everyone and not just sit behind our closed walls and push out something once every few years and assume that people are going to be happy with that. We've had to become a much more agile company. I think that’s what we are seeing now, we see – especially in the Azure side – weekly, if not bi-weekly, releases of new features and capabilities and everything working cross-platform. It’s been a really awesome thing to be a part of that. You talked about the open source stuff and you mentioned talking with Scott Hanselman – it’s people like him – Scott got through, he really pushed so hard over the past few years about getting stuff. The .NET framework, for example, just open source so that people can understand how it works and it’s not just this thing that they use and don’t really understand what's going on. PETE: That’s very cool. It’s been really cool to see that happen, actually, because I do think, historically, Microsoft were not very into open source, but it is really cool to see what the goo in people like that have been doing to change things. I remember the first time I thought that things were really becoming different was when Microsoft started contributing to jQuery, or started including jQuery or something like that. It was kind of a watershed moment. CHRIS: I could be pulling just out of thin air, but I could’ve sworn I saw at one point that we were one of the biggest contributors to jQuery. That could be totally wrong, but you're absolutely right. It’s stuff like that where we’re really trying to make things better. CHUCK: Well I think the other thing is that companies like Google and Microsoft have really figured out that the interconnectivity of the web and these sorts of technologies, and the programmer communities as a whole, are things that they really need to be involved in in order to be viable companies in the future. But at the same time, I'm not knocking them for being profit-seeking or thinking forward that way – we all benefit from that. It’s really, really cool to see it in the community and see all of this stuff really come out and open up. They benefit from it, and we benefit from it, and that’s the way that it should be. CHRIS: Yeah, absolutely. It’s funny, I actually ran into something yesterday where something that I was using that was formerly free – it was no longer free. It made me realize that that’s absolutely true. At the end of the day, Google, Microsoft, Apple – they're all big companies and it’s part of their job, part of their responsibility is to make money and that may not be the number one goal all the time, but that’s part of the job. At the end of the day, that stuff, it still drives innovation and [inaudible] new stuff coming out. If the companies aren’t making money, they can’t afford to continue to innovate and make new stuff. CHUCK: Yup. PETE: Okay, so I wanna get back to talking about dorky stuff – or I guess we’re still talking about dorky stuff. [Laughter] You mentioned, a couple of times you touched on relational versus noSQL and I think maybe Azure is a little bit unusual in that it has the option of doing SQL. Most of these high level BaaS – Backend as a Service things – normally are using things like Mongo or something like that. Do I have an option if I don’t wanna think about SQL? Let’s say I'm someone who cut their teeth on HTML and CSS; I know some JavaScript and now I've learned some iOS but I've never written a SQL statement in my life or I've never even used an ORM before. What are my options? CHRIS: Okay. First of all, let’s say you're building an iOS app. You're never really technically writing a SQL query; you are using the objective-C library that has stuff like ‘insert this object’, ‘pull this data down’ and you'll do stuff like if you wanted to do a where, a read and you say where, you'd create an NSPredicate object and you pass that into your mobile service. Behind the scenes, that get changed into an OData filter, and on the mobile service side, even more so behind the scenes that gets changed into a SQL query, so you don’t ever actually have to write your own SQL. Now, you have the option to actually execute on that scripting layer your own custom SQL or short procedures if you want to. If you want to move away from using SQL, because that’s an option too, from the node to the JavaScript back inside, what you do is there's that Azure module I mentioned earlier that you can use to access other areas of Azure. You could just pull that in and then use that to talk to table storage. To be completely honest with you, table storage is kind of the primary, noSQL storage system inside Azure; [inaudible] it’s been around and I've worked on the most. There's also [inaudible] Mongo, but it’s a little bit easier to talk to table storage. One of the recommendations I make is that if you're going to be building something really big on top of Mobile Services and you have data that you don’t need that relational capability, use the Azure module and dump it into noSQL because noSQL is going to cost less than SQL at the end of the day – that’s a truth no matter what cloud platform you're working with. If you don’t need the queriability that you get with SQL, I would certainly recommend looking at putting stuff into table storage. It’s not very complicated; it’s not as turnkey, as easy as that – just from the SDK, just calling in certain [inaudible] just goes right to the database if you want it to, but it’s not as terrible an amount of work either. PETE: Okay, and presumably if I'm using this noSQL table storage then I don’t have to think so hard about things like schema migrations or figuring out what my entity relationship model is and all that fun stuff? CHRIS: Exactly, right. At the end of the day, Mobile Services doesn’t act as an ORM. You can use the scripting layer to sort of make it act like an ORM, but it doesn’t do it out of the box, so it’s not going to do ORM-type features like if you put a foreign key in your database, it’s not going to make sure that if you pull this record, it pulls all the associating records with it; that’s something that you're going to have to manually do, so in that regard, Mobile Services doesn’t just do that, so to speak. PETE: You mentioned NSPredicate, is there any kind of magical thing that makes the Azure storage look like core data, or any kind of syncing functionality or something like that? CHRIS: Great question. Today there's no out of the box plugins with core data. We are actually previewing right now offline capability, so essentially at our big BUILD conference out in April we released a preview of the .NET library’s offline feature, and just recently we released a preview of the iOS offline. That actually communicates by default with just a SQL like data store on your iOS app. Now, the nice thing about that is it’s extensible so if you wanted to change it over to core data you could, it’s just not done right now out of the box. That’s something that we’re looking at for the future; it’s just we kinda wanted to get into this space or place where it'll work across all the platforms that Mobile Services works with in a similar way before we look at some of the more advanced stuff, like plugging into core data on iOS where we couldn’t do that same sort of thing on any other platform. CHUCK: I'm looking at the Azure website and it says iOS, Android, Windows, HTML5; it also does the broadcast Push stuff, but it has social integration? CHRIS: Yeah. One of the cool things that you get with Mobile Services is you can add authentication to your apps really easily with Facebook, Twitter, Google and Microsoft. Essentially what you do is –. I've created my mobile service and I'm in the mobile service, in that portal; there's an identity tab, and you go in there, and that’s where you enter – it’s usually two pieces of information like an app ID or app secret or something like that – and whatever one of those providers you wanna use, you can go in and create an app and their developer portals so you get that ID and that secret. When you put that into your mobile service, from your client application you can then say, ‘hey, I want the user to authenticate and I want them to log in with Facebook or Twitter.’ In the case of iOS where there are native libraries to log in with Facebook and Twitter, you can also use those and then talk to your mobile service. Basically what that gives you is, from the mobile service side, you could automatically get some basic information about the user from the providers – what is their username, what is their full name, what's the link to their profile or their photo on Facebook, etc. – but then you can also, relatively easily, you can also – provided you’ve requested the right permissions – you can then talk back to those providers and say, ‘hey, I want to tweet on this user’s behalf’ or ‘I want to get their friends list.’ That’ll get into what do the provider’s APIs expose and what permissions have you requested, but it’s pretty easy to connect those pieces. As far as adding the authentication goes, it’s super easy, because it’s all built into the SDK. You call essentially one line of code and it’ll pop open a login window for you. And then your  users are authenticated and that gives you options to actually secure the data that’s in your Mobile Services well, so once you have an authenticated user, you can actually start saving data so it’s tied to that user and make sure that that’s the only user that can see that data. There's also security and authentication, or an authorization rather, that’s also built into Mobile Services, so it’s not just a dumb data storage, so to speak. PETE: One of the things that comes to mind when I think of .NET, Microsoft and iOS is Xamarin. Is there any particular, special, magic integration between Xamarin and Azure, or is it just the same as using the regular iOS app? CHRIS: It’s a little bit different because of how Xamarin works. One of the things I mentioned before was when you go to the quickstart page and you can see all of the platforms, and you can get the quickstart project or you can get it going how to connect it. Xamarin’s included in there, and Xamarin and iOS, and Xamarin and Android. Xamarin’s in a lot of work lately, so it’s a lot easier to basically build an application for iOS and for Android and for our Windows Store that uses the same Mobile Services library and the same code base to really talk to your mobile service. The only are that’s still platform-specific is that popping open, that login – that login view – and that’s just because of how each platform deals with the web views a little bit differently. There's full connectivity into the Xamarin stuff. One of the things that I mentioned earlier was how, in the case of iOS, the Mobile Services SDK, it looks like an objective-C library; it’s using the proper syntax and the proper naming and stuff like that. Well, the same thing’s true if you look at Xamarin, [inaudible]. They're using the proper syntax, so if you're used to developing in .NET for Xamarin, you're going to feel comfortable with the library. ANDREW: That’s a really big thing, I think. I really don’t like it when I get a third-party SDK in any language and it doesn’t really follow the conventions of the platform, and there's some really bad examples in objective-C. CHRIS: Yeah, absolutely. One of the things we did when we were building all of the client SDKs for Mobile Services but the iOS one [inaudible] is we actually had a bunch of iOS developers in a group that would review the stuff with us and just tell us when what we were doing was, “That totally doesn’t makes sense. I would never write that as an objective-C developer” to make sure it didn’t feel like this just unnatural, unholy thing when they started using it. PETE: Worst example I can think of for that that I've ever used is – the original Ruby SDK for Amazon web services was awful. It was like the horrible – it was like badly written Java in Ruby. It was [chuckling] ugh, man. It’s a lot better now. CHUCK: One other thing I saw on the website there was single sign-on. CHRIS: Yeah, I don’t think that's really working on the iOS side of things right now; we’re still working on the authentication side there. I think that’s more so a feature right now of what we can do with the Windows side just because of what's capable with Windows authentication. The closest thing to single sign-on right now in the iOS side is you can use the built-in Facebook and Twitter authentication stuff to authorize your users that way, but it’s really the closest thing when it comes to the iOS side of things. CHUCK: Do you actually help manage that single sign-on stuff with Facebook or Twitter or whatever? CHRIS: Yeah, so basically what would happen is – it’s kinda similar to what I explained before. You'd go into Facebook or Twitter and you create the app in their developer center so that you can then connect from your iOS app, and then once your user authenticates using their SDK – you're basically, you're never going to your Mobile Services to do authentication in the case – then in the code [inaudible], you can send the token and the secret you get from Facebook or Twitter to your mobile service. Behind the scenes, your mobile service will then authenticate those to make sure they're legit and then basically give you a user ID and a token that corresponds to your mobile service, so that then your request to your mobile service will still show up as authenticated, even though you never really authenticated with your mobile service. CHUCK: That makes sense. PETE: If I didn’t wanna use Facebook or Twitter for authentication I just wanna say – I want just the bog standard, regular, sign up where the, give me the username and password. CHRIS: It’s not turnkey right now to do that kind of custom authentication, but I've done that a bunch and I've got some guides on the internet that basically –. I've actually got an iOS app [inaudible] a sample that you could basically take that code, change the connections from the point to your mobile service, and it will basically handle the custom authentication for you. It’s a little more work, but using those server-side scripts, then how you can do that server-side logic, it’s pretty easy to accomplish especially because we already have the code out there so all you really to do is just drop it into your mobile service and you're doing custom auth. CHUCK: I'm kinda curious what is the feature that is the most requested that you don’t currently have? CHRIS: I absolutely said offline up until we released the preview a little while ago, because that was generally the number one – what does it do for synchronizing, what does it do for offline, etc. – but that’s something that we’re –. That was in previous; we’re tackling that right now. I'd have to think what it would be beyond that. I guess one of the things that a lot of people wanna see is a little bit more of enhanced user functionality. You look at some of the other Backend as a Service providers and there's a stronger concept of user – for Azure Mobile Services, once your user’s authenticated, you can create this user concept, but it’s not core to all the functionality of Mobile Services, which is good and bad. Sometimes if you don’t need the same user concept, having it there, which you're forced to in some of the other providers, it seems weird. But when you do want it, I think having it built in is really, really handy, so I think that’s probably one of the bigger requests. That, and I guess, actually, just out of the box connectivity into noSQL data storage for stuff you wanna store, and noSQL versus SQL. Like I said before, you can do it without too much trouble from the server-side scripting language, like start connecting to noSQL instead of SQL; it’s just not as easy as the SQL stuff as to [inaudible]. PETE: I know I'm comparing apples with oranges, but one of the things that’s nice about Heroku for someone who’s getting started and doesn’t wanna think about backend-y stuff is the kind of marketplace – I don’t know what the name for it actually is – where I can go and say, ‘sure, I wanna send email; yes, I would like to get logging; yes, I would like whatever else is there’ kind of an equivalent in Azure where third party providers have done the integration for you so you don’t have to. CHRIS: Absolutely. There's something called the Azure Store, and essentially it’s very similar; there's a lot of these different things you can basically purchase. For example, you mentioned email. Well, SendGrid is a pretty well-known email – or a company that will basically handle email for you. What you can do is, say, you’ve got your mobile service, and then you go into the Azure Store and you sign up for SendGrid. And then from your mobile service, you can, using a – SendGrid has their own module; you can use it in your server- side scripts – you can use that SendGrid module to send emails using SendGrid. One of the cool things about that is a lot of the different things in the Azure Store has a free tier. For example, with SendGrid, there's a free tier that lets you send 20,000 emails/month from your mobile service or from Azure for free, so if you're developing, you're playing around, you don’t have to worry about paying anything. There's other ones – there's connectivity with Pusher, which just does web socket style communication, so real-time message down to your iOS app that’s not using push notifications, which is pretty cool. There's other ones that –. We mentioned that there's only four auth providers right now [inaudible] the four social auth providers I mentioned, then you can also do Azure Active Directory, and then the custom auth. There's a company called Off Zero that lets you plugin to a bunch of other auth providers and you can use them for your mobile service if you want to. There's a number of other ones as well, so tons of different stuff you can do there, and it really can enhance some of the capabilities that you can do from your mobile service backend to make it – it’s just crazy how many things you could do. PETE: They have multiple MongoDB options if I wanted to use MongoDB. CHRIS: Yeah, I believe that is correct. PETE: One of them starts at $400 a month. [Chuckles] CHUCK: That’s a lot of Mongo. PETE: That is a lot of Mongo, right? So this is the official MongoDB, the company that used to be whatever they were called before they rebranded themselves. CHUCK: TenGen. PETE: Thank you. So it’s a highly-available, free node MongoDB replica set running MongoDB enterprise, so I guess that's why it costs $400/month. That is a –. CHUCK: Enterprise. [Chuckling] PETE: Whoa, crazy. There's also a cheaper one from Mongo labs, so. CHRIS: Yeah, then the cool thing about Azure – I kinda [inaudible] to it earlier – is you’ve got stuff like this where it’s ‘hey, here’s this value out of the box, all you have to do is say ‘yeah, I want that’ and it’s going to be turned on and managed for you.’ If you want something else, you could host your own MongoDB inside of Azure relatively easily. Then, of course, if you want it clustered and stuff like that, it becomes more work on your part, so it’s that, “Is my time worth the money?” or “Do I have the know-how to do it?” or “Do I just wanna pay someone else to do it for me?” PETE: Yeah, absolutely. It’s kinda funny because my mentality is I really wanna get my hands dirty and play with all this stuff and stand up my own and all that fun stuff, and I do that because it’s enjoyable. But I have friends who aren’t that technical and who are trying to run a startup, and they wanna spend every single second of their development energy building their product, not figuring out how to configure a replica set for MongoDB or whatever. So for them, $400/month, or $50/month or whatever, is a very, very good deal because it means that they can focus on actually building value rather than configuring a server. I guess that’s the – all of this abstract Backend as a Server stuff is – that’s the reason you would do it, I suppose. CHRIS: Yeah. That’s the beauty of the cloud in different levels is if you have the know-how, the time and the desire, you can go and do everything on VMs and basically build your own world, but if you have the money and you want it get done quick, you can buy another box. PETE: It is a really compelling differentiator for me, for Azure, is that option of you have an incremental transition path from really abstract Backend as a Service down all the way to the meta without having to figure out – like you’ve always on –. Let’s say I'm writing the next Instagram, and I start off on Parse or whatever else, once I hit a certain amount of crazy scale, I'm going to wanna drop to something like Heroku maybe. I don’t wanna manage my own service, but I want to drop to Heroku, and that transition, I think, would be pretty painful. And then if I wanna drop down again into just straight EC2 or even managing my own servers, then that’s not a trivial thing to do when you're kind of in a closed system, so it’s an interesting advantage. CHRIS: Yeah. The really cool thing about that kind of edge there is that it’s not like you have to go, ‘alright, I need to go from system A to system B and I have to do it in one full swoop because I can’t talk between the two.’ If you're using Mobile Services today, for example, and you wanna start moving down over to PaaS, because a.) at the end of the day PaaS will end up cheaper, but there's a lot more work involved because you have to write all your own services and all of that architecture. You can move it over piecemeal, like just start moving over some of the functionality, and then once you're finally off of the old stuff – you don’t have to do it all in one go; you can do it slowly or as fast as you want. CHUCK: Alright, well, it’s five minutes till I know some folks who want to go get to the events around WWDC or have other things going on. Let’s go ahead and get to the picks. Pete, do you wanna start us with picks? PETE: Sure. My first pick is – I don’t know if anyone’s already picked this – is the 3.0 release of AppCode. This is from the guys who make IntelliJ and ReSharper. They make an objective-C ID called AppCode; I think I picked it in a very early episode, but they just, they really reasonably recently did a 3.0 release, which is a big upgrade. The biggest thing that I'm excited about is actually the interface designer is in the ID now, so you don’t need to run Xcode to do your UI stuff. The problem I always have with AppCode was I would end up back in Xcode to do the UI and then I'd forget to go back to AppCode and I'd be like, 10 minutes later be like, “Ah! I'm back in Xcode again.” It looks really cool; it also has an interesting little thing – it has a Reveal plugin so that you can use it with Reveal, which is this cool app from some smart guys in Australia that lets you inspect the running state of your UI, your native iOS UI, so it’s very cool. My next pick is not topical because this podcast won’t be out right now. Today is the second day of WWDC and the big announcement from my mind was Swift. This new programming language from Apple, apparently it’s a bit like Dylan, if you know what Dylan is, which I don’t. I know what it is but I haven't – I know of the name but I don’t know what the hell that language is. Anyway, it looks like a cool language. The thing that I'm most excited about is it’s got lots of functional aspects, and I've been really getting into functional programming. I think iOS developers are going to start to learn how to do functional stuff better. A good source for that is my third pick, which is a Coursera course on functional reactive programming. This is kind of like – we talked about this in a previous episode with Reactive Cocoa, but this Coursera course is really good at talking about the fundamentals of functional programming and different ways that data can flow through your application, so that’s my third pick. My last pick is a beer because I like picking beer. I'm going to pick the #4 from Upright Brewing in Portland. It’s one of the best beers I've ever had, I think, so far, in my life. It’s a Wheat Saison Table Beer, so it’s pretty low alcohol, probably 4%, 5% or something like that, but very, very tasty, very clean, super yummy. If you can get hold of Upright 4, then you should do so. And that’s my picks. CHUCK: Very nice. Andrew, what are your picks? ANDREW: I'm going to counter Pete’s picks with just one. My pick is the developer forums on Apple’s website. Maybe these have been picked before, but I haven't actually visited them frequently recently, but right now, they’ve got a board for Swift, and it’s already sort of becoming the best place, I think, to discuss the language. Apple engineers are participating there, so there's a lot of information about the details of Swift and problems people are running into and things that there are even some stuff that they're planning for the future of the language. But of course, developer forums have all kinds of content around iOS and Mac development, and I think the coolest thing about them is that you're quite likely to get replies from Apple engineers. So, that’s my pick. CHUCK: Awesome. Alright, I've just got one pick and that is – well, I've got two picks, I’ll go back. So one pick, I've picked it on the show before, I'm pretty sure, but it’s something that really just made a huge difference for me. I was talking to my Mastermind group yesterday, and I was telling them that I was having trouble focusing and so we discussed Pomodoros and stuff. I went back and started using Focus@Will again. Focus@Will is focusatwill.com; I actually have a paid account so that I can use it as much as I want. I'm not a neuroscientist so I can’t really – they have an explanation of why the music helps you focus while you're trying to get work done, and basically it’s the tempos and the types of sounds and stuff. Anyway, it’s pretty awesome, so, Focus@Will. The other one – and I'm going to admit to being kind of a bald baby, I guess – but I haven't read or listened to books very often that made me cry and this one did. It’s called Strong Fathers, Strong Daughters by Dr. Meg Meeker. Basically what it’s about is about being a good dad to your daughters. There's a lot there; there's a lot of stuff in there where she cites statistics and studies that are kind of frightening when you think about, that your kids are growing up in a world that has its issues, but at the same time then she talks to you about how to counter some of those influences on your kids – just the ways to handle some of those things and how to have a good relationship with your daughter and some of the things that she needs from you. So if you're a dad and you have little girls, I can’t recommend that book highly enough. Chris, what are your picks? CHRIS: Alright, I’ll have to go back and just kinda [inaudible] some stuff I meant to mention earlier, but I’ll just add these as picks. First of all, you can check out the Azure homepage as well as sign up for a free trial. Mobile Services has a free tier but if you try the free trial you get access to everything in Azure. You just go to Azure.com, A-Z-U-R-E.com, and get there. If you go to azure.microsoft.com/iOS, that’s the iOS landing page. If you're building iOS apps, here’s what Azure can do for you. It’s also got a really cool video that the Vesper guys – Brent Simmons and Gruber – did, talking about how they use Mobile Services inside a Vesper. And then the last one, I think somebody mentioned, picked a beer earlier, so I’ll pick a beer too. I really love New Holland Brewing Company, which is from Michigan, their beer called Dragon’s Milk. It was the first Bourbon Barrel beer I ever had, and it’s delicious. PETE: Nice pick. I think we’ve had that beer picked before. It must be –. CHRIS: [Crosstalk] Very, very good beer. PETE: Yeah. CHUCK: Yeah, but how do you milk a dragon? CHRIS: Well, it’s pretty complicated, I'm sure. CHUCK: [Chuckles] Alright, well thanks for coming, Chris. Really appreciate [crosstalk]. CHRIS: Yeah, thanks for having me guys, I appreciate it. CHUCK: And I think there's really some exciting stuff that lowers the impedance to getting started with backend iOS stuff, so it’s exciting. CHRIS: Great! Yeah, and thanks again for having me guys, I really appreciate the time to talk with you. ANDREW: Thanks, Chris. CHUCK: Alright, well go check out Microsoft Azure, and we will catch you all next week! [Hosting and bandwidth provided by the Blue Box Group. Check them out at BlueBox.net.] [Bandwidth for this segment is provided by CacheFly, the world’s fastest CDN. Deliver your content fast with CacheFly. Visit cachefly.com to learn more]

Sign up for the Newsletter

Join our newsletter and get updates in your inbox. We won’t spam you and we respect your privacy.