Coding Blocks - Got Any Hot Stacks?!

Episode Date: September 26, 2014

In 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)
Starting point is 00:00:00 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
Starting point is 00:00:25 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.
Starting point is 00:01:08 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
Starting point is 00:01:28 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
Starting point is 00:01:44 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.
Starting point is 00:02:18 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.
Starting point is 00:02:47 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?
Starting point is 00:03:08 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
Starting point is 00:03:35 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
Starting point is 00:04:18 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.
Starting point is 00:05:05 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
Starting point is 00:05:34 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.
Starting point is 00:05:59 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
Starting point is 00:06:42 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?
Starting point is 00:07:26 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?
Starting point is 00:07:39 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.
Starting point is 00:07:51 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,
Starting point is 00:08:32 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
Starting point is 00:09:04 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
Starting point is 00:09:45 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.
Starting point is 00:10:24 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.
Starting point is 00:10:53 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,
Starting point is 00:11:07 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
Starting point is 00:11:18 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
Starting point is 00:11:43 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,
Starting point is 00:11:58 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
Starting point is 00:12:12 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.
Starting point is 00:12:29 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
Starting point is 00:12:57 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
Starting point is 00:13:32 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
Starting point is 00:14:23 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.
Starting point is 00:14:53 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
Starting point is 00:15:29 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
Starting point is 00:15:45 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.
Starting point is 00:16:22 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
Starting point is 00:17:04 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
Starting point is 00:17:40 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?
Starting point is 00:18:18 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?
Starting point is 00:18:54 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
Starting point is 00:19:38 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
Starting point is 00:20:03 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
Starting point is 00:20:49 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.
Starting point is 00:21:19 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.
Starting point is 00:22:03 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
Starting point is 00:22:43 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
Starting point is 00:23:19 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
Starting point is 00:23:48 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,
Starting point is 00:24:26 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
Starting point is 00:24:48 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
Starting point is 00:25:04 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
Starting point is 00:25:19 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
Starting point is 00:25:49 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
Starting point is 00:26:06 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.
Starting point is 00:26:59 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
Starting point is 00:27:52 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.
Starting point is 00:28:26 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,
Starting point is 00:28:37 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,
Starting point is 00:28:51 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
Starting point is 00:29:12 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.
Starting point is 00:29:49 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.
Starting point is 00:30:14 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
Starting point is 00:30:48 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.
Starting point is 00:31:28 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
Starting point is 00:31:50 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
Starting point is 00:32:30 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,
Starting point is 00:32:55 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.
Starting point is 00:33:10 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
Starting point is 00:33:34 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.
Starting point is 00:33:59 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.
Starting point is 00:34:14 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
Starting point is 00:34:38 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
Starting point is 00:35:14 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
Starting point is 00:35:59 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
Starting point is 00:36:42 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
Starting point is 00:37:54 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
Starting point is 00:38:49 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,
Starting point is 00:39:38 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,
Starting point is 00:40:29 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.
Starting point is 00:40:44 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.
Starting point is 00:41:14 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,
Starting point is 00:42:10 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.
Starting point is 00:42:38 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
Starting point is 00:43:09 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.
Starting point is 00:43:25 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.
Starting point is 00:43:35 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.
Starting point is 00:44:09 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.
Starting point is 00:44:27 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
Starting point is 00:45:11 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.
Starting point is 00:45:41 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
Starting point is 00:45:58 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
Starting point is 00:46:13 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,
Starting point is 00:46:35 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.
Starting point is 00:46:54 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.
Starting point is 00:47:21 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,
Starting point is 00:47:39 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
Starting point is 00:48:13 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
Starting point is 00:49:01 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.
Starting point is 00:49:44 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,
Starting point is 00:50:27 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.
Starting point is 00:50:37 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?
Starting point is 00:51:17 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.
Starting point is 00:51:39 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,
Starting point is 00:52:01 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,
Starting point is 00:52:23 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
Starting point is 00:53:05 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.
Starting point is 00:53:18 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
Starting point is 00:53:37 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
Starting point is 00:54:05 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.
Starting point is 00:54:40 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
Starting point is 00:55:18 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
Starting point is 00:55:57 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
Starting point is 00:56:32 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.
Starting point is 00:57:01 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.
Starting point is 00:57:40 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.
Starting point is 00:58:10 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
Starting point is 00:58:28 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
Starting point is 00:58:53 and check us out on Twitter at Coding Blocks.

There aren't comments yet for this episode. Click on any sentence in the transcript to leave a comment.