00:22.26 Matt Godbolt Hey, Ben. 00:23.20 Ben Rady Hey, Matt. 00:24.24 Matt Godbolt We are reaching new levels of complacency when it comes to recording an episode here because we haven't got a clue at all about what we're doing today. 00:34.62 Ben Rady No. No. 00:34.96 Matt Godbolt But that's never really stopped us before. 00:38.02 Ben Rady No, it hasn't. 00:38.74 Matt Godbolt And it's not stopping us today. I'm going to ask, how are you doing, my friend? It's been a little while. 00:46.68 Ben Rady It's been, it's been a busy few weeks. It's been a busy few years. 00:56.28 Ben Rady Last week was a busy year. Uh, the, uh, just, just lots of new things happening, new stuff happening, new things being built. 01:05.82 Matt Godbolt Hopefully exciting and interesting new things. 01:09.54 Ben Rady Yeah. 01:10.18 Ben Rady Yeah. It, it, um, you know, I have the privileged position of working in new projects, which most programmers will tell you is a much better alternative than many other things. 01:26.50 Matt Godbolt Right. 01:26.80 Ben Rady And as the listeners of this podcast are well aware, I have many strong opinions on the right way to do things. And, uh, being, ah working in a new project allows me to... 01:38.02 Ben Rady ..work in the manner and to which I am accustomed, which means i am being very productive, right? Like I'm able to get a lot of things done because, I don't have to relitigate all of the development practices and tools and things. It's just like, Nope, we're just gonna do the stuff and we're going to do it right. And we know how it all works and it's all pretty straightforward and simple. And and the whole point here is just to do it as fast as you responsibly can. 02:06.18 Ben Rady And so that ah is fun and rewarding, but it's also a bit tiring. 02:12.54 Matt Godbolt Right. Right. But that's, as you say, having the ability to set a project up the way that you would like it to be is powerful. 02:22.07 Ben Rady huh 02:23.16 Matt Godbolt And potentially as you say, potentially gets you to go very fast, lets you go fast. You're not limited by... 02:31.85 Ben Rady Yeah. 02:33.00 Matt Godbolt ..I mean, I guess other people, other people and their choices that maybe you disagree with, or what do you think is it? Is it, is it, I mean, obviously I don't think you are so big headed to say that your way is perfect and everyone should do your way. 02:45.14 Matt Godbolt Although, you know, I agree with most of the things that you say, so maybe it is, but what, what is the, is it monoculture? 02:51.78 Ben Rady Yeah. 02:52.03 Ben Rady Yeah. 02:52.27 Matt Godbolt Is that the... 02:53.76 Ben Rady You know, i I really like the exploration versus exploitation and dichotomy that some people talk about. 03:01.06 Matt Godbolt Yeah. Yeah. 03:01.26 Ben Rady you know It's like, should we continue evaluating options or should we move forward with the option, the best option of the set of options that we've considered so far? right 03:11.28 Matt Godbolt Right. 03:12.10 Ben Rady And you know I think one of the advantages of experience is that you have made a lot of mistakes and you have evaluated a lot of options and you have determined which ones tend to pan out and which ones don't. 03:24.32 Ben Rady And therefore, ah you you wind up with ah some thing. There's sort of like the old bit of like, if an old engineer tells you that something can't be done, you can look at them with a little bit of skepticism, right? 03:42.68 Ben Rady They probably know some things, but you can look at them with a little bit of skepticism and kind of ask the question like, are you sure? 03:49.64 Matt Godbolt Yep. 03:50.16 Ben Rady But if an old engineer tells you something *can* be done, because they've done it before. Well, that's a very different claim, right? 03:58.56 Matt Godbolt Yeah. that's That's a really interesting difference, actually. Yeah, I see that.. 04:06.18 Ben Rady Yeah. 04:06.92 Matt Godbolt yeah 04:07.04 Ben Rady Yeah. 04:07.16 Matt Godbolt But yeah, so you're you're sort of sort of drawing from experience and saying that these things have worked for me. I have explored the space because I've been doing this for 30 years and I have a pretty good idea. Doesn't mean to say that it's a perfect idea or there aren't better ideas, but these ones have been shown to work. 04:21.59 Ben Rady Right. 04:21.62 Matt Godbolt And now I am choosing in the sort of 80-20 theory of ah ah explore 20% of the time and 80% of time take advantage of the things that have proven to be well. 04:32.94 Matt Godbolt You're in that 80% section at the moment. 04:35.42 Ben Rady Yeah. 04:36.16 Matt Godbolt Which, yeah, the restaurant ordering dilemma is how I think of this, right? 04:39.89 Ben Rady Yeah. 04:39.92 Matt Godbolt I go to my favorite restaurant and I look down the menu and there's that thing I like. 04:45.14 Matt Godbolt And I'm like, I really like this thing on the menu and I will enjoy it every time I come here. 04:51.05 Ben Rady huh Yeah. 04:51.35 Ben Rady Yep. 04:51.50 Matt Godbolt But there are some other things on this menu too. Should I take the risk that it's not as good as the thing I know I like? 04:58.66 Ben Rady Yeah, yeah, yeah. And think another interesting dimension to this problem is that, um you know, I'm being paid to do this and I'm being paid to deliver results. And what I'm not being paid to do necessarily is learn a bunch of cool stuff, right? 05:16.82 Ben Rady Like, you know, it's fun to learn a bunch of cool stuff and it is sometimes very productive and useful to your employers to learn a bunch of cool stuff. And then yeah, right. 05:24.20 Matt Godbolt Indirectly through you and through your proselytization and sharing of experiences and setting the... Yeah, right. 05:30.35 Ben Rady Yeah, yeah. 05:30.74 Matt Godbolt But ultimately, it's an investment in your yourself, independent of your employer. And sometimes that can be purely for yourself. Like, you know, we've all we've all seen this. 05:40.20 Ben Rady Right. 05:40.26 Matt Godbolt I think we've talked about it before. It's like, hey, some cool new programming language has come out and some programmer goes off in a corner and says, I'm just going to write this new little tool that we needed. And we're going to write it in Haskell because I've just read a book on Haskell. 05:52.30 Ben Rady Right. 05:52.50 Matt Godbolt And you're like, that's, I don't know that this is in the best interest of the business. 05:56.76 Ben Rady Right. Mm-hmm. 05:57.84 Matt Godbolt Uh, there's a, I guess, you know, you roll your D20 and if it's a 20, somehow now Haskell is the best thing in the world and everyone moves to Haskell and the whole company levels up, right? That's a possibility. But very often what happens is that that piece of code gets orphaned and becomes the haunted graveyard of "we don't use that tool anymore." 06:13.84 Ben Rady Yeah. 06:14.04 Ben Rady Right. 06:15.17 Matt Godbolt But you know, your friend has been and learned Haskell and has gone off to do something else or whatever. 06:19.06 Ben Rady right Right. 06:19.34 Ben Rady Right. They got that job in Haskell that they wanted to get, right? 06:21.94 Matt Godbolt But, you know, you have to have an understanding employer to let you do those kinds of things or, you know, or be in-between jobs. 06:31.67 Ben Rady that 06:32.42 Matt Godbolt And then you get the choice of doing it any way you like. 06:34.80 Ben Rady I was just going to say, this is like your every day right now, isn't it? 06:36.70 Matt Godbolt At the moment, I get to choose pretty much what I want to do. Yeah. And yeah, that that's a whole different story. That's perhaps one for later. 06:43.86 Ben Rady Yeah. 06:43.88 Matt Godbolt But yeah, so where were we? We were talking, you were you were saying, yeah, I've distracted myself. 06:48.96 Ben Rady Oh, yeah. No, I mean, I just sort of like, I really like the model of sort of exploration versus exploitation and being, ah you know, or exploration versus execution. 07:01.18 Ben Rady I don't know what the better way is to describe that, but 07:03.68 Matt Godbolt Yeah. 07:03.78 Ben Rady But it's either like, you know, are we are we evaluating different ways to do things or are we doing things, right? And I think being responsible with that gives you, um you know, sort of like the freedom that comes with authority, right? 07:20.90 Ben Rady Like, I'm going to be responsible for making this decision and doing it in the best interest of the company and ah because of that, I'm going to expect people to trust me to make the right decisions. 07:31.84 Ben Rady And then that means when I decide like, yep, we're doing this in Java and with tests and we're going to do continuous deployment and we're going to do all these things. Like, it so long as the result of that is that I deliver working software that benefits the people who are paying me, then no one's gonna ask any questions. They're gonna like, great, thanks for doing that. 07:49.04 Ben Rady And if it's like, you know, why is this taking so long? Or why do you continue to have problems? And my answer is, well, our continuous deployment system has some bugs and I haven't quite worked out all the ways in which this integrates with Google Cloud yet. And like, they're gonna be like, okay, but why? 08:04.36 Ben Rady Why are we doing this, right? 08:05.74 Matt Godbolt Why didn't we just do this in Python like everything else is or whatever the equivalent is? 08:10.45 Ben Rady Yes, exactly. Right. 08:10.73 Matt Godbolt Right. Yeah. 08:11.00 Ben Rady Or whatever it is, right? 08:12.00 Matt Godbolt So this is absolutely the kind of thing where, yeah, you have chosen to sort of stake and spend some of your "reputation points", ah your goodwill budget with the rest of the organization say, "I believe this strongly is the right way to do something." 08:27.04 Matt Godbolt And you know you've got your evidence to back it up. 08:28.96 Ben Rady Yeah, but I'm doing that I'm doing that anyway, though. it Just by embarking on this ah this ah responsibility to build this thing, I am staking my reputation. And the only question is, what outcome am I going to get, right? 08:39.72 Ben Rady So like you know if I say equally, if I say... There's not really a nobody got fired for buying IBM effect. 08:48.22 Matt Godbolt Right. 08:48.80 Ben Rady Really? Right. It's like, ultimately, ah in some ways it's worse. It's sort of like, okay, well, if you're going to do, if you're not going to have any strong opinions about how to do things and you're just going to do things the way that, you know, the more senior people around you maybe say to do, or sort of like the, you know, the, the, the sort of default path of the, of the company, like, you know, people going to also still... 09:13.45 Ben Rady ...correctly expect you to get things done. And if you aren't effective at getting things done that way, it doesn't really matter. 09:19.18 Matt Godbolt true 09:19.30 Ben Rady Right? So like the thing that really matters is like actual running, working software and production and how you get there can be a matter of opinion and can be, you know, a matter of even experience, but the, the proof is in the pudding. 09:34.90 Ben Rady So like just doing it this the standard way does not absolve you of the responsibility of doing it. Right? 09:41.54 Matt Godbolt Right, but it does meaningfully change the way that it's perceived, I think. Like if you were just to do it the "obvious" way that everything else is being done, then as you say, it's like the IBM, no one that got fired for it, right? You could, there's a defense in not delivering that it was just like, okay, this was just a difficult thing to do. 10:01.54 Matt Godbolt And there's not like an approach that I pulled out of left field that might be scapegoated, perhaps, as to why it wasn't, the software wasn't achieved, right? I could imagine, for example, you know, like the Haskell thing here is like, you know, if you succeed and you did it in Haskell, maybe you get the free pass and then everything's better. But if you if you screw up because it wasn't possible to achieve it, people will latch onto the fact that you wrote it all in Haskell rather than you did it the same way that everyone everyone else is doing. Is that... 10:29.02 Ben Rady Yeah, I mean, I can. 10:29.80 Matt Godbolt Am I too pessimistic? I suppose I am seeing here, and I'll be honest with you, some parallels with decisions that I made a few years back in in the way that I chose to develop some software. 10:40.66 Matt Godbolt And they that did come back to sort of sort of haunt me in terms of like I staked quite a lot on something. And that was ultimately not the right way to go forward. And I agree with that. But it did I did have to bear those consequences, as you do when you take responsibility. 10:54.57 Ben Rady Right. 10:54.69 Matt Godbolt That's that's just what happens, right? 10:56.37 Ben Rady Yeah. 10:56.44 Matt Godbolt So I suppose I'm a little bit like, "ooh". 10:59.02 Ben Rady Yeah. I mean, if if things don't work out for the best, there's you're definitely going to be able to find a reason why. Right. and that And that reason why can easily be because you decided to do things your own way and not the standard way. I'm not saying that's not possible. 11:16.82 Matt Godbolt Of course, yeah. 11:17.74 Ben Rady But the i feel you know i've I've used the metaphor many times of running across a lake. And, you know, software development is like... 11:26.04 Matt Godbolt but Like the Jesus lizard, yeah? Have you seen this that lizard? 11:30.74 Ben Rady i I don't know that I've seen that particular lizard, but I know that there are lizards that run across... 11:33.82 Matt Godbolt It's called the Jesus lizard. (Editor's note: it's really called the "Common basilisk" https://en.wikipedia.org/wiki/Common_basilisk) 11:35.88 Ben Rady Really? 11:35.98 Matt Godbolt It's amazing. It runs across water. And I just... I love that someone was so blasphemously naming things that they were like, this is... this is I mean, it's like, as soon as I said it, you knew what it was. 11:46.42 Ben Rady Yeah, right. That paints a picture, I'll tell you. um 11:49.26 Matt Godbolt But anyway, yeah, so you're a software engineer, you're running fast and you're not falling into the lake because you're just keeping going. 11:54.96 Ben Rady yeah Right. Right. And, and there's, I think, I think there's a lot of value in kind of, um, and this was a ah lesson that I, I learned, uh, relatively like halfway through my career when I was, we have an episode about, you know, bad business models and starting a ah company. 12:13.65 Matt Godbolt Yeah. 12:14.02 Ben Rady And you, you may, I may be told the story in that podcast, but for, forgive me, listener, if you've heard this before, But I remember having a conversation. We had formed a small company within the consulting organization I was working at. 12:26.58 Ben Rady And i um we had all these plans for taking this open source project that we have and closing it and then selling it. And I had come to like the first or maybe the second board meeting with a long list of things to do if it doesn't all work out. And it's like, OK, well, we can reopen the software and then we can do this and we can you know release this thing. We do this. 12:44.36 Ben Rady And the a person that that was the CEO of the consulting firm and was on the board of this little internal company was like, Ben, stop. Whoa, whoa, whoa. If you figure out all the ways in which this is going to fail, you're never going to have time to succeed, right? 12:56.95 Matt Godbolt Ha ha ha ha ha! 12:57.68 Ben Rady Like you you have to focus on how you're going to make this work, right? 13:01.68 Ben Rady And so the kind of analogy that I have in software development is like – Like planning for like as engineers, we think about failure all the time. and We think about failure modes all the time. 13:13.44 Ben Rady But I don't think that that type of mentality works as well when you sort of go up a level and you're like, OK, how am I going to organize this effort? Right. um You have to think about like, how are we going to succeed? And so, like, you know, the analogy of running across a lake is the way you run across a lake is you go real fast. 13:33.16 Ben Rady That's how you do it. 13:33.56 Matt Godbolt And you don't stop for anyone. 13:34.82 Ben Rady You don't stop for doing it. So you don't want the life preserver and the signal flare and the tool belt. Like all you really need is shoes - maybe - right? 13:46.26 Ben Rady Like just go real fast. 13:48.90 Matt Godbolt Right. 13:49.10 Ben Rady And so I grant you that in those situations where you fall in the lake and things have not gone well, if you should, you're right. 13:57.66 Matt Godbolt Everyone says, well, you should have had ah life preserver. You should have been where, why the hell did you not have your tool belt with you? 14:05.48 Ben Rady Exactly, exactly. 14:06.53 Matt Godbolt And your, yeah, yeah, yeah, yeah. 14:06.90 Ben Rady It's like this didn't work because you used Haskell. It's like, no, this didn't work because we didn't go fast enough because apparently I didn't understand this as well as I thought I did. Right. 14:16.74 Matt Godbolt Right. 14:16.74 Ben Rady So I don't know. And that I grant that that is a very that in itself is kind of like an opinionated view on how to do these things. 14:24.02 Matt Godbolt It, it certainly is. 14:24.48 Ben Rady Right. Like and and there are lots of situations in which even I would not apply those principles. But those are sort of my default principles. Right. So, you know, i I don't know. I, I can, I can see a world in which, uh, I don't want to call playing it safe. Cause I really don't think that it's playing it safe, but sort of like playing it safe and just doing what everyone else is doing around you is not a wrong strategy. 14:53.96 Ben Rady Um, but I think, you know, at the end of the day, so long as you build things that, that people want and you build them at a reasonable pace and you like, think a lot of this also is just not, uh, putting yourself in a situation where you're just slowing yourself down. 15:09.82 Ben Rady Right? Like creating a lot of mess and cruft and cruft actually literally cruft that, that is borrowing from your future productivity in the name of, of doing something today. 15:22.64 Matt Godbolt Literally. 15:22.76 Ben Rady I think a lot of it is also, also that and knowing when you need to fight for that. So I don't know, i'm kind of off on a tangent here, but. 15:28.50 Matt Godbolt No, that's good. No, I mean, certainly, Cruft is top of mind for me as I've been spending the last few weeks you know doing Compiler Explorer things and spending a lot of time regretting decisions that were made 10 years ago that were made... 15:42.10 Matt Godbolt ...And some of those decisions, are it was it seemed like the best idea at the time, and they're fine. It's just you know they need to be updated. That's cool. but many, many of them are like, I didn't really, it wasn't thought through. 15:52.24 Matt Godbolt And, you know, you regret them. But then some of the other things are like, well, if this had never scaled to four terabytes of compilers, then we wouldn't have this. 16:03.86 Matt Godbolt This is a new problem, right? No one would have thought this, you know, who yeah who I mean, when I speak to people about some of the issues we face, 16:10.74 Ben Rady Right. right 16:10.74 Matt Godbolt Oftentimes they're like, oh gosh, I'd never even considered that would be a problem. And you're like, yeah, no, neither did we. 16:17.72 Matt Godbolt And now it's a big focal point for us. It's like, how do you deploy this? Oh, well, you just copy the bits around. Well, there's four terabytes of it and nothing in Amazon works like that. Oh, yeah. 16:27.86 Ben Rady Yeah. 16:28.22 Ben Rady Yeah. Yeah. yeah 16:28.71 Matt Godbolt Yeah. 16:28.87 Ben Rady I don't know that I would argue that those decisions that you made 10 years ago were wrong. I think, I think the cruft comes in when you are, you don't feel ah safe changing them. 16:40.36 Ben Rady Right. Like, 16:41.02 Matt Godbolt Yeah. And that that is also true. You know, a lot of this stuff is specifically for Compiler Explorer. 16:45.39 Ben Rady Yeah. 16:45.48 Matt Godbolt you know, we're a shoestring budget thing. 16:47.18 Ben Rady yeah 16:47.40 Matt Godbolt We don't have a copy. We don't have a second deploy that I can play around with, with the sort of big infrastructural changes, especially stuff like, you know, let's just copy all the compilers somewhere else and then poke around with them. 16:58.11 Ben Rady Right. Right. 16:58.66 Matt Godbolt I don't, even if I did have, I mean, we have some staging and stuff, but if, even if I did have like a full copy, I could run somewhere else... My confidence in being able to say this categorically still works, now I've you know moved everything around. I've changed the file systems. I've done whatever I choose to do. 17:14.76 Matt Godbolt My confidence is not very high. You know I can curl a few things. 17:18.62 Ben Rady right 17:18.90 Matt Godbolt I can look at... Yeah, it's it's not straightforward. You know to and some extent, my own personal usage pattern of the site does not comprehensively enough... 17:31.72 Matt Godbolt cover all the things it *can* do. And because we don't have the tests for most of the user interface or even most many of the compiler type things that we do, I'm not confident in making changes. 17:43.68 Matt Godbolt We just kind of have to wing it and hope, which is not good, right? 17:46.82 Ben Rady Yeah. 17:46.98 Matt Godbolt you know I'm talking to Ben Rady here. 17:51.26 Ben Rady Yeah. 17:52.96 Matt Godbolt And it doesn't feel good. And so some of the things that I'm doing right now, you know like a lot the this with with this is going off on a tangent to your tangent now, but like the things that I'm trying to do now are set myself up for further success by... 18:06.82 Ben Rady Yeah. 18:06.82 Matt Godbolt Going back and adding types to a lot of the things that were untyped and have horrible casts in the TypeScript. You know, we moved from JavaScript to TypeScript and there was a ton of stuff along the way that just has, you know, `as any` or `as unknown` because we didn't know what type things were. 18:21.68 Matt Godbolt And now I'm actually spending the time to go back and put the types in and uncovering all sorts of weird cases where it's like, hey, sometimes we return an object. Sometimes we return false. 18:29.71 Ben Rady Right. 18:30.22 Matt Godbolt That doesn't seem like anyone would choose to do that, but that's what happened. 18:33.32 Ben Rady Yeah. yeah 18:33.44 Matt Godbolt And then you go and, you know, you pull on the threads. And so I feel like that helps to make it easier to make changes. And while I'm doing it, I'm adding tests and even adding test frameworks. I made a big change recently to move a whole bunch of stuff out of the front end into a place where I can run the test for it, independent of a browser being involved, because most of the code is like, doesn't care about the DOM. 18:55.74 Matt Godbolt So, you know, you want to test whether this string is a valid descriptor or an identifier, well, then that can be tested outside... stuff like that. All of these things, like well ah hopefully, en masse will make it faster for us to go forward in the future. 19:11.96 Ben Rady Oh, yeah. 19:13.78 Matt Godbolt Yeah, so that is a very tangent to your tangent. 19:16.21 Ben Rady Yeah, yeah. 19:16.34 Matt Godbolt But yeah, that's top of mind for me is how do I make myself more productive? How do I get myself into the world where the the the environment gives me the protections I want? And I think to circle all the way back to the beginning, the thing that you said at the beginning of this was like you're in a greenfield environment where you set it up the way that you think it should be done. 19:35.06 Matt Godbolt And I think you and I both like that. You know, I have a C++ template project, which is like, this is all my rules or my Lint rules are set up or my pre-commit hooks are done this way. 19:42.83 Ben Rady Mm-hmm. 19:42.90 Matt Godbolt You can't, if you make a change to my project and you get it past CI and you get it past the PR, then it should be a good change, right? There should be no way that you can get it past. 19:52.92 Ben Rady Yeah. 19:52.98 Matt Godbolt And if it's not, that's on on me. That's a bug in the infrastructure that let you put a bad code into my project. 19:59.80 Ben Rady Yeah. 20:00.64 Matt Godbolt Compile Explorer is not there yet, but it will be, I hope, 20:03.15 Ben Rady Right. Yeah. Yeah. 20:04.08 Matt Godbolt And it's sort of getting there. Yeah. Yeah. 20:08.58 Ben Rady Yeah, no... cars have brakes you can drive faster. Those kinds of things that reduce fear, reduce risk, and let you you know take a run across the lake because you know you're a good swimmer will absolutely speed you up, right? And I feel like the unfortunate truth is that a lot of those things kind of have to be built in from the beginning. 20:31.98 Ben Rady I actually remembered the thing that I was thinking about earlier with the topic that I wanted to talk about 20:35.74 Matt Godbolt Oh, good. I was able to talk long enough for your brain to recover. 20:39.38 Ben Rady Yes. All that actually, no, you're, but you actually reminded me of it with all the automation stuff. 20:43.64 Matt Godbolt Oh, good. 20:43.64 Ben Rady So just this week working with a new intern on my team, I figured out how we figured out how to completely automate in user mode or in user space Docker building and running. 21:05.04 Ben Rady So for the longest time, one of the big, bugaboos for me has been, if I want to build a Docker container, I can't use my, you know, `make download` the the tools that I want and stick them into the tools folder approach because you have to have some `sudo` installed or some, yeah, all of these terrible, terrible, terrible things. 21:26.97 Matt Godbolt setuid root thing, yeah.. 21:28.36 Ben Rady I using a combination of the standard Docker client, which is cool and and actually pretty easy to install that way, a library called Colima. 21:40.76 Ben Rady And another thing that it depends on called Lima, which also can be installed this way. I was able to build a Docker container and run it and have all of the tools entirely installed just in the home directory of the user with no special permissions. 21:55.58 Matt Godbolt So some, yeah, just magical, I could `git clone` your repo and type `make`, and as long as I'm on ah ah but an a supported operating system, should we say, which should be, you know, ah it will get the tools that it needs to do this and build this stuff without some deus ex machina kind of like process that you're like, ah, first you must `sudo apt install` all this stuff, the stuff that you and I dislike. 22:15.52 Ben Rady A supported operating system, yes, exactly. 22:16.12 Ben Rady Yes, you have to download this DMG file and double click on it and do all these other terrible things. 22:20.50 Matt Godbolt Oh, that's awesome. 22:22.04 Ben Rady Yes, yes. and and And that kind of automation, I think, to an outside person would seem like, why are you spending all of this time to do this? Because I think it took us about a day to do it. 22:36.34 Ben Rady Why are you spending all of this time to do it? And it is so that, and this is especially true of this particular type of project that we're working on because it sort of gets worked on in fits and starts, right? Like you work on it for a while and then you come back to it and then you just think. 22:49.74 Ben Rady So it's like, it is so that six months from now when something is broken and I need to fix it right now, the way that I set up that development environment is I `git clone`, `make`, done, figure out what's going on, push it and not like `git clone`...oh... 23:08.02 Matt Godbolt Right. 23:09.18 Ben Rady None of this works and, and it will take me six hours to make it work because these versions are no longer up to date and this package doesn't exist anymore. And I can't find the download link for that. And these docs are wrong. 23:22.70 Ben Rady And that is, that is like a classic example of like the kind of thing where I feel like you get very opinionated about it. You have strong... 23:36.12 Ben Rady Well-reasoned arguments for for why you do it. And so long as you can successfully achieve the outcomes that you think you're supposed to be able to achieve while using these approaches, no one's going to care because it just works. 23:51.50 Ben Rady If it doesn't work, then all the blame comes out. And then all of the second guessing and the Monday morning quarterbacking comes out and says like, okay, why did you do it like this? 24:02.00 Matt Godbolt Yeah. Yeah. But, but also to your point, you know, like the whole, you know, we, you and I have, have talked about this before. We, we both love this idea of like a sort of more hermetic build or whatever you need environment. 24:14.50 Ben Rady Yeah. 24:14.60 Matt Godbolt And I think that, you know, there are stuff more modern things along have come along since then, you know, dev containers and some stuff that uses Docker trickery to actually like make that. I don't, you know, 24:23.62 Ben Rady Mm-hmm. 24:24.10 Matt Godbolt I have opinions about that. But the reason that *I* went for this from my previous point of view was that some people at Google had set up their development environment like this, and I saw that it was possible. 24:36.62 Matt Godbolt So that does dovetail back into your original thing. 24:38.80 Ben Rady yeah 24:38.82 Matt Godbolt This is like a senior developer telling you, oh, yeah, you can do this. It is possible to make it so that you can just have a directory... 24:45.74 Matt Godbolt There's nothing magic about compilers. They aren't system software. they they They like to masquerade and pretend they are. But if you need GCC 1.2.3 to run your code, you can download and install it, or you can build it so that it can be downloaded and installed, or you can do all this stuff. You can spend a bunch of time. 25:01.58 Matt Godbolt You now learn how to do that, and now you can take that on to the next thing. And then, you know... The frustration specifically in this case was like ah the very first company you and I both worked at together, where we were stuck for a very long time on the version of GCC that came with the operating system that our production machines had, which was also you know an ancient version of Red Hat. 25:23.01 Ben Rady Yeah. 25:23.08 Matt Godbolt You're like, why are we using a 10-year-old GCC 10 years ago? 25:27.92 Ben Rady Right. Yeah. 25:28.48 Matt Godbolt oh because of this. Oh, it's hard do. No, no. We can make it. We can solve this problem. 25:34.68 Ben Rady Yeah. 25:34.88 Matt Godbolt We can build our own compilers. We can make them work. And then we can make it so that that is an easy thing to do. And it's part of, was it "Fig"? I think was the name of the funny little thing that we started installing stuff in. 25:45.28 Ben Rady Oh, yeah. 25:45.41 Matt Godbolt And i you know. 25:45.66 Ben Rady I think that sounds about right. 25:46.22 Matt Godbolt There was a package management system, whatever. Anyway, and it was a lot of effort and lot of work, but we got it working. 25:50.86 Ben Rady Yes. 25:50.86 Matt Godbolt And it was so beneficial because then we could upgrade our compiler, upgrade everything. And it just worked. And it was. Anyway, we didn't do it because of that. That just is side effect. 26:01.98 Ben Rady Yeah. You know, the funny thing about these practices is I feel like they spread like viruses, but that is they only spread through contact. Right. It's like it's it's like because there's a lot of things. 26:13.22 Matt Godbolt Ha ha ha. 26:13.22 Ben Rady There's a lot of things that I've seen like this where it's like I have explained these things till I'm blue in the face. And I made the arguments that I'm making on this podcast right now about why they're beneficial. Right. do And I get a lot of people with like blank stares and it's like, okay, sure, fine, whatever, and nodding heads and whatever. And they just walk away and they ignore it. 26:30.88 Ben Rady But the second that I work with somebody for like, you know, it's not a second, but when I work with somebody for like a reasonable period of time and they actually see how this stuff works, it would becomes impossible for me to convince them *not* to do it. 26:47.00 Matt Godbolt Right, right. 26:47.92 Ben Rady Right? Like they see the value of it firsthand and they sort of experience it like viscerally. And it just like, now they can't imagine doing it any other way. Right? 26:57.20 Matt Godbolt Why would you do it any other way? 26:58.44 Ben Rady Right. 26:58.80 Matt Godbolt Yeah, just it's like, yeah, you have to get over the hump there. 27:00.70 Ben Rady Right. 27:00.86 Matt Godbolt There's some kind of... ah function where the, you know, you got to get over the hump or quantum tunnel through the hump. 27:06.60 Ben Rady Yeah. Right. I was going to say like, 27:07.15 Matt Godbolt I guess, you know, you, you either, you go up the, up the, ah you know, you spend the 30 years climbing the hill, you know, and then falling down into a, into a better place, the other side of the hill. 27:16.59 Ben Rady yeah 27:16.72 Matt Godbolt And you go Hey, this is better than than it was the other side of the hill or through contact with someone, you allow them to quantum tunnel through experience hill and come to the better place without actually having to make all the mistakes along the way. 27:29.86 Ben Rady Yeah. 27:30.00 Ben Rady Right, right. Yes. Wow, that's ah I love that. 27:33.64 Matt Godbolt There's an image. 27:33.74 Ben Rady That is a great analogy. I love that, quantum tunneling through the hill. 27:38.48 Matt Godbolt There's an image. 27:38.48 Matt Godbolt Experience. Yeah. ah that's what That's what mentorship is, is letting other people quantum tunnel to a better place without having to go through as much of the pain that you did. 27:51.09 Ben Rady Yeah. 27:51.30 Ben Rady Right. Let me show you the secret passage through the mountain. Yeah. 27:55.16 Matt Godbolt Yeah. 27:58.54 Ben Rady I don't know. 27:59.68 Matt Godbolt Well, that was, that was a surprising amount of talking for no idea at all. 28:04.46 Ben Rady No idea. i mean, I guess I did eventually remember the thing that I was talking about before, but, and maybe that would have led us to this topic anyway, but yeah. 28:11.14 Matt Godbolt um suppose I suppose so. 28:12.94 Ben Rady Yeah. 28:13.90 Matt Godbolt Yeah, but no, I think your your your starting point of like having ah a good project and a nice setup and whatever is certainly top of mind for me now as I'm sort of retrofitting it into Compiler Explorer at some level. 28:26.23 Ben Rady Yeah. 28:26.28 Matt Godbolt I mean, we've always had some level of this, but it's improving it and shoring it up. 28:30.16 Ben Rady Yeah. 28:31.30 Matt Godbolt And then, you know, you and I have been discussing, ah this seems like a complete left tack and late on in the podcast, but it's worth mentioning, I think, is that like um the things that make it easy to dip in and dip out of projects like this, or be it because it's easy to set up, be it because there's clear documentation, there's no surprises, be it because the lint rules make it obvious when you're doing something the way that you're not supposed to be doing it or whatever. 28:54.99 Ben Rady Mm-hmm. 28:55.14 Matt Godbolt So you kind of put people on the on the good path. Yeah. be it like decent documentation that says this is how we do stuff here. 29:02.67 Ben Rady Yeah. 29:02.92 Matt Godbolt All of this is useful for an intern coming onto to a project coming off. And that intern could be an LLM in today's climate. 29:11.34 Ben Rady Right. 29:11.52 Matt Godbolt And that seems to work fairly well too. 29:15.05 Ben Rady Yeah, yeah. 29:16.32 Matt Godbolt And so I'm sort of mindful that that is out there and, and it's certainly, um, a decent subset, like a good 80% of the things that are useful to make life easier for this amnesiac junior programmer to come in and try and make a small change so on ADD meds to come in and, uh, make a change. 29:37.30 Ben Rady Yeah. 29:38.12 Matt Godbolt to ah my project, but that also helps the actual intern that's going to come on and hopefully will mature into ah full featured junior developer and then a senior developer and go on to do great things, right? 29:51.30 Ben Rady Yeah. 29:51.33 Ben Rady Yeah. Yeah. 29:51.40 Matt Godbolt But that's it's an on-ramp for everybody. 29:53.07 Ben Rady yeah 29:53.90 Matt Godbolt And so that's sort of like top of mind. And yeah, I don't think we have time to talk about the full ins and outs of that. But it's it was an interesting thought that like that this this nice setup is also conducive to that. 30:04.90 Ben Rady Oh, it totally is. And then you know there's there's this some like industrial design and like tool design thing of like trying to design for the edges, right? like And and like a lot of um things that people started to discover when they started building um both like devices and also like buildings and sidewalks and things like that for disabled people is that it actually winds up helping everyone a lot more than they wouldn't have expected 30:31.16 Matt Godbolt able bodied folk. Yeah. 30:32.30 Ben Rady Because when you kind of design for those extremes of like, well, what happens when somebody is like 75 pounds and can't lift this? Or what happens when somebody is, you know, seven feet tall? Or what happens when somebody is in a wheelchair? What happens when somebody can't see? 30:44.86 Ben Rady You wind up creating these things that are just easier for everyone, right? 30:49.22 Matt Godbolt Right. 30:49.46 Ben Rady And I think that there's a lot of that when it comes to both designing for, ah you know, junior developers and LLMs and me six months from now after I've slept a bunch of times and don't remember how this all works. 31:01.74 Ben Rady Like all of those people kind of have the same problem. Right. Which is they don't understand what's going on and they need some guardrails to make sure that they don't make any stupid mistakes. 31:10.53 Matt Godbolt Yeah. 31:10.92 Ben Rady So like designing for this stuff has tons of value. And I think just like with some of the, you know, ADA accessible things, it's like you don't really discover that and maybe this is why I'm tying it back to the whole like it spreads like a virus and I can't seem to convince people maybe this is the problem it's like until you walked on the sidewalk that is like gently sloping up to the thing instead of like the stairs where you're huffing and puffing ah you're like yeah this is better like I didn't think about it but it really is better right 31:38.52 Matt Godbolt Yeah, that is it. Yeah. No, I think so. Well, that seems like a decent place to park the conversation, because otherwise I think we're going to start off with the whole other thing. 31:48.82 Ben Rady We're going to do a whole other second podcast on top of this podcast. 31:50.70 Matt Godbolt Yeah, which we don't have time for today. 31:52.70 Ben Rady Yes. Yeah, now that's true. 31:53.62 Matt Godbolt But yeah, I mean... 31:55.73 Ben Rady Yeah. 31:56.46 Matt Godbolt I think that's a great analogy. Yeah. The, whole idea of helping one set of people helps everybody ah in the, in the context, both in the real world in, and you know, like screen readers and things like that, that's helps, you know, and and yeah, yeah but better documentation. 32:10.63 Ben Rady Yeah. 32:10.76 Matt Godbolt You're like, well why do you need documentation? It's like, well, helps new people, but it also helps you, you know, down the line. 32:16.58 Ben Rady Yeah. Yes, it does. 32:17.62 Matt Godbolt Yeah. Yeah. 32:17.98 Ben Rady Yes, it does. 32:18.24 Matt Godbolt Well, friend, I think we should probably leave it there for this week. 32:22.66 Ben Rady Wonderful as always. 32:23.44 Matt Godbolt This month, I suppose. Yeah. 32:24.35 Ben Rady Yeah, true. 32:24.82 Matt Godbolt As you know, you and I talk about this, but we, yeah, the timing these things come out on is different from the time we record them, which confuses both you and me and now the listeners as well. So nevermind. 32:35.17 Ben Rady Right. 32:35.40 Matt Godbolt But yeah, um have yourself a great summer. If I don't, so if we don't talk before then, as I think that will, will be the case. 32:43.63 Ben Rady Mm-hmm. 32:44.46 Matt Godbolt And until next time. 32:51.64 Ben Rady Until next time.