Wally McClure, developer and author, talks about his approach to cross platform mobile development using MonoTouch and MonoDroid. Wally gives a nice overview of what these tools do, and what they don't do to help developers publish to different platforms. We go on to discuss broad topics in the mobile landscape.
Links referenced in the show:
- Professional iPhone Programming with MonoTouch and .NET/C#
- Professional Android Programming with Mono for Android and .NET/C#
- Wally's Blog
- Wally's Podcast
- Mono for Android article
- Mono for Android interview
- MonoTouch article
The music in the show, Have Mercy — Big Walter Horton, was provided by Mevio’s Music Alley.
Transcription
-
Hey, folks. I’m Wally McClure and we’re going to talk about mobile and how I got into mobile and things that I’m working on in mobile. So I’ve been doing development for a long time and I’ve been a real big believer in the Microsoft .NET framework. I think I’ve been on it since that day in August of 2000 when a friend of mine called me or e-mailed me or something and said, “Hey, I got these CDs from PDC from a couple of weeks ago. It’s going to have that stuff that Microsoft was talking about.” You know, and I was like, “Dude, I’m there. I am over there. You get your CD burner, you know; let’s get going.” You know, so over the years I’ve been into .NET development and, you know, I’ve written a bunch of books on it. So in fall of 2008, Microsoft started talking about cloud computing with Windows Azure. They formally announced it at the PDC in, I think it was October of 2008. So, of course, I immediately jumped on it because I thought that was a, you know, it was an interesting technology; I thought it provided a lot of business value. I used to work at Coca-Cola and, you know, was always interested in things that provided value because I was a big proponent of Gartner and their total cost of ownership, you know, with PCs and, you know, how expensive things were. So, you know, the cloud computing piece made a lot of sense to me. I was looking at it; I had some customers who had put in, you know, servers into their data center. And, literally, from the time that a server arrived to the time it was in their data center usable, it was like six to eight weeks. And, you know, now I mean, that’s craziness, you know. So I looked at cloud computing and I said, “Hey, you know, if I can have a development platform, you know, that allows a developer to show up with a credit card and be out online with all the bells and whistles, you know, in an afternoon or in an hour,” you know, that really spoke to me. So I started writing some stuff up and I started building an application and ended up creating a lot of Web services on that application. And that application is still out there; it’s still online. It’s hosted on Windows Azure today; it’s called Twtmstr (T-W-T-M-S-T-R.com). And all it does, you know, it allows you to schedule and integrate all of your, you know, your social media. And right now it’s directed at Twitter, but I’ve always had this idea of going back and adding other things like Facebook, you know, for fan pages and LinkedIn, you know, and those kinds of applications. But out of that, I ended up building a lot of Web services. And I was talking to a couple of friends of mine and, you know, this idea of, “Well, I like this. This is really cool, but it would be really great if there was this iPhone interface into this application.” And I was like, okay, so, you know, this was like the third or fourth time that I had heard “iPhone,” you know, and “mobile,” and it needed to be mobile. And I thought, you know, I was like, you know, this is something that’s really important. I mean, I was one of those guys who when Apple first, you know, shipped the iPhone, I saw people lining up outside of, you know, these AT&T stores and these Apple stores, I was the kind of guy who drove by and laughed. You know, I was like, “What are those crazy people doing?” Well, I guess I was starting to pay attention to those crazy people and saying, you know, “Hey, there’s a lot of interest there.” So anyway, out of those discussions, you know, I was like, “How can I get on the iPhone?” And I actually did. I went, you know, being a .NET developer, I went and looked at Windows Mobile and I was, like, just not impressed with the whole development experience. Plus, I was looking at the numbers and I was like, you know, they just don’t have enough recognition in the marketplace; there’s just not enough acceptance there. So I looked at Objective-C and I said I would pull my hair out in days. This is too foreign for me as a .NET/C# developer, you know. I want to take my existing knowledge; how can I do that? So I said, okay, surely there’s got to be some other alternatives. So I looked at there was a product, it was open source then and it’s still open source called PhoneGap.
-
RP: Right. Yeah. I’ve seen that.
-
Yeah. PhoneGap’s a JavaScript framework; allows you to take your HTML/CSS type of knowledge and apply it, you know, to different mobile platforms. And I thought, I was like, you know, hey, that’s interesting. You know, that could be helpful. So I downloaded it and looked at it and, you know, I spent I guess a week or two on it when I had a few moments. I was kind of like, yeah, you know, if my JavaScript skills were better, I think this would be a great place to be, but I still kept looking. I was, like, what is there for a .NET developer? How can I get on the iPhone? And I kid you not, I mean, it could not have been more than a week or two and Novell announces MonoTouch and I’m like, “That’s where I need to be at.”
-
RP: Now before that, had you followed along with the Mono Project at all?
-
I actually, I worked on a project back in 2006 and, you know, the guys who were doing it were just adamant that we had to do it all in Mono because while we all liked .NET/C#, you know, they didn’t want to have to go and invest in Windows this and Windows that, and blah blah blah. And, you know, they had some Linux expertise, but they didn’t have really any development expertise. So I had worked on it. I was kind of like, “Yeah, it works. I don’t really see what all the excitement’s about,” you know. Because it just, it wasn’t a platform where I spent a lot of time on, you know. I mean, I didn’t have any customers who were asking about it except, you know, this one customer. So it wasn’t really something, you know, that was exciting to me. It looked to me like it was an academic project that didn’t necessarily have a whole lot of commercial value and that had been my thought.
-
Right. It does seem like it’s a little bit of a hard sell depending on what your project is just in the fact that Mono’s always tracking .NET, right? So you always want the newest, shiniest toys and you oftentimes just don’t have them for, you know, at least, like, what, like six months out I think is the new track time?
-
Yeah. Yeah. I mean there’s definitely some delay. I mean, Mono doesn’t support the new features of .NET the day that .NET releases a new feature. They just don’t have the resources for it. But for me, it was more the issue of I didn’t really have anybody except for this one customer who was asking, because I’m always looking at what’s happening in the marketplace. Because, to me, I mean, the marketplace defines what I as a developer should do. A lot of people want to get into “religious” issues; that’s not me. You know, I want to listen to the marketplace and respond to it. And I looked at it and I said, you know, Mono on Linux. Except for these one guys, nobody’s asking about it. You know, it’s not really a value to me. However, MonoTouch, because I could take my existing .NET knowledge, my C# .NET language skills and then run them on the iPhone, you know, I was like, “That’s really talking to me,” you know, because they’re the only guys who are doing that.
-
Let’s make sure that all the listeners are on the same page here. I don’t want to make too big an assumption. So do you want to go ahead and just break down just real quick where, you know, Mono, MonoTouch, MonoDroid, like, where these projects kind of stop and end and what purpose they solve, just so everybody can follow along at home?
-
Okay. So Mono is an open source implementation of .NET and Mono runs across various platforms. It was originally designed for Linux and so it runs on various distributions there. It runs on the Mac, it runs on other platforms as well. You can download it; install it to your heart’s content. Like I said, it’s an open source implementation. I believe Microsoft has released a lot of the test cases to the Mono team and so Mono, basically, they can satisfy a lot of the tests that the .NET framework can. Now there are certain things that don’t exist in the Mono framework that are in the .NET framework. Probably, the single biggest one is WPF. WPF doesn’t exist in Mono, but there’s lots of other pieces of Mono that allow you to build user interfaces, so I’m not really sure that’s necessarily a big deal. Plus, I mean, you know, building WPF to run on the Mac and on Linux, that would be, you know, a huge commitment of time, so I’m not really sure that’s a big deal. But anyway, you know, Mono is this open source implementation and they have support for .NET 4.0 running across all these different platforms. And that exists and that’s out there today. And then MonoTouch is a implementation of Mono that allows a developer to write an application using .NET/C# and then to build that application and run it on the iPhone, run it on iPad; you can create a universal application just like you can with Objective-C so that, you know, you can target both those platforms. And the key difference there is with the iPhone, you cannot have shared libraries. So there’s no Mono framework to install on the iPhone. The way this works is it will take your application, compile it, it will bundle the Mono runtime with your application, then there’s a linker that will go and will strip out things that your application doesn’t need so that, you know, it will reduce the size of your resulting bundle, and then you will install that bundle onto your application. And the bundle could be installed based on the fact that you’re a developer developing locally or you can distribute that application up through the app store. Basically, any way that you distribute an iPhone application, you can distribute a MonoTouch application. In fact there’s, I think I’ve heard stories, you know, there’s several thousand applications written in MonoTouch that are actually up in the app store. Which in and of itself really isn’t a huge number, but I think there’s some really good applications out there. One of the ones that Apple continues to feature is a application called iCircuit; and they actually have that on all the iPads in the Apple stores, like, that are in the mall.
-
Well that’s a pretty good testimonial right there. I think a lot of people get concerned when they think about stepping away from specific native development saying, “Well, I’m always going to have an inferior product if I kind of use this abstraction of the tools,” but it seems like they wouldn’t be showcasing these apps if they weren’t every bit as good as something that was, you know, directly native, right?
-
Exactly. And the way I kind of refer to it is MonoTouch applications, they are native applications. It’s not some kind of HTML/CSS gimmickry going on there. You know, they are native applications, just like an Objective-C application is a native application. The only way that I differentiate them is I think of an Objective-C application, it’s kind of the vendor-supported way to be on the platform. It’s not the only way; it’s just the vendor-supported way to be there. It’s like Visual Studio is to Windows developers; it’s the vendor-supported way to do it.
-
So another criticism about having these library dependencies that are kind of, you know, one step away from, you know, the official tools is back to that idea of kind of tracking release. So say there’s, you know, new iPhone 4 comes out with new hardware inside of it. Was there a big lag time before you could use some of these new tools and APIs or, you know, do they keep up to date pretty quickly? Like, could you launch an app on launch of the hardware with all the new goodness or do you have to wait a couple of months?
-
So, yeah. If you get an application, let’s say I’m writing an application. And I want to take advantage of a new feature (and I’m just going to make this up), you know, in IOS 4.4. Well, the Mono guys, basically, within 48-72 hours have always had updates for MonoTouch that support these new API features. So let’s say, for example, Apple, you know, in a month comes out with some new features or I guess it would be IOS 5 at WWDC. They come out with a bunch of new features; typically the MonoTouch guys have public support out there within 48/72 hours. So there’s not really a whole lot of lag time. It’s not, you know, you have to wait six months for some kind of update.
-
So really 48 hours isn’t that bad considering I’d say with most projects you’ll be tending to code, backwards compatibility in. You know, a lot of times the new APIs just mean code that you get to remove from your app, right?
-
WM: Right.
-
RP: Not necessarily features that you get to add. So thinking about it in that way, really, it’s probably not likely a big deal.
-
Yeah. I mean it’s not. When Apple first announced the iPad, I mean, they would usually have it out in less than 24 hours. When IOS 4 came out, I think it was pretty much right on within that 24-hour period. I think some more recent updates, you know, have maybe taken a little bit longer, but, you know, these more recent updates, you know, don’t really necessarily have a lot of significant functionality in there so I’m not really sure we missed them anyway.
-
So, you know, something that someone would need to be aware of if they’re thinking about going this way, but really we’re putting it in perspective. Not necessarily a deal-breaker kind of scenario.
-
WM: Exactly. Exactly.
-
Very cool. And, you know, if somebody wants to get started on this, you’ve got a very nice, I mean, you call it podcast. I think a lot of people might be more willing to go if it’s, like, you know, codewalk through tutorial type videos. I mean, it’s really just you in your IDE writing code and, you know, pushing out little samples. And that’s really cool. And that’s at, what’s the URL again?
-
WM: aspnetpodcast.com.
-
All right. I keep wanting to put a dot in there just because .NET, but aspnetpodcast.com. Very cool. Yeah. And like I said, it’s great. You know, you sit down there. It was a little jarring to see, okay, this guy’s going to show me how to write some .NET code and what do I see? You’re running it on a Mac.
-
WM: On a Mac. Yeah.
-
Which I think is really cool because it just talks to that like you’d mentioned earlier; you don’t have to pick a side, right? Technology’s cool. You need to figure out where the customers are and what users of your product, where are they, and how do you best server them. And I think that’s a really nice message to put out there.
-
Exactly. I mean, you know, I’ve rarely found customers that actually care about the technology. I mean, they’re more interested in solutions. However, you run into a lot of technology people who for whatever reason want to put stop signs in front of others and say, “No, you have to use this technology, you have to use this technology, da da da da da.” And, you know, it’s, like, why? You know, where are you coming up with that? In fact, you know, the interesting piece is most of the Android and iPhone developers that I actually talk to, when I talk to them about MonoTouch and Mono for Android and that kind of stuff, you know, they’re pretty much right on. They’re like, “Okay, that’s cool. I get that, you know, I see where you’re coming from. Yeah, that makes a lot of sense for you.” It doesn’t necessarily make a lot of sense for everybody in the world, but it does make a lot of sense for, you know, certain people. I’ve got a lot -- like I said, I’ve got a lot of time invested in C# and .NET so these things, you know, MonoTouch, Mono for Android; these things, you know, are very popular in my world. If you’re already in the Java world, if you’re already in Objective-C, they probably don’t make a whole lot of sense. You know, it’s interesting, I want out to AndroidDevConf in San Francisco and, you know, I was doing this whole day workshop on Mono for Android. And, basically, you know, it was a workshop on here’s how to do Android development and here’s how to do it in Mono and, you know, you could take your existing C# knowledge. And I had no idea how many people were going to show up for it, you know. I was really fearful because I was walking into, you know, the enemy camp and looking for friends, you know. And I think there were 28 people who showed up at that. And, you know, I was like, “That’s a pretty good number,” you know. I thought that was really good. And then I was at a Mobile Connections out in Las Vegas a couple of weeks ago and I was like, “Is anybody going to come, you know, listen to me talk about this?” And, you know, I did a one-hour session on Mono for Android and there were, I think the room was almost full. It may have been full. It’s kind of sometimes hard to see, but I would say there were at least 50 people in there. So I thought that was pretty good, you know, considering, you know, it was a first-year, first-time kind of conference. You know, other things I find that -- my Visual Studio article on Mono for Android has been really popular according to them. Same with some MonoTouch articles that I’ve got out on DevProConnections. You know, so they’re both like, “Hey, we want some more of this stuff.” So I think there’s definitely a lot of interest in these type of products because when you talk to developers, you know, and when you look at what’s happening as far as development trends, I mean, clearly mobile is, you know, a very hot trend. It’s hot for a number of different reasons. You know, it’s hot from a marketing standpoint, I mean, it’s hot from an internal business usage kind of standpoint because now people are no longer tethered, you know, to their desk. They can move around so I’m seeing actually a lot of interest in the manufacturing world and in the what I would call just the general engineering world, you know, for these tablet devices. And, you know, these tablet devices are based on IOS and, you know, Android operating system. So, you know, I can see why there’s a lot of interest. You know, you look at the airlines, hotels; they want to be where their customers are at. And their customers no longer have to be tethered to a computer with, you know, these devices. They can be out, they could be in an airport, they could be at a restaurant, they could be whatever and, you know, you as a company want to give that customer the option of interfacing with you then, not having to force them to be in front of a computer.
-
Yeah. I think it’s really interesting. And I’ve seen the same thing that you had mentioned with interest sort of, you know, cross-camp or I don’t know how you want to word that. But I had went to a CodeCamp and generally…
-
WM: Whatever the right term is.
-
Right. I’m not really sure. It does feel like there’s some sort of, you know, artificial boundaries sometimes in people’s minds. But I’ve gone to a couple of Mono talks in the past at CodeCamps and, typically, they’re ghost towns. Like, they don’t get a lot of interest. But somehow, the ones that are, you know, like, MonoTouch or MonoDroid, I don’t really notice one to be more interesting to people than the other as far as those two platforms. But those, most recently in the South Florida CodeCamp, standing room only for a MonoDroid talk. So I think a lot of times developers don’t want to be limited to where can they push their product based off of the tools that they want to use, right? Like, it seems I think people were kind of just getting frustrated with it.
-
The vast majority, you know, 95+% are interested, you know, in, “Hey, how can I get on another platform?” Like with me. I mean, you know, MonoTouch, Mono for Android; they made a lot of sense for me. That doesn’t necessarily mean they make a lot of sense for everybody. You know, it could be PhoneGap, it could be Appcelerator Titanium, it could be Rhomobile, it could be, you know, you could do Objective-C. I mean, hey, I’m all for that, you know, if it’s something that makes sense, you know, for you. My view is don’t limit yourself because I think Apple as a, you know, company wants people to write more applications that run on their platforms. I think they’ve looked at the Microsoft landscape and they said, you know, “Hey, there’s a lot of, you know, there’s a lot of people writing applications for those platforms. How can we get us some of that?” I think Android is doing the same kind of thing. I think Google is looking and they’re saying, “Hey, how can we get more applications for our platforms?” And I don’t think it makes a lot of sense to, you know, to go limit yourself with, you know, some kind of ideological statements.
-
RP: I thought it was really interesting that the Playbook launched with Android app support or it’s coming soon. I think that’s going to be an interesting play for them too.
-
I don’t think they have the best developer story at this point in time. When I was out at Mobile Connections, you know, trying to get the developer story from them, it seemed awfully confusing to me at least. So I think they’re going to have to clean up that story and I think, you know, I think having that Android piece helps them a lot. You know, but like many things, you know, we’ll see what happens in the marketplace; if the marketplace will accept that. I know that right now, Android tablets are not selling real well. They’re starting to sell, but they’re not selling a whole lot. Plus, I mean, you know, the Android tablets, they’re not out in the marketplace in force. I mean there’s the Motorola Xoom, which is the only Honeycomb-based Android tablet that I’m aware of that’s shipping right now. You know, there’s lots of vendors that say they’ll have support for Honeycomb this summer, but we don’t have those yet. So, you know, we’ll kind of see what happens out in the marketplace.
-
And it’s rough too just because the way that they’re presented, it’s just hard, right? I just went to a Best Buy recently and I didn’t even see a Xoom on display. I mean, I wasn’t looking for that, but I thought, “Oh, you know, while I’m here I do kind of want to touch it, play with it, you know, see what everybody’s talking about.” Couldn’t even find one on display anywhere. Crazy to me that they could have this new piece of kit that could otherwise be really exciting and it’s almost like the retailers don’t even want to sell it. I had seen an article a little bit back, it said, “Who’s to blame for,” I think they called it, “The failure of the Xoom.” Very dramatic. But they basically said there’s not a single point in the supply chain that can be blamed much more than the others. It’s pretty much the full stack is just not firing on all cylinders.
-
Exactly. I mean, you know, I’ve got a Xoom. I actually like the size of the device a little bit better than my iPad, but the problem there becomes the infrastructure is not there to support Android tablets at this point in time. What I mean by the infrastructure, I mean, if you go look at the Android marketplace, there are very, very few, you know, Honeycomb tablet applications. So Google hasn’t really presented the, you know, potential user base with that infrastructure. I mean, on my iPad I really love reading books on there. The way I do it is I’ve got them in PDF. I can put those on my iPad very easily. I cannot do that on the Xoom very easily. I have to copy some files over and then, you know, I’ve got to find them. It’s just, it’s not smooth like it is on the iPad. And that’s, you know, that’s a stop sign that is in front of users. You know, plus the other problem you’ve got is with the iPad, you’ve got one company out there pushing it: you know, Apple. They do a great job in marketing. How many companies, you know, do you have out there who are pushing, you know, Honeycomb? Well, you’ve got Google. They’re out there pushing it, but they’re not really selling it. You can’t go to Google and say, “I want a Honeycomb-based laptop.”
-
Well, and it’s tough too because they did exclusivity, I would say, to their own detriment with that. Like, the only person that had early access to Honeycomb was Motorola. Not just hardware; no one could write software for it until after the product launched. Like, I don’t understand how that makes sense, especially with a platform that’s, you know, open source; under that banner.
-
Exactly. They’ve actually got further problems in that they have not directly open-sourced, you know, the Honeycomb operating system at this point in time. So that actually puts limits on what guys like the Mono guys can do. You know, the Mono guys have access to Android 1.6, you know, 1.7 and later; so all the way up to 2.3. So they’re able to tightly integrate, you know, their software/their frameworks into Android. But with 3.0, because there’s no open source, there’s no source that they can go get a hold of, they can’t really provide you with something that will run natively on Honeycomb at this point in time. You can write something that will run as if it’s an Android 2.3, you know, device. And that works and that works well, to be quite honest, but you can’t take advantage of those native features at this point in time. So you can’t go and hit the little bar, you know, the little menu bar down at the bottom, you can’t do anything specific there. And, you know, that’s not the Mono guys’ fault. I mean, that’s, you know, that’s Google’s fault for not, you know, having that stuff open-sourced at this point in time because they committed to, “We’re going to have this open source,” and, you know, it’s not there. And I don’t want to sound like I’m ideological on this because I’m definitely not. I could understand that there can be some valid business reasons to go do that. When you create an infrastructure and you base it all on this open source and then you kind of change the rules, well, I mean, you’ve created another hiccup in the marketplace.
-
There’s definitely a big asterisk following open source, at least with the way that Android’s kind of coming to market. But, you know, I mean, it’s easy to be frustrated with the way that Honeycomb is being handled. The story that I heard that makes it most reasonable to me is the fact that they just tried to rush Honeycomb together because the iPad 2, like, kind of forced the timeline. And they said they just don’t want to open it up because they don’t think it’s ready.
-
WM: Right. And I can see that being a Xoom owner.
-
Right. Yeah. That’s what I’ve heard. But what’s really hard as a consumer, you know, my phone has been damaged. I got a crack down the screen and I’d like to buy a new one. But the new Verizon Android phone that just came out is still rocking Froyo. Like, what is going on? Like, that is so amazingly frustrating. And the fact that you have to wait on someone to root it so that you can, you know, flash the ROM, put Cyanogen on it, just so you can get Gingerbread, which is the newest, you know, released source version out there; it’s just crazy.
-
And, I mean, you know, we’re all sitting here stuck with that. I mean, I’ve got an Android phone here and I’m sitting here stuck with 2.2 as well, you know. Would I like to be running 2.3? Yeah. I can understand why HTC and Sprint, you know, the manufacturers and the cell providers; they don’t want to do anything that’s going to break something that’s working. But, I tell you, you know, I, as a consumer, do want the latest and greatest. And I sit there and I look at what Apple’s doing with the iPhone and, you know, it’s like the update that came out yesterday; the 4.3.3 update of IOS. I said something to my wife yesterday at dinner, I said, “You know, hey, there’s going to be this update. You know, you want to plug your phone in?” She was like, “Oh, my phone was plugged in when the update came down. I’ve already got it. Bang. I’m done.”
-
And it’s crazy that that’s the kind of experience that you see considering the way the landscape is because it’s set up so that you get over-the-air updates for Android, right? So the mechanisms are in place to make sure that everybody can be updated immediately in theory. But there are just so many artificial barriers that stop it from happening.
-
Exactly. I mean, I look at my HTC, I got an HTC EVO 4G. I’m like one of the five people left on the Sprint network. And to get an update, it’s going to have to go from Google, it’s going to have to go through HTC, and it’s going to have to go through Sprint. And, you know, there’s going to be a lot of people who, you know, are invested in this and so it’s going to have to stop at a lot of points along the way. And I could see where, you know, Sprint or HTC could say, “Hey, we don’t want to do this because this is going to take, you know, time and, you know, we don’t want to invest that time.” Then you’ve got users out here saying, “I want the latest and greatest. Why aren’t you giving that to me?” So, I mean, you know, it’s a hard thing. I’m definitely, now that I’ve got done with this Mono for Android book, I’m definitely looking at, you know, hey, what can I do to root my phone and, you know, kind of get out of all this craziness?
-
Yeah. It’s actually, it’s pretty easy. The articles on Lifehacker make it, it’s too easy to be proud of, right? It doesn’t even feel like some kind of geeky badge of honor at that point.
-
WM: You know, dealing with this book, I said, “I’m going to just deal with, you know, what the users see in front of them.”
-
Right. A totally understandable approach to it. I could say especially while you’re writing a book. So let’s talk about this book real quick. We’ve been on a little bit of a downer; fragmented markets and all that stuff. So you’ve got a book coming out.
-
Oh, okay. Yeah. So it’s “Professional Android Development with Mono for Android and .Net/C#.” So as I jokingly have been saying recently, you should have seen the title before I made them shorten it. I guess let me back up a little bit. So in 2009, I came out with a, I had an eBook out on MonoTouch. And, you know, basically, it was 45 pages on MonoTouch and, you know, within two weeks of it being out, the publisher’s like, “Why didn’t we do a real, you know, a big book on this? Why don’t you have a proposal to me? What’s going on here? Why aren’t you doing this? Da da da.”
-
RP: And who’s the publisher?
-
The publisher is, it’s a Wrox brand book. The publisher is technically Wiley & Sons, but it’s a Wrox brand. Nobody in the technology world knows who Wiley is; everybody knows who Wrox is. So, you know, I got together and I pulled together some, you know, some really sharp guys and we put out the MonoTouch book. Then, you know, we were also starting to talk about Mono for Android at that point in time because, you know, Miguel de Icaza and Joseph Hill and those guys, they were just starting to talk about it; saying, “Hey, you know, we’re working on this. It’s an engineering project at this point. You know, we’re coming with this.” And then when you look at the growth rates on Android, you know, you’re like, “Hey, this is getting my attention.” So we came out, we’ve been working on this Mono for Android book. And so, basically, it’s a, you know, here’s how to do Android development with Mono and, you know, it’s geared towards .NET/C# developers. I’ve written a bunch of stuff in it. I hope everybody loves it and I hope people buy, I hope everyone out there buys 8-10 copies for the ones they love. They will make great anniversary gifts. You know, Christmas will be here, you know, before you know it; you know, you want to stock up early and buy those books. So it goes from, you know, simple user interface development to Android services in .NET and C#, you know, database support, Web services. That’s one of the really good pieces in the Mono story. I had written our Web services/database stuff in our iPhone book. I literally did a copy and paste of my code from our iPhone book into my Android source code and it just, it worked and it worked first time, no debugging necessary, bang. And I was like, “Wow.” That right there is a really good story to tell and, you know, when I talk about that code, I mean, I’m talking about it worked against REST0based Web services, it worked against ASMX-based Web services, WCF Web services, database on the device, SQLite. You can go and you can actually call, like, SQL Server directly on it. So those were really interesting things that I found. When I started thinking about how that could apply to a user, I’m like, “Hey, that’s going to be a really good story to tell because you can go and you can craft this business logic.” And, you know, you can create some piece of functionality and then bang; if you’ve got your application properly architected, you can go and you can, you know, create this feature once for Android and bang, you’ve got the back-end support for it on iPhone and then you’ve got most of the back-end support for it on Windows Phone. But that’s a, I think that’s a good story to tell.
-
RP: That’s cool. So you said you just recently finished the book, but that means it’s going to go into the whole publishing machine, right? Or is it available?
-
WM: It’s not available at this point in time. It will be available. You can go pre-order it on Amazon. So it’ll be out this summer. I think it’s supposed to be out in, like, July; I think, like, the early-middle of July.
-
Cool. Well everybody can at last add it to their wish list. Pre-order because it sounds like it’s going to be a great book. I mean, you’re definitely, you know, up to your elbows in the trenches here, right?
-
Exactly. Yes. Yes. It’s definitely been interesting to see, you know, the twists and turns of the product. So, you know, for example, you know, creating certain things and you get to listen to, you know, why the team felt like they had to do certain things certain ways. So their view is, yes you can use the language (in this case, C#) and you can use, you know, the .NET framework pieces that you’re familiar with, however, there are a lot of things that are device-specific, such as, you know, user interface, camera, those kind of things. You’re not really going to be able to share that kind of stuff between platforms. So you write something specific for Android, it doesn’t necessarily work over here on the iPhone or iPad or whatever. But because you’re able to use that language, you know, you’ve got some of those features that are obviously shareable. And, you know, like I’ve already mentioned, the WCF or the Web services support and the SQLite support is there. So, you know, that capability can be shared. But, you know, it gets into one of those things that, you know, a lot of people want, which is they say, “No, no, no. I want to build one application and I want to hit a button that says ’Compile for Android’ and it compiles for Android. And then another button that says ’Compile for iPhone’ and it compiles for iPhone.” And, you know, that is not the capability that MonoTouch and Mono for Android are going to provide. And there’s, I think there’s actually, you know, some really good thinking behind this because you go back a number of years to Java. And Java was write-once/run-everywhere platform; I mean, that’s what it was sold as. And there’s an underlying issue, I mean, you can get into all the jokes about write-once/debug-everywhere.
-
RP: Right. That’s what I was thinking.
-
Yeah. I mean, there’s really a more philosophical issue underneath the covers and that is -- and I really shouldn’t say it’s a philosophical issue; it’s a user acceptance issue, which is users want applications that are optimized for the platforms that they are on, okay? And the JAVA guys, that’s a really hard brick wall that they hit. And there’s a reason why I actually knew about it then, which was Microsoft, they had a project they were working on that was basically Visual C++ for the Mac was kind of this general idea of you can do this cross-compilation. And so that was when I worked at Coca-Cola and we actually tried that out. And the problem that we ran into was it didn’t look like an application running on the Mac; it looked like a Windows application running on a Mac. And the users just were not accepting of that. And that’s why you get back to users want applications that look like the other applications they have that are optimized for the platforms that they’re on. And that’s really, that’s a big deal for them. They want that stuff and they want it working best on the platforms that they are. And so that’s why, that was one of the other things that really attracted me to MonoTouch was I get to be native on the device, I get to use the native controls, I get to do everything everybody else can do, but I’m doing it in C#. And that was just -- when I heard that, all I could think about was that Visual C++ experience from, you know, 15+ years before. I was like, that’s just such a great story to tell.
-
It’s interesting that the separation from, kind of, the back-end and the presentation layer is seen as a strength to you because I think a lot of times, and it was my gut instinct as well, when I saw it I thought, “Oh, wow. It doesn’t solve the UI problem. Man, that seems like, you know, a big part of porting an app.” But, yeah. Like you point out, it’s important to make people rethink that thing because I have used apps on my Android which were IOS apps first and they feel wrong; they look pretty, but they feel wrong.
-
Exactly. And that’s, you know, I think that’s a problem that we’re going to be struggling with for years and years and years. I wish somebody had a magic bullet that would say, “Okay, everybody who’s building a computer operating system has to use, you know, the same UI design.” Or, you know, somebody who was really smart could build a easy to use framework that ported to all these different operating systems, but I just don’t see it happening.
-
I think it’s just too early for that. Because I think, for the most part, everybody’s still trying to figure out what an optimized interface is for a small device so it’s hard to standardize. I think there will be a lot of conventions, like, because honestly, between, you know, using a Mac or using a Windows PC there are so many metaphors that are very, very similar, right? Like the idea of the cursor, the idea of the icon, the idea of the desktop, really, the idea of the window. Like, it’s all very, very similar. You can tell that, you know, it’s that whole “Why is a soap bubble round” thing. And I think that something like that could emerge from mobile later, it’s just way too soon. And in the meantime, I mean, why shoehorn, you know, these forced experiences across platforms. Your design patterns really have to be contextually aware.
-
WM: Right. Yeah, I mean, right now there is a cross-platform solution out there, right? I mean, it’s called HTML
-
RP: Right. Exactly.
-
But the problem there is you want to deliver an HTML application to, you know, I’ve got a 15" MacBook Pro right here in front of me. I can deliver one experience there, but that same application is going to run horrible on my Android, it’s going to run horrible on an iPhone, it’s going to run horrible, you know, in these other places because not only is the screen smaller, but the input concepts are smaller. So, you know, I’ve got a concept of a mouse, which allows me, you know, fine control over where the cursor is. I don’t have that in a mobile device; I’ve got my finger.
-
RP: Right.
-
And, you know, you can even say, yeah, there’s a stylus; you can use a stylus. I mean, come on; a stylus? You know how many of those I have lost over the years? So, you know, they’re not a good solution either. I mean, it’s a little bit harder to lose a finger. I’m not saying it’s not impossible, you know. I mean, machinery accidents happen and all that, but you just don’t lose fingers on a day-to-day basis.
-
Well, Wally, this has been great. I feel like we could just keep going on. I really enjoy talking about this mobile stuff. You’re definitely very, very well-versed in it. I think we’re probably just going to have to have you back on again later though. How’s that sound?
-
WM: Okay. Yeah, that’s great. I can talk about mobile stuff all day.
-
RP: Awesome. Well, Wally, thanks a lot for your time.
-
WM: Okay. Great. Well, Ryan, I appreciate your time as well. Thanks for having me on.
Wally 00:00:21
Ryan 00:06:43