Coding Blocks - Lightning Talks

Episode Date: July 30, 2018

We meet up around the water cooler for a quick round of lightning talks as Allen and Michael sing FizzBuzz while Joe passes the caching buck....

Transcript
Discussion (0)
Starting point is 00:00:00 You're listening to Coding Blocks, episode 86. Subscribe to us and leave us a review on iTunes, Stitcher, and more using your favorite podcast app. And you can go to codingblocks.net where you can find show notes, examples, discussion, and a whole bunch of other things. Send your feedback, questions, and rants to comments at codingblocks.net. Follow us on Twitter at Coding Blocks or head to www.codingblocks.net and find all our social links there at the top of the page. With that, I'm Alan Underwood. I'm Jezek. And I'm Michael Outlaw.
Starting point is 00:00:28 This episode is sponsored by airbrake.io. When your website experiences an error, airbrake alerts you in real time and gives you all the details you need to fix the bug fast. And airbrake just announced airbrake insights a couple of weeks ago, which will connect trends and error occurrences with your code changes and deployments. It'll actually bring the source code in if you hook it up, hook up their GitHub integration, and it will correlate these hotspots, these files that have changed a lot recently around the same time the errors ticked up, and it makes it even faster to track things down. And like I said, bringing in that source code is really nice. So right now, CodingBlocks listeners can try Airbrake for free for 30 days, plus get 50% off the first three months on the startup plan. To get started, visit airbrake.io slash CodingBlocks.
Starting point is 00:01:18 That's airbrake.io slash CodingBlocks. All right. And tonight we're taking a break from the computer science topics we've been talking about to talk about a few more practical items. So we each brought a couple topics to the show tonight and kind of surprised each other a little bit. And so we hope you enjoy. And first up, we got a little bit of news.
Starting point is 00:01:36 So you want to tell us about it, Alan? Yep. So we have our reviews as always. So first, we'd like to thank those that have taken the time to do it. We've got IPA one 85, James K four 79, Matt PBO, madam robot, and Nick key.
Starting point is 00:01:54 And from stitcher, we have rich club, Brown, the dev and shake your app. And like Alan said, thank you guys very much for leaving this review. If you haven't already, we'd greatly appreciate it if you did.
Starting point is 00:02:06 Yep. I do have to say on Shake Your App, his review I loved because it said it reignited his passion for development. And honestly, that's what this podcast did for me too because I was kind of hitting a lull. And that was just awesome. I love seeing people say that it got me excited or I started exploring again. That's good stuff. And speaking of thank yous, I've got to give a huge thank you to Vladimir Vlados. You're out there, absolutely abysmal person.
Starting point is 00:02:37 You know, that's your screen name, but you're not an abysmal person. We love you. You've been a huge help on QIT and keeping me in order. I know it hurts sometimes when I am not able to commit something because one of your pre-commit checks has prevented me from doing something dumb, but I do appreciate it even if I gripe at you about it. So I want to take a minute to say thank you. Very nice. And so into the couple bits of news that we have, this one was brought up on Slack today and I actually saw it come across my Google feed the other day. There's this rock star programming language, which we'll have a link in the show notes. It's on GitHub.
Starting point is 00:03:11 But apparently it's a lot of fun. Like, Joe, I think you've looked into it more than I have. So you want to give a rundown? I haven't. Angry Zoot sent me the link, or she posted the link in Slack earlier, and so I was taking a look. But it looks amazing. The lyrics, the code, I don't know what you call it, but it's actually more verbose and easier to read, I think, than a lot of my co-workers' code. And the lyrics are
Starting point is 00:03:36 definitely much, much better than any of the music that I'm listening to. So you got to take a look at the syntax. It's really fun and really interesting and weird. A little background here, though, because I don't think this has been said yet. Basically, this is a programming language where the syntax of the language is lyrics from songs. Yes. So you're going to have to have a pretty good in-depth knowledge of some song lyrics in order to write a program in this. I think they wanted us to read like Fizzbuzz or something on here. But here's a loop.
Starting point is 00:04:03 Here's one that's kind of fun they say similar to the if statement a loop is denoted by the while or until keyword which will cause a subsequent code block to be executed repeatedly whilst the expression is satisfied so here's some code tommy was a dancer while tommy ain't nothing knock tommy down so that's the kind of code that you're going to see, which sort of hurts my head a little bit. Like, I mean,
Starting point is 00:04:29 you got to sing it. Come on. I can't say it like that. Okay. You sing it. I can't sing. Well, they actually have fizz buzz is already here.
Starting point is 00:04:37 So if you wanted to try it, Oh, we could definitely do this. If you're ready. I don't know how we're going to do it. I'm trying to figure out what the tune is for this. Don't overthink it, man. It's got to cover the soul.
Starting point is 00:04:54 This is rock and roll. Okay. You know what? I'm already overthinking this. EAB, man. EAB. Modulus takes a number and divisor. I'm not a rocker.
Starting point is 00:05:05 Put number as high as divisor. Put number minus divisor in the number. I didn't know you guys were going to embarrass me like that. Thanks, AngrySuit. Moving right along. Oh, yes. Limit is 100. Counter is zero.
Starting point is 00:05:23 Dun-dun, dun-dun. All right. So, yeah. You guys will have to check this out. It looks like a lot of fun. And so the next thing up that I actually think is really cool, this was something that was introduced back in January in the Edge version of the desktop Docker server, client, whatever you want to call it. But now they have moved Kubernetes into the stable desktop Docker app.
Starting point is 00:05:50 So now you have Kubernetes support and abilities in your regular Docker on your system without going to Edge. So that's really cool stuff. And don't forget, we're going to be talking about Docker and Kubernetes in our next community talk coming up here pretty soon. Yep. Really good stuff. So with that now, I guess it's time to get into this. So as Joe said, this is kind of just going to be our typical what we would have used to done with like our cubicle talk, right? So the one that I wanted to start with, because we've gotten a number of emails from people over the past month or so, maybe even a little bit longer. They're like, hey, I'm just getting started in programming.
Starting point is 00:06:28 What should I do? And so I thought this would be a good opportunity for us to kind of share what we think that maybe would help you out the best. If you're trying to get started, whether you're coming out of college or whether you're switching careers or whatever. So I guess I'll get the ball rolling. Like I think to me, probably outside of choosing the language you want to start with, um, you know, we've mentioned in the past, like look in your area, find out what's hot in your area. You know, if Java is the big thing, go Java. If it's C sharp, go C sharp. JavaScript is always hot everywhere. So that's always a good one to look at. But outside of that kind of stuff,
Starting point is 00:07:06 I honestly think one of the things that I've come to realize the more that I've developed over my career, data structures are so important. So I would say after you pick your language, learn about the data structures in that language. You know, if it's C sharp, your dictionaries,
Starting point is 00:07:23 your hash tables, your, you know, your collections, I just, man, like really learn those things because when you go to solve a problem, if you know the types of data structures available to you, a lot of times it'll make that problem a lot easier to solve, right? So that's instead of trying to cram something into an array, because you know that arrays are these lists of things that you have, you know, then maybe you'd be a little bit more well-informed about the type that you'd pick. So that, that would be my starting point. I think
Starting point is 00:07:55 you guys, you guys have anything? Yeah. We're in code where you're like constantly jumping over hurdles to get the data you need. So it's like every function you're like trying to get my objects dot whatever dot items. And then you're like looping through the array to get the data you need. So it's like every function you're trying to get my objects dot whatever dot items, and then you're like looping through the array to get to whatever you need out of it. You're constantly like writing a little helper functions or whatever to just get the data you need out of it. That's an example of where you might build or kind of arrange things differently. I think the data structures are really important, but also just the shape of your data, like
Starting point is 00:08:20 learning how to kind of separate things logically so that things that change together stay together and I guess vice versa. So I think that's really important. like learning how to kind of separate things logically so that things that change together, stay together and, and I guess vice versa. So I think that's really important. Um, but I guess that's kind of advanced. So maybe that's not really good getting started. Yeah.
Starting point is 00:08:36 I would just say, uh, it kind of goes back to the practice episode, like code wars, katas, things like that. Just like practice, practice,
Starting point is 00:08:42 practice, you know, like keep, keep working on that, that muscle memory, right? Like even if it's, even if you might already know those data structures, cause you could be like a, you know, a graduating college, you know, CS student or nearly graduating student. Uh, so you might already have a pretty good foundation on some algorithms, data structures, things like that. But you're trying to get prepared for that job and those job interviews, right?
Starting point is 00:09:11 And just working on through practice problems is going to help. Oh, I got a line I'm going to steal from Shop Talk. Just build websites. That's kind of true. If you want to do the absolute hardest thing possible, build websites right up there because there's so many pieces involved.
Starting point is 00:09:34 We're not talking about HTML, right? We're talking about application. No, I'm talking about HTML. Build a little HTML website and it's going to be terrible. You're going to want to add behavior. Ultimately, it's hard to find a job that doesn't deal with HTML websites in some form. So depending on how you slice it and what you're doing and what frameworks and WordPress and all that could be really different. But knowing that kind of the base, kind of how the internet and browsers work, I think it's really important for just about any job you're going to end up with.
Starting point is 00:10:01 You know, another thing... I always kind of viewed that... I'm sorry to interrupt. But I always kind of viewed it like... I mean, it really depends on what you want to do there, right? Like if you're like more low level, you know, device driver,
Starting point is 00:10:10 operating system level, like creating a website feels like it would be beneath you. Like that doesn't seem at the same level. Like you were saying, it would be the hardest thing. And I'm like, ah, is it really? Well, it's funny.
Starting point is 00:10:23 There's a lot of annoying things with building websites, right? Like cross browser compatibility. If you get into CSS, like there's just a lot of really, and I don't know that hard is the term I'd use as much as just frustrating, right? Like you're trying to make some drivers.
Starting point is 00:10:39 Yeah. I would imagine like really hard stuff. Um, you know, going back a little bit to the getting started to thing, though, like the Q, I think the QIT thing that Joe and, you know, they've all been doing. It's just an open source project and they get together on calls and they talk about code structure and what they plan on doing and the features and all that. Man, get involved in something like that, right? Because then you'll actually get to see how people are working through problems, right? These pull requests that go in, you'll learn how to use source control. You'll, you'll learn what type of features people are trying to add. And then, and then the problems
Starting point is 00:11:19 that they run into and, and they started off with unit testing, right? I think you guys have that in there or no? Yeah, just started adding a couple. I've been stuck in those. So definitely added after the fact, which is a little bit tougher and I've been slow about adding it. But it's been really great just learning
Starting point is 00:11:35 what like MVP introduced me to the actual testing libraries that we're using. Super good. Dave introduced me to the end-to-end testing that we're using. So, I mean, I've been learning a ton from this. So it's really not my project. I've done like a minority of the work at this point and I've just been like kind of hanging on and learning.
Starting point is 00:11:50 It's been awesome. But that's a great way for people to learn, right? Is to actually get in there and see how people are interacting and the type of code that's being written and that kind of thing. Yeah, for sure. Working with other people is really eye-opening and just really broadens your perspective. It's really different from working on your own. Have you guys ever interviewed interns or anything? Been a while.
Starting point is 00:12:12 It's been a long time since I've interviewed anyone. is, and it's fair, this, this makes total sense. They come out of school, you know, they've been taking programming for two, three years, whatever. And they, most of them not, not being mean, most of them just really didn't know how to write code, right? You tell them, Hey, uh, this is what I want. How would you model this? Right. And just what you'd see end up on the board. You'd be like, wow, that really doesn't make sense. But I get it because you've been learning about data structures and all that kind of stuff. So if you haven't put it into practice, you know, it's impossible. And so that's why I say the getting started thing is like, like outlaw said, you know, Kata's code wars, that kind of thing,
Starting point is 00:12:59 actually writing code that does something is way different than understanding what code is supposed to do. When you actually go down to sit down and write your own different ballgame, you can read an entire book and know what you're trying to do. And then you go to sit down and you'll be back in that book in five seconds trying to go to the page like, where did I see that? I mean, we still do it today. So that was my big one i i can't think of anything else i mean networking is also a big one uh outside of that right like go to meetups uh talk to if you're in school talk to your professors go to the to the job fairs and all that kind of stuff if you're trying to switch careers, surround yourself with other programmers, you know, whether it's in something like our coding block Slack channel or meetups.
Starting point is 00:13:49 I mean, you get a meetup. There's always recruiters there. A lot of the meetups that I've gone to, you know, the well-organized meetups, they'll usually have a portion of the talk, you know, either at the beginning or the end where they allow recruiters to, or anyone who's like maybe just representing their company looking for, uh, you know, potential hires to list out, like what type of job opportunities they have. And if you're, if you want to talk to them, they'll be available after the talk, uh, you know, to, so you can learn more about it. So meetups are a great opportunity to get out there and network and find out what else is going on
Starting point is 00:14:22 in your area. Yeah. You'd be amazed at how many people, especially in our space programmers, like just try and stay hermits, you know, stay in their house, stay on their keyboards. Man, talking to people, getting into rooms with other people can really open up opportunities. So, you know. But what if you live really far away? What if you live in Alaska? That's a hard one. What then?
Starting point is 00:14:46 I mean, do you like I said, I think at that point you also get involved in communities online, right? The coding block slack. There's there's other things as well. Get up, right? Get get involved in open source projects. It is tougher when you're more remote, but I'm sure there's ways to find out, right?
Starting point is 00:15:06 You might even, heck, you might even post an ad on Craigslist or something. Try not to get mugged and be like, Hey, anybody interested in getting together and talking about software? So I don't know. Be creative,
Starting point is 00:15:16 right? That's the key, but surround yourself with it. Get, start playing with it. If you have a project that's in mind, try and make it, you know,
Starting point is 00:15:24 as simple, as simple as it might be. Yeah. Oh, go ahead, Joe. I was going to tack on that. You know, it's it's hard to find other people as awkward and it's weird. It's not easy, but it's never I like to always say it's never been easier. Like we've got this great Internet thing out there.
Starting point is 00:15:40 You can probably find like 10 other slacks in the coding blocks for programming type communities within five minutes of searching. So you can find something that aligns with your interests and just put yourself out there. Be cool and give it a shot and who knows? Yeah. You made your comment about the
Starting point is 00:15:58 programmers are hermits or something like that. Yeah, they try to be. And no one to stay at home and whatnot. I found this, I posted this in the jobs channel of our Slack, but there was this article trending on Reddit in the programming subreddit about a job board for only remote developer jobs. And you can go and search for like,
Starting point is 00:16:23 you know, whatever language you want, like work from home jobs just in your area. Like it's a east vox.com E A S T V O X.com. And yeah, it's pretty neat. That's awesome. That's really cool. It's pretty crazy to think that that exists now, though. The world is a changing.
Starting point is 00:16:48 That's for sure. Oh, I guess the, you know, the last thing I would say is also kind of know what you're interested in. This, this might sound really stupid, right? But I'm sure that people, you know, I said, look in your, look in your area for what types of jobs are out there. Maybe that's not what you need to do. If you want to make video games for iOS, then start there. Right. It's, it's a no, no, what you're going to be passionate about and what kind of things will drive you to completing something. Right. Because we've all talked about it, creating side projects and even trying to get
Starting point is 00:17:25 them done or even, you know, staying with them for more than a month is sometimes really hard. So finding something that you're very interested in will help push that ball forward. Yeah. And if you are still having trouble with that, you can always build a website for whatever you like, like riding bikes, make a bike website. Find some data, throw it in a database. I don't know. Ask me. Just tweet us or something
Starting point is 00:17:49 and say, what should I do for my side project? We'll figure something out. That's a good point. Yeah, we'll tell you what we want built. Exactly. That's what I have with QIT. That's awesome.
Starting point is 00:17:58 All right. So let me ask you guys this. Have you ever wondered why arrays start at zero instead of one? I probably have. I think I know. You think you know?
Starting point is 00:18:14 I don't think I ever cared enough to look it up, but I probably had that passing thought like, why isn't this one? So this came up, I think it was in like a dev 2 that i found this where there was a medium article and the headline just the the title was like clickbait enough for me like oh yeah let me click on that but it was like why do arrays start with index zero right and uh like you alan i'd never cared i was whatever who cares but then the answer i was like, whatever. Who cares? But then the answer, I was like, oh, yeah, that totally makes sense. So, okay, first of all, let's get this out of the way. There are some languages out there where their rays do start at one.
Starting point is 00:18:56 Cold fusion. All right. So we'll forget those for a moment, all right? All the COBOL programmers are like, hey, wait a minute. We start at one. And, yeah, we're not talking about that. No one's proud of that. Yeah.
Starting point is 00:19:08 But for other languages, let's start like C-like languages, right? It's an offset. So if you have an int array, then the pointer, the address of the first element is the same address as the beginning of the array. It's the same. Uh, and the second element would be the size of int offset away from that. So it'd be one away from it. Okay.
Starting point is 00:19:36 That makes sense. So it's really fast to know if something's at the 16th, that you just take 16, multiply by the size of whatever's stored in there, whether it's a pointer or an integer or whatever, and there you go. There's your memory address. So it's a hardware-based thing, basically, is what it boils down to.
Starting point is 00:19:53 For true arrays. Addressing, finding the address space. Now, some languages get funky with what's in their arrays and how their arrays are actually put together. Maybe they're actually vectors or linked lists under, under the hood, like JavaScript, but in like a true kind of C style language, like you have to declare the size of the array when you create it.
Starting point is 00:20:11 And that's because the size matters and how you jump around and, and add those indexes together. It really matters. Very nice. So I just thought that would be like a good, like a little reminder. Cause it probably been a minute. Yeah. I haven't thought about it in a long time yeah so then i had this other thought too though uh like
Starting point is 00:20:32 you know we talk about code smells a lot right and and i think we've even said it and i definitely know i've heard alan mentioned this recently uh but you know good good, Oh, Oh, Oh, good practices in your Oh, Oh, code make for horrible sequel and good sequel practices make for horrible Oh, Oh code. Right. Yes. Um, so then I got to thinking about like, well, Hey, then is it a code smell? If you have a stored procedure that calls other stored procedures, and those might call other stored procedures, is that like a code smell? Because then you're treating your stored procedures like they were functions in any kind of other programming language.
Starting point is 00:21:19 Joe? I just can't say anything without shouting. But no, it's so, it's so hard to work in SQL server and probably all the others. It's really hard to work with like the results that you get out of store procedures. So it's really hard to even use store procedures from store procedures and
Starting point is 00:21:34 functions are not easy to work with because they can't modify data. Well, so, well, no, outside of that though, it's, it's the whole modularity thing that he's talking about,
Starting point is 00:21:43 right? Whether you're in my SQL, SQL server, server postgres whatever yeah good luck here's the problem i think it is a code smell and it's so unfortunate right because if if you're trying to make database operations as fast as possible then it makes sense to duplicate code. In a nutshell, that's really what it boils down to, right? If you're trying to go for maintainability, which is this whole stored proc calling into the stored proc with use of functions and whatever, then that makes sense, but you're going to take a hit, right? Because like a function, depending on how they're used or whatever,
Starting point is 00:22:25 that thing might have to be called for every single row that comes back in your result set, which is slow because that's an operation on every one of them. But you wanted to be able to reuse this thing in 20 different places. So do you copy out whatever? I mean, the function one though, I've got a total workaround on how you can get around that though. Okay. you could just get the results of the function into a temp table and then join on that temp table in your other table that way you're not recalculating that function over and over you could do that you could take the hit of calculating the one time so you still have the function that you can reuse in all your other procs but yeah it just there was there was some a code base that i was looking into and it was like you know one store procedure calls another
Starting point is 00:23:04 store procedure and then that store procedure calls another store procedure. And they're like passing around user defined types all over the place. And, and I'm just like, man, this feels like it's gotta be like, we're treating stored procedures like their functions in any other language. But that kind of feels wrong.
Starting point is 00:23:20 Yeah. But I understand the intent. I understand why, like you said, like it's, it's about maintainability, but at the same time, it's like, eh. that you're going to massage, right? The one item, right? I'm going to modify the Mike object or the Joe object. That's how you think. When you go into the database world,
Starting point is 00:23:50 you have to think in sets because that's how it is optimized to run. And the problem is, is crossing those two is typically a bad idea because if you have a SQL statement and those tables are indexed a particular way to work that way, well, then you probably need to write your SQL to be that way every single time. When you start cascading that you called that product because it was going to give you this
Starting point is 00:24:17 result set, but then you call another product to give you another result set, and then you're going to join those there. You probably lost a lot of the efficiencies if you had just gone and joined the tables yourself, right? So it's, man, it's frustrating. And I hate this answer, but I honestly think that the better, if you're going for performance, it's better not to pass around shared or common code, right? So everything you've learned about clean code from Uncle Bob, throw it away when you start writing your SQL. That's what I'm hearing.
Starting point is 00:24:52 For sure. Yep, absolutely. You'll just go crazy trying to reconcile those two. I mean, like, have you guys found anywhere where that wasn't the case, where you would have rather seen the functions or has it ever not bitten you having an OO type approach in your database?
Starting point is 00:25:10 No, no, it does never worked out well for me. Okay. And SQL is great. Like I know I tend to pick on SQL. It's fantastic. It's used by like everyone and, you know, forever and will be used forever and ever. But, uh, it's definitely got some downsides when it comes to maintainability. You know, that's what it is. But I will say though, that brings up another question,
Starting point is 00:25:31 I guess without going too far off topic here though, we've talked about this in the past. Do you put your logic and whatnot in the database or do you put it in your application? Maybe if you're putting it in your application, you don't have to worry about this stuff as much, like you have some sort of service layer that's helping with that. Or do you put it in your application? Maybe if you're putting it in your application, you don't have to worry about this stuff as much, right? Like you have some sort of service layer that's helping with that. Maybe. I don't know. Depends on what kind of logic we're talking about there.
Starting point is 00:25:51 Like logic can mean a lot of things to a lot of different people. It can. If you're putting your logic in store procedures and you're implying the database is the heart of that application and that ecosystem. And if you're okay with that, then you're okay with that. But if you want to start introducing a search engine or some other data storage mechanisms, or now you've got different types of databases and you've got a really big type application or ecosystem, then it's hard to really have one system that's at the heart of it. And so that kind of falls apart.
Starting point is 00:26:23 Well, it's not even just the heart at that point. It's your heart and your brain, right? Like it's all of it. It's the entire organism, right? Yeah. So here's where, and this is where some of my thinking goes. So I recently tried to do a little thing to where I was pulling out data and it was joining two massive sets of, or actually many tables together. And all I was trying to do was pull data out. And it took hours because I'm
Starting point is 00:26:52 joining millions of records against millions of records against, you know, another hundreds of thousands of records and just trying to get all that stuff together. It was struggling. Now, granted, you can beef up the hardware, but there's only a certain point that you can do that, right? And it gets really expensive. So this is where I'm going with the whole application thing. And one day I want us to talk about this stuff in depth. But like Kafka streams or any type of MapReduce type problem, if you're talking about like Hadoop or something like that, in Kafka streams, what you can do is you can pull in a stream of data from a table. So you're not joining all your tables at once, right? Like you're not trying to join 10 different tables and get that stuff out, which is an expensive
Starting point is 00:27:33 operation. You get a stream in that contains the table information for one, right? And as data comes in for another one, the streams, you'll have a bunch of little applications running everywhere that puts that data together, mashes it up, and then sends it off to wherever you want it to be, right? So it can actually be faster than hitting your SQL or your relational database trying to join all that data together because now you have a bunch of little applications that can quickly chew through that stuff, right? So it's an interesting concept. I just bring that up because if you do it that way, you're actually writing applications in an OO type way using streams as opposed to, you know, trying to modularize your SQL database or your relational database type thing.
Starting point is 00:28:19 Yeah. I mean, you know, hitting on a point that you made a moment ago, one of you guys made about the – oh, shoot. Now I even lost my train of thought. You hate it when that happens? It's gone. Uncle Bob, central nervous system. No? What was it now? Uh-oh.
Starting point is 00:28:39 Functions, modularity, maintainability. Something to do with SQL. Indexes. No. It'll come to me got nothing yeah yeah but i agree it is a code smell it's funny it's a code smell and that you know that performance is going to suffer but it's the inverse of a code smell because you now have maintainable code in sequel right so i remembered it now. It was about the, the, the heart of it, the central nervous system, the heart of it. Like I'm all for, you know, not keeping that in your
Starting point is 00:29:11 database. I like that idea because, you know, one thing that we've learned over the years, right, is that you can only scale, like take SQL server, for example, let's beat up on SQL server for a moment. You can only scale that thing, but so big, right? You can only get so much of a server for it before you just can't buy any more hardware, right? You know, because the next version of whatever, you know, faster memory or faster SSD or whatever you need isn't available yet. Right? So if you keep that in your application tier, then you can, you can spin up more servers, right? So you can scale horizontally instead of vertically. Right. So I like that idea, but yeah, it was just the main thing that the, the main theme behind this though, was like, at what point, at what point
Starting point is 00:29:59 do you try to recognize that, Hey, I think we're treating this SQL like it was any other language and we should put a stop to this. We should recognize this as an anti-pattern and stop. I agree with that. But then that begs the question of, well, how are people going to try and fix that, right? Then people are going to start storing their SQL in tables and have it try and create things, right?
Starting point is 00:30:26 Yeah, I wouldn't go in that far. Well far well no that's the commonality right like if you people don't want to duplicate code right like it's almost even sql developers don't want to duplicate that code but a lot of times you have to to make it performant so well okay this is a great point, because it's, why do we not want to duplicate code? Because it's been ingrained in our head that it's badant. And you might think, oh, I'm duplicating code. But it might not be. Because if it changes for different reasons at different times, then it's not true duplication. But I don't think that's the case in SQL. What you're saying is absolutely true when we were talking about the O stuff. But I would venture to say that if you're using the same where clause all over the place
Starting point is 00:31:23 because that's how you have to filter your data down based off some business rule, you're duplicating it, right? To make it fast. You're inlining that code to make your query perform well, right? But maybe, but I'm thinking of the case where like, maybe you, maybe you have a block of code where you are, you know, doing some pre-selection of data and you're putting it into like a temp table or whatever, or a CTE. And, you know, you might be tempted to like put that into some other, you know, store procedure that could return it back or whatever so that you could like, quote, de-dupe it. But it might not be a bad thing if you had that same section of code in a second proc, in a second store procedure, right?
Starting point is 00:32:08 Because then if the first one changed for a different reason and the second one was okay to leave it as is, you know, those are changing for different reasons. But then there's the inverse problem where they were supposed to be the same, but somebody only knew about the first one and changed it. That's where it gets complicated, right? This is hard. Can we just stop? Well, to be fair, too, like 99% of applications aren't going to run into horrible scaling problems with SQL Server
Starting point is 00:32:35 or whatever SQL database they're using. It's going to be fine for whatever website or whatever small application they're doing, and they're never going to run into these. They're never going to run out of hardware for the application they're doing and they're never going to run into these or, you know, they're never going to run out of hardware for the application that they're working on. You don't think so really though? I would say 99% of applications don't have to go to like Google scale.
Starting point is 00:32:54 No, I agree with that. But I do think that at some point, like I've seen it in so many different things I've, I've worked on is there's, there's a breaking point when data reaches a certain level to where it's like, everything was fine yesterday and today it's not.
Starting point is 00:33:13 It's hitting the wall. I mean, listen, man, I can write enough bad queries and add enough indexes to any query to make it perform bad enough to where you'll think that you're at Google scale. Just, just give me five minutes with your query.
Starting point is 00:33:26 I mean, I guess that's the thing, though. Like, you're joking about it, but it is true, right? And I'm not talking about, like, your typical WordPress type site or anything like that where there's a database behind the thing. But I think that a lot of times, especially homegrown applications, they grow to a point to where it's like, wow, this thing performed great and we didn't expect it to be in use a year and a half later. And now the data has grown out of control and now my modular SQL doesn't work so well. Now we've got to revisit this and get rid of the modularity and go more
Starting point is 00:34:03 performant. So I don't know. I think it's a great topic. It makes you wonder then if you have to pass around user-defined types, is that a code smell? They're no fun to work with, so I'm going to say yes. They're stinky.
Starting point is 00:34:20 You just got to make those generic user-defined types. Ultimately, I think they're a good thing. Like user, I don't know what it's like in other databases, but I know in SQL server, uh, it's annoying to work with because of how you have to kind of fill them in
Starting point is 00:34:32 and work with them. But ultimately it's good. Like you add a column and like, it lets you know every single place that you have to drop and recreate in order to even work on it. So it's good for maintaining that kind of type safety, which I'm a fan of. At least they used to be until I went full on JavaScript.
Starting point is 00:34:48 All right. So we have, we have blank topics for Joe. What's this one? Do you guys listen to the indicator? It's the podcast from planet money, short little topics, economics.
Starting point is 00:35:01 Never heard of it. No. Okay, good. So they play a game called a Under sometimes where they'll bring on a special guest and they'll ask them about a particular topic or question and they'll say, is this underrated, overrated
Starting point is 00:35:12 or, you know, kind of meh. So we're going to play Over Under. And we're just going to go in alphabetical order. Well, no, not quite. We're going to go Alan, Outlaw, and Joe, just to make things easy and consistent because i got a bunch of questions here wait you're gonna ask yourself a question
Starting point is 00:35:30 how's that gonna work well i want the answers oh you'll see it'll be fine all right so yeah i've trapped you guys all right so So first topic, remote work. Alan, underrated, overrated, or? Wait, what was it? Just fine. Remote work. Remote work. Yeah.
Starting point is 00:35:52 Is it overrated? Oh, hmm. Just fine. Okay. Outlaw. Yeah, I'm in the just fine category. Yeah, I think it's about right too. What about standing desks?
Starting point is 00:36:11 So there's just under, over, or just fine? There's not awesome? No, awesome would be like, I think it's awesome and people don't even know how awesome it is. So that would be underrated. That would be underrated. Underrated. Okay. Because I have standing desk envy, I guess
Starting point is 00:36:32 I have to say underrated. Yeah, I'm going to say under too. I love mine and I think that it's way better than people think. Agreed. It's going to start getting harder. Yeah, I mean I have like a ridiculously expensive ergonomic chair and I spend so much time seated in it that it's still like I have to get up because it's like, God, my butt hurts. Why?
Starting point is 00:36:59 Well, hey, that makes for a good one. What about fancy chair? Alan, over, under, or fine? Fine. Okay. Outlaw. i guess overrated you think it's overrated isn't like people think it's too good oh well i mean like that's why i'm that's why i'm going with the the wanting the standing desk right it's because i have the chair okay you know i have i have a herman mill Herman Miller Aerion chair that I sit in. And yet, you know, because my doctor was like, yeah, no, you have to go out and get an ergonomic chair, right?
Starting point is 00:37:35 And so, like, after looking around, I was like, okay, well, I guess this is the one I need to get. So, you know, it's a stupid amount of money, but fine, I'll buy it. And now, you know, I still spend so much time seated in it. Then it's like, oh, I'm still in pain. This thing's overrated. Yep. All right. I mean, I love the chair. Don't get me wrong.
Starting point is 00:37:47 What about you, Joe? I think they're overrated, but that's just because I don't really care much about it. I'm not spending 500 bucks or up. But man, I will say, I got to add a little bit to this. It's not overrated because a quality chair doesn't creak and pop and it'll freaking last a long time like there's other benefits to it right like a hundred dollar chair will last you a year and you're going to be tossing it right oh yeah so yeah i don't even know how long i've had this one yeah i've
Starting point is 00:38:15 had it forever yeah that's the thing like you buy a quality chair that's why i don't want to say they're overrated i think it's a yeah i'm not trying to swing your vote but yeah all right but he's trying to swing i try to swing your vote, but yeah. All right. But he's trying to swing. I try to swing your vote. Not trying to, but you know, if he happens to, that's just coincidence. So what about MacBook pros? Oh man. Nowadays I feel like it's over and I hate to say that, but I think they're overrated for the, for what do you get? As soon as they, as soon as they, well, I want to say as soon as they introduced the Touch Bar, they were overrated. But honestly, I kind of feel like as soon as they went Retina, it went overrated. Because I still feel like my model MacBook Pro was the last good one.
Starting point is 00:38:58 Where you could upgrade it. Yeah, where you could open up, you could change out the memory in the hard drive if you wanted to. Yeah, it's a little bit thicker because you has, you know, you can plug an ethernet cord into it without a dongle and yeah, you know, it's got a DVD player, but you know, I love the retinas, but yeah, those touch bar ones, especially overrated. Now, now they have the I nines that overheat. Well, they fixed it. Apparently they've software software, but there was somebody that actually went and Now they have the i9s that overheat. Well, they fixed it, apparently. The software?
Starting point is 00:39:25 Software. There was somebody that actually went and did a video, and they showed it after the update. And it's fast. But, yeah. So, what about you, Joe? Over, under? Over. Over.
Starting point is 00:39:36 Yeah, three overs. That's sad, man. I know. What about programming books? Ooh, programming books. Underrated. Under. Okay.
Starting point is 00:39:47 I think so, too. Okay. So you know what the next question is. Which programming books are we talking about? Are we talking about a particular language, or are we talking about some of those, like the Clean Code series, that span any type of language or topic? I meant either one. Up to interpretation. Sounds like we're all on the same page for the most part. Yeah, they're valuable.
Starting point is 00:40:10 Well, because I also think of books like books on Git, for example. Git isn't a programming language, but there's books on it, right? And the Angular 1 book I've got isn't very valuable anymore. What about online courses?
Starting point is 00:40:28 Underrated. I'll go with under also. It depends on the price. I'm going to say just fine. Okay. There's so many free ones, though. There are, and that's why. Video, I think, is great.'s i think everyone knows it's great i i've been a big fan of corsair
Starting point is 00:40:53 here lately going through their catalog uh so yeah i mean and just like the amount of free stuff that you can get from like legit serious college universities that are out there. They're putting this content out there that you can go and take this class for free and learn it. It's unreal. It's insane. Well, speaking of colleges, what about algorithms? Learning algorithms as a programmer.
Starting point is 00:41:20 I think it is man if i was in school i would be like overrated i think now that i've been a developer for a while i'd say it's underrated how about what you think yeah i'm somewhere in that i'm somewhere in that ballpark with you i'm somewhere between underrated and just fine yeah i'm somewhere in that ballpark with you. I'm somewhere between underrated and just fine. Yeah. I'm somewhere between that. So whatever that is. Under fine. Like it's just under.
Starting point is 00:41:51 Under fine. What about you? I'm going to go with fine. I think there's pros and cons. Some people really need them. Some people not so much. And so I'm just going to say right in the middle. I like it.
Starting point is 00:42:01 What about native apps? Like if you were to develop a native app. Overrated. All right. I'll wait for his answer. Just fine. Because if it's a game, just fine. I'm going to go just fine.
Starting point is 00:42:20 I'm going to say over. Here's my reason. Unless, okay, let's take games out of the equation because, well, I mean, games can kind of come into this equation too. Unless you need a specific, you know, some specific subsystem of the device, then I think that you can get by with just a web app just fine. Probably. Take out the marketing side of the equation where marketing is like, no, but we want the icon on the phone. That's important real estate to us. So take that part out because that's about feelings. And we're not talking about feelings here. This isn't a feeling
Starting point is 00:42:54 show. But if you... And by subsystems on the phone, I mean like if you need access to GPS data or you need, you know, a jet. It's hard to even reach because nowadays you have access to most of that, right? Yeah. So I'm trying to think of one. So games might need to actually get to lower level systems because they might want to get to something like, you know, shoot, I keep thinking of Core ML. But what's the other one? GL? OpenGL? No, uh, you know, uh, shoot, I keep thinking of core ML, but what's the other one? Uh, GL open GL or no, no, no. On iOS. I'm trying to remember the iOS stack, but I can't at the moment, but yeah, that's what I'm thinking. Like, you know, you, you might need to get to that,
Starting point is 00:43:35 um, metal metal is what I'm trying to think of. Um, you know, that you need to, you need to have access to that framework, that library in order for your game to perform. So I would include games in that category of you need access to a specific subsystem. And in that case, the subsystem might be the video processor that you're not going to have in a browser. You said fine, and Joe, you also said fine.
Starting point is 00:43:58 No, I said overrated. You said overrated too, right, Joe? Yep. Nicholas showed me the way I'm fully on board with PWA because I don't want to install another app. Let me just use the internet. Yeah, true that. Wah, wah. Relational databases.
Starting point is 00:44:14 Just fine. All right. Me too. Yeah, I think that's fair. I think they're important. They still play a crucial role. I think that in some places they're way're important. They still play a crucial role. I think that in some places they're way overused and other places they probably should have been used.
Starting point is 00:44:30 So, yeah, they're just fine. What about NoSQL? You didn't know this was going to be a painful episode, huh? Document DVs in general. I would say underrated. I want to say under. Maybe that's just because my current. Yeah, what we work in.
Starting point is 00:45:01 Man, I think I'll also go under because I think just a lot of people grew up in the relational world and they don't understand the place for the document world. Fair enough. What about. No, you didn't answer. What was yours? Oh, I'm fine with it. You're fine? Okay. Yeah.
Starting point is 00:45:10 I think it's one of those ones that averages out. Unit testing. Underrated. Under. You? Under. Okay. I mean...
Starting point is 00:45:21 It's hard, though. So, I'm tempted to say fine. No, but that's good to say fine. No, but that's why it's so underrated though. People don't, don't understand the value of it. Like if you take the time to break out your app enough to where you can write unit tests on it up front,
Starting point is 00:45:36 you know, like what, what that buys you long term in regards to it, not having baked in dependencies and you know, the portability that's going to come with that. Yep. Not to mention the maintainability of it and how fast you can iterate on it.
Starting point is 00:45:51 Totally underrated. What about Docker? Oh, man, that's so hard because I want to say underrated. The hype is high. Yeah, that's what I was going to say. The hype is so high. So I'm going to go with fine. I don't think it's overrated.
Starting point is 00:46:05 I think it's important. So are we talking Docker or are we talking containers? Docker. Same, Docker. I'll still go fine. Man, yeah. I guess I'm in the fine category. You, Joe?
Starting point is 00:46:24 I'm fine. Okay. I think there's a lot of hype, but I think it's really the fine category. You Joe. I'm fine. Okay. I think it averages. I think there's a lot of hype, but I think it's really important and interesting. So, yep. What about TypeScript?
Starting point is 00:46:33 Hmm. We're almost done. I think it's underrated. I don't know, man. That's the thing that you like about JavaScript is that it is loosey-goosey. Yeah. I love it, but I've heard enough people say that they were able to speed up development by 2x
Starting point is 00:46:54 because I had type checking and just the safety built into it. So you took away all the things that made JavaScript awesome to make it work like every other compiled language. Sort of, yeah. So it sounds like Outlaw, you're over? Yeah, I am kind of leaning more towards the over, but I am kind of finding it humorous, though, as i listen to myself because i'm like man i'm pretty sure if we go back to like the early episodes like coding blocks year one i was totally like hating on javascript and it's loosey-goosey and everything but now it's like okay fine don't take all that away from it yeah let it be man it never hurt you what about joe what was yours on typescript i think it's fine
Starting point is 00:47:41 i think that um you know possibly a little bit underrated like i i'm glad it's fine. I think that possibly a little bit underrated. I'm glad it's out there. I think that ES6 is really cool. I'm kind of personally more excited about that. So I'm not that excited about TypeScript, but it's kind of nice to have the option to do some static stuff if you want to. Cool. So whatever. And we're all doing preprocessing nowadays anyway, so why not? Yeah. What about.NET Core? I think it's fine right now. It's got a lot of hype, but I think that's legitimate hype being cross-platform and all that. So I say it's fine. I'm going to say it depends.
Starting point is 00:48:18 Like, it could be totally overrated. You've got to pick one. No, no, no. Hear me out. If you don't need it for your particular application, it's totally overrated. I think it's what you're saying. So it's like if you're not a.NET developer or you're not doing things outside of Windows, it's like... Outside of Windows would be the thing.
Starting point is 00:48:38 Yeah. No, I don't even mean that. I don't even necessarily mean outside of Windows. You could be doing Windows development and just, you know, maybe you're working in an older code base or something like that, you know, and you haven't run into a need for the things that.NET Core is going to buy you. You know what I'm saying? Like that kind of portability, for example, that it's going to buy you,
Starting point is 00:49:00 then it's like, eh, it's overrated. It's nice. It's awesome. It's cool. I'm not taking any of that away from it, but it's a case by case. This one comes along with my Docker for the ride though, man. I can put my.net core in my Docker and run it on Linux on Mac on whatever.
Starting point is 00:49:16 If you needed that portability, but if you don't need that portability, you don't know you need it yet, but you need it. Yeah. I mean, now you're right. What about you, Joe?
Starting point is 00:49:26 What was your response? I'm going to go with under because of the Docker situation that's kind of evolving. I think it's easier to deal with it there. I think the way we're kind of building things is real cool. I like that I can deploy on Linux and work on my Mac easier. So I'm on board. It actually makes sense. So you're saying underrated.
Starting point is 00:49:41 Yeah, he's saying it's underrated. You know what? I mean, I think it's a huge part of the Microsoft strategy, right? Like when you look at their Azure cloud offerings, like it was initially all Windows type stuff, right? And they quickly started shifting towards containers and Linux and all that kind of stuff. And I think that is why.NET Core is such a big deal to them. So. What about functional programming?
Starting point is 00:50:08 Overrated over. I got to say over to, yeah, like I'm sure there's people out there that are using that and, uh, you know, that it's really important to them, but,
Starting point is 00:50:19 um, not to me and not to most programmers I know. So, well, here's my reason for saying over is that Is that there's some awesome stuff in them. I'm not trying to take that away. Not only... I know that there are a lot of developers out there that work in those languages.
Starting point is 00:50:34 And the languages themselves are elegant. And they have so many awesome features about them. But if they were everything that they're hyped up to be, then they would be the norm. I kind of feel right. Is that wrong? Maybe. I mean, that's almost like saying SQL databases or relational databases would have been replaced, too. Right.
Starting point is 00:50:58 I don't know. It's to me. It's more about the hype of it with. Oh, you should be doing functional programming. Why? I mean, Haskell isn't on the same level as a JavaScript or a Java or a C Sharp, right? And I'm not trying to take anything away from it. It's a crazy awesome, the syntax in it, the features in it are awesome, but it's not there in terms of the same popularity.
Starting point is 00:51:26 So why is that, right? Is it because it's being overhyped? Is it because functional language is being overhyped? Because if it was everything that it was supposed to be, wouldn't everybody have moved to it? Maybe that's just the wrong thinking. I don't know. I'm going to get some backlash.
Starting point is 00:51:41 So listen, if you don't like that comment, send your emails to Joe. That's right. That was Joe speaking. You can find him on the Slack channel. Did we end the – are we at the end of the list or we got some more? We got two more. Sorry, I didn't think it would be so long. No, let's do it.
Starting point is 00:51:55 No worries. This is fun. That's us. We like to talk. What about machine learning? Ooh. I think – You know I had to go there.
Starting point is 00:52:05 I think that one's fine. I think there's a lot of hype, but I think there's a reason for the hype. I think we're going to melt all the polar ice caps for this, but I think it's fine. Hmm.
Starting point is 00:52:21 I mean, it's definitely, if you go to some trade shows, it seems overrated when, like, every booth you talk to, you know, they're talking about their machine learning. You're like, all right, whatever. So, I don't know, man. Why did you have to ask? Now you hit his soul. He's not going to sleep tonight because he's like, did I answer this one right?
Starting point is 00:52:47 Yeah. There's no right answer, only wrong ones. He still hasn't answered them. I haven't, no. Joe, what's yours? I kind of want to say underrated because I think that it should be in more places. I think it should be more ubiquitous. It should just be everywhere. Okay, so underrated. So I'm going to go with underrated.
Starting point is 00:53:02 All right. You, Joe? I'm going to say overrated just because the hype is so high, man. If you listen to a machine learning podcast, like five minutes in, they're talking about like the singularity and aliens and time travel. So I just can't. It's hard for me to stomach when things take such a ginormous leap when I can't get freaking Siri to call my wife. I mean, let's not hold it to Siri, though. That's a bad example. Siri.
Starting point is 00:53:29 I was like, ordering a pizza. I'm like, nope, nope, cancel. Listen, I've already said Siri like three times, and my phone still hasn't lit up, nor has my watch. They're all like, I don't care. I said, call my wife. Pizza on the way. What?
Starting point is 00:53:42 You go to anyone's house after they get their Echo Dot or whatever, you know, within that first week. They're like, oh, check it out. Play Bob Dylan. It's like added to laundry list or whatever. Ordering Tide Free. Like, man. Trying the Tide Cod Challenge. Oh, man. That's so true.
Starting point is 00:54:01 So I just, I think it's really useful and I agree with both of you guys. I mean, I think a lot particularly, like, I think that it could be used in a lot more places a lot more effectively, but it's just so oversold. You'll talk to people, they'll tell you about the machine learning and AI, and then you find out they're doing K-means in 1% of the application, and they've branded themselves as alien wizards or whatever. I do think it gets oversold a lot from marketing.
Starting point is 00:54:24 It does. Yeah. All right. Okay, one more. You do think it gets oversold a lot from marketing. It does. Okay, one more. You know what it is? No. How long you got to guess? Rockstar programming language. What kind of cheese would you have in your refrigerator? Cheese dust comes up all the time.
Starting point is 00:54:40 Obviously, it'd have to be powdered. The answer is powder. Okay, well, I mean, it's gotta be blockchain. How can we not talk about blockchain? I was going to say Bitcoin. Yeah. Okay, good.
Starting point is 00:54:49 Yeah. Blockchain. I think it's so misunderstood. I think that. Overrated. It's use cases. Man. Overrated.
Starting point is 00:55:04 I'm going to go with underrated right now. No, I'm going to go with just fine. I can't say underrated because there's too much hype. I'm going to say it's just fine. All right. I'm kind of curious here. Wait, what's yours? Oh, over.
Starting point is 00:55:18 Overrated. Okay. Yeah, for sure. It's just I hear it oversold. But I think a lot of it has to do with my echo chamber. I almost exclusively talk to programmers. I almost exclusively read like programming websites. And so it's like stamped into my forehead and eyeballs by now.
Starting point is 00:55:33 So, you know, I'm a little over it, but it doesn't mean it's bad. So who do you think had the most unders, overs, and fines out of the three of us? Oh, man. The most overs is you. Is this like a Cosmo test or something? The most overs was you. The most unders was Mike. And the most fines was me.
Starting point is 00:55:55 All right. Let's see. This is actually really hard to count up. I wish I had done this at the time. You should have had like a spreadsheet for it or something. Yeah, exactly. So you guys should talk amongst yourselves and I'll come back with the totals here. If you had just used machine learning, this would have been done, man.
Starting point is 00:56:14 Yeah. And the blockchain would have verified it along the way. And you could have written it in a functional language. That's right. Beautiful. It would have been easy. No state to worry about. That's right. It would have would have been easy. No state to worry about. That's right.
Starting point is 00:56:26 It would have always been verifiable. You'd have had item potent results. Actually, I think I'm pretty close here, actually. So if we just hang on for, if we just,
Starting point is 00:56:33 if I just keep talking long enough. So, as for the finds, Alan was number one with eight. And I think I got a total of 17 there. So,
Starting point is 00:56:42 half of those you said were fine. I said seven. Outlaw only said four. Oh, man. Does that say something about my personality then? That I'm like, you know, not that optimistic about life and everything? I'm like, everything's down.
Starting point is 00:56:55 Or it's everything's way up. Yeah. I'm either high or low. The peaks and the valleys. I'm bipolar. All right. And for unders, let me count mine. Okay.
Starting point is 00:57:08 So, Alan and Alan, you're actually tied. Both of you said seven things were underrated. Okay. Yep. So, now I can just do math here. What was yours for the unders? Four. Oh.
Starting point is 00:57:22 Yep. And the overs were him by a long shot. The overs were me. Nope. Not true. So the overrateds, me and Outlaw were tied. Both said eight. So Allen,
Starting point is 00:57:38 you were lowest low-balance total player. So none of us ever got below four on any of these. But it is interesting to see that we had a clear winner. Like Alan thought the most stuff was fine. You guys were tied on underrated. And Alan and I were tied on overrated. So I walked the middle line.
Starting point is 00:57:56 That's kind of where I stay. Yeah. Okay. Awesome. So I am totally bipolar. I guess I will go see a doctor about that. Thanks, Joe. Oh, man.
Starting point is 00:58:08 I ain't going to be diagnosed on the show. You don't have any weak opinions. They're all strong. They are. They are. Isn't that most developers, though? That is most developers. So it's that time of the show where we're going to ask you, please, if you haven't already, do go leave us a review.
Starting point is 00:58:26 As mentioned, we do read them. We appreciate the time, the feedback. And it is awesome to hear you folks share, you know, how it's helping you or, you know, getting you energized or whatever. So please do. If you find the time, you're sitting around, you know, tapping away on your phone, reading your Google News, you know, and you think of us, head to codingblocks.net slash review and drop us a few words. We greatly appreciate it. Yeah. And we've asked this before, too.
Starting point is 00:58:54 Spread the word. Tell it. Share it with a friend. Tell a friend about the show. You know, if you think that they might be interested, they listen to podcasts and you think that, you know, they enjoy listening to programming podcasts, let them know. And with that, let's head into
Starting point is 00:59:09 my favorite portion of the show. Survey says... We just did a survey. We've got to get you to work on the Steve Harvey voice now. Oh, the Steve Harvey voice? We've got to get that going. Okay.
Starting point is 00:59:24 I guess that's my homework for the next couple weeks is watch a lot of steve harvey family feud oh man it's amazing all right i guess it's just like the era of like when you grew up watching whatever you watch right so yeah yeah all right so last episode we asked what is your most productive time of day? And your choices were morning, got to get my work done before the rest of the office gets in. Or midday, let everyone else go to lunch. I'm getting this commit merged. Or evening, I'll let the traffic die down while I close one more ticket. And lastly, night. Now that all the meetings are over,
Starting point is 01:00:08 I can finally start my day. So, Joe, we'll start with you. What do you think the listeners picked? Morning, 26%. Morning at 26%. And he sounded confident. He wastes no time with that, Alan. You know what's funny is I'm going to go morning also at 27%. Oh, you're not going $1?
Starting point is 01:00:30 Okay. No, I'm going to have to go one over. But honestly, for me, it's night. But I think most people try and get a jump on it. Night for you. What about you, Joe? You're a morning person, Joe, aren't you? Yeah, I'm a morning person.
Starting point is 01:00:44 That's why you said morning. Yep. Yeah, I'm with both of you. I agree with Joe that morning is totally the time where I can be the most productive. Like you, you know, you're well rested, you're fresh and everything, but I'm a night owl by nature. So like it's hard for me to get up in that morning to do that. So yeah, I'm like torn. This goes back to my bipolar-ness. Well, Alan wins. Sweet.
Starting point is 01:01:12 Morning, 57%. Wow. Whoa. Nice. 57% of the vote. By far and away, the number one pick. Night was number two, wasn't it? No.
Starting point is 01:01:23 Really? No, it was evening. But they were really close. Night was number two, wasn't it? No. Really? No, it was evening. But they were really close. Okay. Yeah, they were like a percentage point away from each other. I remember going into an office. I would actually try and show up before everybody else so I could get work done.
Starting point is 01:01:38 Like that was... Yeah, but don't you feel like a seasbag leaving before everybody else? Even if you know you're good, you just... Did we ever? No, I'd still leaving before everybody else? Even if you know you're good, you just... Did we ever? No, I'd still stayed until everybody else was gone, right? That was the problem with being the early bird, too. It was like I was the late bird, the early bird. Yeah.
Starting point is 01:01:54 Yeah. No, see, that was another reason why I didn't want to be the early bird. Early in my career, I had no problems coming in, being the late morning person to come in, because I knew I was going to stay late. And it was like, well, why would I morning person to come in because I knew I was going to stay late. And it was like, well, why would I bother to come in early if I know I'm going to stay late? So yeah, lose my whole day. But even though like I knew that mentally I was more refreshed in the morning though.
Starting point is 01:02:14 Yeah. So, all right. Well, for this survey, and we give away a lot of books. So we're going to ask, what's your favorite book type? Hardcover, because I want to protect my investment, or paperback. I like to curl the cover back with one hand while I read it. Or ebook, it's the only chance I won't lose it. Or books, I ain't reading no books. I love the, it's the only chance.
Starting point is 01:02:48 It's so true though, right? It is. Cause you know that Amazon's got that backed up for you. You don't have to worry about it. I can't, I can't say what mine would be cause I feel like I'd be swaying the vote, but I'll do it next time.
Starting point is 01:02:59 Yeah. And this episode is sponsored by airbreak.io. When your website experiences an error, Airbrake alerts you in real time and gives you all the details you need to fix the bug fast. And I love that I can see all those details in one spot. I think I've got four apps hooked up now, so I can just log into the website and see everything right there, and I can drill into the apps as needed. And really, I should say, the spot that I mainly monitor my apps from is just my email because they send me notifications when errors first occur
Starting point is 01:03:30 and they also send a really nice daily digest email that sums everything up. So I'm not getting overloaded with information. It's just really convenient. Right now, Coding Blocks listeners can try Airbrake free for 30 days, plus get 50% off the first three months on the startup plan. To get started,
Starting point is 01:03:46 visit airbrake.io slash coding blocks. That's airbrake, A-I-R-B-R-A-K-E dot I-O slash coding blocks. All right. So into the next part here again. So my second thing was we've talked about a lot of patterns on this show over time. We've described them, gone into detail, whether it was good or bad, and gone over a bunch of patterns. And one of the things I've noticed, and this came up with caching specifically that I saw, is a lot of times that would be very localized to pieces of code. And so if you saw that you're updating somewhere, you would update the cache right there and then nothing else would be aware of that particular data. So it would go somewhere else to get that data. And, and so you would have
Starting point is 01:04:39 these caches that were out of sync, right? The same data in two different places were referencing, you know, one was referencing a cache but there's only little places where you do certain things to them, like a cache or something like that. I think it's important to remember the patterns that exist. So for instance, one of the ones that we talked about was the PubSub, right? The publish subscribe. When I look at that, I look and I say, well, there's got to be a better pattern, right? Instead of having all the cache happen and say like a controller or something, there should be a higher order type place where the caching takes place so that if you change
Starting point is 01:05:37 the data somewhere, fire an event off that gets caught by an event bus or some sort of event event actioning system that gets floated up. And now whether it's a repository or what knows that, Hey, there's something that just changed, refresh, push that into the cache. Right. And then that way, every place in your code doesn't have to know about it. There's a more centralized place that is handling that kind of thing. And, and I've just seen that I've seen, uh, I've seen like sprawl of code like that, where, you know, it started off pretty small and it wasn't that bad. But then over time,
Starting point is 01:06:13 as more people start adopting those caching mechanisms or, or whatever it might be, then you start having these little bits of, you start finding these bugs all over the place because wait, it says this over here, but over here it's different. And it's because, oh, well, they didn't implement the same cache or they did the cache a little bit different or it's not using the same key or whatever it might be. And so when you start seeing situations like that, it goes back to the whole code smell thing is, okay, how can we put in something that will, that will centralize this or, or give us a way to have, have better insights as to what's going on. So just curious what you guys
Starting point is 01:06:53 thought about that. I would tell you guys about my cushing strategy. No, don't do it. Don't be the one to do it. Uh, this is probably pretty good. Give it to Allah. I mean, give one to do it. That's probably pretty good. Give it to Allah. I mean, give it to somebody else. No, I mean, it's definitely interesting. You know, I've written, I've been tasked with writing a couple caching abstractions before. And it's not, it's no fun task because like you kind of get blamed for everything you know you do it's always your fault when it when it doesn't work so
Starting point is 01:07:34 it's it's like yeah kind of like what joe said is like you don't want to be the guy that has to do it well somebody always wants it to be done differently it's always like just kind of messy when it comes to things that kind of overlap. Yeah. And you can't help the – I mean, you were talking about the keys and someone might be using the wrong key. And it's like, yeah, you can't – there's only so much you can do to protect the end user from themselves. And in this case, the end user is another developer. But there's only so much you can do to protect them from themselves. And in this case, the end user is another developer. But there's only so much you can do to protect them from themselves.
Starting point is 01:08:07 And that's why it's weird, because I think this actually goes to better overall system design. And it's something you don't typically find out at the beginning of a project, right? It's something you find out as a project goes on is, oh, wait a second, we've got this user object and wait a second, they've got a different user object. They should probably be the same user object, right? Like whatever they're trying to do with it, they should probably be using the same thing. And so it kind of goes back to proper design saying, okay, now we have a user object that everybody should use.
Starting point is 01:08:39 And if properties change on that, there should be some sort of event fires off and then something knows to go update a cache or whatever. And I think it just goes to a bunch of disconnected silos of code is where you typically see this problem. And you only find out about that as time goes on, and you start seeing these problems, right? Or maybe it's just a pattern of like, if you had, this might be the wrong word for it, but maybe if you had like a repository in front of it as to how you would even get that, that user object, then that repository would know whether or not it wanted to cache something. And if a chain, if the property changed that it needed to add it or update the
Starting point is 01:09:19 cache with the new value or whatever. Right. Um, but you know But by not having that repository abstraction layer in between it, then yeah, you could have some places where it's like, oh, I'm just going to go and directly get it and other places where it's like, no, I'm going to try to get it from the cache, right? And so there's that disconnect there. Yep. And that's what I'm talking about with the design is just over time, if you've got a bunch of people working on it, it doesn't even have to got a bunch of people working on it, it doesn't even have to be a bunch of people, but one person's doing it differently than another, you have this disconnect. And that's when you almost have to take a step back and start drawing some boxes and say, hey,
Starting point is 01:09:56 how is this thing being used and where is it being used so that we can start identifying these problems and get these bugs out of the system? It kind of makes me wonder. Go ahead, Joe. You were going to say something. No, no, no. Yours is better. Nobody said a word yet. Well, I was kind of shifting the topic. That's why I was going to let you go speak on the caching thing. But it was kind of thinking like, because I've had this thought too. Like, is it better to have a, a team of people, like regardless of what your size, your team is where everybody's working on the same thing and they're like,
Starting point is 01:10:34 all hands are in the same code base. Or is it better to where you, you split it up to where everybody has small pieces of the overall thing that they're responsible for. And that way, they can know their one piece of the puzzle interchangeable, and therefore, you don't really get the opportunities to… Specialize. Well, specialize is one word for it, but I was going and cleaning up an area as new features come in. Because before you know it, you're tasked with moving on to something else. And someone else is brought in after you to work on that area.
Starting point is 01:11:34 And they might not have known the things that you wanted to address eventually. I don't know. I struggle with what is the right answer there like your thought i was like the two pizza rule you hear that one okay well i mean it starts with pizzas so yeah are they the meat lovers no i guess the amazon thing is basically like tried trying to have teams that don't exceed two pizzas which for me is like three people and very large pizzas oh Oh, that's interesting. But yeah, just the idea of like keeping teams smaller.
Starting point is 01:12:08 Right. And not exceeding too many people, but just because it gets kind of the communication overhead is rough and it doesn't give people the same kind of level of ownership. Yeah. I mean, I remember I met a developer from Spotify at, I don't even remember which conference it was now. And he was talking about the way their teams were structured. And if I remember it correctly,
Starting point is 01:12:32 it was definitely very like, you might have had maybe a half dozen people total on the team, but every person on that team had a very specialized part of the overall puzzle. So they would work on that handful of people would be responsible for delivering one feature. Let's say if it was ad content inside of the application. And that was what they did. But one of the people on that team might be more about the graphics for it. Another person might be for the JavaScript part of it, you know, things like that.
Starting point is 01:13:08 Like it was, it was very, you're still kind of specialized. I have no good answer for this. I think, I think that I like the pizza thing. I've never heard of that, but I do like it. If you have a few people working on something, then it makes it easier to manage. Like you said, communication doesn't scale. Communication is probably the hardest thing there is, right? I like that.
Starting point is 01:13:36 Man, as a full-stack developer, though, it kills me. Like if somebody says you're working on the UI and you're the UI only, I would be like. It doesn't have to be like that though no i never said you had to work in one technology just like the area that you're working in could just be a feature yeah it could be but then then you're almost the one guy right like if you're working in one area and and you're not just in a particular stack which which correct you could be you could be going across the stacks, but then you're not really working with anybody on something. You know what I mean? Then, then it's more like you're doing it and that's, yeah, it's, it's more solo type stuff. So it's, it's a tough one, man. Like I do like the idea of a few people owning an area because then you can refine
Starting point is 01:14:26 the patterns. You can refine the design. You can refine the code. You can do all that kind of stuff. And what I like about that more than anything is it might be that you picked up something good from each other, right? You found some patterns that worked and now you go replicate that in other areas that you work on. And it might be that you're working together in another area, or it might be that you're working with somebody else, but you start getting good patterns going around.
Starting point is 01:14:55 Man, it's so hard because then the flip side to that is working on a small feature is, depending on how big your application is, this almost goes back to the whole caching problem that I even brought up here, is you're not aware of how they're caching things over there. And so you have the same type object or same need, but you're not aware of their cache. And so you're getting data differently than what they were. And this is where it's hard. I'm okay with that, though, because going back to the... But it's a bug in your app. No, I wouldn't necessarily
Starting point is 01:15:25 call it a bug no in this case let's say it was though let's say in this case let's say that you're over on one screen you see one thing you come to another screen where you're using the same data but theirs was cached and yours isn't it is a bug now okay but where i'm going with this though is from the point of view of like going back Uncle Bob's accidental versus true duplication, right? Just because one feature team writes something and the second feature team duplicates that same code, it doesn't mean it's actually true duplication. Yeah, fine with that. It might change for different reasons. Fine with that, but I'm sticking with the caching thing where...
Starting point is 01:16:07 Yeah, you're stuck on cache. Well, this is the problem. How do we flush that cache? This was the whole thing that was kind of driving me nuts is that because people aren't aware of how it was done, because it was done in a very localized spot, it wasn't done... But I think in your example, though,
Starting point is 01:16:22 once that bug is found, then it kind of highlights the problem. And now it's known like, oh, hey, team A, why aren't you doing this? And team B is like, oh, because we're doing it like, you know, that's when the two teams talk, figure out, oh, yeah, we found this. But do you figure out a solution or does team B just say, oh, okay, well, we need to cache it like this over here or something, you know? That's what I'm getting at is a lot of times you'll see things done in a very localized piece of code, as opposed to saying, wait a second, this needs to be brought up a level because this should be handled by
Starting point is 01:16:52 something else. This shouldn't be done down here in the weeds. This should be handled by something that, that knows about cash or knows about data access or something like that. I mean, kind of the takeaway I'm getting from this though, is like, like maybe the, where you're saying the team should be drawn or where the lines are drawn for who's responsible, where the responsibilities lie, is maybe the team is responsible for... Have the smaller team that's responsible
Starting point is 01:17:21 for this overreaching feature, right? So if cache is something that's responsible for this over reaching feature. Right. So like if cash is, is something that's needed across, you know, across all, it's a cross cutting concern across all of the parts of the application. And there's the one group that's like, Hey,
Starting point is 01:17:34 you know, we maintain that. And that's what, that's, that's our thing. We were cash money and you know, we're the cash money brothers and that's what we do. Now,
Starting point is 01:17:43 would you say that, um, caching is easier if you've got a strong, consistent API, like a firm REST API? I don't know that the API matters. Well, maybe if it goes back to when I mentioned the repository pattern in front of it. The pattern in front of us. In that case, that is the API.
Starting point is 01:18:02 The pattern backing it, I think, is... And so that could be another cross-cutting concern team, right? Is the data access layer team. Like how data is read or written to whatever your storage mechanism is. And that team could say like, oh, hey, we're going to cache these things. Okay. Yes. Yeah. okay yes yeah but you're still not on board with like the smaller teams more siloed and focused on particular areas no i actually like it i i do like that um because that's actually my biggest
Starting point is 01:18:38 complaint like what you said is typically when people are just moving all over the place there are no patterns established. Because it's literally, okay, I'm in here. You're almost like a task force at that point, right? You're on a special ops mission. Your mission was go in and get somebody to get out. That's what you did. You're gone.
Starting point is 01:18:57 You're never looking back. You're done, right? Whereas if you are camped out somewhere for a little while, you're going to tidy up. And I think that's important. And I really like that. I think trying to hit the balance for people that want to do that kind of stuff versus people that like to just be the ones that go and do other things. But I don't know,
Starting point is 01:19:18 man, that one's, I like the small teams in a nutshell. I like the small teams focusing on small parts of, of a product. I think that it overall will make the small teams. In a nutshell, I like the small teams focusing on small parts of a product. I think that it overall will make the product better. I think Uncle Bob said organize your code into layers, horizontal layers, and then you can kind of adjust your team as needed, however you like. That's pretty good arguments for that, if you remember.
Starting point is 01:19:40 I don't remember exactly what they were anymore. I don't either. But, yeah, I'm going to have to go back and read that. It seems like, too, I remember. If you want to be But yeah, I'm going to have to go back and read that. It seems like too. If you want to be around feature, if you want to be vertical, that's fine. Just keep the code in horizontal slices. Keep it the same. Yeah.
Starting point is 01:19:51 Yeah. It seems like I remember hearing something too about like the teams would start to match however the code was done. Does that sound familiar? Oh, yeah. It's like the code would grow to um kind of mirror the organization of the company vice versa yeah yeah all right so i'm gonna change topics on you guys do you guys do you remember napster everybody remembers yes sir right those are the best of times
Starting point is 01:20:18 everybody remembers the internet metallica versus metallica versus napster, right? Oh, man. Aim, Napster, and StarCraft. Like, take me home, please. Aim, yes. So I wrote this, like, you know, in the theme of, you know, that era of Napster versus Metallica or Metallica versus Napster. So Napster, good. Cobalt, bad. Yeah. So there was this interesting article, and I don't remember where I found this, but I'll have a link to it.
Starting point is 01:20:58 But what was your first programming language that you started writing in? Let's start with Alan first since Joe did the survey first. It was on a handheld TRS-80 Basic. Basic was your first language. Okay. Joe? Logo. Logo. Okay. Never heard of it. If you want to count, it was a little turtle. Oh! Say it again. A little turtle.
Starting point is 01:21:18 It was on an Atari. An old Atari, right? I don't know about Atari, but I had one of my classes had a logo, so a little triangle of my like classes had a like a it was like a logo so like a little triangle and you would say like write 10 and it would move 10 draw and you can say pin up or pin down and eventually you get into like looping and i think even recursion so you could draw some pretty cool patterns so i love just playing with that and trying to like draw cool stuff oh that's awesome oh and then they came out with
Starting point is 01:21:41 lego logo a few years after that where you basically um plug this like really obnoxiously big cable into like a little lego motor and you would sell the turtle things would be like turn left and the motor would kind of like try to turn it left and you use the same basic logo commands very cool sounds like scratch oh yeah yeah i've seen scratch uh okay so for me it was um pascal that, that was my first. So it turns out like it matters what your first programming language is, uh, at least according to this article in some of the research in this article. So basically the idea here though, is that, um, the language that you start with, right? The paradigms, the idioms, whatever, you know, that first language, they're going to dictate about how you think about everything else.
Starting point is 01:22:31 All the data structures you're going to think about, all the algorithms you're going to think about. I mean, honestly, Alan, listen to what Joe just said. Now we understand why he's always writing games, right? It's true. Because his first experience was with the game, right? That's true. So it makes sense, right? And so basically, we've made this quote before where it's like, when all you have is a hammer, everything looks like a nail, right?
Starting point is 01:22:58 And so if the language that you know is, that you know and you know well is Pearl, then everything that's going to come to you, you're going to be like, oh, I'll just write that in Perl. You want an e-commerce site? I'll write that in Perl. Right? You heard his reaction. Yeah, exactly. And so I joked with Napster, good.
Starting point is 01:23:21 Cobalt, bad. Because in this article, they were talking about how Dykstra was anti-cobalt, right? That there's a quote in here that said, he says, the tools we use have a profound and devious influence on our thinking habits and therefore our thinking abilities. The use of cobalOL cripples the mind. Its teachings should therefore be regarded as a criminal offense.
Starting point is 01:23:54 I get what you're saying. It's kind of like you can imagine an art school trying to teach students with crayons or some other tool that's just not very good. How are they going to get to the place where they need to be if the tools that they kind of grow up with are not suited now here's where it's about to get hilarious this is where it's going to take a hilarious turn you ready dexter goes on to say it is practically impossible to teach good programming to students that have had any prior exposure to basic
Starting point is 01:24:21 ouch as potential programmers they are mentally mutilated beyond hope of regeneration. That hurts. That's so funny that you said BASIC. Yeah. I couldn't have set that up any better. That hurts. But yeah, so, I mean, you can understand it, though. It kind of, like, let's flip this around, right?
Starting point is 01:24:47 So if you started off in a strongly, and we've even mentioned this before. Like, you know, I joked around, like, you know, earlier in this episode about JavaScript and, you know, my thoughts on it, you know, back in coding blocks year one, right? And even during coding blocks year one, when we would talk about things like JavaScript versus something like a C, I think I had mentioned then it was like, well, because I grew up in this like strongly typed, you know, language type of environment that that's, that's my preference. I like that versus if you grew up in a, in a Lucy kind of Python or JavaScript kind of world, you're like, yeah, this is cool, man. You know, JavaScript, like, you know, like take C++, for example, right?
Starting point is 01:25:33 Like, and you try to reference a property on that object and the compiler is like, no, this is wrong. This is wrong. Stop right now. You know, and where Python's like, okay, yeah, no, this is probably okay. And then at runtime, Python's like, whoa, okay yeah i know this is probably okay and then at runtime python's like whoa wait no this is wrong and you know javascript's like you know you write the code and it's like that property might be there and then at runtime it's like it wasn't but it's okay we'll move on right like javascript could care less right so if you if you come from that kind
Starting point is 01:26:01 of c world for example and then you look at something like Perl, you're like, what is all of this? What is this stuff, right? Like, dollar underbar, what are you doing? Like, how did that magically appear? How did that suddenly get a value, right? Like, what does that do? You know, weird things like that.
Starting point is 01:26:20 That's what I'm saying. I'm mentally crippled. I mentioned, like, Perl program, we're looking at something on Java for the first time and be like, public static void what? Import what? Throws? Why do I got to throw all these things? But it kind of goes in line with what I saw in a couple books. One thing
Starting point is 01:26:36 is that what you do matters. Your habits matter. So if you build up habits with those crayons or with those languages that don't have the kind of precision or whatever that aren't as professional, we'll say, or aren't as strict as some static languages, then those patterns that you build come out when you're working on other things and focusing on bigger problems, like those things slip out. And so that can be bad.
Starting point is 01:26:58 But the good news is that, you know, you're a human with a brain that's like super good at adapting to new situations. And so you can kind of retrain those parts of you and just work on the things that you want to improve. And you're really good at that. Like we're designed for that. So there's hope. True.
Starting point is 01:27:16 So do you think that being a, a polyglot fixes this? That's a good question. I remember when I first learned Ruby after working in ColdFusion for a long time, a little bit of JavaScript, and seeing how they did things and how they solved problems. And a lot of the tools were available in languages as I was used to, but seeing it being so common, just the different kind of patterns, it really kind of changed how I thought about programming.
Starting point is 01:27:44 I felt like it was a really good influence on me. So I think that being a polyglot is a good thing. I think it does fix it. Just for what he said, you see the other patterns, right? Things start to make sense like, oh, this is a better way to do it. The whole functional thing being overblown. I think there's value in learning functional programming to pick up the patterns, right? And to see that kind of stuff.
Starting point is 01:28:08 And so I think the polyglot side of this does help you become better at all of them, right? Like you don't approach everything as, hey, here's my hammer. I think it helps you to think differently. I think the downside is like if you're always looking at new languages you never go too deep in one then potentially your code could be really inconsistent kind of influenced by whatever you're reading at the time yeah true too i'm willing to take that what about you on the polyglot yeah i mean i'm kind of curious because i you know ultimately the whole article or this at least this portion of the article was about like, you know, whatever your first one is, man, that's what's going to lay the foundation for everything else, right?
Starting point is 01:28:52 And so in which case it's kind of a loaded question. Can being a polyglot fix this? No, it can't possibly fix that because you can't learn multiple languages at one time. So if you're truly influenced by the first one you learn, then that influence is there. Like, you know, there's that old expression about you only get one chance to make a first impression. Yeah. Right. So then it can't possibly fix that. I like what you're saying about, you know, the other patterns and whatnot. But at the same time, I'm thinking like, well, it kind of depends. What's that next language? Because if that next language is too much too similar to the other one,
Starting point is 01:29:24 then you didn't really change anything. If you went from a c++ to a c sharp to a java like i mean those are all like really close in the same wheelhouse like the same kind of concepts and things apply there they're not there's not a whole lot of difference there right i mean it's funny like i'd say all three of us are probably pretty true polyglots in this regard because I mean, even just thinking about in, you know, over the years. So I started with basic when I was a kid and then my next, I guess real one was probably C plus plus. And then after that, I think I was in cold fusion and then I went to C sharp and done some Java. So like literally you're talking
Starting point is 01:30:06 pretty opposite ends of the spectrum on all those things and then you got things like sql that's not a programming language but is you know it's it's a querying language so i i mean when you think about that that is a lot of brain massaging there to get those because they're all very different, right? Like super different. So I don't know, man. I do think being a polyglot fixes it. And no, if you're only spending a day in each one of them, no, that's not going to work. But if you spend any significant amount of time in them, you start to see the things that work and don't across those different, you know, programming paradigms.
Starting point is 01:30:48 So learn one new language a year. Some people do that, right? Like that was one of your goals at one point was to pick up a new language each year, which I think is crazy. But yeah, I didn't keep up with it very well. But it is cool. Like, I mean, even I played with Ruby for a little while and it was pretty neat, right? Like it felt a little while and it was pretty neat, right? Like it, it felt a little bit JavaScripty,
Starting point is 01:31:07 but on the same time, like they'd done some really nice stuff, like with some of their syntax was just awesome. So, you know, I don't know. I don't think you're screwed with the first one that you picked. I don't think so.
Starting point is 01:31:20 I mean, Ruby, Ruby kind of seems like Python, Ruby. They kind of seem kind of similar i've never done any python maybe like go kind of seems similar to like a c but like you know if you really wanted to get to something like mind melting then like you know go from uh you know c sharp to haskell for example, those are totally opposite ends of the spectrum.
Starting point is 01:31:48 And so maybe if that's where, if you started, if your first language was Haskell. You're done. Right? Well, no, I'm not saying you're done. But what I'm saying is it's totally going to, that's your first impression of how all code should be from then on. Yep. Right? And so, yeah, that's what you're going to, you know, that's your first impression of how all code should be from then on. Yep. Right. And so, yeah, that's what you're going to expect.
Starting point is 01:32:10 Readability. I remember going from playing with Visual Basic and going into C, C short, maybe? I don't remember. But thinking, why would anybody do things so differently? Like this doesn't make any sense. Dim variable as what is that? Why not just var? Why not just string? Or I mean, yeah, it is funny,
Starting point is 01:32:33 but yeah, you get into the functional things and it is my mouth. Dim variables. That's right. Oh man. So yeah, I think, I think we've been fixed of it. Whatever we started with, I think we've, we've all landed in a halfway decent spot.
Starting point is 01:32:48 So, I don't think it was the worst thing ever. I like it. All right. So, I guess I'm up again, and I've got another weirdo one because I can't just be normal. I got to always find the rules and then figure out how to make them weird. So, uh, I'm interested in your short term, midterm and longterm bets on,
Starting point is 01:33:11 uh, programming technology. Like, what do you think? Like if you, if you had like a dollars programming dollars to invest in the programming, like stock market, and you could put like your money into, uh, I don't know, mobile apps or cloud or JavaScript or React or whatever.
Starting point is 01:33:30 You know, so be creative with it. But you get to invest into three. One for short term. So one that you think is going to give you the most return in one year. A midterm, the one that's going to give you the most return in five years. And one long-term, which is going to be, we'll say, 20 years. So I have to invest some kind of money in a technology? Yeah, and don't worry about the amount.
Starting point is 01:33:56 It's just if you kind of had, like, imagine you're in Vegas and you're betting on what's going to be more popular one year from now. All right. I'll kick us off. Short term, I'm going to be more popular one year from now. All right. I'll kick us off. Short term, I'm going to go JavaScript. Okay. And you're going to go on broad JavaScript. Yeah, just in general.
Starting point is 01:34:13 Like it's the language that everything's adopting, tooling's being built around, all that kind of stuff, right? Yep. Midterm, should we – I'll do my three. Midterm, we'll go cloud because cloud, regardless, AWS, Azure, Google, whatever, pick your cloud of choice. Yep. That's just getting bigger and bigger. Long-term, I'm going to go AI. Okay.
Starting point is 01:34:41 Because you look at things like what I think MIT, didn't they just do another one of those dog things? Like apparently that thing's gotten even smarter. So yeah, I think long-term we want people to think, we want robots and machines to think for us. We don't want to have to think. So I think that's what's going to happen. We're all going to be super fat sitting down eating chips while our surrogates are out doing things for us.
Starting point is 01:35:06 Wally. There we go. Those are my investments. I like it. I definitely think that Python would be in there. Just because other articles that I've seen,
Starting point is 01:35:23 it's one of the more in-demand languages out there. So I think I'm going to bet against you on Zopster. Is that your short term though? Is that your short term, midterm or your long term? Yeah. Shoot. I don't know.
Starting point is 01:35:40 Because I like the other answers you gave, you know, but I kind of was like, yeah, I don't want to copy them. But I was kind of like, well, I don't know. Cloud would probably be like long term because that's going to be here forever. I think that's a long term play. So but I don't I don't know what my other two technologies would be, though, that I would I would bet on. You just say Python, Python, Python. Well, no. I mean originally I was thinking like well blockchain should probably be somewhere in that though. That would probably be like, maybe it would be like Python short term, blockchain
Starting point is 01:36:20 middle and cloud long term. Or would you say okay now blockchain, would you say digital currencies? Is that going to be the big thing, right? Like there's a bunch of different things we could go with. No, not digital currencies. I wasn't thinking of digital currencies when I was thinking blockchain, yeah. You could have said wearables. And I also think that Tesla has to be mentioned somewhere in that too.
Starting point is 01:36:40 Oh, did you say wearables? Like wearables, like, um you know actualized self or quantified self or uh uh yeah no i think we're over that i think we're over that i think like the whole phone thing we're done with like i don't think that's anything exciting about i think i think phone why technology wise like you know because phones are kind of like close to wearables because we keep them attached to our head all the time. I think the next thing we're really waiting for there is the reinvention of the flip phone. We're waiting for the flip phone to come back as a smartphone.
Starting point is 01:37:18 I think that's the next big thing that we're waiting for there that hasn't happened, but yet there's always rumors about, oh here's the next apple iphone it's gonna be full no cyborg implants nobody's going for that bit you know the only thing that that might make me change my mind on the long term would be something in the medical field regarding technology like uh oh are we going like all out yeah i don't know about years what's 20 years, like I don't know about treatments or maybe just genetics, right? Like it's probably not far from it to where they're going to be like, oh, well, we see these markers and that means that you're more prone to cancer or whatever. And so either we're going to treat you different or you're going to be on certain diets or what? I don't know.
Starting point is 01:38:08 Like that's the other thing, the other side of things where I think that further down the line, if I was going to put my money on something and it wasn't AI, it would probably be somewhere in the medical field. What was, what was the year thing again? Like what was the definitions for short for one, five and 10,
Starting point is 01:38:23 one, five, sorry, one, five and 20, one, five and 20.. Oh, sorry. One, five, and 20. One, five, and 20? Yep. Like within 20 years?
Starting point is 01:38:30 I mean, self-driving cars are going to be here. Yeah. That's definitely happening. That's supposed to be by 2022. So you're in five years. That could totally upset the economy. That would be a- That would be game changer.
Starting point is 01:38:41 Big deal. Like imagine if you lived in New York City, right? All the yellow cabs, if they just suddenly became self-driving cars, right? That's a whole industry gone. Well, workforce. Right, workforce. Yeah. Still the same need, but long-haul trucking, yeah.
Starting point is 01:39:00 But you know what's funny, though? I've read articles on this before. They always talk about when they automate things that people worry about, oh, I'm going to lose my job. But it creates more jobs in other areas, right? There's going to have to be people that maintain these things. So, I mean, there's other things that happen. It's been like that throughout history, though.
Starting point is 01:39:19 Right, exactly. So the self-driving car is an interesting one, too. Dude, oh, man, I would kill for like Jetson type cars, right? Like give me Skyways. That would be amazing. But that's not going to happen. We know some people working on self-driving cars in the Slack. So, I mean, it's like it's happening.
Starting point is 01:39:35 This is real. Yeah. So is that your bet for 20 years, self-driving cars? I mean, it's probably the best thing I've said so far. Yeah, I guess. Okay. All right. So what's your three, Joe?
Starting point is 01:39:49 In one year, my bet is on JavaScript. It was tempting to pick either React or Vue. I couldn't. So I'm just going with JavaScript. I think that'll give me the most ROI in one year. For midterm, I'm going to say JavaScript. So five years from now, I think we're still going to be talking about JavaScript. Probably won't be Node anymore, but I think JavaScript
Starting point is 01:40:11 is sticking around. And for 20 years, this was really tough because I was really tempted to say machine learning or AI. That was really tough. I think I finally settled on cloud. I think that computers are going to keep getting smaller and more distributed and more granular and kind of spread throughout our lives. And so I think the cloud is going to be like really important. And I think that's going to be a bigger, you know, economic or yeah, economic, ecologic and social kind of factor in our lives. So that's where my programming dollars are going.
Starting point is 01:40:45 Do you guys see, like, I just, you know, I read books like the guy that you turned me on to, Daniel Suarez. Like, do you think that, let's say, 15, 20 years from now, is it going to be something where everybody's wearing some sort of either sunglasses or some sort of implant contact type thing in their eye that they see somebody and they see their name? Is that where we're going? Like, I don't see it as being completely out of the question. Google Glass, right? I mean, that was the interesting thing about that book.
Starting point is 01:41:25 If you were lucky enough to read The Demon before, like when it originally came out, it like predated technologies that later came out. And so that idea about like wearing glasses where you could like see data and information about stuff that you're looking at. And then, you know, years later, Google Glass comes out. And you're like, whoa, it's just like in the book. Yeah. And Google Glass died. I can totally see something like that. And the cloud would be a big part of that, right?
Starting point is 01:41:56 The cloud would be the central nervous system of that. So I think the cloud is going to enable all these things that self-driving cars. That's going to be another one that the cloud is probably going to be heavily, heavily involved in. Right. So AI. AI will be. Yeah. So did you guys speak in a cloud and see the story about like it was Google, Facebook, Microsoft and, and the data projects that they're working on
Starting point is 01:42:25 to where you can take data out of one system and take it from one to another. No. So it's like an interchange of data. So this is kind of like keeping along with your cloud idea, right? Like as things become more ubiquitous and part of our daily lives, right, that that language between them becomes more common too
Starting point is 01:42:43 so that it becomes like, you know, just another socket in the wall that you can just plug in whatever you want to plug into. I mean, it's going to be interesting, right? Like, I'm trying to think, there's certain things that are almost just available now, right? Like if you go to Starbucks, you can get on the internet, right? I have a feeling that the cloud's going to be baked into many things that are purchased in the future you go to buy a car part of that cost is going to be the cloud subscription that came with it type of thing or you know i and maybe you don't even buy cars in the future maybe it's going to be something where you know all the cars are the same oh oh no no have you heard of this i
Starting point is 01:43:23 thought this is where you were going. Like car share type thing? No, Volvo is doing this now. There's a subscription service that Volvo is coming out with for one of their cars. Yeah, see, that's where I think things are going to change, right? I want to say it was like, depending on which model car you got, I think there was like two different options that you could get. And like the highest priced option was $600 a month. And included everything that's not bad you don't mean you don't change the oil in this thing you do no maintenance at all on it it's a subscription and when you're done with the car you don't it's not
Starting point is 01:43:54 like a lease where it's like oh well it's you know whatever it's like you just turn it in you're done i mean oh i forgot this part too i'm'm sorry. I keep interrupting. This is exciting. It also included the insurance. Oh, that's killer. I mean, but that's kind of what I'm thinking is if you look at the way that we've been going. So actually, you know what? If I could invest in something differently, it might just be subscriptions. Because look at everything that's happening now, right? Like if you start a software business, what are you going to do?
Starting point is 01:44:23 You're going to do software as a service because you want that monthly income coming in, right? It makes bookkeeping easier. Yeah, totally. And I don't know, man. It just seems like everything's going in that direction anyway. So cars, I don't know, maybe even learning institutions, right? Like instead of paying to go to college, you're going to pay a subscription to, to, you know, Hey, I'm going to pay my a hundred dollars a year from the time I'm, you know, plural site. Yeah. Coursera courses are like that. Like, I mean, yeah, they're kind of already, we're, we're kind of already getting to these subscription models
Starting point is 01:44:57 for these things that you're mentioning. So anyway, I got a 30 day free trial to the University of Florida. There you go. But, I mean, seriously, think about it, though. Education's been getting out of control, right, as far as costs and all that. There's articles coming out all the time. There's some dude that had a million dollars. I think I sent you guys the article. Yeah, he was a doctor. A dentist.
Starting point is 01:45:22 He had a million dollars in student loan debt. First off, how do banks let that happen? But secondly, paying the minimum payments in 10 years, it was going to double to $2 million. And it's like, okay, I mean, come on. Yeah, if I remember that article right, he was counting on the fact that after like 25 years, the debt was going to be forgiven or something because it was going to be so high or something. I think if I remember that right. It was something ridiculous.
Starting point is 01:45:47 But yeah, so I mean, I don't know. This whole subscription thing, I think with information becoming more and more available, going back to your cloud thing, that's not a bad place to invest. I think everything's going to be tied into it. And whatever you're paying subscriptions for is also going to be paying into that, right? The Microsofts, the Amazons, the Googles, they're all going to be getting a cut of all purchases that are happening because they're all going to be sending data up there. Yeah. And it kind of hurts to say, like a Jeff Reitz example, I used to just buy it every couple of years. And so it kind of hurts to have a subscription fee, but really it's better on both ends, I think, because on their side, it kind of lowers their risk.
Starting point is 01:46:25 They've got recurring income. They don't have a big burst when a product comes out and then a desert of income until another one. And as a consumer, I can pay $9 a month or whatever it is per month. And if I need that money back or if I pollute my job or something else happens, I can change that. And so I don't have to pay a big bunch of money up front. It just kind of evens things out.
Starting point is 01:46:49 Yeah, you guys remember when Adobe suite for Photoshop and all that was like 2,500 bucks a year. And now you can get that plus way more for 50 bucks a month, right? 600 bucks. We used to just download on Napster. Nobody ever did that. Well, yeah. I mean, i can remember like just buying photoshop alone was $900 by itself right now you spend 600 bucks a year and like you said they're not getting a huge influx of cash but they've got this steady stream of income that people even forget they're paying for like me yeah and you know 18 versions of adobe photoshop later that's right man right yeah i swear that adobe wanted people people to steal Photoshop back in the day. Not anymore.
Starting point is 01:47:28 Like, CS3 days were like, you know what? Let's go ahead and let the students, like the 20-year-olds, get the free copy and learn how to use it and edit their little crappy websites. And then when those guys are 30, they're all going to pay $900. That's right. You say that, like them wanting to steal it. I actually,obe was one of the first that i can recall where part of the license agreement actually spelled out that you
Starting point is 01:47:50 can install this software on multiple machines as long as you use them like you know at different times and the percentage of use was you know very right like you couldn't use both machines 100% of the time, right? Right. I don't think that would be possible. Right. Yep. So, yeah. That was fun, man. I liked it. Yeah, and let us know in the comments if you think otherwise or what your thoughts on any of these topics have been, really. Yeah.
Starting point is 01:48:19 So. With that. Yeah. We'll head into Alan's favorite portion of the show. It's the tip of the week. Yeah, baby. All right. So I've got several tips here for you, which is going to be kind of sad since I think Joe was hammering on the machine learning earlier.
Starting point is 01:48:47 So the first one is going to be, I found this really cool article from Google. The rules of, well, basically it was Google's machine learning overview, really. But one of the sections in it was their machine learning guides. And one of the sections in it was the rules of machine learning with a subtitle of best practices for machine learning engineering. And they had like all of these different steps for it that I thought was kind of interesting. Like one of them was like, you know, Hey, before machine learning, Hey, don't be afraid to launch your product without machine learning. Like that's not, that's not, you know, you don't have to, right. Um, and that it's good to just go ahead and get the design out there and implement metrics. And that way you can get data and you kind of get buy-in from your users early on about like any data that you might want to collect or whatnot right
Starting point is 01:49:28 and uh you know when it comes time to like choose machine learning over some complex uh heuristic right that that's when you need to start bringing it in because that complex heuristic is going to be unmaintainable and there's a bunch of interesting points in here. So I'll have a link to that. But then there was also this other cool one that I found that I think this was trending on like the programming subreddit, but it was Rico's cheat sheets. And it has like this whole list of like, okay, let's say for example, Docker compose, right? You want to know the cheat sheets on that. So it has like basic examples and commands that you're going to want to know just to get kind of started, right?
Starting point is 01:50:15 Uh, building with Docker compose, running it, how to set ports, environment variables and dependencies, things like that. Right. Uh, there's some in here for Docker file. There's Git is in here. Then there's like IDEs. So maybe you want to know about Atom or Sublime, and it'll show you like, hey, here's all the keystrokes that might be of interest to you, right?
Starting point is 01:50:42 So you can find this at devhints.io. There's just so many in here. I can't even begin, you know, from bash to react to a VS code. Uh, cron is in there. Uh, chef is in there. Just you name it. It's in here. There's a cheat sheet for it to get you started. So pretty cool little tip on that. And then one last little tip. I shared this with Alan like a couple of weeks back. And I was like, you know, I don't know if everybody realizes this. Maybe a lot of people don't know this. But if you have a Thunderbolt display, then on your Thunderbolt display, on the inside of
Starting point is 01:51:28 it that you can't see, so let's say you have your display just sitting in normal landscape mode, then on the left and right border of your display, one near the top corners and one near each of the bottom corners are magnets. And it's super awesome because you can use it to hold your stuff, right? So, you know, it can't be like too heavy. It needs to be somewhat lightweight. But if you are, you know, quote Apple fanboy, no judging, then you probably like me, you might have a dongle or two that samsung is laughing at you about and you need a place to keep your dongle so you can just stick it right there on that magnet right there under the display and it's handy it's right there where you want it
Starting point is 01:52:17 when you need it love it actually i saw his monitor i was like but do you have like a tape behind that he's like no it's magnet in there yeah so basically i have like the um the the what is it three no what's that the standard headphone it's one in point eight millimeter jack no three and a half millimeter jack to the lightning connector, right? That short little dongle. And it's just stuck to the side of the display. And you would think like, hey, how is that staying there? How is it not falling? And there's no trick.
Starting point is 01:52:59 There's just a magnet there and it's holding on to the lightning connection. It's pretty cool. All right. So on mine, I actually just thought of one that I meant to have in here. And I struggled this episode. It was one of my favorite parts of the episode. And I literally was just dying to try and figure out a tip. So the first one that I did, because it was the lazy man's way out, is it's not as cool
Starting point is 01:53:23 as Outlaws was. He's got dev hints.io, which have millions of cheat sheets. I have one cheat sheet and it is the ECMA 20. Yes. 2015 or yes. Six cheat sheet. It's on get hub.
Starting point is 01:53:36 There's some good tips in there. It's just, it's just a nice quick overview of some of the features in the S 2015. I don't think we've talked about those in quite a while if we ever went over them in depth at all. But so, you know, enjoy that. The other one is, so I've been trying to, Outlaw brought up the thing earlier about
Starting point is 01:53:57 should you have smaller teams working on one portion of a site or on an app or whatever. And I've been trying to like diagram out an application. And the problem is when you do that, you run into a lot of things like there's these verticals, there's these horizontals and just trying to even get it out on a piece of paper can be really mind bending, right?
Starting point is 01:54:18 It's almost as hard as programming. And yeah, you need more than one piece of paper, dude. It's ridiculous, right? Well, I found this tool because I was on my phone and I was like, man, there's gotta be a decent diagramming solution. And there's one called, uh, draw express and on Android, it has excellent reviews on iOS. It looks like it's about a four star, but it's really cool stuff. Like you can
Starting point is 01:54:46 open up this thing and you have, you can either do flow charging, do mind maps. You can do almost like UML type stuff, like class diagrams for software. And what's really cool is you can draw a shape on the screen and it'll plop it out there. So your standard boxes, your circles, your diamonds, that kind of stuff, it'll do it. But what I thought was even neater is the way that they've done some of the gestures with the thing. So let's say that I draw four boxes on the screen and those represent four portions of my app. I can now draw a box around those and it'll group them together and create like a little dotted grouping thing for it. And then I can move all those together. You can double tap to fill in the things and all. So at any rate, really nice little drawing tool
Starting point is 01:55:30 for doing diagrams and flow charts and whatnot in a fairly easy to use way. And they use gestures so that you can just, you know, if you want to delete something off screen, tap on it and draw an X and it'll disappear. So I thought it was really fun. I think it was $8 on Android, and I don't know what it is on iOS. Maybe it's about the same.
Starting point is 01:55:52 This thing looks like Gliffy, but for iOS. Yeah. Or for mobile, I should say. Yeah, dude. I love it. It's a lot of fun. And I think that – so there's a free version, and I think it limits you to a few diagrams. Or if you the paid version, then, then you get, you know, you can do as many as you want.
Starting point is 01:56:09 So again, it's mind mapping plus flow charts, plus other types of diagrams all in one. I really liked it so far. All right. And guess I'm up next. So I found a really interesting Android app. So another mobile app here, it's not on iOS, unfortunately. It's called Algorithms. And the
Starting point is 01:56:29 subtitle there is explained and animated. So it's like, I think, $2. You can pay another $4 to unlock all the algorithms. But it's basically just a collection of algorithms, like what things we talked about. Dexter's algorithm, Bellman-Ford, MergeSort. And you can click on it and step through
Starting point is 01:56:45 line by line and actually see it do a nice little animation with the little objects and the numbers and everything's nice looking. You also hit just kind of play and it'll play through and do the whole animation at a nice reasonable speed. But it's also just got some really nice background info. So I could say scroll down to the security section
Starting point is 01:57:02 and say Encryption Basics and it's not really animated. It's almost like a little slideshow and kind of slip, like step through. And it's explaining, you know, public, private key security to me. So it's just kind of nice. And it's a real lightweight app. So it's just, you can kind of like keep under the desk and interview. So when they ask you about, you know, differences between stacks and keys,
Starting point is 01:57:23 you can just kind of look under the desk and give them an intelligent answer. Dude, that's really sweet. This thing has got a ton of reviews too. Yeah, it's really nice. And it looks like they're adding more stuff all the time. That makes me want to make it. Yeah, I'm downloading it right now. Yeah, I really like to program those algorithms that we did last time.
Starting point is 01:57:42 So I would like to get spare time and program a lot of algorithms. Most excellent. Yeah, that's pretty cool, man. All right. So with that, subscribe to us on iTunes, Stitcher and more using your favorite podcast app if you haven't already. And also along those lines, if you haven't already left us a review, we'd greatly appreciate it if you haven't already. And also, along those lines, if you haven't already left us a review, we'd greatly appreciate it if you would by heading to www.codingblocks.net
Starting point is 01:58:10 slash review where you can find some helpful links there. Yep, while you're up there, check out our extensive show notes, examples, discussions, and more. And send your feedback, questions, and rants to the Slack channel or join my guild in Warcraft
Starting point is 01:58:23 because the next expansion is coming out and that's where I'm going to be for the next couple months. And follow us on Twitter at CodingBlocks or head over to CodingBlocks.net where you can find all our social links at the top of the page and also the Warcraft guild. And we keep forgetting, if you want some swag, some stickers, something, head to CodingBlocks.net
Starting point is 01:58:40 slash swag and we'll get those sent out to you. Oatmeal. Cheddar.

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