Coding Blocks - The DevOps Handbook – Create Organizational Learning

Episode Date: November 9, 2020

We wrap up our deep dive into The DevOps Handbook, while Allen ruined Halloween, Joe isn't listening, and Michael failed to... forget it, it doesn't even matter....

Transcript
Discussion (0)
Starting point is 00:00:00 you're listening to coding blocks episode 145 subscribe to us and leave us blah blah blah and also a review that you can do on itunes or spotify stitcher wherever you like to find podcasts and listen to them i don't care i'm done i can't i can't say it anymore i'm just kidding i can't all right and uh If you go to cookbox.net, we got something there for you. You can find show notes, samples, discussion, and who knows what else. Not you. Not unless you go.
Starting point is 00:00:34 Just follow me, Clark. You can send your questions and stuff. We're off to a great start. There's probably a link. You can also follow us on Twitter at CodyBlocks or head to www.codyblocks.net. Okay, sure. Find all our social links there at the top of the page.
Starting point is 00:00:53 With that, I am Alan Underwood. No, I was going to go first. Oh, you meant that. Oh, okay, go ahead. Go ahead. I'll go second. Fine, because it's Halloween. And I'm Alan Underwood.
Starting point is 00:01:06 Oh. I'm Joe Zach. Come on. And I'm Michael Outlaw. What? What? No. No.
Starting point is 00:01:15 That was close. Gotta roll with it. Close. Close. Worst Halloween costume ever. Sorry. And that is how you intro a podcast. Well done.
Starting point is 00:01:28 This episode is sponsored by command line heroes, a podcast that tells the epic true tales of developers, programmers, hackers, geeks, and open source rebels who are revolutionizing the technology landscape and educative.io learn inand tech skills without scrubbing through videos, whether you're just beginning your developer career, preparing for an interview,
Starting point is 00:01:52 or just looking to grow your skill set. And xMatters. xMatters keeps your digital services up and running from IT to DevOps to emergency notifications, everyone needs speed, automation, and reliability when things go wrong. All right, and today we are finishing up for real the third way in the DevOps handbook. But first, a little bit of news. And it looks like I'm starting. Big thank you for the reviews very much on Stitcher.com. We have Emmerdev. Thank you for the reviews very much on Stitcher.com. We have Emmerdev. Thank you very much.
Starting point is 00:02:31 This one was not a mistake that Outlaw is reading these. Which one of you did this, Alan? Okay. I am going to apologize ahead of time, but if you've been listening to this show for any length of time, you already know what to expect. There's a train wreck coming, and prepare for it, because it's coming in slow motion.
Starting point is 00:02:55 Okay, so from iTunes, we have... Abhashik in 12. Okay. That was the first one. Now this next one though, there's like symbols in here. Okay. Okay.
Starting point is 00:03:20 So. No, that's not wrong. So, Shrykholzshank. No, that's not wrong. You weren't doing terrible. Shrykholzshank. Shrykholzshankman. Yeah, that was it. That was terrible.
Starting point is 00:03:43 That was terrible. We'll let him let us know. Oh, man. I'm sure he's mad now. Yeah. That was it. That was terrible. What terrible? I will let him let us know. Oh man. I'm sure he's mad now. Yeah. I, I'm sorry. I,
Starting point is 00:03:52 I apologize. I warned you that it was going to be a train wreck and, uh, I lived up to it. Hey, look, I was impressed that you did the strike properly because most people, if they don't know like German or European type things, E I sounds like I, I-E sounds like E.
Starting point is 00:04:12 So you actually did that one pretty well. Like you got started nice on it. Oh, so you think that's German? It looks like it. Yeah. Hmm. Is that because of all the consonants? actually it might have all of them there's a z in there the quick brown fox jumped over the lazy dog or whatever is that what you're saying this is yeah we're we are missing a cue so yeah, all right. But good try. Did we have any news this go around? Oh, so we are doing the last third way part that we said. So if you want to join in on the conversation, head to codingblocks.net slash episode 145. And go ahead.
Starting point is 00:05:03 Now finish that thought. All right, I'll finish my thought um you know leave a comment up there whatever i mean you know something and uh you'll be entered for a chance to win a copy of the book in kindle or paper or whatever you want so or audiobook or audiobook which is even better now yes totally so definitely leave a comment there. And then you had a thought. Yeah. So, so just one quick thought, cause there was like one product that like over the last episode, you know, we did the shopping spree and we kind of like all gushed over this, the,
Starting point is 00:05:34 the zoom pod track P four. But since then there has been a new announcement made for the pod track P eight. And I thought we would include a link to that as well because that thing looks pretty awesome it's basically like the size maybe not the size of a giant mixer but you know but a mixer but it's everything it's the same as the p4 everything in one except for more connections more connections and it's a touch screen. Yes. Dude, this thing is sick. It's pretty sweet.
Starting point is 00:06:08 Oh, and so the last little bit of news I'll share here is I had mentioned in that shopping spree thing, that T-display connector that would allow you to do a camera similar to the Elgato. I'm using it. It's amazing. Love it. So I actually bought it. I put my money where my mouth was. And for $70, it's absolutely phenomenal. I'm running my microphone through it. I'm running the camera bought it. I put my money where my mouth was. For $70, it's absolutely phenomenal.
Starting point is 00:06:26 I'm running my microphone through it. I'm running the camera through it. It doesn't seem to eat up any resources on the computer at all. It's pretty outstanding. Let's talk about some DevOps. Let's do it. First, real quick, this is the third way and there were two ways before it and just to recap it real quick uh the three ways were very much paraphrased the way of flow which is really about uh kind of setting up your uh continuous integration well getting work in and
Starting point is 00:07:00 out of the system right like that was part of it. Yeah. Yeah. And two was feedback. Remember we talked about like getting everybody access to information across the board. So you all kind of help things grow and basically learning to kind of monitor the work that you're doing to make sure that it's valuable and see when the problems. And the third way is experimentation, which is what we're finishing up tonight. Yep. Oh, and one other piece of news, Nate, the DBA, thank you for calling out that you were hearing more breathing and stuff. So we tried to remedy that this episode. So hopefully you'll hear a difference in not all the heavy breathing and
Starting point is 00:07:38 whatnot. And if you don't like the way that audio quality of this turns out, you can find Nate on – no, just kidding. Right? Yeah, good call. He is in Slack as our most – like a lot of the interactions we have, there are a ton of people in Slack. So head to codingblocks.net slash Slack and you can join up there and interact with a lot of awesome people. It's really weird.
Starting point is 00:08:00 It goes by at Joe, so you can send your complaints there. That's right. That's not my name. I don't know if my name is changed. Yeah, he changes it a lot. Well, that's your displayed name though, right? Yeah, that's true. Good point. So yeah, jumping into this. Back into the third way, this section we're talking about making the things that you learn capturable and shareable throughout the organization. This is a big one. I know the three of us have struggled with it over
Starting point is 00:08:31 the years. We've worked together and we always have problems with this, like always. So hopefully we'll learn something out of this and we'll tell you kind of our thoughts on it. So the first one that they had here that I thought was really interesting was use chat rooms and bots to automate and capture organizational knowledge. Oh, the best of times are the worst of times. I was not crazy about this one. I got to be honest. Really? really well maybe maybe it's because i'm not i guess it would depend on like what's the software you're using for the chat room and the bots like what are we talking about right because not all of them are created equal and some of them are like really difficult to go back and and dig
Starting point is 00:09:19 through things so i was kind of i don't know i I mean, I like the chat rooms for like the random conversations that you could have. But. So let's dig into it a little bit. And then I think we should probably talk about what you just said a little bit more and talk about the ones that we kind of like, the ones that we kind of don't. Because it's worth calling out some of our experience with this because we've worked with a lot of them. So one of the things that they call out is the chat rooms have been used a lot more for triggering actions, right? They said that one of the first companies to do this was GitHub. They had an app that they called ChatOps and they would basically integrate their automation tools within the chat.
Starting point is 00:10:00 So it was really easy. This is one of the things that I thought was interesting is it was easy for people to see how things worked, right? Like if you were going to trigger a build or trigger a deployment, you would do it in chat. And so you say, Hey, chat, chat app or whatever, or chat ops, uh, deploy something. Right. And the cool part is when you did that, it would actually go trigger that build and that, that deployment And the cool part is when you did that, it would actually go trigger that build and that deployment behind the scenes. But then all the messages would pop back into that chat. Now, the interesting thing is that means everybody gets to see how the stuff works. And that was the part that I was like, I really liked that, right? Now, one of the things they talked about is if you onboard new people, they don't necessarily have to go read a wiki about how to deploy and how to do this and how to get things.
Starting point is 00:10:49 They can actually just go look at the chat history and see, oh, this is how they move this into dev. This is how they moved it into QA. And that was really interesting. Yeah, I mean, you could just log in Jenkins, but log into your build server, right? No, but I guess there's something immediate about it. There's something nice about making everyone do their own builds, which is something that I've never really seen when there was some sort of build server in place,
Starting point is 00:11:15 usually just a few people that kind of maintain that. So I like that it kind of democratizes things a little bit, but, man, there's so much more information in the website. Oh, there is, right? There's no question that if you need more details and you need to dig into it, sure. But if you can make it like almost part of a conversation, like, hey, I want to deploy this and it gets deployed. Like that's, that's kind of, that's really nice. Right. And it fits in the flow. Now, one of the cool things was there was somebody that was quoted in the book that said, having this set up like this, it's almost like you're pair programming with somebody all the time.
Starting point is 00:11:49 Right. Because you can always look over the shoulder in the chat room and see, oh, this is how they deployed this. This is how they built this. This is how they committed that or whatever. Right. Like or this PR was approved. So it's it's interesting. Yeah, the problem that I have with it, though, is that it's so easy to lose all the detail, too. And depending on if history is being retained and for how hey, here's examples of where that was done. But they could also be using that and not realizing other consequences too. So just because they can see it doesn't mean they understand all the consequences of it. So you might be still a little hesitant. Whereas if you have like, you know,
Starting point is 00:12:46 a wiki page, then, you know, but then again, you know, wikis are where information goes to die. So how are you going to even know that the wiki is there? So that,
Starting point is 00:12:53 so that's where the advantage of it is, is that you do see some of that, but, um, yeah, there's so much conversation that can just get lost though. I mean, like think about like,
Starting point is 00:13:03 I don't care. I don't care what the platform is. It could be Microsoft teams. It could be Slack. It could be a Google chat, you know, depending on you, you, you can easily very quickly to reach a, a level where you're depending on the number of channels that you are, uh, or whatever the equivalent is that you are, um, like quote subscribed to, or, you know, whatever, uh, you know, you can just get inundated with like too much to follow, too much to follow and too much to read. And then depending on the size of your organization, you know, it's fine if there's like, you know, maybe 20 people total and you have a
Starting point is 00:13:43 hundred channels, like not a big deal, right? Because then you can have like super focused channels and have various, you know, focused conversations on it. But, you know, if you have a large, large enterprise and there's hundreds of people in each one of these channels, like some of those threads, there's no way to even keep up. You can get lost even trying to follow your own thread. Yeah, I agree with that. And I think it's worth us mentioning at least the ones that we have some experience with. So I know just working with you guys, we've done Teams, we've done Slack, and we've done Google Chat.
Starting point is 00:14:21 How would you rate those in the order of favorite to least favorite? Slack and the others. Well, and that's not, that's excluding, let's be careful though, because we're excluding all like instant messaging. That doesn't count. Right. No, we're talking chat room type thing. Yeah.
Starting point is 00:14:37 Yeah. Right. And, and, okay. So of those three, which one would I i would i say i liked the best uh slack would be at the top of that list what's your number what's your number two this i i think we're probably gonna have different opinions on this because i i'm also number one on slack man it's not even close i don't think that i don't i i don't it's not you know it's not Google that I gave teams enough of a of a go though but I I suspect that teams would be my number two but I definitely have more
Starting point is 00:15:20 seat time with Google so that's actually the same order as me. I would be Slack number one by, by a landslide. And then teams would be second just because of their integrations, right? Like they actually integrate well with their own products and everything. And third, quite a ways down the list,
Starting point is 00:15:40 even from teams is Google chat for me. Yeah. Google chat is basically text messages it's like it's nothing right it's like water and somehow it's like the fifth chat product i use from google too right yeah which doesn't help it's a separate product from hangouts and it's the same thing it's it's pretty irritating google aloe or google buzz or whatever like i don't remember all the different ones they've had now it's like no but but i guess the interesting takeaway here is that you may not have even knew really existed if you just use those things as chat platforms is they can be used for triggering
Starting point is 00:16:12 automations, right? Like there's things that you can build behind the scenes that have hooks to where you can say, hey, if you at, I don't know, deploy bot, you know, if you have something like that, then it can send a message that will trigger off a Jenkins build or a Basil type thing or whatever, right? Like it could be anything that you decide to make. So that was something that I'd never really considered that much until we started seeing these things happen a lot. And so it can be a really nice tool. I hate it. That's fair. And it also might depend though. You tool i hate it that's that's fair and it also might depend though you might also hate it because maybe the the trigger actions that we have just aren't that great
Starting point is 00:16:53 yeah that's very possible i just see that like there's a like the way i've seen is like oh there's a channel and everyone goes in there to talk to the bot and and it's just kind of a throwaway channel because uh you know there's nothing really useful there you don't really care about the stuff that you're doing. And maybe you'll see other builds failing or something that might be interesting to you. Or you can chat directly, but then it's kind of like... I just prefer the way... I end up going to the website
Starting point is 00:17:14 every time anyway. So it's just like... But maybe there's different use cases. And I'll tell you what, if you are using a chatbot and you love it and you have your reasons for loading it, we'd love to hear it and maybe we'll book. We'd be happy to send you one because I just can't advocate for it. I just don't really understand the need for it. It's interesting.
Starting point is 00:17:34 Well, so let's get into some of the other reasons why they said there might be a need for it. So they said that seeing people interact in these things causes people who wouldn't interact as much to get involved and interact more. And I can say, I've actually seen that happen, right? There are people that are typically more loners, I guess you'd call them, and you'll see them jump into conversations when they see other conversations going on, right? So it's a good way to get people involved um it says it does enable fast organizational learning the bots i'm the chat rooms not the bots the chat rooms chat yeah chat rooms yeah yeah chat rooms i do like that yeah i mean everything like there's a lot of things i love about chat the thing i don't like about chat is uh when you're working on something
Starting point is 00:18:21 and you just like oh let me ask alan or let me ask outlaw like it'll you know take five seconds they probably know this off the top of the head and you get the information it's great for you and when you're alan or outlawing this you got eight of those things and you're on a call and it's like blink blink blink blink and you don't know if it's a fire or if it's something stupid and now you're looking at those instead of paying attention to the meeting and it's just distracting and then all day long you just feel like you've got this these missiles flying at you you know you're like trying to fend off while you're trying to get your day job done. And that doesn't seem productive to me if you're constantly context switching. It's just annoying.
Starting point is 00:18:50 So I kind of – I'm trying to use chat less but email more. But it's not really been working for me very well either. So, you know. I definitely don't agree with it. Like the whole idea of like seeing people interact and causes others to interact more. I think that there might be some people that like the example that you say. But for me personally, it totally makes me become more like an introvert. Because instead it's like,
Starting point is 00:19:25 Oh, there's a thousand people in this chat room. Do I really want to like say something dumb in there? No, I guess I won't say anything at all. That's interesting. You know? So, so,
Starting point is 00:19:35 um, as I say this in a microphone and record it for the internet to listen to. Yeah. We took to you. We've got tens of users that are listeners, so we're good. We're good. All right, so yeah, that's a good take. I had thought about the other side of it.
Starting point is 00:19:56 So one of the other things that they say here, and I think this is, man, this really depends on the organization. It says that another benefit of chat rooms is they're public, assuming that you didn't make a private one. And so it can create an environment of transparency. Now, again, that kind of goes to what Outlaw just sort of touched on. And if people are truly being transparent, sure. But there might be plenty of people that look at it and be like, there's no way I'm airing this. I'm not putting this information out there.
Starting point is 00:20:28 Yeah, I do see a lot of good stuff. Sometimes someone will ask, hey, how do I do this? Someone else will answer. And someone else might chip in and say, actually, there's an easier way or you might want to check with so-and-so because they were just changing this. So that's really good and it goes to the learning and the transparency and also just
Starting point is 00:20:43 democratizes things. We've all been working from home. So if we didn't have a chat room, we'd miss out on a lot of conversations because there's things that you just kind of see happen in the background. And sometimes it's stuff that you see other people talking about that you want to hop in because you have some unique experience or something of value to add there or something that's just something that you're curious about or whatever. So it's helpful to just kind of see that stuff as if you were, like, walking by a cubicle and overheard a conversation.
Starting point is 00:21:06 Right. What do we got here? Oh, and here's one thing that I think is probably true. And this is a very specific type of room or channel that you would set up in the chat app is ops engineers are able to discover problems more quickly and they can help each other out more easily. Right. So I could totally see that if you have a channel dedicated to production
Starting point is 00:21:31 issues or something like that, and, and ops engineers are assigned to that, you know, it might be that that channel has triggers that get fired whenever a production system goes down. Right. And so it hits that channel immediately.
Starting point is 00:21:45 You're subscribed to it, so you get a ding on your phone or whatever it is that you're subscribed with. And so now you know to go in and immediately start looking into the problem, right? And if there's several of you in that group, then somebody can say, hey, I just had this happen the other day. I know exactly what it is. Let me help you out, right? So that's totally legit and can happen.
Starting point is 00:22:03 But that's going to be a targeted channel, I think. Yeah, yeah. And I got one more for you that is kind of a newer phenomenon that we're seeing. More and more often you'll see companies or organizations opening their chat rooms to the public. And so we've seen this like Cloud Native, Cloud Foundation, whatever, CNCF. They have a chat room and you can go in there. I remember we had a problem the other day. Someone went in there and asked a question and immediately got an answer.
Starting point is 00:22:28 And, oh, by the way, that was a developer on that product, Coder.com. Remember, they had a Discord. So we were in there sponsoring the show. We were messing around. There was a Discord. We can go in there. And, hey, sometimes developers were around at whatever time we were doing stuff and were able to answer questions and head stuff off.
Starting point is 00:22:43 So it's a way to kind of speak to your users or your customers that uh is really new and interesting and now i keep seeing more and more games doing it so uh you know like if you're an indie developer or small developer you might have a slack room for your game lets people find people to game with and also if they find a bug or something it gives you a chance to say like oh hey that crashed can i you can you see me this Okay, hey, if you change this one to a zero, then that'll work and we'll get a bug fix out. That's such a better user experience than this person being
Starting point is 00:23:11 in a cold, dark room with a crashed computer. Or issuing a ticket and hoping somebody will work on it one day, right? Yeah. There's some big projects, though, that are opened up like that, too. Just thinking like Kafka and Confluent, their Slack community, like Elastic Slack community. So you can find help
Starting point is 00:23:32 that sometimes it might be the actual developers that are responding, but they have these communities built around it. Oh, that's actually, so that's another point. I was going to mention Apache. Like Apache projects, almost all of them have a Slack channel, you know, and there's hundreds of Apache projects. But we've gotten asked the question a lot of times, how can I get involved? How can I, how can I play with things? Man, you want to talk about a way to get your name out there? Go into a channel of a big project, like any, pick a popular project and go in there and help people out, answer questions, right? Like somebody asks a question and if you have some experience or you want to dig into it and help somebody out, that'd be a great way to get your name out there. Cause I guarantee you, you help enough people out in a channel. It's, it's not like a name that shows up on a website that you had to get commit, not saying that that's bad, right? Like we still encourage that kind of thing.
Starting point is 00:24:27 But if you were actually interacting with people, it takes things to a whole nother level, right? Like we still have people that'll be like, do Alan and Michael and Jay-Z actually come into Slack and chat? It's like, yeah, totally, man. Like we made this like that. That was, you know, we, we did it so that we could interact with people. And, and it really does. You build relationships and a lot of your work career will be based around networking.
Starting point is 00:24:52 Like I would venture to say a lot of the reason why we're still all working together is because we networked. Right. We like to work with each other and we're like, hey, well, let's keep moving with this thing. So, yeah. Unless you're an introvert like me and then you die. Right. It helps you find people to play Overwatch with too. Right.
Starting point is 00:25:13 There is the video game friends that you get out of the deal. So, all right. Now you brought me back in. I'm sold. Right. Now we're there. So the next section was automate standardized processes and software for reuse. And so this one, we joke about it. And Outlaw already said the statement that we've said many times.
Starting point is 00:25:37 And I think we coined the statement while we were all working together is, wikis are where information goes to die. You spend a ton of time writing up documents, like excellent documentation and all that kind of stuff. But the problem is if people don't know it's there or they're not conditioned to go there and search for things first, you might as well not even been written, right?
Starting point is 00:26:00 And developers, we like to document things. We put them in wikis. We'll put them in SharePoint. We'll put them in Word documents. We'll make Excel sheets. We'll do like to document things. We put them in wikis. We'll put them in SharePoint. We'll put them in Word documents. We'll make Excel sheets. We'll do all kinds of things. And then you just kind of have this wasteland of information that nobody knows to go look for. Yeah, it stinks.
Starting point is 00:26:18 My favorite thing is readme, as we've talked about a little bit, just because it keeps it closer to the code. So it's like where you're working i mean that you you're you're speaking my my love language here joe like yeah now i mean that is my absolute favorite way of like i i much prefer that over over the chat bot like put the documentation in the wiki or i'm sorry in the readme in the readme and have multiple readmes in the repo for each of the different projects that might be in that repo. That way you can see, oh, here's how you run this thing. Here's how you build this thing. Here's how you use this thing.
Starting point is 00:26:57 So much better. Then I don't have to talk to anybody so I can remain an introvert. You know what's funny? When I was reading this chapter, they get to this point where they say the solution for this is put these processes and standards in an executable code stored in a repository. They said that and I was like, huh? Like, what do they mean? We write in an exe to put this stuff? Like, what are they talking about?
Starting point is 00:27:21 And I honestly think like as we get into this a little bit more, it's more what you just said. Have readmes. Put the readmes in there. Because the readmes are documented in your code that you're committing with your code. And that's big. Now, you've got to keep those things up to date, right? And you've got to hold people sort of accountable to do it. I mean, I know Outlaw, like, I had worked on something recently.
Starting point is 00:27:42 And you were like, dude, please update the readme. And I was like, oh, yeah, I didn't even think about it. Let me go. Let me go do that. Right. So I trust that the readme has a better chance of being remembered and updated than a random wiki that is completely disconnected from the code. Because at least the readme is beside it. And at least with the readme, there's the chance that during a code review, you could be like, hey, you changed some major things here and didn't update the
Starting point is 00:28:08 readme. There's a chance of that happening. Whereas with the wiki, it's so easy to not even know that there was one for whatever the random project was or to forget it and overlook it. So yeah, I would much prefer the read me. I agree with that. As well as like there was a, what was that plugin for VS code?
Starting point is 00:28:32 Uh, uh, it was like draw IO I think was the name of it where you could like do Vizio like drawings in VS code and then commit it in like amazing. You could have your architectural drawings right next to your readme that describes everything and all of that's right next to your code. Like, that's the way of the
Starting point is 00:28:52 future. That's how all projects should be documented going forward. Like, everything should sit together. I think it was plant.uml. What was it? Plant.uml. Oh! Plant.uml, yeah. Yeah, yeah, yeah. Yeah, so you could do it in code or in like a markup type or markdown type language. And then the output would be plant UML.
Starting point is 00:29:13 It would be diagram. That's beautiful. So check this out. Again, this is still going down the lines of like, huh? So GE Capital created a system called ArchOps or ArchOps. I don't know, but they quoted enabled engineers to be builders, not bricklayers. Now I did like that quote, right? Like, so instead of just putting little Legos together, you're actually trying to build something, right? Like you're not just piecing things together. So this gives you the tools to
Starting point is 00:29:40 do it. Now, how it did it, it didn't quite go into it deep enough. But what they were saying is you design standards into these automated blueprints. And the guy there said that a compliant, now this is really interesting. And I completely agree with this. Compliance of an organization is in direct proportion to the degree to which its policies are expressed as code. So a good example. Oh man, did you guys see this in Slack the other day? This totally, this sort of falls in place with it.
Starting point is 00:30:12 Did you see that there's going to be a tax on zoom usage in New York now? No. Yeah. So telecommunications type stuff. I believe Arlene shared it in Slack, but so this is what kind of made me think about this was when we worked at a company that was doing retail stuff, there were tax codes that were different. It is mind-boggling how many different tax codes there are for different cities, different counties, different zip codes within counties. Like it was nuts, right? But if all you have is a document saying that, hey, this county over here gets a 5% tax and this county gets a six, nobody's reading that thing. You know,
Starting point is 00:31:00 nobody knows that exists. However, if you have that in code, whether it's in a database or in a configuration or something like that, then people automatically get it, right? Like they could say, oh, use that configuration right there and bring it in and that will automatically happen for me. Whereas if it's, hey, go read this document and find the three zip codes you care about. Nobody's going to do it, right? And I think that's what they were getting at in this entire section was, if you put it in code, then people will use it, and so it's enforceable at that point. You can actually meet these compliance standards. All right. And honestly, that whole reading section, to me,
Starting point is 00:31:42 until I got to the very end where they started wrapping it all up, like I was going, huh? Like what? We write in the XEs and throwing them in there and like what's going on? But it was more about the committed things that get shared. And I think that's where we get into this next section. And this is crazy talk. And this, by the way, is why Merle had mentioned Bazel to us. So if you guys remember, and I know you do, Outlaw,
Starting point is 00:32:10 Bazel was this whole thing that was super fast at compiling because it knew what had changed, what hadn't. It didn't have to go in and rebuild everything every single time. So this is what's crazy. I'm sure that, Outlaw, you you loving this one. I'm wondering. So create a single shared source code repository for your entire organization. The problem that I have with it, though, is just within my own world that I have to live in, my own reality. And the reason why that is is because some groups want to use GitFlow for their work, for how they I know the three of us, we've, we've really come to appreciate and dare I say, love, uh, the Microsoft, I don't know a better name for it, but the Microsoft strategy that we shared, uh, you know, with the cherry pick, uh, strategy that Microsoft documented and, and, um,
Starting point is 00:33:21 you know, I, I'm just completely sold on that way. It's so much easier. And I'm like, the thought of having to go back to the merge hell of a Git flow workflow, I just dread. So I do love the idea, but I think that your organization has to come to wraps with like, you know, you need to have like a meeting, you know, come to wraps with like, you know, you need to have like a meeting about, you know, come to come to an agreement about how you're going to do it. Cause I could just see it being a nightmare in like a, you know, a get flow type process. Yeah. Not to backtrack too much. I mean,
Starting point is 00:34:00 we did that get episode years ago now, was it years ago yeah it's been years ago i will say this though and i don't know that we said it on that show we probably did changing from get flow to that cherry pick method saved easily a day or more a week per person that ever had to deal with that stuff like Like just not dealing with that merge problem. So it's absolutely, it's huge. And I get you, but let's assume that you got everybody on board. Let's start talking about some of the cool stuff here. So what they say is the single repo enables quick sharing amongst an entire organization.
Starting point is 00:34:39 So that's kind of interesting. Okay, well, maybe if you've got a small organization cool that's fine google in 2015 had a single repo with 1 billion files and over 2 billion lines of code a single repo google did this that is mind-boggling i can't i can't even cram all that in my head so go ahead joe you look like you're gonna say something i was gonna say that the kind of the main we didn't really say what the main differentiating factor was with the micro the microsoft uh recommendations that we liked so much it was different from git flow and it really uh to me the defining feature the thing that stuck out the most to me was just uh
Starting point is 00:35:20 using release branches instead of tags so what you would do is you would make your change into like a hotfix or whatever to your release branch and then merge it back into the mainline. And that was different than kind of conventional wisdom at the time, which would use tags for things like that. So you would tag things off of your mainline in order to kind of mark that release. Well, it wasn't just that. No, no, it wasn't just that. No, no, it wasn't necessarily that. It was you were creating long-lived branches in GitFlow that you merged back into master, and that would impact everybody else that had three other branches that merge their code into master. And so when you get conflicts,
Starting point is 00:36:06 you'd have no idea what was legit and what wasn't, what was yours, what was like, it was impossible. Yeah. So we would cherry pick. So the cherry pick is, Hey,
Starting point is 00:36:16 I have some changes that I needed to make it in a branch. Oh, those changes also need to be back in master. You just cherry pick those changes in the master. And then that way it's a small commit that comes along for the ride. It's it. I don't know that since. Oh, go ahead.
Starting point is 00:36:35 You don't know. Finish that hot. You don't know what I was going to say is I don't know that since we've done that, that we've dealt with a handful of merge conflicts over the past couple of years. Don't think I'm exaggerating. As the guy who would get called into those like, hey, I have a Git problem and can you help me solve this merge conflict I have? I haven't. Those calls went away when we switched.
Starting point is 00:37:03 The difference is set another way. The difference between GitFlow versus the Microsoft – literally, I think the title of the article was Microsoft's branching guidance or something like that. Right. the difference between the get flow versus the using the cherry pick strategy that Microsoft had recommended with their use of branches was that with get flow, you end up trying to solve merge conflicts. There's the, there's the very real possibility that would often happen in our experience that you end up trying to solve merge conflicts for code that you know nothing
Starting point is 00:37:44 about. You didn't author the change. You never wrote the file. You've never touched the file. Yet you now have to solve a merge conflict in that file and figure out what the problem is. And now, guess what? You're going to show up as an author on that file for something that you don't know. And maybe you're lucky and the commit change is simple,
Starting point is 00:38:04 but it can also get out of hand where it's not, especially when you start talking about like multiple branches that each changed pieces of it. And you're like, I don't know, maybe I need to take all or some of each of these. I don't know. the Microsoft strategy by using cherry pick is that you are guaranteed that you will be the author of one side of that merge conflict when there's a merge conflict. And at least in that case, you have some idea about what you changed and why. So you can at least have an educated, trying to make an somewhat educated decision in decision in trying to resolve the merge conflict.
Starting point is 00:38:50 And I say somewhat because there could still be cases where you're like somebody else might have legitimately made a change that you're like, oh, I don't know why they did that. And you got to go and figure that out. But at least you know your side of it. And with the GitFlow strategy, there's the very likely possibility that you're not. And by the way, you know, I of course remember that episode by heart cause it's one of my favorites cause all we did was, Hey, we talked about get for like a couple of hours. Of course I'm going to like that episode. So it was episode 90 and I'll have a link to it in the show notes. But yeah,
Starting point is 00:39:22 you're right. That was a couple of years ago. So almost a little over two years ago, exact, in 2018. Yep. September 2018. Good time. Yeah. So here's the crazy part. They talk about this single repo at Google.
Starting point is 00:39:39 It's used by every software engineer at the company. That's pretty impressive. They got a few. This doesn't just include code. And this is the part that was sort of interesting is it includes configuration standards for libraries, infrastructure, environments, infrastructure and environment configuration using things like Chef, Ansible, that kind of stuff. They include their deployment tools. I think we talked about this in the past.
Starting point is 00:40:11 What's the best way to guarantee that you can build thing consistently across every environment? Put the tool in there. Don't go download the tool somewhere. It's the one that you have in your repo. This is where strategies to, like, if you're going to go down this single repo for the entire company though, where it becomes imperative that you solve problems like, uh, large files. So like in a get world, you know, you,
Starting point is 00:40:37 you would absolutely have to use something like a, a get LFS, uh, you know, to store those large files as well as having strategies for like, okay, you don't necessarily need to clone the entire repo. Just clone the parts that you want, but just know that it's there if you want it. But yeah, you don't need to clone the whole thing. Yeah. As a new developer, you're not saying Git clone Google, because of the billion files. Git clone Google. And I billion files. Get clone Google, and I guess I'll go do my onboarding training for the next week,
Starting point is 00:41:08 and maybe it'll be done. Right. SVN, it was so common to have one big repository, you would just check out the folder. That was one thing that I missed the most. I know you can do it in Git, but it seems like nobody really does it. It's not common.
Starting point is 00:41:21 Right. No, you're right. They always check out at the root. So they also put their testing standards and their tools in there uh their deployment pipeline tools monitoring analysis tools tutorials and standards they have all that in there so like the read me's that we were talking about like all that stuff is in there um now please don't put binaries in your repo without using something like a Git LFS. Yeah. Oh, man.
Starting point is 00:41:46 Seriously. So if you don't know what Git LFS is, you need to – if you're working in Git and you are planning on putting binaries in your repo, you need to look into this, right? Because it's helpful. What are you shaking your head for? Just don't do it. Put it in a bucket. Put it in cloud storage. Put it in an artifactory.
Starting point is 00:42:05 Well, that's what GitLFS is doing. Yeah, it really is. GitLFS is putting it into some kind of storage bucket, and then the commit inside the repo just has a link to whatever that storage bucket is. Right. So it's not bloating your repo is basically what he's getting at. It's just a reference to it. But does GitHub and Azure DevOps support it? Azure DevOps does.
Starting point is 00:42:28 I would imagine GitHub does too. Well, yeah. If they support it, then yeah, sure, you use it. If I remember right, GitLFS was created by Microsoft, and they gave it back to the community, if I remember correctly. Before they bought them. Yeah. Yeah, before.
Starting point is 00:42:43 The only downside, though though that i will say about that that makes me kind of torn about git lfs if we could go down a git rabbit hole for a moment um is that you're then kind of locked into always having that storage available like whatever that system is you can't ever change it and if if you decide, oh, hey, you know what? We decided we don't want to use AWS S3 anymore. We want to switch to Google Cloud Storage for our buckets. Now you're like, okay, let's change every Git commit. You can't go back historically. You're not going to go back historically and change all your commits.
Starting point is 00:43:20 So at some point you're like, okay, well, here's where we draw the line in the sand, and everything from here back will now be broken because it won't be able to reach those storage buckets. Well, people don't change clouds, right? So that shouldn't matter. That doesn't matter. Especially not three times in one year. Right, yeah. That's never happened to us at least once.
Starting point is 00:43:41 Yeah. For real. So it sounds like Outlaw is pro single repo, right? We're all hearing this? Yes, it does sound like that. And honestly, as the more I've thought about it, the more
Starting point is 00:43:56 I'm on board with it, but it 100,000% depends on you having good build tools. So this is where we start getting into the nuts and bolts here is they say whatever commit goes into this thing that Google had, every single thing is built from code in the shared repo. So everything that,
Starting point is 00:44:18 that everything, all those tools that you committed, except for the, except for the tools that you committed. But basically what they're saying is no dynamic linking. But those tools are used to do the builds. They can be. But you might build those tools and then commit those tools.
Starting point is 00:44:32 Who knows? But they're basically saying there's no dynamic linking, which means that you're not using an artifact or you're not using a NuGet. You're not using any of that stuff. You are building your entire application when you need it. So what they're saying, though, and this is what makes sense, is they say, when you do this, you're ensuring that everything works with the latest code. That makes a ton of sense. You don't have to worry about transitive dependencies because, in theory, you're building it all from source.
Starting point is 00:45:04 It either works or it doesn't right it's true it's true okay okay so a couple thoughts here yeah a couple thoughts here number one because like you know joe's hating on me for the repo for the mono repo thing so like i mean there was a type of time where i was like you know i wanted small projects for even thing but i have kind of like come around to the mono repo thing over the recent years. But, you know, it's hard for me to take the full stance that they're taking here in the book about like not using like an artifactory, for example, because the reason why, like, are we talking about your things like the things that you've built?
Starting point is 00:45:50 Or are we also including like, hey, anything that you ever get from an NPM, I want you to cache it in your own repo and and never have to go out to that because then it's kind of like, well, dang, like that now becomes a mess, right? Like you have to, you know, own that. And that's the beauty of something like an artifactory where, you know, your entire organization, you can cash that, that like NPM package, right? And, you know, everybody can reference that one thing. And by the way, you could do security scans on, you know, or, or, you know, to make sure like, uh, like even license checks to make sure that like, Hey, everything that we're using is of the correct license. So I kind of with Joe, like I like artifactory for some purposes, you know, for some uses, like, uh, I don't know that I want to commit to all third-party stuff can't be in something like an Artifactory.
Starting point is 00:46:52 You know? Yep, I know. But they're saying – I hear you. I hear you. If it can work for somebody the size of a Google, then I totally get it. For every Google on the planet where it's a company of, you know, thousands of purely a company made up purely of engineers, fine. But for the average retail company out there, you know, for the Nike, you know, and Adidas and companies like that that need technology in their world, but also they have designers and people that know fabric and stuff like that.
Starting point is 00:47:33 I don't know. I could just see where they're – it's going to be like they don't have the same resources to make everything in the same repo like that. So they're going to use an artifactory for some of their needs and things like that. So here's the only thing, and this is where this discussion actually came up after we talked about this several episodes back. I don't remember exactly.
Starting point is 00:47:57 I think it might've been Merle who had brought this up was one of the big reasons not to pull from an NPM or some public Maven repo or something like that is security, right? So you mentioned that you can have your own artifactory and you can have plugins that do security scans and all that kind of stuff. How many people actually do it, right? So to your point, yeah, sure, you can have that stuff cached, sure, you can have all that. But if you're grabbing something from a public repo, do you really trust it? Is there any way to trust it? Now, this went an extra step and said, look, we're not even going to trust stuff we have in our own artifact.
Starting point is 00:48:36 And not trust meaning that maybe it's not secure. They just said, no, we're going to build it from source because if we build it from source, we know that it works straight up. So I don't know there's merit to it, but I'm also with you. Like if you don't have an organization full of hundreds or thousands of people that can do this stuff and keep it running and keep it maintained and all that, then this is kind of a pipe dream.
Starting point is 00:49:01 Yeah. So, okay. How about we say this? Um, if you do everything else in this book and you're just bored looking for the next thing to do and even though you really like your art factory and it's been working great for you then you know leave this one for last right i mean look i like it because
Starting point is 00:49:19 the very next thing they said was this by building off by building everything off a single source tree, you eliminate the problems you encounter when you use external dependency management systems like Artifactory, NuGet, etc. We've talked about the transitive dependency problems, right? Like, dude, even RabbitMQ still comes to mind as one of the most painful things I've ever had to use from NuGet, because even with the proper dependencies in there, it just failed constantly. Like we had Outlaw. I know you remember this because we spent like a day trying to figure out what in the world we needed to do. And it had all these weird dependencies that it said it had, but it didn't have. And it was just odd. And a known problem.
Starting point is 00:50:02 And a known dependency issue with MSBuild that complicated it. So ridiculous. So you get rid of all that. If you build from source, you don't have these problems, right? Like if you build from source, you have exactly what it is that you need. So it sounds amazing, but it's also not a small undertaking, right? Yeah. So Asterix, it's also not a small undertaking, right? Yeah. So, so asterisk, it's not for everybody.
Starting point is 00:50:29 Yeah. How about that? Not for most, but if you could do it, awesome. You know, the Facebooks of the world, the Googles, the apples. I mean, there's, there's a lot of companies that can, that can, you know, that can have the means to do it. But I could also see examples like what's a cruise line? It starts with a C. Carnival. Carnival. I can see a Carnival cruise line. They might not have the resources to
Starting point is 00:51:00 do that. Right? Right. I don't know. Going back to it, we mentioned it briefly is it's very dependent whether you would even attempt this is so dependent on your build type systems right like for example if the only thing you have is maven and you're building off that you would never do this because you would spend the rest of this lifetime melting the polar ice caps trying to get a build to finish. Right. Yeah. Whereas you would need something like Basil,
Starting point is 00:51:28 which, um, Merle is the one who pointed us at it. That's the thing that was based off the Google build system that allows it to do things so super fast because it knows what it needs to do. So if you ever decide to go down that route, there was one super awesome point though though, about this that when they were talking about Google, if I recall correctly, Google was the company that they were talking about at the time, where they were also talking about
Starting point is 00:51:55 standardizing on the languages that you use. Oh, that's further down. That's not in here. That's further down. We will get to that come back we will get to that okay so hashtag teaser and it's alan's fault there we go um put a pin yes we'll pull that off the board in a minute um so the next one was spreading knowledge by using automated tests documentation and communities of practice, whatever that means. So the sharing libraries throughout the organization means you need a good way of sharing expertise, right? Like this is kind of what we're talking about.
Starting point is 00:52:33 I love this one. Love this one. Automated tests are a great way to ensure things work with new commits that are self, and they are self-documenting. I don't know when I first came across this. I can't remember exactly what it was, but I remember there was no documentation on this. It's probably some of my code. Actually, it was a public one.
Starting point is 00:52:56 I probably wrote it publicly. It was the unit of work repository pattern. That's what it was. Actually, Andre is the one who turned me on to this thing years ago and they had nothing for documentation. They basically said, go look at the unit tests. Dude, it was the most amazing way to learn about it because you actually got, you could almost copy and paste the code, right? You could look at it and see how it was supposed to be used. So you didn't have to read a document about it. You could look at it and see how it was supposed to be used. So you didn't have to read a document about it. You could look at it and use it. And it was like, oh, oh, that's amazing. And it's tested. So it's like the perfect way of documenting and giving you something useful.
Starting point is 00:53:36 You can take off and do something with, I don't know, you guys' opinions. Would you, I mean, I, what am I going to say about unit tests that you don't already know? I mean, you know I'm a fan. Yeah. Yeah, I think it depends on how big the project is. If it's a huge project, like I don't want to look at the unit tests for Windows to see how it works. Right. Yeah. But it's never going to be like, Hey Joe, go like,
Starting point is 00:54:07 go learn how to use windows by looking at the unit test. Right. It's going to be like, Oh, Hey, look at, go figure out how a process management is done or pro task switching is done.
Starting point is 00:54:18 Right. Right. It's going to be something like very specific like that. I mean, the stuff I'm going to docs for, it's like, well, I pushed this button and the end result didn't happen.
Starting point is 00:54:26 So it's, you know, it's almost always an integration thing. And I just always think about unit tests being so small. So to me, it's like, yeah, if I want to know what the specific rule is, like, is blank allowed or not great for unit tests. If I want to know why, you know, something didn't work, then I know. There still could be an integration test in the test suite, right? Like there's nothing that says that you couldn't have that. So, you know,
Starting point is 00:54:50 I just put examples. Can I just get just like, give me like 10 examples on how to use your functions. But that's kind of what I'm saying that, that I really appreciate is the example could be an integration test that you could basically just go and copy and paste that code. Because if it's done that way, I'm not saying that it always is,
Starting point is 00:55:10 but you know. I like when the documentation is checked in the code. So if someone sees an error in the documentation, they can just check it into Google or the websites generated from it. Elastic's really good about that. Elastic.com you can go to the documentation for any version of Elastic, make a about it. Elastic.com, you can go to the documentation for any version of Elastic, make a
Starting point is 00:55:26 change, and PR it. Oh, dude, same thing with Microsoft Docs. They're amazing. Yeah, it's fantastic. Yeah, like every once in a while, depending on the site, you'll see a little link. Sometimes they'll be like, hey, see a mistake? Submit a PR. So,
Starting point is 00:55:42 along the same line with the testing as documentation, they say, if you do TDD, you basically turn your tests into up-to-date specifications for a system, right? Like it's self-documenting if you're doing that that way. Um, and we already said, if you want to look at how to use it, just look at the test suites. Um, now this is where things get interesting. And we've actually had conversations internally as we've worked with each other over the years. They say, ideally, you want to have one group that's responsible for owning and supporting the library. Man, I can say from experience, I completely agree with that.
Starting point is 00:56:17 If you don't, it's just chaos, right? You have people in there making changes that don't know the entire thing well. Or they, I don't know, man. It's just so easy for things to get dirty and out of hand when there's not somebody sort of taking responsibility for it. Yeah. And if you find yourself, you know, I'm kind of like playing devil's advocate with myself because I was trying to come up with like a counter to it. But then where I'm landing is if you find yourself in the situation where you're like, oh, but I really want these other teams. Like maybe that thing is becoming too much of a,
Starting point is 00:56:55 uh, like, like, like it's use is becoming too broad and you need to break it apart into more specific things. It's so that it, you don't have that many teams trying to manage it and own it and commit to it. And so the, the really the case that was coming to mind is the database, right? Because it's so easy to just say like, Oh,
Starting point is 00:57:20 well, uh, you know, everybody has a need for the database, but it's really like, Hmm, do they, do they all have a need for the database or do they have a need for a database? Right? And maybe they should have their own database that they're getting data in. How they get the data in or out, like, you know, let them, like, not have a dependency on your needs for the database.
Starting point is 00:57:42 Right? And, yeah. So that's the example that, you know, the big one that came to mind. All right. So the next one that they say, and this one,
Starting point is 00:57:54 this one, your mileage may vary. They say, ideally you only ever have want to have one copy of that thing out in production anywhere. Yeah. So we've all worked on systems that are like, you know, uh, websites or online or e-commerce type things. Okay. It's easy to do that in that type
Starting point is 00:58:11 of world. When you have software that gets shipped to customers, you know, think, think about if you're somebody that writes TurboTax, right? You can't control that, right? Like that's not going to happen. So, so obviously your use case depends on it. But if you can control it and you can make sure that you always have the latest one out there, that's ideal, right? Because then you know that this thing is tested and working with the latest stuff. Yeah, I mean clearly this was written from the frame set of a website and not like a product where it's like you know oh hey uh we're microsoft and we have this little product called windows and you know there might be a whole bunch of different versions or even like you know think of like android or ios like you know there's concurrent
Starting point is 00:58:54 versions that are out there that you know sometimes you might have a security fix that needs to go in each of those so it's definitely that that comment is very web centric in my mind. Cause even if you were doing a web API that you were making available, you're going to have to support multiple versions of the, of an API. You know, once you put it out there in the world. Right.
Starting point is 00:59:17 Hey Joe, what'd you think about this next one? Uh, owner having, uh, the owner being responsible. Yeah. Uh, migrating everybody
Starting point is 00:59:27 uh you know i don't know i don't i mean it makes sense to me you publish it and people can upgrade when they want but then you also don't want to maintain the old stuff forever i don't know it's like it seems like such a weird rule to me to go after. It seems like such a big it depends. To me, the situation I'm in right now, heck no. Heck no. And if we're dealing with microservices, that's the whole thing. If it's a microservice, no, I don't want to go migrate anyone. That's the whole point of breaking this stuff apart.
Starting point is 01:00:04 If it's a modern repo, then i have to make changes yeah that is to me it makes sense that i'd be responsible for making sure just like by calling it a library i think about being a kind of a detached module so uh i don't know it just i would rather not yeah i mean what they're saying here is if you make changes and you upgrade it, then you're responsible for making sure everybody's upgrade goes smooth. You're saying you kind of don't love that. Yeah, I mean, if it's a breaking change, I guess it depends. When I hear, right, yeah, it shouldn't be. But sometimes you bump that major version and it is, and that's fine.
Starting point is 01:00:41 But I don't know. It just seems weird to me. I don't really think about libraries and migrating anyway. The way I interpret this, though, is it's really just another way of saying you have to remain backwards compatible. Any new things that you're introducing have to remain backwards compatible. You can't just immediately rip off the band-aid. You have to remain backwards compatible and you have to like, you know, you can't just immediately rip off the bandaid. You have to like iterate your way towards like, Hey, we're going to
Starting point is 01:01:11 introduce this change that's backwards compatible. And then, you know, another change in like slowly and now, you know, another two or three versions later, it's like, okay, now that other thing is no longer available because we've moved the whole audience along with us. That's the way I interpret that. It depends, man. If it's an open source
Starting point is 01:01:35 project and nobody's using it, then who cares? If lots of people are using it and you want to make breaking changes, like you're doing the Python 2.7 to 3 thing, like just break it. Sorry. Smash it. We stopped supporting 2.7 in 2020.
Starting point is 01:01:52 And that's it. You know, I think you got it. You can't be. I'm glad. I should say I'm glad whenever someone like Microsoft particularly is backwards compatible forever. That's great. I love that. I can play like ancient Xbox games on an Xbox today.
Starting point is 01:02:06 Microsoft, you can, you know, upload, you can like upgrade from the Windows 95, whatever, and still play, you know, SimCity, the original version, OG. That's great as a user. But as a developer, like, oh, I don't want to have anything to do with that. I don't want to have every decision I make about how things should be tempered by how things are. If at all possible, I want to make the best decisions for today and tomorrow with as little consideration for the past as possible.
Starting point is 01:02:36 So you were Google. You were breaking everybody from Angular 1 to 2 is what you're saying. Yeah. Yeah. You know, it sucks. We messed up. But that's how it is. Yeah. Live and learn, you know, it sucks. We messed up, but, uh, that's how it is. Yeah.
Starting point is 01:02:46 Living there. And that's how we get Pearl six. All right. So the last two bits on here are, Hey, this requires to have the consumers to have a good suite of automated tools, right? Like if you're dependent on some modules out there,
Starting point is 01:03:00 you want to test your stuff so that when, when those modules upgrade, you know if they're still working or not. And also, it's a good idea they put to create chat rooms for each library so that if people have questions, they can hit you up and be like, hey, you know, I see this module change. It's not working. What's going on? So not a bad idea. Let me ask you this question, though, related to the chat room idea, especially like a chatroom per library. Like, it's almost like tools like Slack, for example, like these kind of chatrooms, have replaced the forums that we used to have.
Starting point is 01:03:36 Right? Which one's better, though? Because, like, with the forum, it was much cheaper to, like, have that archive history forever, right? And to have conversations that were much more specific and on topic than it is in the chat rooms. Or at least that's my opinion. Well, I don't know that the forums are always on topic, but it depends, right?
Starting point is 01:04:11 Like if you're talking about the free Slack, totally. It's so ephemeral that it's irritating at times. However, if you're using paid Slack or if you have G Suite for your business, or if you've got Microsoft Teams, that stuff is actually archived and searchable for quite a while. So I think I like it. I think I do like it better than the forums because I'd even tried out setting up a forum and a knowledge base at a previous company and people just, I don't know, chat rooms, people like the immediate interaction is really what it boils down to. That's the thing.
Starting point is 01:04:46 There's the immediacy there. But you do have a better archive strategy. And you can have search capabilities in either, but it just feels like it becomes more natural in the form. I don't know. I agree. Yeah. This episode of Coding Blocks is supported by command line heroes command line
Starting point is 01:05:06 heroes is a podcast that tells the epic true tales of developers programmers hackers geeks and open source rebels who are revolutionizing the technology landscape now we got a sneak preview of season six of command line heroes and season six focuses on black technologists and here's what we thought have you ever heard of dr gladys west so i hadn't before the episode one of the episodes i listened to but she was a mathematician who worked on the models and data analysis that paved the way for gps and this was huge at the time it happened i mean computers were just in the infancy infinite in infancy and precision was paramount there was a lot of work that had to be done by hand and
Starting point is 01:05:48 dr west was responsible for making sure that things were done right it was just a great story about an interesting technology and something i had never heard before so definitely someone to look up and gotta mention too the art for the episodes is fantastic it's a it's an action hero of dr dr glass west and it's just super cool. You just got to see it. Very nice. Yeah, one of the other Sneak Peek episodes focused on Jerry Lawson, who, if you didn't know, pioneered cartridge-based systems
Starting point is 01:06:15 at a time where all games were computers themselves. So this was a really inspiring story of a man who dedicated his life to innovating and making changes that have major impacts on the world of software ever since he introduced the system back in 1976. Right. Like, I know the three of us probably spent a little bit of time playing cartridge based games growing up. Yeah. And this guy did not take no for an answer. It was a great episode.
Starting point is 01:06:40 Yeah. Yeah. I mean, like, who didn't save the princess in Mario once or twice? Right. And then try to, like, see how fast you could save the princess, you know, in three lives. In only three lives. There was no save the game, let me come back to it tomorrow. No.
Starting point is 01:06:55 All right. That's right. So, yeah. So, search for Command Line Heroes anywhere you listen to podcasts, and we'll include a link to Command Line Heroes in our show notes. And our thanks to Command line heroes for their support. Hey, Hey, Hey,
Starting point is 01:07:07 uh, your favorite Jay Z here, uh, asking again for a lovely review from you because we need them desperately. It really helps us out a lot. Um, you can Google it. Well,
Starting point is 01:07:19 also, you know, I'm happy to just tell you that they're very meaningful and helpful for us and, uh, have kept us going for a long time. So if you could, go to codingblocks.net slash review and we try to make it easy for you. There's links, Stitcher, Podchaser. I don't think you can do it in Spotify yet.
Starting point is 01:07:42 But if there was a way to do it in Spotify, there'd be a link on codingblocks.net slash review you head there just click a link leave a view and uh give a shout out hey hey is anyone else disappointed though that jay-z didn't start it with something like uh hey this is uh jay-z and uh they don't know this but uh you know if we get like seven new reviews next time, I'm going to get a tattoo. I was a little upset. That's what I was waiting for. There's no more room for tattoos. Yeah. Well,
Starting point is 01:08:11 I mean, you know, yeah, all covered up. Yeah. It's a nice sleeve. You got there. Um,
Starting point is 01:08:18 you got an idea for what I could do. Uh, leave it in a review. Sure. There you go. Yeah. Well, I mean, you might want to put your prison break plans
Starting point is 01:08:28 on Pat Fugelberg. That's right. Or your love of Drake. Whichever one comes first. It's the Sprite guy, right? What did you say? It's the Sprite guy. He's all like, Sprite, Sprite! That's the one you know who i'm talking about yeah okay yeah uh shaking my head sprayed a lot okay yeah
Starting point is 01:08:58 all right um all right well with that uh we will head into my favorite portion of the show. Survey says dad jokes. All right. Pick a number between one and three. Wasn't that hard, guys? Pick a number between one and three. Nobody ever does. No one ever does.
Starting point is 01:09:22 They always do the boundaries. Right. Two. Yeah, two. I'm down with two. Okay. So this joke is from Mike on our Slack, and he says, All day I drill holes in metal and bolt them together.
Starting point is 01:09:35 At first it's boring. Then it's riveting. That's pretty good. I got a bunch of them. I got, like, got a bunch of them. I got a whole bunch of them. They're not going to get it. They're dad jokes.
Starting point is 01:09:52 They're quality dad jokes. So I've set the bar, and that's where we're going to stay for the rest of the episode with them. That was a good bar, I thought. I thought that was a good bar. Yeah. Multifaceted one there, that one was. Yes. Yeah. Multifaceted one there, that one was. Yes. Okay. So, a few episodes back, we asked, do you eat at your desk?
Starting point is 01:10:14 And your choices were, yes, you don't eat at home, too. Four, no, never. My keyboard is a shrine to purity. Or, no, wait, My keyboard is a shrine to purity. Or, no, wait, why? Do you have something? Oh, you know what? Did we add a fourth one? We did, didn't we?
Starting point is 01:10:35 Oh, yeah. We did add a fourth one that I forgot when I put this here. And the fourth one was, yes, but only after my desk is wrapped up like Dexter's kill room. Ah, yeah. That was, which, uh,
Starting point is 01:10:52 which after, you know, my new or my new, uh, moon lander comes in, that might have to be the way I treat that keyboard. Dude. I,
Starting point is 01:11:00 I'm so excited about that. So, uh, yeah, don't be bringing any food around my moon lander. And that's the quote of the episode. All right. So I think Jay-Z went first last time.
Starting point is 01:11:13 So, Alan, how about you go first? Which one do you think is the answer and by what percent? Man, I'm going to say yes. Don't you at home too? And I'll go with 35%. 35%, okay. Jay-Z? Wrap it up like Dexter.
Starting point is 01:11:35 No, just kidding. It's don't you eat at home 40%. Oh, man. The disappointment in Alan's voice was so genuine. You thought you were going to win this one. You thought you were going to win. So Alan says, yes, don't get it at home with 36% of the vote. I said 35, but that's fine.
Starting point is 01:11:58 Oh, 35, 35. No, no, no. I'll be honest with you. 35, I'll be fair. 35% of the vote. He's really hoping that Joe overshoots it. And Joe says, yes, don't you eat at home too, with 40%. And the answer is, yeah, don't you eat at home too?
Starting point is 01:12:21 Yes. What's that percent? Lay it on me. Hook it up. Come on, me hook it up drop it like it's hot 75 percent whoa hey people walk away from your desk i know we all do it that's that's where you eat your lunch right and breakfast like that's where you eat your lunch, right? And breakfast. That's where you eat. The majority of your meals are there, so that should really be the table. Yeah, that's so sad. That's the reality.
Starting point is 01:12:56 Come on, man. I've seen you eat at your desk. Don't even talk to me like I'm an anomaly here. Oh, no. I absolutely eat at my desk. I hate it. I hate it when I do. I don't like it. Yeah. Yeah. I'm an anomaly here. Oh, no. I absolutely hate my desk. I hate it. I hate it when I do. I don't like it. Yeah. I'm with you there.
Starting point is 01:13:11 I like it from the efficiency point of view, but I hate I want that time away just to kind of reboot my brain. Yeah. And so I do hate it. And it always makes the rest of the day feel miserable. Oh, it's so long. Yeah. Yeah. And so I do hate it. And it always makes the rest of the day feel miserable. Oh,
Starting point is 01:13:28 it's so long. Yeah. And you see the people that do it, like, you know, like in an office setting, they're like, they don't leave the office for lunch.
Starting point is 01:13:35 They eat there and you're like, man, I get it that you like are going home probably, you know, 30 minutes earlier than I am. But, oh man, really?
Starting point is 01:13:43 That sounds awful. Like, I'd rather have, I'd rather have a few more minutes to let my brain reset. Going to lunch is the only reason to go into an office. That's the only reason you would want to go into an office. Agreed. Yeah. Totally. All right.
Starting point is 01:14:00 So pick a number between one and three. Two. Again, two. Two, yeah. All right. All right. Also from Mike, he says, what did the baby corn say to the mama corn? Where's popcorn?
Starting point is 01:14:21 Oh, geez. Oh, shucks. Oh, shucks. Oh, shucks. Oh, shucks. Oh, shucks. That was a good one. Okay. So for this episode survey, Super Good Dave said, hey, how about you ask this? So this is a two-parter survey, which will make it interesting.
Starting point is 01:14:43 The question is, how often should you update your resume? And your choices are, once a year, any longer than that and I'll forget everything. Or, as often as I remember, might as well do it while it's on my mind. Or, right before I start the job search, no point wasting my time otherwise. Or lastly, wait, you make it sound like I'm supposed to be updating that thing. So that's how often should you update your resume.
Starting point is 01:15:14 But then the second part is, how often do you update your resume? Cool. And your choices are, once a year. Any longer than that, and I'll forget everything. Tell me if these sound familiar.
Starting point is 01:15:30 Or, as often as I remember, might as well do it while it's on my mind, or right before the job search. No point wasting my time otherwise. That's a great question. And lastly, wait, you make it sound like I'm supposed to be updating that thing. Man. That's good. You really need to cater your supposed to be updating that thing. Man. That's good. You really need to cater your resume to where you're applying.
Starting point is 01:15:50 So there is a good case for updating it right before the job. But also, if you haven't done it in years or even a year, oh. But there's also a case to be made, though, that maybe it's the cover letter that should be more tailored. I don't know. You should do both. You should do both. Yeah. So let me tell you, I could make my resume sound very different.
Starting point is 01:16:18 That's a couple of years. Let me tell you, all DevOps, all the time. Nope. Nope. Just kidding. Streaming extraordinaire. Nope. Nope. Just kidding. Dot the time. Nope, nope, just kidding. Streaming extraordinaire. Nope, nope, just kidding. A.NET person.
Starting point is 01:16:28 Nope, nope. Nothing but Python and machine learning. That's right. Just nothing but help desk support. Or I run the Git command line. Yeah. All right. Pick a number, one to three. Yeah. All right. Pick a number.
Starting point is 01:16:46 One to three. Two. Man, always with the two. All right. Mike again. Mike again. Why can't pirates finish the alphabet? They always get lost at C.
Starting point is 01:17:07 Oh, that's good. That's really good. Jeez. Oh, man. Okay. Okay, you win, Mike. Mike or G, right? Yep. You win, Mike or G. The mini-figs.
Starting point is 01:17:23 Anyway, side note. Inside baseball. Best mini figs. This episode is sponsored by Educative.io. Educative.io offers hands-on courses with live developer environments all within a browser-based environment, so no setup required. Our favorite kind of learning. That's right. And with Educative.io, you can learn faster using their text-based courses instead of videos. Focus on the parts you're interested in and skim through the parts that you're not. Now, I went to start a machine learning course I had eyeballed a
Starting point is 01:17:56 while back, and I realized there was a whole big giant path set up for Python analysis and visualization, data analysis and visualization. It had had nine different modules which is kind of like nine different courses and it had dozens of playgrounds in each one now i looked at one that had 54 playgrounds in the processing the data module and if you're not familiar with the the playground is it's basically like a little area where you can type in the python code and hit run and get your results there so not only do you it saves you some typing when you don't want to but you can just get right to the matter and start typing in there and seeing that stuff actually execute, which is really cool. So no messing with environments. No, I've been reading a book recently that has been a pain because the versions in the book are old and that's the kind of stuff
Starting point is 01:18:38 that you don't have to deal with at all. It's all just browser-based. So it's fantastic and I definitely recommend it. Yeah. And, and, you know, going back to what Alan said a minute ago with the way that, uh, you know, where you can skim through the parts you want, like this isn't a video that you have to like go and scrub through and be like, Oh, which part was, where did they start? The part that I'm interested in those 54 modules that Joe just talked about. If you're like, wait a minute, I already know these first 27, like fine, skip to the ones, you know, and, and, you know, while you're there, be sure to, we've talked about them in the past in regards to the Grok in the Interview series. So, like, be sure to check out, it's actually one of their best-selling interview prep series, Grok in the Interview prep series.
Starting point is 01:19:14 And they have courses like Joe's favorite, Grok in the System Design interview. Yes. As well as Grok in the Coding interview. Yeah, and their newest edition is Grok in the Coding Interview. Yeah, and their newest edition is Grokking the Machine Learning Interview. And it focuses on the system design side of machine learning by helping you design real ML systems such as ad prediction systems.
Starting point is 01:19:33 It's the only course of its kind on the internet. So visit educative.io slash coding box to get an additional 10% off an Educative unlimited annual subscription. But hurry, because they don't run these deals very often. So that's educative.io slash codingblocks to start your subscription today. All right, so continuing where we left off here, the next thing that we're going to talk about is design for operations
Starting point is 01:20:00 through codified non-functional requirements. And this goes back to something we talked about previously. If developers are responsible for any incidents that come up from their applications, those applications are going to start getting designed better for operations, right? Because you're going to want to know how to fix these things and make them run. Yeah, for sure. And the opposite, I imagine, is true. If developers just chuck that crap over the fence, then it's just going to decay.
Starting point is 01:20:27 It's going to get worse, be harder to maintain. Yep. So if we design our systems for faster deployment, better reliability, and this able to detect problems, and also better degradation, everything's just going to get better, right? And this makes it better for operations and everybody else that's handling these things. But what are non-functions? You want to take these, Mike? Oh, well, it's not non-functional, but like the non-functionals really, right? Yeah, non-functional requirements.
Starting point is 01:21:01 We've talked a lot about metrics and telemetry, production telemetry here lately. The ability to track dependencies, the resilient and gracefully degrading services is another one, as well as forward and backward compatibility between versions. So this is what I was talking about before. And then the ability to archive data to reduce size requirements and the ability to search and understand log messages,
Starting point is 01:21:32 the ability to trace requests through multiple services. And we've talked about how, you know, there's services like, or packages like Jaeger, for example, where you can like add tracing. We've talked a lot about how Datadog has the ability to like include tracing through all your different requests, through all the different services. You can see how it goes through. And then the last one here would be centralized runtime configurations.
Starting point is 01:21:58 And I have one quick definition to sum all this up. To me, non-functionals are all the stuff that you want to do that your boss doesn't want you to do that's pretty accurate yeah so all those things kicking the can down there all the things that like it punted on that aren't quite good enough all the things that you just like you wish were better but uh it's hard to find the time to squeeze in but you know it'd make you more productive those are the non-functionals so true. Or it's all the things that you wish you had whenever you're trying to research a problem. Yeah. Why is this not working?
Starting point is 01:22:29 I don't know. I wish we had better logs and telemetry and tracing. Yeah. I would much rather work. I'm very happy to work on this stuff. Someone's like, hey, would you like to add this new feature that's going to increase business by 15%? Or would you rather change the logging format? Sign me up for logging. Oh man. All right. So the next part we got here is build reusable operations, user stories into development. So what they say, this is kind of
Starting point is 01:22:59 interesting. What they're saying is when there are things that need to be done, but they can't fully be operated, we need to make them as repeatable and deterministic as we can. And so you do that by automating as much of it as you can. And then the rest of it, you document so that others can pick it up easier. Right. And then they also say that automation for handoffs is helpful. Now, what they, what they mean by this is like using, uh, workflows. So something like a JIRA service now. So just think about, I think in the, uh, in the story, uh, what was the Phoenix project they talked about in that particular story, like somebody goes to get a new laptop, right? Well, there's things that have to happen when you order a laptop. You create a ticket, a laptop goes in. When the laptop arrives
Starting point is 01:23:51 at the building, then that's going to take off another piece of the flow, which is, hey, somebody needs to pick this thing up, install the OS, install the necessary software, then that's going to go down the line. So we're just talking about automating the workflow so that you know where it is in the process. Yeah. But I mean, like think about like our sponsor X matters, right? Like their capability of like, Oh, they detected there was a problem. They can automatically spin off a Jira or spin off a channel in Slack. And then you can have a specific conversation about it. So like that, that kind of automation to like, uh, those problems, I mean, that's, that's, that's their wheelhouse. Yeah, absolutely. It's, it's all about improving the flow of information is really what this is. If you can't automate it, make it to where it's
Starting point is 01:24:38 easy for people to pick it up and move with it. Um, they also say, and this is really important by having these workflows and these handoffs in place, it allows you to start measuring how long these things take, right? Like before, you're probably blind to it. Like how long does it take for a laptop to be provisioned and handed out to a user? I don't know, right? But if you have these tickets in place that say, hey, it moved from this point to this point, it took a day. You know, this one took two hours.
Starting point is 01:25:06 This one took three days, whatever. Now you can start planning out for future things that need to happen. All right. So the next one we have is go ahead. Well, I was going to say, I feel like this is where in like the Phoenix project,
Starting point is 01:25:22 Brent was always in the way. And, and, you know, they weren't able to know like how long things were. in the Phoenix project, Brent was always in the way. They weren't able to know how long things were taking. Actually, though, I say that, and it was actually the Unicorn project that I'm thinking of, and it wasn't Brent. Have you read that one yet? Or listened? I have not that one.
Starting point is 01:25:42 I'm trying to remember which person you're talking about. I mean, they had a hard time spinning up the environment and provisioning. It was major. The main character, yeah, but even getting the laptop, remember? Remember how long it took her to get her laptop? That was the Phoenix Project, I thought. Did they repeat the story in the unicorn? It was different in Unicorn.
Starting point is 01:26:03 Unicorn was much more about like okay i'm starting today like where's my stuff how long does it take it how do i get the environment so i need like how do i get access to everything i need it was just like i don't know maybe you can find a wiki somewhere oh you can't you don't have access to the wiki well maybe start there oh no actually first you need to get you set up an active directory yeah right i forgot i forgot that the phoenix project also had that storyline with the laptop where he was carrying around a laptop from like five
Starting point is 01:26:29 years ago. It was like eight pounds too heavy and held it together with duct tape. Yep, that was it. This episode is sponsored by X Matters. X Matters helps enterprises prevent, manage, and resolve technology incidents. X Matters' industry-leading
Starting point is 01:26:46 digital service availability platform prevents technical issues from becoming big business problems. Large enterprises, agile SREs, and innovative DevOps teams rely on its proactive incident response, automation, and management service to maintain operational visibility and control in today's highly fragmented technology environment. Hey, so what's all this mean, right? So we actually got to take a bit of a deep dive into their platform, and it really does enable the ability to react to events much faster than you ever have in the past. So I know we've all been there where we've had issues, you found something wrong, and before you could even get started, you need to create Jared tickets, you need to set up meetings, you had to get all the communication lines open, right? What if you could automate all that? That's what X Matters does for you. It takes care of all the
Starting point is 01:27:35 time-consuming tasks that you typically have to do to even just get the ball rolling. So now you can focus on the items that actually need your attention and have all the tools that work for you instead of against you. Yeah, it is so cool what they have. So let's say that whatever your flow is or when a problem happens, what do you want to have your organization have to do, right? So they have this flow designer that is a drag-and-drop interface, and there's a ton of built-in integrations. So like Alan mentioned, the Jira integration, right? Like whatever your ticketing system is. Let's say, you know, the website is down and you immediately want a Jira ticket.
Starting point is 01:28:15 Sev one opened up and assigned to certain people, whatever. That's cool, right? But they go a step further. They have integrations that actually take it a step further. So unlike just a pager system where it can be like, oh, hey, let somebody go and ping Jay-Z because he needs to restart the website. Instead, what if you were to create a Slack channel specific to this specific problem with whatever the ticket number was? And now everybody who needs to be part of it could be added to that channel in an automated fashion. Right?
Starting point is 01:28:48 Right. You don't touch anything. It does it all for you. It's so cool. It's like, this is DevOps on steroids for incident management. Yep. And you can automate on-call management.
Starting point is 01:28:58 It replaces inaccurate high maintenance spreadsheets with easy to manage on-call schedules, groups, rotations, and escalations across devices for targeted alerts. So from IT to DevOps to emergency notifications, everyone needs speed, automation, and reliability when things go wrong. Keep your digital services up and running today with X Matters. Learn more at xmatters.com. That's xmatters.com, X-M-A-T-T-E-R-S.com.
Starting point is 01:29:28 All right, so this next one is interesting, and I have mixed feelings on this one, but the header here is ensure technology choices help achieve organizational goals. So what they're saying is any technology that's introduced, it introduces more stress and pressure on the operations folks, right? Yes. Yeah. If operations can't support it, then the group that owns the service, right, becomes the bottleneck. Because anytime something goes wrong with it, they're going to have to come back to you to say, hey, what's going on?
Starting point is 01:30:01 How do we fix this? I think this is around the area, though, where they were talking about what I mentioned earlier about companies standardizing on, hey, this is our primary scripting language. This is our primary compiled language. This is our primary whatever. Or our primary database, for example. And that way, you know, these were the primaries that if you were looking for anybody in the team to be able to like jump in and help you with something, then you knew that you were going to have plenty of support for that. It's not to say that other technologies weren't used, but, you know, these were like the main ones. They were common across the entire enterprise. And additionally, what that meant is that then ops could also speak the same language. Because, you know, if you picked Python, for example, as your, you know, this is our primary scripting language, right? And, you know,
Starting point is 01:31:01 think of all the Python use cases that you might do, you could write web servers in Python, all the machine learning type of things that you could do in Python. But the ops team, they might also have a bunch of Python scripts that they're using for deployments and to help automate deployments. But now, because you're both using the same language, if there's a problem in your Flask site that you wrote in Python, then they could dig into it and be able to see, oh, hey, I see the reason why. And now the ops team could make a commit into the same repo to fix the problem in your website. Right? Which I thought was a pretty cool way of thinking about it
Starting point is 01:31:41 because I don't know about you guys, but prior to reading this and like, you know, hearing that I was kind of like, it always kind of like irritated me with like, and maybe this is just because like, as a, as a.net developer in the world where, you know, it's not the most popular of languages and, you know, you see companies like a face, not a Facebook, um, a Google or an Amazon, for example, that will have these really cool things. And it's like, oh, hey, here's our Java SDK. And we might get around to a.NET one, right?
Starting point is 01:32:16 And it was always kind of like, oh, man, it's so frustrating, right? Like, why? But now it's like, oh, yeah, from their point of view, by standardizing on this, like, yeah, sure, I get it. You know, I don't have to like it, but I get it. Right. Yeah. They say here that you always need to be identifying these technologies that sort of are your problem areas. Right.
Starting point is 01:32:38 So let's say that you have an environment. You got 20 technologies. Which one's causing you the most pain? Keep track of it. Which one slowed the flow of work? Which one create, and I actually like how they call this, which one create the highest levels of unplanned work? That's what we call firefighting, right?
Starting point is 01:32:55 Like anytime something's wrong, everybody drop everything, go do it. Those are ones that you need to be aware of. And which ones create the most number of support tickets, right? Like if there's truly a disproportionate amount of it, you should probably be aware of and which ones create the most number of support tickets, right? Like if there's truly a disproportionate amount of it, you should probably be aware of that. And which ones don't meet your organizational goals, whatever that is. If your goal is for your site to be up 24-7, then maybe it's less important to have the fastest thing on the planet to have something that's on the planet and have something that's more highly available, right?
Starting point is 01:33:27 Or vice versa. Maybe you don't care if a feature goes down on occasional, as long as they can just turn through stuff fast. So you really need to be aware of what your goals are. Now, is it the case that the technology is going to be the problem or just you're not your lack of knowledge of how to use it though, right? Or maybe you did something wrong with it you know what i'm saying and this is this is where i think we should have a tiny little sidebar on this right after this last thing that they say here is what they were calling
Starting point is 01:33:53 out here is there was somebody that actually mentioned it in in the book is they didn't see these things as boundaries like you know you can't go outside of this playground right here. Like these are the technologies and this is it. They said they treated them more like buoys. So if you think about it, if you're out swimming in the ocean, there's a buoy out there that says, yo, if you swim past here, you're kind of going into, you know, deeper channels. There's stronger undertoes, that kind of stuff.
Starting point is 01:34:23 It doesn't mean you can't go out there, but just know that you're entering a place that is not as safe as where you were. And so just be aware of that. Well, this is what I was referring to when I was talking about like, hey, these are the standard languages that we're going to use. And if you want to use, if we've standardized on Python as our scripting language, know that you're going to have a whole company that can help you with anything. But if you don't want to use it, that's fine.
Starting point is 01:34:52 If you want to do something in Perl, have at it. We're not going to stop you. You just might be a little bit more, you might find it a little bit more difficult to get some help from others that just don't know it. It's not as rampant in the organization. Yeah, not just debugging, too. There's also like, you know, new things come out in languages all the time, new versions. And there's people who are champions of those languages, who love those languages and follow them and know,
Starting point is 01:35:18 oh, man, we really need to upgrade to Java 1.8 because it's got this and that and that it allows this and if you don't have those champions around or they could spawn more people they don't know what those things are they don't know the watch things to watch out for some new vulnerability comes through or some new wave of things go through like hey nobody uses this library anymore because there's a much better option people don't know that stuff if you just did like a one little one-off little app in early because you heard it was more reliable it's just not worth it in most cases to deviate from the norm if you've got 80 percent java developers or whatever so you know i think just like i said if you've got a strong use case for using a language for some small project or something then use it that's fine but i'm really
Starting point is 01:35:57 big on setting defaults or stuff like that like you know you should have a couple languages if your organization gets like big enough that basically slot into the major categories of the kind of works that you do and then if you've got a whole if you've got even 60 java developers or java code don't go starting a ctar project newly you know unless there's some strong reason for it and i can give an example of a strong reason like um several of us got pulled into the Java world because we started doing streaming applications, right? And if you look at the streaming technologies out there, it's typically Kafka plus some handful of other technologies, right? All, all of the
Starting point is 01:36:37 native streaming libraries out there are Java. And so it doesn't make sense to force the issue in something like C sharp, because now you are basically having to go in and maintain and create everything on your own. When there's thousands of man hours that have been poured into the various travel libraries out there. So it, you know, you pick your battles and you find the ones that make the most sense. Right. And so, and same thing. So that that's a language, but you could also say the same thing about technologies, right?
Starting point is 01:37:07 If you're a company that's always relied on a database technology and you find that being your hammer for every nail on the planet, right? That's a situation where, yeah, everybody wants to just keep using postgres or everybody wants to keep using sql server because that's what everybody's used to but you start finding yourself running into these fires all the time where you're constantly troubleshooting and trying to trying to fix and improve performance and stuff and that might be when you need to step out and look at other technologies so definitely don't take it as the hey all we have is my sql and postgres you're not allowed to use anything else. There are use cases that you should think about,
Starting point is 01:37:47 but as an organization, you do have to know that that brings in overhead of other people having to understand how to operate and maintain and keep these things up. So. Yeah, totally. So there's use case here, but I didn't read it.
Starting point is 01:38:03 So, so it didn't happen. no so i'll read what the notes are it said uh etsy switched over to php and mysql and they standardized it and it sounds like a big mistake to me so i don't know what the deal is no that one was actually go ahead well. Well, I was just going to say, it was that they eliminated most of their technologies so that they could, like, simplify their world. Right. And that was it. They basically said, okay, everything's going down to PHP and MySQL because we're going to make our lives easier. And they said it actually did solve a lot of problems for them, right?
Starting point is 01:38:43 Yeah, I believe it. Those aren't my favorite languages. Sorry. Sorry, everyone. I know some people love PHP. I don't know. I mean, I guess some people love MySQL, but it seems to me like Postgres kind of won that war, didn't they? Oh, no, no.
Starting point is 01:38:57 MySQL pulverized everybody else in terms of overall database usage. MySQL, well, I mean, if you count WordPress. I mean, WordPress is like a third of the internet, right? Yeah, but it's the crappy internet. Let's face it. It's like one third of the internet that started blogs and never got back to it. So, if you don't like PHP then, Joe,
Starting point is 01:39:20 in all seriousness, what do you write your SQL injection in? Oh, man. We just lost another first time. I know. Sorry, we just got another one-star review. Sorry. There's lots of things that are great that I don't like, too. And I like pineapple on pizza.
Starting point is 01:39:37 I mean, so I'm all mixed up. Don't worry about it. Oh, yeah. Clearly, we can't trust your decision. We no longer trust you. Yeah, that's it. All right. So the next one, reserve time to create organizational learning and improvement.
Starting point is 01:39:49 So this one, I like this one a whole lot. So we talked about Toyota in the past with some of their practices. I mean, and the whole world kind of followed many of the things they did. But there's one called Kaizen Blitz, which basically translates to Improvement Blitz. And what they're saying is dedicate time over several days to try and resolve some sort of problem or issue. And what's interesting is don't just use people within your group that deals with that particular problem. Get people from outside to get other opinions so that you can try and do this stuff. That's pretty cool. Yeah. Totes.
Starting point is 01:40:29 Target had their own thing that they called the DevOps Dojo, which this sounds really cool. I've never heard of another company doing this. Maybe there are, but what they do is they have these 30 day focus groups where they have coaches and they have real problems and people bring those problems in and they actually work on them, but they are hyper-focused on those things for 30 days. They're not trying to create features, not trying to do anything else. They're just trying to solve these problems.
Starting point is 01:41:00 And they said, because of this, because of the super intense way that they do it in this coaching thing, it's not uncommon for them to solve in a few days what used to take them months to resolve. So pretty awesome. And this is what – I was just going to say this was one of those white paper studies that Joe Zack didn't like. Oh, yeah, right.
Starting point is 01:41:24 No, he totally skipped over those. And this wasn't the same as the hackathons, but they did talk about hackathons in this section, if I recall, because there was actually like one area where they were talking about how, you know, they talked about how like this, this, this improvement blitz, like this time, like, uh, it's not necessarily like the, the 80, 20 kind of rule that, um, we've heard about that, that, uh, you know, I think it was Google that popularized that where, you know, you could have 20% of your time to, you know to just work on something at random, right?
Starting point is 01:42:06 This wasn't that, and neither were the hackathons. But both of those had a lot of value where it was good to let people on your team just have some creative freedom to like, oh, let's see what works. Some of the ideas that came out of Facebook, for example, like chat was one of the ones that they had mentioned that came out of a hackathon. Like to me, that was a crazy idea when I heard about that, that Facebook chat came out of a hackathon. And it was just like, hey, I was just curious to see if I could do it. And we did it in a hackathon. And we talked about that chat in the past, like how they even rolled that out. So it was kind of it kind of felt like we were like closing the loop on like, hey, here's a here's a story that we're circling back on.
Starting point is 01:42:51 They're like this whole thing that was this great rollout of how they they even got it out in the public started out as just this itty bitty little hackathon. Right. Yeah, that's definitely coming up in another section. Oh, I'm always ahead on the sections. But that's fine. That's fine. The next one that we have here, though, is they say institutionalize rituals to pay down technical debt. Man, this is something that more companies should do.
Starting point is 01:43:20 And my humble opinion is it's so easy. Joe, you said it earlier, to kick the can down the road. And the stuff that you typically kick it down the road are things that you know you need to do, but it's not a feature. And so you just you just keep pushing it down. So they say here, schedule time a few days, a week, whatever, to where you do nothing but try and take care of these problems. You're not again. This is not a feature builder type thing. This is fix the things that you know are going to be problems coming up. This is when Joe gets to work on that library, that logging library.
Starting point is 01:43:56 That's right. Yeah, this is the Joe happy time. We'll just call it Joe happy hour. That sounds lovely. We'll just be like sounds lovely hey you know what hey Joe this Friday why don't you just take off and just work on something you think is important that you've had a hard time getting through
Starting point is 01:44:11 and no one's going to bug you no one's going to IM you this isn't just you working on it but this isn't just you necessarily working on it I don't want to collaborate oh well leave me alone this is my happy time. This is my dream.
Starting point is 01:44:26 Get out of here. That's right. That's right. You said it was Joe happy hour, not Joe and friends. Wow. I'm going to feel awkward the next time I pair with Joe on any kind of programming. That's right. So some of the things that called out here is it could be code.
Starting point is 01:44:42 It could be environment. It could be configuration. It doesn't really matter, right? It's something that you need to fix. Again, here you probably want to include people from different teams, DevOps, operations, InfoSec, whatever, right? Like get everybody involved so that you're making good, sound decisions. This one I kind of like also is they say present your findings and your accomplishments at the end of it because then that way everybody's aware that things are moving forward and progressing. You have an individual sprint and we're saying like, hey, we would take – let's say if it was a two-week sprint, would you take two days out of that sprint to be the blitz? Maybe.
Starting point is 01:45:37 Depends on how much – yeah, yeah, totally. How much are you going to give me? Right. I mean, I think that's really the question is, hey, how much technical debt do we have to pay down? Like, are there some issues? Why not take a week? Right. Just go in and make things so that they're easier to maintain and come back to in the future.
Starting point is 01:45:56 Like, I don't see any problem with that. I mean, think about how much time you end up spending fighting some of these things over time. People don't keep track of that in aggregate. I'd lay money on the fact that if they did, they'd be way more willing to put in the time to clean up some of that stuff. Yeah. One of the other things that they mentioned in the section that was kind of cool is Facebook did this. And this wasn't a hackathon. This was their pay down technical debt thing.
Starting point is 01:46:25 So when they got to a point where they started running into scaling issues, because, you know, they had PHP and they had, you know, a hundred million users or whatever, they're like, oh man, how are we going to make this faster? We can't build servers fast enough and rack them to get this done. So one of the guys came up with an idea to basically write a PHP to C plus plus transpiler, right? And by doing so, they were able to get six times the throughput on that stuff just by doing
Starting point is 01:46:56 this. So that, that whole thing of paying down technical debt, this is what they came up with and it worked out really well for them. So it's great that they were all on PHP at the time because they all got the benefit. Right. That's actually a really good point for keeping standardizing on a few things. This next section is pretty quick. It's nothing really all that glamorous.
Starting point is 01:47:19 Everyone should enable everyone to teach and learn. I think, I don't know, most places we've been, this seems to be pretty successful. You should be encouraged to do it in your own ways, too. So if you like going to conferences to learn, then sure, go to conferences. If you want a Pluralsight subscription, companies should probably make that available to you, because if you're willing to put in the time to learn, then it benefits everybody. Oh, you're thinking of it from that point to you. Cause if you're willing to put in the time and learn, then you know, it benefits everybody. Oh, you're thinking of that point of view. I was thinking of it from the point of view of,
Starting point is 01:47:51 uh, like every place that we've been for, you know, I can't remember the last place where, where I was, where we didn't do this, but we have something like we would either call it a lunch and learn or some kind of tech talk.
Starting point is 01:48:03 But, you know, it's like, Hey, uh, you know, one or more people, some team might have like learned how to figure something out and then they teach it to the rest of the team. Like, hey, here's this cool thing that that I learned how to do. And, you know, here you can do it, too, or this improvement that we made. And, you know, look at this neat thing that we made and learn how to use it.
Starting point is 01:48:22 Yeah,, agree. Yeah. And that's part of it, I think is really the key is it shouldn't just be boxed to that either though, right? Like if people are willing to go out and learn more because in the roles that we all sort of fill nowadays, you have to know so much garbage, right? Like it's just nonstop. I mean, Joe, you've been knee deep in Kubernetes world and deployment pipelines and everything else. And I mean, it's just a never ending pool of things to learn, right? Oh yeah. Yeah. I want to cut a deal, but tell you what,
Starting point is 01:48:55 I will do eight lunch and learns of the course of the next year and I want three days off for conferences. See, there you go. There you go. Yeah. And that's awesome. Look, you have to be a polyglot nowadays. You can't just specialize. I'm only going to have JavaScript. There's people, though, that basically say you should be specializing and make arguments that there are no full-stack developers
Starting point is 01:49:20 and that you should specialize in one set of skills because otherwise you're just spreading yourself thin and you never get to really know anything deeply. I just don't see it, man. I don't see how you can. How can you not know things like about Docker or Kubernetes and also some JavaScript and also some C Sharp or Java? You have to be able to move your way around throughout the system
Starting point is 01:49:44 because the system isn't just like one thing. There's, there's a lot of moving parts to it. So I just kind of feel like, you know, Hey, if you're going to be the guy that's only gonna be like, I only do JavaScript and nothing else.
Starting point is 01:49:57 Yeah. I mean, right on. But you know, everybody's probably going to hate you behind your back. Cause they're going to be like, come on, man,
Starting point is 01:50:03 you can't help me. Why? You know, except on anything but JavaScript, right? Not the JavaScript. That's a tough one, man. That's a tough one. I could see areas where there's definitely specialization. If you're a database person, if you're a,
Starting point is 01:50:21 if you just write streaming applications, if you just keep, like there's definitely places where you could absolutely go 10 miles deep and never have to go wide on any of it. And you would stay busy for the rest of your life. And that could that could work. Wait a minute. I'm not saying I am not saying that you shouldn't be deep on a subject like pick, you know, their technology. Be deep in it. Sure. That part I'm down with. But, you should also, like, have some breadth, you know,
Starting point is 01:50:51 and know some other things and be able to help out in other things. And that's what I'm saying. It's like, you know, maybe you're 100 in Java and only 75 or 50 in Kubernetes. But, you know, you can get in there and do some stuff, you know? I mean, look, I'll give you a good example. And I'm not built that way. I like to sort of know how it all works. But I'll give you, at least in my opinion,
Starting point is 01:51:18 probably a really good example is Julie Lehrman, right? She's known as the entity framework goddess, basically is what it boils down to. She knows that thing inside and out. If you have a question about entity framework, she can probably answer it. Does she have some, obviously to know that she knows C sharp and she knows how to interact with databases, but by and large, that's like her thing. And so there's nothing wrong with that. It's actually taken her a very long way in her career, right? I mean, she's been a Microsoft MVP for I don't know how long.
Starting point is 01:51:53 She's written books. She's invited shows. I like this example because I'm sure she's got a lot of knowledge on other topics, though, too. I'm not saying she's not, but that's what I'm saying. I guess my point is, though, I don't think that there's a right or wrong answer to this, I guess is what I'm saying.
Starting point is 01:52:13 I do agree that if you work on a team with a bunch of polyglots and you're not willing to be one, okay, sure. Maybe that's a cultural thing, right? And that might be the culture of your group. However, if you're not willing to learn other things and you're just going to be stubborn about it, like, nope, I like this one thing.
Starting point is 01:52:33 That's the type of person I'm talking about. Piggering me like, okay, yeah, fine, sure, we'll just give you all the JavaScript tickets. But, you know. Yeah, we've all seen that, though, where someone would be like, oh, there's some sort of problem. Well, I did the database and this looks like an app thing, so I'm going to lunch.
Starting point is 01:52:48 And then 30 minutes later, the people on the app, minus the person who's on the database, realize that actually it was a database problem. But now the database person isn't here, and so they ended up kind of finding and fixing it. And, oh, everybody hates that database person for kind of checking out the problem. And we've all seen that happen, and that sucks. But I agree with you. When I kind of make my campaign, depending on full-stack developers and whatnot, I never want to say that there's not value in going deep on a subject.
Starting point is 01:53:17 I think it's great, but I just think that there's also a lot of strength in going wide. Even if you go wide at the expense of going deep on something, I think there's always going to be room for integrators in the world. Totally. So do your thing. Well, I guess what I always going to be room for integrators in the world. Totally. Do your thing. Well, I guess what I'm saying is in the past, we've talked about a
Starting point is 01:53:30 T-shaped developer where you had a lot of knowledge across your shallow on a lot of things, and you're deep on something. But maybe now I'm really kind of thinking about maybe it's a V-shaped. There's something that you're really deep on. And then there's other things where it's like, you know, it gets progressively shallower, right?
Starting point is 01:53:55 But there's multiple things, you know, that are like that. So I don't know. Yeah. Yeah. I mean, I guess my point is I think there's room for all types of people, right? Yeah. And if you want to be a CSS god, right? But like for real, if you want to be a CSS god, there is so much material right there in CSS that could drown you for the next
Starting point is 01:54:16 five years, right? For sure. So be that. Also, if you want to be a CSS god, you might want to seek medical help. Medical care. Yeah. So at any rate, you might want to seek medical help. Medical care. Yeah, so at any rate, all right, we beat that up. All right, so let's quickly blow through some of these other ones. So the next one we have is share your experiences from DevOps conferences.
Starting point is 01:54:39 So this book is obviously focused on DevOps, but they did point out some things that I'd never even heard of. There's one called DevOps days. They say it's free or nearly free because it's supported by a huge community that really wants to get information out there. So that's awesome. Atlanta has one. See,
Starting point is 01:54:55 I didn't know. Well, they did. Yeah. Yeah. Until 2020. Austin's the best one. The biggest one.
Starting point is 01:55:04 So, organization should also encourage employees to attend and speak at these things, right? It's honestly excellent for everybody involved. And even some of these companies hold their own conferences. I mean, I forget which one it was. I don't remember if it was Citibank or one of the other ones in the book, but they hold a massive conference that's internal only. And they have all kinds of tracks, just like a big conference. And people come there and learn, and it's a good thing.
Starting point is 01:55:36 So, you know, it's not necessarily for every company, but it's an interesting idea. And then this last one here I thought was really interesting. And we saw this when we worked at Amazon, this happened. Create internal consulting and coaches to spread practices. So at Amazon, they almost had like little tiger teams that would go around, you know, teaching people how to do things, right? Or lobbying for you to do things, which was kind of interesting. Capital One has subject matter experts where they have office hours. If you have technical questions, come between two and three and ask them, right? And they'll answer them.
Starting point is 01:56:14 So that's really cool. And they had a story about Google also with a group. So that 80-20 rule that Outlaw had mentioned where you had 20% of your time, do whatever you wanted, kind of create something for the company. It didn't mean that you had to do it on your own. So this one group of people decided to get together and try and force the issue on people, including testing within the organization and their apps. And so they kind of adopted this thing and they started pushing it forward. And so that was a really good way to introduce that throughout the organization, sort of in a fun way and in time
Starting point is 01:56:49 that they could all do on sort of on their own, but also get it into the products. So yeah. And that wraps it up. That's the third way. I think so. So now that we've gone through this, I got to know where we landed, right? Because several episodes back, I don't even remember which episode it was now. But before we had started this series, there was this whole conversation about if DevOps was a job title versus DevOps is an, uh, uh, like an organizational, you know, cultural kind of thing. And I'm kind of curious now, like where,
Starting point is 01:57:30 where did you land on that? Uh, it is mostly culture, but it can definitely be a job for a lot of people. I am HO because there's things that are hard to spread out. Like you can't have no DevOps focus people and expect like your, you know, database engineers and your whoever,
Starting point is 01:57:51 like who sets up the pipeline files, like someone that's got to take that. And they're going to be, they're going to spend a large percentage of their day with that. So I think there's still a place to have a role, like people who are focused on that stuff. But I think that ultimately all the developers need to follow their features to the end and need to know about how that stuff works and need to be able to maintain it.
Starting point is 01:58:11 Matt, I'm so glad you answered that like that because my answer to this was going to be yes. Is DevOps a job role or an organizational culture? Yes, it's both, right? For that very same reason, you will have people that are dedicating most of their time to it. But that doesn't excuse other developers from knowing how to do some of these things, right? Like even within our own organization, like Kubernetes, Docker, that kind of stuff is becoming a big thing. And when something doesn't work, you don't want people saying, Hey, this isn't working. Not my problem. Right? No, it is your problem. Did you look at
Starting point is 01:58:52 the logs? Why, you know, you're saying that the database isn't working. Did you look at the logs? No. Okay. Well then why are you coming to me? You know, um, look at the logs. Did it start up? Was it out of memory? Did it, you know, it's the same type thing. It's not like it's the way I equate it is like this. Applications are becoming much more complicated or complex, I think, just by the number of pieces and technologies involved in all that stuff, right? 10 years ago, for the most part, if you were working on an application and somebody said, hey, my SQL server on my local laptop isn't working, you'd be like, so what did you do to fix it? What did you do to try and find out why it's not running on there? Don't just come to me and say it's broken. We've all got it installed on our laptop, so you should have an idea of what you needed to do to do it. And that's kind of how I view this DevOps thing. We're moving in this direction where DevOps is really a big deal. And so everybody should at least have an idea of the things to look for
Starting point is 01:59:59 moving forward. And to me, it's a cultural thing getting that done, but then it's super complex. Just like Jay-Z said, like building these pipelines and these deployment scripts and all these other things that happen. Not everybody is going to be doing that. So yeah, I agree.
Starting point is 02:00:16 I fully agree. That's a long, long way of saying yes, it's both. I'm so disappointed. I know that hurts, man. I know.
Starting point is 02:00:25 So, uh, it was episode 118 released about a year ago, October of 2019. So when this episode is getting released, actually, it'll be one day short of a year when this episode gets released versus when we talked about DevOps being a job title versus a responsibility or a culture. And man, I'm so torn. Because even the things that you guys described, you described people who would write code
Starting point is 02:00:57 for pipelines and things like that. And your discount is like, oh, no, that's totally an ops thing. Like, you know, you're just writing pipeline're just writing like pipeline code who cares you don't count and it's like no no wait a minute that's still a developer it's just no no i didn't put it up operationalizing you're not you know i know i know i know i'm exaggerating i'm exaggerating okay yeah i was gonna say i'm not saying you're not a developer
Starting point is 02:01:22 i'm just saying it can be a role right but but it's, I'm not saying you're not a developer. I'm just saying it can be a role, right? But it's just because you're, like, you're as a developer, like, focused on, you know, writing pipeline code, for example. I mean, that's still, like, a deliverable. Like, you know, and it is the fact that the organization itself has that thing as a culture that they recognize a need for, hey, we need a developer to focus on writing code that other teams can use to automate their build pipeline. Right? It's a cultural thing. But would you label a person that's writing applications that are SQL code, would you call
Starting point is 02:02:10 them a database developer? Yes. You're hired to be a database developer. If you are a SQL... If you're writing groovy pipeline code for Jenkins, that you're a Jenkins developer?
Starting point is 02:02:27 I'm saying that you are a DevOps developer at that point. You are filling a DevOps role. So you're not a pipeline developer. You're not a Jenkins developer. You're a DevOps developer. But in the case of the database, you're a database developer. No, so that's what I'm saying. Like database is a generic general term.
Starting point is 02:02:49 You're a database developer. You could be writing SQL, T SQL code for SQL server. You could be writing Postgres code, P SQL. You could be writing PL SQL. You could be writing all kinds of things. You're a database developer. If you are an application developer, you're somebody that is writing applications that get installed, deployed, whatever. If you're a DevOps developer or in that role, then you are
Starting point is 02:03:10 doing things that enable a pipeline and operations to work, right? So I don't think that's why I'm saying it's a role. Like it's just like anything else. I'm not saying that that's all you can do, but I can totally see that, hey, if you're hired to make sure that we're improving operations and development integrations, totally. It's a role. And it's cultural. I'm sorry, Internet. I have let you down. And with that depressing news, I guess we'll head into, you know into we'll have some resources that we
Starting point is 02:03:46 like and there'll be a bunch of links there. We'll go into Alan's favorite portion of the show. This is the tip of the week. Let's take this argument to the slack. Yeah. Bring that argument to the slack. Let's see what we
Starting point is 02:04:02 got. I know Bobby, he's going to hit me up and he's going to be like, dude, really? So Bobby. I'm too depressed to even open up Slack right now. So yeah, let's just forget about it. It doesn't matter anymore. And yeah, do some stupid. I was going to do another joke, but now I'm like, why?
Starting point is 02:04:21 There's no humor in the world. Why would I even bother? No, I can do another one if you want. Yeah, two. Two. Oh, you're picking number two again. All right. Between one and two.
Starting point is 02:04:36 Well, from Mike RG, how do programmers avoid getting COVID-19? Oh, geez. Self-isolate. Play Doom Eternal. I don't know. They use bit masks. Oh, geez. Get out of here.
Starting point is 02:05:03 Awesome. All right. Well, hey, that does it. We finished the DevOps handbook kind of sort of. We did cover the three ways we finished. Do you guys remember what the three ways were? One, two, and three. Why is it so hard to remember? The technical practices of flow was one of them.
Starting point is 02:05:19 Flow? Yes. Flow. I think I remember that one because we said it like so many times. Yep. Feedback too. Flow, feedback, and experimentation. And learning.
Starting point is 02:05:30 Yeah. Learning. Yeah. Yep. There we go. You need an acronym. All right, Gene, Cam, we're coming for you. We got some ideas.
Starting point is 02:05:37 FFE. Yeah. All right. So what's your tip of the week, Jay-Z? What do we got? Oh, you broke Allah's heart. You didn't get to say it the way he likes to say it. No, he already did.
Starting point is 02:05:48 Oh. Yeah, he did. You weren't listening. No, I didn't hear it. Okay. He said, oh, let's go to Allah's favorite portion of the show, then I guess it's the tip of the week. Oh, I thought he was kidding.
Starting point is 02:05:59 He was all depressed. He was depressed because he didn't convince us that DevOps is not a role. I don't want to do it now. All right, fine that's that's the way i feel like forget it it shows over i'm going to end it right now done you failed so i got some some extra juicy good tips for you today uh first off so uh markdown awesome right you type stuff in text and it comes out uh richly formatted and it's even easy to read uh just a text front did you know uh you can do diffs and markdown i did not yeah when you click on that link right there uh well yeah what you do is yeah you can do the tick tick
Starting point is 02:06:37 tick to start a code region put your code in there and you put a plus or minus to the left and it will show it as like red green, like a git diff might look. I'll be doggone. Yeah. This I learned. That's pretty good, man. I like that. Yeah, I saw that on Twitter from Allie Spatel.
Starting point is 02:06:53 I think that's how you say her name. She's awesome to follow. You should follow her. And, yeah, so that's awesome. And number two, some people in my hometown. Actually, Vincent moved. Vincent's a a trader so i can't say that anymore who's in tampa uh coach has podcast new show started up uh one person from orlando one person from tampa uh sunny florida uh just started a brand new podcast they're just doing their thing
Starting point is 02:07:17 it's focused on web development uh it's brand spanking new so you can get on the ground floor of this opportunity and so we'll have a link to that find that show or you just search for code chefs podcast i'll be baking up some good stuff excellent all right then so mine are going to be fairly quick i think um so murley who we've mentioned a couple times in this show he actually threw these out there on slack so i snagged them up um there are a couple of online cloud editors. One is called maria.cloud. That's actually the website. We'll have the links here, but it's for beginners. If you want to learn a little bit about coding, this is a way to get into an editor in the cloud and do this kind of stuff. So that's really cool. And he had another
Starting point is 02:08:01 one that he said he admittedly hadn't played with that much yet, but it's code dot world. And that is another editor where you can learn how to do some stuff without having to install anything on your machine. And you can go online and do this in an online editor. So really cool things like you learn and you get to play with this stuff all in one place. So if you got a Chromebook or anything like that, you don't need anything crazy powerful. You can just get started. So thank you for both of those. That's pretty excellent. And then here's another thing. So I've been working with some Google Cloud Storage stuff, and there are some interesting things that they've built into it. And you'll probably see this in just about any of the distributed file
Starting point is 02:08:43 systems out there. I wouldn't even be surprised if it's a Hadoop notion in the first place. But if you were to put a file up in Google Cloud and you were to try and change this, it's in a bucket up there. When you go to get an access to that file, that file has what's called a generation and it's a number on that file. And the whole purpose of that is when you first get a grab a handle to that file up there, before you go to do something, let's say that you want to delete that file or you want to update that file. What you can do is when you call that delete command, you can basically say, Hey, you must pass the precondition that this is the same version that I first grabbed. And it can look at that generation. And if it's not, you can have it basically it'll abort and say, hey, the precondition failed. This is not the same version of the file
Starting point is 02:09:36 that you were first messing with. So these generations are a really powerful way to make sure that in this distributed file system where you may or may not be the only person interacting with these files to know that you're not going to be stepping on or messing up something that another application might be doing. So I thought it'd be worth sharing here. It's interesting to know these things. Again, I'm pretty sure that AWS and even Azure blob storage will have something like this. So definitely look into it if you're looking at doing operations on these remote files. So it's like an ETAG then? Like you could specify like, hey, I want to delete the file.
Starting point is 02:10:11 Here's the ETAG of the file. And then it's like, oh, no, that ETAG has changed. It's not. Sort of. So they have additional metadata on the files that they also have something that it's not called an e-tag. I don't remember if it was called a hash on the GCS, but this is sort of separate than that. So yeah, they have that as well, but you can also update metadata information about it. And those also have their own version. So there's like a handful of things that you have control over up there. So it's pretty interesting. Neat. Okay. Well,
Starting point is 02:10:47 you know, in my depressing list of tip of the weeks or tips of the week or, you know, whatever, it doesn't even matter anymore. So in the list of why I'm a moron. So I realized today that I have totally been reading this command wrong. So if you do a helm search repo and, you know, cause you want to search for like a particular package or anything, I mistakenly thought that the next thing you were supplying was the repo name. So Helm search repo, repo name, and then whatever you wanted to search for.
Starting point is 02:11:30 Turns out, like, I'm just a moron, and I've been reading this wrong the whole time. So, yeah, no, it's really not the repo name. It's whatever the text is that you wanted to search for, which explains why I've never been able to successfully use the regex capability of this command. Because I was trying to specify a keyword and a regex pattern and it's like, yeah, I don't know what to do. Of course it doesn't match anything. So yeah, sometimes you just have to admit when you're wrong. And so whatever. So I'll include a link to the
Starting point is 02:12:03 helm search repo command. And also this one came up with a coworker. We were trying to figure out that our love for commander had, you know, it knows no bounds, right? Like commander's great. And if you haven't ever used it,
Starting point is 02:12:21 we'll, we'll have a link in the show notes for commander, but it's basically like a really lightweight portable uh wrapper you know around around the different shells that you could have so it's a terminal for for all the different shells and uh or am i saying that backwards it's a shell for all the different terminals and um you can uh it but it's super lightweight like you know it doesn't, but it's super lightweight. Like, you know, it doesn't install anything. It's just like, Hey, wherever, whatever directory you put the thing in, that's where it's going to live. And that's where all of its configuration is going to live and reside.
Starting point is 02:12:53 And you can put it on a USB drive and, you know, plug it into every computer that you ever, uh, you know, shouldn't be accessing directly. Um, but, uh, uh, you know, if you wanted to use it to run your WSL instance, your Windows subsystem for Linux, then there's this little issue where when you create that new instance, it might not, the arrow keys might not work if you're the type that uses your arrow keys when you're in VI. And so there's a GitHub issue for it that when you create that new terminal, you want to specify to your WSL command, I'll include the link to it, but it's going to be like a dash C U R underscore console colon P five. And that will that will allow the the arrow keys to work inside of the inside of VI when you're inside of that WSL terminal. Losing your arrow keys is not fun.
Starting point is 02:14:06 Yeah. Yeah. I, I don't, I didn't notice it because I use the Jake, uh, the J KL, you know,
Starting point is 02:14:15 it shake hails when I'm in VI. And so, uh, but yeah, a coworker was like, Hey man, like, cause I turned him onto a commander and then he's like,
Starting point is 02:14:23 yeah, I'm getting super frustrated here, man. Cause like I don't have any arrow keys. So I'm, I'm about ready to like, you know,, because I turned him on to Commander, and then he's like, yeah, I'm getting super frustrated here, man, because I don't have any arrow keys, so I'm about ready to give up on this thing. And I'm like, whoa, whoa, whoa, wait. No, there's got to be a way. There's got to be a way to fix that.
Starting point is 02:14:35 I'm not aware of it, but I'm sure. And it turns out, yeah, it was a known GitHub thing or a known issue in GitHub. So, yeah, with that depressing ending to the show yeah we've wrapped it up and uh i mean if you want to yeah sure subscribe to us i guess uh you know you can find us we're on itunes we're on spotify whatever we're on stitcher too. Not to brag, but we're there. It doesn't matter. You can leave us a review, like Joe said. We read it. It makes us happy, unlike
Starting point is 02:15:12 the ending to this episode and series. You can find some helpful links if you want them. They're at www.codingblocks.net slash review. That's it. And while you're getting your next DevOps role, you can go ahead and check out codingblocks.net slash review. That's it. Hey, and while you're getting your next DevOps role, you can go ahead and check out codingblocks.net.
Starting point is 02:15:29 No! I'm melting! He actually did just melt. I think he did. Hey, and if you have any feedback or questions, you can go over there to Slack and share them there. Slack. Oh, yeah.
Starting point is 02:15:51 And make sure to follow us on Twitter and leave those comments on the website while you're there. Visit the social links. And don't forget, you can win a book. And also, I forgot to mention this earlier. We did have some news. Game Jam coming up 2021. Be there, be square. Next episode, we're going to be talking about game jams be there be square we're uh next episode we're going to be talking about uh game jams in general and what we're going to be doing so uh if that is
Starting point is 02:16:10 something that you've always wanted to do and maybe you even have done it and you want to do it again then you should stay tuned uh jay-z is going to learn me what he's talking about yeah all shall be revealed hey one, one last one. I wonder how many. Yeah. Do you want to know where I saw all my dad jokes? Number two.
Starting point is 02:16:34 No. In a database. Oh, geez. Very nice. Thank you, Mike RG.

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