Coding 101 35 (Transcript)
Shannon Morse: Today on Coding 101 we are building an
app.
Netcasts you love from people you trust. This is TWiT. Bandwidth
for Coding 101 is provided by CacheFly. At cachefly.com. This episode of Coding 101 is brought to you by Squarespace. The
all in one platform that makes it fast and easy to create your own professional
website or online portfolio. For a free two week trial and 10% off, go
to Squarespace.com and use the offer code CODING.
Father Robert Ballecer: Welcome to
Coding 101. It’s a TWiT show where we introduce you into the wonderful world of
the code monkey. I’m father Robert Ballecer.
Shannon: And I’m Shannon Morse. Welcome friends
and enemies and everyone in between to our show today, Coding 101. Where we
introduce you to all the concepts you need to know to be a code warrior. Is
that weird?
Fr. Robert: Yeah. No, not weird at all. Now we’ve
been hitting the class boat for a while now and I think people are starting to
get it. We’ve been staying with it because it’s an important concept. We’re
going to be moving on today.
Shannon: Oh boy. I’m excited.
Fr. Robert: I’m excited and actually-
Shannon: I think that we have classes down.
Fr. Robert: We have classes down, we’re going to be introducing ourselves into a few more concepts that are going
to help people who actually want to make apps. So we’re not going to be stuck
in the console window anymore, we’re going to be building things that look
pretty.
Shannon: Aw man. Okay, I’m excited for that. But
first, of course, we have Snubs compiled. Because everybody
likes to see some examples right?
Fr. Robert: I love my compiled Snubs.
Shannon: So this week we actually got three
different great examples on our Google+ community, so I decided to just go
through all three of them. Because they’re awesome. So, the first one. And this one comes from Joe. So do you
guys remember in Perl when we were talking about regular expressions? Regex.
Fr. Robert: Of course.
Shannon: So he basically took that idea from
Perl, which is pretty much the same exact code, almost. And he compiled it to
work in C Sharp. Let me show you his code real quick. Ill actually show you how
it runs. So it says what is your favorite animal?
Remember this from Patrick’s example?
Fr. Robert: Of course.
Shannon: I’ll say Rabbit. You said rabbit. Yes
bunnies are the best. And then what is your favorite quote. Let’s see. Geronimooo oh my gaaawd. And then it goes Geronimoooo oh my
gaaawd. And then it goes, it puts them all on different lines, hit any key to
close. So I can go ahead and close that. So the nice thing about Joe’s example
is he puts in so many different comments on here. And he explains everything
that he included in here so you can understand it. The first one I wanted to point
out was up here. So he did this collections generic, and then down here he had
using system.text.regularexpressions;. So this is one
of the many, many different things that you can find on the MSDN website. They
have a whole bunch of different examples of classes and where they fall within
the library. The FCL library. And you can find all
sorts of amazing examples. I spent like two hours on there last night just
looking at hundreds of different examples of things you can include in your
code. And they’re all just built in. so they’re really, really easy to use. So
in this code, he basically just took it, you see that he has a class called
program. And then down here, he takes regex, he calls it rgx1 equals a new
regex. So it’s a new class.
Fr. Robert: Yeah. So we’re taking the class of
regex, so we’re creating a new object. Nice.
Shannon: Right. And then he’s also creating a
second one, a new regex object, and this one is going to be called rabbit. So
we have rabbit and bun. So it can take bunny or bunnies. Down here of course we
just have the write line, the string. Animal equals console read line. So it
reads whatever you output into it. And then down here we say if the regex is a
match, then it says you say whatever you entered, yes bunnies are the best.
Else you said, if you put in horse or cat or whatever, it’ll say okay, they’re aren’t as good as bunnies, of course. And then below
that we have the example about the favorite quotes. So the favorite quote line,
it just strings out the quote, console read line, and then we have another
object, rgx3, which is a new regex, and it reads the quote, separates it out
onto different lines, and then it outputs it to you and says “did you mean” and
then it puts them all on different lines. And then you just hit any key to
close, just like normal.
Fr. Robert: What I like about this is that it’s
taking a programming example that we had for a different language, and its estimating
it. It’s approximating the function inside of C Sharp. Which
is nice because it’s a good way to look at the differences between languages. The way that they work. C Sharp is definitely not
going to be Perl. It’s not going to be PHP or Python, but it does have a
specific way that it can do the same problems, and we like that.
Shannon: It’s beautiful. Our second one is also
from Joe as well. On this one he kind of had something to say to you Padre, he
said “now Padre’s downloader class is okay, but I wanted to do something that
would let me download a website right into a string.”
Fr. Robert: Which is very
helpful, okay. Dropping an entire website into a string, I like that.
Shannon: So we have the code pulled up on my
computer right here. So I’m going to go ahead and skip down to his actual code.
Again, he has just called a program, which is the generic class that you start
out with. Down here he’s made a new object. Wc= a new
web client. And then he downloads the information from that website and he
tries to look for- so down here you notice that he’s searching for an image
src= .wildcard. So it could be .jpeg or whatever. That kind
of tag within the HTML for that website. So he’s looking for an image.
Then we scroll down a little bit more. It tells you I found whatever the image
ends up being, it’ll download the picture for you and then you can save it into
whatever folder that you want to save it into. And ill scroll down a little bit
more just so you can see the rest of that code. So if I go ahead and build
this…
Fr. Robert: He actually has an exception built in
there, I like that.
Shannon: He does, yeah. So if it ends up not
being able to find any kind of picture of the day, it’ll just give you an error
and say that it didn’t find anything. So I’m going to start and it’s just going
to run automatically. It’ll say downloading. It’ll go ahead and pull out all
this information. It’ll say downloading picture, hit any key to exit. So I
downloaded this picture into y desktop. So if I go to my desktop, here’s the
picture of the day. Pretty cool.
Fr. Robert: Yeah. And like the podcast catcher,
that’s an incredibly useful bit of code, and a very useful class.
Shannon: It’s super useful, I love it.
Fr. Robert: Right. Imagine if you could just say,
you know what, I want you to scour my favorite websites every day, pull down
all the images and drop them into this folder. That’s a perfectly good use for
this piece of code, and if you wrote it right, it means that anybody else
should be able to interface with your class.
Shannon: Oh, absolutely. The next one I wanted
to share is from Darrel. So Darrel has been an ongoing contributor as well as
Joe, to our Google+ community, and he shares this one called sheep calc. which
is a simple C Sharp OOP demo. So an object oriented program demo. Of how to use
abstract base classes with subclasses and it explains polymorphism. Pretty interesting.
Fr. Robert: There are a lot of words there I don’t
understand.
Shannon: That’s okay. Go along with it. So I’m
going to go ahead and build this one real quickly. Make sure there are no
errors. And there shouldn’t be, I already ran it on my
computer before. So first thing it asks you is sheep
area calculator. So this is the calculator that we’re doing. Is it a square or
a circle? So I’m going to say I’m using a square. Enter the length of one of
the sides. 6. So the area is 36. Same thing for a circle, I’ll say number 2.
What is the length of the radius? What do you want it to be?
Fr. Robert: Oh, I don’t know. How
about 12.
Shannon: Okay, 12. Area,
452.389.
Fr. Robert: That’s about right.
Shannon: So, then that’s it. Then we just escape
out of here. Go ahead and close down that one. If we look at his code as well-
so you’ll notice in his, we have an abstract class. Bam. Right there. Where it has get detentions and calculate area for both of the abstract classes inside of
there. And then down here, public double get float. This basically looks for
what you’re entering. So if you entered any kind of invalid number, it’s going
to ask you to please reenter it. Pretty cool.
Fr. Robert: And then it’s just nice simple math.
Now remember, the thing about an abstract class is before you can instantiate,
before it can actually become an object, because its abstract, you have to fill
in all the missing methods. All the missing data. And
that’s what he does right here.
Shannon: That’s exactly what he’s doing. So then
we get the actual detentions of the square or circle or whatever you might be putting in. it asks you to enter the actual length of the
side, and then you get whatever the float number is. Yay. After that it just returns you the full value and he does a little bit of math
in here. Now he does have a whole bunch of comments in here, so it looks like
the code is really long. But in actuality, it’s pretty short. It’s only about
160 lines with the comments. So it’s not that long at all.
Fr. Robert: Which is what we want
to see. You should actually probably have more comments than you have
code. It makes it easier for the next programmer to pick it up.
Shannon: Yeah. So very easy to
understand, really, really great examples this week. And of course if
you guys want to enter our Google+ community too and join in and ask questions
or help others, go over to bit.ly/twitcoding101.
Fr. Robert: Now Shannon, those are cool examples,
now what if we could take those console apps, that little command window, and actually turn it into an app. something you can run
on a mobile device or a tablet.
Shannon: What? I’ve been waiting for this moment
for so long.
Fr. Robert: Well, we’re going to do it. Coming
right up we’re actually going to show you how to take the example that we gave
you last week, the podcast downloader, remember. We gave you the class that
allowed you to mess around and pull podcasts off of any site. Well, Lou Maresca
has done a little bit of work on the app and now it does more than give you a
little console warning that you’re downloading, yeah. We’ll take a look at it
in a bit, but before we do that, let’s take a little pause. Because
we’ve been talking a lot about these projects. Very cool projects right.
Sometimes you need a good way to present your projects. So
that they pop, so that they catch people’s attention. I mean, think
about it. If you were making the next app, you take the lesson that we have
today. And you design the next great app, but you have no way to tell people
about it. That’s not going to really do anything for anyone.
Shannon: I better have a nice place to put it.
Fr. Robert: You better have a nice place to put it.
And that means you have got to have a good domain, it means that you have to
have a good back end, it means that you have to have a
good interface, and it means that you’ve got to do all that for a price that’s
not going to break the bank.
Shannon: Where do we go Padre?
Fr. Robert: I’m glad you asked Snubs. Because you go to SquareSpace. Now what is SquareSpace?
Squarespace is the one stop shop for all your web presence needs. Now SquareSpace
is constantly improving their design, their platform, which is what I like
about them. They’ve got new features, they’ve got new
little bits and pieces that you can add to your websites. New
widgets. And templates that are just beautiful. They do have those 25
beautiful base templates but you can also alter them to alter your needs. If
you need something that’s going to say hey this is something to pay attention
to. Hey this is a new app, hey this is something
that’s beautiful, you can modify those templates to make it say what you want
them to say. Squarespace also has the best mobile experience. This is very
important. If you’ve got a website that just looks good on a desktop or just
looks good on a laptop, you’re missing out on the mobile revolution. You want
something that’s going to automatically adjust if you’re on an iPhone or a
tablet. And that’s what SquareSpace does. Now it’s also easy to use. If you
need help SquareSpace always has live chat and email support 24 hours a day, 7
days a week. But they’ve also got a completely redesigned customer help site
and forums as well as self-help videos. So if you just want to get the problem
solved by yourself, without having to call or email or chat, you can do that
too. Now they include hosting. It’s not one of those deals where you have to
buy every little bit by itself so the bills slowly
pile up and eventually you have to manage 3 different packages in order to get
your website running. No, you go to one place, you pay one price and they
handle everything for you. It starts at only $8 a month and it includes a free
domain name if you sign up for a year. Even their code is beautiful. This is
important for us on coding 101. Squarespace takes just as much pride in their
back end code as they do their front end. And they even have a developer
platform. So if you are that programmer with the next great app, you can
integrate your site into it. If you want to really dig into site customization
and developer accounts, which never expire, they’ll let you build exactly what
you need and host it in your SquareSpace. Now, here’s what we want you to do. We
want you to experience complete control. To edit all controls that affect the display of your website. Every
line of HTML, CSS and Java Script. We want you to use their Git and SFTP
tools. Because every template is actually a git repository. They’ve got versions that come standard with the packages. We want you to try
their developer tools. Which means less preprocessing, Jason
templating, script comboing, retina ready responsive image handling, and more. And you can do it all with a two week free trial that doesn’t take a credit
card. So go ahead and start building your website now. When you decide to sign
up for SquareSpace, make sure to use the offer code CODING to get 10% off. And to show your support for coding 101. We thank SquareSpace
for their support of coding 101. A better web awaits and it starts in a SquareSpace. Boop.
Shannon: Kind of is a webspace.
Fr. Robert: Everything is a webspace. Alright. So, as promised, we’re going to talk a little bit
about how we’re actually going to make our first killer app.
Shannon: I’m ready.
Fr. Robert: Are you ready?
Shannon: Yeah, I’m super excited.
Fr. Robert: Now, do you remember last week, we gave
people a class. A class that they could instantiate and it gave them a very
easy way to download something. You basically gave it the name of the video and
it would automatically start pulling the podcast.
Shannon: Yeah, and you could just save it
wherever you want. Super easy.
Fr. Robert: But that was all done in the console
and that was all hard coded. We thought well, why we don’t expand on that. Let’s
show people the real promise of object oriented programming. So Lou Maresca in
like, ten minutes, designed a program around that
class, that uses XAML, that uses a new model that we’re going to talk about
today. To create this. This should look familiar. Because we played with this last time. This is all of the
code that we have from the podcast downloader. Except this time we’re going to
do a little something different. When I start this program, and compile it, it’s
going to create this. So this is going to access the RSS feed that’s been
hardcoded. And when I retrieve it, it’ll tell me what’s on that RSS feed. This
is very simple coding. It’s gone to the RSS feed it said, okay, let me access
the server, let me find out what video podcasts are available. And it will
automatically update. So it’s not like a hardcoded list. As the RSS feed gets
updated, it will automatically update itself. One little more thing that you
could do inside of a podcasting app, is when you click it its actually going to
start the video inside the application.
Shannon: That’s awesome. And he did all of this
in C Sharp.
Fr. Robert: It’s all done in C Sharp and it’s all
done with the same download class. Now the cool thing about this is this is
ugly right now. This is just a developer window.
Shannon: Well, it’s prettier than what I can
make.
Fr. Robert: Exactly. But we could have rounded out
the edges here, we could have given it a background image, we could have worked
on the design. This is just to show functionality. And the functionality is
simple. Put the RSS feed here, retrieve it and then you can play anything
straight from that server.
Shannon: Oh man, that’s awesome.
Fr. Robert: Yeah. Now this is all going to be
available to everybody. So we’re going to make all of these project files
available for download. And if you download it and you compile it, it will run
exactly like this. But the challenge will be can you add functionality to this?
Or if you go ahead and watch the last episode of module one where we actually
talked about the presentation model, can you do things like add your own
background? Or add your own logo. Or make it useable on a mobile device?
Shannon: Ooh, I would love to see that.
Fr. Robert: Yeah. But let’s back up a little bit.
Because that’s cool to talk about the code that goes behind it and we’re
actually going to delve a little deeper as soon as Lou Maresca makes his entrance.
Shannon: I need to understand how to make this
happen.
Fr. Robert: We have to understand how to make it
happen but first, we have to go into the ivory tower. Are you ready for that?
Shannon: I’m so ready. Let’s do it.
Fr. Robert: This isn’t going to be some coding 102
stuff again, so I’m sorry if we lose you, but we think you’ve got classes, now
we want to confuse you again.
Shannon: I will yell at you if you confuse me.
Fr. Robert: We want to talk a little bit about the
Windows presentation foundation.
Shannon: What’s that?
Fr. Robert: That’s what we just did.
Shannon: Oh, okay.
Fr. Robert: But in order to assemble that, when we
look at that application, it actually helps to bring out a point that we’ve
been trying to make the last couple of weeks. Which is, why would you do object
oriented programming. Isn’t it easier just to go ahead and write all your code
and not worry about separating all your things into objects? Well, the
podcasting app is a perfect example of why you would. Because
we have that class. Because we have those objects, we had the ability to
reuse the same code and turn it into something beautiful rather something that
ran in the console right? It would take a lot of work around to do if you were
just using structured programming and you had to try to remember, this line does
this and this line does that.
Shannon: But more than that, it shows the basic
break down of the real world. This is what we talked about. What is the primary
purpose of Coding 101? It’s not to teach code, you can learn code anywhere, it’s
to teach people that you need to take a real world problem, break it down into
manageable chunks, and then solve those chunks with code.
Shannon: Right.
Fr. Robert: Okay, so. Thinking
caps on here. Question. Go ahead and go back to
my app. what needs to happen for this app to work? Because this is a basic app.
go through the steps.
Shannon: Well, first it needs to find the website
of the RSS.
Fr. Robert: Right. Very good. So it’s got to find the website, it’s got to find the data. And it’s got to
bring the data in. but once the data is in, what’s it going to do with it?
Shannon: So, then you’re going to retrieve. So it’s
going to pick and pull specific parts of that RSS feed and create this list for
you.
Fr. Robert: Right, right. And once we’ve got the
list... let’s say I’m interacting with the list, when I click on this list, it’s
got to talk to the module that had pulled the data, and it’s got to say hey, I
want this particular one.
Shannon: It needs to know exactly what file
you’re trying to get and then it needs to know what to do with that file to
play it.
Fr. Robert: Correct. Exactly. So what you’ve just done is you’ve broken down the basic components of what
this program is. There’s two main parts.
Shannon: Huh! That was object oriented coding in
RL.
Fr. Robert: There’s a part of the program that’s
going to access the external data source right. So that’s the server that was
pointed to by the RSS feed. And it’s going to get that data and make it
available. And then there’s the part of the program that actually interacts
with me. It’s not the same. I’ve got two different objects, at least. Two different objects, two different classes, one of which is
responsible for getting the data, the other object which is responsible for
presenting the data.
Shannon: That’s awesome. And that’s why you want
to separate it out.
Fr. Robert: It makes so much easier. It makes it a
lot easier when you think of it that way because then you can just code this
class to get the data, this class, all it does, whatever data is given to it,
it displays.
Shannon: That totally makes sense. It’s so easy
to understand once you actually break it down.
Fr. Robert: Now let’s confuse you. I want to talk
about something, it’s more the Microsoft programming
world. But you can apply this pattern to a lot of different languages. So that
is MVVM.
Shannon: I don’t know what that is.
Fr. Robert: Model, view, view, model.
Shannon: Model, view, view, model?
Fr. Robert: Right. It’s not a programming language,
it’s just a pattern. It’s just a way of thinking about how you’re going to
write your program.
Shannon: SO is that kind of like classes and
syntaxes….
Fr. Robert: No, it transcends all of that. So an
MVVM is not something you code. It’s doesn’t have a language associated with
it. It doesn’t even have an object that’s connected to it. It’s just like
saying this is the way I’m going to write my program.
Shannon: So what’s that have to do with us?
Fr. Robert: It has to do with us because it’s the
way that we’re going to do object oriented programming. It’s the way that we’re
going to write our C Sharp application. It’s the way that we’re going to turn
it into an app.
Shannon: So is it kind of like looking at
different ways to interpret language?
Fr. Robert: It’s more a different way to look at
how your program works. If you look at your screen right now, this is the MVVM
model. So I’ve got the view up top. That’s me. I’m viewing. Then I’ve got some
sort of data binding. Then I’ve got the view model. And below it I’ve got the
model. So the model is the data. The model is all the stuff that I have to pull
so that I have access to it. Then above it, you’ve to the object that pulls
that data and decides what data has to go up to the view and what information
from the view has to go back down.
Shannon: So it has several different steps to
the process.
Fr. Robert: Different steps to the process. Now let’s
break it down even more. So the model is the object that contains all the data.
Just think of it that way. That’s where you store the data that you’re going to
be using. The view is the UI. So I’ve now got the two sides. I’ve got the model here, I’ve got the view here. Some call it the
presentation because obviously it’s presenting data to me. The view takes the
data and it orders it in such a way that it makes it more appealing to me.
Shannon: This kind of reminds me of something
that has to do with networking called the OSI model. Where you start with the
data and you have seven different layers that get you to the presentation.
Fr. Robert: But it’s even better than that. Because
we talked about how object oriented programming allows us to sort of separate
out tasks. If I look it as MVVM, it means I can have one team and say your job
is the model, you’re the back end. All you do is deal with databases, you deal with retrieving data and making sure that we have it available.
Shannon: Right. I don have to make it look pretty, I just have to find the information.
Fr. Robert: Right. And then you put the designers
on the view module. You say you are my designers, you’re going to receive this
kind of data, and you need to make it look pretty.
Shannon: Right.
Fr. Robert: Then I have a third team and they get
that last class. And the last class is the view model. It’s the interface
between the two. And it’s to say, your team is going to decide what data gets
pulled up from the model and pushed to the view, and what data gets pulled from
the view and pushed to the model.
Shannon: They’re like the middle man.
Fr. Robert: They really are the interface. Now
something else that MVVM is really big on, is you want there to be some sort of
data binding between the view and the view model. Because you
want it to be interactive.
Shannon: It wouldn’t work if you didn’t have
that binding between them, right?
Fr. Robert: Well, it would still work but there’s
what we call passive binding. Like what we used to do in C Sharp where there’s
a static menu. That menu will never change. If I’ve got my data binded, I can
actually make my window change based on the data that’s coming into my model.
For example, this part, this user interface, is not static. It’s active. It
will always be changing based on the data that’s coming in the model in the
back.
Shannon: Yeah, makes sense.
Fr. Robert: I haven’t lost anyone have I?
Shannon: Not yet. I will let you know.
Fr. Robert: So, the reason why we want that, the
reason why we want to explain that is because when we’re designing an
application, we want to have that in the back of our mind all the time. What
part of the program am I writing that’s actually fetching the data that I want?
Especially since the app is probably going to be a web based app. it’s probably
going to pull something from a remote server, that model needs to be very good
at what it does. Getting data. My view has to be very
good at what it does. Which is creating a presentation. The view model is the smarts of the app. its deciding what goes where. If I
break it down that way, it means I can change any of those components without
having to rewrite the entire program.
Shannon: It also helps you understand if
something broke, where that break happened. Like if the presentation was ugly, you
know exactly where to go.
Fr. Robert: Exactly. If the presentation was ugly,
but the data was getting there, it means that the model and the view model are
fine, it’s the view that’s messed up. If the UI looks fine and it looks as if
the data is getting into the database, but it’s not getting into the right
place, it’s the view model module. Or if there’s no data coming in whatsoever,
it’s the model that’s not getting it correctly.
Shannon: Wow, that’s such an interesting way to
look at it.
Fr. Robert: And this is the power of object
oriented programming. This is why we separate things out. Because, especially
as the application gets more and more complicated, you need that separation. Or
you’re going to end up pouring over thousands, tens of thousands, hundreds of
thousands of lines of code, trying to figure out where you made your mistake.
Shannon: Code monkey 23 in the chat said it
actually makes life a lot easier when you use these kinds of patterns. Every
app is structured the same way so it’s easy to decipher without reading every single
line. That’s great.
Fr. Robert: Exactly. Because it means that if I’m
writing the view module, I don’t have to care how I got the data. All I need to
know is that it gave me 3 parameters. It said, here’s the data, here’s the
actions you can take, and this is what can happen after. That’s the only thing
I can program. Hopefully our audience understands.
Shannon: But if you don’t, ask us questions.
Fr. Robert: Absolutely. But now is the time where we’re going to bring in the man who makes it all
work out. Ladies and gentlemen you know him, you love
him, back from the dead, Mr. Lou Maresca. Sr. product
developer at Microsoft. Lou, so good to see you my
friend.
Lou Maresca: Hey guys, it’s
good to see you too.
Fr. Robert: Now you know this MVVM, this is not
what I did when I was programming in college. But this is an exciting way to
think about things and it does really sort of crystalize why you would use
object oriented programming. You do it so that you can have those very neat
delineations between the problems solving that takes place to make an
application work.
Lou: Right, exactly. I think it’s our legacy
at Microsoft to just put into acronyms behind everything. But like MVVM sounds
like it’s really complex, but it’s just a really simple- you guys did a really
good job explaining it, much better than I probably would have done. Around
just explaining what that means, which is creating a model,
which is a bunch of data, and creating a nice pretty view to create that data. But then how do we get the data to the actual UI, well, we do that by kind of
gluing it together with the view model. So I think that’s exactly what that’s
supposed to do. And like a lot of people were saying in the chatroom, this
pattern is being developed and used across many platforms. Like Android does it
today. They have a view, and then the model and then they bind it together. And
same thing with iOS programming, Mac OS programming, Windows store app
programming. Everything is kind of following a very similar pattern today,
because of a lot of the advantages you get. One of the biggest ones that, as
the app gets really big, is the ability to test those
components. So like if I don’t actually have to show the UI in order to test
the fact that I’m getting the data correctly, so I can just spin up, create a
little test around the model side of the code. And then I don’t have to have a
bunch of PCs showing the UI in order to run or test the app. you can just run
against the model component. And same thing in order to test that I’m getting
the right data and make it look correct so that when I show it in the UI, I can
just test the view model. So it’s very important. And it doesn’t make sense in
this point in the game, but once you get to a bigger app, like you were saying,
it’s very important.
Fr. Robert: Right. I was just thinking that if you
look at all the major developer platforms, so go ahead and developed in what is
it now, Swift? For iOS? Look at their development
platform, or go look at the Android development platform. They all are, in one
way, shape or form, MVVM. Like Google Play services is a big MVVM playground.
The whole idea is, why would you want to rewrite the
back end? Use our back end, focus on the fact that we’re going to give you this
data, you write the view model and the view, and everything’s good.
Shannon: Well it makes sense. Why would you redo
something that somebody already did?
Fr. Robert: Right. Its taking
object orientated programming and its putting the internet into it. And
the internet, that back end can come from anywhere. It doesn’t have to come
from- I don’t have to write it. Lou can you actually take us
through your program? So take us through the program that you wrote to
be the more advanced podcast catcher. Because there is a big
thing in there. There’s XAML. XAML is a huge part- it is the view. So
explain how that works.
Lou: Sure. So Joe in the Google+ was saying,
hey I’ve got an easier way to download stuff from webpages or HTML. So I
actually, I didn’t steal his code, but I basically used his concept to kind of
simplify the podcast catcher download. Because I think I wrote the one that
allows you to download in many different threads and asynchronies, and I was
like that’s too complex. So I used his thought to use this other thing called
web client. Which is a lot simpler. So that made this
app a lot simpler and then we can kind of focus on the XAML side. The UI side of it all. This is the app. what I’m going to do
is actually build another app version of it. So really quick, when we do a new
project today, it gives you the option to do a WPFF which is a windows
presentation foundation app. you can do a windows store app. you can do a blank
app or a windows run time app or any time of pivot app. all of these use this
thing called XAML. And basically what it is, is it’s
just a declarative market language. Just like the HTML is. So if you’ve ever
looked at HTML code where you have a bunch of XML in it, that’s exactly what XAML is. It’s just a way to describe UI using XML.
Fr. Robert: Let me pause for a second there,
someone in the chatroom is saying people say XAML? He just says XML. XAML is
actually different from XML. XAML looks like XML, but XAML. Xaml stands for extensible
application markup language. It’s a type of XML that’s specifically designed
for building the view in the MVVM model.
Lou: Yes, yes. So that’s important. Because
that’s one of the things that even the Android version of this- so Android has
their application XML, it allows you to do data binding as well. So they
basically extended the markup languages of today, like HTML or standard XML,
and they allow you to do application logic in them. So that’s kind of the key.
So if I create this WPF app, the first thing that you’ll see is it will create
a view. And it’ll be kind of sitting in front of you here in the designer. They
call it the designer. And you’ll be able to see- its loading the designer so
you can see there’s nothing here yet. But down here there’s a bunch of XML, or
markup. And then a really easy thing to do in this is basically just go over to
the toolbox to the left of your application over here, and you can just start
dragging stuff up here. Like I can put a button and I can put label. And I want
to change what the label says… so I can put whatever I want here, that kind of
thing. Then you notice down here it’s actually changing this. So you don’t
necessarily have to touch this code down here at all if you really don’t want
to. So just like Squarespace, you can build a really cool app using their designer, you don’t actually have to touch the underlying
code behind it if you don’t want to. So that’s kind of the key. If I wanted to
make this button do something I can just double click on it. And it’ll say well
okay ill create some code behind it and I’ll take you to where the code is at
and now I can put some code in here to do something when somebody clicks the
button. So it’s a really, really simple way of building an app. but there are
some complex components to XAML. Like you were saying. Let’s say I didn’t want to put the code in the code behind. I wanted to say they
let me bind this to some event somewhere else. And that’s called data binding.
We won’t get to that today, but really the complexity behind this is like you
said, separating those layers. Creating the view, get a
designer to get here and use this really cool designer and build a
really nice looking app. without really needing any code. And then someone
builds the code and then at some point we kind of put them together, and we
bind them together. And so that’s the important part. Because
you don’t always have the same person doing both. The people who can do
both are very, very talented. I’m not one of them. I can’t do the really fancy
stuff.
Fr. Robert: Codemonkey23 in the chat room is saying
this is all specific, its proprietary to Microsoft, but actually, Microsoft
contributed XAML to the open assurance alliance. Or something
or another. Which basically means that anyone can use
this. They opened it up to the world. It’s not proprietary to Microsoft, anyone can take it, run with it and develop their
own flavor. That’s fine as long as they contribute it back. So in other words,
this is a really good way to develop applications and it doesn’t necessarily
have to be a Microsoft application.
Lou: So one of the really cool neat things
that- there’s a company called Zamerin and they’ve built this really amazing
platform that allows you to build UIs and code in visual studio. And then for
like let’s say a Windows phone app, and then it allows you to run it through
their tools and actually generate and create iOS and Android versions of those
apps too. It’s super powerful and the reason why they’re able to do that is
because this stuff is all open source and they were able to build tools on top
of it. So that’s a huge key behind this. A lot of people don’t know that tool
exists, but it lets you build an app for multiple different platforms and you
only really have to build the app components once. UI components might need to
be tweaked a little bit, based off of the UI in iOS and Android, but the actual
app code can be coded once. So it’s kind of cool.
Fr. Robert: Now I will say this. We will be giving
you the entire package. It’s just like we’ve done for the previous weeks. Where
it’s not going to be on GitHub, it’s going to be in a zip file in a link in our
show notes. Which will allow you to download the entire
project. Because you don’t just need the project file, you need all the
associated files. Which means to be able to download,
uncompress, open up the project, and run this immediately. Now what we
would like you to do, Snubs you can join in on this here, now that you know
that it works, we want you to take that XAML interface and we want you to poke
around. We want you to play-
Shannon: Oh boy. You want me to break it?
Fr. Robert: Break it, break it. And then reload it, who cares. See if you can assign it to a different-
right now it’s set for our podcast feed, assign it to
hack 5, assign it to techzilla. Assign it to someone else. It’s all about
whether or not you know what the different parts of the program do. We’ve done
a lot on the theoretical today, but get nitty and gritty. Get in there, get
coding, and see if you can figure out what is associated with what.
Shannon: Ooh, I’m so excited to do fun things.
Fr. Robert: Yeah. This is fun. And again, Lou,
thank you for creating this. Because this is a really cool
piece of programming.
Shannon: This is a great example.
Fr. Robert: Yeah.
Shannon: Object oriented programming.
Fr. Robert: This is everything that we’ve been
talking about.
Shannon: Why you want it so much.
Fr. Robert: No Lou, before we go away, you did kind
of want to blow people’s minds a little bit with something else. Maybe a little nugget of wisdom?
Lou: Yeah, so you want to talk about Nugget
or do you want to just talk about concept?
Fr. Robert: We’ve got time, let’s go ahead and talk
a little bit about nugget.
Lou: Okay. So one of the big things around
development today is that you don’t want to do everything yourself. I mean, you
really don’t. If you do, you’re crazy. Because there’s so many people out there that are running into the same problems that you’re
having today, and in order to make sure that you’re productive in building your
apps, you have to sometimes reuse that stuff. I mean, that’s the whole big
thing. That’s one of the core things that Microsoft now is- we’re trying to
find a way to reuse a lot of people’s work that they’ve already done. And so
one of the ways to do that is obviously open source. But the problem with open
source is that sometimes it’s really hard to find. Like where do I find the
version of it, where do I find the code for it, what’s the right code? Is the
correct version of that code? How do I get it into my project? That kind of thing. And so Microsoft created a way in visual
studio to do that and it’s basically an open source package handler called
nugget. And basically, if you show my screen real quick I’ll show you where you
can get it. Underneath your tools menu, you can go into your extensions and
updates. And in here you can actually just search for online. Search for 9 and
nugget. And this will show up at the top, the nugget package manager. So if you basically install or download the nugget package manager. And what this will do, this guy, it’ll allow you to actually go through and
search through nugget- and what nugget is, is just a big repository of open
source code where people have done really amazing things. And I actually used a
source of it, a version of it, in this social app that we showed last week.
Which I used the link to twitter nugget project. So if I go into tools now it’ll
actually show up this nugget package manager popped up here, and I can actually
click on manage nugget package for solution and it’ll show me all the nuggets-
packages that I have in here. And the cool thing about it is install packages
is this link to twitter one. And I can click on manage here and it’ll allow me
to download the latest update for that and it’ll add all the files I need for
the project, it’ll find everything that I need. It does all the work for me. Because normally id have to go out and piece it all together
myself. So this is huge and you can actually search online too. So let’s
say I wanted to get like a Facebook app.
Shannon: I was going to ask you about that. Like
how do I know if something I need is available on nugget?
Lou: Yeah you can just go to nugget.org or
you can just go in here and do a search for online. And there’s a Facebook sdk
nugget package. That basically simplifies that for your phone app or for your
web app. and so that’s why I use the twitter- the link to twitter one. Because that simplified the ability to talk to twitter. That’s why that code was so simple, the one we showed last week to be able to
host to twitter. So nugget takes a little time to get used to, but the coolest
thing about it is it lets you stay inside of visual studio in order to piece
your app together. So you’re like well, I don’t really
understand how to write code on how to log into Facebook or twitter, and I
don’t want to even learn that type of code. Then go out to nugget. Find
out if there’s somebody who might have already written a bunch of classes,
objects for you. And then you can bind that in your code.
Fr. Robert: Which is why you want to be using the
MVVM pattern, because if you are, then you know, well, I get that class and
that’s handling the model for me. And maybe this class is handling the view
model for me. So all I have to do is do the view. And the entire app
development could be figuring out where you want to put the boxes and the
buttons.
Shannon: That will save so much time for so many
apps.
Fr. Robert: It’s more than that. There are so many
people who have good ideas for apps, but they’re locked because they don’t know
how to program. What you can do with this, if you’re using these packages, if
you’re using this pattern, it means, take someone else’s programming, and then
just reorganizing it so that it does what it wants your app to do. And then as
you grow, go ahead and go back through those classes and figure out, oh you
know what, I can write this one better. It’s all about the tinkering and this
give you- this is like Minecraft for programming. This gives you your Legos,
drop the Legos together and try to make something.
Shannon: That’s exactly what it is. I love it.
Fr. Robert: Now, Lou, next time I think we’ve got
to get into some data binding. We touched on it very, very briefly, but it’s
important because you want your view to be beautiful. And your view can’t be
beautiful unless it talks properly to the data behind it.
Shannon: Yeah, I would like to farther
understand data binding.
Fr. Robert: Yeah. Let’s do that. But homework for
the next time, download the example. Get our podcast catcher, and turn it into
something else. Shannon will be waiting for you on the groups, see if you can
impress us. See if you can make it something beautiful. See if maybe you can
turn it into something that you would want to download.
Shannon: And remember, if you guys are sharing
your codes specifically for this, you probably should put it into a zip file.
Not just share the .cs file with us.
Fr. Robert: Yeah. It’s not like the old programs
where you can just give us one page of code and it works. There’s a lot of classes, there’s a lot of associated files that go with the project.
Zip it up, give us a link and we’ll try to throw it onto the show. Lou Maresca,
thank you so very much for being our code warrior. It is always a pleasure to
have you.
Shannon: Thank you.
Lou: Thank you guys.
Fr. Robert: Showing off your coding goodness and I’ve
got to tell you, you’re one of a kind. Can you tell the folks at home where
they can find you, where they can find your work?
Lou: Yeah. @LouMM on Twitter and LouMM on
about me. And also all my work that we’ve been doing over the
last couple years CRM.dynamics.com. You can check it out there.
Fr. Robert: Lou Maresca,
from Microsoft, we salute you.
Lou: See you guys, thanks.
Fr. Robert: Now we know this was a lot of
information. Especially since we’ve got an entire program that we’re going to
let you download. It’s too bad that there’s no place that they could go to
easily get our notes and the links.
Shannon: You know,
I know a place. Yeah, it’s a website called twit.tv/code. Yeah.
There’s links, there’s GitHub links, there’s show notes. There’s ways to
contact us. I’m pretty sure they’ll be good over there.
Fr. Robert: Yeah. And not only
that but you can find ways to go ahead and get our episodes automatically to
your devices of choice. So if you want to subscribe to the show, go
ahead and drop over there. Or go to iTunes and subscribe to Coding 101. We’re
going to be bringing you some coding goodness every single week. You might as
well get it into your iPhone, your iPad, your Android tablet, your Mac, your
PC, your desktop, your Laptop, whatever it is.
Shannon: All the places. All
the things.
Fr. Robert: Get all the things.
Shannon: And of course, we’re on the Google
multiplex too. We’re at youtube.com/twitcoding101 and our Google+ community. I
made a bitly link for that one. Its bit.ly/twitcoding101. So find us on there, subscribe and share. Hey that rhymed.
Fr. Robert: Also. We do this show live. Drop by
live.twit.tv every Thursday at 1:30pm Pacific Time, and you’ll be able to see
the pre-show, the post show, all the stuff that gets left out of the middle. It’s
just kind of fun. We love having you. And if you drop in our
chatroom.
Shannon: The link on the site for the chatroom
is irc.twit.tv so you can join in and ask us questions if you need to know
anything. And we’ll answer them during the show if we see them show up.
Fr. Robert: Yeah, exactly. You’ve seen us call
stuff out from the chat room. You guys are on a TV right below our desk here. So
we’re always looking to see whether or not you’re ready for us to move onto the
next thing. Also, you probably should follow us on the twitters.
Shannon: Absolutely. I’m on there all the time. Ill
answer any questions that you guys have. I’m @snubs.
Fr. Robert: And I’m @Padresj.
That’s twitter.com. Until next time. I’m father Robert Ballecer.
Shannon: I’m Shannon Morse. End of line.