Show Notes
01:42 - James Montemagno Introduction
02:42 - Printer Software Development
04:50 - Moving to Mobile Development
06:19 - Xamarin
08:19 - Cross-Platform Development
11:37 - Companies and Libraries (Sharing Libraries)
13:09 - Plugins for Xamarin
- Simplifying the Process (Barrier of Entry)
15:08 - Techniques for Sharing UI Elements
21:00 - Developing On the Watch with Xamarin
23:52 - Android Wear vs Watch (Wearables)
- Synchronization
- “Should You?”
- Automation
- Committing to and Investing in a Platform
Picks
Smokette Elite Model SM025 Electric Smoker (Jaim)
Monodraw (Andrew)
The LightBlue Bean (Andrew)
The Three Fives Kit: A Discrete 555 Timer (Andrew)
Refactoring to Patterns by by Joshua Kerievsky (Alondo)
Ray Wenderlich: iOS 8 by Tutorials (Alondo)
Ready Player One by Ernest Cline (James)
Strava (James)
Tavour (James)
graze (James)
Monodraw (Andrew)
The LightBlue Bean (Andrew)
The Three Fives Kit: A Discrete 555 Timer (Andrew)
Refactoring to Patterns by by Joshua Kerievsky (Alondo)
Ray Wenderlich: iOS 8 by Tutorials (Alondo)
Ready Player One by Ernest Cline (James)
Strava (James)
Tavour (James)
graze (James)
Transcript
[This episode is sponsored by Hired.com. Every week on Hired, they run an auction where over a thousand tech companies in San Francisco, New York and L.A. bid on iOS developers, providing them with salary and equity upfront. The average iOS developer gets an average of 5-15 introductory offers and an average salary offer of $130,000/year. Users can either accept an offer and go right into interviewing with a company or deny them without any continuing obligations. It’s totally free for users, and when you're hired they also give you a $2,000 signing bonus as a thank you for using them. But if you use the iPhreaks link, you’ll get a $4,000 bonus onset. Finally, if you're not looking for a job but know someone who is, you can refer them on Hired and get a $1,337 bonus as thanks after the job. Go sign up at Hired.com/iphreaks]
[This episode of iPhreaks is brought to you, in part, by Postcards. Postcards is the simplest way to allow you to feedback from right inside your application. With just a simple gesture, anyone testing your app can send you a Postcard containing a screenshot of the app and some notes. It’s a great way to handle bug reports and feature requests from your clients. It takes 5 minutes to setup, and the first five postcards each month are free. Get started today by visiting www.postcard.es]
ALONDO:
Hey everybody, welcome to episode 96 of the iPhreaks Show. This week our panel is Andrew Madsen.
ANDREW:
Hello, from Salt Lake City.
ALONDO:
Jaim Zuber.
JAIM:
That’s Jaim, no S, this might get confusing later.
ALONDO:
I’m Alondo Brewington. Today we have a special guest, James Montemagno. We’re going to talk about Xamarin and wearables.
So James, would you tell us a little bit about yourself?
JAMES:
Sure. First, thanks so much for having me on. It’s awesome, I love the podcast and it’s great to be part of it. So a little bit about myself; I’ve actually been a long time .Net C# developer. I started early root to development, writing all C++. I was writing command line like Zork type text adventures in High School and that got me into video games and programming in general. Then once I found out that you could use programming and make games in the Xbox360, I was like “This is going to be crazy.” Of course that’s what I wanted to do.
So I went off to college in Arizona – I grew up in Cleveland. I went to Arizona for school and I decided I want to be a video game programmer. I did that and released some game on the Xbox360; I was like “This is not fun at all. This is not what I want to do.” I found C# as my main programming language and I said, “What I’m going to do is I’m going to take this love for video games and I’m going to go write printer software for four years.”
02:
42]. I told developers, you have to at least have a good solid four years of printer software development under your belt to really know how awesome software development can possibly be.
JAIM:
Are you doing drivers, are you doing embedded stuff?
JAMES:
Just wait it gets better. it was enterprise level printer workflow management software.
JAIM:
Wow.
JAMES:
Yeah, it was a legacy .NET 1.1 application that we had the joy and honor and privilege to upgrade to .NET 2.0 and then 3.5.
ANDREW:
Doesn’t get any better than that.
JAIM:
Okay, we’re changing the show topic [chuckles].
JAMES:
It was great it was all WinForms we got to mix in a little .cf and a little .pf at some point. But once you start doing that, just everything fall apart really.
JAIM:
I‘m guessing there was COM involved?
JAMES:
You have no idea, COM everywhere. Marshalling things for days, it was pure bliss.
JAIM:
That was my world in 2008, 2009, printer software in COM.
JAMES:
We had a core teams that worked on the printer driver wares. The whole idea was is, it was for a reprographer shop like blueprint printing, these huge make-up printers that cost tons of money. The software was expensive but our driver team integrated and then did all the rasterisation. We were just like that hub interface. It was really cool. We deployed the servers, like a sequel server [inaudible 04:04] 2005 and just deployed little boxes. Yes, printer software. I loved it, lots of COM everywhere.
JAIM:
I just curled up in a big fetal position, sorry.
JAMES:
[Chuckles] What was crazy is at some point I decided that maybe printer software isn’t for me. I did love it but what happened was I went to the final PDC Conference up in Redmond; it was before Bill and all the bigger developer conferences were taking off. That was when Windows phone was launching, Android was launching. That was the first time in my mind that I said, “I have C# skill base and I have this super powerful machine now in my hand, and I can actually write great interactive experiences with it.”
So I decided to leave the luxurious printer industry, and I moved to Seattle, Washington to become a mobile developer for a small start-up. I did that for two years. It was interesting, I walked into the office the first day, my boss says, “James, we’re going to CES to demo some new products and we’re going to need an iOS, Android, and a windows phone and a windows store app in two months, go.” [Chuckles]
I didn’t know objective-C, I didn’t know Java. I had my first Android smartphone, it was the Motorola droid; it was a flip phone. There was a lot of keyboard at that time. I didn’t know any of the tools; I was just making Windows phone apps. So that’s when I found Xamarin for cross platform mobile development. What’s great is that, I was able to leverage my C# skills and knowledge that I had acquired from writing awesome printer software. At least the architecture of it, like databases and things like that.
I actually learned a lot when you’re in these huge enterprises learning architecture, which is very important even nowadays with mobile. Then take that over to iOS and Android. So I delivered those apps in the first two months for CES and it was pretty awesome and crazy. It’s a lot of long nights, but that’s software development really.
After two years of doing mobile apps, working for the company, I actually got hired at Xamarin as a developer of Angeles. So all that means is I still get to write mobile apps but I get to talk about it a lot more. I’m out in Dallas right now. I’m going to be talking at some conferences in user groups and I travel all over the place. I have the honor of being on this side of the mic talking to all of you guys on iPhreaks. So I’m super excited.
JAIM:
Very cool. The traditional Apple committee, there’s not a whole lot of knowledge of Xamarin. We know it exists, but when you get up into the .NET world they really, “Oh, we don’t have to learn a
new language.” So it’s been interesting seeing the different communities how they approach the problem; it’s very cool.
JAMES:
What I liked about it when I got it started, I knew the .NET and the libraries and I knew C# so I knew how to write code. I just had to relearn some of the new APIs for Android and iOS. I’m an Android guy, I do love iOS I love a lot of cool application that I’m making for it but I just enjoy to be able to like, “Now I’m going to take an iOS user interface crafted beautifully for iOS, craft it as good as I can for Android,” because it’s not quite the most beautiful platform, we’re getting better. Then just leverage all that code.
I think what’s interesting is I always tell developers at least Java developers, “How many of you are Java developers?” and a bunch of people raise their hands in the audience. I’m like, “Well, you’re almost there, but you just need to capitalize on a few things and you’re good to go. It’s not that different.”
JAIM:
Yeah, definitely. Java versus C#, pretty close I’ve called them C#, Java++ in the past. They just have an improvement on what Java had done.
JAMES:
That’s the idea there, that was the base of where C# came from was the Java world. The difference
is that Microsoft had really advanced the language overtime, where Java just hit a point. It hasn’t really evolved as much. So when you look at Android code that’s in Java and then if you’re writing in Xamarin, you get to take the niceties of the C# language with advance and async await support. A bunch of really nice specific things around the C# language and of course that just applies over to iOS and Mac development as well. Don’t forget the Mac development we still do that which is a huge market that is still untapped to this day.
ANDREW:
Me, I’m a Mac developer. We’ve actually occasionally toyed with trying to use Xamarin for some of our stuff but haven’t done it.
JAIM:
That’s the allure of the cross platform development and there are a number of different approaches; can we share our code, or we have a bunch of C# developers that already know how to manage their C strings. Is that what it is in C#? I don’t even remember anymore.
JAMES:
Just a string
JAIM:
Just a string? Okay.
JAMES:
Just a string, keep it simple.
JAIM:
Once you’ve learned how to do string management, do you want to do it, learn it again for Java and iOS? Not particularly, if you want to learn network stuff. Do you want to learn the Apple way and Android way? Not particularly, so the cross platform approach has a lot of appeal and there’s also some drop axe with that. You expect to get a lot of code reuse but how much do you get for most apps?
JAMES:
It really depends, there’s multiple ways of developing with Xamarin. For years, it’s just been the Xamarin native traditional approach which is building out that separate user interface, which is my favorite approach because then I get to take advantage of all the cool new widgets. Everything that’s on the support library is on Android, everything that comes out on iOS 8.
Take advantage of all the great UI bits, so you’re rewriting all of those. Now if you’re structuring things on an MVC or an MVVM type of way, like just structuring out, really decoupling you user interface form your code behind, all of your network calls, your database. On average a lot of people see 50% or 60% code reuse and at the highest level – like my first app that I shipped was 70% code reuse which was really amazing. I didn’t even know what I was doing when I was starting. I was just slapping code together; I only had two months.
As you get better over time structuring your code and building libraries. That’s what I see is you start building these cross platform libraries. So on your first application, you wrote a bunch of code because you’re like, “I need a pop-up; some dialogues but I’d really love to do that for my shared code.” So you start writing interfaces and extracting things away. Then you turn it into these new git packages which are like CocoaPods or Maven. It’s like different libraries that you pulled down from a repository. Once you start creating these, then it’s actually less code that you have to write. So it’s obscured in some ways.
We have this idea of plug-ins for Xamarin so when you go to nuget.org, you’ll see all these plug-ins for Xamarin if you type that in. I’ve wrote a bunch such as Connectivity. So what am I connected to right now? Do I have internet access? Subscribe to change notifications? Or there’s one for battery, one for launching Maps, just little nice things that you need to do on each platform. But you don’t need to write the code or text to speed try all the platform supported, so why couldn’t I just access that form one API? So once you start using these libraries and building them up, it’s actually less code that you have to write, and then you’re just really focused in the UI bits.
You can have no shared code if you wanted to. I’m putting all my code on my iOS application and that’s it. But if you start structuring things in a way of sharing it, I think on average you’re going to see 50 or 60% code reuse. Then with Xamarin Forum I think Frank touched on more a little bit of that. Actually sharing the UI layer as well, which you can get all the way up to 90, 100% really. But you’re not having access to all the UI elements because it’s a shared abstraction layer on top of the UI.
JAIM:
Okay, that’s an interesting approach; building a bunch of libraries that you can share with Nuget. Do you find that copies have their own specific libraries or something that is general enough where you can share them?
JAMES:
I think it depends; the community around Xamarin’s huge. We have over 900,000 developers that downloaded, tried out Xamarin, tens of thousands of paying customers. It’s interesting because our community is fantastic, I love it. If you go to our forums, they’re extremely active, twitter all the time and GitHub, as well just sharing code and snippets of code. So I think the community and myself at Xamarin, we’re supplying as many of these plug-ins if you will, as you can.
We have our component store as well, which are individual libraries so if you need something like Estimote Beacon you can go on there and get it or ask for mobile services. But in companies, what is nice is you can have your own private Nuget feed. So you can write your own internally and that of course comes down to the company which is, does your company allow you to take your code that you wrote and pull it outside? Or can you do the reverse, can you even use Nuget to pull it in? But which is nice about the plug-ins is that they’re all open source and almost all of them are under MIT license.
The codes are all there, so you can see what we’re doing, that’s the nice thing about it. So if you want to see how Text-to-speech works and how I implemented it in my plug-in, all the code is there on GitHub, so you can just pull that down. See how I’m actually integrating into the iOS APIs with AV speech synthesizers and then how I’m doing that on Android and on Windows as well. I think that’s what’s interesting is you get to pick how much you want to share, how much you want to write with these libraries.
JAIM:
What are some of the other elements that are being abstracted in these libraries, like storage?
JAMES:
There’s plug-ins, and I’ll put a link in the show notes as well, we have a tied GitHub read me page of where you can find all of them. It’s anything from push notifications, we have a file storage, a plug-in called PCL Storage which allows you to access natively all the files. There's PCL Crypto which is cryptography so you can do all your encryption, but it does it natively on iOS and Android or use the .Net implementation on the Windows side of things. There’s device orientation, like the simple things like turning on and off a lamp, database is obviously with SeQuaLite, or almost anything you can think of.
If you think of it, we have a way on our GitHub page to actually just submit an issue and then someone from the community can pick that up and run with it as well. It’s anything you can think of; that’s the idea, coming in from two points of view. There’s a .NET developer, maybe not even a developer, just trying to look in how can we simplify the process, that barrier of entry. Because when you start reading tons of documentation or downloading samples, you start wanting to bill out your application faster and faster.
So that’s where the plug-ins come in to really help speed up that development cycle. But all the code is there, you can actually read it, you can actually dive through and see what’s actually going on which I think is very important. Which I really like how Xamarin works because I can still write an objective-C iOS application if I needed to, I could still write a Java Android application. I wrote many Java Android application and it’s not a world I want to live in. But I can because I know how the platforms work because over a time while I’m taking this great library of .NET ensuring code there, I am then still learning how Android, how iOS works, how Mac works, if I’m going to dive into that world. So my skill set now is not just on a specific platform but it’s on all platforms if I choose to be.
JAIM:
So one aspect that you talked about earlier I found interesting because the approach always [inaudible 15:14] by the Xamarin was you share, networking your business logic and the UI you do completely separate. I’m interested in some of the techniques that you find are useful to share the UI code, not Xamarin forms but maybe navigation or showing dialogues. What do those libraries look like?
JAMES:
Normally for sharing UI elements, there are quite a few things you can do. There’s quite a few of
MVVM frameworks built in that can sit on top of Xamarin. So frameworks like MVVMLight and MVVMCross, they bring in a navigation paradigm so the idea is like linking a page like this is a page or a screen in my application to this code file and they bind together so the idea is; okay this label is bound to this string so it knows how to update them automatically.
From when I’m navigating to and from, I say, “I want to navigate to this page and this handles it for me automatically. There are like lager frameworks that are built in to sit on top of Xamarin cross platform. So that actually allows you to remove quite a bit of code or manual work that you have to do for the user interface. Then you have the things that sit on top of the user interface such as the alerts and the dialogues and pickers and date, time.
Normally what I do for that, is I just have an interface that says, “What I would like to do at some point is pop-up a message box that has a title and a message or allows me to enter text, or an action sheet pulls up from the bottom that list my options or there’s a delete button.”
So I say, “This is what I would like to do to all of the platforms”. Then actually go into each platform and I’ll write that code. Now this is going to be one of those libraries then that I shared. I only have to write that code once ever is the idea. So once I write that code to simplify my life of handling dialogue boxes or navigation or these frameworks, I only have to write that code once then I can share that on Nuget or do whatever I want with it.
17:
33].
You can do a conditional compilation, so you can say when I’m in iOS I’m going to use this color, then when I’m in Android or I’m in Mac or I’m going to do this specific thing. You can put that in your shared code as well. We have a great blog post on blog.xamarin.com from James and another one of our evangelists – he’s an iOS Mac guy – about code sharing strategies. Just to share more code between your iOS and your Mac application. And then of course you can do things like, I had this color which is Mrs.Mycolor. So what this color really means in each platform is the Android specific color or the iOS specific color. That’s how you can think about it is, how can I make it generic?
ALONDO:
Are there any edge, cases that you’ve experienced with that approach that says “Okay, 80% of the time of 90% of the time this works perfectly but you need to watch out in these situations.”
JAMES:
That’s a great question. I don’t think I’ve ever ran into – personally, this is personal for me – in the four years or so that I’ve been doing Xamarin development, I’ve never ran into a situation where I
just couldn’t do something, I was like, “Oh man, I need to do this and it’s not available. I can’t do it because we have a 100% API coverage.” Now one thing obviously is that there are tons of objective-C and Java developers, so a lot of times those open source projects are just the available. So for instance like material design on Android, there’s just a lot of libraries that either you have to write yourself or you have to create a binding for it or you have to create a C# wrap around on top of the Java.
So it’s not actually built in the framework, sometimes it’s just the open source community where there’s a lot more of them. There’s a lot more Java developers writing Android applications. They’re getting up to speed faster, so it’s just up to the community to port those over or rewrite them from scratch. So sometimes I just have to write a little bit more code but it’s also good to see how things work.
I would say that’s the one edge case. I haven’t really ran into anything that was like, “Oh man, I really wish I could do this,” because if there’s something I want to do and maybe it doesn’t exist in the current .NET profile that I’m writing, well it probably exists in the iOS or Android SDK. If I need to tap into Bluetooth or I need to tap into NFC or iBeacon support, I’m going to write that specifically against core location or core Bluetooth and those APIs. It’s not like .NET implementation of that that abstracts it. You could, of course, but you could always tie down into it.
20:
13] Google’s getting a lot better at releasing their SDKs and new versions faster so we’re able to do previews ahead of time.
20:
28] I think with cross platform development is iOS started with an iOS and an Android application and maybe I do it on Windows, but now I have to pull an Apple Watch application, or an Android Wear application. Do I have to worry about the new Microsoft band? Is there an SDK for that? How many code bases am I managing and how much of my mind can I keep together?
20:
49] of a cross platform mobile developer is now instead of just supporting one platform, you got to support all of these platforms and try to figure that out which is why architecting good code is important.
JAIM:
Tell us a little bit about the Xamarin approach for developing the watch. Can you do cross platform things with that as well?
JAMES:
So Apple Watch is extremely interesting. We have preview support for Apple Watch right now. Obviously iOS 8.2 and the new version of Xcode are still in developer preview from Apple themselves. So the interesting thing is, we’ve actually gone ahead and done the Apple Watch support a little bit different than how we’ve done other support in the past, which is we’re having this developer preview. We’re on our third preview right now. The first one didn’t have storyboard support; we actually had to go into Xcode interface builder and build them. Now in version two and three, we have that in Xamarin’s studio and visual studio – the actual storyboard.
So the parts were very much the same. We just had some nice template. With WatchKit and the Apple Watch, you’re always going to have an iOS app. I should say not even just an iOS app, you have to have an iPhone app, not an iPad app according to Apple. Then you’re going to create that from scratch, or if you already have that you just say file new project or WatchKit app. What that’ll do is it’ll create your watch app and your extension.
So we’ve really tried to streamline the process down to very similar to what you’re doing at Xcode which is you have multiple projects inside of there. One is your watch app, one is your extension app, and one is your main iOS application. Then at that point, everything else is available to you. You guys had a great earlier episode on just how WatchKit works in general. All that still applies to Xamarin development. You’re watch app itself is what’s living on the watch. It gets installed that’s all at runtime, there’s no changes; your image, assets bundled into that watch app. Then your extension app is actually where things are running.
So the extension sits side by side your iOS app. Then the extension’s executing code if it wants to, if it can, and it’s updating the UI element. So in that aspect your extension’s a little bit – it’s smart but not smart. Because if it needs to do longer operations or it needs to really tie into things, it needs to actually go top to the main application and then do some share file storage between the two. As well as even have a database and you want to sync it up between all three as well; you would tie that all together in that aspect.
From the Xamarin point of view, it’s going to be the same as building it over with objective-C or Swift which is that you still have your projects, you’re building out your storyboards; and I think the shared story code is probably what’s of interest here because the WatchKit application is actually pretty different from an Android Wear application but you’re still able to share a code across them.
ALONDO:
That’s interesting so by following these frameworks or module approach you can still gain some savings there even though those platforms take a different approach to wearables.
JAMES:
The interesting this is – I don’t know how much you guys have talked about Android Wear in the podcast at all. The Android wear is a very.
JAIM:
Hold on, what’s Android? [ Chuckles]
JAMES:
[Chuckles] It’s a whole other operating system that you might have heard of from a little company; they’re called Google I believe. It’s how they pronounce it, Google. They’re mostly just for searches; that’s from my understanding.
JAIM:
Okay. Oh that, yeah I remember that. Like ten years ago, cute.
JAMES:
They used to run Maps on the iPhone, but not anymore.
So Android Wear is what’s interesting is it is Android, like a 100%. Well, 98%. There are a few things you can’t do on it. Some of the sensors are so poor and things that just don’t exist on it and wear it as a watch device. But when you run an Android Wear application, it’s all of Android, all of the lay-out system is available to you. You can do anything to it, to be honest.
JAIM:
So we’re talking about wearable devices; watches, the glass, are there other ones that. We’re talking about.
JAMES:
Yeah, Google glass, there’s Android Wear type thing wearables, obviously Apple Watch, there’s the Pebble obviously as well. There’s ways of doing Pebble development, which is mostly just C development, but it has its own SDK and different things. There’s a new version coming out. There’s the Microsoft Band which is more of a fitness type thing. There’s an SDK for that for Windows, iOS and Android as well. So tying in, integrating that into your application.
I guess that’s probably what I consider wearables today. I think right now they’re existing on our wrist, but they’re going to exist everywhere. I think the wrist and the watch has that friendly form factor. Like putting something on your glasses; we’re not there yet, maybe in the future. I think that’s the idea that Google wanted to go with just to feel it out, it’s a great idea, it’s interesting. I
think more people are familiar with wearing a watch on the wrist, so it’s kind of easing someone into technology. I don’t think my dad will ever wear an Apple Watch, but it will be a little bit less odd.
JAIM:
With the watch, you finally have a useful grocery list app. You don’t drop your phone all over the place, smashed into pieces next to the grapes.
JAMES:
Exactly, instead of all of us carrying our phones and yelling on our phone, now we can just yell on at our wrist. Tell our wrist what to do, “Hey Siri, make sure I get bananas later.” Who doesn’t want to do that?
ANDREW:
I’m curious to know in a little more depth about some of the differences between Android Wear and Apple Watch. So we went over Apple Watch a lot on our WatchKit episode but to recap, the app runs on iPhone, and you get proxy objects and you don’t really get to actually run your own code on the watch itself. You just get event call backs and push some limited information back the other way but you’re not running full featured apps on the watch itself. How does Android Wear stack up in that sense? Can you actually run your app on the watch?
JAMES:
Yes, on Android side of things the Android application that you deploy to Google play or anywhere else is housing another app inside of it. So there’s basically two APK files, in an APK that’s just like an IPA file, it’s the actual deploy–able bundle that you deploy to the app stores. You bundle your watch application into your main application – that’s what gets synced to your Android Wear device. But that application; there’s two things with it.
There’s the aspect that all of Android is available to you, so any API is available to you. It’s running Lollipop, it’s running 5.0 – the lasted version of Android. So all the APIs are available to you. You can execute RunCode, you can make network calls, you can have a database there, you can have embedded resources you can generate dynamic content – it’s a full application, 100%.
The question comes out to should you be doing that? You can do all these animations, everything is there but these aren’t the most powerful device in the word. The Moto 360 is running like a 500mHz processor, so it’s not a lot of processing power. Trying to do a lot of animations, are there – nor should you be trying to shove your entire application into an Android wear application or an Apple Watch application, to that extent, too.
28:
08] part is that everything’s talking over at Bluetooth Alley, of course, or Bluetooth Smart – I think it supposed to be officially titled now. So if you make a network call, and this is where Apple tried to say, “We don’t want you making network calls from your watch because that doesn’t make any sense.” But on Android you could, you could say, “I would like to pull down a bunch of new data or server or sync this with PARS or Asher”. You can run that code on your watch; there’s no reason you couldn’t. But your communicating over Bluetooth Alley which is extremely slow. It’s supposed to be for small bits of data.
So what’s nice about Android wear is if you need to modify the user interface, your application can do that. Your main application on the watch can modify the user interface, adjust things, pool in a database, run execute code which is you cannot do that on an Apple Watch; doesn’t exist. Your little extension method over the extension application on your iOS application is doing that, you’re invoking into it to adjust some properties or hide things to make it feel dynamic, but it’s really not, it’s all static.
On Android side of things, we still have that concept of data synchronization. What’s really cool that you Googled it with Android wear is they removed a requirement on the operating system. Let me specify that, because in iOS, to be able to run an Apple Watch application you’re going to need iOS 8.2 – the one that comes out with that version. You’re just going to need it, you have to have the latest iOS versions and your latest iPhone version to pair those together.
What Google did is there’s nothing specific in Android Wear that’s built into the operating system of
Android. The only requirement is that you have to have Android 4.3 because that’s where Bluetooth Alley existed. From a developer point of view I just added a bunch of libraries, so on the actual watch side of things, I have a UI library called the Android Wear. The Android Wear UI has a bunch of specific things that I can actually deploy into my application.
Then I use Google Play service to actually do a messaging service back and forth. So if I need to do some data synchronization from my main application over to my Android wear application, I can create this bridge and say, “Hey something happened over on my watch, I got a new location. You need to go update something,” so I send in a notification over to Android – the wear application – that can go and do something. Also at the same time have an entire data synchronization model. So there is like a drop box, which is similar to the iOS shared file storage between all of your applications.
You have this big bucket of data – it’s almost as big as a JSON file – that you can use as a synchronization method. What Google does at that point at Google Play Services, which is like a big library, it handles all the synchronization for you. So on your main application running on the phone, you say, “I have a bunch of data. I pull this down and I’m synchronizing this. I’m going to go ahead and put that into my application,” and Google will go ahead and tap that into the main Android Wear application for you, automatically.
So when you’re building your applications, you can think of it like the data synchronization part and that database and any of your file calls that need to be synchronized with Android Wear could be your shared code over on iOS. So anything that’s running in your extension is what’s running in the background service on Android to do bigger data calls. Because you don’t want to do huge data calls on Android Wear. So that’s how things are structured. They’re similar but different.
ANDREW:
That’s really interesting. I’m curious because we actually have information from Apple that there’s more coming to WatchKit they said. I can’t remember the exact wording but they essentially said the full apps are coming later this year. I’m curious to see how that looks now in contrast to Android Wear. It seems like in some ways that’s what we might expect to come from Apple is where Android Wear already is.
JAMES:
Notifications in general – they did this correct on both parts – is that notifications just show up automatically and you can extend notifications on each platform, so you can add in specific these glances feature notifications with interactive elements. You can do the same thing on Android. When Android Wear started, it was only notification. They extended it later when the devices came out. But we don’t really know what’s going to happen with Apple Watches because we don’t have the devices. We’re going to find out on the 9th and when the devices come out in April.
So who knows how these applications are even going to run on those devices. So we’re just living on this world, like we don’t know. And the question is do we even want to be able to do more of them because the current architecture isn’t up to snuff per se. Do we actually want to try and do more on the Apple watch, just like you have the ability to do everything on Android Wear, but should you? That is the question; should you do that network call, should you try to use Bluetooth Alley and Beacon search on Android Wear? That’s the intricate part of it.
JAIM:
As a 22 second animation, is that a good user experience?
JAMES:
Probably not, you do get a nice 20 meg image cache over on iOS so you can definitely generate a bunch of .gifs if you want – I still call them .gifs, but it’s okay. What’s a great user experience, that’s always the question. There are a lot of great links I’ve a really great blog post from Craig Dunn who summarizes these different UI element. The same thing was true for Andrew. When you look through the idioms of a wearable application, everything should be accomplished in under five seconds.
So if I have to perform an action, or if I as a developer have to do something, it should take no longer than five seconds. Because as a user of a wearable, I don’t want to look at my watch for more than five seconds, normally we never had to. We’re looking at our watches for time. I shouldn’t have to interact or pinch or do anything on a wearable device for more than a few seconds. It’s all about getting in and out of your application. So a 20 second animation probably isn’t the best use of your wearable application.
JAIM:
No, probably not. Anything other than five second and your user is going back to Twitter or Snapchat, or whatever they were doing.
JAMES:
I wouldn’t be amazed like – I travel a lot for work, I travel all over the place – and it’s always a pain to boot up the Southwest app. I have to load it, I have to tap on this to tell, “Yes, I would like to get my boarding pass.” What if my boarding pass just came up automatically, name my location, did everything automatically for me. I shouldn’t have to think about and Android or and iOS application running on my wrist, shouldn’t that do it for me automatically?
34:
56] on Android Wear actually your application running is hard to get to. You have to swipe around left and right. You have to go to this application, unless Google specifically made it hard to find applications, because they don’t want users running applications. They want it more context based so it should be like, “I need to navigate somewhere, I should be speaking to my wrist.” I need to navigate home and it just takes me there automatically or I need to add this item on my list it just does it automatically.
Which is a stark contrast from that home screen that watch face over on Apple Watch which you can’t change; it just is. Their developers can’t make watch faces from my understanding at this point. You can on Android, you have all these types of apps running and available to you.
So I think it’s going to be interesting once I get my hands on the actual physical Apple Watch. For all of us that’s interesting to see how we use it. Are we actually poking around in it, or do we just get sick of it and just expect more of the applications. What do you guys want out of it? Have any of you used any of the wearables yet, or is this going to be your first experience with them?
ANDREW:
I have a Pebble, first generation Pebble. It does have apps but the main thing that I use it for is just notifications on my wrist. I do like it for that, but it’s pretty limited; it’s not like it’s a mind blowing thing. It’s not like my iPhone where I bought the first iPhone the day it came out, from then on you couldn’t imagine living without your iPhone, but Pebble’s not like that. It doesn’t bother me if I forget to wear it.
ALONDO:
I’m actually excited about it. I haven’t worn a watch in a long time but even hesitated to get a Fitbit. I would like something on my wrist to track the very least my motion when exercising. That doesn’t really justify buying an Apple Watch. For work as well, we’re pretty excited about what we may be able to do. In fact we’ve already started doing some designs and looking forward to getting our hands on a physical watch pretty soon.
ANDREW:
I’m excited for the Apple Watch too, I hope that it, and the things it can do are more compelling than the existing stuff. Although, of course I haven’t tried Android Wear so maybe it’s already sort of there but I don’t have an Android phone so, kind of a dead end for me.
JAMES:
I think it’s what is interesting is that it’s tied to the platform right now. Now I got to think about, what if I switch? This is what’s interesting from their point of view, now I’m committed to an Android Wear Watch, and an Android Phone. Man, to make a switch over to iOS, now I got to invest not only for a new iPhone but also for an Apple Watch. Now you’re really invested in the platform.
JAIM:
Watch, phone, tablet, then you're locked in.
JAMES:
Everything. It is, they really gotcha.
JAIM:
When is Window’s Watch coming up?
JAMES:
[Chuckles] That’s a good question. I did the Microsoft band. It’s really interesting because it actually works with every single device. It works with iOS, it works with Android, and Windows. It’s more of a fitness device that has an SDK so you can push notification and run small applications on it, but it’s kind of an advanced Fitbit, and then actually a full smart watch. I’m not sure what they’re going to do, what Microsoft’s going to do next in general. They’re trying to open it up to be more cross platform, but they don’t own the SDKs; that’s where Apple and Google can tightly integrate into their library so that’s it.
I think you guys will be interested, because when I got my Android Wear Watch, I didn’t have a watch in eight years and I was really excited about the potential. The biggest thing to making the Apple Watch and Android Wear successful is it stills need to do one thing, like good, like amazing. It should be able to tell the time. I feel like Android Wear is like 50-50 on being able to tell the time. That’s my problem, not that the time is wrong, it’s just the screen it comes and goes. When you’re wearing a traditional watch, you just look at it and there it is. So I’ll be interested to see what they do on the Apple side of things once I get my hands on one.
ANDREW:
We actually had this discussion among some friends. I think just yesterday we were talking about this. Somebody said, “Well, my watch really has to do one thing, perfectly for me to want to wear it and that is to tell me the time.” That’s actually something the Pebble does really well because it has an always–on screen; it doesn’t turn on and off. Even if the Apple Watch has a gesture when you lift your arm up, the screen comes on but if that’s not perfect then it’s going to be really annoying. I’m interested to see, hopefully it’s perfect. Hopefully, every single time you raise your arm, it comes on. Of course battery life is the other big question, you don’t really want your watch to – I don’t care that much if the smart features stop working as the battery gets really low but make sure I can tell the time all day at the very least right.
JAMES:
That is the most important part. And Android Wear did the same exact thing and battery life was always a killer. It was always one day, my smart phone only lasts a day, it’s constantly plugged in, and now my smart watch has to be only one day. It’s a lot of things charging all the time. That’s the only gotcha, I think.
JAIM:
It’s a good point about the watch but you could have also said the same thing about the phone. How often do we actually use our phones as a phone? A lot more.
JAMES:
I like to never use my phone as a phone; I think that’s the worst use of a phone. I hate if I actually have to use my phone as a phone, I use it as an email device and a Twitter reader – that’s about it.
ALONDO:
I have to agree. I think using it as a phone is my least favorite use. It actually replaces my watch, that’s the reason why I stopped wearing my watch.
ANDREW:
I agree, except that we have an iPhone that’s not a phone, that’s an iPod touch, I certainly wouldn’t carry one. The big issue there is doesn’t have a cellular data connection but still my point is I wouldn’t have an iPhone if it didn’t work as a phone even though it's not the main thing I do with it.
It’s a crucial thing.
JAIM:
Kind of like the Trojan horse.
ANDREW:
It’s there when you need it – that’s the most important part. If you do need to make a phone call, it’s there. I work from home most of the time, which is nice, and I use Google voice and I just bought a physical landline phone – not connected to landline but connected to Google voice. There’s $20 box that you can buy, connect to your network and whenever my cell phone rings, it just calls my phone at home, so I don’t have to use my minutes or anything. I actually find that a lot better than having hold my phone and try to type and do all these stuff. It’s kind of interesting.
ALONDO:
Do we have anything other things we want to discuss or we move on to picks?
JAIM:
I think we’re good.
ALONDO:
Okay. Jaim, what do you have for us this week?
JAIM:
I have one pick today. I live in Minnesota and among other things, we really don’t have good access to barbeque – this is terrible. Alondo, you’re in North Carolina; James, you’re in Dallas, you’re all–
ALONDO:
It’s an embarrassment of riches here.
JAIM:
That’s right. You all can get some barbeque if you want. If I want some barbeque, like really good stuff, I got to get in the car and drive south to Kansas City. This Christmas I got an electric smoker and it’s awesome. Now the purist must be thinking it’s got one fire and all that, but you want to spend 12 hours outside in 10 degree weather cooking up a brisket? No. So purist thing doesn’t really work in Minnesota. I bought an electric smoker from Cookshack, it’s awesome. I’ve done four or five briskets in the past couple of months. Starting to get pretty good at it. I think Alondo’s probably having to compile there thinking cow, barbeque, [chuckles], how does that work?
ALONDO:
I was really stopping myself.
JAIM:
People who taught me how to barbeque a brisket are from Texas so that’s why I know. That’s what I’m doing and my wife likes it, so it’s all good. So I got the Cookshack Smokette Elite. It’s not cheap but neither is driving 6 hours a week to Kansas to get barbeque. That’s my picks.
ALONDO:
Excellent. Andrew?
ANDREW:
I got a number of picks today, I started out not having any ideas then I thought about a bunch of stuff that I wanted to pick. The first pick is a brand new Mac app that just came out called Monodraw. It’s actually still in beta and it’s free during the beta. There is a blog post that went around a few days ago about sustainably pricing your indie software and it was actually a blog post of the developer of this app. I almost wonder of that blog post was not to get attention for his app but his app deserves the attention. It’s an ASCII art editor for the Mac.
So think of it like Photoshop except that the output’s test files that are ASCII art and it looks really cool. Just like a really well done Mac app, and I’ve played around with it a little and it’s super easy to get going with. It’s quite powerful. And when I first saw this I thought, “I don’t need that because I’m not going to be drawing ASCII art; what’s the point?” But then I thought about it and it actually could be really useful if you’re actually doing documentation and if you want to put a diagram or a flow chart in your documentation. I’m going to see if I can come up with ways to use it in my development work. You can also draw funny ASCII or pictures with it. So that’s Monodraw.
My second pick is the LightBlue Bean, and this is a Bluetooth 4.0 Arduino basically. It’s a really small board powered by a coin cell. It’s got a Bluetooth 4.0 module and then Arduino processor. The thing I think is really cool about this is they actually have an iPhone app that will let you program the bean over Bluetooth with a program you write on the iPhone. I think what they’re doing is they send your program up to their server where they compile it and then send the binary dock down and then send it over to board over Bluetooth because they can’t compile code on the iPhone, but they’ve cleverly gotten around that. It just looks like a cool thing to play around with Bluetooth 4.0.
My last pick is a kit called the Three Fives Kit. It’s a 555 timer chip made out of transistors which looks like a giant 555. It’s by a company called Evil Mad Scientist Laboratories and they got a bunch of cool stuff. That’s worth checking out. Those are my picks.
ALONDO:
Cool. I have two picks this week, the first one is a book; Refactoring to Patterns by Joshua Kerievsy. So it was something that’s come in handy the last couple of weeks because I’ve been doing a lot of refactoring of old code. Just trying to improve it for reuse and extracting things that can be used and placed in the modules. And it’s just a handy reference; it’s a nice book to have on the shelf.
My second pick is iOS 8 by Tutorials which is the latest tutorial book from Rey Wenderlich and it includes nice tutorial about WatchKits, so if you’re the type of person who learns by doing but you need a little bit of guidance, I highly recommend it. So James, what are your picks?
JAMES:
I’m super excited, I really had to think about this for a while and my list was ginornormous, and I put stars and asterisks next to them for the ones that I really care about. So I’m going to do three. The third one’s actually two of them together. The first one is a book. You might have talked about this before, it’s Ready Player One by Earnest Cline, and it is the best book ever written in general. It’s kind of a science fiction, dystopia with tons of 80s and 90s video game and movie and music references.
It’s fantastic; they’re making a movie out of it. His new book Armada is coming out. I’ve recommended this to everybody. I hate books, I don’t read books, I hate reading in general, but I think this book is fantastic, I read it in two days. Everyone I recommended it to is blown away by it. It’s Ready Player One.
Then I’m going to have an app since I’m an app developer. I thought that that would be good. I cycle all the time for my life; I love cycling. I’m doing this Seattle to Portland bike ride since I live in Seattle – I just happen to be in Dallas right now, from the luxurious Hyatt house in Dallas. I’m starting to travel a lot. I used to use myTracks, and Strava just like the social aspect and segments and gamification of riding a bike or running has been excellent.
Even if you’re using another app, you can export all of your data – your gpx data – and import it which is really nice. I’ve just been blown away by the application. It’s really well done on iOS and Android. I think the app is blown away. Over the years I’ve tried to use many GPS tracking location applications and this one just nails that. They’ve been around for a while but just me finally getting it. I’ve been extremely happy with it.
The last one is actually services. So this service is a little bit newer. It’s only in Oregon, California, and Washington. It’s called Tavour, I will link to it obviously. It’s one of those box a month deals, but the difference with Tavour is it’s all about craft beers. What they do is they send you an email every single day of a hand curated craft beer and they give you this whole story. Their copy director is fantastic. They give you the whole story of the beer; where it’s from, about the brewery.
You just email them back if you want one or not. You just say I want one to six of these. They’re usually in bigger bottles. I’m not really a big beer drinker, but I like a good craft beer with a great story behind it. Then once a month they ship it right to your house everything that you've ordered. You get the first of the month and you just have this amazing box of craft beers. If you’re not into beer, there’s another service that I use. I’m all about the boxes. It’s just my third/fourth, it’s also called Graze.
Graze started in Europe and then it made its way to the US. Instead of alcohol, it’s more of the family friendly approach; it’s snack boxes. So you can get these little snack boxes once a week or every other week. They’re just amazing, from dried fruit to crackers to little granola bars. They just started this big sharing box so it’s larger portions. It’s only five dollars for these boxes delivered to your doorsteps. So I use those all the time because I travel so much like throw these little things in there, just going out. It’s a little great snack; it’s called Graze. I’ve been using it for years. It’s just really fantastic. Those are my picks.
ALONDO:
Awesome. Thanks again James for coming. I really enjoyed talking about Xamarin and wearables. We’re really super excited about it. Does anybody have anything else? If not, we’ll wrap up and we will see everyone next week.
[This episode is sponsored by MadGlory. You've been building software for a long time and sometimes it gets a little overwhelming. Work piles up, hiring sucks and it's hard to get projects out the door. Check out MadGlory. They're a small shop with experience shipping big products. They're smart, dedicated, will augment your team and work as hard as you do. Find them online at MadGlory.com or on Twitter @MadGlory.]
[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]
[Would you like to join a 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]
096 iPS Xamarin and Wearables with James Montemagno
0:00
Playback Speed: