Coding 101 40 (Transcript)
Father Robert Ballecer: On this
episode of Coding 101, it’s the end of our build an app module. It’s time to
get C Sharp.
Netcasts you love, from people you trust. This is TWiT! Bandwidth for Coding 101 is provided by CacheFly. At chachefly.com.
This
episode of Coding 101 is brought to you by Lynda.com. Lynda is an easy and
affordable way to help you learn. Instantly stream thousands of courses created
by experts on business, software, web development, graphic design and more. For
a free trail visit Lynda.com/c101. That’s Lynda.com/c101.
Fr. Robert: Welcome to Coding 101. It’s the show
where we show you all the ins and outs, the secrets of the code masters. I’m
father Robert Ballecer, the digital Jesuit, here to introduce you to our code
warrior, Mr. Lou Maresca. Lou, it’s great to have you back, how have you been?
Lou Maresca: Hey Padre,
fantastic, thanks for having me back.
Fr. Robert: This is an exciting day because we get
to close up our first ever module. Mini module where we’re
actually showing people how to do an app from start to finish. The last
three episodes have all been about putting together a task manager in C sharp.
The idea was go through the logic. What kind of features do we need? What do we
need the program to do? Then actually show you how you build things in from an
API into the view model and finally into the view. So today we’re going to be
going through what, a little bit of Xamarin?
Lou: That’s right, yeah. We’re going to take
the app that we built the last two or three episodes and we’re going to take
that and put that in Xamarin and then compile apps. So we’re going to show you
the Windows phone version of it and then the Android version of it.
Fr. Robert: And this really is the promise of
programming in a modern language. The idea of being able to
code once and compile multiple times for different operating systems. And this is also, if we may toot our own horn here, one of the big reasons you
want to go with the view model style of programming. Because you can make that
back end, and then just change the view based on whatever operating system
you’re finally going to run your app on top of. But Lou, before we get there do
you think maybe we could take a look at some of the programming examples from
our G+ community?
Lou: Yeah let’s do that, there’s so me
really good ones out there today.
Fr. Robert: I know, I
love it. And actually, both of the ones I chose today do come from Joe, he’s
been in there forever, he’s fantastic, he’s a lot of fun to watch because he likes
to take what we give to our audience, change it just a little bit so that he
can demonstrate a point, and then throw it back to us. So the
first one is also from the Google+ group, its simple data binding. What
he wanted to do was give us a way to use a slider control to show how data can
be bound. The way that he has programmed this is, this
little slider here is tied to a number. It’s not just changing the number when
we move the slider. It’s got to go back to the module in order to take the
input from the screen, turn it back into some sort of numerical value and then
push it back out to the view. At least that’s how it should work. You can take
a look at the code if you like, he’s got the link up on our G+ community, but
when I run this, very simply all it does is it allows me to move this and as
you can see, the number will increment or decrement based on where that slider
will be between 1 and 10. Now Lou, what exactly is going on behind the scene
when I have a program like this?
Lou: What it’s basically doing is running
the code that’s in the view model, to basically calculate and its then sending
back, it’s a two way binding, so it’s then sending back messages to the UI that
it needs to update that text field with the new numbers.
Fr. Robert: When I was writing procedural
programming back in my college days, there was no real solid data binding, so
if you wanted to do something you would move the position of the object and then
you’d have to hit calculate in order for it to do it. To give it back to you.
This is one of the advantages of data binding. Which is if you tightly bind the
view and the view model, we can get instant feedback for the users and that’s
really what we’ve come to expect. We won’t do it any other way. Joe also sent
us another example, he said okay, now that you’ve got your taste for a simple
binding example, why don’t I show you what it looks like if I use a custom made
object. So what he came up with is this. He gave us this wonderful XAML
interface that allows us to do this. If you go and compile
it. Again, this is something that you might see on a modern app or on a
modern website. So I can do a task name. I get my task owner and then this is
important, because remember, we wanted to have some sort of colander inside of
our task manager application. He give me a dropdown.
The wonderful thing about this is, this is actually built in. he didn’t have to
code this from scratch, this was all built into the C
Sharp framework right?
Lou: Yep. That colander controls is there
for everybody to use, so it’s pretty easy to use.
Fr. Robert: SO for example I could choose this, and
then when I click the show card object properties, again, what it will do is it
will take everything that was in the view, it’ll push it back to the view
model, the view model will turn it into what you see here as it pushes it back
out to the view. Thank you Joe, this is why we love having your examples on the
show. Because it really does bring out the individual pieces that we’re trying
to teach people was we move through our examples. Now
when we come back we’re going to start in on the last segment of our build an
app module. Lou is going to show us how to use Xamarin in order to turn all the
programming that we’ve been doing into something that actually looks nice, that
we might want to install on our mobile device. But before we do that, let’s go
ahead and take a moment to thank the sponsor of this episode of Coding 101 and
that’s Lynda.com. What is Lynda.com? It is a one stop shop on the internet to
find out everything you need to know. And by that, I don’t mean just find out
new stuff about new topics about new skills about new software’s, new
procedures that you want to learn. I’m talking about a one stop show for new
knowledge and for reference material. That’s really the strength of Lynda.com.
Lynda.com works directly with industry experts and software companies to
provide timely training. Often the same day that new versions
or releases hit the market, so that you’ll always be up speed if you’ve got
your Lynda.com account. All courses are produced at the highest quality,
which means you’re not going to have bad lighting, shaky camera, audio that sounds like your speaking into a toilet paper
roll. Lynda understands that if you’re focusing too much on the production values
of a lesion, you’re probably not paying attention to the lesson. So although we
don’t like to denigrate YouTube videos out there, there is something about
learning from a quality source. Tools include searchable transcripts, playlists
and certificates of course completion which you can publish to your LinkedIn
profile, which is great if you’re a professional who wants potential employers
to know what you’ve trained in. whether you’re a beginner or advanced,
Lynda.com apps for iOS and Android will meet you at all experience levels.
They’ve got one low monthly price of $25, which give you unlimited access to
over 100,000 video tutorials and premium plan members can also download project
files and practice along with the instructor. And premium members with an
annual plan can download courses to watch offline. Which means it can be that
perfect reference material, even when you’re not connected to the internet.
Lynda.com also has courses on the foundations of programming, getting up and
running with C, simple Android development tools and how to teach kids
programming with iOS. There’s even a series on programming for non-programmers.
But for any software you rely on, Lynda.com can help you stay current with all
software updates and learn the ins and outs to be more effective and
productive. And we’ve got a special offer for you to access all of these
courses for free for seven days. Visit Lynda.com/c101 to try Lynda.com free for
seven days. That’s Lynda.com/c101. And we thank Lynda for their support of
Coding 101. Now Lou, I wanted to get to this as fast as possible because we
always seem to run out of time towards to end of our episodes. We need to turn
all this code that we’ve been working on, available on our show notes page,
into something that I would actually want to install on my phone or my tablet.
How do I do it?
Lou: So one of the things that we want to
pay attention to is the UI, it can be as complex as you want, or as simple as
you want, the key is you want to keep all of the code that you want to run on
your app out of it. So when you have a project like the Windows phone app that
I had, the UI should be by itself. You can just construct the UI using the UI
manager, UI builder. Put your UI components on there, your list boxes for the
tasks and the buttons and the images and all that stuff. But you want to stay
away from trying to write any code, anything behind the scenes. And so when
you’re hooking things up, like Joe showed, you want to make sure that you’re
hooking up those events but using the view model type mechanisms rather than
trying to put code in the code behinds.
Fr. Robert: Right. And actually, if you go back to
my screen, this is what the code looks like for Joe’s program. This is what
actually generates this view, as you can tell, there’s nothing there. All this is, is parameters for how big the box will be, what the
fields in the box are named, and that’s it. All the code is stored in other
modules elsewhere in the project. And Lou, why do we want to do that? Why is it
not okay to just dump all my code in that little design box?
Lou: Honestly, not only does it get
confusing, but it also prevents you from maintaining it. It gets really
complex. People who do web development, when you’re building HTML objects with your CSS style sheets, it can get really
overwhelming and complex with all of that stuff already in there. And then
you’re going to put additional logic in there? It just gets way over complex.
If you go back to Joe’s example, you’ll see that he actually has, in the text
attribute down there, you see he has binding in the path, and then it says name
and then binding path owner. So what he’s doing is he’s binding to properties
in his code files. And so there’s a name property and an owner property and
then when that actual UI renders, it’ll show the data from those actual
properties. And that’s exactly what you should be doing to simplify your user
interface building that you’re doing.
Fr. Robert: Some of the most nightmare code I’ve
ever had to fix, we had a programmer who put some of the logic inside the view.
And what happened was we didn’t know that there was code executing in there. So
we were trying to push out and we kept getting garbled data going back to the
user. And it was because he hadn’t followed the proper model. If you put
something executable inside of that last step, it’s just going to mess up
anybody who comes after you, probably even mess you up when you come back to
your program six months later.
Lou: That’s right. So one
thing that I’ll show you the example that I have and then we can go through how
to build it. So we had the original portable class library that we
built, it had that task manager in there. We had a bunch of logic in there and
ill drop it down here. We had get your tasks list, or
authenticate the user, get a specific task by an ID. That
kind of thing. And so that’s where all the logic lives. That’s the
object that kind of handles all that proxing between the Google service and
pulling the data and so on. But then I actually built a really simple Windows
phone app, and what you’ll see here is the example that the first thing the
user is going to see is a button that they’re going to basically click and log
in. And you’ll notice that it’s not overly complex, because it’s a bunch of
white space in here. But you’ll notice that there’s still a lot of lines of the XAML, the XML for the UI. Even though there’s not
logic in there. You’ll notice that I’m actually binding to a click event. So if
you were to put a whole bunch of logic in here and a whole bunch of click
events and then you have a code behind file and then a lot of code in that code
behind file, it gets really complex. My code behind file- if I zoom out- is only like 50 lines long really.
Fr. Robert: Right. and actually if you go back to
that window, all this code that you have in here, if you’ve ever done any CSS
or HTML programming, it looks a lot like this. You’re defining how it looks, you’re naming fields so that they can be accessed by
other elements that are going to use the UI. This program is just designing
what you’re going to see on your screen. And again, everything else is going to
happen behind the scenes.
Lou: That’s right. Try to keep it simple.
For instance, I can get even more complex and build a theming file and all
these other files that allow you to make it a little simpler- so then you don’t
have the style and stuff in your XAML file too, but for not we just kind of put
everything in one file. Like the foreground color and the text and the font
style and all that stuff. But you can actually simplify the UI XAML file even
more by using theming and template files as well. Right now we didn’t do that,
but again, this is just too kind of show how to build a very simple UI and then
manufacture that over to Android or iOS too.
Fr. Robert: Right. Now push us forward. Now you’ve
got the basic structure of what your iOS app is going to do. We know where the
code lives, it’s actually behind the UI, and it’s not part of it. Where do we
go from here?
Lou: Sure. One of the things we want to do
is show you how to get this to compile and run in the visual studio express
version and then into Xamarin. So one of the things that a
user noticed was that they had a console app and then the portable class
library in one solution. And the problem with that is I guess, the way
that visual studio express works is you either get it to use it for the phone or
you get it for the desktop. You can’t use it for both. And so both projects
that were in there were for both. And so the work around was
to remove the console app in there and then go ahead and add the Windows
phone version of it.
Fr. Robert: Can you show us how you would do that?
Go ahead and guide us through that process.
Lou: Yes, no problem. So one of the things I’ll
show you- ill pop open the console app by itself here. And then once we do that
you’ll see that there’s actually the console app in the solution viewer. And
once I actually go over here, this is already built actually. But normally
there would be already a console app in here. And so I would basically click on
the console app and I would just go down to remove. And I can remove it out. And
we’ll actually give you a project with just the portable class in it, and then
you can go ahead and remove that project, the project will already be removed
and you won’t have any problem. And then what you want to do is add your
universal app. So what I did was, you can click new project, and what’ll
actually pop up is all the templates. And if you already installed Xamarin Studio,
which you can get from Xamarin.com, you’ll notice in here that there’s several other projects that don’t look familiar. For instance Android, iOS and things that you can build for an
iPad. You can build it for any versions of Android that you can imagine.
And it gives you templates for those. So what you can do- another thing I can
also do is add what we call a universal store app too. And that’s what I did. I
added a universal store app, and that allows me to not only add a tablet
version for Windows store, but also a phone version. So what you’ll get is
these two guys right here, you’ll get a Windows phone empty project and a Windows
tablet empty project.
Fr. Robert: Nice.
Lou: So once you have that, now you have a-
so not only are you starting to build your Windows phone and Windows tablet
version- you notice I still only have this portable class—so next thing you
want to do is click on the properties of this project and you’ll notice it
gives me my portable class library assembly name and then what we’re going to
target. So this is really important because if you’re not targeting the right
stuff, it’s not going to work. So what you need to do is tell it yes, I do want
to target it for .net45, I want to target it for Windows store app and Windows
8.1, I want to target it for Windows phone app Windows 8.1, but I also want to
target it for Android and iOS. And so that’ll make it so the compiler will kind
of emit the Xamarin versions of these as well.
Fr. Robert: Right. Well, it’s just going to go
through your code and make sure that all the little subtle changes are made so
that whatever commands you’re using will execute on each OS.
Lou: Right, exactly. You’re actually going
to see something interesting down here, and I’m glad this happened because
everyone can kind of see what you can do when this happens. So you’re getting
an error here saying that the nugget package installed is not current. Which means that you should probably go and update it, because the
ones that Xamarin are using are probably newer and you need to update yours. So what you can do is kind of go over to all your projects here or go up to
tools-packet manager here. And you can go to the ones that you have installed.
And you’ll notice that there’s the Microsoft VCL components.
And you can actually manage that and upgrade that. But the one that they want
is called Microsoft VCL. So you can go and find Microsoft VCL. And that’s for
online. Microsoft VCL, and then you want to install the one that comes up here.
And then once you install that one, it will actually add all of the appropriate
files and this will kind of go away. What you’ll get is this guy right here
that actually has the appropriate stuff in here. So you have the Microsoft VCL,
which is the base class library, and then all the other APIs that you already
have in here. And then you can go start building your interface. Once you’re
done with that though, this is the cool part. I’m going to switch from Visual Studio
to Xamarin. And Xamarin Studio you can get from xamarin.com. And what you’re
going to see here is this guy in here. It kind of looks like
a version of Visual Studio or Eclipse, if you’ve ever used Eclipse before, on
Android. And you can kind of jump in and create a new solution, you can do whatever you want. What I’m going to do is just open up what I
already have. Which is this task console application we’ve
already built. And what you’ll notice in here is I already have my
portable class library and I already have my Windows phone and Windows. You
notice those kind of get greyed out and they’re saying you can’t build that in
here. But what you can do is do this Android app. And so what I did here is you
can kind of go and go to project and click add packages and you can actually add an Android app in here. You can add iOS or
Android and you can create an Android app in here. And what you’ll get is kind
of a default view. And so now what you have to do is now you can basically
reference in here your tasks library that you already have. So you check the
box right here in references and you hit go. And now you are actually
referencing from your Android project, the PCL. The portable
class library that you built. So basically it automatically hooks it up
for you. So now you hit ok, and now boom, my Android is now referencing the
tasks library. And so now that task manager that’s inside of there, I can use.
So that makes it super powerful because now I wrote the code in C Sharp, but I’m
going to do it in Android.
Fr. Robert: There are some people who are glossing
over right now. What you’ve just shown us is you have been able to take
software, programs that you’ve been writing in C Sharp, and by bringing it to
Xamarin, Xamarin now looks at it and says oh, okay, this applies to this, this
applies to this, now go ahead and use it in Android.
Lou: That’s right. And honestly there’s not magic here. This is exactly how easy it is. I haven’t
done anything ahead of time. You basically just open the project in Xamarin
studios if you’ve got the lastet one it should match your Visual Studio. You
open the guy up, and then you can basically add an Android version of that app.
Now the key here is the UI is not going to be done. So that’s kind of where you
have to go in and rebuild the UI components. So that’s why the simpler that you
do it, the easier- because you have to use Android versions of those kinds of
controls. You don’t get that for free, but there is a version of Xamarin called
Xamarin forms, which you actually pay for. And what they can do is they can
take your Windows version and compile your Windows UI XAML and actually make an
Android version of it. So that makes it so that you can just build a UI once
and they can kind of build it up for you for Android and iOS.
Fr. Robert: Yeah. Basically for the purpose of
Coding 101, if you are just testing it, get the free version. It’s not going to
cost you anything. It’s only when you start to get into professional app
development, when you have something you’re going to want to sell, then it’s going to start costing you money. But it’s a great
tool to have in your toolbox.
Lou: Right. so the way they do it for free,
is they actually make it so that if your package that you’re deploying to the
platform, the actual C Sharp or dot net package you’re compiling, if its
smaller, than you can do it for free and use their tools for free. And the way
they do that is they get you to kind of test it out and utilize it. Some people
have actually built apps that are so small but still are really cool, and they’re
still able to use it for free. So that’s kind of the key. If you can do really
good job of making sure your logic is really small, you can still use it for
free.
Fr. Robert: So remember folks, small apps are
better.
Lou: That’s right. Small
and useful apps.
Fr. Robert: All right, take us through. So now
we’re in Xamarin and its now recognized all my libraries, has brought over my
code, and now I get to design my app for Android, how do I do that?
Lou: So they also make it super easy. You’ll
see underneath resources, so this is kind of what the project looks like up
front. You have all these folders. And we won’t go through all of what the
folders are, but what we want to do is, we have what we call the main activity.
You notice again it’s still a C Sharp file. It’s a dot CS file and this is just
the out of the box stuff that you get in here, this code. And you’ll notice it
has an on create method and it’s just an event when you’re Android app loads up
for the first time it’s going to go unload what we call the main window. And so
its saying the main window is inside a resource, layout, main.
So let’s go look in there. So resources, layout, and there’s main right there. So
let’s go ahead and open that guy up. And you’ll notice the first thing you’ll
see is it’ll actually render an Android version of it. And you can change the orientation, you can change what device, Nexus, Galaxy
Nexus, and Android TV. Whichever one you want. You can
actually customize it to using the AVD manager. You actually have to install
the Android SDK. Which Xamarin will do for you? And you can go and create new
devices, using their tool in here. How much ram it has and
how much internal storage.
Fr. Robert: Let’s stay with something that’s in the
box. Like Nexus 4, let’s go with that.
Lou: Yep. So, Nexus 4! And then you want to
make sure you choose the right version. Right now there is support for Android
Lollipop, but we could go all the way down to what the norm is today. I think
its Android 4.4 or 4.4.4. So I’m going to go ahead and do that. And again, all
languages and it actually allows you to specify what mode you want it to be in.
right now we just want normal mode. There’s no carmo or anything like that.
Then over here to the right you have a toolbox. So you can actually grab a
button, drag it onto the screen. We already have a button here already and
you’ll notice it says something. So what I can do is type in like “log in to
google” and now I have that going on. And I can actually hook up an event to-
you can click on behavior over here- and I can hook up the ability on the click
event down here, on click, hook it up to my tasks class here. So I can go to
twit.tvcoding101.tasksmanager.
Fr. Robert: And all you’re doing right now is tying
elements inside of this. This is the view. So it’s the actual screen that
someone would be seeing on their device. To methods and
processes that you have in the view model. So you’re going back into the
view model and saying I need this button to activate something over here and I
need this field, text box, to be filled by the view model and that’s how you
bind them.
Lou: Right. And so the way that Xamarin
works is they have this ability, you can go to the content or you can go to the
source. And again, the source looks very familiar to the XAML version of it. As
you can tell, it’s very familiar. Again, it prefixes it with Android, but it’s
very familiar. This is kind of the key here. You’re still building the UI
similar to the way Visual Studio builds it, but you get to kind of do it
through their special studio. Once you hook that up though, now all you have to
do is build it. And if you specify the device up here. It’s telling me again the VCL library is the incorrect one. So you want to go
ahead and update it. But what you want to do is once you’ve updated that one
like we did before, once you hit build you actually see the Android emulator
pop up, and then boom, you’ve got your app running in there. So it’s very, very
simple to kind of hook this up. This is just going to implement the log in
capabilities of the app, but again, you would go in here and add a list box and
I can go down here and find the list view and I can drag that on here and the
list view would allow me to basically list out my tasks once I have it. I can
also go ahead and add additional views if I wanted to do to that. So I can add
additional layouts. So add a view file, in a form and it could be a content
page and I could call it tasks view. And hit new. And now I actually have like
a task view. And again, it’s a XAML file. And I can basically build it out very
similar to how I did my main form. So again, they make it very easy and they
make it very similar to Visual Studio.
Fr. Robert: Right. The amazing thing is, playing with Xamarin really kind of makes you appreciate
good app design. Because it sounds like it’s so easy to make an app. You just
throw a bunch of things on the page. But there’s a fine line between providing
too much functionality, too much information, and not enough. An doing it this
way, it’s a really good way to remember, I may be processing a bunch of stuff
in this program, not all of it needs to be available to the user, which again, strengthens
the idea of splitting up view, view model, and model.
Lou: That’s right. So kind of the key take
away is when you’re building your portable class library, that’s the biggest
thing. That’s the thing you should pay a good majority of your time on as a
coder. Because that’s the thing that’s going to allow you to
become portable across all the different- especially in the Xamarin kind of
environment if you decide to use that. It allows you to kind of go
across all the different platforms. And that’s the key is, you wrote it once,
and now it gives you the ability to not waste your time in having to learn
objective C and Coco and then over to Android, learning that. And Java. You only have to learn C Sharp and you only have
to really understand UI layout like XAML which is very similar to how Xamarin
does it. So once you learn those two concepts you can kind of basically build
an app and deploy it to all these platforms.
Fr. Robert: Now Lou, I gotta ask you, this was a
question asked by 8bitSteve in our chat room. He’s saying “wait a minute, this
looks too good to be true, if it’s this easy to make sure that your portable
library is good, and then build an app for every device, why is it that we
don’t see more developers releasing apps for every device at the same time?” it
would seem that this would be a no brainer. Why is this not the standard?
Lou: It’s a good question. Honestly, Xamarin
is fairly new. They used to have one called mono framework and mono develop. This one is even newer than that and this
makes the ability to go across platforms really easy. Now, sometimes when
you’re deploying larger apps, like let’s say you already have a game or you
already have an app that’s build for a business, sometimes those apps are
fairly large and so they need to basically be compiled in Xamarin to work on
those. And when they’re large like that, Xamarin says okay, well we’re doing a
lot of work for you so why don’t you go ahead and pay us a fee, and then you’ll
allow you to go ahead and—so sometimes those fees are a little larger than some
businesses are willing to pay. Honestly, if you have a successful application
on one of the platforms already, and you’re already making some money, I would
say it would be okay to spend maybe 4 or $500 dollars to convert that to the
other platforms without ever really having to write additional code. So that to
me is valuable. But to build an app from scratch, if it’s a small app and you’re
going across platforms, honestly, it really is a no brainer. It seems too good
to be true, but honestly it was super easy for me to kind of build this out
without even using it. There’s a lot of great videos
by Xamarin, if you go to xamarin.com. I sound like I’m doing a
add for them.
Fr. Robert: Wait! Disclaimer. So Lou does not work for Xamarin, he does not get paid commission by Xamarin,
he has no connection to Xamarin other than the fact that he uses their tool.
Lou: I just appreciate it. Because I’m not
an iOS developer and in order for me to build an iOS app, I would have to go
learn a whole bunch of things I’m not familiar with. So this is a really easy
way for us to do it. And again, it is too good to be true, but it does work. It
works really well.
Fr. Robert: You know I think maybe the two of us
need to get someone from Xamarin and just have a sit down with them on how they
make these tools because, you just said “listen, I’m not an iOS developer”, but
if you have these kinds of tools, you are an iOS developer. You just haven’t
developed for iOS yet.
Lou: That’s right. I think the key is, they make it so easy. With iOS it’s a little more
difficult because you do have to have a Mac in order to do this. Or OSX. But android, they make it even easier because you
can install the SDK on Windows and all that stuff. But yeah, you don’t have to
have the intimate knowledge of all these other platforms. And some people do, I
mean granted, there’s some really smart people, especially in the TWiT network,
TWiT group, TWiT fans, there’s some really smart people that know all the
difference. And they’re probably like eeh, why spend the money when I can do it
myself. And yeah, I agree I think if you have the knowledge to do it, more
power to you. But this makes it easier for people who just don’t have the time
and/or the knowledge to go across platforms.
Fr. Robert: Yeah. Actually Jeff in the chatroom
comes up with a really good point. This is not just Xamarin, this argument has been used for pretty much every emulative software solution I’ve
ever seen. He says “Xamarin typically has libraries that may slow you down
because it has to emulate certain commands.” That’s always true. But Lou,
follow me here. It’s become less and less important. I mean, it used to be that
you always wanted to write for a particular platform in the language that
platform worked best because the power was limited. Today’s devices are so dang
powerful that, especially from writing a simple app, you’re not going to be
able to notice the difference. It’s not going to slow down the system
appreciatively and it won’t even suck more battery, beyond a couple percentage
points. So yes, it will slow you down, but I don’t think that’s a good reason
not to use it anymore.
Lou: Yeah. That’s the key, they don’t necessarily always emulate anything now. They actually find ways to
compile them down to native resources. And so that’s kind of the key is, they’re
getting a lot better- it’s not like they’re running the dot net framework fully
on your iOS or Android device. They’ve created an interface layer to the native
layers of those platforms and then they’re actually running it on there. So
yeah, it’s getting a ton better. And even with every version of dot net,
especially the latest ones, they can compile down to almost machine code and
you’re running just native machine code on your application. So there’s almost
a point where there’s almost not any difference between native and managed. So
it all depends on what you’re doing. If you’re doing a lot of graphics and
stuff, sometimes there is. But again, XAML, there’s points where you can
compile into direct X and if you played a game on an Xbox before, all those
games are built in Direct X, they’re just a framework on top of all the
graphics processes that are out there. So I mean, they do have the capabilities
to do all this native capabilities and the speed of whatever that platform runs
at.
Fr. Robert: Right. Well Lou, I’d say that for
homework we should be asking the folks at home to take- again, we’re going to
provide you all the code in the show notes, just download the zip file on
packet and you’ll have the entire library that we’ve been working on for this
entire build an app module. And then use Xamarin. And figure out a device that
you want to use and go ahead and start developing the view for it. I’d be
interested in seeing what people come up with. Because you’re all going to take
the same code, and you’re all, I guarantee, you’re going to come up with
different ways of presenting that information through the interface. Does that
sound about right? I mean, we’ve given them enough information, enough
knowledge to be able to do that right Lou?
Lou: Oh yeah. I mean, again, we’re going to
give them an example that actually has the Windows store and the Windows phone
app in there. And again, it has the log in button, the log in screen, the
download of the tasks and the tasks to hook up to the code that we gave them
before. And then as a second project, I’ll send it out, it’ll actually have the Android in there if you have Xamarin installed. And so that’ll
make it so that they can open both, and hopefully we’ll give them enough tools
to build out and do what they need to do to do it themselves.
Fr. Robert: Lou I need you to act the wizened guru
here, speaking out to the youngins, the ones who want to become code warriors.
As they start to design their apps- because this really is a shift. We’ve gone
from a lot of console style programming. Both with C Sharp
and with Python, with Perl. Now we’re looking at designing applications
that would run on the mobile devices that we use today. What’s the bit of wisdom
that you want to give programmers? I mean, there’s a
lot of things here to get confused about, what advice do you want to give?
Lou: So I think- you know you choose
whatever platform you’re interested in. I think that’s kind of the key first.
If you have an Android device, go and figure out what those tool sets are for
the Android device. But if you’re just starting out and you want to learn an
easy language, Javas and C Sharps are really easy languages to learn and they
all have great tooling. Really great places to go, netbeams for Java, eclipse
for Java, Visual Studio for C Sharp and miodevelop Xamarin studio for C Sharp.
And so these are all great places to start and there’s just so much. I mean, there’s
whole industries built around these things and videos and things that go around
and really just take those and have an idea going forward, like I want to build
this or I want to do that. I have an idea for an app but I haven’t been able to
build it. That’s the kind of thing you need to have going into this right. So
that’s kind of the key. Is once you have that, the tools are there for you and
use Coding 101 as a great fundamental learning building block for it, and then
branch out and start finding some other stuff too.
Fr. Robert: That’s Lou Maresca. Senior software engineer at Microsoft. Lou, could you
tell the folks at home where they can find you, your work and more coding
examples from our code warrior?
Lou: You bet. On twitter @LouMM, also feel
free to message me on twitter. I can always provide great links to examples and
videos and training. A lot of people ask me questions about where to find this
or that, or how to do this or that. Also the google+ community. I love to just read though the examples, Joe gives some great examples. Some
other great people on that page and I love to just provide great links there
too. And again, my day job. All my work is on syrum.dynamics.com.
Fr. Robert: Fantastic. Lou Maresca, as always, it
is an honor and privilege to have you on the show. And we will see a lot of you
in the future I’m hoping. Yes, are you still open to that? Have we soured the
taste in your mouth yet?
Lou: I’m ready to go.
Fr. Robert: Alright. Ladies and gentlemen, Lou
Maresca, we bid him farewell. He has been our code warrior. Now folks don’t
forget that we do this show every Thursday at 1:30pm pacific time. If you go to
live.twit.tv you can see the pre-show, the post show, everything in-between.
And as long as you’re watching live, why not jump into our chatroom at
irc.twit.tv. In fact, the chatroom lives right down there. Every time you write
something I’m reading it during the show. And I try to work in your questions
so that we can answer you in real time. If you can’t join us in real time or in
real studio, why not jump into our G+ community? This is the place to go if
you’re a beginner, intermediate or an expert in programming. You can find us at
plus.googe.com/twitcoding101. The nice thing about this community is because
we’ve got people of all experience levels, if you post a question it’s probably
going to get answered. If you’ve got expertise, it’s going to be called upon.
In fact, this is a ridiculously active group and we pull our examples out of
here all the time. Also don’t forget that you can find us on twitter. I’m at
twitter.com/padresj. That’s @padresj. If you follow me there you’ll be able to
see what I do in-between shows. What I do on TWiET. On
Monday, on Padre’s corner on Tuesday and on Know How and Coding 101 on Thursday. Brian, can you tell the folks where they can find you?
Brian: Oh
me, I wasn’t ready for that Padre. On Thursdays with you
doing Know How and TD and All about Android and this show. Doing projects with you on Know How and stuff. Check us out.
Fr. Robert: Folks this is the end of this module,
but it’s not the end of Coding 101, in fact, we’re
starting to move into our new format. Next week, we’ve got Smitty. If you’ve
ever gone to DefCon you know this man. He is an embedded electronics genius. He’s
going to show us the other side of programming. The side of programming that’s
actually tied to hardware and embedded processors. It’s all part of our revamp
and we do it because we love you. Until next time, I’m Robert Ballecer, this has
been Coding 101. End of line!