Coding Blocks - Got Any Hot Stacks?!
Episode Date: September 26, 2014In this episode, we have a discussion about what type of technology stack you should choose when you go to create your own project whether it be for profit or an open source type of deal. As program...mers, we often struggle with balancing our ADHD tendencies to code in every language known to man, or […]
Transcript
Discussion (0)
So what happens when a DBA walks into a NoSQL restaurant?
A DBA walks into a NoSQL restaurant.
I guess he can't find a table.
That's right.
He leaves because there's no tables.
Oh, my nerd.
You're listening to Coding Blocks, Episode 17.
Subscribe to us and leave us a review on iTunes, Stitcher, and more using your favorite
podcast app. And visit us at codingblocks.net where you can find show notes, examples,
discussion, and more. Send your feedback, questions, and rants to comments at codingblocks.net.
And follow us on Twitter at codingblocks or head over to www.codingblocks.net and you can find all
the social links at the top of the page.
And with that, welcome to Coding Blocks. I'm Alan Underwood. I'm Joe Zack. And I'm Mike Woutlaw.
And today we are talking a little bit about switching stacks. First, let's talk about some
reviews that we just recently got in iTunes. Or didn't. Or didn't. Oh, yeah. Let's talk about the one that we didn't.
Yeah, we're calling you out, Pascal Coder.
Because we've been, or me specifically, I've been called out several times.
Maybe that's what it is.
It could have been a joke.
This is for when your famous link article comes out, then that's when the review comes
out.
Is that what it is?
We're being held hostage now for a review? That's right.
That's awesome. But if that's truly
what happened here, that is beautiful.
Beautiful.
So Pascal Coulter
told us about his review, but I still don't see it.
And it was a sparkling
diamond. So I'm really looking forward to this review,
Pascal.
We would love to see that. I'm sure it's just
in like, you you know like a pending
status or something like that just like i'm looking forward to it that's right man whatever
all right so i've heard a little bit of uh of uh speculation about what this might be so
uh but we also got some reviews from trl 579 uh this this was a glowing review. This has become one of my favorite podcasts.
Most podcasts are either news-based or basically lectures.
Coding Blog strikes a great balance between genuinely fun to listen to
and technical enough that I get information I can actually use.
That's fantastic.
We also got another one from Benjamin Doctor.
And he says, a podcast about actually writing code.
And he goes on also with another writing code. So, um, and he goes on
also with another great review. So we appreciate those. If you guys don't mind, definitely take
time out to, uh, to leave that. I mean, we, we seriously get excited. We're like little kids
about this when we see these roll in. So, you know, definitely keep those rolling our way.
Yeah. If you haven't heard us ask enough to leave us a review, we, we really do appreciate it. And
it really does go a long way to help other people find the show as well.
But along that note, though, I do want to say that if you haven't already,
find two friends that listen to podcasts that you think would be interested in the show,
or even if you don't.
You know what?
If they don't, then that would be even more interesting for you.
But recommend the show to them. Yeah, and even if they don't, then that would be even more interesting for you. But recommend the show to them.
Yeah, and even if they don't listen to podcasts, make them.
Right?
I mean, we're not above that.
So another thing, so there were some more security breaches this week.
And while this really has nothing to do with programming specifically for us, although we could.
Well, not this week.
Not this week.
We could absolutely come back in the future
with like good programming practices to secure your information and all that but uh joe you found
a site yep um this is actually uh done by troy hunt who we've mentioned a few times he's got a
great site have i been pwned.com where you can type in your email address your username and it
searches through like a catalog of past breaches and paste and kind of sees if
you've been pasted somewhere yeah so definitely go check it out and the bonus question which which
cloud service is it on oh he's definitely an azure guy ah see i wasn't sure if you're gonna get that
one yeah in fact he made the greatest azure video ever i forget what it was called but it actually
had the greatest video ever in the title i think yeah that was the name of it it was on it was like a training video on how to use it
fair call it's been a while since i've seen that one oh yeah that that is definitely an azure site
you have the world's greatest azure demo so we'll have a link to that in the show notes beautiful
and then another thing that so i apparently i've spent a lot of time recently on the interwebs and I found a fantastic
engineering blog which comes from Instagram they are very open about sharing their technological
challenges that they've faced when trying to grow and scale their operations and they had this one
article that I thought was just killer and And this is from two years ago.
But they've also had newer ones that I was reading through as well.
And believe it or not, while NoSQL is all the rage and the hype nowadays,
they're still using a regular old RDBMS, which is Postgres SQL.
And I just found that extremely interesting because they talk about their thoughts about they were considering going to NoSQL.
And they give the whole idea and the reasons behind why they stuck with a typical relational database.
So we'll have a link there.
But just as a side note, if you are looking or facing challenging things, these engineering blogs like Netflix has one.
So I was about to say, I love the company blogs like this.
Yes.
Big fan.
Love them.
Seriously, you can get worlds of knowledge that you can only experience typically firsthand
if you're thrown in the middle of this stuff.
You can get serious amounts of knowledge on just the kinds of challenges you face when
dealing with scaling issues.
Well, I mean, you brought up Netflix.
Specifically, Netflix has been a wealth of information in their AWS implementation.
Yeah, so cloud services and all that.
I mean, if you guys haven't been out there and found some of these engineering blogs out there,
it is definitely worth a chance.
And we'll have links to both the Instagram and the Netflix ones in the show notes,
but seriously great information there also the uh high scale a high scalability blog easy for you to say
great information uh and then some other type of stuff they go out and talk to different companies
about their architectures excellent um and then there was another article I came across that
the MS dev show actually did a good job of going over this i had tweeted this out which
is just another reason to get on our twitter account because we're always putting great
little nuggets out there but uh with the breaches that we mentioned mentioned just a minute ago with
the have i been pwned.com there are best practices for storing passwords in a database and i found
this article and seriously they've got code examples for rails.net
PHP, like a lot of, of the major programming languages and what it boils down to. It's simple.
You shouldn't be trying to create your own crazy wacky way of, of hashing these things or anything.
So we'll leave a link in the show notes for this as well, but hopefully that will make your stuff
more secure. So you don't end up on one of these, uh been pwned.com you know lists yep and finally i wanted to mention a video i just saw
on youtube uh over here in the states uh halloween is coming up which is kind of like a scary holiday
and i saw a link to a video called the most epic halloween um what's the f word that for um
oh should i say it?
I can't remember.
It's not folly.
The prank.
That doesn't start with an F.
I was all excited.
I was getting ready to say it.
I don't know what I was thinking.
Frank?
Well, this is a weird turnabout.
But yeah, so the most epic Halloween prank.
And normally I stay away from pranks, and I stay away from...
The most epic Halloween prank is a totally different video.
Very different.
Don't get that.
Unbelievable.
But you guys have to see this.
So this guy, he attaches a Grim Reaper Halloween toy to a quadrocopter that's up 150 feet higher.
And he flies this thing around and scares the heck out of joggers and
bicyclists i'm sure it's not very nice or uh it's not very safe but it's hilarious how do you know
was it a friendly grim reaper well i saw the guy fall off his bike so no that wasn't uh that's his
fault yeah definitely check it out that. That was an entertaining one.
It starts off with this thing flying around a graveyard,
and you're like, what the heck?
And then when he starts flying it down on soccer fields,
and just go watch the video.
Yeah, excellent stuff.
In this one, I basically have been toying with the idea of creating some software as a service.
And with that, I've programmed in a ton of different languages,
as have we all mostly
javascript that just happens to be one of my favorites i'm just teasing so now here's here's
here's my question if you guys were going to go create something that you were going to try and
sell as a service to other companies right or to other people or whatever have you ever sat down
and thought about the technology stack you would use you know it's hard because i do a lot of c service to other companies, right? Or to other people or whatever. Have you ever sat down and
thought about the technology stack you would use? You know, it's hard because I do a lot of C sharp,
but I definitely favor that kind of environment and that tech stack. But when I think about
selling something, either if it's software as a service, I know it's cheaper to go Linux,
or if it's something I want people to install, you know, on their side, I've never heard someone say,
Oh, no, we're a Windows only shop. But I have heard someone say oh no we're a windows only shop but i have heard people say oh yeah linux only yeah and that's so that's kind of one of my frustrations
i love dot net i love programming in c sharp but when i when i look at what would be most cost
effective to at least get so one going into my thought process on this like one of my frustrations with xamarin
was okay you want to get started on xamarin you got to pony up up front before you've ever gotten
an idea even into any kind of shape that you could ever do anything with it you've come out
of pocket major well in all fairness though i mean there is the free version but to your point
though you can't you're limited in the size, the compile size for it.
So there's a limitation there.
So when I look at things like that, I start going, OK, so if I go Windows based and I'm footing the bill for this thing myself, then I'm going to be paying out of pocket a decent amount.
Now, Azure's definitely helped out with that.
Like you can get you can get hosting for what, like 10 bucks a month.
But but there is that cost up front which isn't a lot well if you're an msdm subscriber you get
azure hours already and now you're talking about some serious yeah i was gonna say if you're an
msdm subscriber you've already put a what a couple thousand i don't know how much it is now no msdm
subscription you can get it at the like the pro level. Not a renewal, but first-time buyer.
I want to say that's like $1,200, $1,300, something like that.
Okay, so $1,300.
So you've already ponied up a decent amount, right?
And another $1,000 for a Xamarin.
But, I mean, come on, if you're a.NET developer.
$250 for a ReSharper.
Yeah, look, and that's the whole thing, right?
You get into some expenses there.
My point is you've already paid some expense if you're a.NET developer.
Usually, usually. you get into some expenses there. My point is like, you've already paid some expensive. You're a.net developer.
Usually,
usually,
but a lot of people just,
they do it at work and that's what they,
you know, they're not doing it on the side.
So,
so with that,
like I started thinking about,
all right,
so let's say that I want to build something like a huge platform out there is
WordPress,
right?
I don't want to create anything in PHP at all,
ever.
Not that I'm hating on people who do this stuff
i just don't we hate it on javascript we're about to open up a php bag of whoop ass i mean but like
so seriously do you guys ever sit down and say man i just really want to bang out some php code today
uh no i don't quite word it that way i definitely you know i've got a wordpress blog you know we
use wordpress too it's definitely you know convenient but man i don't quite word it that way. I definitely, you know, I've got a WordPress blog. You know, we use WordPress too. It's definitely, you know, convenient.
But man, I don't know.
Did you hear PHP skipped version six, by the way?
I think that's hilarious.
Did they really?
Yeah, they're going from five to seven.
The deal is, you know, six is going to come out
and it kept getting bigger and bigger,
delayed and delayed.
But books came out for version six
and it was never actually officially released.
And now they're kind of like, you know what?
Six is just a mess. We're going to pull
back, change things, and we're going to go with 7.
That's insane. They couldn't really go with 6 because they had
all this published media out that was
going to be invalid and wrong. What is it
with version 6? Hopping the number.
Yeah, Perl 6, man. Oh my god, what a train
wreck. Yep.
But yeah, it sounds like it was the right
decision. I listened to the 3Devs
and maybe podcasts and they talked a lot about it.
And so it makes sense, but it's just kind of a little snicker snicker.
Yeah, that's ridiculous.
So if you were going to sit down and do this, let's talk the eventually you want to scale, right?
So we've talked about...
So we're talking some kind of cloud platform.
Potentially, yeah.
I mean, actually, that's probably a given at some point.
Maybe not starting out, eventually yes so we all know that when you do a a central database server
that's kind of your bottleneck that's that's where it starts and it ends typically now i know my sql
has sharding and some other you use a database so and that's and we're going to get into that
in a minute probably going to if you want users and
you know keeping track of billing it even just for your own stuff unless you're gonna be like
running quickbooks then you have database so let's talk about the database part first because
that's really where you're going to start because the language kind of stuff yeah you can throw
whatever you want on top of whatever your data storage is dude i have done so much reading now
on no sql databases which i also found out meant not
only sql i didn't even know that i just thought it was no sql so um you started to weep because
you're like oh this is equal yeah i like sql i'm a fan of sql but with that so you start looking at
obviously my sql is extremely popular they have what's called charting i've heard that that's not exactly fun to deal with and and i come from basically a background where i've done a lot
of relational you know schemas and that kind of thing so i really understand that i start reading
this no sequel stuff and they're like yeah denormalize everything throw it in there
and that just hurts my head like it feels so very wrong but then i
started that's not like a uh my sequel specific though no i didn't say my sequel oh no that's
what i said i know my sequel has it so i'm talking about uh inexpensive options i thought okay
inexpensive options that's how they can scale horizontally so if you just like i guess in the
past like sql server you just stand up sql server
box and just throw more hardware at it typically right i know they have scaling options but that's
usually what's done with it so that's when i started looking at all right no sql options out
there cassandra mongo couch all these things right there's so many of them right and you can probably
make the same argument from already BMS systems,
but there's a handful that most people talk about, right?
You have Oracle SQL Server, MySQL, and Postgres.
Those are usually the big ones that come up.
So now you get into NoSQL, which is all about scaling, right?
I mean, everything about that is about being able to scale horizontally,
fast reads, fast writes.
So then what do you do?
Like, how do you make a decision on what you're going to do? So I've read some things where like, if you take a Facebook type application where you have, where you have threaded conversations,
right? The way that you do this in NoSQL is you store it all in one record. That's
kind of the whole idea. But then
you run into things like, I think MongoDB
has a 16 megabyte limit on the row
limit. Yeah, it
does have a rather small limitation.
So now you can't really
throw an entire threaded conversation on
something like a social application if you're
going to do it. 16 megs, you said?
16 megs. That's kind of a lot. Not if you're going to do it 16 megs you said 16 megs that's kind of a lot
uh not if you get a popular thread yeah depends on your use case yeah so it but then but then i
struggled with the whole idea okay so now what if you have things that truly are relational because
from what i understand but hold on though because like just to go back a little bit because one
thing that's also done too in your example though, where you say the whole conversation is in one thread, there's also duplication of data, too.
Right.
To get around the, because there is no referential integrity, there's no schema there, you just say, okay, well, I need it over here, so here's a copy.
I also need it over there.
There's a copy.
Yep. here so here's a copy and i also need it over there there's a copy yep and and so that runs in all kinds of problems as well because they say that okay now once you do that you let's say that
you've broken this apart into three different tables because you're they say that when you
create your no sql tables essentially what you're doing i don't think anyone says it like that but
what do they call them no sql what do they call them they're not tables my document database yeah something but
when you when you create these different storage areas right the way that you have to think about
this instead of thinking about relational terms you have to think about how you're going to query
this up front and then that's how you're going to store your data you're not you're not creating
your relationships you are creating this is how i'm going to pull this data back and i'm going
to do it to where i can call this the quickest possible way but then like you said
you have three three copies of this something changes in that thread you have to update every
one of those documents that's stored so it becomes a bit of a maintenance problem from there especially
if you don't have tools to do it and it's weird too if you like add you know it's essentially a
column or something then your code has to deal with these older records that don't have tools to do it and it's weird too if you like add you know it's essentially a column or something then your code has to deal with these older records that don't have that column
or else you need to kind of do some sort of data job but either way you're looking at
dealing with this stuff and so after a while i think you'd end up with this kind of history of
your you know your persistence layer littered throughout your source code which is a little
gross but maybe there's you know like well-defined practices for getting around that problem, but definitely, you know, messes with my head. Yeah. I'm not real certain.
Is it so, I guess like one of the articles I wrote a while back was, you know, thinking about
a schema of doing products with attributes, a no SQL storage solution seems perfect for that.
Right. Cause I even brought up, you know, motherboards change the type of specs they have.
You know, right now they have USB 3 ports.
Well, one might have a Thunderbolt port.
One might have this, that, whatever.
That seems like the perfect opportunity to use something that's schemaless, right?
Which is the huge thing behind that.
So now you get something out.
Maybe you have a template in your code that says, hey, if it's this type, then display this kind of page.
So that seems like a beautiful solution for that.
But then I started also thinking about, well, can't these two things live together?
So you have situations where you need high availability, right?
Maybe it's a product catalog. Maybe it's maybe it's I don't know, threaded conversations like a social network.
But in that threaded conversation, it's basically got like, I don't know, we're looking at like JSON objects, right?
So simple structured objects. Maybe it has a username in that object.
Well, why couldn't that be stored in a database like MySQL that literally says, okay, you need information about this person.
Instead of storing it all in line in that one record, in your application itself, it sees that username and it then goes queries a database to get that information.
Or maybe another NoSQL table.
I don't know.
But it just seems like NoSQL has gotten a lot of popularity because of its scalability but it's not perfect
for every solution just like sequel server is not perfect or or a sequel database isn't perfect for
every solution so so that was one of the first like i mean what would you guys say like where
would you start well are you doing the project to learn or to to make some money well see that's
that's always the problem right like when you start a project is learn or to make some money? Well, see, that's always the problem, right?
Like when you start a project is you're like, okay, I'm going to make some money,
but I also want to learn along the way.
I would say that if I was going to actually seriously sit down and write a project,
I'd want it to make money.
Now with that, I would basically say, screw it all.
I'm going to do it in C Sharp and C Server because I can do it fast
because I know it all. Or I know how to, I don't know it all, but going to do it in c sharp and c server because i can do it fast because i know it all or i know how to i don't know it all but you know i i know how i know i can quickly get up and
running with it you've just limited many many hours of speed bumps and hassle and doing things
wrong correct i mean there's something to be said though about putting the proof of concept together
so in the case of you know doing using the tools that you know and then maybe afterwards exploring like, okay, how would I actually want to do this at a grander scale?
There's a lot to be said about just putting a proof of concept together.
Yeah, I like that a lot.
I've heard a lot about Twitter and their big refactoring and how they started out as Ruby.
And they kind of brought in some Scala parts and some other things and kind of refactored and you know if they had started off trying to build this big whatever giant gigantic system that
they've got now for the day one of the launch you know they never would have launched it's a bunch
of systems you know really highly scalable and you know highly available and if they had that to try
to build that on day one then they just never would have finished and never would have launched
so you know they built it scrappy and you know know, and got the job done, got the MVP out
there and, you know, then they took the time to kind of break it apart later.
So you don't want to do too much kind of planning ahead of time or else you're just never going
to get out the door.
That's actually a very valid point.
And for anyone who's not familiar with that term, as uh used mvp the minimal viable product yep
he came from lean uh was a lean startup eric reese i don't know if that's where it came from
but it's a great book we'll have a link but i do want to say though like because you brought up
ruby as an example language like am i the only one that ever thinks of ruby soho every single time somebody talks about Ruby.
Yes, yes, that's the one.
I think we should include a link in the show notes.
Yeah, you know, I've seen Rancid a few times, actually,
and he actually holds his tongue when he sings.
Yep, little known trivia fact for you.
Wow, awesome. But speaking of Rubyy so that was one of the things
that that has kind of come up in my search simply because so uh outlaw turned me on to a podcast
called hurting code and they interviewed the guy from player.fm oh that's a great episode it was a
fantastic episode yeah it was really good i was
an excellent episode so i mean he talks about what he uses behind the scenes and what his whole goal
of the project was and he uses ruby and the thing that got me and and maybe this can be donan.net i
i don't right off the top of my head know how you could do it but basically any of his urls you go
to so like you go on a site you search for our podcast codingblocks.net right it's going to pull up our
page if you're on that page you can put a dot json at the end of that url and it'll bring you up a
json like api like you actually can get data back and you can use that in an application somewhere
and because ruby is a little bit more loosey-goosey
and not so strict on its typing and all that kind of stuff,
you can do some really cool stuff with it.
Yeah, I think he mentioned being able to kind of filter these things
and kind of combine different feeds into other things
and being able to do that with the language
because Ruby would just kind of take it in.
It's got the duck typing thing going on.
So it's like, hey, if there's a method there i'm gonna try and call it
and see what happens yeah it's it's really cool and when you're dealing with things on the web
and you want to make things available in different formats and all that it's really kind of cool to
be able to do that kind of stuff so i've never really looked into ruby heavily but it was
definitely something that i thought about and then the other thing and of course you guys are going to be on the hater wagon here
was i was also thinking about no js no js server side i mean there i've looked up benchmarks left
and right it seems to smoke almost everything out there yeah like it is it is so lightweight. It is so fast. It's free.
Throw it up on a Linux box and do its thing.
I mean, there's a lot to be said for that.
And supposedly, it's very simple to program for, too.
It's also the new hotness.
So there's a lot of kind of cool new activity, like a lot of the new innovations that are coming out and all sorts of different things, you know, less and SaaS and whatever.
A lot of these things are coming out built around Node,
and so that's a good investment of time, I'd say.
Yeah, so I don't know.
It's one of those things.
I think what you said with sticking with what you know
for getting something up and running is definitely good advice.
Yeah, and you've got a big leg up on JavaScript already,
and JavaScript doing the Node thing is
also going to sharpen
those tools that you're going to use for
normal web development type stuff on the client side
anyway.
That's really interesting.
If you're going to start up with something,
you've got your ColorMind thing, which you did
in.NET. You did in C Sharp, right?
It'd be so nice if I did it in JavaScript, then I could just host it on
S3, and I could
pay pennies a month instead of $3 a month.
S3 on top of CloudFront, or
CloudFront on top of it, right? Even cheaper.
Yeah, and you can't beat the speed. It'd just be
awesome.
I'm talking about pure client JavaScript
there, but I really don't need a server. It doesn't talk to
database. It doesn't talk to the file system. Why don't I do
client-side? Yeah, why don't you?
I don't like JavaScript don't like javascript i like static languages i promise i wasn't trying to set that up wait but didn't you
didn't you use bootstrap no you didn't color mine i did i did use bootstrap yeah i love bootstrap
and i love um i did um backbone is probably what you're thinking i use backbone but it uh quickly
devolved into jquery just kind of standard stuff.
I just didn't follow the patterns. I got frustrated
trying to kind of do things their way
and just kind of hacked it in there. So I really
need to redo ColorMine, and I probably
want to do something like Angular for the
front end. Interesting.
Alright, what about you, Outlaw? What would you do then?
C Sharp?
I mean, like I said, at least for
the minimal viable product, i would at least put
together the proof of concept and see like once i got it together see like okay do i really think
this has legs now that i actually see it in action and everything before before i spent too much time
in investing in to like different architectures and you know whether that be uh languages or databases or or whatever you know i yeah i i
would just stick with the stick with.net for the you know just for the simplicity of it yeah now
that i've actually been working in java a little bit more i have a real appreciation for how easy
it is to do some things in.net and And honestly, I think most of it boils down to Visual Studio.
Like, the fact that it does all your build files and everything for you
underneath the scenes, and it's really a love relationship.
There's not much hate there for visual studio for me because i i've actually found that java is actually
further along in its development like spring is pretty amazing there's a lot of stuff it can do
but it still blows my mind that it feels like things are so broken apart in java compared to
developing in like in dot net you know what i'm saying yeah so um yeah because
because there's not like it's not like one tool to rule them all right right so so in the in the
dot net community you know you have visual studio and i guarantee you few people are doing their
builds by command line yeah and it's you know i guess one of my frustrating things though is even when you do
use something like intellij like the the jetbrains product for java people are like oh don't do the
builds inside the ide and i'm like why would they even include it in there if if they didn't yeah i
mean it depends on what you're doing though i mean like yeah i i definitely have done my my share of
great old builds by command line.
Right.
Just because I found it easier to do it, you know, separate.
And that's what I'm saying.
Like, it's almost like in the Java community, they're like, oh, no, no, you don't want to use an IDE for anything.
And I kind of get it because in the Java community, people are using a ton of different IDEs.
It's not like in C Sharp or.NET visual, basically whatever you're using visual studio.
Like you said,
you got web matrix out there, but is anybody actually coding and web matrix?
Well,
but this is what I meant.
Like when you asked the question about like,
which stack would I pick and whatnot?
Um,
you know,
like I think we've talked about this before that I prefer the,
the typed languages,
like the,
the scripty type languages, you know, there's some of them that I like more than the, the typed languages like the, the scripty type languages,
you know,
there's some of them that I like more than the others,
but in general,
I really just like languages like your C sharp,
your Java,
C,
C plus plus objective C,
like those types of languages.
I don't know why,
but I've always been more drawn to them.
But even though out of all of those in your example, I would just hands down, I would just do it in C sharp because
like it's easy. And if you're only trying to do proof of concept, you know, and, and you know,
something well, and it's, you know, in whatever that easiest one might be for you. Like, I'm not
saying that Java isn't easy per se.
I just find it based for exactly the reasons you were describing.
I find the.NET environment to be easier to work with, especially if I'm just trying to throw something together quickly.
Yeah. And I think part of it also boils down to just, you know, what we've done over the years, right?
Like IIS is so easy to me now.
And setting up things is usually extremely easy for me with.NET.
And part of it might just be because that's what I'm used to, right?
But Java?
I really wish there were other options within IIS for.NET.
Well, the next version of it is supposed to be based off Node or something, right?
Like, there's been talk.
And I don't remember.
I'll have to see if I can find it in some Node somewhere.
They're talking about having a web server that's very similar to that.
Oh, Tomcat's really nice.
I like this whole kind of deploying containers and you just kind of,
it has the whole ecosystem built around that.
And it seems to work really great to me.
But I've had problems with it just because depending on how i do my builds there's dependencies missing and i don't ever get any like major
hey you have dependencies missing just when i call a particular page it fails and it's like whoa
wait a second why did that fail yep so i don't know it's i think again i'm just not as familiar
with the frameworks but i think if i'm developing a product i don't want to spend my time getting tangled up between you know maven and gradle and switching that stuff around and
researching like i just want to kind of focus on doing at least until it gets kind of off the
ground and make sure it's the idea is validated yeah that's that's definitely a good point so
at what point do you take costs into effect right like so all right let's say that you get you get
along the ways a bit and let's say you get some customers signed up at that point right now you're vested
you've got you've got i don't know how many lines of code in in c sharp and now you start having to
take costs into effect or into account for what you're going to do do you start refactoring or do
you just say i screw it i'm in dot net now, which is probably what you would end up doing.
That's what I would do, yeah.
Well, that's why I was saying,
you want to walk the fine line of if it's just a proof of concept.
If you're just trying to flesh out the idea.
Yep.
You've got to recognize that time when it's like,
okay, it's time to move on to,
I think this has some legs to let
me throw together the grand architecture and this is where i think that that might be but none of us
as developers like redoing work right right so i you know but really i'm not that scared of like
c sharp and windows i am scared of sql server sql server licensing though absolutely so that is
something i definitely steer clear of all the more reason though like to my point though like if you're just putting something together for proof of concept yeah no but when i
said redo work so let's say that you did put together a proof of concept you're gonna have
to recode it in some other language if that's why i see i see what you're saying i don't like
redoing anything okay so so to that point though i guess it would also depend on like how big it
was going to be too right because like okay again going back to minimal
viable product right the whole point is you're not trying to grow something out you're just trying to
see like does this thing provide value does it have legs to it and if it does then go from there
so i mean you wouldn't implement the entirety of it in in that language but you might just try it
out for you know try out some little bitty pieces of it here and there
and then go from there.
I mean, going back to your Xamarin example,
this is exactly like why
there's some ideas that I've been
toying around with, and I'm like,
I've done Objective-C.
I can do Objective-C again.
I just don't want to.
Right, right.
So the Xamarin thing really frustrates me
because that's cost up front.
At least if you're doing.NET, like you said,
you probably already have your developer tools.
You can just create the stuff.
But Xamarin is actually really frustrating to me
because I would like to use it,
and I would like to make some things,
but I don't want to pony up for something
that I may not get around to finishing for nine months.
You know what I'm saying? You know, Exo is coming out pretty soon they're they're a big
xamarin um yeah xamarin convention yeah sorry yep so i i heard uh i think it was on i forget which
podcast it was but uh had um interview with somebody and they were talking about maybe some
pricing changes around xamarin forms and some other things and so i don't know a couple hints
yeah there was something i mean that that's a that that whole conference brings up a whole around Xamarin forms and some other things. And so, I don't know. There were a couple hints.
There was something.
That whole conference brings up a whole different type of conversation.
Like, you know, if you're an independent consultant,
at what point do you say, like, okay, this is worthwhile going to?
Right.
Because you're going to probably owe some cash for it, right?
Not to derail the current conversation.
No, I would love to do that. I was thinking about that, too.
I was like, I'm really interested in Xamarin, but I'm not going to take
X days off work and pay up
that much money. It's just not worth it to me.
Yeah, that's exactly
the situation that I'm in.
And it's not just a little bit not worth it. It's like
way not worth it for me.
It's more than the cost of the license.
There's the opportunity cost of the money that I'm not
going to make because I'm
taking personal time to
go to this and then there's the the actual cost of the event itself and then when you combine those
two together like oh that i could have bought you know some licenses myself and just been done
yeah that's and that's one of the frustrating things like i think i mentioned to you at one
point corona sdk they had an interesting
take on it at least back when i looked at it's been a while now but with that you could literally
download the code and start programming if you want to deploy it to anything other than running
it on emulators then you have to put up some money right but i love that model well and to be fair
though i don't mean to pick on xamarin like right right like for the
build conference or wwdc like there have been plenty of conferences where they're expensive
oh man i want to go yeah i want to go to all of those yeah there's plenty like i know we pick on
javascript yeah but it's all in with love because there's been plenty of javascript was like oh i
want to go i want to go so bad but yeah i mean there's always that thing but it's definitely easier like so that's one of my
things if you have an idea that you want to program and and you want to do it in xamarin
you got to pony up a decent amount of money just to even get started whereas something like corona
let's say you have a game idea and you want to do you want to do some development you can download
their sdk you can get to work if you ever want to do anything with it though you have to pay for the license which is
beautiful i mean like that that makes a lot of sense so if it's something that you're doing on
the nights and the weekends and it's it takes you four or five months to get there before you can
deploy but you know that you've got this thing that you can keep working on whereas something
like with xamarin and again i'm not trying to pick on xamarin but it's one of the things that's kept
me out of it so far is you know you're paying 75 a month for something that you know you got you
got kids you got you got a wife it's really hard to sit aside and be like no don't talk to me for
this weekend or then or next weekend i'm coding because you know i'm paying for this license
and i want to get this stuff together so i don't know there's a lot of tools that are just cost
prohibitive they really are and it's frustrating because i wish there was i wish there was a way
to where they could make it available in a way that would not that would not vulture sales from
themselves right like if they were able to provide it
and and get people interested in it get that hook in them and then somebody's vested like i said you
get you get down that road a little ways and and you've actually got something that you're ready
to do something with now they get their money somehow it is kind of interesting though and i Interesting, though, and I know I'm derailing it, but if you compare, let's say, the Microsoft environment, a dev environment, to an Android or Java Linux dev environment or OS X environment, you can get onto those other environments for much cheaper cost now i do know
that microsoft does have a you know some free editions of visual studio so i'm not discounting
that but you had to immediately pay for your license of windows period yep so you already
had a cost there uh you know even if you did get the free version of studio but you know you
probably had some other costs like in i'm trying to think resharper and depend yeah well i mean so
there's you can't even use those with the plugins yeah yeah i mean oh yeah you can't do a plug you
can't even do source control with the free ones you can't you can't even even uh the testing you would be
stuck to using ms test as your test runner uh in the free versions or you run and you know outside
well okay or you run in unit completely outside uh which oh wait yeah i'm sorry no one does that so yeah yeah that would just be painful i mean it the whole thing is it's weird
as a developer i mean we've been doing this for a long time but it's really weird when you start
something up because yeah you do want to learn right like you you want to touch some new
technologies and all that kind of stuff but then you sit back and you're like god so there's a cost involved and
then there's a time involved well i guess where i was going with that just to finish my thought was
that in in that microsoft world if you did want to use the free versions you're crippled in like
capability yeah you are whereas you can get into other dev environments with at a fraction to no cost and there's no limitation yeah there's
right yeah so you get a clips right it may not be everybody's favorite you can get the spring
tool suite yeah uh you know you can get xcode you know there are other platforms that you could
develop for at no cost so so going back to your original question as to which one you want to use, cost can be a significant factor as to which one you might choose,
especially for personal use.
Yeah, and that's really what it boils down to,
is when you're looking at doing a project on your own,
there's so many factors that come into play.
Your knowledge of what you can do and do quickly is definitely
a big one but then you start looking at what's this going to cost like you said sql server
by no means do i want to have a free version of sql server for dev purposes too that will go up
to so many and you can't deploy it so you're limiting yourself a little bit again this is
where this is you know back to the we're going full circle you to the previous conversation. You're limited in the capabilities of some of the free versions, which is kind of weird.
I guess maybe Apple could be credited with it because it seems that this –
or no, maybe it would be more fair to credit it to Java. But it seems that there's been this revolution or evolution of the,
the environments where the,
the idea is let's just bring as many developers to it.
We'll just throw the tools out there.
We don't care.
Yep.
Right.
We,
we just want you to develop for our platforms.
Right.
And Apple definitely embraced that with with, you know, once they started producing APIs for iPhone and allowing to vote for it,
they went in, you know, full force with it and it's proven to be quite successful for them.
And the weird thing is, from the Microsoft point of view is going back to their roots.
I mean, they started out as the company for developers, right?
I mean, that was developers were their bread and butter, right?
I mean, Steve Ballmer, right?
Developers, developers, developers.
You know, and it seems like now it's unfortunate that if you really wanted to get, you know, some of these tools, how much money you got to come out of pocket for
just to develop for microsoft platforms when you really think that they're ultimately going to
benefit from that and it's unfortunate yeah i mean heck even back when apple i bought my original
macbook pro i think xcode was five bucks and i've heard a lot of people complain about it but five
dollars for an ide and access to their libraries to be able to do development?
I mean, could the barrier of entry be much lower other than free?
Now, in all fairness, since I did bring up Microsoft, if you were going to do development in Xcode, do some Objective-C development, and you were specifically trying to do iOS development,
in order to deploy that to a device, even for testing purposes,
you would have to have paid Apple for the developer program.
But it's like $99, right?
It is.
It's cheap.
But my point, though, is that's still $100 that you came out of pocket,
and all you wanted to do was put this app that you're still in development on and testing.
You just want to put it on a device and see, make sure that it works.
Maybe because you want to work with, like, physical sensors or, you know, the actual sensors that are in there for your use case.
And I know with, like, in the simulators, there's some things that you can mimic, but not necessarily all.
But just in all fairness, though, there is that.
But that's still a pretty low barrier to entry compared to what most of the others are.
Speaking of low barriers to entry, I finally made my decision.
I say Go.net because even $1,000, even $3,000, as far as starting a business goes,
in most other industries, they would laugh to the table
if you want to start a restaurant
I mean the $3,000
is nothing that will get you the silverware
if you want to start a paint your own pottery
place anything with any sort of lease
or physical space I mean forget about it
we got it pretty good if we're
hemming and hawing over $99
to start a business that could potentially
turn into a $1 billion business you could potentially, you know, turn into the next billion dollar business.
Well, in all fairness, you could also buy Visual Studio without the MSDN and it's a
lot cheaper.
700, right?
699, I think?
I thought it was like four or five.
I don't know.
Maybe I'm wrong.
I think the Pro.
Because the MSDN renewal is like six or $700.
Yeah, I think Visual Studio Pro is 699.
Okay, 699. How much of a liquor license will that
buy you right yeah you know I don't even know her oh wow but oh thank you I'll be here as a
we'll be cutting that what oh well now we have to cut it because you said we were gonna cut
yeah we don't have to we can cut my cut oh we have to cut it because you said we were going to cut it. Yeah, we don't have to. We can cut my cut.
We have to cut my cut too.
Wait, I'm lost.
How many cuts are we cutting?
Right.
Anyway, but if you're a musician, you got to buy a guitar.
But I guess I got a laptop and stuff too.
So I don't know.
I'm just thinking it's really not that bad.
If my business starts doing so well that I've got to worry about SQL Server licensing,
then I'm probably doing something all right.
Well, I mean, when I went on my rant though, that, you know, yeah, that,
yeah. I mean, I see where you're going with that, but going back to the bigger picture though, is that when ultimately Alan's goal here was that if you develop something in the idea is that you
want it to be able to scale, let's say that it, you know, it, it blows up, it becomes Twitter,
right? It's the next Twitter and it needs to scale out then now you're stuck into the licensing costs for each of these
platforms that you're on so now that does start to become a big thing right that becomes a concern
yeah but we're talking bees we're talking billions for the next twitter i mean uber
is like eight billion and i you know i've never used it i have yeah yeah it's actually pretty good
okay fine whatsapp is one billion dollars and i don't even remember what it does anymore
yeah i don't know it's you know it's really interesting i mean the cost so which platform
are you talking about that you haven't even like i don't even know that you've mentioned that. What's the desktop app?
No, no, no.
I mean, what stack are you looking at?
So that was the whole thing.
I wasn't really certain, so I was thinking about doing C Sharp
and maybe tying in either MySQL or Postgres
because I really don't want to be strapped to SQL Server, period.
You know, it's pretty funny that we just made a bunch of assumptions
about the project that you wanted to SQL Server, period. You know, it's pretty funny that we just made a bunch of assumptions about the project that you
wanted to do without even asking.
So we've had all sorts of discussions. We've been talking
for like 40 minutes about what kind of stack you should choose
without knowing anything about the problem whatsoever.
Well, clearly he's building a web-based
iOS app for his Android
device.
That's right. I think we've got all the bases
covered. It is going to be written in.NET.
And you definitely need SQL Server. But It's going to be written in.NET And you definitely need SQL Server
But that's going to be sharded across
Mongo and
You definitely can't use the free versions
Because they're too limited
Actually what I was thinking about was
Essentially maybe doing something with.NET
But tying it in something
Like MySQL
And potentially Cassandra.
Those were my thinking, maybe.
And there's no reason you couldn't do it.
I know those are not typically the bundled things that go together,
but I don't know.
It would be an interesting start.
And the cost would be pretty low.
If you set up an Azure account and did that,
like you'd have pretty low cost.
But I don't know.
Then the other side of me is like, ooh, let me play with Node.
I mean, it's blowing everything out of the water as far as performance.
So screw ASP.NET.
I'm just going to do Node server side.
Well, I guess, though, because you mentioned Azure,
but then the stack that you're talking about,
you immediately go into VMs for that instead of using a predefined.
The components that are already available without having to get into.
I haven't messed with Azure enough to really know how they have this set up that well.
But actually, I haven't messed with it that much.
I haven't messed with it at all.
So, yeah, I don't even know what their predefined instances are.
I know I looked at, like, their website packages,
and I thought they were really expensive for a single website.
I was like, seriously?
This much per month for one website?
So, I don't know.
Again, I haven't looked at all the pricing on any of it,
but it's just one of those things, like, where you sit down
and you start thinking about it.
You're like, huh, I kind of want to do a a project and i kind of want to learn about these new technologies but
it's like we we've all done right we've started a project and we're like man there's way too many
roadblocks i'm done you know you get into it and you get tired of fighting things because it's not
your daily job it's something you're trying to do on the side and then you're just like i give
and that's what i don't want to do but on the flip side you know you kind of get bored doing the same type stuff too so i don't know
i think it's part of being a program we're all the add to a certain degree right
oh you said you like to refactor until you can't refactor anymore right joe oh yeah absolutely
yeah well there's refactor then test refactor and then test the refactor and the test and
refactor and the test and refactor and the test if you finish anything you've been messing with xamarin did you finish anything
no i mean i've definitely been picking it up just uh more from an experimentation phase just
trying to learn about the technology and how it works and and some of the uses for it because
like i said i i've done mobile development on you going way back on various platforms but even most recently in
iOS but even that's been a little bit of time since I've done it but I wanted I had some ideas
and I was thinking well I really if I was going to bother then I'd kind of like the idea that it's
going to be available on any one platform I didn't see the point in only targeting one platform, although there's so many reports out there that just say like,
if you want to make money in any kind of way, it's going to make money on, um, the iTunes app store.
So target iOS because developing for Android and the windows app Store, yeah, it's great to be there, but they're not going to bring in the same amount of money.
And that's just the sad state of the way it is right now, right?
And that's if you get found in the iTunes App Store with the five billion apps.
I kind of made an assumption there that whatever your app might be got found.
Somehow shows up.
Yeah.
Or you can pay for stuff like that
yeah you could flappy bird it so um yeah i mean like i said so so so that's the the sex appeal
of xamarin though right is that you could write this app one time in.NET so you get some really nice developer tools.
I mean, I don't think anyone has, well, there is one post on our comment.
Shoot.
Wow.
Jim, John, I can't remember.
He had some great feedback on why he preferred Java environments over a visual studio. But, you know, I think it's safe to say like,
well,
at least in my opinion,
visual studio is,
is a pleasant experience to use compared to some IDEs that are out there.
Yeah.
So,
you know,
that's nice.
And then the ability to target all these platforms with something like
Xamarin,
you know,
there's a lot of appeal there, right? No,
I mean, you do run into your, you have to make sure that you architect that app out so that,
you know, you keep the UI very thin across each of the different platforms you plan to target and,
you know, basically have libraries for the real meat and potatoes of what's going to happen. But even then, you're going to run into targeting different ad platforms, for example.
Why on earth are you guys even bothering with a UI?
That just sounds boring and tedious and terrible and not working.
Man, you've got to come up with an API that you can sell
that integrates with ERP systems and Salesforce and not working. Man, you got to come up with an API that you can sell and integrates with ERP systems
and Salesforce and whatever else.
That's what I'm talking about.
UI, cross-platform.
Let's go on a server, baby.
I'll work on my next WordPress plugin.
Yeah, I mean...
And Xamarin to target my Android iOS device.
I could do a REST API.
That's about as close to the GUI as I'm getting.
Wow.
Oh, I got a question for you.
So if we did go ahead and assume that you were building a website in.NET,
and this is harkening back to B Siege, Brock Beat,
would you build it in MVC or web forms?
Never web forms.
Without question, MVC.
MVC, yeah.
Yeah, I mean, we talked about this on one of the previous episodes,
but I don't want something generating my HTML for me.
It's changing too fast.
Any MVC development that, or I'm sorry,
any ASP.NET development that you're doing now
it's because you're supporting something like web form web this thing's you know that's good
about web forms but you're doing it legacy new project no man mvc yeah i i want if if html6
comes out next month i don't want to have to wait on web forms to catch up i don't want to have to
deal with all the crud behind it mvc is the way to go you have full control of what you're doing right
yep and yeah i don't know but screw it all i'm not doing it i'm not doing that either i'm doing
angular i've been um i've been doing having to write a lot of uh custom validators lately for a
for a web form forms project and the only reason they're custom and I can't just use the regex
or the required validators
is because I'm using Bootstrap
and I want the styles to look right.
And yeah, sorry, web forms,
they had their own opinion
on what validation should look like
and it doesn't really match up perfectly
with web forms.
So I'm writing a bunch of like,
kind of crazy,
like go get the parent
and set the class on that code.
Yeah, that's,
dude, what you said about that you'd used Backbone on yours, right?
So looking at between that and Angular,
the interesting thing, the reason why I went Angular instead of Backbone
was because it was the more fully baked.
So Backbone's more about the templating, if I remember correctly.
Yeah, just templating and binding, that's about it.
Yeah, whereas Angular has that, but it also has that whole MVC or MVVM type model to it.
So you literally have an entire framework if you obey it.
Like, you don't have to abide by it, but yeah.
So, yeah, going back to that, like, seriously, if I'm doing anything new,
I'm probably doing it in one
of the newer frameworks even i don't even know that i've fully utilized mvc so yeah i think that
sounds pretty good so that's uh that was a little just side conversation uh you know we'll probably
have more of those in the future we'd love to get your thoughts on it. So definitely, you know, go up to the post.
This will be www.codingblocks.net slash episode 17.
So yeah, go up there, leave us a comment.
Tell us what your thoughts are.
You know, we all struggle with this kind of stuff.
Yeah, we've heard good feedback about our other water cooler discussions.
So, you know, we'd like to hear if you guys are still digging it.
All right.
And so with that, let's get into the tip of the week so i'll go first uh so if you're in this is a visual
studio specific one but uh if you need to delete an entire line right rather than having to select
it either with the mouse or the keyboard and then delete it a little trick that you can do is just
wherever your cursor is shift delete line gone
boom wait what you don't use the vi plugin you know i've tried the vi plug plug-in and i just
i didn't like it there's a there's a vi plug-in oh yeah to map all the key bindings yeah in visual
studio to vi and and i and i did that for a while and because do like – but yeah, I just – I couldn't.
This is like mixing your chocolate in with my peanut butter kind of scenario.
You don't like Reese's?
I didn't want VI in my visual studio.
The only VI I want in my visual studio is to spell it.
You have to think about that well speaking of spelling uh my tip for the week was a new album that came out and we don't usually
do this sort of thing but i just was really excited about this it was the u2 album it was
the u2 album it's are you on your phone i don't know if you haven't bought this yet
no but uh so i'm a big fan of uh listening to music while i program it helps me kind of get
in the flow and so i wanted to mention this album.
It's from Apex Twin, who hasn't put an album out in like 13 years. And I like it because it's weird and it's like crunchy and it's synthetic and it's organic.
And it just helps me get in the zone.
And there's no lyrics or anything like that.
It's just like I put the music on and three hours later, I take the headphones off.
And whatever I was working on is just done it's this stuff is
magic so I'll have a link to that if you're into that sort of electronic kind of programming mood
music interesting okay mine is actually about sequel query hints and we've done a couple episodes
like dedicated directly to sequel but one of the things that a lot of people don't, they're not even aware of is you can give SQL,
the SQL optimizer in SQL server specifically hints
so that it knows whether or not you want to lock rows
or when you're doing selects or updates
or anything like that.
So along those lines,
there are two things that I wanted to mention.
There's with no lock and with row lock.
And so with no lock, typically if you're doing a read and you want to make sure that you're not trying
to lock anything so that others can't update it so you don't get a dirty read or something,
you can do a with no lock and that will attempt to keep locking at a minimum on your table
so that any updates can still go through without affecting your read.
And then the other one is with row lock.
And again, these are hints.
They can actually be overridden by the database engine itself.
But with the row lock, typically what you do is if you're updating a particular set of rows in the database,
instead of locking the entire, and it's not a table,
so there's in locking an entire page in which your data might exist on it tries to lock just that single row so that it's it's not
blocking an entire table from being able to do reads and other things so those are two hints
that you can provide that will actually help improve performance on your database yeah like
alan said we've uh we've done a couple episodes specifically on databases already.
So if you haven't heard those and you want to go back to the back catalog,
you're looking for them.
That'd be episode 13.
All your database are belong to us.
And episode 14 databases,
the sequel.
So with that,
subscribe to us on iTunes,
Stitcher and more using your favorite podcast app and be sure to give us a
review as well. You know, we've, we've talked about it many times before about how much we really
appreciate that. Yep. And contact us with a question or topic. And we've been getting lots
of those requests lately and we really do appreciate them. We will actually address those.
Leave your name and preferred method of shout out website, Twitter, et cetera. And we'll mention you
on the podcast. Also, visit us at codingblocks.net
where you can find the show notes,
examples, discussions, and more.
And send us your feedback, questions, and rants
to comments at codingblocks.net
and check us out on Twitter at Coding Blocks.