Coding Blocks - Nulls, Procs, and Impostor Syndrome

Episode Date: July 5, 2016

This time we’re talking about problems with nulls, stored procedures, and impostor syndrome. Link to Episode 43’s Full Show Notes: http://www.codingblocks.net/episode43 News Join us on slack: http...://www.codingblocks.net/ Thanks for the awesome reviews: darkjedioverlord, Gustav, David W, XiaoHong, neoanomally, IAmAResource, alanw707, GDog, Demiera, kngtfallen, BMay1, jcook1017, XiaoHong89, Thallius, a.alhadhrami, BriCee34, iPawan85 Great Comments on last episode’s […]

Transcript
Discussion (0)
Starting point is 00:00:00 you're listening to coding blocks episode 43 subscribe to us and leave us a review in itunes stitcher google play and more using your favorite podcast app visit us at codingblocks.net where you can find show notes examples discussions and more send your feedback questions and rants to comments at codingblocks.net and come join the community of slackers over at www.codingblocks.net slash slack. Follow us on Twitter at Coding Blocks or head to www.codingblocks.net and find all our social links there at the top of the page. With that, I'm Alan Underwood. I'm Joe Zack.
Starting point is 00:00:37 And I'm Michael Outlaw. Do we have any news? We have lots of news. Sorry news sorry guys we dropped the ball we still gotta get uh we still gotta get used to this new format uh yep we're switching some things up but uh thanks for sticking with us yes so what's the news
Starting point is 00:00:58 i mean we have the the latest reviews that are in do we want to talk about that how about that for news we should do that uh i think whose turn is it to read these names i think i'm scared that it's mine is it is it yours it might be yours go ahead oh man okay um well then i guess here we go. Dark Jedi Overlord. Gustav. David W. Oh, man. Zhao Hong.
Starting point is 00:01:33 Okay, I like that one. Neo Anomaly. I Am A Resource. Alan W707. G-Dog. And if I had to guess, Demeria? Demera. Demera? Okay.
Starting point is 00:01:49 I can take that. I'll let one of you guys take that. You know that reading names is like my kryptonite. If your name isn't like John or Michael, then I'm going to butcher it. We know this by now. All right, Joe, you got this next round? Okay, we got Nightfallen, BMay1, Jcook1017, ZiaoHong89,
Starting point is 00:02:10 Thalius, AdaAlHadparami, sorry, BreeC34, and iPow185. And we really appreciate it, guys. That's pretty much our only way of finding new listeners. That's our SEO. That's our only way of showed up higher in the searches so we really appreciate those reviews you guys are awesome yeah totally and jow thank you for doing that in both spots that's amazing that you did it in both itunes and stitcher so much appreciated i don't like how easily joe blew through that list though he made it look so easy
Starting point is 00:02:38 man he was studying that while you're struggling with the probably he probably was either that or i got the hard list and he got the easy one i don't know oh by the way i did have a favorite of those i gotta say um who was it on stitcher that said that he got all giddy when a new episode came out oh i don't know what the giddy part i thought you were talking about the i am a resource uh review no so hold on because the thing i I liked about IMA Resources, he was talking about how our honest opinions, because we don't have guests, we just give honest opinions, and there's a tremendous feature, not a bug. Yeah, he actually did say, my wife would be the best to review this podcast, and she's
Starting point is 00:03:18 the one who sees how giddy I am every time a new episode comes out. Okay, so he was giddy. Yeah, that made me smile. It made me kind of giddy myself. Although I was kind of questioning when I saw AlanW707. I'm like, wait a minute, Alan. Did you write in... Did you change the spelling of your name and write in one?
Starting point is 00:03:34 I might have various accounts all over the internet. Because it started out really suspect because it starts out as, this is the best coding podcast ever. And I'm like, okay, I agree. And that Alan dude is awesome yeah yeah it was really uh i'm not i'm not i'm not convinced yet but yeah this is suspect but speaking of feedback actually we really got some great feedback and a lot of it for the last episode particularly about my butchering of the command pattern. So if you go to the website,
Starting point is 00:04:07 codingblocks.net slash episode 42, you can just look at the comments there on that actual post. And you'll see a lot of really good information, people sharing really good examples compared to my not so great examples, and just a lot of information going on in there. And so you should definitely check that out if you are interested in design patterns and we also got a really great email from Wesley Backer and he sent us some examples of the command mediator and a few other patterns that are related to what we talked about so I'll have some links to that on the show notes for this episode which is slash episode 43 and he actually sent us a video as well and I haven't heard back from him but I'm hoping that he's going to put that up somewhere that we can share. It's really great information and it's really thoughtful and nice.
Starting point is 00:04:48 Thank you, Wesley. I still want to argue the point that the mediator wasn't the puppet master. Did I put you guys to sleep? No, not at all. Can you hear us? Nope. You can hear us now. I can now.
Starting point is 00:05:02 I can now. Man. Thanks for putting up with us again, guys. We're switching formats. We're putting some things together and trying to make this easier so we can put out more episodes. But there's some rough spots, so we're working on it. Yep. Yeah, I still want to go back to that mediator, though, and blame Alan.
Starting point is 00:05:17 Or not blame Alan, but argue the point that the mediator pattern wasn't the puppet master. Oh, it didn't sound like it. I mean, afterwards i i need to go back and read that with myself too so did it make sense what i was trying to say then about it not being because all it was was to like facilitate the communication without them what to talk to without blasting it out to everybody basically is what the mediator was the one we got the least feedback about no repository did we get much back on that one uh that was a distant second oh interesting i was
Starting point is 00:05:46 definitely the one who got the most feedback uh next last episode so i guess that means i won well i guess i was saving my feedback for the show yeah yeah i was gonna say i'm wearing the dunce cap this episode i mean here's the thing right like we're all developers we're all fairly honest guys so you know we'll take the lumps as they come. Again, we do appreciate the feedback, though. We're not the end-all, be-all on everything here. Are you saying that last episode's audio had a bug? That the content wasn't right?
Starting point is 00:06:21 What are you saying? A bug went out in the audio? It's not a bug. It's a defect. Big difference. Okay. That's awesome. All right.
Starting point is 00:06:29 Speaking of awesome, I am going to a board game convention next week, Dice Tower Con, for anyone who's in Florida or maybe going there. But I wanted to mention it just because I thought that board games, at least the nerdy,
Starting point is 00:06:41 especially European board games, are kind of a funny program or interest. Like, I know a lot of dev-minded people that really European board games, are kind of a funny programmer interest. I know a lot of dev-minded people that really enjoy board games. And I think it's kind of funny because they usually are some sort of really arbitrary, complex system that you manipulate. And it does kind of remind me a little bit of programming. And so I think it's kind of funny that, you know, a funny coincidence that a lot of programmers do seem like board games.
Starting point is 00:07:04 And I was wondering if that was just me wishfully thinking that or if that's actually true. Like, do you guys like board games? Oh, dude, man, me and my wife, we play board games all the time. Like, we have a fairly vast collection of them. Nice. Yeah, it's a blast. So what kind of board games are you talking about here then? Because, I mean, this is, you know, a show for developers. So what kind of board games are you talking about here then because i mean this is you know a show for developers so what kind of board games are we talking about um so yeah go
Starting point is 00:07:30 ahead yeah i was gonna say um not definitely not monopoly that's uh everyone's favorite uh you know game to look down upon in the uh bgg community but uh you know carson uh did you just say bgg yeah man board game geek okay i just found that kind of humorous okay those are my people okay yeah i'm trying to think well because like i feel like if we're going to talk about board games on this show then you'd have to talk about a game like c jump have you guys heard of that never heard of it all right so head over to www.c-jump.com and this is a computer programming board game right this is a great way to get kids started on programming if you want to introduce some concepts to them very cool i haven't played it myself so you know i can only say that it's a great resource for them based off of things that I've heard others say,
Starting point is 00:08:27 but it's pretty cool because if you read the board, like it's literally, uh, like, you know, the control flow there on the board, you know, if your current dice number is greater than three,
Starting point is 00:08:39 go here. Else you go there. If the number is this, you switch it on the case statement. Hmm. I was going to say, what's it like like roll the dice figure out why that didn't work figure out why that didn't work roll the dice figure out why that didn't work uh no it's you roll the dice and then you're being told to roll three more dice but you only have one dice to roll and you're like i'm out of resources like doesn't matter you got to roll six dice because the dice have to get rolled this has to get done you know the games i'll talk about the uh the rule book is thick and there are often
Starting point is 00:09:08 multicolored cubes multicolored keys so i haven't done or meeples yeah i haven't done many of those like with dice but like pandemic that's a whole lot of fun uh we got that uh seven wonders that's a fairly complex game that's a lot of my favorites. That's a lot of fun. I'm trying to think. We kind of went on a binge recently to where we just started buying some because they really are, and they stretch your brain too, right? You seriously have to think, and there's a lot of strategy. I can't think of any of the other ones right now. Well, I was thinking a classic like Risk.
Starting point is 00:09:42 Risk is fun. For the first hour or two yeah yeah and that's the problem right like that game drags on for it's like okay so then you lose that's why it's not no it's just nobody i know i get it no hey it's fine hey alan look at me for a minute blink if you lose oh never mind i get it i got it i'm with you no i that would it would it'd be horrible that's like monopoly it's like the never-ending game basically people would just start doing stupid things to make it end so you lose it that one too oh yeah no i got it i got exactly yeah i guess that would be boring too but yeah dude totally we we're into the board games we we love them and
Starting point is 00:10:20 if there was a convention around here we would probably be some of the people going to it. Well, nowadays, it's all about the video games, though. There's no time for board games. I don't have time for video games. It's high noon. Michael just hit the floor. I did. I did. You've been playing a little bit, huh, Joe?
Starting point is 00:10:39 Yes, I love it. It's a great game. I've been really happy. You know what it is? I was thinking about this. Work's been really crazy lately. It's a great game. I've been really happy. You know what it is? I was thinking about this. Work's been really crazy lately. It's been really busy. And so when I'm not working,
Starting point is 00:10:48 I don't want to do anything that isn't fun. So I have been playing the heck out of some video games lately. And so if I'm not working, I'm still sitting in the same spot, but either playing Overwatch or one of the games that I just bought on the Steam sale. But wait, don't you now have two bionic wrists? You can't do that. you can't do that.
Starting point is 00:11:05 You can't do that. This is why he can. You have two bionic wrists now. You can't play games. We can rebuild him. We can make him better. I mean, I built this big rig so that I can kind of keep my arms all floating up in the air. I look like a spider. Alright, so wait a minute. What's your favorite
Starting point is 00:11:21 Overwatch hero to play as? Lucio. Oh, reallycio oh really yep okay so you you like the support guy then the best yeah i can't aim and i like winston a lot too so yeah anyone where i don't really have to aim i just have to like stay alive and uh now have you been checking out like like have you been checking out master overwatch.com no so they have stats on like which heroes are you know having the best uh you know streaks in terms of like kill death ratios popularity win rates you know score per minute things like that and you know some of them you're like okay i guess i saw that one coming um
Starting point is 00:11:58 you know but one and i cannot remember how to say this guy's name. Why am I trying to say another name? Torbjorn? Oh, yeah, yeah. Torbjorn. Yeah. Molten Core! Yeah, that guy.
Starting point is 00:12:26 He's like one of the top kill-death ratio guys right now, but he's actually about to get nerfed on the consoles oh so yeah maybe one of these days i'll see the game i haven't even seen it there's a lot of fun characters on there though but i think that's like part of the challenge is trying to play as like not getting stuck in a rut and playing as the same character trying other characters okay but here's the real question How does it rank in terms of some of the best call of duty games you've ever played? Better. Is it better? Really?
Starting point is 00:12:48 It's so much more fun. And the pacing is great. There's not any sitting around. There's not a lot of frustration. You know, I feel like whenever I die, I deserved it. So here's,
Starting point is 00:12:58 here's an interesting contrast. I'm going to get, cause it is a lot of fun and I'm not going to take away from that. Is it better than a call of duty or a halo or you know a battlefield i don't know it's a lot of fun but my son he made a great point about it that um i couldn't really argue against him with. And that's that he theorized that the game would lose popularity rather quickly compared to other games like a Halo or a Call of Duty. Because you don't have to earn anything. You just start the game and you have everything you want. Oh, there's no level up system.
Starting point is 00:13:39 There's nothing. Like you do level up, but it's really pointless. You gain nothing from it. There's really, you get nothing from it. And if you do get, like Joe mentioned, he was looking at the skins that he had for his characters. Like, if you get any of those skins, it's like, okay, who cares? Like, really, it changes nothing about the way your character plays. Your hand looks a little different.
Starting point is 00:14:00 Every character is going to play the same and have the same abilities as the day you first start playing the game. Unlike a call of duty, for example, where you have to level up to get to certain guns. It feels rewarding to a certain degree. Yes.
Starting point is 00:14:14 Okay. Yeah, I get that. One of these days pro Anaconda. Yeah, I agree. It is. It makes it to where everybody can have fun right off the bat.
Starting point is 00:14:22 But I thought it was an interesting, uh, theory though for, you know, a youngster to come up with. Yeah, that might be. Well, one of these days I'll play it and we'll see how it goes. All right, well, if you do, you should hop into our Pound Gaming channel and find some people to play with. Hey, wait, you also listed here that there's an Overwatch Steam sale. So you're playing on PC?
Starting point is 00:14:43 Unrelated. Oh, okay. I am on PC, but yeah, Overwatch is Blizzard. Steam sale is different. I have almost every Steam game now, so it's not as exciting. But I did round out my collection of roguelikes, so I got a couple ones I've been having my eye on. They could just sit there and collect dust in your digital library? It's embarrassing.
Starting point is 00:15:01 Hey, what percentage of games do you buy versus play? Oh, I could probably figure that out. It'd be really embarrassing. What percentage of games do you buy versus play? I can probably figure that out. It'd be really embarrassing. There's so many games where I go to buy it and I already have it. I'm like, oh, and then there's so many games I have. And I'm like, what the heck is that? I think you have an addiction there, Joe. You have a problem.
Starting point is 00:15:18 Do you have the same problem with board games? Do you realize like, oh, crap, I already had that version? No, I don't have that problem probably because i can't uh use them by myself yeah you know the interesting thing though is these these board games are are as expensive as video games a lot oh yeah like they're not cheap yeah we're not talking about risk like if you go get pandemic or or some of these other ones out there they're 40 50 bucks so you're not talking about like a game that you would see at a big box store you're not going to see this at walmart yeah these are games that
Starting point is 00:15:48 you find online like if you go to amazon you sort by like popular board games you'll see some on there you've never heard of and they'll have like you know 500 five-star reviews like they're they're fun but they literally if you don't go watch a youtube video on how to get started in the game it'll take you an hour to read through the directions and figure out all the ways that you need to do things to play like they're they're not simple games but at any rate i think we've uh we've killed the game stuff what yeah never all right so uh what do we got next? Well, I think this episode we're just going to, uh, this, this is like more random thoughts,
Starting point is 00:16:28 but not just my head this time. These are collaborative random thoughts. Yeah. At least that's what the voices in my head. Tell me. Awesome. So I guess in this case, let's let Joe pick the first one.
Starting point is 00:16:43 Cause he said he had one. He was going to surprise us with. I'm kind of curious what that one's going to be. Oh, God. Yes. And actually, this one was sent in to us by Steve. And I don't know if you want to say his last name or not, so I won't. But he wrote us about the age-old debate of using arbitrary dates in your database to represent either max or unknown
Starting point is 00:17:07 dates. So the idea there is that instead of having a nullable column, you use a date like January 1st, 1900, or December 31st, 2525, to represent some sort of, you know, arbitrary rule in your system and anywhere in your code and whatnot, you know, to check for that specific date to mean either unbounded or unlimited. You know what? I actually, so here's my take on that, being that I love database stuff.
Starting point is 00:17:38 I actually like having the value in there and I'll tell you why. And it's got more to do with performance than anything else. If you choose to put a null in there and i'll tell you why and it's got more to do with performance than anything else if you if you choose to put a null in there for for indicating that there was no starter in right like let's say that you have a table that you say hey i want everything for this given time slice if you typically would do a between there now you've also got to do like uh an is null type thing around it so now you have this the scalar operation where an is null type thing around it. So now you have this,
Starting point is 00:18:06 this scalar operation where you're going. Yeah. You got it. You got to do this scalar operation on the column and every piece of data that it's scanning through in the table in order to do your between. And so there's actually a performance hit on that. Now that comes contrary to the space hit that you take by putting a value in there but i i feel like if if you're going for performance it makes more sense to have have that data in
Starting point is 00:18:34 there with either a minimum value that you know about or a maximum value that's my take i mean specifically for dates i would like to say that i agree with alan but yet so often is the case where it's just null right i mean i hear you man you every january 1st 1970 for everything but it's but you are i mean that's the point of dull it's to represent something that either doesn't matter or i don't know right and so we're kind of redefining that but it really does make querying so much easier and at a glance you know i think it's really obvious at least for a human to tell that that they mean is meaningless uh yeah maybe i guess it would also depend, too, on, like, what the data is. Because January 1st, 1970 might be a valid date.
Starting point is 00:19:31 That's true. So maybe you need something a little bit more obscure. Well, I mean, even if it is a valid date, that should be fine, right? No, no. As long as there's nothing before it, is what I'm saying. No, because then you'd never be able to differentiate what rows have that date because they mean it, and which ones have that because they don't mean it. Right.
Starting point is 00:19:54 You just talked me out of it. Because I would hate for one table to, say, use the 1900 trick, and for the next table to not be able to use that trick because that's a valid date. And so now I've got some tables that that rule applies to and some tables that don't yeah i mean i i think that for performance reasons if that's what you're trying to do then it makes sense to put it in there if if it has nothing to do with performance then then maybe leave it null because it is if it's not a real number then it should have no data right or not a real date i mean it would also be weird though too what if you had okay i'm just making up something so this is totally contrived but what if you had a
Starting point is 00:20:37 some data some table structure right so some table schema and the columns included a create date column, right? And maybe an update, updated date column, right? Well, if the row has never been updated, then why have a value there? So even if it was a dummy value, it still reads weird because now you're saying the created date is today's date and the updated date is some date you know many years ago so i totally agree with that and so i'm going to i'm going to modify my statement so for created i didn't mean this way but it sounds like i'm doing a pretty good job i should run for president you know what outlaw for president y'all 2016 we're taking this thing over so i i actually agree with you. If it's created date, a modified date, then those should be
Starting point is 00:21:30 real values. They should all, and those should always have values. Okay. Like real ones. If it's something like, I guess when I was thinking about this, I was thinking about something like active date, right? So let's say that you have lookup tables like i'm not a fan of deleting data if you have a lookup table then let's say that in that lookup table you have you know a type or a type name or something right i'm not a fan of hey if this lookup type is no longer valid then just delete it or mark it as deleted because then you have no oh so you're saying like using a date as to whether or not to know whether or not something is active or not so you know you'll see a lot of times people like like here's my order statuses and these status these status
Starting point is 00:22:14 only the order statuses that have like because let's say order status is your lookup table yep right so the order is either processed it's shipped yes it's it's uh pending yes you know packing whatever yep okay so then you would want to use the date of whether or not that status is active so no so typically what you'll see in a lookup table is like an active flag right it's a bit yeah a bit and the problem with that is there's no history to it. You never have any clue. Like, was this actually used back last year or was this just, Oh, so you want like a last year? Uh,
Starting point is 00:22:49 uh, begin active and end active. So, so let's say that you have, um, it still seems like those would be like times where you'd want real dates. So not, not January 1st,
Starting point is 00:23:00 1970. So the begin date. Yes. The end date, you would want some arbitrary or maybe not arbitrary but some selected max date in the future oh okay because you want this thing to stay active until you turn it off when you turn it off then you set that end date to whatever that time is that you want to turn it off but then that also goes back to like if you have a lookup table like that like
Starting point is 00:23:23 i'm not a fan of just re-enabling one that was already there so let's say that you had an order processing thing and you had a status in your warehouse where it was on the floor right so that was active from January 1st last year till June 1st of last year if you ever want to bring that thing back you don't re-enable that record because you lose the history on it. You create another record that would then have its own start and end date, even though it's going to be the same name, right? It's going to be on the floor. That'd be weird.
Starting point is 00:23:53 No, but the thing is, the beautiful part about that is when you go to query those statuses, you literally just say, hey, give me the status where it's active, where today's date is between the start date and the end date. And that's why having an end date that is 2525 makes sense. Because if you do a null in that end date. I mean, I guess I see where you're talking about with a max date. Because I was thinking of like a min date would be your default there. I still don't necessarily follow along with the the order status example so because i still don't understand why you wouldn't just re-enable the the previous history you lose the history so yeah but what does it matter you're re-enabling it like what if what if it was only
Starting point is 00:24:35 disabled for a day who cares what if you want to know that hey we stopped using this thing for some reason last year right well i feel like i feel like in this contrived example though like if that were the case, there would be a better way to get that information that like, hey, we've stopped using this. You'd probably have some kind of history kind of table to know like, hey, we no longer use it. You wouldn't use those two columns for that.
Starting point is 00:24:57 I think that's what's throwing my head off for this example. Here's the problem with what you do if you re-enable that. So let's say that this thing came into play at January 1st last last year and then you cut it off june 1st last year okay now what do you do when you go to re-enable this thing do you say the start date is now whenever you turn it back on and the end date is out in the future or do you act like there was never a gap and you just leave the start date the same that it was and you extend the end date to some date in the future so now you don't even know that there was a gap looking at the lookup i mean again this is like where this example is falling apart because like i guess like well one you got a complicated story here my friend i don't understand why why we care about the statuses like this
Starting point is 00:25:42 no you don't you that happens all the time, right? Like you change a workflow out in a warehouse and you might introduce a new step, right? You could introduce a new step, sure. And you get rid of old steps as well. Yeah, but the way you're describing it though is like, I don't. I mean, granted, you went with this arbitrary order status, but. You brought it up. No, I said a type.
Starting point is 00:26:04 I'm going to rewind. Yeah, you did the order status so do you get what i'm saying though joe like the reason why i would go with a start date and an end date and the end dates off into the future because when you query to get the active statuses that are available you just say we're dates between the start and the end and that's it yep can we rewind did i really bring up the order status thing? Joe, did he bring up the order status? I'm losing my mind.
Starting point is 00:26:28 I don't know. He did. I was just looking at your faces and we kept putting together. Oh, no. Yeah. Okay. Because you said a lookup table. And so I brought up order status as an example. So at any rate, that's the reason why.
Starting point is 00:26:41 So I amend it. If you don't have to do anything that's like a between, I totally agree. But for created dates, modified dates, things that actually have a meaning. But every time we use a date though, it's generally because it's mean something.
Starting point is 00:26:56 And that's where, that's where I had the problem with it. Like I understand what you're saying with query is definitely makes queries easier and faster, not queries easier. And faster. Not just easier. And faster. I won't take that away. But you generally want the date to mean something.
Starting point is 00:27:13 Well, how about this? Have you ever had a bug that was caused by records not being returned because of a null value? Oh, absolutely. And so that's where... And because where I was thinking where... Now, you probably wouldn't do this on a date column, but I was thinking about joins specifically are annoying. You got to do an is null or something.
Starting point is 00:27:33 Where you do have to do like an is null, and then if it is null, provide some constant as your seed, right? So that it can match on a null. And that's a performance hit because yes and that's why i'm not saying i'm not saying it's not a performance hit yeah a big one in many cases right definitely well let's say depending on the size of the data that you're trying to query right but it's going to force typically a table scan over a seek if we're talking sql server specifically it can't index data that it doesn't know about because you're now trying to say if
Starting point is 00:28:05 this then that like that's literally what an is null or a coalesce is going to do right so it's uh you are killing your query optimization when you have to do a join on that or aware on that or anything like that so yeah all right so i guess we should blame steve then for like you know breaking up the fan because we don't seem to agree on this but well i so here's where i'm at on it um i agree that arbitrary dates are faster and less error prone and i still don't want to do it so i'm of two minds so how are we supposed to come to a consensus but why but why why don't you want to do it though because that's what knolls are knolls So I'm of two minds, so how are we supposed to come to a consensus? But why? Why don't you want to do it, though?
Starting point is 00:28:49 Because that's what null's for. It means I don't know. It's blank. There's no value. I mean, you wouldn't do that for an integer, right? You wouldn't say, yeah, negative one, because we're never going to have negative values. People do that all the time. Oh, that's even... Now, that is wrong. But you know, that's, now that is wrong.
Starting point is 00:29:05 But you know what? Objectively, that is wrong. So that brings up the next conversation that is completely off the cuff here. And this is because this correlates very directly to a conversation I had on Slack with Jason. And he was asking about the same type thing with an integer. And his was a weird situation. It was an access bug, really really that came out to be the issue but um he asked if you have an integer field should you default to zero other than putting a
Starting point is 00:29:35 null in it or should you have a null and i was like man that's that's really not it depends on the situation right like if it if it i don't like that zero is a real value yes yeah exactly that's what i'm saying like this good this is the same exact thing as the dates yes is you know zero is supposed to be a valid value in your system then you then you could be forcing a meaning that shouldn't be there because null a null would be an unknown, whereas a zero would be a known. Yeah, I mean, that's basically what I told him. In the situation to where, you know, maybe it's being used like sort of as a Boolean or something,
Starting point is 00:30:17 that could be a problem. I mean, if I ask Alan right now how much money is in Joe's bank, and Alan says, I don't know, that's very different than alan coming back and saying zero zero zero dollars are in joe's account because then i'm gonna be like hey joe are you okay man yeah but see and no send me some money i think that's really the problem though is everybody has different ways of doing things right like some people use that integer thing and put a negative one in there indicating all like well the example i gave
Starting point is 00:30:45 him was permissions right like a lot of times you'll if somebody if if you've implemented some sort of permission system in your data right a lot of times people will use null to say that you have everything maybe zero to say that you have nothing wait what kind of permissions are we talking about uh just i guess i guess i'm thinking like the way permissions are done in like a unix system well that's where yeah that's different that's a bit shifting and stuff no this is more like um if you are going to like let's say that you have a table is administrator yeah yeah in admin you might have a negative one saying that that means everything some people use a negative one some people use a null um well i guess here's my take on both of these though there is no one right answer correct like it's going to depend
Starting point is 00:31:31 on the situation based on like is zero a valid value is january 1st 1970 valid do you do you are you joining on massive amounts of data where you need that little bit of extra performance that having a date value instead of a null is going to mean to you then maybe those are things that matter but if if you want to define if you want null to mean an unknown then that's your only option i i'm in favor of not nulling the column enforcing a value really i mean like for a date not not a created check your commits so so like i said a created date a modified date absolutely those should have valid values in them i see some code reviews in your future starting an end date totally i i'm all for not knowing those things and i'm gonna be like hey
Starting point is 00:32:26 alan i see this new table schema i don't see any defaults on this table this date column i'm gonna find somebody to approve that pull request for you rubber stamp you just gotta find that person that doesn't really look all that hard yeah right here baby it depends on when you ask me. If you ask me for a pull request at 5.30, guess what? Approved. So I feel like we just spent 15 minutes talking about this, and the answer we have decided on is it depends. Yes, totally. Or I don't know.
Starting point is 00:32:59 I think our answer is null. We have a null answer here. That's awesome. This episode is sponsored by infragistics enterprise services ux focus ux first infragistics ux first focus does not end with mobility solutions ux prototyping tools or developer tool sets their ux services team can help drive success in your initiatives by examining your existing and future technology requirements to help you better understand how to modernize your enterprise. Infragistics can help with technology migrations, modernization, and mobilization efforts. They can even help build and drive a user experience focused culture in your organization by integrating UX into your
Starting point is 00:33:45 process from the start. Also, Infragistics has a blog where they discuss a number of relevant topics that may help you in your development challenges. Head over to www.infragistics.com and get started with your free 30-day trial. All right, so for our next topic, this one comes up simply because I've had too many discussions about it here lately and people are completely polarized on this on this topic so storing queries how many pixels to move the logo right so where should your queries be should they be in prox in your database or should they be in your code and let the fighting begin can i vote neither can that be an option that's interesting you don't like no queries you don't like data
Starting point is 00:34:32 well yeah we're devs we don't write queries right you guys aren't writing queries there are dbas for that well if you're using you know depending on your tool set to get to the database it might be making its queries on its own for you and so that's completely completely abstracted away from you you don't know how it's getting the data you just trust that it is and you don't know how bad that query is is getting it for you is what he said um you know that's where you might have to you know poke around do some inspections like see how to write your code better to better optimize how you retrieve the data but the point being is that maybe you aren't writing the queries yourself
Starting point is 00:35:11 all right so so let's quit beating around the bush here so outlaw is voting for an orm basically is what he's saying and i'm saying like like if i had to even lower it to two letters, there's one that comes to mind. What was it? A, B, C, E, F. That, you know, Entity Framework that, you know, you wouldn't know the query that was being written. Well, GraphQL, man.
Starting point is 00:35:37 You know what's funny? I got an email from a Facebook recruiter and the email basically just said, hey, you know, contact me at Facebook. We got GraphQL. So I responded back one word. No. Three letters.
Starting point is 00:35:52 PHP. No, I'm joking. And I actually don't hate on PHP as much as I hate on JavaScript. Oh, man, that hurts. All right, so I am curious. So we know where Outlaw stands. He's definitely strongly in the ORM camp,
Starting point is 00:36:06 and we'll say Entity Framework will be his horse. I mean, in a.NET world, I'm definitely a fan of Entity Framework. Okay. Joe, you, your take. Yeah, I advocate for Prox, but it depends on answers. In a normal business situation, I would probably be closer to doing something like LinkedSQL or an entity framework. But if you are dealing with serious amounts of data
Starting point is 00:36:31 and you're having query performance problems and stuff is getting hairy, then I love having my logic and procs so I can ship them off to experts for help. And I can say, hey, look, here are the arguments in. Here's the query output that I want. Do whatever nasty black magic weirdo stuff you have to do to make that happen. So in other words, you want to delegate your SQL writing. Well, I'll write it first. It's just someone has to fix it. I gotcha. I gotcha.
Starting point is 00:36:57 You know, they need to do some CTEs with some temp tables and some unions instead of ORs and just other weirdo stuff. I don't know. I'm sure there have been once or twice or a thousand times where I've had my hand slapped by a DBA. Like, why would you do that?
Starting point is 00:37:12 I thought it was the way to do it. Okay. So here's the thing. Like I used to be strongly on the proc side of the world, like probably for most of my career, because I've basically worked in SQL server and you know, that's just, that's what you know, that's what you do. And for whatever reason in the past year or so, like my whole brain has been going scalable.
Starting point is 00:37:36 Like how do you scale? And here's my problem with doing it in a proc. So let's say that you have just tons of data and indexing no longer gets you where you need to be, right? So that thing that you handed off to the DBA, what's he going to do now? Well, he's going to be like, well, you know what? We've got 300 million records in this table and we got 200 million records in this table. And the only way we can make this faster is we're going to have to create another table that's a flattened out version of that and index the heck out of it. And then that's how we're going to go about fixing this problem. Right. And here's a bandaid. And here's my problem with that particular solution. Right. So if you look at SQL server, it is an OLTP. It is an online, it's a transactional system, right? It's good at fast inputs, reads, writes, and that kind of stuff.
Starting point is 00:38:27 When you start trying to do reporting out of a system like that, where you have hundreds of millions of records, that's not what it's built for. So here's my thing is I've started thinking about, okay, well, what about tools like Elasticsearch, right? The whole point of that entire piece of software is stupid fast querying, right? Like you tell it the types of results you want, and then you feed it data in that format, and it's really good at that. So if you build everything into Prox now, you don't really have the ability to pivot and use a technology like that. If you built it in your code
Starting point is 00:39:06 to where you had something like a repository pattern, right, to where you call something, and then you don't know what it uses behind the scene. Currently, it could use entity framework, right? And it could query SQL Server. Or maybe at some point you say, man, my database is really dying on these hundreds of millions of records that it's trying to join across 20 tables. You know, we need to move this into a search index. Your repository is still the facing piece that you use. And now instead of querying SQL server, whether it was a proc or code, now you're calling something like Elasticsearch. So that's where I kind of feel like having that sort of built into the code allows you to be able to pivot more i i feel like i feel like okay because just to play devil's
Starting point is 00:39:54 advocate with that for a moment regardless of whether or not the query was in your c-sharp code for example or your java code for, versus it being in a Sprock, the repository pattern could still be abstracting away how the query is being called, whether it's calling a Sprock to query it or whether it's calling a select statement that's baked into it. Either way, that could be abstracted away. And if you decide to bring in something like a Hadoop or Elasticsearch or whatever, then you have another repository
Starting point is 00:40:26 implementation that could get called. So either way, you don't have to have the query itself in the code. Okay, let's take one layer on top of that then, because I agree, that's absolutely correct. But typically when you put that stuff in a sprock don't you also bake your business logic into that sprock well okay so here's where here's where i was coming at it here here's where my point was on it though is that when it does get into specifically business logic in your sprock and and i also want to say a special kind of business logic because what if and i can't really think of a good company example to to describe here but um maybe if your company like if that was your secret sauce right if the value that you were providing is whatever that sprock is right then you're just giving away your source when when someone gets the database.
Starting point is 00:41:26 Whereas, yes, I know somebody can decompile your code, right? And, you know, unobfuscate it and things like that. Like, I realize that there's ways to do that. But you're making it a lot more work. I mean, it's kind of like the old saying about you know locking the doors on like your car for example right if you're you're not keeping the person who really wants inside of that car is going to get in inside of that car but it's keeping honest people honest yeah right and if you're just giving away the the database with the sort of procedure in it then you know
Starting point is 00:42:03 some dba is like well hey i could make this thing better i can make it do my own thing like you know so if that's important to you and that is your secret sauce for the company then that's where i kind of feel like that's weird that you're gonna just put it in the sprock so joe do you have any more input because i have one more example as to why you would put it in the code is it about order statuses no oh no no i'm pretty sure i was right the first time so you just give it to the dba and let them deal with it yep done so i'll give you an interesting one and this actually came from uh instagram so if you haven't you should check out their tech blog because they talk about all the challenges they had as they grew right like i mean just like just any kind of mvp any minimum viable product that you put out there you start off a particular way you probably just had it in my sql and then
Starting point is 00:42:57 it grew and it grew and it grew and then you were like oh god it outgrew what it could do right they talk about what they did and it involved database sharding. But in order to do that, they had to do it at the application layer. Because generally speaking, what the sharding is, is you have data that falls within a particular range on server A, then you have another range on server B. And so sharding is basically putting data on different systems. So they can all be super efficient at getting that data out right but the knowledge of where to get that data lied in their application layer i believe that's correct so if you put it in that layer now the place that knows how to go get that data is in your application and it can do it if you stick it and here's the other part a part of it
Starting point is 00:43:42 that i think is fairly important if important if you think about things in terms of like a microservice and being able to scale if you have that microservice you can put it on 30 different servers right you no longer have a single point of failure if you use a database server to say okay go query this link server or that link server that is sort of your single point of failure sure you, you could have a failover, but it's not as easy to spin up multiple database servers, nor is it cheap compared to, oh, well, let's just spin up another process on another fairly lightweight box over here.
Starting point is 00:44:16 And then you have microservices that can scale out. So to me, it's more about the scaling thing as to why you might want to put your stuff in code versus in a proc in the database. Hmm. I feel like I blew away your whole theory for putting it in the code because the Sproc, it could still be calling a Sproc with the repository pattern. No, I'm talking about the scaling now if you call a sprock on the server now how are you going to know oh well that data is not on this server i need to call out to this other server to get that data because i sharded that server off right that's
Starting point is 00:44:56 on shard number one over here so that's what i'm saying if you have that in your application logic you can scale out that application that microservice to put it on as many boxes you need but don't i mean again okay so just playing devil's advocate here in your repository pattern let's harp on that one since that was apparently one pattern we got right couldn't it have that logic of knowing like hey you are asking for. Well, this query is going to go against, you know, I'm going to make this call against this shard over here where I'm going to execute this Sprock. You could potentially do that. I mean, yes. To your point. Yes. You could spread the Sprocks out amongst various different database servers,
Starting point is 00:45:40 right? You totally could. Because I mean, if like the, the core of the question, as I originally understood it was, do you write your select statements in your in your do you bake that in with your c sharp or java or c plus plus you know you bake that in or do you abstract it away to where it's in a stored procedure and then we didn't even talk about examples where maybe it's in like a config file like uh an ibadis might use right yeah i'm not a fan of that but but either which way it's still kind of in your code i guess the only question though is when you talk about doing that in the hmm you understand like yeah yeah i mean that that's where like your example was kind
Starting point is 00:46:29 of yeah i don't know all right i think we beat it up that's a tough one i mean yeah i don't know there's arguments for them both obviously but so just to kind of sum it up we're basically saying um if by doing the code you buy yourself some flexibility doing it in the database you uh it's a little bit easier to delegate and look at those things in isolation and so uh once again i guess the answer is uh it depends yeah but i still feel like the the one last thing i do want to touch on that i kind of missed though is if you put all your logic like your business logic in your proc you can no longer act on that in your application well you know what i'm saying like if you did switch i do agree with that from your sql server and you go over to if you're putting business logic in your query then that's where
Starting point is 00:47:15 it gets weird yes it and a lot of people do right like that's part of it that's that's almost inherently dumb because you think about oh how do I need this data to come back so my application will work? We could illustrate this really easily by tying it back into the date, though. You could say, hey, select this, and if the date column is null, then on your, let's say, C sharp side, you decided to be lazy and didn't want to null check anything. Right. Now you have some business logic in your store procedure. if you do move from SQL Server over to Elasticsearch or some other type of data storage that's going to be better for whatever that use case is, if you had all that logic baked into SQL Server, now you've got to either duplicate that over in Elasticsearch or you're going to
Starting point is 00:48:18 have to move it down to your code so that it knows how to understand it properly. So either which way you're going to have a lot more work. That'd be a big regression. It're going to have a lot more work that'd be a big regression it's going to be a lot more work right so that that's kind of the other point is if you put it in your application code then no matter what your data point is that you're calling then you know so at any rate yeah again it all depends but those are some viewpoints on it well let's let's talk about something fun for a moment so sorry we talked about what type of development do you prefer now oh yeah you better not have cheated i have not looked at this i haven't even looked at the emails that have been coming through all right but i hear joe's awfully quiet so that means he did you're too busy playing overwatch i hear you man me too me too yeah well you keep saying
Starting point is 00:49:07 mccree but like you said that wasn't your favorite yeah i'm dead yeah yeah i know that i'm dead as soon as i hear it i'm like that's too late i already heard it um all right so what type of front-end development do you prefer front-end ui full stack or no what type of development do you prefer yeah what type of development do you prefer do you prefer front-end ui development do you prefer middle tier slash server development do you prefer back-end slash database development or do you prefer full stack so all of the above and alan you were full stack i think we talked about what our purposes were so you were full stack and joe was definitely javascript i think i got that right right you you were totally server
Starting point is 00:49:54 side right yeah joe was server side uh no i don't know i think i said full stack maybe i don't know um no i must have said server side else i would have been lying which would you prefer the most like honestly server side oh yeah so middle tier type stuff yeah yeah all right so you got the four choices what was yours um i don't remember no what is it right now then oh uh server side is so much easier to write unit tests for so if i didn't't say that that time, I'm going to say it this time. All right. So you're middle tier back end. But I don't know. I do a lot of full stack, too.
Starting point is 00:50:31 So, I mean, I don't know. Sometimes you get bored, but it's so much easier to write unit tests for just the server side. All right. So you feel you have more confidence in it. So, all right. So let's see how confident you are with your answer all right so which one do you think is the winner out of those four choices give me a guess i want to say full stack full stack oh both of you are going the full stack route oh yeah wow
Starting point is 00:50:57 that's some confidence okay we all have add we want to do you want to do you want to okay so do you want to like break break the tiebreaker, you know, Price is Right style? And you guys give me a percentage as to like how much you think the full stack won? I'm going to say. 60. 60%? Man, that's what I was going to say.
Starting point is 00:51:15 All right, 55. 55. 55 from Alan. Okay, so Price is Right rules. Okay, so whoever, if you go over, you automatically lost. If you both go over, you both lost. $1. Right?
Starting point is 00:51:28 Right. You shouldn't... It's too late. You said $55. All right. So I'll go ahead and tell you this. It was full stack by a lot. Really?
Starting point is 00:51:38 Yeah. It was... Server side was the second, but it was pretty decent you know uh ways away from full stack full stack had it by 55.1 holy smokes yeah so i think alan did cheat after all i did not that previous stuff he was saying about like oh i didn't even look at it man i don't look at this stuff yeah that was a lie. Nobody got time for that. Do you think that's representative of all developers or just people fill out surveys?
Starting point is 00:52:13 Well, obviously people filled out the survey. There were a lot of people who filled this one out, though. I did see emails flowing in a lot. Yeah. So there were quite a few responses to this one. I mean, you know, overall, I mean, most people like to take a break for something, right? Like if you're working on C sharp all the time, like maybe it's nice to jump into JavaScript or into SQL or I don't know, man.
Starting point is 00:52:35 Like I definitely feel that way. Yeah. I don't like waiting on somebody. So I don't want, you know, Johnny UI, uh, messing my feature up or, you know, somebody else on the back end uh jogging their feet or getting stuff wrong you know i'm that way too i'm totally that way but it is nice though when you only have to write a server side component you're like oh you know what i can write a unit test to make sure that this is absolutely correct and be done and then
Starting point is 00:53:00 someone else some other jerk will be like hey you forgot a unit to a use case because here's a bug and you're like oh thanks guy whose name starts with an a right i guess i didn't miss i didn't get that one even though i had like 99 test coverage i was just trying to help you out man yeah oh you thought something you oh wow well That's awkward. Oh, man. Alright, so who's introducing this next one? I think Joe needs to because this is like one of his favorite things. Do we not have a topic for the... I'm sorry, but do we not have a survey for the next one?
Starting point is 00:53:35 Nobody wants to come up with a survey? Oh, do we have a survey? Favorite Overwatch character? Oh. That's all I care about right now. That'd be so many choices, though. there's like what 16 characters 25 characters something like that there's a lot of characters so we can't do that yeah all right um okay well i guess we didn't think about that one so no survey this time i got an idea for a survey so um the lowest percentage do you you see what it was for client side?
Starting point is 00:54:07 In the survey results? Was it UI? It was UI by far, yeah. What was the percentage on that? 1.4. Whoa! 1.4. Okay, so that's tiny.
Starting point is 00:54:20 So the question is then why do we prefer server side? Or rather, why don't people like working on UI alone? And so that'll be the survey for next time we'll have a couple uh interesting options up there we want to know why only 1.5 percent of people uh picked uh ui only i wonder if like i wonder if they're thinking like if everyone was thinking like only css like oh god i don't want to do css all day long we we have people who are not just web developers right like we definitely have some android people and yeah yeah but that's what i'm trying to figure out like i wonder when people read that like maybe they had like a different you know certain interpretation of it so yeah you're right maybe if they were doing like mobile development then they're like well i have to have to write the UI component and the,
Starting point is 00:55:05 you know, that the middle tier part of it myself. Yeah. I don't know. So yeah, let's, let's put that out there. We'll come up with some interesting options and,
Starting point is 00:55:13 uh, and we'll see what happens there. Although there is this one comment that I've had here, like in my, in my little, uh, log of things to mention that kind of goes along with this though, when we were talking about css
Starting point is 00:55:25 and that's that you know this general thought that like well pixels matter right like we we joke about like getting a ticket or no we've had this joke specifically several times where like you'll go to interview for some uh you know, company, let's call them company G, and they give you the interview and it is a brutally harsh interview. And then you get through it and you get your new job and they give you the first ticket and it's like, we need the pixel, we need the logo mood five pixels to the left. And you're like, really? Like, what was that interview about that we just did right so you
Starting point is 00:56:07 know we've definitely had that joke but they're they're you know placement matters and and we need those people who care about the design who care about the layout who care about where the pixels are right i mean the users that's the users right maybe we don't want it to be maybe we don't have to want to have to work on something pixel perfect necessarily but you definitely want those people on your team that are that that do care about the pixel well i think that's the biggest problem right like there's a gap a lot of times from what i've seen or at least in my experiences you have the designer he has this picture in his head right and the picture is glamorous it's beautiful well i mean it's a
Starting point is 00:56:51 photo it's psd so sure it's beautiful right and then they're like put this on the web right and now that happens way too often and now you're in 10 different browsers on three different os's trying to make this thing work oh i mean not even browser specific i mean uh at a previous company for an ios app i was given a psd and i'm like here's your requirements for the app i'm like a psd is not a requirement what are you talking about right and that's the hard part right like a lot of times it's not even the, the designer's job to implement that where it goes. And typically the person, I don't want to say always,
Starting point is 00:57:31 but a lot of times the people with the skill sets that can do the CSS and that kind of work, that's not the only thing they do. Right? Like, cause the thing is companies don't want to be like, Hey, what's your skill set?
Starting point is 00:57:41 Oh, CSS. Um, what else do you do? Well, I guess part of my point though is like, I didn't want to be like hey what's your skill set oh css um what else do you do right well i guess part of my point that was like i didn't want to you know because we've made those jokes before in the past and i thought well that's really unfair to like anyone who truly is like just a you know css you know uber nerd right then you know it's not fair to them because
Starting point is 00:58:01 there's some dark CSS magic out there. I mean, have you seen some of the... I'm trying to think of an example now where entire worlds have been created where it was all CSS driven. Oh, dude. Have you ever been to csszengarden.com? Oh, if you want to see some magic, man. So this is actually where I learned how to do css back in the day you go to css zengarden.com essentially they have they've got this thing
Starting point is 00:58:34 where you can click all designs it's the same content on the page for every single page it's the same divs it's the same spans it's the same text everything you click is different style sheets so different css and it is amazing what these people have done with this stuff yeah that's not yeah i mean that's cool that's not the one i was thinking of though um you're talking like animations and stuff people have made games and stuff yes that's the kind of thing i'm talking about like and but i can't think of any... Yeah, you're talking about people that actually work with a canvas and all that kind of stuff.
Starting point is 00:59:09 Yeah, that's hardcore. I mean, there are some extreme examples out there. There's Super Mario right here. I'm quote-unquote playing. CSS Super Mario. It's not the whole game, but yeah, it's definitely animations. It's moving around and it's all in CSS and
Starting point is 00:59:25 JavaScript. Is it on CodePen? Is that the one you're looking at? CodePen.io? I'm on it right now. Alright, we'll put a link on that. Yeah, I mean, this is the kind of crazy stuff I'm talking about. So, I mean, you definitely want people on your team
Starting point is 00:59:40 where those pixels do matter. And it's not necessarily the designers, not necessarily who I'm referring to, Alan. I mean, I know what you're talking about with the designer, but, you know, where, you know, there's a level removed there, right? So they create something and they hand it off and, you know, it's their baby.
Starting point is 00:59:58 They created it and they hope that it gets made right. But what I mean, though, is that, you know, someone who's actually in there writing code, because as much as we might dog CSS, I mean that is some serious code oh it is oh i just found mario kart i did too dude i'm on it i'm playing right now i wish you guys were in here with me okay now now i'm a little jealous css super mario or mario kart rather yes mario kart oh this is killer and you play as yoshi uh if i win then is this uh things in jars.com yes slash lab slash css cart although oh my lord yeah it's not very fast that kind of hurts but no and you can just stop It's very easy to make tight turns That's awesome
Starting point is 01:00:46 Anyways We digress What's our next topic? Our next topic is going to be Super Mario Kart Or Mario Kart That's amazing Alright so What is the next topic?
Starting point is 01:01:02 I want to talk about logs Yes let's do that Are we doing that or the next ad? I want to talk about logs. Yes, let's do that. Are we doing that or the next ad? Let's talk about logs. Let's talk about logs, baby. Yep, so we talked about this a little bit on the 12 Factor app, and it definitely had a very strong opinion on you writing logs to standard out and then managing those logs external to your actual application.
Starting point is 01:01:24 That way you don't have to worry about any of that stuff, whether it's database or whether it gets splunked out or whatever. So I did like that aspect, although it does put the onus somewhere else. And so it is kind of nice to have that centralized if you're just doing something small. But that's not the only option. Most of the time I think it's stuff that's either written to disk or some sort of like Windows event logs or something like that well i had i had a conversation recently where
Starting point is 01:01:49 somebody was like hey write something let's write all the logs to the database and i was like well that kind of stinks what if the error was you lost your database connection right like like what are you going to do now so like my thing was i didn't even say standard out but that's more of a that's usually more of the linuxy type world right it's so well according to 12th hacker right which is definitely very linuxy very linuxy i mean extremely linuxy but i mean my thing would be wouldn't the file system be the safer or if you're using something like a log for net you can have it right to multiple streams at the same time but a queue would probably be even the best thing you know i don't know man but then that also relies on some sort of connection so and your environment yeah i mean if you have like you know a couple queues set up for you then that's fine
Starting point is 01:02:40 but if you have multiple installations or whatnot then that's not going to work but yeah i mean the database is tempting because it does buy you some stuff for for quote-unquote free you know if you have multiple app servers you don't have to worry about aggregating those logs you don't have to uh you know deal with any of those headaches that goes along with that it's also going to be centralized in one spot and it's easy to query that but then that's making a lot of assumptions like you having access to prod databases and stuff like that which are all big no-nos for big like websites but might be perfectly reasonable for your company if you're doing uh you know something a little bit more specialized and smaller um and more isolated so you know it's uh it's one of those it depends cases again but i just like writing stuff to disk so even if i did put it in the database you know i
Starting point is 01:03:27 like being able to go in there and turn on you know up the level of logging and see all that stuff written to disk and and know that it's getting uh you know rolled appropriately and stuff's getting cleaned up and so i don't have to worry about okay but then what about though if depending on like that's not going to work for everything though, because then you can start thrashing the disk if you're talking about a system under heavy IO, right? Yeah, so you got to
Starting point is 01:03:53 hopefully you're using a logging library where you can dial that back by configuration. Even if you dial it back. Let's say you dial it back. So you're talking about just a disk that's constantly getting tons of IO. You're facebook.com You're facebook.com and you got millions of users hitting you every minute. Okay, you can't. You can't.
Starting point is 01:04:12 You can't log the disk. That's also not one app. No, I mean, that stuff's getting logged all over the place, different boxes, and you need to have some sort of log aggregator to pull that stuff together. Otherwise, you're never going to be able to make sense of it. You know, I'm sure it's like microservice galore. But that's kind of an interesting point though so i mean what you're talking about having you know some some sort of log aggregator like a splunk or a log stash
Starting point is 01:04:32 splunk was totally what i was thinking of but but that doesn't take away the problem that you're still writing to it yes it does right because your disk is still getting thrashed splunk is only taking it off everyone's disks and trying to put it into a place but doesn't splunk have an api where you could write directly to it? Yeah, I mean, you can push stuff. It's got all sorts of options. It can read streams. Of course, if network is one of your problems, then you're still up the creek.
Starting point is 01:04:53 And that's the problem. I mean, that's why you've always got to consider it. Like, disk is probably your safest, typically. Although space is going to be an issue and other things. Well, what I was thinking of is, like, you default to the database, and then things well what i was thinking of is like you default to the database and then for those times where you do have the database connectivity issue then sure log it to disk if you want you know that issue but you probably have bigger things going on
Starting point is 01:05:17 if you can't access the database well right so you're probably already pretty aware that something's down it's an interesting guess it's an interesting thing, right? Like, I mean, at what point do you have to, like, we talk about decoupled systems and trying to make sure that you have layers and all that. I mean, you have to have some level of confidence in certain things. Otherwise nothing works, right? Like if you don't have confidence that your network is working your app's not going to be able to talk to your sql or to your database or to whatever right
Starting point is 01:05:50 well right well that's kind of where i was going because if you're logging if if you're saying like well i can't log to the database because what if the database goes down then it's like well wouldn't you just be logging something that you already are aware of anyways? The database is down. No one ever said, oh, man, these logs are on disks. No. If anything, it's, oh, man, there are no logs. So I don't care where it ends up as long as there's something I can look at.
Starting point is 01:06:18 Yeah, that's a good point. I mean, so that gets into another topic that we won't dive into too deeply here, but that's where alerting is a very important thing that a lot of, right. A lot of people think about after the, Oh crap moment happens, right? Your alert goes down.
Starting point is 01:06:32 Right, right. Jeez. I guess. I mean, I know you say that, but that's definitely, it can happen.
Starting point is 01:06:41 Totally. Having played around on some, you know, projects on the alerting side. Yep. Um, it can happen totally having played around on some you know projects on the alerting side yep um it can be there there's there's different types of alerting that you can do so you can do polling from whatever the resource is and then you can do polling from some external source right so that the so if you have let's say your server your database server and it's sending polls every now and then like okay here's my system health right
Starting point is 01:07:12 then if it ever stops then the other side can say like well i haven't received anything in x number of intervals maybe this is a problem and that's where it can start to you know raise the the alert um but if it goes down then you also have this other problem where like okay now it's not sending anything because it's down yeah it it's crazy yeah i mean with with systems getting as complicated as they are now like there's there's a lot of things you have taken into consideration, but I think the three of us can definitely agree that more logs are better, right? Like it's better to have an overabundance of information than to not have what you need to be able to track down a problem. Yeah. I definitely had one problem a lot, lot, lot, lot more often than the other. Right. And that's frustrating. Now we'll say
Starting point is 01:08:06 though, that brings up another quick thing that everybody should be aware of. If you are logging things and you're logging verbosely, you need to be careful about the kind of information you log. You don't want to be logging social security numbers. You don't want to be logging things like that, right? Oh yeah oh yeah like make sure because it might just be your thing to where you're dumping data that's in some sort of object and you need to be careful like be aware of that because that's the kind of thing that could sink your company it could sink you it could sink your company it could sink a lot of things so yes log a lot but also be aware of what you are logging so I think what we've gathered
Starting point is 01:08:47 about logs then is it's big right it's huge it's heavy it's necessary right it's wood it's log it's better than bad it's good
Starting point is 01:09:01 you're welcome. That makes me so happy. We'll have to have a link in here for that. It is all bad. I blame that on Outlaw. He's been around longer than me. Whoa. Wait a minute.
Starting point is 01:09:19 Things got weird. I think I saw this on YouTube. It was definitely more recent. Oh. So. things got weird i think i saw this on youtube it was definitely more recent oh dude who did that boot camper yeah i see you pal wasn't sure if you were following along yeah no i got it jerk you know out of respect when you were reading your ad, Reed, I didn't even put my cursor anywhere in that block because I didn't want to throw you off.
Starting point is 01:10:09 I believe I heard, hey, you want me to read this? That was during a take. All right. So. This episode is sponsored by Dev Bootcamp. Think about becoming a software developer? Check out Dev Bootcamp, the original short-term immersive software development program that transforms those new to coding into job-ready, full-stack web developers.
Starting point is 01:10:38 Learn front- and back-end web development, teamwork, and leadership skills in a rigorous and inclusive environment. Dev Bootcamp has several locations around the country and is accepting applications now. Visit devbootcamp.com slash codingblocks to learn more. Nicely done. Ready? Yep. All right. yep all right so imposter syndrome and then on to the tips yeah yep
Starting point is 01:11:15 all right i got it all right all right and we're back in three all right so for our last topic i wanted to ask the question do you ever feel like software development is a constant series of being made to feel like an idiot totally yeah yes uh all day most days because i don't know are you like so often i'll be asking them well i don't know how you would do that let me think about that for a moment and then it kind of makes you feel like sometimes you're like well i don't think i belong like i don't i feel like maybe i'm not the same as the rest of these guys here I don't come out with a good answer real quick they're gonna see that I'm not up to par with them they're way they're light years ahead of me I mean I could be brutal on
Starting point is 01:12:18 myself uh yeah after working all day I think it comes in I'm like why have I not learned how to test after 15 years of doing this i still can't make sure my stuff even works like what was i thinking and then like that's not even talking about um my lack of using design patterns properly or just uh clean coding i look at code i wrote three weeks ago and it's terrible and so it's not even that i feel bad today i should have felt bad three weeks ago when i wrote that crap yeah man i'm totally with you and you know what so a friend pointed out there's a name for this thing that i had never heard of beforehand called imposter syndrome had either of you heard of this thing yes only because
Starting point is 01:13:00 i listen to business podcasts and apparently that's like a big, big, big deal in people just even getting off the ground, right? So it's almost like a form of depression. And, you know, this is the human side of programming. And it's real easy to kind of get down on yourself. And it can really drag you under when you have that in the back of your head like oh my god this dude's talking about 500 things that i've never even heard of i i wonder i want i
Starting point is 01:13:33 just want to read you what wikipedia has here for this because after reading this like it made me feel a little bit better and i was like yeah but it's still not i'm still not worthy but it's also known as imposter phenomenon or fraud syndrome okay and it's a term a term coined in 1978 by a clinical psychologist or two of them dr pauline r clance them. Dr. Pauline R. Clance and Suzanne A. Imes. Referring to high achieving individuals marked by an inability to internalize their accomplishments and a persistent fear of being exposed as a fraud. Despite external evidence of their competence, those exhibiting the syndrome remain convinced that they are frauds and do not deserve the success they have achieved. Proof of success is dismissed as luck, timing, or as a result of deceiving others into thinking they are more intelligent and competent than they believe
Starting point is 01:14:43 themselves to be. Some studies suggest that the imposter syndrome is particularly common among high-achieving women. So, either I'm a woman, or I have imposter syndrome. Wait. Well, what if it really is luck and chance, and I really don't know what I'm doing? Well, you know, in all fairness, here's what I'll say to that and this is the kind of stuff that I have to tell myself from time to time is yes there is a bit of luck yes there is a bit of timing but if you hadn't put yourself in the position to be there when that timing occurred or when that luck so happened to happen, then,
Starting point is 01:15:27 then you wouldn't have been in the situation to have even achieved what you did. So it's, it's so easy to get a task or, or be in a room with somebody, right? Like it, like we all have a mutual friend who, who for all intents and purposes is a whiz with cloud right like he knows so much about cloud and to hear him talk about it sometimes you're like oh my god i know nothing about programming right like in and it's almost frustrating to a certain degree because you're like man i've been doing this stuff for a long time why is it that i have no idea what he's talking about right but it's well that's why i kind of made the joke about you know maybe i'm a woman because i wondered why i find it curious that the study suggests that it's
Starting point is 01:16:12 particularly common among high achieving women like why why is that a thing why is it like okay everything else that i read up to there before that last sentence it was like oh yeah i totally understand that that makes sense right that seems like something that every one of us could relate to and then there's that last sentence i'm like whoa huh why is that it makes me wonder if uh women in tech have it particularly bad i i mean i mean they do for lots of reasons, but for this one in particular. To be clear, though, this isn't specific to engineering. No, it's not IT. I mean, this could be any kind of job.
Starting point is 01:16:53 Yeah, I mean, like I said, I hear this all the time on business podcasts. If you listen to Entrepreneur on Fire. Hillary Clinton could feel imposter syndrome. I mean, here's the thing, though. No, you didn't want to jump on the political bandwagon? Not at I mean, here's the thing though. Like, no, you didn't want to like jump on the political bandwagon at all. Cause it's outlaw 2016.
Starting point is 01:17:09 That's why that's right. Outlaw for 2016. But I mean, here's the thing, right? Like it, the reason why we brought this up is this has been a topic that's come up in Slack quite a few times and it's come up from people that you can tell they know what they're talking about,
Starting point is 01:17:24 right? Like when, when, when a conversation comes up, this topical, whether it be C sharp or JavaScript, has come up from people that you can tell they know what they're talking about right like when when a conversation comes up this topical whether it be c-sharp or javascript or some server technology or whatever and then you'll hear them say something about they have imposter syndrome like like i don't feel like i could do this or or i was asked a question i was like how in the world do i not know this right but i think that's actually a problem with our field like let's let's think about it from a particular standpoint like if you're a heart surgeon right you are going to be extremely knowledgeable on that one thing and it's not like it changes that much right like there might be
Starting point is 01:17:59 studies that come out that tell you that different types of heart disease can happen or whatever there's advancements in in procedures There can be advancements in procedures. But dude, how much does programming change from month to month, from week? Well, that's always been the thing about software development though, right? Right. It's a constant learning curve. Every three months, there's some new technology or some new library out there. And I think that's part of the reason why-
Starting point is 01:18:22 Or at least it feels that way. I think it's got to be so pervasive simply because you feel like you're always behind the curve right like it is impossible to stay up with all the technologies but even aside from the technology part i have a lot of feelings of the imposter syndrome type stuff about uh ticketing systems like why haven't i thought this problem out through so much so it's not even about its code it's why didn't i uh foresee these problems in the business logic or not raising the flag soon enough if there was going to be some sort of problem or just not realizing that i should have done something ahead of time and these aren't tech problems this isn't
Starting point is 01:19:00 a problem with me not knowing uh tech x y and z these are me just thinking i'm an incompetent human being because of how i'm interacting at work yeah i mean i was thinking more like why is it taking me this long to move the logo five pixels you know what though i think part of that though is because so like with joe i can i think i can sort of speak to yours like you like to do things right same thing with outlaw like you guys like to do things right and you you have in your mind how long you think it's going to take you to do something like that right and and I know I'm this way too to where if you communicate that it's going to take you three days then if that three days comes up and you haven't gotten where you need to be oh you don you don't want to back, you don't want to back down.
Starting point is 01:19:46 Right. And so that's where I feel like I beat myself up about it. And that's the problem. And here's the thing. Cause you'll like work yourself to death. Yeah. To the bone, trying to like meet your deadline,
Starting point is 01:19:57 which only sets yourself up for future problems. Yeah. Because then you're like, you know, the next time you get some deadline, they're like, well, outlaw did this in three days last time. So could probably do it again and you know this other similar well that and you know you're working at uh say nine o'clock at night there's
Starting point is 01:20:14 no one around to ask questions on when you run into problems so you end up having to make these kind of assumptions because you're scrambling to get something done you get it done right at the end of when you said it was gonna you don't ask anyone questions because then that only goes into that only feeds the imposter syndrome no man that's what that's the beauty of stack overflow it's completely you could just query anonymously and ask your questions there and no one has to know no one has to know it was you although i will say though this is this is almost a little bit selfish on my part. I almost prefer to work when nobody else is online. I get so much more done. Oh, yeah. Because of the quiet? Yeah.
Starting point is 01:20:49 I mean, I get so much more done. Like, when people are pinging me throughout the day or whatever, it's like, I know that I've written two lines of code in the past three hours, but, you know. Yeah, they say every interruption costs 15 minutes because not only is it the time taking away, but also just trying to
Starting point is 01:21:05 get back up to speed to everything that you had in your head and everything that you're doing i mean but i mean i guess on the imposter thing though like a lot of times it's it's these the high standards that we've set ourselves up for that we try to achieve and then when you don't do that that also puts you back in that row because you're like yeah dude i knew this was going to be three days but here i am on day three 16 hours into the day still fighting it and it's because you want to achieve that right i think okay here's a couple of thoughts that came to mind that as it relates to engineers maybe it's because we're so binary you either you either succeed you're either a success or you're not and so when you do run into questions or you have problems then maybe the next one is like well i guess i'm not the success side because i'm over here right or let's take
Starting point is 01:21:58 another example maybe let's talk about like you know the quote businessman or businesswoman case right you know i'm not like you know uber construction man you know you know uh businessman but maybe they think in terms of their success as dollars and if they have more dollars than person b then they are more successful than person b and therefore they can feel like, hey, I'm okay. But then as soon as they get next to person C, then they're like, oh, I'm not making as much money. I'm therefore not as worthy. And I don't know.
Starting point is 01:22:35 Maybe that's it. But I also noticed too, though, some people just seem to be... There's also a difference in personality too, where some people are just more full of themselves. And I don't necessarily mean that as a bad way, like it is so often taken. But their confidence is high just in themselves, period. Why are you looking at me? I'm totally kidding. You know, because I didn't know how to say this earlier.
Starting point is 01:23:01 No. It really, it's a challenging thing and really i would be surprised if most people don't feel this to some certain degree right like the first time that you were given mdx did you not panic a little bit well but this is why i was questioning that last sentence though it's particularly high among high achieving women so you just said you imagine that everyone would have this, but yet the studies don't. And that's why I find it curious.
Starting point is 01:23:28 You can't believe everything they say. Oh my God. Now, there's some fighting words. Well, I don't like to hang out with somebody who isn't neurotic. Well, that's interesting. That's just part of the deal, right? Yeah, I don't know.
Starting point is 01:23:44 I mean, the fact is... is and by the way that's actually 23 minutes for the average interruption oh really nice yep i mean so here's the thing it's real right like you've experienced it i've experienced it we've all experienced it the people in the slack channel like this request to talk about this came up more than once right like this is not something that's small so if you feel it just understand it's it's natural it it happens but the way you overcome that is you just you know you knock down those those barriers so keep calm 90 success is just uh showing up right i promise calm code on that is i i swear to you that is so true man i know look i know people that have an eighth of the brain power is most everybody that we deal with
Starting point is 01:24:33 on any given day and are incredibly successful because either they were too stubborn or too dumb to give up well i look at like sometimes when i get stressed out about something like that you know and and um you know to joe's point about just showing up like i often will just tell myself like okay there's the path to success right and there are these steps that you have to take you know one two three whatever they are however many steps if you don't take the steps then you've already automatically failed so you just got to keep going and keep iterating on it until you do finish the task at hand. And maybe, you know,
Starting point is 01:25:11 when you're done, you hope that it's success. It's success that you finished it. But they always say that either way, you got to own it. Yes. And we've talked about that before. I forget when we had
Starting point is 01:25:22 the big conversation about it. But basically, even if you screw up, you know, if you are, if it's taken longer, whatever you need to just kind of buckle down, said, whatever emails you got to say,
Starting point is 01:25:32 you know, to send and just kind of keep showing up, keep plugging away and whatever you do, don't, uh, you know, or, you know,
Starting point is 01:25:38 try not to, uh, go hide in the bathroom and play candy crush and do it sooner rather than later. Right? Like we did talk about that with the um with the advanced programmer in that series is if you know that you are slipping behind don't wait till the last minute do it because that's when imposter syndrome is really going to kick you in the teeth because you're going to be sitting there working till
Starting point is 01:26:00 three four in the morning trying to get something done. When if you just let somebody know two weeks in advance, like, yo, I keep getting, you know, pulled off or whatever it is. Well, I mean, not only that, but like your customer, whether that be your boss or, you know, a paying customer, they're going to really appreciate that advance. The sooner you give them that advance notice, as soon as you realize that you're not going to make it, then they're going to really appreciate it. Yeah, totally. And then they're going to say like, oh, he's's an imposter that's why you can't do it and then you're gonna be like oh gosh i should crawl back into my shell because i suck dude this reminds me like um this is going back to my teenage years but i remember there was some girl that you know i really wanted to ask out and i was so scared right like it was one of those of course
Starting point is 01:26:42 you don't that's what we all did right and so you know you know what probably the best advice and this goes back to that whole showing up thing the best advice i ever got i don't even know who the guy was anymore i think he was my manager when i was bagging groceries at some store he was like dude what's the worst that's gonna happen she's gonna say no yeah yeah that's and i was like there you go oh my she's gonna say no and then giggle at you and point at you, and you're going to be like in front of the cafeteria, and then you're going to realize, oh, crap, I didn't wear pants today. And then everyone's going to start laughing at you and throwing food at you.
Starting point is 01:27:13 It could get really bad, man. I don't know how many girls you've asked out before, but apparently it doesn't sound like it was a lot because it could get really bad. I feel like we just deep-dived some some dark corner of outlaw's psyche but dude totally like seriously after that i remember thinking oh wow and then after that he said something like it'll just get easier to say it the next time like like you know if you get rejected once it hurts really bad then you get rejected again and it doesn't hurt fortunately for me i've never been rejected but you know what i'm saying remember when i was saying some people are just more full of themselves
Starting point is 01:27:48 and you're like hey man sometimes there really is an imposter in your midst oh man but no seriously like it's that same type i feel like you're an imposter acting as an imposter like you're really not an imposter like you ever think that this is like, get it. What's that movie? Um, inception, inception. Yes. That's where we've just gone. Um, no, but I mean, seriously though, it's that whole thing. Like if you just keep, keep going forward, success will follow as long as you are doing things and you're always trying to improve.
Starting point is 01:28:22 Like that imposter is always going to be there, but it's, it's that work ethic that will really get you through it. So I think the takeaway here is if I take Alan's story here and I apply it to the code here, if I keep asking the code out, eventually it's going to work out and it's going to get done. It will blossom. Well,
Starting point is 01:28:40 what I heard here is that, um, you probably feel, uh, miserable now, uh, unless you're a new program, in which case, um you probably feel uh miserable now uh unless you're a new programmer in which case um you still have to uh to get there oh you haven't been broken down enough if you're a new programmer no and then you're gonna you're gonna break down you're gonna
Starting point is 01:28:55 stay there for most of your career welcome to programming board now come join us on slack so that we can all grovel and drink away our sorrows we will help you with your pity yes oh man yep and we take a shot every time someone says it starts to send us with my manager dot dot dot oh man that's amazing all right so in the resources we like section we're going to have lots of self-help books. Chicken soup for the soul. That'll be number one. Chicken soup for the software developer. We'll have affiliate links to whiskey.
Starting point is 01:29:41 This episode is sponsored by MakersMark. That's absolutely amazing. No, it's really not sponsored by them. They'd be nice. Yeah, that would be good. Resources we like. So last episode, I bought a book on air and was asked a couple times which one it was. And the name is Design Patterns.
Starting point is 01:29:58 That's pretty common. But if you go to SourceMaking.com, they've actually got a lot of really cool uh stuff written about and you can actually read most if not all of the book online actually for free so you should go to that website and i wish i had read a little bit better before last episode because their examples are actually really good which is really hard to find for most design patterns so i definitely wanted to mention that one we'll have a link in the show notes which are at www.codingbox.net slash episode 43 we've got a few other ones i'm just adding them randomly so we have css zangarden
Starting point is 01:30:33 oh i had those in the notes okay yeah oh yeah um also the mario kart thing so that you can waste some time playing mario brothers and css that's amazing. And then that's pretty much it. So now on to the tips of the week. So one of the things, we've talked about this tool a lot in the past, and I just really have got- ReSharper. No, not ReSharper.
Starting point is 01:30:57 This is a ReSharper one. I'm debating re-upping my subscription for the all toolkit. Sorry. I'm considering it. But WebStorm. so i'm getting to where i really dig this thing other than it being a complete memory hog i really like the ide one of the things that i just found recently that i love even more about it have either of you ever
Starting point is 01:31:18 dealt with js doc it's kind of like comments like your c- sharp. If you do the triple slash, it'll open. Yeah. The summary documentation is similar to that. So JS docs is very similar to that. So like if you do a slash star star, then it will automatically kick in JS docs. So like if you're above a method where you've already kind of filled out the method, it'll go in and fill in the parameters and all that kind of stuff, which I've always known about. And I like a lot, but one of the things that I found that was really sweet is it'll do deep linking. So I'm a fan of in my JavaScript. I don't like, and even in C sharp, right? Like if I get past like three or four parameters, then I'm getting ready to start putting in like a request object or some sort of config object that you pass into a method because I don't like long signatures. They drive
Starting point is 01:32:09 me crazy. So you can do the same thing in JavaScript and a lot of frameworks will do that where you pass in some sort of config object, right? If in that JS doc above it, you do like, let's say that you called the parameter config you can do config dot give it a type and then when you go to use that thing in your code and you do config dot it will actually know based off the js doc the various different nested parameters that are there so it will deep link the js documents which i thought was absolutely fantastic. So that's my tip. So slash star star and web storm above some sort of JavaScript thing. It'll bring up the JS docs and then you can do deep linking and I'll try and
Starting point is 01:32:52 get a sample up so that you guys can see what I'm talking about. Very cool. All right. So mine is the output clause. Joe, do you ever use that? Do you know what I'm talking about? I know Alan does. That's why I'm sure. Output clause. All right. Joe, do you ever use that? Do you know what I'm talking about? I know Alan does.
Starting point is 01:33:06 I'm not sure. Output clause. Actually, I recently had a demo of this. It's awesome. This is a very cool SQL Server T-SQL feature where
Starting point is 01:33:21 if you're not already using it, let's say you want to insert some records in a table, but then you're not already using it let's say you want to um you know insert some records in a table but then you're like what did i just insert specifically if that table has a primary key so you can't create the primary key you need it to be you know created for you and and the the the sql server tell you or the database server tell you what the key is, right? Assuming it's an identity column, right? So you insert that record in there. Now you want to know what you just inserted
Starting point is 01:33:55 so that you can have the key back. Well, you could do something like an insert into table and then the parentheses, whatever your columns are, and then output inserted dot star, and then have a values statement with whatever you want to do. So let's say you had two columns and two values you're going to do.
Starting point is 01:34:14 So you'd say insert into table, parentheses, column one, comma, column two, in parentheses, output inserted dot star, values, open parentheses, one comma two, in parentheses, because we're only inserting those two numbers into the two columns. And what gets returned back is the same as a select statement that would have
Starting point is 01:34:39 those two columns with those two values coming back to you. So you can see what was inserted. So it's a very cool way of, especially when you have an identity column where the database server is going to create that key for you, you can get back what the value was. And I said inserted.star, but you could say inserted. And then whatever column or columns you wanted back. And this is cool too, because you could work on it.
Starting point is 01:35:11 Like for example, in a delete statement. So you could say delete from this table where blah, blah, blah. But output deleted.star. And then that way it returns back. So maybe you want to put it, you know know you want to do something else with that value maybe you want to put it into some kind of history table or whatever or if you wanted to have a you know use this output um um statement as part of a a uh what am i trying to say here? Like a return? Well, no, I was thinking of an example of like a changelog kind of scenario, right?
Starting point is 01:35:50 Oh, yeah, like a log table. So, you know, going back to Alan's order statuses, where he wants to know when the date was valid. Outlaws, order statuses. Oh, yeah, my order statuses oh yeah my order statuses um then you could have your update statement uh return uh that you know the updated dot star so that you would know what was just updated so that if you wanted to insert that into a another table for you know like logging kind of you know historical information then you could and so it's going to change you know if it's being deleted then it's going to be deleted dot star if it's inserted it's going to change, you know, if it's being deleted, then it's going to be deleted.star.
Starting point is 01:36:25 If it's inserted, it's going to be inserted.star. I think I said updated.star, but I think that's wrong, right? It's just inserted and deleted, if I remember right, yeah. Oh, no update? No, no. Update, the data that changed,
Starting point is 01:36:37 the old data is deleted, and the new data that you overwrote it with is inserted. Okay. So we'll have a link to that in the show notes, but it's a very cool thing that if you're not already using, then maybe it can be a way for you to use it. It could definitely, if you were previously doing something like,
Starting point is 01:36:57 hey, let me insert this into this record or into this table, and then let me select it back out so that I can return it back to the user. Right? Well, now you can do those two operations in one statement and be done yes oh yeah i've definitely done that and i've also done nasty stuff where like i insert to like a temp table first and then do my stuff and then use that temp table to make other decisions later on because i you know destroy the data that i need and so yeah that uh this is a much better way of doing it it's not a terrible practice depending on what you're doing with the temp table. In very rare circumstances, maybe you turn the identity off,
Starting point is 01:37:29 make your own up, and then turn it back on, and then that way you know. I try never to do that. There's cases... I feel like I'm breaking the laws of databases if I turn identity insert off. It's like changing gravity.
Starting point is 01:37:43 You wouldn't want to do it in code, i am thinking of i'm trying to think of like some examples where like in uh maybe like some initialization type you totally uh yeah like merge into scenarios where you want the ids to be very specific right totally yeah which is that's a good topic for one day do we go by uh ids or by values oh man but uh yeah we don't we don't want to go there uh it's too late i got video games to play add it to the list um so uh i guess we're up to me i actually just found this um on hacker news there is a uh github uh there's a project here this could be like a chrome plugin that lets you go to definition in gith GitHub the same way you would like a static language. So you install this Chrome plugin. And now when you're looking at a GitHub project, you can right click on like a variable or a
Starting point is 01:38:35 function name rather, and it will zip you over to the file and let you see that. And so what I do now a lot of times, if I'm just trying to look through a project figure out how something works like an open source project i'm using i'll oftentimes i'll download the source and open up visual studio just so i can navigate around it easier than trying to you know browse through those files and kind of control f and so this looks like a great way of browsing repos without having to go through that those extra steps so if you find yourself on github often this might be something to check out. That's pretty sick. Yeah, it's slick, huh?
Starting point is 01:39:08 And it looks like it works really well. I've added it. I haven't used it much, so I've just kind of done a couple samples. Huh. That's nifty. Yeah, and I haven't seen if there's any languages it's limited to or not.
Starting point is 01:39:19 I just was looking at a JavaScript project, and it worked great for that. Awesome. I mean, as well as anything works for JavaScript projects. Huh. Is it only, but it only works for GitHub pull requests? Only for GitHub, yep. Yeah.
Starting point is 01:39:36 It's a Chrome plugin for GitHub. Right, right, right. Huh, very cool. All right. Well, that brings this show to an end so with that subscribe to us on itunes stitcher and more using your favorite podcast app and be sure to give us a review on itunes and stitcher if you haven't already we would greatly appreciate it and contact us with any questions or topics and visit us at codingblocks.net where you can find all our show notes, examples, discussions, and more.
Starting point is 01:40:07 And visit us at... I did it again and I've done this several times. Send us your feedback, questions, and rants to comments at codingblocks.net and make sure to follow us on Twitter or join us in Slack and chat me up. And you can join us on Slack by going to www.cuttingblocks.net slash Slack. So that'd be it. What is this? Episode 43?
Starting point is 01:40:32 Yep. Yep. That is where I am.

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