Code standards w/ Matt Stauffer
00:00:06.56
Chris Morrell
All right, welcome back to Overengineered, the podcast where we ask the question, what's the absolute best way to do things we already have a perfectly acceptable solution for? ah Today, I am here with Matt Stauffer, and I feel like this is another one of those ones where I feel like I have a running bit. I can't imagine that anyone who's listening to this podcast doesn't know who you are, but why don't you ah go ahead and introduce yourself anyway.
00:00:30.32
Matt Stauffer
I would glad to, but at first I got to say you were a man after my own heart because I work so hard with every podcast I ever make to have a good like funk. Like I want, I want an intro that like kind of gets me like going. And so when you have that play every time I'm like, Oh no, we're going to have a good conversation. I like this. Um, hi, I'm Matt Stauffer. Uh, I am the CEO and founder of Titan, which is a consultancy working primarily in Laravel. Uh, we help people build and rescue the web apps and then build and rescue the development teams that they work with. um I run the Laravel podcast in the business of Laravel podcast. I wrote Laravel up and running, speak at conferences and try to help the internet be a nicer place.
00:01:10.60
Chris Morrell
and I can attest to the fact that you certainly do that.
00:01:13.02
Matt Stauffer
Oh, I appreciate that.
00:01:13.80
Chris Morrell
um
00:01:16.51
Chris Morrell
when When we started talking about doing a show, ah the the idea that I pitched you that that ah that at the time felt a little bit ah little bit too small, but still funny, was you and I have both independently ah essentially developed a whole linting setup to enforce our own personal programming preferences upon our entire teams.
00:01:40.86
Matt Stauffer
Yep.
00:01:41.11
Chris Morrell
um And I think, I mean, T-Lint is like, that that's where that came from was just like, I want to stop having these conversations. And sure, yeah, yeah, we'll get into the backstory.
00:01:50.99
Matt Stauffer
Yeah, there's more than that though, but yes.
00:01:54.87
Matt Stauffer
Yeah, there's so many backstories.
00:01:55.55
Chris Morrell
um And Lara Lin is the same thing. It's just like, ah I actually contributed a couple of things to T. Lin. And then for some reason, there was a there were enough changes that I was just like, screw it, I'm just going to build my own thing.
00:02:11.07
Matt Stauffer
Nice.
00:02:11.31
Chris Morrell
ah And so I have my own ah basic version of that. And you know it's it's all sorts of different things. It's just enforcing, do you use facades? Do you use global helpers?
00:02:23.71
Matt Stauffer
Right.
00:02:24.10
Chris Morrell
um you know that the the sort of like It doesn't really matter. There are 15 different ways to do things, but let's pick one and be consistent.
00:02:32.12
Matt Stauffer
Yeah.
00:02:32.47
Chris Morrell
um And yeah, I don't know. I just think, especially in like sort of the context of over engineering, there is just something very amusing about that whole approach to. to ah
00:02:45.03
Matt Stauffer
Yeah. What am I going to spend my time with making everybody else code like me?
00:02:48.90
Chris Morrell
Yes, but. ah And thinking about it, i I don't, I think there's a lot more to it. And so I thought we will take that as a jumping off point around a larger conversation.
00:03:00.70
Matt Stauffer
Yeah.
00:03:02.81
Chris Morrell
So I don't know, I'd love to hear a little bit of the backstory of, you know, how, how did your approach this start?
00:04:27.45
Matt Stauffer
So when we first started Titan, there was two of us and my business partner was like, Hey, I'm nearing 40. I'm tired of coding. And I was like, Hey, I'm tired of rejection. I don't want to be selling to people all the time. Can I just code? And so that's how we set it up. And almost all of our first hires ended up being, um, programmers who were more apprentice level, who I would basically bring in and I teach them and train them as we went. Um, so a huge amount of my time and energy was like teaching them and then making sure their code was good. And one of the things we learned really early on was that like the amount of my time that was spent just cleaning up code style things was inordinately higher than the amount of time that was spent like talking about architecture and structure and implementation in the way that actually will matter for performance. And we can talk in a second about why I was spending that time doing that. um But in the end, it just kind of left me
00:05:20.63
Matt Stauffer
like, not wanting to do that. And at that time, Adam weather and worked at Titan. And he's like, Well, here's my idea. You have a code standard, right? And I was like, Yeah, totally. And there's no GitHub actions at this point, there weren't there are a lot of tools around there to automate things.
00:05:31.51
Chris Morrell
Okay.
00:05:33.50
Matt Stauffer
So he built a tool and I wish I could remember the name of it. I think think it's still on the internet. And he built a tool that automates basically the um the PSR, whichever it was at the time that links your lin your stuff. And so it would basically pull it up and they would put a whole bunch of issues on your pull request and say, hey, you need to go fix this. And later, um Graham came along with style c CI, and that was kind of the one that was a little bit more integrated in Laravel. But at that point, he was just sort of like, hey, this is ah this is a thing that we need. We're going to build this tool. And so we just like implemented this tool in all of them. um And that was actually the beginning of the story. So T-Lint and now Duster, those all came later. At the very beginning, it was just this inherent idea
00:06:11.56
Matt Stauffer
that like we shouldn't have and i think that was even the pitch on adams website is like you shouldn't waste your time you know on commas and periods and double quotes and stuff like that when you're doing code review code review should be about what's unique to this actual you know piece of code so that was the foundation for us i'm guessing you had a similar one right like you're reviewing people's code and you're like hey and i want to deal with this.
00:06:24.97
Chris Morrell
Yeah.
00:06:30.54
Chris Morrell
I mean, I think my story is a little different. It's it's similar, but you know i I worked on this code base for decades, ah and or a decade before anyone joined.
00:06:47.29
Matt Stauffer
Yeah.
00:06:47.35
Chris Morrell
And then ah you know I had one other developer working with me for years. um And so when we got to a place where there were a few different people working on the code base, it was in a very opinionated place.
00:07:06.25
Matt Stauffer
yes
00:07:06.66
Chris Morrell
um And yeah, i think that I think that to some degree, um I am the type of person who has a hard time letting go of those things. So it's like, if I see it, it's going to drive me nuts. So I, you know, we ended up either having the conversations or I would just go in and like modify people's PRs to like change the style.
00:07:24.35
Matt Stauffer
Yeah.
00:07:31.61
Chris Morrell
Cause I didn't want to, like, I felt bad about like telling them to do it, but I still couldn't merge it without the change being in there.
00:07:31.95
Matt Stauffer
Yeah.
00:07:34.92
Matt Stauffer
Make it them good. Yep.
00:07:39.47
Matt Stauffer
Yep.
00:07:39.75
Chris Morrell
You know, there's a little bit of that. Um, But I also think that you know as as we got to a place, and and we're still only a team of three people, um but as we got to a place where a couple of different people were constantly contributing the code and I was contributing less, ah you know consistency of code just started to matter more. and um And yeah, it just felt like we had, at that point, we had adopted some of the existing
00:08:11.09
Chris Morrell
you know, we were using style CI, you know, we were using some of the existing linting and formatting tools out there. We we all use PHP Storm, so we had like a set sort of coding standard file that everyone used in there.
00:08:24.64
Matt Stauffer
Yeah.
00:08:26.45
Chris Morrell
um But all of those solutions still don't solve this question of like, We just don't do it this way or we always do it that way. Like these, these very common things.
00:08:34.91
Matt Stauffer
yeah
00:08:36.64
Chris Morrell
Cause it's like, it doesn't really matter if you do things in an evented way or a non-evented way, or if you like. you know, use facades or global helper methods or load things directly out of the service container. Like none of that stuff matters, but it is a lot harder to parse code when it's the same thing as done in four different ways across four different files, you know?
00:08:57.89
Matt Stauffer
inconsistent. Yeah.
00:09:01.05
Matt Stauffer
100%. Yeah.
00:09:03.32
Chris Morrell
um And I think that that started to be ah more apparent as different people came in with just like different default ways of doing things, you know?
00:09:12.02
Matt Stauffer
yeah
00:09:12.98
Chris Morrell
um And so it sort of transitioned away from, I think in the beginning, me wanting to sort of enforce this neuroses that I have to a real practical a practical value.
00:09:24.37
Matt Stauffer
Yep. Yeah. Yeah, and I think predictability is something that's like ah really important there is like understanding what where something's going to be, how it's going to look, how it's supposed to be, um is both important from a like a discoverability thing.
00:09:28.98
Chris Morrell
um
00:09:40.22
Matt Stauffer
like I need to find where this is going to happen. It's also important from a review, like is this done correctly or not? According to what we're we're expecting, correctly doesn't mean correctly in the world. It means correctly for this pull request. So this pull request is in the context of what it's supposed to do for product. It's in the context of what code is around it, and it's a context of the specific code base. And so like what it's supposed to look like does not mean that that's what every every implementation of that same set of code should do in the universe. But there is like and a way for a senior engineer to say, this should or should not look like this. And there's some variety, right? Like somebody might do a temporary variable or not a temporary variable. But there's also some things that are narrower than just like
00:10:19.45
Matt Stauffer
You know, this is the way it always should be done. No, but we can say there are defined ways that at this company or in this code base, it should be done like this. And when it's not like that, it you lose some of that predictability. You lose some of that discoverability. You also kind of like when somebody's reviewing, they now have to like see the thing that's wrong and decide, say, that's wrong. And also, it doesn't bother me. And the thing is, as someone who writes code, when you see code written different than the way your brain has been trained, this is what to do, this is what to do, this is what to do, it kind of like uses up some of your mental energy, right?
00:10:51.62
Matt Stauffer
And so like part of it is just minimizing the amount of time and mental energy and space that these reviewers have to spend or senior developers or whatever have to spend looking at things that are outside of the norm, right?
00:10:51.76
Chris Morrell
Yeah, for sure.
00:11:03.13
Matt Stauffer
So like if if that's going to be noticed anyway, why don't we let the computer notice and change it and then move on with our days, right?
00:11:10.09
Chris Morrell
100%, yeah. and And I mean, I think it also opens up a bunch of new possibility around Well, there's there are certain things that are like. if it's always consistently done one way ah over the course of the project, you actually do benefit from that. So like a good example is, um you know, form request objects, right?
00:11:30.88
Matt Stauffer
yeah
00:11:35.49
Chris Morrell
If you as ah as a team just decide like, we're always gonna put prepare for validation before rules, and we're always gonna put authorize before prepared for, you know, whatever the order is, it doesn't matter what the order is.
00:11:36.88
Matt Stauffer
Yeah.
00:11:46.35
Matt Stauffer
Yeah.
00:11:47.42
Chris Morrell
I like to think about it as like, we're gonna put these major methods in the order that they are executed within the,
00:11:52.94
Matt Stauffer
Exactly. the Same here.
00:11:53.94
Chris Morrell
the code.
00:11:54.04
Matt Stauffer
Yeah.
00:11:55.14
Chris Morrell
um Well, now, if you're looking at a file, you don't have to like open up the like ah symbol list or scroll down to look like, is there something that's like manipulating the inputs?
00:12:07.45
Matt Stauffer
You know where it's going to be. Yeah.
00:12:10.29
Chris Morrell
You just know at the top of the file, either there is a prepare for validation method or there is, you know, and, uh, you know, I think that for a lot of different things that can be really true for, uh, requests.
00:12:15.59
Matt Stauffer
There's none one at all. Yeah.
00:12:22.04
Chris Morrell
I think that's true for tests, having consistent naming and tests and, you know, where do you put your data providers, where do you put your set up and tear down methods? Like just ensuring that that's always the same. Yeah, it reduces, it reduces that, the cognitive load of the reviewer, but it also reduces the whole team's cognitive load as they revisit these files. Cause it's just like, I always know that set up is at the top, right? And there's never going to be a file where there's like a set up, a set up method that accidentally got placed like third, third down for some random reason, right?
00:12:54.74
Matt Stauffer
Yeah.
00:12:56.78
Chris Morrell
Like. Um, that just got missed by a human eye, but like the, the, the linter just won't let that happen. Right.
00:13:04.42
Matt Stauffer
Yeah.
00:13:05.04
Chris Morrell
Or controllers is another great example. Like just having your controller actions always in the order of like, you know, create store. yeah It just, it just simplifies as the way you process that code.
00:13:15.35
Matt Stauffer
yeah
00:13:19.88
Matt Stauffer
Yeah.
00:13:19.94
Chris Morrell
And, um, I do think there are actually meaningful benefits there.
00:13:23.85
Matt Stauffer
Yeah, yeah and and models are a really good example because you know you spend a decent amount of time interacting with models and you need to know, well, is this an accessor? Is this a publicly declared field?
00:13:32.89
Chris Morrell
Mm hmm.
00:13:33.18
Matt Stauffer
Is there something going on in the boot method? And so your ability to understand a model that you've never seen or or interacting for the first time in a while is significantly improved when, like you're saying, if you go to the model and you hit the accessor a section, there's no accessors. That means there's no accessors. And so this thing that might be an accessor is not, it's something else.
00:13:46.99
Chris Morrell
Right.
00:13:48.80
Matt Stauffer
you know It's just that predictability, that ability to kind of like step into something.
00:13:49.45
Chris Morrell
Yep.
00:13:53.77
Matt Stauffer
It's funny cuz you and I were talking the other day about modular design which we won't talk about here but and the same question I had about that applies here which is like how do we write code that makes it easy for people to walk into whether it is the someone who's been in this project for the last ten years and wrote that code eight years ago or but been on for the last 10 years and somebody else wrote that code or somebody else wrote that code yesterday and they're reviewing it or they're new like all these different spaces where we step into code that is not fresh in our brain. What does it look like to maximize people's ability to understand that to not make mistakes because you're duplicating something because you didn't see where it was or you have to dive longer whatever like there's so many things where the goal is to make it easy for people to see.
00:14:29.40
Chris Morrell
yeah
00:14:34.53
Matt Stauffer
And I wanted to to note something that you that you mentioned here that we forgot to talk about.
00:14:34.81
Chris Morrell
Yeah.
00:14:38.57
Matt Stauffer
When we're talking about these linters, there's like the standard PHP code sniffer lift linters and stuff like that, which tend to more be around comma placement quotes and stuff like that. And one of the reasons that we've both independently built tools is because those often don't catch Laravel specific things and they don't often catch the things like in what order are your methods or something like that. And so that's at least for us. We wrote TLint not to be the be all end all linter, but to give things for us to be able to control that you can't control with all the existing tools like PHP CS and PHP CS fixer and stuff like that.
00:15:11.63
Chris Morrell
Yeah, for sure. Yeah, because those tools are great, everyone should be using them at this point.
00:15:16.15
Matt Stauffer
Yeah.
00:15:16.15
Chris Morrell
um ah you know i'm not i Because of the sort of history of our code, um to some degree, i can I can claim that that's the reason and not just this is preference, but um you know I'm not 100% a subscriber to all the PSR standards, even though I know that
00:15:36.32
Matt Stauffer
yeah
00:15:37.53
Chris Morrell
For most people, that's just easier and better.
00:15:40.38
Matt Stauffer
Yeah.
00:15:40.39
Chris Morrell
um i I am still holding on to my tabs with my my bloody hands over here.
00:15:47.59
Matt Stauffer
You're a better man than me.
00:15:47.77
Chris Morrell
ah
00:15:48.47
Matt Stauffer
I had to let it go. I gave it up at the very beginning and only later was like, huh, you mean I don't have to always follow every single thing that the, the standard say, but at that point it was too late. So.
00:15:58.07
Chris Morrell
Yeah, yeah, I mean. I don't know, I'm gonna go there. The ah the experience of like interacting with code that is indented with spaces is still just like frustrating to me because um unless, I don't know, it's just it's not as it's just not as good to use, but anyway. um But it doesn't even matter. like All of that stuff is like, you should have software that just normalizes it for you, right? Like tabs or spaces, fundamentally, whatever you commit to the code base should just be whatever the tool does, right?
00:16:35.83
Matt Stauffer
Yeah.
00:16:36.41
Chris Morrell
and um and And I think you have to accept that every once in a while the tool forces you to write code that's not quite the way that you would do if you were like handcrafting every single line.
00:16:49.57
Matt Stauffer
Yeah.
00:16:50.00
Chris Morrell
Um, and that, that's just the reality every once in a while, but the vast but majority of the time it does a perfectly good job and the consistency is, is well worth the like three lines in my code base that I look at and like, I wish that that was indented differently.
00:16:54.23
Matt Stauffer
Yeah.
00:17:04.22
Matt Stauffer
Yeah. Which is, which is an interesting kind of transition to talk about who is it that is defining these standards. So we have definitely covered the fact that like standards are a good idea. Okay. School, we we believe that, but it's very interesting because your point at the beginning was. You know, talking about over-engineering, this is us implying our like imposing our i standards on the world. And we could tell you can tell you why there is a standard, but the question of why is there this standard definitely comes down to because I was here first, because I'm the boss.
00:17:32.41
Chris Morrell
Yeah.
00:17:32.84
Matt Stauffer
You know, it's so funny.
00:17:33.51
Chris Morrell
A hundred percent.
00:17:34.63
Matt Stauffer
Like when I started trying to teach people how to code at the beginning, I realized I was like, oh, the standard is just like, write this like Matt would. Like that's literally it. And I was like, is that a bad thing? And I was like, well, we got to pick some standards. So.
00:17:45.01
Chris Morrell
Right.
00:17:45.50
Matt Stauffer
I guess that's it. You know, and have you ever had an employee like, you know, any particularly spicy employees who've worked with you before push back and say, this is a, this is, you need to change this and it should be different.
00:17:57.05
Chris Morrell
Um,
00:18:00.02
Chris Morrell
i think i think that ah I think that when Daniel came to work at Internet, he had a hard time.
00:18:04.44
Matt Stauffer
Not Daniel. I couldn't imagine Daniel being the spicy employee.
00:18:05.96
Chris Morrell
He had a hard time.
00:18:09.61
Chris Morrell
ah What's so funny to me now is all the things that he complained so heavily about, like I see his code nowadays, he's still doing all of it.
00:18:17.52
Matt Stauffer
Uh huh.
00:18:17.99
Chris Morrell
I'm like, I gotcha.
00:18:19.47
Matt Stauffer
Gotcha.
00:18:21.79
Chris Morrell
um Yeah, ah you know, we've really only had like handful of people ever work on the code base so it's it's like you know that and that i'm so grateful for that you know i i had um you know one developer working with me from 2007 2006 on until just last year uh and then you know the the folks that are working here one's been here a few years the other just started last year but like i'm sure hoping that they're you know they're going to be long-term uh
00:18:28.11
Matt Stauffer
Yeah, fair.
00:18:53.04
Matt Stauffer
Yeah.
00:18:54.62
Chris Morrell
really, caretakers of the code. um And so yeah, I haven't had to deal with that as much. And I do think, I don't know if this is me, I don't know if this is me just sort of like trying to come up with a rationalization for my beliefs. I don't think it is. um Because I actually, when, I don't remember when I made this decision, But there was there was a point when I had had been reading um been reading research on just like code readability and like looking at the whole sort of light theme versus dark theme argument and um a couple of other things.
00:19:35.85
Matt Stauffer
Mm hmm.
00:19:39.06
Chris Morrell
just like the I was just curious. like what is it There is research on this stuff. What does the research actually say? um true procrastination at the like ah the pinnacle.
00:19:48.06
Matt Stauffer
Right.
00:19:49.06
Chris Morrell
right
00:19:49.67
Matt Stauffer
Yeah.
00:19:49.93
Chris Morrell
um And i you know I basically came and upon like ah light themes are better objectively and snake case is is better. And I was like, I think I'm just gonna give myself like two weeks of trying that and see, you know?
00:20:10.40
Matt Stauffer
Yeah. Yeah.
00:20:12.10
Chris Morrell
and and And we eventually changed our code standard to, you know, I don't care what theme people use, right? but
00:20:18.18
Matt Stauffer
Yeah. Yeah.
00:20:18.71
Chris Morrell
um I use a light theme now. I ah had been consistently, you know, dark theme lover, but when I finally switched over, I was like, ah oh, yeah, I actually can read this significantly better. This is great.
00:20:34.07
Matt Stauffer
yeah
00:20:34.18
Chris Morrell
um and And the casing is the other one where it's like, yeah, it's not the PSR standard, but ah when you get long variables that are snake cased, they just are easier to read.
00:20:46.92
Matt Stauffer
Yeah.
00:20:47.10
Chris Morrell
and ah
00:20:47.29
Matt Stauffer
So do you do it on method or on, um, on class properties as well?
00:20:50.82
Chris Morrell
No, we on class properties, yes. But methods methods, we still do camel case.
00:20:53.30
Matt Stauffer
Okay.
00:20:55.54
Chris Morrell
Yeah, we have a little bit of a Baroque system.
00:20:55.61
Matt Stauffer
Yeah.
00:20:57.72
Chris Morrell
ah It makes sense in my head. it's And there is a rule. It's you know snake make case for anything that holds a value, ah camel case for anything that is callable, and kabob case for anything that is a path.
00:21:09.43
Matt Stauffer
Makes sense.
00:21:12.31
Chris Morrell
So like if it's ah if it's in a yeah URL, if it's a file, it's kabob case.
00:21:12.56
Matt Stauffer
Okay.
00:21:16.03
Chris Morrell
And that just comes from like the old google Google days when that mattered.
00:21:18.35
Matt Stauffer
Yeah. Yeah.
00:21:19.72
Chris Morrell
Um, snake case for variables and properties and then camel case, even, and and like, it's, it gets interesting because even if you have a, like a variable that is referencing a closure, like I will camel case that no, no, okay.
00:21:33.61
Matt Stauffer
Still snake casing. Oh, you will. Cause it's callable.
00:21:35.86
Chris Morrell
Yeah. So that it's like, this is a, this is a function.
00:21:38.20
Matt Stauffer
Sure.
00:21:38.35
Chris Morrell
It happens to be a variable, but, um, and, uh, you know,
00:21:38.91
Matt Stauffer
Yeah. Yeah. Huh.
00:21:43.94
Matt Stauffer
What?
00:21:44.79
Chris Morrell
I'm not going to argue that it's the best way, but it works for us. And I, uh, I don't mind being nonstandard for some of these little things.
00:21:52.50
Matt Stauffer
Yeah, I mean, in in the end, as long as it can be like a question can be asked, is it this or is it that? And you can answer based on your spec, then whatever. But I'm curious.
00:22:00.81
Chris Morrell
Yeah.
00:22:01.67
Matt Stauffer
I, I don't think the PSRs specify variable naming. Do they special specify class property naming style?
00:22:08.88
Chris Morrell
I thought that PSR did specify camel for variable names. I'm not sure. Maybe maybe it's just the convention.
00:22:15.23
Matt Stauffer
I don't, I think they don't, I can't tell you for sure, but I am, I suspect that you'll find that that's when they don't actually specify.
00:22:17.91
Chris Morrell
Interesting.
00:22:22.69
Matt Stauffer
And just some people just kind of assume that because they specify that methods should be camel cased, then therefore variables should be as well. Um, but I've also seen the same stuff that, um, that snake is a lot better.
00:22:30.04
Chris Morrell
Interesting.
00:22:33.97
Matt Stauffer
And we for the longest time have named our tests with snake because it's just so much more legible.
00:22:38.20
Chris Morrell
It's so much, that's another one.
00:22:39.82
Matt Stauffer
So.
00:22:41.00
Chris Morrell
Uh, for some reason, it drives me nuts. The, the at test annotation on every test method in a PHP unit test, instead of just naming the function with the word test at the beginning, like, uh, and that's, that's one of the ones that we enforce with, uh, Larry Leerlin, like just, uh, why spend the extra line and the extra characters when
00:22:51.62
Matt Stauffer
Test underscore.
00:22:58.57
Matt Stauffer
Yeah.
00:23:05.04
Chris Morrell
You're typing tests anyway, just included in the method name.
00:23:07.89
Matt Stauffer
Yeah.
00:23:07.90
Chris Morrell
Yeah. And that is true. Almost everyone uses snake keys for test methods just because they're so long.
00:23:09.53
Matt Stauffer
Yeah.
00:23:13.99
Chris Morrell
It's impossible to read if it's camel case.
00:23:15.58
Matt Stauffer
Yeah. Yeah. and And you're also writing them like a sentence. I feel like one of the benefits of camel case and your method names is you give yourself sort of, yeah you know, the longer a camel cased method name is, the harder it is to understand. So it sort of almost forces you into shorter method names. And I'm like, okay, yeah that's a, that's a noble, you know, outcome of this, I guess.
00:23:30.53
Chris Morrell
Right. Yeah.
00:23:34.26
Chris Morrell
Yeah, that's not bad. That's not bad.
00:23:36.63
Matt Stauffer
Okay, so I want to I want to talk real quick about the implementation story for us. So we originally had a guy Logan who was just like one of those like uber brilliant guys who just he's like learning elm is the same same time and he's building larva elements kind of stuff.
00:23:47.63
Chris Morrell
h
00:23:49.38
Matt Stauffer
And so when he said I want to make one of these, I was like, does it duplicate anything that's already out there? He's like, No, I was like, Okay, cool, go for it. So he builds teal it. And then he leaves on to get a job doing elm. You know, as one does, and that's totally fine. um And it leaves with our love and after years of, you know, great work with her, but at some point he leaves, right?
00:24:07.84
Chris Morrell
Sure.
00:24:08.53
Matt Stauffer
And so I, you know, we've got a new guy, Anthony Clark, he's not new anymore, but new time, he's like, Hey, I kind of want to take this over. I was like, great. Number one job is to ensure that nothing in T-Lint duplicates stuff that can already be done in PHP CS or PHP CS Fixer. We don't need to be maintaining work there." And so he looked and he's like, that's not entirely true.
00:24:23.08
Chris Morrell
Yeah.
00:24:27.32
Matt Stauffer
So we shrank the scope of T-Lint down a bunch. And so I was like, well, let's publish maybe like together the T-Lint, like we'll publish our own PHP CS configuration. And he and I went back and forth a bunch of times. And one day in a fit of entrepreneurial ADHD, I just was like, I'm going to make a new package. And the new package is Duster. And Duster is, it brings in PHP CS and PHP CS fixer, it brings in the confusingly named pint or pint, depending on how you pronounce it, and then it brings in T lint.
00:24:53.90
Chris Morrell
mhm.
00:24:56.40
Matt Stauffer
And it basically is like the here's the preference of all Titan pod projects across everything. And you don't have to and configure and learn T lint or whatever you've just installed Duster. Here's how to customize it, but like out of the bat, this is actually everything. Cause the thing is T-Lint knows never everything we wanted. T-Lint was like things that were hard to program somewhere else.
00:25:12.24
Chris Morrell
Sure.
00:25:14.76
Chris Morrell
Yep.
00:25:15.05
Matt Stauffer
So now Duster is actually like, if you put Duster and you run Duster fix or Duster lint, that is the be all end all for our projects. And for non-Titan folks, they can of of course customize it, tweak it. It's just kind of like a convenient way to get a package with some premium belt rules across a lot of different code base or code sniffers. But for Titan projects, I'm like, just install it at the beginning of the project and then just set up the, you know the the do you do use um Husky at all for for local or do you only do this kind of stuff in CI?
00:25:42.23
Chris Morrell
ah We do, um we just switched away from Husky to another one of those tools, um but same idea.
00:25:48.88
Matt Stauffer
Okay, but same idea, local get hooks and stuff.
00:25:51.09
Chris Morrell
Yeah, yeah.
00:25:51.29
Matt Stauffer
Okay, yeah.
00:25:52.17
Chris Morrell
We mostly we mostly leave it to CI, but um the CS fixer and layer lint run as gilks.
00:26:01.60
Matt Stauffer
Okay. Yeah. And I'm I it's interesting because one of the differences between Adams package. I wish I could remember the name of it and style CI at the beginning. Well, first of all, Adams came out first, but then style save CI came out and Graham was just pushing it everywhere. Graham was like, every people requested in every single thing. And so it just kind of like an Adam just was like, yeah, I've already moved on. I'm making tailwind and stuff. Right. Um, but the biggest difference between them was that style CI could automatically format it for you. Whereas Adams was just leaving the comments.
00:26:27.75
Chris Morrell
Mm-hmm.
00:26:29.55
Matt Stauffer
And that was really a deal breaker for a lot of people, because while it's very nice for it to be automated, if it automatically tells you to change something like linting. It's kind of a pain in the butt unless it's directly in your IDE. like If it's outside of the space of your IDE, you just want it to fix it for you.
00:26:42.37
Chris Morrell
Yeah.
00:26:44.71
Matt Stauffer
right So I've found that like my general metric is if I don't have to think about it, that is the ideal way of a linter running unless it's in my IDE.
00:26:45.32
Chris Morrell
Yeah.
00:26:52.85
Matt Stauffer
If it's in my IDE e and it's going ding, ding, ding right in the moment, totally fine. But the moment we're outside of the IDE, I want it to say, oh, you're telling me you reformatted the code before before the the commit finished?
00:26:56.72
Chris Morrell
Yeah.
00:27:02.90
Matt Stauffer
fine. You're telling me that you reformatted that code in the CI? Occasionally fine, but the problem is reformatting it in CI means there's an extra pulllar or an extra commit added. So now I start working and I push and it's like, oh, you're out of sync with remote.
00:27:12.21
Chris Morrell
Yep.
00:27:15.16
Matt Stauffer
And I'm like, wait a minute, I'm out of sync with the remote. I'm the only one who pushed.
00:27:17.24
Chris Morrell
This is my branch.
00:27:17.80
Matt Stauffer
And it's like, oh, oh, CI, you know, whatever.
00:27:19.19
Chris Morrell
Yeah.
00:27:20.31
Matt Stauffer
So that's the reason, and the one reason I don't like CI is because of dealing with that, which it's not that big of a deal, but I still hate it.
00:27:20.88
Chris Morrell
Yeah.
00:27:24.73
Chris Morrell
Yeah.
00:27:27.15
Matt Stauffer
So that's why, that's why I'm a big fan of like the local kind of hook.
00:27:27.65
Chris Morrell
It's, it's just a, it's a little friction, right? And, and like yeah a little friction over time is, is a pain in the ass.
00:27:31.82
Matt Stauffer
Yeah. Uh huh.
00:27:35.90
Matt Stauffer
Goes a long way. Yeah.
00:27:37.80
Chris Morrell
Yeah, for sure.
00:27:38.18
Matt Stauffer
Yeah. Yeah. So our, our general goal is.
00:27:39.78
Chris Morrell
Yeah.
00:27:42.62
Matt Stauffer
ah Do the same thing in every project without thinking about it. You're not configuring it. You're not, you know, making it decisions. Install the freaking thing. And then every time you commit, it gets formatted. Every time you go up to CI, it catches just in case you didn't commit it. It's hooked into your your IDE. It's just like, just don't ever think about it because that's the whole point of this, right?
00:27:59.97
Chris Morrell
Yep.
00:28:00.95
Matt Stauffer
The whole point is not to bike shed over, you know, and and I should, I should pause.
00:28:02.55
Chris Morrell
Yep.
00:28:06.15
Matt Stauffer
I asked you earlier if you've ever had any spicy employees who've come in and pushed at it. And I joke because we I love it when people come along and they're like, I think we should have a standard here, or I think the standard here is wrong. Because that's such a fun moment for the company to all bring their experiences and their thoughts.
00:28:17.01
Chris Morrell
Yeah.
00:28:18.45
Matt Stauffer
And I i love when I'm wrong, right? I love it when I'm like, well, this is what I've been doing for 15 years.
00:28:20.80
Chris Morrell
Sure.
00:28:23.54
Matt Stauffer
And they're like, yeah, but have you considered this? And I'm like, I have it. That's great because it means I'm learning.
00:28:29.56
Chris Morrell
It is.
00:28:30.61
Matt Stauffer
um But once we're done with that moment, then I want us to never think about the conversation ever again and for it to be automated.
00:28:30.69
Chris Morrell
Yeah.
00:28:35.49
Chris Morrell
Yep.
00:28:35.65
Matt Stauffer
You know what I mean? So it's it's both, I want people to be able to bring it up in the right spaces.
00:28:37.11
Chris Morrell
Yep.
00:28:39.82
Matt Stauffer
But when we're coding, let's just freaking code. you know
00:28:42.62
Chris Morrell
Yeah. Yeah. No, every once in a while we'll have those like. This is you know just one of those things where it's like, this has come up ah a couple of times. Let's all just like take 20 minutes, decide the like the way we're going to do it, and then we'll add a linter rule, and and then it'll be done.
00:28:56.37
Matt Stauffer
Uh-huh.
00:29:00.68
Chris Morrell
you know and ah And it only happens every, every once in a while.
00:29:01.59
Matt Stauffer
Yep.
00:29:05.22
Chris Morrell
But it does happen. And ah it's it's fun. I don't know. I think i don't this is a tangent, but I've been thinking about this a lot. um I think i think ah in the context of sort of this like the the the remix versus Laravel sort of ah debate and a lot of the conversation about what makes Laravel so great ah often got summed up to, well, it just lets me
00:29:38.37
Chris Morrell
build the thing that I want to build and be done with it, you know, like move, actually build a productive thing that makes money. Right.
00:29:44.49
Matt Stauffer
Yeah.
00:29:44.88
Chris Morrell
And that is great. Right. That of course, that the fact that Laravel makes that possible, um, is, is a huge reason why we're all using it.
00:29:54.45
Matt Stauffer
Yeah.
00:29:55.08
Chris Morrell
But, um, I do think that there was an undertone in that conversation of like, you know, people who just want to like, explore and experiment with like, What is the absolute best way, hypothetically, to do something even you know even if it's not great yet?
00:30:17.02
Matt Stauffer
Yeah.
00:30:17.05
Chris Morrell
yeah that that Somehow that's bad. And i think I think that there needs to be a good balance of those two things.
00:30:23.40
Matt Stauffer
Yeah.
00:30:23.91
Chris Morrell
right like I've talked a lot about programming as art on this podcast, and I i feel very strongly that programming is art, that it's a creative pursuit. and ah you know, art can have a destination um and and art can have like, you know, economic value, right? But it also can just be an experience. And like sometimes just getting in the but really in the weeds on some stupid programming topic, you know, that's kind of where this whole podcast started was like, sometimes it's fun to just like really allow yourself the time to just argue about
00:30:55.23
Matt Stauffer
Yeah.
00:31:00.25
Matt Stauffer
Really nerd out.
00:31:03.48
Matt Stauffer
Yeah.
00:31:05.75
Chris Morrell
tabs versus spaces, you know, like, why not?
00:31:06.98
Matt Stauffer
Yeah. Yeah.
00:31:09.25
Chris Morrell
We, people obviously get passionate about these, these topics. Um, and we're all so in it. Sometimes, sometimes it's worth it. I think sometimes it is okay.
00:31:18.72
Matt Stauffer
Yeah.
00:31:19.69
Chris Morrell
You know, not all the time.
00:31:20.65
Matt Stauffer
Yeah.
00:31:21.59
Chris Morrell
Most of the time you just need to move on.
00:31:21.87
Matt Stauffer
When it's
00:31:23.51
Chris Morrell
Right.
00:31:23.98
Matt Stauffer
And the art parallel is interesting because one of the reasons why people were kind of in this remix versus Laravel conversation, kind of shitting on the you know hyper-fixation on a single modal was because the people who are hyper-fixating and on a single modal were doing it critically, you know?
00:31:41.96
Chris Morrell
ah Sure.
00:31:42.05
Matt Stauffer
And I think there's a difference between doing it creatively versus doing something critically. So if if you say I as a creator, as an artist who want to hyperfixate on this particular piece of technology because I love see searching for beauty and perfection and efficiency or whatever, then that's like an artistic creative pursuit.
00:31:59.24
Chris Morrell
Yeah.
00:32:00.83
Matt Stauffer
And if you say your stuff is shit because your modal is not as fast as mine because you didn't hyperfixate on modals like I did, then you're a jerk, right?
00:32:07.88
Chris Morrell
Right. Yeah. Oh, for sure.
00:32:09.28
Matt Stauffer
And so, like, and but and that's not to speak ah to disagree with what you're saying at all, because I think that what's often missing in that space is someone who said, you know, your and modals are slow. And the other person said, yeah, but they make money. They heard you don't care about art. And the person who's saying, yeah, they make money was hearing you're not good enough because you didn't type or fixate on modals.
00:32:22.88
Chris Morrell
Right.
00:32:28.10
Matt Stauffer
Like, it's it you know, can we talk past each other a little bit less in this freaking conversation, you know?
00:32:28.16
Chris Morrell
Right.
00:32:32.04
Chris Morrell
ah Yeah. Yeah. Yeah.
00:32:34.07
Matt Stauffer
Yeah.
00:32:34.28
Chris Morrell
We're talking about different things and and hearing different things.
00:32:35.98
Matt Stauffer
Yeah.
00:32:37.74
Chris Morrell
Yeah.
00:32:37.82
Matt Stauffer
Yeah, and but bike shedding is a joy for programmers to be able to do. you know like and i i i It's funny because I'm very much one of those people who's like, look, you know did programming allow you to satisfy the client?
00:32:43.53
Chris Morrell
Right.
00:32:52.30
Matt Stauffer
Did programming allow you to put food on your family's table? Then it did the job. I don't care how perfect your modals were. And also, I love the idea of us um like focusing on how to do things really well and elegantly and officially and beautifully, and then passing that knowledge on to other people. And and like those things can be true at the same time. And I've and i've been with teams before, where they're pressured so hard by business and product in the company to produce, produce, produce, produce, produce that they're never ever given any space to care about doing it right and doing it good and doing it efficiently.
00:33:19.55
Chris Morrell
Yeah.
00:33:26.13
Matt Stauffer
And not only is that burning them out um because they don't get any space to be creative, they're just kind of like machines for production. But then also it ends up, you know, getting rid of some of their thoughtfulness and some of their, their insight. And then therefore something blows up down the road because they were being kind of basically whipped to, to just produce dollars for the capital machine. You know, so it's so weird that there are extremes of every single part of this story, you know?
00:33:45.80
Chris Morrell
Yeah.
00:33:50.17
Chris Morrell
Yeah, for sure. Yeah. It's all, it's all murky, you know, what, and and finding like the right spot is, is impossible.
00:33:54.87
Matt Stauffer
Yeah. Hmm.
00:33:59.01
Chris Morrell
Um, but yeah, I mean, I think, I think that like, the The question, obviously the question, like did it did it do what it needed to do? And you know are you, if this is your job, are you like paying your bills because of it?
00:34:13.17
Matt Stauffer
Yeah.
00:34:15.86
Chris Morrell
like Those are important questions. right But I do think there's like also, art do you feel fulfilled by what you do?
00:34:17.83
Matt Stauffer
yeah
00:34:21.36
Chris Morrell
right like ah Unfortunately, a lot of people don't get to have that.
00:34:21.96
Matt Stauffer
Yeah.
00:34:26.27
Chris Morrell
And that is like an incredible, incredible thing that many programmers do get to have.
00:34:26.47
Matt Stauffer
Yeah.
00:34:31.18
Chris Morrell
right So many programmers, There are plenty of programs who, this is not true. They just do it for a job and that's fine, but they're, you know, a lot of programmers who do it because they did it for love first. And they were pleasantly surprised that they could also get paid to do that.
00:34:44.92
Matt Stauffer
Yeah. Yeah.
00:34:49.35
Chris Morrell
And it's like, we have, we have this incredible thing. Like don't beat the, like the beauty out of it. You know what I mean? Like we should be able to embrace that too. You know?
00:35:02.54
Matt Stauffer
Yeah. Yeah. And I mean, it sounds really reductionist, but like sort of like if if if there's something that you're trying to do with your programming, you should be given space to do that thing, whether that thing is You know, build a kind of scrappy, your modals aren't perfect, but it does the job for you, your client. You should be allowed to do that without people coming along and shitting on your modals. If your thing is to build the most perfect modal, you know, that, that is the hyper-optimized down to the millisecond nanosecond, then you should be a given space to do that. And as long as you're not shitting on the people who do it different than you, then like, great, you know?
00:35:36.63
Matt Stauffer
Wonderful.
00:35:36.80
Chris Morrell
Yeah, yeah.
00:35:37.53
Matt Stauffer
And the moment what you're about on the internet is making other people feel bad for how they do it, then you're the problem. It's not the fact that people are trying to make money by doing hyper-optimized versions. It's not about the fact that people are trying to do hyper-optimized, you know, super nuanced versions. it's it's It's the critical person who can't understand a way other than their own that is the actual source of the issue.
00:36:00.98
Chris Morrell
Yeah, I think that there is. there's I think there's an there's another piece to that particular conversation. I don't and don't think that the the original criticism necessarily falls into this, but I do think that there's a little bit of an element of like um ah that that like the the folks behind Basecamp spend a lot of time talking about how great they are ah and how great their process is and how great their software is.
00:36:37.43
Matt Stauffer
For sure. Yeah.
00:36:39.02
Chris Morrell
um that I think it opens them up to to be fairly criticized when their stuff is not great.
00:36:45.74
Matt Stauffer
Yes. I agree. There's nuance to that specific topic for sure.
00:36:47.92
Chris Morrell
um Yes, yes.
00:36:51.51
Matt Stauffer
Yeah.
00:36:51.64
Chris Morrell
um And that's not to say that I do think that that particular criticism criticism was was misguided, right? Um, especially because I think, you know, you can point out a lot of things about, Hey, that's just like not a great experience. And if it works for you, that's fine.
00:37:10.40
Matt Stauffer
Yeah.
00:37:10.55
Chris Morrell
It doesn't work for me.
00:37:11.94
Matt Stauffer
Yeah.
00:37:12.08
Chris Morrell
Um, and, uh, yeah.
00:37:12.24
Matt Stauffer
Me neither. And that's the funny, I'm so critical of base camp and Hey, you know, so it's just like, I've, I've, Ian, Ian has even more critical in landsmen. And so Ian was like, I can't believe I'm out here defending DHH when I love criticizing DHH. I have the same way. I'm like, I don't want to be on your team.
00:37:25.80
Chris Morrell
His reaction was great. I you know i think he his take was perfect in that conversation, DHHs.
00:37:27.67
Matt Stauffer
Yeah.
00:37:31.99
Matt Stauffer
yeah Yeah.
00:37:33.58
Chris Morrell
um And I, yeah, I mean, I have a very complicated, I have complicated feelings about DHH. Cause I, you know, I've read some of those books and felt very inspired by them.
00:37:44.12
Matt Stauffer
Same, yeah.
00:37:44.69
Chris Morrell
um And then, you know, you'll be reading, ah you know, just here's what we do. And the proof that it's so great is that we are so great. And then you like look at some of the, the well, you look at the software that they build and you look at some of the,
00:37:55.92
Matt Stauffer
yeah
00:38:01.37
Chris Morrell
uh, bass exodus of employees due to mismanagement. You're like, Oh, how do I, how do I square these two things?
00:38:10.03
Matt Stauffer
Yeah, a hundred percent. yeah And I appreciate you naming that because for me, this is much more in the abstract than the specific of Basecamp, right?
00:38:14.97
Chris Morrell
A hundred percent.
00:38:17.62
Matt Stauffer
I think that Basecamp on one side and also, you know, remix and the other folks in linear, but each of them have their own, you know, nuances of how we would feel about them.
00:38:19.28
Chris Morrell
Yeah.
00:38:29.11
Chris Morrell
Yeah, but I do think, I think why I originally said that is I think that Ryan Florence is sort of core statement that he was making was like, I want to build UIs that are perfect. Right.
00:38:46.01
Matt Stauffer
Mm hmm.
00:38:46.32
Chris Morrell
And I'm willing to sacrifice all of the niceties that, that like rails and Laravel provide right now. to get there eventually, you know? And i I love that. I love that for remix. I love i love the like ah that pursuit. And like, I think that it needs that that whole ecosystem needs a lot more time to get to a place where you can really build applications easily with them.
00:39:15.78
Matt Stauffer
Yeah.
00:39:16.00
Chris Morrell
But I think that they're doing really interesting things that will produce really incredible user interfaces and experiences ah once they figure out how to send mail, you know, and connect to databases.
00:39:30.22
Matt Stauffer
Okay, so I was sitting here about to say something. You just said it, but I would say it anyway. It's so fun because I agree with you that I think having people out there doing what they're doing raises all the ships, right? When somebody has done that, then we will all see what an interface can look like with that level of attention.
00:39:42.17
Chris Morrell
Mmhmm.
00:39:47.00
Matt Stauffer
And I'm sure blog posts and whatever things will kind of bring that back to us. so I think that there is value. Anytime somebody's hyper focused on anything, there's value to be brought brought back. But it is also funny because you said, I love that. I love that for remix. And it just laugh made me laugh so much because it's just like the Southern way of saying like, I love that for you. And what it means is it may not be my thing, but you know what, baby, if it makes you happy. you So here you say I love that. I do love that for remix. I don't want that for me, but I love that they're doing it.
00:40:13.79
Chris Morrell
Right.
00:40:15.03
Matt Stauffer
So and again, I don't mean that critically, but it it is the same thing.
00:40:15.05
Chris Morrell
Right.
00:40:17.75
Matt Stauffer
Like I can look at remix. I can look at Ryan Florence and I can say, God bless you in your efforts. And I believe that I will probably one day get significant benefit from the work you're doing and say, thank you. I'm glad you did that, and I hope that I'm able to, in that day, give you something back, right?
00:40:29.59
Chris Morrell
Yeah.
00:40:35.17
Matt Stauffer
But I do not want to use your tool right now, and those things can be true at the same time, and it's okay, right?
00:40:38.84
Chris Morrell
Yeah.
00:40:39.05
Matt Stauffer
I don't need to go tell them stop, right?
00:40:39.64
Chris Morrell
Yeah.
00:40:41.25
Matt Stauffer
Like, it's fine.
00:40:41.25
Chris Morrell
Yeah. For sure.
00:40:42.01
Matt Stauffer
Keep doing it. Have a great time. I'm not going to shit on your, you know, and your fun.
00:40:46.48
Chris Morrell
Yeah, yeah, for sure. Yeah. Did you go down that path at all of like, you know, I just remember when node first came out, um, the, the promise of, you know, writing everything in one language was really, really appealing.
00:41:01.63
Matt Stauffer
100%. Yes.
00:41:03.01
Chris Morrell
And, um, you know, ironically to this day, like, uh, Node.js packages that I wrote are considerably more popular than the PHP packages that ah you know that I haven't maintained in in a decade and still, you know um just because there there still is so much interest in that space.
00:41:13.44
Matt Stauffer
That's funny.
00:41:16.67
Matt Stauffer
Yeah.
00:41:23.17
Chris Morrell
But um it is really appealing, you know the idea of writing code once and and using it across the stack.
00:41:25.78
Matt Stauffer
Yes.
00:41:29.83
Chris Morrell
and like browsers don't run PHP, there's nothing we can do about that, right? So if you're gonna do it, it's gotta be, well, yeah, sure.
00:41:35.56
Matt Stauffer
asterisk, but yes. Yes. In reality. Yeah.
00:41:40.12
Chris Morrell
Yes. um So if it's gonna be something, it's gonna be JavaScript, right?
00:41:41.94
Matt Stauffer
No, there's.
00:41:45.48
Matt Stauffer
Yeah.
00:41:45.79
Chris Morrell
And so, um did you did you like go down that path much?
00:41:51.02
Matt Stauffer
Several times, yeah, I've written several express apps.
00:41:52.14
Chris Morrell
Yeah.
00:41:53.60
Matt Stauffer
So when, uh, may I, may I reveal my political leanings in this podcast? Is that allowed?
00:41:58.41
Chris Morrell
Go ahead.
00:41:59.23
Matt Stauffer
Okay. When Trump got elected, I got, uh, recruited by several, uh, political activism groups who are like, Hey, we are technologists. We should use technology to try and basically fight Trump and Trump is Trump is some.
00:42:12.04
Chris Morrell
yeah
00:42:13.33
Matt Stauffer
um So I was working with some of these groups and they would have people from all across the technology stack and not in an area one of them would use PHP. So there's two things that I did and number one was I ran all their wikis because they're all in PHP, right? And so I knew how to do all that kind of stuff. But the second thing is I would help them build tools that were ah contributor agnostic because they needed to be able to bring in people who worked in whatever.
00:42:32.40
Chris Morrell
Yeah. Right.
00:42:34.99
Matt Stauffer
technology and that almost always meant that we built it in note because everybody knew JavaScript on the front end and so we could build these node based tools and it was fun man like it wasn't functional it was a pain to have to put all the pieces together but the syntax and also there's the fact with node you just kind of have like just this one file with express at least you have this one file
00:42:40.51
Chris Morrell
right
00:42:44.36
Chris Morrell
Yeah. Yeah. Yes.
00:42:54.50
Matt Stauffer
And it's got like 10 lines in it. and Suddenly you got a whole freaking server spun up and you know, like it was really sexy. The way you can just do these massive things with these few. And like we, for some reason we did it without semi-colons.
00:43:04.36
Chris Morrell
Uh
00:43:05.61
Matt Stauffer
So it was even like lighter and leaner. And I don't know why that one little thing mattered, but I guess this is, this is what this episode is about, right?
00:43:08.36
Chris Morrell
huh.
00:43:11.74
Chris Morrell
Yeah.
00:43:12.31
Matt Stauffer
It's just this one fricking JS file that did so much. And there was a part of me and I was like, now granted again, sending an email.
00:43:17.22
Chris Morrell
Yeah.
00:43:20.07
Matt Stauffer
Good luck connecting a database. Good luck or whatever. But also I'm like, in my PHP world, I've got, you know, 300 files to start an application. And this thing I've got literally one file and it's so slim. And I'm like, Oh, this is really nice.
00:43:31.81
Chris Morrell
Yeah. That is, I mean, I've, I've also talked about this on the podcast a couple of times, but I'll say it one more time. I think in terms of PSR, I think that that decision, the one, the one file per class decision has hurt PHP pretty significant, not seem, you know, again, this is right on a scale of things.
00:43:45.34
Matt Stauffer
Uh-huh.
00:43:53.87
Chris Morrell
It doesn't matter that much.
00:43:54.22
Matt Stauffer
Yeah.
00:43:55.90
Chris Morrell
But, um you know, you see this like move towards finding ways to co-locate code in in more like useful ways. um and And, you know, whether that's like Volt or whether that's verbs or whether that's like Tailwind, all of these things are kind of um around that idea of like, I want all the stuff that belongs together to live together, right?
00:44:19.57
Matt Stauffer
Yeah.
00:44:20.62
Chris Morrell
and The number of times that I have wished that I could just throw a form request class in the same file as the controller that is the only place that that form request will ever be used
00:44:34.69
Matt Stauffer
Yeah.
00:44:34.83
Chris Morrell
Um, is not, not zero.
00:44:37.57
Matt Stauffer
yeah
00:44:37.76
Chris Morrell
And that is when you go into, in, when you go into the JavaScript world, it's like, you open up these react files and there's like 15 react components inside of one file, but they all basically do that.
00:44:38.16
Matt Stauffer
Yeah. Yeah.
00:44:50.83
Chris Morrell
They all accomplish one goal. Right. And they're, they're interdependent. Um. But like some of them are two lines. right It's just like a little wrapper that provides like a little bit of an API nicety um or you know something that's going to be reused internally a bunch of times. But it feels so much nicer to me. I i do think that that that experience of the JavaScript world is just consistently better, in my and my opinion.
00:45:11.19
Matt Stauffer
Yeah.
00:45:17.51
Matt Stauffer
Yeah. So speaking of the niceties of the JavaScript world, since we're talking about formatting and everything here, have you had any dreams or desires or even participation in these side projects that would change the syntax of PHP to make it more concise? I mean, I've also had my days in Ruby and I kind of went down the rails road for a while before finding Laravel, you know, And I still definitely miss the conciseness, concision um from both JavaScript and Ruby.
00:45:48.76
Matt Stauffer
And man, a lot of the ways that we have bucked the PSRs have been in order to make things less verbose. You know, one of the PSRs is required you to to put parentheses when you're newing up an object that has no constructor parameters.
00:45:57.73
Chris Morrell
Yeah.
00:46:03.83
Matt Stauffer
And I was like, absolutely not. That's ridiculous. And I know it's just two freaking characters, right? But I'm like, we don't need more mess. So, and like I said, when I was able to do travels, when I was able to do JavaScript without semicolons and I was like, Oh, I love this. It's just that much cleaner. Have you ever participated in any of the PHP things or have, ah do you have a dream of any sort of like, what would make it different for us?
00:46:28.62
Chris Morrell
Every once in a while, i like I've i gotten to the point where i like I don't know, I can't remember what it is anymore, but I ah have established the C course that I would take to learn learn some C so that I could try to start to contribute.
00:46:42.88
Matt Stauffer
Yeah.
00:46:46.44
Matt Stauffer
Yeah.
00:46:46.59
Chris Morrell
um because 100% yes. I mean, I feel like um there are certain, there's just some language features that I think are kind of no brainers that would just make the language so much nicer to use. and And I appreciate, I mean, I certainly understand the reason behind the fact that we don't have generics in PHP. It is an incredibly complicated problem to solve at runtime.
00:47:17.84
Matt Stauffer
Yeah. Yeah.
00:47:18.03
Chris Morrell
and I don't blame them for not wanting to do it. I still think we should have generics. I think that it should just be, ah you know, that PHP introduces like a static type checker that that just runs and then at the run time it ignores generics entirely. um So that's my stance on generics, but ah there there are things like that. um You know, there are a couple of, have you ever written Kotlin?
00:47:44.40
Matt Stauffer
No, I've seen it before, but I've never written it.
00:47:46.05
Chris Morrell
Kotlin is, It's an interesting language because it's it's it's on top of Java, um but it's essentially taking Java and making it not awful to write, um which Java is awful to write.
00:47:59.82
Matt Stauffer
Yeah.
00:48:00.19
Chris Morrell
um But it's, I mean, i I only wrote Java in college i a little bit.
00:48:01.36
Matt Stauffer
I've seen Java. I've also never written that Java and I'm grateful for that. So yeah, I wrote poems in college, so I've got an English degree.
00:48:08.44
Chris Morrell
um
00:48:11.39
Chris Morrell
Nice. um Well, Kotlin is cool because it essentially is just like, hey, all the stuff that we can infer will just infer and you don't have to like do all the crazy syntax and pull in a million types and and whatnot.
00:48:33.26
Matt Stauffer
Yeah.
00:48:33.58
Chris Morrell
But like, we'll just put it in there for you when we actually compile it, you know? Um, but it also, it just has some neat little features like, uh, One thing that I love is closures that have a single input parameter, right? um You just don't write the functions and tags, you just give it curly braces and the parameter is called it. So like if you just imagine like a chain of like a collection operations, you know like a MapReduce type thing,
00:48:56.72
Matt Stauffer
and Okay. Yeah.
00:49:04.43
Chris Morrell
um where you're like, you know, filtering some stuff out and then maybe uppercasing or changing the casing or whatever. Like, you know, it's not that big of a deal to do like, FN open parentheses and then like, come up with some name, you could even call it dollar sign it close parentheses arrow, and then do your operation.
00:49:21.63
Matt Stauffer
Yeah.
00:49:25.43
Chris Morrell
But just there's something about just like,
00:49:27.31
Matt Stauffer
That
00:49:27.77
Chris Morrell
in Kotlin, it's just, oh, you know, curly brace it dot uppercase or whatever curly brace.
00:49:32.25
Matt Stauffer
is nice.
00:49:33.57
Chris Morrell
And that's the whole and little, little things like that that I, I think would just allow folks to write slightly more expressive code.
00:49:34.35
Matt Stauffer
Yeah.
00:49:42.94
Chris Morrell
You know, it's not, it's not make or break, but, um, and the other one is essentially there's a syntax where.
00:49:43.06
Matt Stauffer
Yeah.
00:49:52.02
Chris Morrell
uh, you know, you can define a variable as a type and then, or return.
00:49:58.15
Matt Stauffer
Okay.
00:50:01.77
Chris Morrell
And so like, you can essentially just be like, as long as this is this type, let's keep on going, but otherwise just return null, you know, and then as long, and it, You end up just like having these like little guard statements at the top that don't take 15 lines, but it's still giving you a little bit, you know, it's giving you more of that type, uh, assurance.
00:50:14.35
Matt Stauffer
Yeah.
00:50:16.74
Matt Stauffer
Yes.
00:50:20.56
Matt Stauffer
See, it's stuff like that, that I want, man.
00:50:22.59
Chris Morrell
Yeah, for sure.
00:50:22.71
Matt Stauffer
It's like, give me, give me the ability to do little community things without it being now, you know, it's the most common one is four lines, you know, right? Like conditional opening brace action, closing brace line. But even that four lines sprinkled in every single method. And then sometimes your, your, your body, your, your guard is more than one line and just, oh man, like it's rough.
00:50:38.29
Chris Morrell
Yeah.
00:50:42.82
Chris Morrell
Yep. Yeah. Yeah. I mean, we are in a great place where we have a language that can do everything that we need practically.
00:50:50.76
Matt Stauffer
Yes.
00:50:51.72
Chris Morrell
um
00:50:51.85
Matt Stauffer
Which leads us to bike shed, right?
00:50:54.41
Chris Morrell
Yeah.
00:50:54.53
Matt Stauffer
It's like Maslow's hierarchy of programming needs like doesn't do the basics.
00:50:57.64
Chris Morrell
Right.
00:50:58.52
Matt Stauffer
Yes. And now we're going to bike shed on syntax things, which is, you know, it's a sign of a healthy environment.
00:51:00.88
Chris Morrell
Mm hmm.
00:51:03.53
Matt Stauffer
I guess we're safe, you know?
00:51:04.61
Chris Morrell
Yeah. Yeah. Yeah. No, it's, it's true. But yeah, that doesn't mean that we, we can't want, want better for the language and for the, you know, for the community and everything for sure.
00:51:12.78
Matt Stauffer
Yes, exactly. Yeah.
00:51:15.59
Chris Morrell
Yeah. How about you? Have you, have you gone down that path much?
00:51:18.49
Matt Stauffer
No, I mean, there was some one of the, you know, P plus plus and a couple others. I remember the PHP people were talking about an alternate syntax and the Z was with that. And then I think that Nuno Maruo was talking about one for a while. And I've always been a big fan of all of them. I've always basically said like, if you do it, I will put money and time behind it.
00:51:36.38
Chris Morrell
Yeah.
00:51:36.67
Matt Stauffer
Um, which is funny because I've also often been critical of people using anything other than just like the, the plainest Janus of PHP, or of Laravel whatever because i'm like you gotta stick with the basics and if it's not you know officially sanctioned be careful but i think that the number one thing holding PHP back right now is the just the syndactical verbosity the number two thing being just bad marketing and a bunch of nerds who are so stuck in their way that they won't think about like
00:52:02.73
Chris Morrell
Yeah.
00:52:03.41
Matt Stauffer
The fact that Laravel does marketing is not something you guys should look down on. It's actually one of the reasons why PHP exists right now is because Laravel is out here marketing it. Maybe we can, you know, I get annoyed because the amount of time and energy I put into trying to marketing, you know, PHP and stuff like that and just people won't bite is just driving me nuts. But anyway, that's not what your question was. There had been multiples of those and each time I get really excited, you know if I could write uh, php classes like they were ruby if I could write php controllers like they were ruby just these things like these like implicit returns and even just Honestly, there's a there's a part of me that wants to like go buck a lot of the psrs and start writing, you know single line uh conditionals and stuff like that and i'm just like, I don't know maybe
00:52:26.40
Chris Morrell
Yeah.
00:52:46.38
Matt Stauffer
Yes, I've thought about it a lot. And then one of the first things I said, I wanted in T lint was get rid of the automatically generated doc blocks for a lot of, uh, Laravel classes, you know, and I'm just like that.
00:52:55.66
Chris Morrell
Oh, absolutely. Yeah.
00:52:58.29
Matt Stauffer
Yes, that is helpful for the framework. That does not mean we need it in our application. They can, you know, people are like, well, it came from Laravel, so it must be good.
00:53:02.42
Chris Morrell
yeah
00:53:04.62
Matt Stauffer
I'm like, no, no, it was good in Laravel and now we don't need it in our code base. So stuff like that, man, I'm just like, clean that stuff up as much as possible.
00:53:08.48
Chris Morrell
Yeah.
00:53:12.05
Matt Stauffer
So yeah.
00:53:13.04
Chris Morrell
There are some I mean, it's funny because I I I agree with the sentiment. I actually feel like I love semicolons and I love braces on conditionals because. ah I remember when that was not the the norm and I remember the hours that I spent debugging code because of a missing brace or a missing semicolon.
00:53:30.06
Matt Stauffer
Mm-hmm. Kind of fine. Yeah. Yeah.
00:53:38.97
Chris Morrell
And in JavaScript, it's even worse because in JavaScript, there's only like four scenarios where the semicolon matters, right? but like if you don't know what those four scenarios are, it's just like a nightmare.
00:53:51.65
Matt Stauffer
Agreed. Yeah. Yeah.
00:53:54.45
Chris Morrell
And, and because tools can just put the semicolon there, I don't, it's like, why, but why, I don't know why, why i even argue? It's just like, it's, it's going to save you one in a million times. It's the same thing. I, I, I also feel the same way about the down method in migrations, you know, in all the time that I've been using Laravel I've done it.
00:54:10.05
Matt Stauffer
Yeah, 100%.
00:54:14.58
Chris Morrell
at least once, maybe twice in production run down because,
00:54:17.87
Matt Stauffer
Yeah.
00:54:19.20
Chris Morrell
um you know and this is this is partially because of like legacy reasons, um the actual code in production had been migrated through so many different versions of MySQL that like there was data that shouldn't be allowed to be in the format that it was, but it was because it just had come along for the ride, right? And so, uh, you know, you run this migration and suddenly everything blows up.
00:54:41.86
Matt Stauffer
Yeah.
00:54:47.16
Chris Morrell
And the four minutes that I saved by being able to run peach, you know, artisan migrate down and then go do the fix instead of having to like write a new PR that fixes the migration. And you know, like that saved my team hours of phone calls.
00:54:59.37
Matt Stauffer
Yeah.
00:55:03.18
Chris Morrell
You know what I mean? Like, um,
00:55:04.29
Matt Stauffer
Yeah.
00:55:06.40
Chris Morrell
So I like, I lean towards a little bit like do the safe thing, even if it's a little bit more verb verbose, but fundamentally I still agree with them the, the, um, the one, the like, uh,
00:55:11.23
Matt Stauffer
Okay.
00:55:22.93
Chris Morrell
there should, that we we should continue to move the language forward, you know?
00:55:27.03
Matt Stauffer
Yeah. Well, it's interesting because of a
00:55:28.21
Chris Morrell
And I do, no, no, go ahead.
00:55:31.18
Matt Stauffer
I know that the don't have a um ah down method folks tend to be the delete the doc block folks, but I actually keep my down methods because I think there's an actual functional benefit. And it's funny because I actually can't tell you if I've ever used one in production. But I still do it on principle because to me, a down method is not visual cruft. It's not. and And it's very much I know that the Internet just kind of lost their minds when um when Jeffrey Way was talking about whatever it was, like visual, whatever complexity.
00:56:00.42
Chris Morrell
Yeah. yeah
00:56:01.33
Matt Stauffer
But that's that's the thing to me. I don't actually need to get rid of a functional thing because it's not useful, even though maybe I should get rid of my down methods because I never use them. It's more like there's a bunch of stuff that I don't need. you know and ah and And I agree with you that like there's a world of braces and all this kind of stuff where when they're missing, things are less complex.
00:56:14.29
Chris Morrell
Right. Right.
00:56:20.94
Matt Stauffer
But I've also seen Ruby and JavaScript written in a way where it's still clear.
00:56:24.54
Chris Morrell
Mm hmm.
00:56:26.37
Matt Stauffer
I'm like, that's what I want. So I'm not even saying the answer is to get rid of braces that are conditional.
00:56:28.04
Chris Morrell
Mm hmm.
00:56:30.81
Matt Stauffer
I just love that really terse, concise syntax.
00:56:33.84
Chris Morrell
Yeah.
00:56:35.11
Matt Stauffer
That's, that's, so that's all I'm giving. Give me however, you know?
00:56:36.46
Chris Morrell
Well, that's the thing is like, we should be imagining what syntax can be both like terse and safe.
00:56:42.91
Matt Stauffer
Yeah. Clear. Yeah.
00:56:45.07
Chris Morrell
Right.
00:56:45.26
Matt Stauffer
A hundred percent agreed.
00:56:45.71
Chris Morrell
Yeah.
00:56:46.18
Matt Stauffer
Yeah.
00:56:46.47
Chris Morrell
Yeah. yeah Um, I was going to say, i I do think the thing, the experiment that I have been sort of tinkering with. the The whole reason that I got into Kotlin was I wanted to write PHP Storm plugins.
00:57:03.86
Matt Stauffer
Mm hmm.
00:57:04.08
Chris Morrell
um i I am like the biggest fan of Alpine JS, and I am also a slave to my IDs autocomplete. um And so I was just like, I want my ID to understand Alpine.
00:57:14.72
Matt Stauffer
Got it.
00:57:19.10
Matt Stauffer
Guess I'm gonna learn Kotlin. ah Yeah.
00:57:23.13
Chris Morrell
um So I wrote an Alpine plugin ah for PHP storm and it's not perfect, but it does, you know, it gets the job done.
00:57:30.69
Matt Stauffer
Yeah.
00:57:30.89
Chris Morrell
um But in doing that, you know, I went down this rabbit hole of like, you know, language, like lexing and parsing and and there's a lot of tooling around these IntelliJ plugins that support that stuff. So it made me realize, oh that it, you know, I say it wouldn't be that hard. ah this is This is probably months and months of work, right? um It wouldn't be that hard to write a PHP store storm plugin that could, you know, provide syntax highlighting on like some sort of format that was ah that was one layer above PHP, you know, like something that was baseline PHP but had some new syntax.
00:58:14.58
Matt Stauffer
Hmm. Mm hmm.
00:58:19.70
Chris Morrell
um And so I, you know, I've been thinking about this idea, like Blade, right? Is, is just transpiled to PHP at runtime, right?
00:58:30.25
Matt Stauffer
Yeah.
00:58:30.30
Chris Morrell
That's all it really is. It's just, it's using the autoloader and taking that file and just reading it and writing it to a PHP file and then including that file, you know?
00:58:38.66
Matt Stauffer
yeah
00:58:40.20
Chris Morrell
So I was like, why couldn't that be?
00:58:41.47
Matt Stauffer
Okay.
00:58:44.24
Chris Morrell
done with something else, you know. um And the one that I would love to do is I i would love like a dedicated format for routes files.
00:58:58.84
Matt Stauffer
okay
00:58:59.71
Chris Morrell
ah i I feel like, you know, especially especially an app our size, ah you tend to you have routes that you know get long because you you just like you ran out all the short ones.
00:59:18.14
Matt Stauffer
Yeah.
00:59:18.24
Chris Morrell
right um And we do named routes. ah And we we we use a system where the like breadcrumbs are tied to the routes. So you know every single route is like typically three lines of code.
00:59:29.22
Matt Stauffer
Okay. Yeah.
00:59:32.84
Chris Morrell
um which functionally is great for us, but I do like really envy those like route files. That's just like straight down the line.
00:59:42.49
Matt Stauffer
Uh-huh.
00:59:42.66
Chris Morrell
You just have like the, you know, the, the, the route on the left and then the, yeah.
00:59:43.09
Matt Stauffer
Yeah. Route colon, colon, whatever. Tick, tick, tick, tick, tick, tick. Yeah. Uh-huh.
00:59:47.88
Chris Morrell
Um, and I was just like, what if there was some sort of just like CSV type format, you know, that could just magically be parsed into PHP.
00:59:52.79
Matt Stauffer
Yeah. Uh
00:59:57.09
Chris Morrell
I don't know. That's my, that's my weird fantasy, uh, PHP syntax.
01:00:04.02
Matt Stauffer
And is that's how everything eventually turns into YAML. Right.
01:00:07.16
Chris Morrell
Mm.
01:00:07.71
Matt Stauffer
I'm tab separated tab or no tab delimited is definitely something that's, um, something that's very interesting to me.
01:00:08.33
Chris Morrell
Don't get me started.
01:00:18.40
Chris Morrell
Mm hmm.
01:00:18.56
Matt Stauffer
Um, not tab delimited, I'm sorry. the tab-delimited is interesting, but the problem is tab-delimited is not very visually piped-delimited.
01:00:24.20
Chris Morrell
Mm hmm.
01:00:25.15
Matt Stauffer
I've seen people that use basically piped-delimited, effectively, CSVs for a way to give yourself, because I think some of the piped-delimited CSVs type formats are not space-sensitive. So you basically end up basically like kind of like spacing them all to line up, but then almost every single time they run into like, well, what happens when one of the entries is a little bit longer, and then now you've got to go hit, And I'm just like, nah, no, this is our tooling is not built for that, but it would be very interesting if there was a way to have tooling that is built for that.
01:00:50.60
Chris Morrell
yeah
01:00:54.43
Matt Stauffer
You know, the, um, the table plus people just put out a CSV, um, navigator tool. And I'm like, is there a way for that to overlap with your idea in a way that makes it even more compelling?
01:01:06.28
Chris Morrell
Right.
01:01:06.53
Matt Stauffer
Cause now you can explore your routes in a way you couldn't before.
01:01:10.15
Chris Morrell
There are so I mean, I think there's so much There are some really significant opportunities to like explore just totally new abstractions. um A thing that comes to mind is, did you ever see Dark Lang?
01:01:28.36
Matt Stauffer
Yes. ah huh
01:01:29.87
Chris Morrell
ah You know, they're they're just like, sort of it's a new language but also like it's the the the way you edit it is kind of like fundamentally built into the language you know there's not really this concept of files there's just like everything is connected the way it's connected and like you you navigate it through those
01:01:45.90
Matt Stauffer
Yeah. Yeah.
01:01:54.71
Chris Morrell
through those connections. And I just think, like yeah, what why are we why are we still thinking in files? you know like why Why haven't people come up with like new interesting ways to like abstract those concepts away?
01:02:00.67
Matt Stauffer
yeah yeah
01:02:08.30
Chris Morrell
like why Why am I even thinking about the file system?
01:02:11.04
Matt Stauffer
Yeah. Yeah. Yeah.
01:02:11.47
Chris Morrell
right like we know like the My ID knows how every class is connected to every other class, like give me some sort of like amazing graph view of my code.
01:02:17.67
Matt Stauffer
yeah
01:02:23.05
Matt Stauffer
and
01:02:24.58
Chris Morrell
You know, let me, let me like, you know, see my code base in three dimension. I don't know. Like ah maybe it's, maybe it's just people have tried and it's a terrible idea, but, um,
01:02:31.11
Matt Stauffer
Yeah.
01:02:35.24
Matt Stauffer
Well, I mean, like, when you're saying you weren't sure about the fact that the PSR is defined, that every single class should be in a single file. My, one of my first thoughts was like, well, I really liked the fact that I can hit command P and the VS code and then type the name of the file. No, it'll give me the the name of the class. And I was like, wait a minute. You know, my yeah ID is already aware of, you know, symbols. So I could just still get that same value out of it if it weren't in the same files, but. I still am very much like a, I, you know, and this came up in the modules conversation, I would really like to be able to just say, give me this particular class and not care about where it lives, right?
01:03:05.59
Matt Stauffer
I mean, you know, we were talking about that.
01:03:06.24
Chris Morrell
Right.
01:03:07.40
Matt Stauffer
But the thing is, if that's how I'm navigating, that means that the file structure doesn't matter at all from just that navigator perspective.
01:03:13.85
Chris Morrell
Yeah.
01:03:16.30
Matt Stauffer
The point that you made in the modularity conversation is that it does matter from a discoverability, like, How do I understand before I know what file to look for?
01:03:21.21
Chris Morrell
Yeah.
01:03:24.23
Matt Stauffer
How do I know what files are actually there? And the fact that we have one file per, you know, class, and then we can just look at the files as they're laid out does aid discoverability, you know? And so tell me more.
01:03:35.77
Chris Morrell
I don't, i I disagree. I think it's the opposite. ah Imagine instead, right? Like right now, I, you have a feature, right? You're, you're building, I don't know, like a team feature, right? So you've got a team controller, you got a team form request, you got a team model. Um, you got some team emails, you've got some team events that are broadcast, right?
01:04:00.76
Matt Stauffer
Mm hmm.
01:04:02.73
Chris Morrell
In terms of discoverability, if we think about like my IDE knows that if I like command space and start typing team, it can take me to the team class. right like any Any major PHP IDE can do that.
01:04:12.24
Matt Stauffer
Mm hmm.
01:04:16.12
Chris Morrell
right
01:04:16.76
Matt Stauffer
Mm hmm.
01:04:17.05
Chris Morrell
um so if all of those files were actually just one file called team, right? team.php. And like, you just, you just, when you know what you're looking for, you just hit command space and start typing team controller, you know, team, team request or whatever. And it just jumps you straight to that line in the file. But if you are like, okay, you're onboarding onto it, onto this like new project, and someone's like, okay, we're going to need you to add
01:04:48.88
Chris Morrell
like a you know ah new feature to the Teams feature in our in the product. Now you just have one file to just scroll, like look top to bottom, and you understand the entire thing. I mean, that's that's essentially what Modular is, but just in file system organization.
01:05:00.47
Matt Stauffer
Yeah.
01:05:04.13
Matt Stauffer
Yeah. Folders versus yeah.
01:05:06.86
Chris Morrell
Yeah. Um, but I would argue that like modular is only because modern PHP standards require us to put files and, and really with composer, unless you wanted to write your own like auto loader system, you really have to go that path.
01:05:24.63
Matt Stauffer
Yeah.
01:05:26.36
Chris Morrell
You know, like you're, you're pretty much stuck.
01:05:26.73
Matt Stauffer
Yeah. I mean, it would even have to be an auto loader system. If you don't want, it could be literally just say, load the files in slash app slash modules, you know, just load every PHP file in there. Like you can do that with files.
01:05:36.82
Chris Morrell
Mm hmm.
01:05:37.83
Matt Stauffer
So, cause you can glob in the, the, the um, the files thing, right?
01:05:39.07
Chris Morrell
Yeah.
01:05:42.93
Matt Stauffer
You can just say every file under the, this directory.
01:05:46.44
Chris Morrell
Yeah, yeah, you could and.
01:05:47.17
Matt Stauffer
Yeah. So we're not used to having to do that, but it's not the end of the world, you know,
01:05:53.27
Chris Morrell
Right, right. Yeah, so I don't know. I mean, I get what you're saying, but I I I do think it's actually maybe arguably the opposite. I don't know.
01:06:04.32
Matt Stauffer
I guess i hear I hear you. I think that we need some way, but the interesting point was I was actually agreeing with you that if we were to move to a point where there's no files at all, we would need a new way to visualize. So there's right now opening up your folder structure in Finder or whatever else,
01:06:19.11
Chris Morrell
Yes, yeah.
01:06:24.84
Matt Stauffer
shows you the let's call modules you got your modules and in the modules you got the files and the files or the folders in the modules tell you what type of code is served in this particular module and I'll notice that this particular module has an HTTP directory but this module doesn't and so now I have learned things about those modules. Whereas if all the files are in the team, my way to like all sorry all the files for the team module are in one file, my way to discover that now becomes opening up the file and maybe looking at the list of symbols in that file.
01:06:52.54
Chris Morrell
Yeah.
01:06:54.32
Matt Stauffer
It doesn't make one better or different or better or worse, but it just means that somehow we need discoverability of the class structure organized by whatever, module or type or whatever,
01:06:55.33
Chris Morrell
Yep.
01:07:01.73
Chris Morrell
By something.
01:07:07.22
Matt Stauffer
And we need to be able to visualize that. And so if we were to go in that kind of dark line directory, then we would need something like you're talking or direction, sorry, we would need something like you're talking about, which is the ability to understand and visualize what's going on here. Otherwise we lose significantly our discoverability.
01:07:22.09
Chris Morrell
Yeah, but actually it occurs to me that like the file system is really holding us back because it means that you have to pick one, right?
01:07:30.45
Matt Stauffer
Yeah, no fair.
01:07:31.33
Chris Morrell
Like right now I have to put something in, you know, we were just talking about it. So for the listener, uh, Matt and I were talking about modular off off error before. And that's like, we keep on referencing back to it. So, um, but you know, we have a. We have a scheduling system, right, at InterNACHI. We also have this special program that we're running for the state of Florida, right? And the special program that we're running for the state of Florida interacts with the scheduling system. um So these two modules are inter interdependent in certain ways. um And you and I were talking about, like,
01:08:12.11
Chris Morrell
how do you know where to put something? And my answer generally is just like, you just have to pick it's fine. Like sometimes you get it wrong and you move it and that's fine. Um, but the reality is like, there are files that belong in this Florida specific thing that also arguably belong in the scheduling system because they're scheduling specific, um, implementations for this one special program.
01:08:36.71
Matt Stauffer
Yeah.
01:08:38.57
Chris Morrell
Right. And so like the file system forces me to put it in one.
01:08:41.90
Matt Stauffer
Hmm.
01:08:42.71
Chris Morrell
why i I should be able to just put it in both. Right. So that when you're browsing the scheduling system, you see all the scheduling stuff and you're browsing this program, you'd see just that program specific stuff.
01:08:49.78
Matt Stauffer
Yeah.
01:08:52.50
Matt Stauffer
Hmm.
01:08:53.74
Chris Morrell
Like it really is kind of like, right.
01:08:55.89
Matt Stauffer
It's like a tagging kind of system where like this thing has both tags.
01:08:59.49
Chris Morrell
Right.
01:08:59.87
Matt Stauffer
Yeah. Cause Simlinks don't do that because you can't have PSR working, loading, auto loading working correctly and have it in both places. I mean, I don't know if you've used slab at all, but we use slab at work, which is like notion, but it has some, um, some features that made us choose it over notion.
01:09:06.87
Chris Morrell
Yep.
01:09:13.74
Matt Stauffer
And I appreciate the fact that it organizes everything in a folder structure, but the folders are actually tabs are tags and you can tag something with multiple different things. So you navigate through the folders and it shows up in two different folders because it has those two different tags. And at first it kind of hurt my brain.
01:09:26.95
Chris Morrell
Yeah.
01:09:28.85
Matt Stauffer
And now I'm really glad for it because I do like a folder structure for discovery and navigation. And I like the ability for something to show up in both places when I need it in a different context. So i I'm a big fan of your idea here.
01:09:40.14
Chris Morrell
Yeah. Yeah, I mean, and and like, theoretically, I could have that already like, you know, I assume the VS code does this PHP storm has the concept of like, um like named groups, right, so I can, I, you know, every once in a while I've done this where I'm working on I'm working on a feature where I need to touch a bunch of like weirdly disparate files and I'll just like put them in a collection or I can't remember what they're called in the IDE, but like, you know, it's favorites, right?
01:10:02.97
Matt Stauffer
Oh, yeah. Yeah.
01:10:09.18
Matt Stauffer
Yeah. Yeah.
01:10:11.44
Chris Morrell
But favorites can have groups, right?
01:10:11.71
Matt Stauffer
It's like a meta folder or something, basically.
01:10:14.23
Chris Morrell
Yeah.
01:10:15.13
Matt Stauffer
Yeah.
01:10:15.56
Chris Morrell
And theoretically, I guess like I could go in and manually do that for every file in the project.
01:10:22.14
Matt Stauffer
Yeah.
01:10:22.32
Chris Morrell
Right. um But.
01:10:23.48
Matt Stauffer
Good.
01:10:26.56
Chris Morrell
That would be awful, right? I'm not gonna do it.
01:10:27.89
Matt Stauffer
Yeah.
01:10:28.92
Chris Morrell
um so So something like this would have to be as convenient as the file system, um but also also provide that flexibility, but it'd be cool.
01:10:36.69
Matt Stauffer
Yeah. Yeah. and I mean, our IDs, our IDs are already showing us so that we can interact with something a level above the file system because while they are showing us the file system, we're not interacting with the file system directly. And like I was teaching my son how to code this morning and already off the bat, I was trying to show him the file system and then show him how, um Like the file system in the terminal and then show him how finder in the Mac tries to represent it. He's like, well, where are all those files? And I was like, oh, yeah, that's hiding those files from you.
01:11:08.21
Matt Stauffer
And there's dot files and this that the other. So I'm already kind of like intimately aware of the idea that like, yes, we are doing facsimiles of the file system where we're not actually interact with the file system already.
01:11:16.14
Chris Morrell
Yeah.
01:11:18.62
Matt Stauffer
And so the idea that like there can be a layer on top of that, that just slots nicely into the tools we're actually using to interact with our file system. It seems really reasonable and natural for that to happen. So I'm like, I get, I feel like that could happen.
01:11:30.68
Chris Morrell
Yeah.
01:11:32.43
Matt Stauffer
You know, it it could be a layer or a plugin or whatever else, and it just works seamlessly in.
01:11:32.79
Chris Morrell
yeah
01:11:37.31
Chris Morrell
Yeah, it would be cool. Yeah, even if it was just like, um, you know, essentially like fake Sim links, right?
01:11:45.84
Matt Stauffer
Yeah.
01:11:46.08
Chris Morrell
Could be the first, right?
01:11:46.24
Matt Stauffer
Yeah. It's really.
01:11:47.67
Chris Morrell
It's just like, this is a Sim link, but only from a code navigation perspective, right? It shows up in both places, but it actually isn't in both places.
01:11:52.67
Matt Stauffer
Hmm.
01:11:56.36
Chris Morrell
I don't, honestly, I don't know if I would actually use that.
01:11:59.09
Matt Stauffer
Yeah.
01:11:59.35
Chris Morrell
Um, I think it would have to be, you know, to to shift paradigms, you really need to, you can't just be a little bit better, right?
01:12:07.54
Matt Stauffer
yeah Yeah.
01:12:07.72
Chris Morrell
to It has to be better enough to be worth the pain. So,
01:12:13.03
Matt Stauffer
And the base, the learning cost, the onboarding cost to everybody else in the project when they try to learn it too.
01:12:16.39
Chris Morrell
yeah, I'm not gonna solve this problem, but maybe someone will.
01:12:20.65
Matt Stauffer
Yeah.
01:12:21.01
Chris Morrell
I think there's i think there's a lot of interesting space there.
01:12:21.38
Matt Stauffer
Well, we dreamed. Yeah.
01:12:24.45
Chris Morrell
um I do know that, um what's his name. ah there is there is one other um There is one other project that is, I can't remember what it's called. like PHP something or PXP. just Have you seen PXP?
01:12:45.49
Matt Stauffer
Is that another one of those layers on top of it? I am.
01:12:47.63
Chris Morrell
Yeah.
01:12:48.25
Matt Stauffer
I'm not her.
01:12:48.54
Chris Morrell
That um that is still ah having some active ah development.
01:12:55.45
Matt Stauffer
Hmm.
01:12:55.68
Chris Morrell
It's, God, I feel bad that I'm totally spacing out on on the details, but I know it's it's one of those one of those projects that's like you know one person is working on very slowly, but I know that he's still still
01:13:01.15
Matt Stauffer
It's written in rost.
01:13:10.09
Matt Stauffer
Is that Ryan Chandler's one?
01:13:12.66
Chris Morrell
Yes, that is Ryan Chandler's.
01:13:13.64
Matt Stauffer
Okay.
01:13:14.26
Chris Morrell
Yeah, yeah. um And I know he has a bunch of different ah bunch of different things in the fire, and they're all kind of moving at different at different paces.
01:13:22.21
Matt Stauffer
Yes.
01:13:24.58
Chris Morrell
But I see him talking about it from time to time.
01:13:24.75
Matt Stauffer
Yeah.
01:13:26.82
Chris Morrell
And it seems like he's like you know actively sort of moving the idea in in a good direction. So I'm excited to see that, because I think that um I think that the way that he's approaching is, is interesting. It's like, let's, let's get some just simple practical wins and like prove the concept and then see where it goes from there.
01:13:50.67
Matt Stauffer
Okay.
01:13:50.73
Chris Morrell
um
01:13:50.93
Matt Stauffer
I'll take a look at this. I knew vaguely that he was working on something, but I'd heard of it years ago. So I thought it was not happening, but his last update on the actual repo is days ago. So he's clearly still going.
01:14:00.55
Chris Morrell
Yeah. Yeah. Yeah.
01:14:03.67
Matt Stauffer
Okay.
01:14:03.72
Chris Morrell
Yeah. I'm curious to see where it goes. Cause I definitely, I definitely think, you know,
01:14:09.98
Chris Morrell
There's a lot of interesting stuff still to be done with the language.
01:14:13.21
Matt Stauffer
Yeah, for sure.
01:14:16.04
Chris Morrell
um you Did you end up getting deep into like how T-Lint works or have you been like just sort of make it do this and I don't need to understand how how it does it?
01:14:31.92
Matt Stauffer
Yeah. I remember we talked a little bit about like the AST versus regex and blah, blah, blah. And I believe they ended up going the direction of regex in the end because there were not any very good structure ways to look at blade and some of the things that I wanted there. So they're like, if we want to deal with PHP, we might be able to just write these as custom rules with a PHP CS, but because you want some blade things and some things where we don't have the ability to kind of like. build a syntax tree from it, we're just going to do regex. So I'm not sure, but I kind of think Taitlyn is all just regex.
01:15:05.34
Matt Stauffer
I mean, I don't know what you ended up using.
01:15:05.66
Chris Morrell
Interesting.
01:15:08.72
Chris Morrell
ah it's it's ah It's using like the Microsoft parser. Yeah, it's it's parsing into an AST.
01:15:15.35
Matt Stauffer
Okay.
01:15:15.39
Chris Morrell
um
01:15:16.45
Matt Stauffer
Yeah. I mean, don't take what I just said, you know, take it with several grains of salt because I definitely was just like, you know, just make it work. You know, I i wrote Duster.
01:15:22.89
Chris Morrell
Sure.
01:15:24.21
Matt Stauffer
So Duster I'm intimately familiar with, but Duster is just a collection of other things. It's not like a core level tool. Teeland is actually a core level tool. And ah in my mind, I think it's, you know, I said that and now I'm not sure.
01:15:38.69
Chris Morrell
I actually I It's been a while, but I i do kind of think that the the code that I contributed was working on an AST. So I think if it's doing regular expressions, maybe it's doing both for different use cases.
01:15:48.83
Matt Stauffer
Yeah. I am. And you know, the reason I thought I was using regular expressions is because the um the PHP stand guy was asking recently about anybody who has anything working with blade. And I said, tilant and he's like, yeah, it's just regex. I was like, okay, it's just regex. But I remember writing code in T lint that is using like node traverser and all these other things that are very clearly not regex. So I don't know if he's saying he might have misunderstood or maybe he's saying that just the blade parts are um just regex because I'm literally looking at a base linter right now and it is like I'm remembering it is traversing up and down nodes.
01:16:10.48
Chris Morrell
right
01:16:23.53
Matt Stauffer
This is not just regex. So.
01:16:25.17
Chris Morrell
Yeah. Yeah. I think, I think, and this is another one where it's been a, been a couple of years now, so I don't, I don't know for sure, but I think that the distinction, um, the distinction between tealant and laryllant is I wanted laryllant to only traverse the tree once. Um, which makes a lot of problems way harder to solve. And honestly, i I regret that decision sometimes.
01:16:55.75
Chris Morrell
Every time I have to like implement a new ah new thing, I'm like, why did I do it this way?
01:17:00.35
Matt Stauffer
Well, if you ever want to merge it with tealant, I won't complain in any way, shape or form.
01:17:01.10
Chris Morrell
um
01:17:04.06
Matt Stauffer
I don't expect that to be valuable.
01:17:04.23
Chris Morrell
Yeah, there you go.
01:17:05.38
Matt Stauffer
But just so you know, um you know,
01:17:07.23
Chris Morrell
I thought about it. I thought about it. um But that's a whole, I mean, I i was just talking about this, um The AST stuff is is so fascinating to me. like the The fact that in PHP, you can parse PHP into you know a tree that you can manipulate is like very cool.
01:17:36.44
Matt Stauffer
Mm hmm.
01:17:36.79
Chris Morrell
um And i i I recently implemented this um this linear api or linear linear SDK um where it's literally taking the linear GraphQL document, right the definition of the linear graph GraphQL API, parsing it into a GraphQL AST, and then traversing that tree
01:17:49.18
Matt Stauffer
Okay.
01:18:01.94
Matt Stauffer
okay
01:18:05.30
Chris Morrell
and node by node converting each element to a PHP tree and then spitting out PHP on the other end.
01:18:10.99
Matt Stauffer
Interesting. Interesting.
01:18:12.91
Chris Morrell
It's the wildest thing I've ever seen in my life.
01:18:15.66
Matt Stauffer
Hmm.
01:18:15.73
Chris Morrell
It's like one of those things that I want to talk with everyone about, but like nobody, like nobody is thinking about absolutely abstract syntax trees, let alone like ah crossing multiple languages through these these abstract concepts.
01:18:24.02
Matt Stauffer
I can't
01:18:31.40
Matt Stauffer
I'm mad that you brought this up at the end of the podcast when I don't have enough time to pick your brain about this because I'm not going to pick your brain later when we're not on a podcast because I want to learn all about that. So interesting.
01:18:40.41
Chris Morrell
It's, it's been a really fun. Yeah. I, I was, I want to, I don't know. It's one of those things where I wish I could sit down and put together a video or or a blog post or something that like explains how it works. But it's, it feels like it would take, you know, it would take hours and hours and hours to put together a 10 minute thing that like explains it well.
01:18:57.01
Matt Stauffer
It's very kind of.
01:19:02.18
Matt Stauffer
yeah
01:19:05.23
Matt Stauffer
Yeah.
01:19:06.47
Chris Morrell
ah You know, and that's partially me like, um, and partially the concept, but one of these days I've been thinking about it.
01:19:13.59
Matt Stauffer
Yeah. Yeah.
01:19:15.04
Chris Morrell
Yeah.
01:19:15.44
Matt Stauffer
Well, I just, uh, just side note, I pulled up a teal and what it turns out is the PHP is all doing the syntax tree. The blade is all regex and literally it still is in the same syntax tree, but it just says, give me the lines that I care about.
01:19:24.53
Chris Morrell
Okay.
01:19:29.03
Matt Stauffer
And then it regexes over each of those. So that's kind of the point there.
01:19:31.16
Chris Morrell
there There is a new project.
01:19:31.87
Matt Stauffer
So.
01:19:35.21
Chris Morrell
and I say new, it's not that new. um And i'm I'm blanking out on his name as well. I'm i'm terrible with names if you can't tell. Um, I talked about it. We talked about it briefly when, when Taylor was on the show, but, um, someone wrote a formal blade parser, uh, in PHP that parses blade into a tree.
01:19:53.41
Matt Stauffer
Okay.
01:19:56.42
Chris Morrell
Um, and lets you manipulate the tree. And, um, you know, I'm real, I think that's really interesting. Cause I think, I think blade. I think that that blade is another place where there's a huge opportunity for the next level of um blade as a language.
01:20:13.19
Matt Stauffer
Hmm.
01:20:18.58
Chris Morrell
I think that like I think LiveWire has proven that like there's something that PHP level templating can be more. And I think that like the modern blade syntax has is just so much better, you know the XML style syntax.
01:20:31.49
Matt Stauffer
yeah
01:20:36.50
Matt Stauffer
Yeah.
01:20:39.27
Chris Morrell
um And I really hope that there's like more experimentation in that space. um because and And something like this maybe would enable it if if we had like
01:20:49.76
Matt Stauffer
yeah
01:20:50.89
Chris Morrell
ah Blade is like sort of a quote unquote proper language um that was sort of first party supported.
01:20:58.03
Matt Stauffer
Yeah, I like that.
01:20:58.68
Chris Morrell
Being able to implement sort of like formal extensions on top of it or like experiment with the language, I think would be really interesting.
01:20:59.11
Matt Stauffer
I mean,
01:21:06.14
Matt Stauffer
Yeah, like I mentioned to you earlier, I read poems in college. So I i i wrote poems as well. So i'm whenever it gets to this kind of really nitty gritty stuff, that's where I'm like, I'm so grateful there are people in this world who kind of can do that kind of stuff. Because what I will do is when you do it, I will build some really great stuff on top of it. But I am not the person for that. So
01:21:25.31
Chris Morrell
Sure.
01:21:26.01
Matt Stauffer
Yeah, we got to find that person and, uh, see, cause I mean the, the closest I've come to anything like that, other than T lint is when I was trying to figure out how to do, you know, prettier and and tailwind class sorting.
01:21:26.22
Chris Morrell
Yeah.
01:21:36.97
Matt Stauffer
Um, and you know, but again, I believe that's also just red jacks.
01:21:37.25
Chris Morrell
h
01:21:40.94
Matt Stauffer
It's also just building on top of a prettier as native thing. So, and it's also in JavaScript.
01:21:44.46
Chris Morrell
Right.
01:21:45.15
Matt Stauffer
So either way, it doesn't help us. So very curious to hear about that.
01:21:47.39
Chris Morrell
that's Right. Yeah, no. Yeah. I mean, it's, it's tricky because I think the only way that it could really happen at the language level is if Laravel adopted something like that. you know Because blade is essentially just a big regular expression, right? Or blade components are just a regular expression.
01:22:09.82
Matt Stauffer
Yeah.
01:22:10.15
Chris Morrell
um And that's great. It works great, right? But it it limits what you can do with them.
01:22:15.41
Matt Stauffer
Yeah.
01:22:15.42
Chris Morrell
But at the same time, like I don't blame Taylor for not wanting to take on like you know take something that's 15 files and turn it into 200 or 500 or whatever it would take.
01:22:26.77
Matt Stauffer
yeah Yeah.
01:22:28.15
Chris Morrell
you know That's a huge, huge maintenance burden.
01:22:32.73
Matt Stauffer
Yeah. On a present.
01:22:33.08
Chris Morrell
So I don't know what'll happen there, but I think there's an there's something interesting something interesting there too.
01:22:41.06
Matt Stauffer
to be over engineered in the future.
01:22:43.88
Chris Morrell
to To be over-engineered in this future. All right. Well, we are coming up on the end here. Uh, is there anything that you would like to particularly plug before we, uh, we call it.
01:22:58.31
Matt Stauffer
um I mean, if you are really interested in getting your your stuff set to a standard, check out Duster. It's just Titan. If you just look up Duster or github dot.com slash Titan slash Duster. I'm very curious to get more people using it. i'm I get really excited about things, and by the time they're built, I'm ah excited about something else, you know, because I'm ADHD. So try it out. If if you're looking for like an all-inclusive one that's going to do your PHP CS, your PHP CS Fixer, youre basically like your code styles the whole way across, try it out and let me know what you think. just because like the more I get people using it, the more I get motivated to then go spend more time and energy on it.
01:23:32.90
Matt Stauffer
So ah the the closest plug I have to the actual top of this episode is to check out Duster and let me know what you think.
01:23:33.40
Chris Morrell
Sure.
01:23:39.18
Chris Morrell
Well, I will allow plugs that aren't related to the topic as well, if if there's anything else that you you are particularly excited about or or think is interesting that's going on right now.
01:23:45.64
Matt Stauffer
Uh,
01:23:48.46
Matt Stauffer
Honestly, the things I'm most excited about right now are the things I'm teaching. you know I'm excited about the the course or the the talk I gave at Laravel Live UK was unrecorded. And it was ah how to build a productive Laravel development team. And man, I cannot wait for a chance to give that somewhere else. like I'm literally possibly about to just give it on on YouTube. It was so well received. And my talks usually like get great feedback. I'm very grateful for that. But like this was the next level. And I was like, oh, this is an untapped interest that people have. And I'm like, this is what I do.
01:24:15.45
Chris Morrell
There's something here.
01:24:16.41
Matt Stauffer
do every day, you know?
01:24:17.99
Chris Morrell
Yeah.
01:24:18.20
Matt Stauffer
So I thought, but I don't have anything to plug there yet. So keep an eye out. I'm going to be creating more stuff around that. And then I've got a course that's about to announce, but I can't announce it yet. You know, it's just like everything's in, in just kind of just hanging, you know, and in two weeks I'll have a whole bunch of stuff to talk about, but right now, nothing.
01:24:34.31
Chris Morrell
All right. Well, to be.
01:24:36.60
Matt Stauffer
I'm still on Twitter. Everybody else has given up on Twitter. I'm still on Twitter. I still call it Twitter. So just check out the Twitter a couple of weeks from now and just see what I got for you.
01:24:40.98
Chris Morrell
Yeah.
01:24:44.44
Chris Morrell
Yeah, there you go. Right. you Well, you and I were, we, we were on a little bit on the the campaign to get mastodon happening. And then it's, it's, it's so tough.
01:24:53.85
Matt Stauffer
how we were.
01:24:56.83
Chris Morrell
I mean, I, I, I find, I don't know, is this your experience as well?
01:24:57.00
Matt Stauffer
It's rough, man. Yeah.
01:25:03.14
Chris Morrell
That like in the last two weeks, Twitter has gotten worse. Is that.
01:25:10.01
Matt Stauffer
I've noticed people complaining that it's gotten worse in the last two weeks. A whole bunch of people I know have been like, Twitter's turned to shit in the last couple of weeks. And I have not experienced that, other than, you know, this one guy being a jerk that kind of kicked off this conversation a little bit.
01:25:18.21
Chris Morrell
Interesting.
01:25:21.99
Matt Stauffer
But I also live in, I only follow a very short number, small number of people. I turn off retweets for a bunch of them, and I never go to the For You page. So for my my experience of Twitter is so much different than other folks because i'm I'm not once getting recommended to anything. I'm not looking at any, you know, whatever. It's just literally if one of my friends didn't tweet it or retweet it, I don't see it. So for me, Twitter is the same because these are the people I found over the last, you know, 15 years or whatever of using Twitter and finding that even there's some people I like in person, I don't like you on Twitter.
01:25:40.54
Chris Morrell
Yeah.
01:25:50.10
Matt Stauffer
So my list is good, you know, but I've heard a lot of people say it's gotten worse.
01:25:51.96
Chris Morrell
who
01:25:54.97
Chris Morrell
yeah Yeah, it's interesting. i i I'm mostly the same. I'm i'm very careful about um very careful about my mute and block lists and who I'm following. and But I used to find that I would tab over to For You every once in a while because it's like, oh, some interesting thing that I missed gets surfaced up there.
01:26:18.85
Matt Stauffer
Sure. Yeah. yeah
01:26:19.66
Chris Morrell
And now I go over and it's just like all you know engagement bait and just stuff that's like, why on earth would any algorithm think that this is interesting to me?
01:26:24.75
Matt Stauffer
yeah
01:26:32.54
Chris Morrell
you know like Just at ah at a really new level, like it just feels like something got tweaked tweetak that there that has made that whole piece of it, which is like, that's kind of the upside of
01:26:33.20
Matt Stauffer
Yeah.
01:26:45.17
Chris Morrell
Twitter over Mastodon is that like there is some algorithmic stuff happening that like can help surface interesting interesting things that you wouldn't see otherwise.
01:26:53.65
Matt Stauffer
Yeah, yeah.
01:26:55.32
Chris Morrell
anyway i'm not I feel like I talk about Mastodon at the end of every episode. and uh, you know, we'll keep it's the Macedon is my, uh, is my, um, HVAC for, for Aaron Francis, right?
01:27:04.81
Matt Stauffer
Your white whale. Oh, yeah, yeah, got it, got it, got it. Yeah.
01:27:07.92
Chris Morrell
You know, we need to, we need to think it's Friday. I have to remember we have to, we have to prod him on Sunday about HVAC stuff. So that on Monday they talk about it again. I'm going to see how many, how many weeks we can.
01:27:16.53
Matt Stauffer
Got it. We're going to put our forces together to get him talking.
01:27:19.26
Chris Morrell
Yeah.
01:27:20.75
Matt Stauffer
I love it.
01:27:21.71
Chris Morrell
All right. Well, this has been really fun.
01:27:23.68
Matt Stauffer
I had a great time.
01:27:23.97
Chris Morrell
Uh, we'll, uh, we'll have to, we'll have to come back and talk about AST sometime.
01:27:29.20
Matt Stauffer
Clearly and that alone and and then also well guys, that one is AST is the example you gave. So yes, AST is all the ASTs. I'm looking forward to it.
01:27:38.99
Chris Morrell
All right, thank you so much for being on the show.
01:27:41.62
Matt Stauffer
Thanks, man.