Coding Blocks - Why Get Into Competitive Programming?

Episode Date: August 30, 2021

We step away from our microservices deployments to meet around the water cooler and discuss the things on our minds, while Joe is playing Frogger IRL, Allen "Eeyores" his way to victory, and Michael h...as some words about his keyvoard, er, kryboard, leybaord, ugh, k-e-y-b-o-a-r-d!

Transcript
Discussion (0)
Starting point is 00:00:00 You're listening to Coding Box, episode 166. Subscribe to us on Spotify, iTunes, Stitcher, wherever you like to find your podcasts. I'm sure we're there. If we're not, let us know. If you can, if that platform allows for you to leave a review or to give a thumbs up or a star or whatever, we would appreciate it if you did so. It really does mean a lot to us. Yep, we love those stars at codingblocks.net. And you can find show notes, examples, discussion more.
Starting point is 00:00:30 And you can send your feedback, questions, and rants to comments at codingblocks.net. Yep, be sure to follow us on Twitter at codingblocks or head to www.codingblocks.net and find all of our social links there at the top of the page. With that, I'm Alan Underwood. I'm Joe Zach. And I'm Michael Outlaw. This episode is sponsored by Datadog, the cloud-scale monitoring and analytics platform
Starting point is 00:00:52 for end-to-end visibility into modern applications. And Clubhouse, because you shouldn't have to project manage your project management. And I am looking at gator concerns are those were those all gators in that photograph yeah dude this lake is famous for sorry listeners we uh i sent a picture of where i'm going mountain biking uh this weekend uh which is uh a lake notorious for having a ton of alligators. Please just wear a GoPro because I want to see the footage when you come back as you're running away from them.
Starting point is 00:01:35 Honest to God, this looks like, do you remember Frogger? It looks like Frogger. Yeah. It looks like a scene out of real life Frogger. Oh, and Zero Mountains. It's really like a sand. It's like sea level sand. If it rains, it's really like a sand it's like sea level sand if it rains it's gonna flood and we're all just gonna get eaten and the title of this of this news clip is gator concerns at lake oh let me say it no i'm just kidding is it a weird word
Starting point is 00:02:01 i guess you could call this that's a weird word like's a weird word? Like a pupka? A pupka. And the people from a pupka, they're a little strange. Strange words. They know that. I mean, that's not like an everyday English word. So I classify it as odd. It's like certain places have different words like peach tree and Roswell in Georgia. Like how many Roswells are there in Georgia?
Starting point is 00:02:24 If you count the streets and the, you know, whatever's a million. Yeah. Same. I'm here. There's a pup. Cause really that's your peach tree.
Starting point is 00:02:33 We do have a lot of oranges down here though. Well, yeah. Orange state, right? I guess I haven't seen orange tree in years. Hmm. I thought that meant the people.
Starting point is 00:02:44 Oh, well, yeah. I am a little orange right now. All right. Well, as we like to do, we like to say thanks to those who left us a review. And we had some new ones. So I guess my threat from last time paid off because we got some really good ones here. So I want to say thank you to all this.
Starting point is 00:03:07 That's not to say I won't also threaten again. But I do appreciate these. So let's give these a try. So Arcady Gamey McFilly C Steak. I'm not sure if this was supposed to be Joby H or Joby H. Um, but maybe between those two, I got it either way.
Starting point is 00:03:31 Hey, and I have to call out on this one. Like Joby, it was how I would have said it. Oh, apparently his wife is tired of hearing our voices. So mine too. Yeah.
Starting point is 00:03:42 So I apologize, you know, sorry, J know, sorry, Joby, maybe don't torture her with this. I don't know, but we appreciate it. My wife feels your pain. All right. And then from audible, we have Jake Tucker. Hey, and Jake, thanks for writing in. It was amazing. You had to do it.
Starting point is 00:04:09 See, that's why. No, see, I feel like that's not fair, Alan, because the whole thing was I was threatening them with that voice if they didn't leave a review. And here, Jake, he takes time out of his day to leave us a review. And then what do you do to reward him? You punish him. Wait, wait. Did you read his review, though? He's like, and I love the late night voices.
Starting point is 00:04:32 Yeah. Well, yeah, the best part, however, the late night DJ voices. Yeah. But I didn't take that as serious, though. I just thought that was like sarcasm. No, it's here to stay, guys. Oh, man. All right. Well, moving's here to stay, guys. Oh, man. All right. Well, moving right along.
Starting point is 00:04:48 That's right. So for the next request coming from. Okay. I'm going to cut that review out then so that we don't ever talk about this again. Thanks, Jake. Yeah, that was amazing. All right. Well, okay. So this episode, you know, we were, we, we enjoyed so much with our,
Starting point is 00:05:07 our microservices discussion last time that we were like, you know what, let's continue that discussion. But you know what? It turns out implementing microservices is hard and we are worn out. So, so our brain cells were like absent and we decided let's, let's take a moment back and let's just gather around the water cooler for a moment. And, uh, uh, you know,
Starting point is 00:05:29 cause there's some topics that need to be aired. We have some grievances. The Festivus poll is going to be coming out in a few months. We're not that far away from it. So it's not too, uh, too soon to start airing our, our grievances.
Starting point is 00:05:41 Yeah. Yeah. And totally. And, uh, uh, I mean, Yeah, totally. I mean, yeah. Sorry, you guys are thinking about microservices again.
Starting point is 00:05:49 The thing is, we're done. It's just not working. We can't trace anything. We can't deploy anything. I haven't checked in code in four weeks, so I guess I'm doing right. Does YAML count as code? No. I got an ooh out of both of
Starting point is 00:06:08 you it'll cause you as much time debugging as real like i want to meet somebody who's a kubernetes developer and be like are you are you dude they might actually throw down oh i'll get slapped i'm not saying saying they won't. And deservedly so. Deservedly so. But, you know, do you remember that? You know, like the Willy Wonka meme, you know, where he's like, yeah, tell me about all the code you write. Yammer.
Starting point is 00:06:35 Yeah. Oh, man. Hey, so we do have, you know, we've mentioned this before. Atlanta Code Camp's coming up October 9th. So we've signed up for a few. Did yours get approved, Jay-Z? Oh, I didn't check my email. You should check.
Starting point is 00:06:55 One of mine did. The other one's still evaluating. So I guess by October 1st, I'll know if the other one's approved. But, you know, for anybody who's listening that's actually on that board please don't don't hate me for that it's a little bit funny so and if you're still looking for sponsors for atlanta code camp and you're wondering like why haven't those guys done it like also blame alan yeah also blame me really we don't know what's going on with all the lockdowns and stuff so it's like i don't know or should we yeah i don't know jay-z you like how i just like immediately
Starting point is 00:07:24 threw him under the bus right there publicly like on the spot like yeah that's pretty awesome of me right it was good best friend of the year award right here this guy i'll take the bus hey i'm a pretty big dude i can handle the bus tires a few times so yeah all right so i guess uh jay-z you want to lead us off with the first water cooler topics here yeah and so uh so, uh, I was just kind of interested in, uh, in changing my life. I'm so tired of the animal. I'm so tired.
Starting point is 00:07:52 Even a Jason. I'm sick of Jason. I'm sick of the internet and the web, all of it. Can we talk about how you even caught it? Jason and said like, shouldn't it be just Jason? I say Jason too.
Starting point is 00:08:04 Like every time you say Jason, I'm like, yeah, you're going to confuse somebody. I think you're thinking of like, every time you say it, I'm thinking like Friday the 13th when you say it. Jason's right behind you. I wouldn't like him either. Jason. No, we're not talking like that here. Come on.
Starting point is 00:08:21 This is South. We got to like enunciate Jason. We got some different vowels down here all right well uh in a direct response to uh all that uh stuff we just talked about i have been watching videos on competitive programming again uh and if you're unfamiliar with competitive programming it's basically just solving computer programs really uh really quickly and there's a bunch of kind of really quickly and there's a bunch of kind of common techniques and there's a bunch of websites
Starting point is 00:08:48 for problems and there's a bunch of competitions I cannot believe how many competitions are running all the time and also contests difference being contests have money or prizes or other stuff and so I just thought it'd be kind of fun to talk about
Starting point is 00:09:03 so the first question I had is basically like or other stuff. And so I just thought it'd be kind of fun to talk about. So, first question I had is basically like, why on earth would you do this to yourself? And. I mean, yeah, why would you?
Starting point is 00:09:15 I've got my answer. Well, why would y'all? So I've actually done it. Yeah. So if you are in college, then there's a good chance that your computer science program there at your college or university competes in the ACM programming competitions. to be on the teams or, you know, to put together a team or teams that they can then send down and they'll cover the cost of, you know, wherever, um, uh, you know, the, the competition is. And, uh, so yeah, so, so I did it, uh, two years while I was in school and it was, you know,
Starting point is 00:10:00 I thought it was a lot of fun, you know, um, it is, it was super, uh, like you, you have to think on your feet, you know, like you have to be prepared. You can't like, okay, you know, here's the encyclopedia on, you know, whatever your favorite language of choice is. And, you know, I'm going to look up something when I'm there, like, you know, you, you do have to be pretty spot on. But it was a lot of fun and a lot of challenge. And the problems that they would give you, at least back then, at the time, they didn't seem like they were terribly fascinating problems. But yet, it was still fun. It was a challenge. So that's why.
Starting point is 00:10:42 Especially in college, it gives you something to do, man. You get out for one weekend. the college pays to send you somewhere and in my case like one of the places we went was uh like miami oh that's awesome uh yeah so i did uh i did the acm challenge once uh on medical school um and it wasn't like a big company like we just had a class that like gave us extra credit or something to do it. And so I did it once. And tell me if this is how you did it. They gave us all, it was basically like a sheet of paper or something with like five problems. And you would solve the first problem.
Starting point is 00:11:15 And then you would, I forget how you got the code to them. But somehow you would get the code over to them and they would run it. And then come back and say pass or fail. And then it didn't really tell you what you pass or failed on so you had to kind of reread those instructions and figure out you know what kind of quarter case you missed and so all the times it would be like maybe they passed no input or something and you know you returned you should return to zero instead of a null or something like that it could be really silly but it was could be really tough you get stuck for a
Starting point is 00:11:43 long time on those and so i remember being frustrated with that aspect of it yeah yeah they they wouldn't tell you what specifically failed about it just that you failed and move on about your day yeah and i heard a podcast recently uh an interview with somebody that was co-recursive co-recursive show recently we're talking about it and they described it as the exact same format as it was like 10 years or 20 years ago whatever i did it well there's also such a explosion of languages out there today and and libraries and whatnot like i can't imagine you know what the advantage that uh or you know either the advantage that people would have today trying to solve the problems
Starting point is 00:12:24 that we were tasked with back then or like how much more complicated the problems would have to be today, uh, in order for it to be fair. Cause like, um, like I, that's one of the things that I remember it as being like, um, kind of a, a, an advantage or disadvantage was like what your language was that you were going to use. And there were like some limitations as like what, which ones you could use. But it was like the Java teams always seemed,
Starting point is 00:12:53 I was, I was on the C team and the Java teams always seemed to like get their stuff done faster. You know, like ironically, the language is easier to work in right that's really yeah and it was like and it was like in in a friend of mine um that i worked with later like he was on i remember you know uh he and i competed against each other we were at different schools and we competed
Starting point is 00:13:17 against each other and his his team won one of the regionals that he and i were at um and you know he he was on the you know they used java for theirs and you know we used uh c for ours and i remember talking with him about like you know how they solved some of the problems and he's like oh well some of those things that we were doing like like you know i don't remember the exact examples off the top of my head but it's like oh they were like a string manipulation things and it's like oh that was just built right into the language you know for example you know we we didn't have to do any custom coding for that kind of thing or whatever it is like that might not be the greatest example you know but i don't remember exactly what it was but you get the point well like there were things that you know uh you know that was just baked into
Starting point is 00:13:59 the language and and now i mean imagine if you had to do like any kind of stream manipulation for example um with like you know the regex libraries that are mean, imagine if you had to do like any kind of string manipulation, for example, with like, you know, the regex libraries that are available. You know, if you were to do something in a Python or, you know, Go and Rust are really popular, like whatever the language is. Like imagine if you had those kind of capabilities of whatever, of some of the other languages. Like it seems like it'd be, um, you know, more easier, but they might still have the same kind of language restrictions that you're referring to Jay-Z. Well, you know, I looked to see, um, you know, if I could figure out anything and I actually felt what, from what I found, uh, the conditions, at least the ones I was looking at to not limit you based on language. And so I actually found people doing some pretty cool stuff, like using a list bike languages or APL even, like old languages,
Starting point is 00:14:47 because they just had, you know, they were good at having math functions and were really fast and were really terse. APL apparently has a lot of like symbols and stuff. Like you actually need a special keyboard for it. I don't know if you've ever seen it, but it's a real kind of like mathy kind of science focused language. And so people will use that in
Starting point is 00:15:05 competitions today you know the year 2021 which is crazy to me now i did look up the most popular languages go ahead well i was just gonna say that because the one one key thing that i remember about it though is that like you weren't graded on like if like if if you and I both submitted a program to solve the problem and mine ran slower than yours, that didn't matter. If I submitted mine first, that's all that mattered. Your code could be far more elegant. It could perform faster. But if I submitted mine first, that was literally all that mattered to win the competition from what I recall. Yeah, same for me and um and uh there were
Starting point is 00:15:47 timeouts so it would have to solve the problem in less than yeah yeah that's true two minutes or something um then just made you sure you had a decent algorithm then you weren't just like totally brute force again but if you ever watch on youtube competitive programming you will not believe how fast the speed at which people type. And so the problem will start up and almost like they'll start typing. Like, well, I know this is like a graph problem. So I'm just going to start typing while I'm thinking about the problem.
Starting point is 00:16:12 So it's almost like they're typing, you know, a BFS, you know, whatever search while they're reading the problem. It's the craziest thing. And the fingers just fly. Talk to me about this typing thing.
Starting point is 00:16:22 Like you got a special keyboard for that or something for apl you do uh it's got some special characters but no they're just super fast typing and while talking and just hearing that while they narrate it uh like okay well this is going to be some sort of derivative of and you hear the tapping it's like while they're talking they're just like typing out for loops you know and's one thing, too, you'll notice when you see people typing and doing competitive programming, you're not seeing a lot of advanced functions. You're seeing a lot of basic coding constructs. You're obviously not seeing a lot of classes and inheritance and stuff like that.
Starting point is 00:16:58 You're seeing a lot of for loops and kind of if statements and that sort of thing, because a lot of times that's what you need. Yeah, but you're just trying to make stuff work, right? It's like Outlaw said, it's got nothing to do with elegance. It has everything to do with getting the output that you want. I mean, half the time is spent on getting the spring configuration right.
Starting point is 00:17:15 Getting the Maven build set up. Right? Am I wrong? Well, that's why you lose because while you're setting all that up, somebody else has already submitted their 50 line program of four loops and ifs. Yeah. Oh,
Starting point is 00:17:28 I did want to mention too, before I get on the next part is that, um, so, uh, job opportunities and actually just making money to, uh, all the sites that we've got,
Starting point is 00:17:36 we'll have a big list. I'm not gonna read them all. Uh, there's tons of resources here. Like in the show notes, we were going to have like 10,000 problems programming. Well, which will probably average, you know, taking you like 30 minutes a piece to solve.
Starting point is 00:17:48 So you spend the rest of your life doing this. A lot of the websites and competitions are actually tied to virtual career fairs or will let you submit. If you do well enough in the competition, you can automatically kind of apply or send your information to companies. Pretty much all of them have some sort of career angle which i thought was interesting so if you know if you're looking for a job it's not a bad way of kind of like spending your time you know but like if you're looking for a hobby competitive programming is one that could get you some money you can win some contests and stuff which you know admittedly is probably going to be a very small top percent there so that could be really difficult but it might be a good way to kind of get an interview
Starting point is 00:18:25 with one of these great companies. And if you're going to go interview one of the famed companies, Facebook, Netflix, Apple, whatever, a lot of them rely on questions like this in an interview, which you're going to be ridiculously fast at if you develop this skill, which is nice. If you're looking for a developer who can write unmaintainable code really, really fast.
Starting point is 00:18:46 Exactly. This is where you go. And they are. You know what this reminds me of though? So Outlaw had shared this tip a long time ago. It was, oh man, Darknet Diaries, that podcast. There was an episode dedicated, and I can't remember what it was.
Starting point is 00:19:04 Maybe we'll look it up and put it in show notes. But there was a particular episode dedicated to Black Hat and how there are teams that go to Black Hat. And it's not code competitions like this, but it's hack competitions where you're trying to hack in and figure out puzzles and stuff.
Starting point is 00:19:23 You're thinking of Pwn2Own. Is that the one you're thinking of? thinking of Pwn2Own. Is that the one you're thinking of? Yeah, Pwn2Own. Yeah. And so that's what this reminds me of, right? Like it's not about writing the most maintainable code in the world. It is about getting the result that you want and moving past the problem, right? And honestly, I think this does tie into real developer life.
Starting point is 00:19:46 And this is just sort of a side tangent. You should always get your code working first. In my opinion, get your code working and then refactor it into a better form afterwards, because I don't know about you guys, but anytime that I've ever tried to write like an OO thing and start with the most elegant layout at the beginning, I always knock it over at some point. Cause I'm like, Oh, that was a terrible thought.
Starting point is 00:20:09 That was a bad design that, that didn't make sense. And it didn't really appear to me until I got into the problem and was able to figure out where the thing, where the divides were, you know, I've totally done that. Like you're basically like pre-optimizing for something that you don't know that you need yet. And then you, you like code your way into a corner and you're like, man, only because I made this stupid decision before I realized what I needed. Right. And you know, yeah. Yeah. So make it work and then make it pretty. Yep. That's what I'm saying. Every one of my PRS from now on, make it at work,
Starting point is 00:20:45 make it work, make it right, make it fast. Something like that. There you go. Yeah. You get to fast. Yeah,
Starting point is 00:20:52 exactly. There's no make it pretty. That one's always technical debt. Never get back to. Yeah. Uh, so, um,
Starting point is 00:21:02 I found an article, which I'll have a link for. And, they had five steps for getting started with competitive programming I thought it would be interesting to go through and the first one was obviously choose a programming choose a programming language and the ones they listed
Starting point is 00:21:17 are consistent with every single other article I saw and the choices that they say they recommend in this order every article I saw. And the choices that they say they recommend in this order every article I found C, C++ Java
Starting point is 00:21:32 and maybe Python. Maybe. I would have totally reversed that. I'm surprised that C was first. Yeah, that's what I'm saying. Now to be fair with C and C++ it was almost always C slash C++. So, you know, maybe they're, you know, I don't know how they're, if they're necessarily ranking that one first.
Starting point is 00:21:54 But yeah, to me, it's crazy. And I tried to figure out like exactly why they've recommended those low-level languages because I typically think of them as being more difficult for the programmer because of managed memory or, you know, and we said the performance that we've seen of the algorithms doesn't seem to matter as much as your ability to get it out there. But time and time again, every article C++ at the top.
Starting point is 00:22:18 Not Go, not Rust, C and C++. Yeah, I mean, I would have even probably thought that JavaScript would have been on that list with node and all those things being as prevalent as they are like like it's easy to get to something working really fast with python javascript those things even faster than java right like i don't know that's why i would have thought that those would have been like much higher on the list i mean can you imagine doing a programming language uh programming competition and if pearl was one of the uses i mean pearl can be so uh what would
Starting point is 00:22:52 be the word terse yeah you know because of all the like hidden variables that if you know pearl you're doing you can like write three lines and like, where did this magic variable come from? Don't worry about it. I've heard for fun. I just, I Googled most popular for competitive programming and say C plus plus because it's faster and it's a curse. So the amount of typing you have to do compared to supposed to like something like Java.
Starting point is 00:23:20 Yeah. Java will give you carpal tunnel, even just a short competition. So why not Python? Like the Python, there's so much stuff in the standard lib that it seems like I like when I It's much lower. Yeah, Java will give you Carpal Tunnel even just for a short competition. Why not Python? Like, Python, there's so much stuff in the standard lib that it seems like, like, when I was learning Python earlier this year, like, one of my big reasons was I was interested in competitive programming and it seemed like that was the best choice to me.
Starting point is 00:23:36 Yeah, I would agree. It seems like a good fit for it. Yeah. It's the exact opposite of my experience. Yeah, I don't know. So let us know in the comments if you can think why C or C++ it's the exact opposite of my experience yeah so let us know in the comments if you can think why C or C++ would be a better choice I mean
Starting point is 00:23:50 it's got to just be performance right I can't imagine anything else yeah so yeah I mean like I don't remember maybe I just don't remember the problems being to the point where it was like,
Starting point is 00:24:06 you know, you weren't, it wasn't like fastest ways to search a tree or, you know, whatever. Like, you know, that's not the way,
Starting point is 00:24:15 that's not the types of problems that I remember, but I don't remember exactly what the problems were either. So maybe that's working against me. Yeah. The ones I had, like they weren't really i imagine as you went on further on the piece of paper it got harder and harder i never made it that far but um yeah maybe that's the problem i don't know oh uh number two speaking
Starting point is 00:24:36 of that problem is understanding uh concepts of time and space complexity uh so we we've talked about those uh it's been a while since we've talked about them, but we've done it earlier on in the show, talking about Big O and stuff like that and Space Complexity. And that just helps you make sure you can finish. I've watched all of the Big Bang Theory, so I feel like I'm pretty good on that one. That's definitely where you learn about this. I think so.
Starting point is 00:25:02 From what we just mentioned, it's just really important that you are able to finish the problem at a given amount of time. What I mean there is some sort of timeout. So they'll give you maybe two minutes or something to solve a problem. You'll see this a lot with Advent of Code, too. Sorry, not Advent of Code. I don't know what I'm thinking. Other things like LeetCode or CodeWar, stuff like that, where they actually run the code for you. The runtime is important. So even much more important than the choice of language is the algorithm. That's going to be way faster than whatever language you're using, which is why, again, I'm surprised to see C and C++
Starting point is 00:25:36 being recommended so heavily. Learning the fundamentals of data structures and algorithms kind of a given too to but i've heard of people being able to bring in like cheat sheets or like basically text files of common algorithms to be able to like drop in certain competitions stuff like that just having things that at the ready so if you've got a something that takes five lines to type you can just kind of paste it out there and that's crazy to me to think that people get to that level where they're that fast they're
Starting point is 00:26:04 just like i need this and I'm going to modify it. Give me a, give me a, I don't know, Dijkstra algorithm and I'm going to change, swap these two lines or whatever. That's really, wow. I know. Could you imagine like being able to sling algorithms as quickly as you would like type a word? It's like, imagine like you were like stringing these things together. It was like, well, let me just take Dijkstra's and then we'll loop it through the traveling salesman, pull it through the knapsack, rot 13. And there's your answer.
Starting point is 00:26:32 I just programmed my gaming keyboard macros to do that. You know, one key Dijkstra. Boom. Done. Bellman Ford. Bottom left button. Yeah. So could you imagine somebody actually did that? bottom left button. Yep. So,
Starting point is 00:26:45 could you imagine if somebody actually did that? What if somebody's listening and they're like, that's actually a really good idea. Do it now.
Starting point is 00:26:53 Yeah, you have a bunch of shell scripts and you just kind of pipe this stuff together. And yeah, then do it for the
Starting point is 00:26:58 keyboard. Yeah, that'd be cool. So, the step four is just take the challenge and solve coding problems.
Starting point is 00:27:03 So, get out there and actually join those competitions. Do those problems on like leak code or code wars or any of those sites we'll have a bunch of lists we'll have a big list here and of course the last one is just practice so there's really no big secret there um you know the only thing that's really kind of a novel or maybe a little bit different is just the choice of languages so if this is something you're really thinking about getting into i would recommend you know reading those articles for yourself and like choosing a language that makes sense for you because i you know i assume they're
Starting point is 00:27:32 doing it for a reason i mean you kind of glossed over that last one though the practice and do it regularly but i mean you had a whole article on like sharpening the saw remember like you had a whole series of videos too i think on that right yep yep yeah i did a bunch of little projects i did a bunch of projects on i was like streaming leak code and stuff or i've just done experiments over time so i always like this sort of thing but i'm not nearly fast enough to be able to do i think i would have to kind of change how i would approach things like i think if you're trying to just get it better programming or a little programming language, it's good to just do a problem and just say you would solve it.
Starting point is 00:28:09 If you're trying to figure out how to solve those problems fast, then I think you would kind of almost want to know what the answer is and then figure out how to code it fast, rather than trying to figure out the algorithm on your own. And the idea, I think, is there to almost memorize or at least recognize the patterns with all these algorithms that already exist so you can just sling them out as you need them and be able to recognize you know when you need to make small tweaks to them yeah i would love to have that in my back pocket it's like
Starting point is 00:28:37 you imagine being in the job interview and like describing the problem to you and you're like i mean i was just thinking to myself like if i had to write a c program like it's been so long since i've written c and i was like okay wait a minute um yeah so i guess i could just do int main and then something what editor would you even use now that's what i was thinking i was like like, I don't know. Like, well, you know, like I'm so used to things like the scaffolding of that, like main method being done for you and, you know, any tool that I'm like,
Starting point is 00:29:13 if I had to write that from scratch and that was the thing too, that I remember was that like in, in the, when we did the ACM competitions is we were doing everything from scratch. Like that, you know, might've been what hurt us too, but scratch like that you know might have been what hurt us too but uh you know yeah hey so so back to your c c++ question the link that you have here next the guy actually says why he thinks that c++ is what you want and he basically talks
Starting point is 00:29:41 about the standard template template library in C plus plus. Yeah. It's don't buy it. Yeah. I mean, I too don't get it. And then, and then he went on to say that the,
Starting point is 00:29:51 the primary reason not, why, why does Siri ever do anything when I don't want her to do stuff and never do anything right when I do want her to do stuff. Sorry. Cause that's how good Siri is. It's ridiculous. Now mine's going to go. Oh wait, ridiculous now mine's gonna go oh wait no mine
Starting point is 00:30:06 won't yeah yeah because she's she's useless let's wait until i say serious and then right yeah oh then my phone will wake up but this guy also said don't use python ruby etc because they're slow and you don't have as much control over low-level things. But I wouldn't imagine in these competitions that Python's going to run so much slower than your C app, right? I don't know. Maybe it does. Someone does mention that you'll sometimes have side metrics on performance, like memory or processing, which that would definitely make me think, okay, like a C++ is a top contender. Go ahead. Go ahead. No, finish.
Starting point is 00:30:49 People also recommend not using Python because it has support for things that may not be good practice, like support for really large numbers when you should really be solving those problems in other ways. So you might be tempted to do things in ways that Python has accommodations for that are slow. It sounds like he's specifically calling out set map and vectors from the STL,
Starting point is 00:31:08 and that's his thing for it. But it also almost reads as if it's because the competitive programming that he's doing, it's not just a matter of who submitted first, but who was fastest might be part of like, you know, what matters. And like, I'm coming from the perspective of the ACM competitions in college. They didn't, you know,
Starting point is 00:31:32 as long as it executed within the given timeframe, it didn't matter like whose was fastest necessarily. So maybe that's why, like I have, you know, different opinion on that or, you know, from a,
Starting point is 00:31:44 cause it's coming from a different perspective. Yeah. So we've got a couple of sites here. I'll just blaze through real fast and then we'll move on. So I mentioned already, we'll have a bunch of links, but I just want to mention a couple of the main sites for getting started. HackerRank. What's special about HackerRank in this domain is they have really great
Starting point is 00:32:04 tutorials along with the problems. So not only will they have a set of problems, but they'll actually have the explanation around why these five problems are interesting. They're like, hey, let's read about binary search trees and here's 10 problems to go along with it. So it's really nice for learning. They've got
Starting point is 00:32:19 the virtual career for everybody else. CodeChef has a bunch of practice problems but really their main thing is just competitions so that's a good way to win some prizes and actually get in there and kind of get an actual get some skin in the game uh that's the way to say it so you're actually competing which kind of teach you and really make you learn those ways of really taking things to the next level uh code forcece is another thing that the big emphasis on contests and competitions
Starting point is 00:32:46 there. TopCoder. Competitions and a lot of work opportunities. So sometimes an employer will sponsor competitions and hopes that you reach
Starting point is 00:32:56 out to them afterwards or basically use it for kind of recruitment, which is pretty cool. And yeah, pretty much all of them had some sort of career tie-in, which tells me companies
Starting point is 00:33:05 are looking for people who can do this stuff so it's interesting yeah i mean if you because then these people know the data structures and algorithms off the top of their head so that's what they're they're valuing yeah yeah this episode is sponsored by Datadog, a software-as-a-service-based monitoring and analytics platform for cloud-scale infrastructure, applications, logs, and more. Datadog uses machine learning-based algorithms to detect errors and anomalies across your entire stack, which reduces the time it takes to detect and address outages and helps promote collaboration between data engineering, operations, and the rest of the company. I usually like to talk about all the different things you can do with Datadog and how awesome it is. But with the free trial, you can actually try this out and see exactly how it works for your stuff. So there's a ton of great integrations built in Turnkey.
Starting point is 00:34:03 So you can go find a few things that look good and look interesting, like they might work with your stack and. And with their amazing blog, you can find probably a dozen articles on any given technology that you're already using today of how Datadog can help you monitor that particular technology. Cool. So go to datadoghq.com slash coding blocks today to start your free 14 day trial. If you start a trial and install data dogs agent, data dog will send you a free t-shirt again. That's datadoghq.com slash coding blocks. Okay.
Starting point is 00:34:57 So, um, I mean, I did, I did get some great reviews this time, so I feel like it would be rude of me to threaten again. So I won't, even though I feel like Alan didn't reward you for your reviews or Joe, you know, based on the way they did. So I'm not going to do it.
Starting point is 00:35:20 I'm not going to threaten you. But if you would leave a review, we would greatly appreciate it. You can find some helpful links at www.codingblocks.net slash review. And with that, we head into my favorite portion of the show. Survey says. All right. So a few episodes back, we asked, do you have TikTok installed? And your choices were, heck yeah, I love those videos. Or nope, no way, never. All right, this is 166. So according to Tetco's trademarked pattern here, Jay-Z, you are up first uh i'm gonna go with uh heck yeah i love those little videos and the percentage uh i mean it's got to be 87 okay 87 or higher
Starting point is 00:36:18 man i think that jay-Z may not be wrong here. Okay. But I'm going to try and have some faith in humanity here and say, nope, no way, never, and go with 51% for the win. Okay. But I have no confidence in this one. Okay. So Joe, super confident, says, heck yeah, 87%. And Alan, no confidence, says, nope, with 51%. I kind of picture like an Eeyore. Nope.
Starting point is 00:36:59 But it's probably not going to be the right one. I probably lost. Okay. So, well, let's see who the winner is. Let me go look at the things and, you know, drumroll please, and I will
Starting point is 00:37:21 unmask some stuff, and the winner is... Nobody. No no we have a definite winner by a lot god's island really yeah i i was so surprised that you were like so uh down about it like why i don't i didn't get it it's so unlike you it. Like why? I didn't get it. It's so unlike you. It's so uncharacteristic. Look, here's the reality. Like I had TikTok for a minute and it is highly addictive, right?
Starting point is 00:37:57 Like these little 15, 20 second clips. Like you could watch those things all day. But when you found out how they were tracking and tracing and like all that, like it just, I was like, no, that's gone. Right. Like that, that will never see any device of mine again. So I just, I don't know. I was, I would just assume that most people either didn't know about it or didn't care because I needed those little crack videos. Right. Yeah.
Starting point is 00:38:20 I only want Google, Microsoft, Apple, Facebook, Amazon. They're the only ones that get to track me. Right, exactly. Yeah, you want to be selective about who knows where you are every second of the day. There's like a certain market capitalization that the companies have to reach in order for you to feel comfortable tracking is what I'm gathering. Yeah. No, I mean, honestly, we've talked about this. This is why I have an iPhone, right? Like out of all of them, I feel like,
Starting point is 00:38:50 yeah, I did mess your joke up, but yeah, man, I just, yeah, I don't know. So what was the percentage? I am actually stunned that, that I won. Well, yeah, this, okay. So this is why it was such a big win because Joe severely overshot his part. It was all missing out. 92%. Whoa. No way. My people. Yes.
Starting point is 00:39:16 So, you know, if you guys seen on the YouTube video, another company that tracks you, obviously, but have you seen on the YouTube app on your phone that they now have shorts that are almost identical? They totally ripped it off TikTok.
Starting point is 00:39:30 Sounds good, though. Does it not? Yeah, it sounds funny. You just keep swiping up. Whenever you see the good stuff posted on Reddit or Twitter, it's always TikTok. Okay, fair enough. Maybe it originates there. I wouldn't be surprised if YouTube isn't scraping TikTok to get that stuff.
Starting point is 00:39:45 Yeah. Yeah. I mean, you know, when it comes to that kind of stuff, sometimes you got to live on the edge, right? I mean, I threw a yield sign into a tornado. I just threw caution right into the wind. I knew it was coming, but I didn't know how good it was going to be. That one you could think a super good day for. That is a fantastic dad joke right there.
Starting point is 00:40:14 That's awesome. All right. So for this episode, we ask, do you find that you're more productive dot, dot, dot at home? Less commute time, more code time or at an office. Too many distractions at home or at the local coffee shop. So good. Or it doesn't matter where i am if you're going to keep inviting me to all these meetings true true yeah so you know i like those have you ever really been happy with your project management tool most are either too simple for a growing engineering team to manage
Starting point is 00:41:05 everything or too complex for anyone who wants to use them without constant prodding clubhouse.io which will soon be changing the name to shortcut is different though because it's worse wait wait no no we mean it's better clubhouse is project management built specifically for software teams and their fast, intuitive, flexible, powerful, and many other nice positive adjectives. Let's look at some of their highlights. Team-based workflows. Individual teams can use Clubhouse's default workflows or customize them to match the way that they work. Organization-wide goals and roadmaps. The work in these workflows is automatically tied to larger company goals. It takes one click to move from a roadmap to a team's work to individual updates
Starting point is 00:41:58 and vice versa. Tight version control system integrations. Whether you use GitHub, GitLab, Bitbucketet clubhouse ties directly to them so you can update progress from the command line keyboard friendly interface by the way this might be my favorite part the rest of clubhouse is just as keyboard friendly with their power bar allowing you to do virtually anything without touching your mouse throw that thing in the trash iterations planning setations planning. Set weekly priorities and then let Clubhouse run the schedule for you with accompanying burn down charts and other reporting. Give it a try at clubhouse.io slash coding box. Again, that's clubhouse.io slash
Starting point is 00:42:40 coding box. Clubhouse, again, soon to be known as shortcut because you shouldn't have to project manage your project management okay so um yeah all right so so the topic that i want to bring well first of all you know do you guys take like a lot of do you take like vitamin supplements or anything like that like you know to like deal with injuries or to make sure to try to stay healthy and whatnot. Try not to. Yeah, I went to the store. Someone threw a bottle of Omega-3 supplement pills at me in the drugstore, but luckily my injuries were only super fish oil. Oh my gosh. That was not as good as the third one. Oh, come on. Don't take that one
Starting point is 00:43:24 away from Darren. That was good, Darren. Don't listen to him. All right. So, wow. Tough crowd. I mean, it was okay. It was okay. Okay.
Starting point is 00:43:36 At any rate, what I wanted to talk about was, I mean, because, Jay-Z, I feel like you were triggering me on purpose. You were talking about, like, typing so fast. Like, come on. Come on I feel like you were triggering me on purpose. You were talking about typing so fast. Like, come on. Come on. What are you doing to me here? So Alan finished the Moonlander review. So I finally got this thing after I think the warranty has expired by the time I finally got it after I ordered it new for us to review and everything.
Starting point is 00:44:02 And he gave it to me, and all of the plastic bits have been rubbed shiny, you know, like you ever seen your keyboard slitter, like get like that. Like, you know, that's how much he'd used it.
Starting point is 00:44:11 So his review, like he legitimately did use it a lot. It was a longterm review. I said, so yeah, yeah. Well, this is a short term review.
Starting point is 00:44:20 So get ready. Hey, wait, wait, but you haven't told them which keyboard this is yet the moon lander yeah we said i said that you had the you had you had finished the review of the moon lander and i finally got it right i missed that part i don't think you said moon lander all right so we're here that we've arrived now well It's a Moonlander. Well, I don't know. Maybe we didn't arrive. That's kind of a conspiracy. But thank you. I'll be here all the week. So at any rate, there's the Moonlander, the ZSA Moonlander keyboard, which is an ergonomic keyboard where the keyboard is split in half.
Starting point is 00:45:02 And it's one of these kind of ergo layouts where the thumb gets a lot more buttons than you get on your traditional keyboard. Now, so. How long have you been using it? I'm two weeks into this. Wait. Yeah? Two weeks. Right?
Starting point is 00:45:26 I think this is the end of your second, right? Yeah. Is it the end of my second? I might. Actually, I think I'm like two and a half. I think it's more like two and a few days. But it's rough, man. Like, oh my God.
Starting point is 00:45:40 Oh. The buttons. I want to type something just normal words and i can't so when when i first got this thing like i didn't think to do like a typing uh thing with my old keyboard because my my my go-to before this was the DOS keyboard. And I, hands down, that keyboard is awesome. I still love it. It was a great keyboard. I only got rid of it because I wanted to try something different because originally I wanted the split halves
Starting point is 00:46:14 because I wanted to put my microphone in between them. And then now I don't even do that. So now I kind of like defeated the purpose of why I wanted it in the first place. But it's, okay, so here's the things that I I wanted it in the first place, but, um, it's, uh, okay. So here's the things that I love about it. Number one, I love that the cables, for example, are user replaceable. You, you, cause you want a six inch T R R S, you know, it's a four pole, uh, you know, audio cable to connect to the two halves together. Fine. You can go out and buy one. So that like it uses a USB-C connection. The USB-C cable is also, you know, user replaceable. Okay. So now we've gotten what I love about the keyboard so the the three dollar parts that come with it got it got it oh no i i upgraded those to be like
Starting point is 00:47:11 you know the specific links because i didn't want like a whole bunch of extra cable laying around on my desk right right but so we have a 360 keyboard and your favorite parts of it are the three dollar usb cable and the three dollar trrs also like the box that it came in all right so six dollars maybe eight dollars we're into eight dollars of loving the thing now all right so so i didn't think to do a typing challenge with the with the dos though beforehand just to like kind of see where i am speed wise right but i mean i was up there like you know i don't i don't remember what it was but i was i was i was pretty up there but i got this oh i was in like the low teens
Starting point is 00:47:53 when i first started with this this keyboard this keyboard takes some effort and i mean like every day since i started using this thing, I spend time like they mentioned in their shirts, like, Oh, 10 minutes a day, 10 minutes. Come on.
Starting point is 00:48:12 You need a lot more than 10 minutes. I, I've spent like in the evenings, I'll, I'll just sit there. Like this has become my new favorite games have been all the typing challenges. Like I'm just trying to get
Starting point is 00:48:26 my speeds up and after, and I'm not kidding, man, like, you know, the time I'm talking about spending in the evening or even before I start my work day, or if I'm like in a meeting and I'm able to like put it on, uh, you know, just listen in on the meeting. Um, you know, I bet it's probably an hour a day that I spend on it. I'm only in the 50s or I have recently within the last couple of days broken into the low 60s words per minute typing. All right. So that all sounds great. But, you know, you're like, OK, well, you're making progress two and a half weeks. That's not that's not so bad. Here's the thing that I'm realizing though, that I,
Starting point is 00:49:08 that I completely took for granted. Like, why am I having so much trouble with typing on this keyboard? Well, for one, forget about all of the other non-letters. Let's only talk about the letter keys, right? Cause you're like, well, they can't mess that up, right? So this keyboard, one of its features, one of the things that they tout as like, you know, what's supposed to make it better and differentiate it from the rest is that unlike a traditional keyboard where the keys are kind of like staggered, you know, they kind of stare step one below the next. These are all in straight columns. Right. And they say that they're supposed to be a benefit to that.
Starting point is 00:49:55 Right. would typically on a regular keyboard, if let's say on your left hand, you use your F, you know, you would press the F with your pointer finger on this keyboard. I would, well, okay. You use the F your pointer finger. And then if you wanted to press the V, for example, you could just go down a little bit to your right, and there's the V on a traditional keyboard. Whereas on this one, if you did that, you're going to hit the letter B, as in boy, not V, as in Victor. So I end up, the bottom row of. Like I'm all over the map, man. Uh, I,
Starting point is 00:50:48 I'm all over the place because I'm like, for example, again, left hand. If you wanted to use a Z, if you want to type a Z traditionally on a regular keyboard, I would use my ring finger for that. Oh,
Starting point is 00:51:04 you're not supposed to do that. But on this keyboard on, on, yeah. Cause I would use the shift with my pinky. Right. But on this keyboard, you have to use your pinky.
Starting point is 00:51:16 Cause it's like directly below that a right. It's not, there is no, like you can't hit it with your your ring finger unless you're like totally distracting and i totally remembered too like i had a totally different survey for this episode so we're going to end up with two surveys so wait for it so so there's like all those little things that are messing me up. But then, like now combine all of the symbols, right? Like you want to hit a backspace.
Starting point is 00:51:50 You want to hit the escape key. You want a colon or a backslash or square brackets or, you know, whatever, question marks. Like there's a bunch of keys on the keyboard that are just dashes because they're user definable. You get to pick out whatever you want it to be. So there is, so you can't like hunt and peck. You can't look at it and be like, Oh yeah, the escape keys over here. Or, you know, this is the page up or here's the colon key or whatever. Um, well, colon might be a specific bad example. Cause I think that one is printed, but you get the idea, though. So there's keys that you might use that aren't printed.
Starting point is 00:52:32 And then, like, all of the number keys don't have their extra symbols printed. So, like, you're like, okay, dollar sign, just got to remember it, right? Which, fortunately, that one hasn't been, you know, remembering the numbers sign alternates hasn't been a problem but like remembering where all those other buttons that aren't labeled you know that has been a thing and and i bring that up because like the amount of like just awareness that you have to have as you're using this keyboard is high when you're learning it right it's eating up some of your cpu cycles in your brain it totally is because like you're learning it, right? It's eating up some of your CPU cycles in your brain. It totally is because like you're having to put a lot of thought to be like, okay, this is where I mapped that key as you're typing along.
Starting point is 00:53:14 Right. And you're like, Oh no, I hit the wrong one. Let me, you know, and, and you can't look down at it because, you know, because those keys are just a dash dash anyways. Yeah. at it because those keys are just dashed anyways. So it makes it complicated or I should say it makes it frustrating because of the amount of effort that you're not used to having to expel to type on this thing.
Starting point is 00:53:40 But then further, what I found is with my whopping 58 words per minute that I've gotten up to on this thing. Now I go on my laptop and try to type and I'm like, I'm like the monkey banging on the keyboard. I can't I can't type on it either. Now, like it's totally ruined me. Yeah. So so it's just that's that part's frustrating but like from the typing words part like i do feel the benefit like i'm getting there with it right it's frustrating it's totally
Starting point is 00:54:15 frustrating but i am getting there i am only like you know two weeks and some change into it right so so i still got a ways to go, uh, especially compared to, you know, Alan's review. But, um, what I haven't done in my exercises, like getting into all of the extra symbols as part of that typing, like occasionally, you know, dashes and colons and punctuation, you know, those will get in there. Um, you know, uh, single and double quotes, maybe the occasional number, but it hasn't gotten like too crazy. And like some of the, uh, programming thing, or, uh, uh, sorry, some of the typing things that I have found have been more specific to programming. And so specific to this keyboard, for example, they actually have
Starting point is 00:55:03 a training program that you can use and you can attach you can quote attach the keyboard to it where like it'll you put the keyboard into the training mode to work with the software and it'll know what your mapping is that you do your current layout and they do have programming specific ones and you can pick like what language did you want to do? Did you want to do like a Python versus a JavaScript versus I don't even remember what some of the other ones were like an HTML or, you know,
Starting point is 00:55:36 whatever. So you could get more into the different symbols that would be used in programming, right? Cause like writing code is going to be totally different than just, you know, writing Shakespeare, for programming, right? Because like writing code is going to be totally different than just, you know, writing Shakespeare, for example, right? You know, what's funny though, like when you describe this, like you're taking an hour in the mornings to do this and you'd spend time at night. Like, dude, that totally wasn't me. It was, okay, I'm going to sit down. I'm going to
Starting point is 00:56:02 be mad at this thing for the day. Then I'm walking away from it. I'm not going to look at it. I'm not going to think about it. And then tomorrow I'm going to get down. I'm going to be mad at this thing for the day. Then I'm walking away from it. I'm not going to look at it. I'm not going to think about it. And then tomorrow I'm going to get up and I'm going to do the same thing. I never once did a training thing. I never once. My whole thing when I pick up a keyboard is, this is a tool. If I can't use a tool, then there's a problem, right? Like I shouldn't have to go through a training exercise for something I've been doing for 20 years. And so I just struggled my way through it.
Starting point is 00:56:27 Kind of like you are, except I never did any of the training things. So, I mean, I'm trying, I want to minimize the, the, the,
Starting point is 00:56:36 the downtime, you know, the, the burden from it as much as possible. But what I also find too, is that like occasionally I'll be like, okay, you know, I'll have a layout and you know, as I'm going through the different exercises or whatever, and then, you know, a day or two goes by and I'm like, you know what, you just, this one particular
Starting point is 00:56:55 key just turned out to be problematic. I don't like it where it is. And then I'll go and redo the layout and make those little tweaks. But then there'll be like, you know, a couple of days where I'm like, Oh man, I forgot. I moved the page down key.
Starting point is 00:57:11 And now I keep like every time I'm going for the dash key, I'm hitting the page down here or something like that. You know what I mean? Um, so, so that, that adds to, that adds to the problem, in my opinion.
Starting point is 00:57:31 So short term, is it growing on you yet? So the one thing that I super love about this keyboard, aside from the cables, cables are awesome, that that I replaced that I got from Amazon. They're great. Is that I never realized just how much more comfortable it is to have the halves at like shoulder width. So the way I have the keyboard laid out, basically like in a traditional, like if I were to go on my laptop, right. And I, and I try to put my hands in there, like basically it's almost forming like an a right. You know, or I guess a V if you're looking at me, but you know what I'm saying?
Starting point is 00:58:13 Like, cause you have your arms angled to get in there, but because these are split when my arms are on the table, they're like, my arms are parallel to one another almost. And, and I find that to be like very relaxing to be able to type that way. So once I do get into the rhythm of it, then it's so awesome and comfortable and I, and I feel pretty good with it. And, but I find that like, as soon as I'm, as soon as I have to start thinking about where's that next key, that's when it throws me off and I start making mistakes. But if I can, if I can just like blast through it and, and not think about that, you know, then I start typing on it at a pretty decent rate, it feels like. So, so from that point, it does have, it is kind of comfortable in it. And I have this thing, I have this tinted at its maximum position. I actually was like,
Starting point is 00:59:10 God, I wish you could tint it just a little bit more. Right. Cause it almost feels like it might be a little bit better. Um, if you could, but, um, also I'm kind of like, I don't know, maybe that's part of my problem too, is that like that I need to untent the thumb cluster a little bit more so that I could have maybe easier access to that, because that bottom most button can be a bit of a reach. But one thing, and I'm curious to see what your thoughts were on this, Alan, because I do recall from your video, you were talking about the surface that you had yours on and the rubber nub that was on one of the tenting things and it's sliding and everything. Because I have mine on my infamous mouse mat that is the size of a table.
Starting point is 00:59:59 It's a small airstrip on an airport. Yeah, it's fantastic. You can park your car on it without getting any oil on your on your garage floor um and and so like it doesn't it might not slide around as much as yours did because you had yours on just like uh the you know straight up on the wood of the desk right the polyurethane desk. Yeah. So a smooth top. Okay. Show off. Uh, but,
Starting point is 01:00:25 you know, uh, super smooth. So, so the one thing though that I have found annoying though, is that like, because unlike a traditional keyboard, you would never think about this because it's connected.
Starting point is 01:00:40 It's one solid piece, but because these are, have, you know, separate individual pieces, I find myself constantly like, like I'll look down and be like, but because these are, have, you know, separate individual pieces, I find myself constantly like, like I'll look down and be like, kind of tweak them and make, get them into the right place and then type. And I've noticed that like, if one hand, if the, if the, if that half is just like maybe,
Starting point is 01:00:57 I don't know, five, 10 millimeters, uh, at a, at an angle that I don't expect it or don't like it, then that hand will just mess up like everything. You know what I'm saying? With that, it's more pronounced with that column or layout of the keys. I'd notice the same thing. Like if it twists a little bit on you, like it throws you off. And the thing is I got used to that. I got used to knowing when I felt like the, my hands weren't laying on it. Right. And it like, dude, it takes a long time to do it. I mean, it, it is a, um, what do they call it when something like is, is just frustrating, but it's like, you know, that there's going to be some pay dirt at the end of it. You just kind of have to plow through it. That keyboard is that.
Starting point is 01:01:48 Even after I was done with it, I did like it, but it's not my favorite I've ever typed on. What you said, the primary thing for me was the fact that it was always eating up some part of my brain to do it. Any other keyboard I plug up to, I'm going. I can brain to do it. And it was like, I've never, any other keyboard I plug up to, I'm just, I'm going right. Like I can just fly through it like this. I've got the Kinesis, um, gaming RGB edge thing right now. Yeah. The freestyle edge, the gaming freestyle edge. It's amazing. Like I haven't had to think about this. I put this thing on my desk and I was probably doing a hundred words a minute on the first time I touched it. Right.
Starting point is 01:02:28 And, and that's rewarding. So, you know, yeah, it's tough. The moon lander, I wanted to love it,
Starting point is 01:02:36 but I felt like it, you know, it is not going to be a keyboard for everybody, but for the people that do love it, they will love it until the end of time. Right. Like it's one of those things that's that unique. Yeah. It's a labor of love. The way I tried to explain this thing was if you grew up on a traditional keyboard and you know, you, you've used a traditional keyboard for years, then this thing's problematic. But if you were like a kid in high school and you grew up on this for years,
Starting point is 01:03:07 and then you tried to use a regular keyboard years later, you know, you, you would hate that. Right. And so it's kind of like, what, what,
Starting point is 01:03:18 what did you grow up with kind of thing? Cause you know, this one's definitely like a commitment. And one of the things that I found too, that is like, well, for those dash keys, um, I, I, I'm of the opinion that like, once I get the layout to where I want it, I have found a couple of different companies that make, um, that where you can get like custom printed keys, right. Specifically, like, you know, you can get the same kind of key that is on the moon,
Starting point is 01:03:52 the moon lander already a double shot. Uh, I think it's like PBT, um, plastic key. Like, you know, you could find that exact kind of key, but you can get what you want printed on it. And I thought about, I was like, okay, well I could get like, uh, you know, once I decide on like, you know, where I want certain things, you know, get a, uh, a home or a page up or a page down, you know, those kinds of buttons. Like I could get those, those kinds of key caps printed, but then I'm also like, Oh, this keyboard was also so expensive already. Do I really want to invest the money in now custom key caps for, you know, the 20 keys that are blank,
Starting point is 01:04:31 right. And including all the piano keys for the thumbs, right. It is. Yeah. That part. Say what? Pencil it in.
Starting point is 01:04:41 Yeah. Right. Draw it on there. I mean, I thought about, I've thought about like you know taking like a uh a label maker and you know labeling some of those you know so i mean you think you're joking but um you don't know me sir uh yeah i mean that it that's the thing. And the one thing I will say about this keyboard, though, is I absolutely hate it for gaming. I mean, hate it for gaming.
Starting point is 01:05:22 You're so excited for this keyboard. I know, man it I know man I'm so heartbroken when I say I hate it for gaming I don't mean like I kind of dislike it and so I think I even made a special gaming layer
Starting point is 01:05:39 for myself too so that I could hopefully improve on some of it but MadVikingGod from our Slack community myself too, like so that I could hopefully, uh, you know, improve on some of it. But, um, mad Viking God from our Slack community hit the nail on the head and I didn't even recognize why I hated the keyboard until he said it. And now that he has, I'm like, Oh geez, I can't unsee it now. I can't unsee the problem. So did you game on it at all when you had it on? I don't game on PCs.
Starting point is 01:06:07 I hate gaming on PCs. Oh, my God. I have a gaming PC, so I do VR. All your keyboard reviews are now trash. They're all trash. So if you've watched any of his keyboard reviews, just know they're all trash. That's right. But leave it a thumbs up anyways.
Starting point is 01:06:24 Because you hold down keys when you game. Is that the deal? Here's the reason why. Ignoring, ignore all of the thumb cluster buttons. Cause you have three piano keys on each thumb. And then this like weird, I don't know.
Starting point is 01:06:39 It looks like a little house key on top of those. Do you, does that key have a special name do you know what i'm talking about it's the red key yeah it's it's a weird key i i don't know what that one is but um ignore that key let's just talk about all the other keys that are on the keyboard right they are the same size and shape uh they're specifically like a row four key. If you were to like, look at a traditional keyboard, like on a, on a normal mechanical keyboard,
Starting point is 01:07:09 the each row of keys is a different shape than the row, but you know, in above it or below it because they kind of like stagger and kind of occur, you know, make this curvature up. Right. But these, these don't,
Starting point is 01:07:23 all of the, all of the keys are the same size and shape, same angle. Well, there's no angle, but they're, and technically they would be like a row four key, if I recall correctly, right? What that means is that if you have like, let's say your WASDE layout, right? And you would, you're used to that big shift key
Starting point is 01:07:48 right you don't have that you got this itty bitty little key to hit and i would hit the big key so so unless you were to like remap it to be like your thumb but like typically you'd want like your thumb is like the space for jumping right like or at least on your left because your right hand's on the on the mouse right so so yeah so that part is weird and now i'm like oh i get it like and now i'm like i totally it totally makes sense to me and here's the survey to go with this. And, and I don't know if we want to do a real survey or for you to just want to answer what you do. So you tell me,
Starting point is 01:08:32 but when you game, okay, Joe, we already know Alan's answer. I mean, sometimes game on it, but it's not super frequent. All right, Joe, I sometimes game on it, but it's not super frequent.
Starting point is 01:08:56 All right, Joe, when you game, do you, for the WASD keys, because the normal typing is your pointer finger would be on the F key, which would mean that for the WASD keys, you're using your middle ring and pinky finger for the WASD keys for the ASD, right? And the, and your ring finger for the W, right? Do you shift your hand left to put your pointer finger on the D right when you, when you game? Uh, yeah. So I don't use my pinkies when I type. Yeah, that's crazy talk well yeah but i'm always we're talking about gaming though we're not talking about yeah so in gaming i don't bring it in so i'm gaming i i don't even use it for a shift or anything well i don't know sometimes i think i stink it in there but yeah i i keep my my ring finger on the a all the time gaming or not. Okay. That's a great,
Starting point is 01:09:46 Oh wait, your ring. Oh, okay. Yeah. Ring figure. Yes. That's how I game also ring finger on the,
Starting point is 01:09:51 he said whether he's gaming or not. So even typing, and that's one of the bad typing habits that I recognized at the start of this that I was doing. And I forgot to call that out. So thank you Joe for reminding me is that my, because, because like I didn't realize like how uncomfortable it was to have my hands on those smaller keyboards that close together.
Starting point is 01:10:11 Like, I just kind of, like, traditionally put, like, each hand was one key over. And I've just gotten over. And I've gotten, I had gotten used to it over the years to have, like, you know, when I needed to like make my hand jump, you know, to get over to where it was, should have been in the first place to hit, you know, like an H or whatever, or a G or whatever, then, you know, I just got comfortable with that over the years. So my, my, you know, normal resting place on a traditional keyboard was on the pointer finger for the D for example. So when I do WASD for gaming, you know, it was, it was pointer finger on the D, but if I do that on this keyboard, that key where my, where my pinky would sit for the shift, my pinky isn't on a key at all.
Starting point is 01:11:01 It's on the frame of the keyboard because I've completely overshot it because that thing is such a small hit point. Oh, you're right. You're totally right. Yeah. My feet, my finger would go past it just looking on a regular keyboard.
Starting point is 01:11:13 Yeah. So like on a traditional keyboard, that shift key is a large piano key, right? And it, and it helps, right? Like you,
Starting point is 01:11:22 you have, I don't know what size that key, but like I'm looking at the Mac laptop right now. It's keyboard. I mean, that shift key is gigantic. You know, it spans like three keys. So for gaming purposes, I don't know, man. Like I'm still giving this keyboard.
Starting point is 01:11:40 I'm still trying to give, I'm trying. I'm trying to give this keyboard it's due i totally love the key switches that i picked out for this thing like oh my god it sounds beautiful to type on dude it is so it sounds like you're getting shot the entire time you're talking it was even loud for me no it can't get loud enough like if i could put this thing on an amplifier and like you know like while while other people are like you know playing a lot of bass in their car and everything as they drive through like i would i would be playing my keyboard you have the blues right yeah they're the mx cherry blues god they're so freaking loud
Starting point is 01:12:14 they're noxious but yeah so so that's the um that's the the short keyboard review awesome yeah so i'll tell you i I tried to learn Vim. I've played a lot of Vim Adventures. I've played several. I've played the first seven levels of Vim Adventures like 20 times. I just do it on the couch now. I can go through it pretty quick. But as part of that, I tried to do the HJKL navigation.
Starting point is 01:12:43 And because I don't use my pinky, and we talked about this a while ago, I recently discovered that I don't use my pinky. I didn talked about this a while ago. I recently discovered that I don't use my pinky. I didn't even know when I slipped into doing it. But apparently it's been a long time because I can't do it. I'm with you. I didn't know it was like that either. Yeah. But actually it messes me up pretty hard. I'll sleep like little tutorials where I'll be like, just do this.
Starting point is 01:12:58 It's easy to remember because you use this finger or that finger. I'm like, nope. That's the biggest thing is like i've forgotten is that um like i did find today for example i had to like uh shell into a server and do some stuff and i needed to get into vi and i'm like oh my gosh i can't like how do i save the file i can't find the stuff like i'm so used to going like top left of the keyboard for the escape key and then, you know, get into like the command mode. And I'm like, no, I moved the escape key. That's not it anymore.
Starting point is 01:13:31 Where's the escape key? And then and then like all of my shortcuts, like there was terminal where you could do like uh you know like skip words forwards and backwards uh you know across the the command line easily on this keyboard i don't remember where like the alt and the controls and the shifts are i'm constantly like where did i map that again and part of the problem too oh i forgot to mention this too for my short long review one of the big reasons why i was like really hopeful for like a keyboard where you had the control to remap it was that it's always bugged me for years going back and forth between windows and mac that mac uses one key for
Starting point is 01:14:20 the copy like for example like it uses the command key for control, like things in windows. Right. Right. And so I always wanted to like, but if you used a traditional keyboard for both, then like that windows key would be weird on Mac, you know, or, or, or the command key would be the windows key on, on windows. And I was like, you know, or, or, or the command key would be the windows key on, on windows. And I was like, you know, I always want to like, just remap it to where, you know, that control functionality is always where it needs to be. And I'm realizing that like, that just doesn't work, man. Like, no, you, cause you find yourself in situations to where like, no, no, no, you
Starting point is 01:15:03 seriously need a real control key in Mac, right? You know, you can't get funny with this. And then because like the Windows key floats around instead of, you know, it's no longer where the command key was. It's where it's somewhere else. Like when I go between operating systems, I'm like, oh, no, it's better to keep that command key the windows key if you're switching and just learn learn that when you're on windows you hit this button because of the very reason because it's inconsistent right command c is copy but if you need to do certain other things in mac you're using the control key and it doesn't map exactly
Starting point is 01:15:40 the way windows does things so it's hard it's hard to get used to that i did try uh you know i looked at your layout that you shared in your review and um it was crazy that was insane so i didn't use that um and but i did uh mad viking god and i we we compared um layouts that we were using and you know he like you what he, he just has the one layer for operating systems, regardless of whether or not it's Windows or Mac. And I might end up going back to that. That's the way to go, man. You need to give it a try. It will actually make you happier, I think, in the long run.
Starting point is 01:16:22 I'm still trying. So like, you know, maybe, maybe I'll like, uh, you know, give a brief update at some point in the future. Or if I never do talk about it ever again, then, um, I don't know.
Starting point is 01:16:34 It'll be too soon. Maybe, maybe I replace. Oh, awesome. All right. So I have one that I want to talk about because I know for years and years and years. Well, I mean, we've been doing this for years and years and years now.
Starting point is 01:16:49 We can actually say that we used to hate on Java. And that's not going to change. I'm still going to hate on Java. I do not like Java as a language, not because it doesn't do what you want it to do. I just hate how verbose that language is, right? And so we've talked about our love of Kotlin, and I will continue to talk about my love of Kotlin. But what I want to talk about more importantly right now is my growing love and appreciation of Spring in general.
Starting point is 01:17:23 I thought you were talking about the season. When you had it in this show notes, like let's talk about spring. I was like, Oh yeah. Right. I mean, you know,
Starting point is 01:17:30 we're heading into fall, but yeah, sure. We could, we could talk about it. So, so I'm curious what Joe's going to say about this because we've both been living in the spring world for a couple of months now.
Starting point is 01:17:41 And, and here's the thing, like some of the, one of, some of the reasons that we've always talked about that we love C Sharp is there are opinionated ways about doing things, right? So in C Sharp, if you want an ORM, chances are you're going with entity framework. Why?
Starting point is 01:17:58 Because it's what the community has kind of just globbed onto, right? Like that is what you want to use because there's great support for it and all that. There's a lot of decisions that are sort of made for you like that. Well, if you want to do things like aspects in C Sharp, we've talked about it in the past, right?
Starting point is 01:18:17 Like you're going to have to go get something like PostSharp, which they have a free community version that does some stuff. But if you want the full power of it, you're going to have to pay for it. And there are things like that, that it's kind of like, okay,
Starting point is 01:18:31 um, yeah, you know, maybe I'll do that. Spring has all this stuff baked in like, and I think I would have hated spring with a dying passion when it was all XML configuration driven stuff. I truly think that I would have hated it,
Starting point is 01:18:49 but with spring boot and a lot of the auto wiring and configuration and hook-ins that you don't have to go configure and, and, and write your own configuration files to make this happen. Like it's kind of a joy to use. Like, what do you think man i'm joy is a strong word you know like there are some parts that are just miserable where you just have to you have to google yeah and even then and you're going to find like you know ways people have been
Starting point is 01:19:17 doing it for the last 10 years and they're all different and it's not really clear what's version or like even what stuff they're importing and there's so many times we're like okay let me keep the code sample drop it in there okay you know code samples never have the stupid imports so it finds it for me and then they you know intelligent oh and then i realized oh it's actually it found things for like something else totally unrelated because i don't have whatever package they assumed i had and you know so it's just that kind of stuff is a mess and strings changed a lot over the years but man it's, some of the stuff is like Spring Security and stuff, just like trying to get that stuff worked out the first time.
Starting point is 01:19:48 Like once you get it, it's golden. Trying to debug it is so rough. And it just seems like magic to figure out because there's so much like implicit stuff happening. But that said, I love the output. I love how much integration, how much thought, and how much stuff has been built in for it. I mean, it is batteries included.
Starting point is 01:20:03 Like it's the whole battery store. It's like Batteries Plus is like stuck on your web app. Yeah, totally. And I don't want to oversell it because all of what you just said is 100% legit, right? Like the struggle is super real. When you're trying to get things to work and they're not working
Starting point is 01:20:20 and you went to Baldong because you didn't know better and you started following their tutorials with their lack of imports and their lack of context their lack of file names and directories and everything else you look at it you're like oh this will be easy and then you'll find yourself a day later cursing the world only to find out it's just a really bad tutorial site like if you ever find yourself on baldung leave right then even though you think it's going to look like the right answer just leave unless it was a tip of the week that michael might have given in which case you know it's okay i'm telling you man like i've wasted more time because i found something on baldung that looked
Starting point is 01:21:03 like it was going to be easy only to find out what Jay-Z just said. Like you'll pay some code, you know, just trying to get it in there. And it'll be like, Hey, you wanted to import this library. Sure. Fine. That looks great. Only to find out it imported the wrong thing because it had the same name on it. And it was the only library that you had on your system at that time. So at any rate, so getting away from that stuff, though, I do find that there are things that Spring does for you as a developer that force you to be a better developer. Like the fact that it has the built-in IOC containers and that kind of stuff, if you actually learn how to use it the right way, you write your programs better from the get-go because you start looking at like,
Starting point is 01:21:52 okay, well, how can I dependency inject this thing from the get? And I'm not doing up classes everywhere, right? Because all you got to do is tell it to auto wire it and scan some packages and you're golden, right? And that's nice. Um, I have a couple of links here just, you know, to the spring framework, excuse me, documentation. And so their core bits that they have out of the box, and this isn't even getting into the data stuff. They have their IOC container to me. That's huge. Like it really is good. They have events. So event sourcing and that type of thing, we've talked about it in the past. Like I've done some stuff in.NET before where you needed something to trigger an event so that other things could subscribe to it, right?
Starting point is 01:22:37 It's the, what's it called? The observer pattern, right? They've got that built into the framework. So if you need some sort of like little lightweight sort of message bus is built in, like you don't really have to go out of your way to do anything special. Um, the resources, I think that's things like your configuration files, your property files, your YAML files that in and of itself, I mean, Jay-Z and I have spent a lot of time fighting with that until we understood it. Right. Like here's here's a tip of the week that I'm not even going to put in the tip of the week. If you have a properties file in spring and you have something that says, you know, spring dot data dot JDBC URL.
Starting point is 01:23:26 You put that in there and you can set it to a value. If you want to override that at runtime, you can just create an environment variable and replace all your dots with underscores and it'll automatically inject it in for you. Like there are beautiful things like that, but you have to know that the framework does it, which is what Jay-Z was referring to is there's so much magic behind the scenes that is really frustrating if you don't know how it works and that is where you waste just hours of time i just want to know is there a spring boot configuration for my keyboard maybe that's what i'm missing there probably is there probably is yeah totally um so just quickly some other things that they have built into the framework that you get out of the box, internationalization, validation, data binding, which is sort of what I just touched on
Starting point is 01:24:11 with like having environment variables override, you know, properties, files, variables. They have profiles that you can set up. So you can have a dev profile, a production profile, QA, whatever. They have type conversion. I don't even know what this SPEL thing is. You know what that is, Jay-Z? Nope. Okay. Maybe we'll find it here in a second. They have their aspects are built into the framework, right? Testing, all kinds of stuff. I'm not going to go over all those. Their data access stuff. So they, man, the first time, I think Jay-Z, me, and another guy, we were looking at how some of the data access was being done in an application. And it was truly irritating because you couldn't find anything. Like you'd look at something and you're like, well, they're calling this, but where does it exist?
Starting point is 01:25:04 It doesn't until runtime. Like you'd look at something, you're like, well, how are they calling this? But where does it exist? It doesn't until runtime because spring will go through scan certain files. And if you have interfaces, it'll automatically hook that stuff up and turn it into a real live class for you. Right? So there is truly runtime or compile time magic that happens that you can't navigate to. But once you understand it, man, it is so amazing. So I don't know, man, like I've, I definitely still have enough time that I get really irritated and frustrated fighting whispering, right? Like part of it's
Starting point is 01:25:41 because I just don't know it that well, but I gotta say, man, the more I use it, the more I dig it. Like it, it, it feels like the most mature of development frameworks that I think I've ever used. Yeah. S P E L was the spring expression language. Yeah. I have no idea what that means. I was thinking if I said it, you might be like, oh yeah, that's this thing. Supports querying and manipulating an object graph at runtime.
Starting point is 01:26:13 So it kind of sounded like link to me based on that description. It could be anything in the world. It's all magic outlaw. It really is. Well, I mean, I'm looking at the examples and and one of the links that you gave me in it i mean i could be wrong but that's kind of what it well that's cool yeah i need to look into it i have no idea i mean but so like they have transactions in their data access dao support jd JDBC, R2DBC, OR mapping.
Starting point is 01:26:47 So the R2DBC, if I remember right, that's reactive databases. So I think CouchDB isn't that one of the ones to where when you do updates, it'll actually send messages and it's reactive. Yeah, it's not good to me if it's certain databases or it may just be a way of interacting with the databases that's kind of just done a little bit differently. Like there's like Jersey, there's like, not Jersey, I can't remember. I'm going to mess it all up. But there's a couple of things that have like reactive or kind of fluxy kind of ways of doing things. When you say that though, you mean like there's like a CDC kind of hook to it that like? Sort of.
Starting point is 01:27:24 So there are particular databases that are set up for it. I think we actually went to a talk on one years ago. I don't remember what it was. It was either CouchDB or I don't remember. At any rate, it's very much like that. When you do an update, it sends out an event that other things can subscribe to. So it's sort of a reactive database that you can program to. RethinkDB is the one I think you're thinking of. It might be, it might be. Oh, and I think when I think about reactive, I think definitely about observe the observable
Starting point is 01:27:53 pattern kind of subscribing. And then you kind of like write the little piece that goes in the middle. And so it's nice. And you know, you basically write your little, your little thing and it gets kind of included somewhere. Yep. Fancy. So another thing, like we've talked about this in the past with C sharp, like if you want to have some sort of scheduling type thing that runs jobs on some sort of schedule or whatever, there's not a lot built into C sharp to do that. There's, there's the ability to run async tasks in the background, but you can have to roll your own stuff, right? We had mentioned this has been a long time ago, but there was a product called Hangfire that was set up to do that kind of stuff. Spring has Quartz built into it, which is a full-on
Starting point is 01:28:35 scheduling thing that you can leverage with Java. Like there is literally, if you have an idea of something that you might need in your application, there's probably some plugin in Spring itself that handles most of what you need. And that's really nice. It solves the problem that I always have with Java, which was, hey, I need to do X, Y, and Z, and then you get 5 million different ways to do it, right? Spring kind of puts all these things in sort of a plugin format where it's like, hey, this thing's right here. If you need it, just include it in your palm file. You know, if you're doing Maven or we're included in your Gradle script and that's it. Like it's there. You don't really have to work hard to get past it. And that truly is kind of magical. So I still don't love Java, but man, I love the Spring Framework that enables Kotlin, Java, Groovy, Scala.
Starting point is 01:29:35 Scala? Scala? We've had this before. Scala? You're muted, Joe. I would say Scala. Scala. Yeah.
Starting point is 01:29:49 I'm muted. You're not muted now. You're not right oh yeah hey maybe it's scala depending on like you know your area of the country right right um it's amazing super mature and just like i said pretty much anything any database any framework any tool any service is already got an integration and it's probably done really well it's been really well thought out it's really well documented but you're gonna have to google because there's no way you're gonna figure that on your own you know what you know what i've found for whatever reason if you google anything spring related baldung is the first one that comes up man i wish i could put it on my block list no lie i wish it would it wouldn't even show up in google can't you uh go in can't you in their thing in Google where your search results,
Starting point is 01:30:28 you can say this wasn't meaningful. Ooh, I don't know. There might be, I've never looked at it. Um, but I will say for anybody that is on, um, LinkedIn learning, I have found the spring courses over there extremely valuable. Like when I was going through the data repository stuff, really, really good. They left out some things because, you know, a tendency on tutorials show you the happy path on everything, right? Which is awesome if you're just doing the happy path, but in the real world, you never are. But I did find those tutorials to be really good. And path, but in the real world, you never are. Um, but I, I did find those tutorials to be really good. And also, even though they're not, they're not still a sponsor
Starting point is 01:31:10 of the show, the educative.io courses on spring were also really good because they had excellent like code layout that would show you, you know, kind of how things should be in your directory structure and what they did and all that kind of stuff. So those two things I've found to be super useful. So no, it looks like now when you, there used to be the little ellipses on, uh,
Starting point is 01:31:39 or the ellipse on, uh, your Google search results. Now it just takes you to like information about that particular result. But cause remember like you used to be like, show me the cash version. Well, there is still the cash button there.
Starting point is 01:31:51 Oh, you know, that does remind me, uh, Jay Z, you mentioned something about the versions and the documentation. If you find yourself finding an answer on stack overflow, be aware that at least half the time, like Spring seems
Starting point is 01:32:08 to have this tendency to rename the classes and reorganize namespaces a lot because you'll see a code example. You'll go over there, type it into your IDE and it's like, hey, we can't find this class. And it's like, oh, you're lying you you have to be lying to me because i found this thing on stack overflow and it must be true only to find out that oh in spring you know 5.4.1 or whatever it was this class but then in 5.4. you know three they renamed it to this and it's like oh man really? Why did you do that? And, you know, you will run into that quite a bit where you just won't find the imports that you think you should. So be aware of that. But you have to Google and it's almost impossible, but it's worth it.
Starting point is 01:32:58 You said it's hard to tie those two things together, right? Like, yeah, it's impossible, but it's worth it. Like somehow that's true. All right. So, yeah, we're just going to officially rename it to coding blocks. Java. Colin. Colin.
Starting point is 01:33:18 No, I think I heard you love Java. That's what I heard. You can't be doing that. No, no. There's no java dot java i just registered the domain you had your chance java it's too late for for the better part of three decades you know the humorous thing though is that like uh for for the you know um java people among the slack community you, they're probably like, you guys act like this is a brand new thing?
Starting point is 01:33:50 You just heard of Spring? Yeah, it's like one of the oldest frameworks. Yeah, it's been around for a minute. I'd be the oldest. But in all reality, again, I don't think I would have got along with regular Spring. Spring Boot is where it's at. Yeah.
Starting point is 01:34:07 Spring boot and the maturity, because I want to say like six, seven years ago, like there were people that were on the fence. I don't know. Spring boots, not quite there yet. It's really mature now. And, and it makes, it makes using the things that they've built into it pretty easy, at least once you understand it. So, yeah.
Starting point is 01:34:33 Yeah, Spring Boot, not Spring. Okay. Well, yeah. So we'll have a bunch of links in there. I'm pretty sure it was RethinkDB was the one from that meetup. That sounds right. Yeah. That's been a while. Yeah. It's been
Starting point is 01:34:52 you know, that's probably when Spring was created. So anyway, we'll have a bunch of links to the resources we like for this episode. And with that we head into Alan's favorite portion of the show. It's the tip of the week. And Jay-Z, you're up first.
Starting point is 01:35:14 Yeah, so we talked about Happy Path. Alan, you mentioned Happy Path and how learning resources can sometimes be kind of tailored to making things work a little bit too much. And so language changes a little bit or, you know,
Starting point is 01:35:27 the imports change or they don't have the imports or something. And it just doesn't work because they're so intent on teaching you the easy way of doing things and showing you how easy was that you miss something, right? And something's lost. And so I wanted to mention a book that I've owned forever and have like never got past page 10. But not because I don't want to.
Starting point is 01:35:48 I really keep meaning to, but I'm so tired, guys. I'm so tired. But the book is Learn, See the Hard Way. And what's interesting about it is that it's an alternate take on a coding book that forces you to really do the work. And if you remember, there was a book that was really popular, uh, several years ago called something like seven languages in seven weeks. You remember that book?
Starting point is 01:36:09 It was like the craze for a minute. Yeah. Yeah. It was the same way. It was like, Hey, we're going to teach you. Um,
Starting point is 01:36:15 I forget what the language is where Scala was one of them. Uh, we're going to teach you Scala and they give you an exercise or two. And they're like, we're not going to tell you what the functions are. We haven't introduced really the language. I've told you like what the language is, how it's supposed to work and what it's meant for and what it's good at and bad at now you go figure out how to do it and you had to google in order to get past these assignments and there's there's no one there to grade you
Starting point is 01:36:36 and there's no one there to spank you if you don't do it right so it's really up to you to put in the work and this book is very much in that same vein where it gives you the exercises but it hasn't introduced all the functions and it hasn't introduced the way that everything works. So you literally, if this is all you know about like the C language, you don't have enough information to do the exercises in the book. That's because it's designed to really teach you. So the promise is if you do the work, if you suffer through this, you'll come out the other side actually knowing C. And isn't that what you want, right? Isn't that why you're reading the book? So it's an alternate take on learning resources. It's very controversial. So I
Starting point is 01:37:17 recommend this book only if you think about it and think this sounds like it might be good for you. And the author is Ed Shaw. I've mentioned him a few times before he's a controversial person i think he would agree to that and the book is controversial you can read the views like they're like right down the middle some people love some people hate it uh but it's definitely thought provoking and it's an interesting way of doing things yeah it'd be nice if you just kick back and watch a youtube video and come out the other side just knowing everything you need to do and being like you know an expert master at it but realistically that doesn't happen with too many subjects that are definitely not the ones that are worth learning and so uh give it a shot maybe this sounds like a day job yeah it sounds like uh
Starting point is 01:38:00 the way you were describing is they like went to Code Wars, got all the katas, printed them out into a book. And that's your challenge. So it's funny. So it's definitely not going to get into algorithms and stuff like that. But it kind of does hit on like oddities and weird things in languages. And so it kind of encourages you to hit those sort of weird spots that most books would kind of guide you around.
Starting point is 01:38:25 So you might say like, well, what if you returned null here? What if you, you know, what if you divided by zero or, you know, those are contrived examples, but kind of encourages you to kind of do things the wrong way a little bit and just in order to kind of see what happens. And the idea there is it's, you know, it teaches you, it strengthens you, it gets you used to seeing those error messages. And that's kind of the stuff that you struggle with later on, you know? Right. So do we really need another book on Hello World and Sea? No.
Starting point is 01:38:52 I don't know if we need this book either, but hey, recommended it. What a strong recommendation we have there from our own Joe Zack. Yeah. Yeah, I mean, you know, learning can be fun. I learned that, uh,
Starting point is 01:39:08 mosquitoes love type B blood. Oh no, that was my keyboard. Hold on. I meant it was a typo. Uh, Oh, sorry.
Starting point is 01:39:20 Oh man, you had me, you have me there for a second. I was about to Google. It's like, can I get rid of them? Makes sense, right?
Starting point is 01:39:31 Like just switch your blood type and then you don't have to worry about mosquitoes anymore. That's right. Uh, yeah. So, uh, I wanted to give a couple of windows terminal,
Starting point is 01:39:38 uh, ones because, you know, I love windows terminal. So why not? Um, I don't know why I did this, why I typed that in like I did, but yeah, we're going to wing it and see what happens here. So one cool thing is that
Starting point is 01:39:55 with Windows Explorer, if you are in, say, File Explorer, and you're like, hey, I really want to be right here, you could right-click inside the folder and say, open in windows terminal. And then it's right there. And there's like been, uh, things like this for years, you know, like, uh, I remember, do you guys remember, um, the, I think it was like sys internals that added in the capability to do like command prompt here type thing. So this is like this except built into the operating system with windows terminal.
Starting point is 01:40:28 Uh, so that's super handy I find for myself, but, also too is that in windows terminal, uh, I like to have, you know, a power shell instance,
Starting point is 01:40:41 a command prompt instance, uh, a WSL Ubuntu instance. But you can set what the default shell is every time you open it. But that's kind of a hassle if you know that I directly want to go to whatever the third option was, which maybe you defaulted to PowerShell and you want to go to Ubuntu, and maybe that's like third in your list, you can right-click on your Windows Terminal icon, and you can go straight to one of the non-default shells right away if you wanted to.
Starting point is 01:41:17 So I thought it was worth calling out because, you know, why not? I like it. It's simple. All right. So I've got a few here, simple all right so i've got a few here or actually i think i got a couple here so the first one is i think my last tip of the week i had mentioned that somebody somebody was using sonar cube and docker to do things you know locally before they checked in say again again? Derek. Yeah, that's right. That's right.
Starting point is 01:41:47 And so we got a Twitter reply from Martin, and he's like, yeah, I don't really like doing that because it's kind of heavy, running SonarCube and Docker. And he's like, I use SonarLint. Never heard of it. So if you go to Sonar lint.org there are plugins for a lot of the most popular editors out there right so you have eclipse visual studio visual studio code and then basically every one of the jet brains things out there but they say it's it's a little bit better than your
Starting point is 01:42:22 average linting tool because it does so much for you. It'll check for security issues in your code. It'll check for code smells, bad patterns, that kind of stuff. And it supports Java, JavaScript, TypeScript, Kotlin, VB, HTML5, Ruby. It's got a bunch of different languages in there. So, you know, maybe this is a great way to have a lightweight solution to help you out with code. And I remember, I even remember post-sharp doing things like this, like it would help fix code smells when you're doing stuff. And so this looks like another way to, for free
Starting point is 01:42:55 to help you out and probably any one of your favorite IDEs out there. So really cool one. Thank you, Martin. Again, on Twitter, we'll have his handle in the out there. So really cool one. Thank you, Martin. Again, on Twitter, we'll have his handle in the show notes. So, you know,
Starting point is 01:43:09 drop by and tell him, thank you for sharing that. And then, so this is another one that I actually didn't find. Um, mad Viking God and an outlaw found this. So we had a Jenkins build that was doing stuff with Docker build, but more specifically Docker build X. If you've never heard of that, maybe that's worth a tip of the week on its own
Starting point is 01:43:33 is Docker build X gives you more, um, features in your Docker builds than just Docker build. Because I think behind the scenes, this is using using build kit I think is ultimately what it is or maybe it's not at least that's what it named the way it names its uh its processes is build build x underscore build kit underscore random name okay cool so like one of the features that the build x supports is being able to pipe secrets into your do containers, your Docker builds in a secure way. And that's awesome. As far as I know, it's the only way to do it securely to where it's not exposed either via volume or some sort of variable that can be sniffed at the time. It basically gets rid of it for you after it does it. Build kit, you said, right? Yeah, build kit. Okay right yeah build okay yeah um so that said one of the problems
Starting point is 01:44:27 that we had was the jenkins process had a bunch of hanging threads right like you said there were basically processes hanging around that were eating up memory after running some of these docker build x builds and come to find out there is actually a build X stop command that allows you to kill these processes. So, oh, mad Viking God, actually,
Starting point is 01:44:50 I guess he found it. Um, outlaw this thing. Um, honestly, I don't remember. We were working on it. We were iterating on it together.
Starting point is 01:44:59 Uh, I don't, I don't remember how that worked out. It turned out like the build X command had a whole bunch of different options, um, that you could do on it, uh, that you could do.
Starting point is 01:45:10 Stop was one of them. Um, but what we ended up doing too with that, like part of that meant that you had to have the name. Cause when you do a Docker build X, create to create your builder you can name it or you can get a name back from whatever the default way is but that name you're going to want to give to the stop command to stop that specific thing so that basically was killing
Starting point is 01:45:42 these these processes that for whatever, just weren't letting go. Well, yeah. I mean, just to give a little bit of background there, too, for our build environment, we build everything via Docker. So if you wanted to compile your Kotlin, you want to compile your.NET, you want to compile your JavaScript, I don't care what it is. Everything is going to be compiled via Docker because in that way, like everybody can compile everything on their machine. Same as the build server is going to do because all the build tools are specified as, as you know,
Starting point is 01:46:17 here's a Docker file. Right. Yeah. Um, and, uh, and, but yeah,
Starting point is 01:46:23 with the build X options, it would create those, uh, build X instance or builder instances, but because they weren't ever being told to stop, the instance was still available for something else to, to use it as a build as a builder and so yeah we we uh discovered let's give mad viking guy the credit mad viking guy discovered like hey there's the stop command and uh we needed to we needed to um pipe that into our as part of our process yep so we'll have a link here in the show notes for it it is super helpful and again if you haven't even heard of BuildX, there are a lot of features baked into that that go above and beyond what are in just regular Docker build. So check that out. Well, namely, the number one feature, which is the reason why I think you introduced it into our pipeline, was that regular Docker, there's a limitation on the log the amount of logs that it will put out and it's a certain point if the build process is too noisy then it gives some kind of generic message i don't remember the exact wording of it that like hey i'm going to just
Starting point is 01:47:38 truncate everything because forget it it's too noisy and you never see what the build message was and because we were using Docker build to do like all of our compiles and to build these layers and that way you'd have, you know, build it like cache things and whatnot. You know, we wouldn't see like when there were build errors,
Starting point is 01:47:57 it'd be hard to find like, you know, if it was in a big project like, you know, where there's a lot of Maven dependencies and things like that, then like, you know, it was easily getting lost. And with build X, when you create the builder instance, you can specify how large do you want the log file support or the log output to be before it truncates it basically. Yeah. So excellent. All righty.
Starting point is 01:48:29 Well, uh, with that, we'll, like I said, we'll have a bunch of links there. Uh, definitely have links for the tip of the week.
Starting point is 01:48:36 Um, and, uh, yeah, subscribe to us on iTunes, Spotify, Stitcher, wherever you'd like to find your podcast apps.
Starting point is 01:48:42 Uh, we, we hope that we're wherever you find them. And if we're not, let us know and, weer, wherever you like to find your podcast apps. We hope that we're wherever you find them. And if we're not, let us know and we can make sure that we take care of that situation. And, you know, I didn't threaten earlier. And, you know, I want to be respectful and still not threaten. So I do appreciate the reviews that we had this time. But I would I would also love more because I'm greedy.
Starting point is 01:49:01 I mean, if I'm being honest. So you can find some helpful links at www.codingblocks.net slash review. Awesome. And hey, while you're up at codingblocks.net, you can check out our show notes. They are copious examples, discussions and more and send your feedback questions and rants over to Slack, which Jay-Z fixed our Slack signup. So you can go to codingblocks.net slash Slack and join that amazing community. Why did you fix it already? It hasn't been two years, right?
Starting point is 01:49:34 No, no. I had the schedule. Well, I fixed it in a crappy way though. You're muted again. What are you doing? I'm protecting you from my storing.
Starting point is 01:49:45 Wow. Is that what you're trying to say about our conversation? This is awkward. I just, yeah. I muted myself. I'm a fool. So, I fixed it in a bad way, though, was what I was trying to say. Oh, that's fine. But is it
Starting point is 01:50:01 a bad way technically? I have a very lo-fi solution. But from user experience it's great you go to the pages the thing that says click me and click it and you're in i like it yep yeah and we've got you know links to the code of conduct all that sort of stuff there too so it's not just that but it's very prominent try to make it very easy because i care about uh ux i like it some people would call me an uxpert. Maybe it's uxpert. I don't remember.
Starting point is 01:50:29 Anyway, be sure to follow us on Twitter at CodingBox. Head over to CodingBox.net and find all our social links at the top of the page.

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