Music, feature flags, and making the new one do what the old one did

Michael:

Hey. I'm Michael Dyrynda.

Jake:

And I'm Jake Bennett.

Michael:

And welcome to take 3 of episode 156 of the North Meet South Web Podcast.

Jake:

Welcome to the show, folks.

Michael:

I am not looking forward to when my kids do recorder in school. I thought that was just a thing here, but you do it over there as well. So

Jake:

We do indeed. You can call me Dwight Schrute. I need to learn some actual songs. It's been a long time. The one that's a bit big and very popular here for recorders is hot cross buns.

Jake:

Hot cross buns. Hot cross buns. 1 a penny, 2 a penny, hot cross buns. Very popular. Very popular song.

Michael:

Very popular. It is the one place page for sure. Mhmm.

Jake:

Yes. No. Actually, on a side not related to programming note, my oldest is going to be taking up bass guitar this summer, which I'm super excited about. I think that'll be really fun. And my oldest daughter is taking up acoustic guitar this summer, which I'm also really excited about.

Jake:

So it

Michael:

should be fun. I'm I'm stoked. A good time.

Jake:

Yes. Indeed. Yes. Indeed.

Michael:

I mean, you've got enough kids to just have have a band in the house, so it's

Jake:

I know. It's it's true. We gotta get, drums, and then we gotta get let's let's see. My daughter's playing guitar, my son is playing bass, and we have another one playing drums. I think that should round it out.

Jake:

The other one can sing, maybe. You know? Be the lead man.

Michael:

Singer, keyboard player, maybe a rhythm guitar.

Jake:

Yep. Keyboard. Keyboard. There you go. Rhythm guitar.

Jake:

Yeah. Okay. We could do all sorts of stuff. I like it. My wife could play the tambourine.

Jake:

She can book all the gigs. That'll be good. Good times.

Michael:

Yeah. There's there's a group. I don't I don't know what they're called, but there's a group of, like, teenagers on not hands. A group of teenagers that, like, do covers on TikTok, and they're they're really good. And it's just, like, a singer who plays the keys, a guitarist, a bass player, and a drummer.

Michael:

And and they they're great. Destroyed. And they have, like, some incredible range in terms of, like, the types of music that they're playing, and they and they always sound no matter what they're playing.

Jake:

So I've been listening to this guy recently. He's not new, but he is new to me. And his name is Lewis Cole. You heard of this guy? Mhmm.

Michael:

The name Have

Jake:

you heard of him?

Michael:

Okay. So anyway, he's

Jake:

kinda like a he's a jazz, like, I think trained jazz, like, musician, something like that. Incredible drummer. Just an incredible drummer. Super good. But, okay.

Jake:

One other question. Have you ever heard of a Vulfpeck, v u l f p e c k, Vulfpeck? Corey Wong, Joe Dart on the bass. Anyway, they're sort of like a funky fusion band. They're all really insanely talented musicians, really funky fun music, but this guy sort of reminds me a little bit of that.

Jake:

The reason why is because all of his music videos is just somebody with an iPhone going around. He sets up all this all the stuff in his apartment or his house, whatever. He'll have, like, a drummer in the hallway and the bass guitarist right there with him and then a keyboard there. And then in the kitchen, he'll clear out the kitchen and he'll have, like, a horns section in there. And then in his driveway, he'll have, like, a choir.

Jake:

And, like, he'll set it all up, mic it all up, mix it all, and master it, and then release it on YouTube while while they recorded these things on on iPhone. It's insane. It's really crazy, but he's very talented and fun to listen to. Crazy crazy person, but he's really, really good. So they also have a thing called clown something, clown chaos, which is a bit dark, but also sort of funny.

Jake:

Anyway, if you're looking for some interesting music, maybe not great music, but his music videos are are hilarious. So you should definitely check him out. So, anyway, Louis Cole.

Michael:

Absolutely. So that's

Jake:

not that's when the jam on my wrist.

Michael:

Yeah. Mhmm. I am. I believe he's changed my we've gone. I was gonna

Jake:

say if it reminds me of if Daniel Colbourne was to make music, this is what he would make. That's that's every time I think of it, I look at the guy yes. Chaotic energy. Exactly. I look at the guy, and I think to myself, he looks like Daniel Coborn, and then I listened to his lyrics, and I'm like, he sounds like something Daniel Coborn would say.

Jake:

And then he's also very smart and just, like, doesn't care. Like, I don't know if he cares, but he's I don't know. He just reminds me a lot of Daniel Coburn. So I've I've been I've been thinking of sending him this artist and being, like, number 1, have you heard of this guy? And number 2, he I think you would be this guy in another life.

Jake:

So we'll see. We'll see what he thinks. I'll have to send him a message. Mhmm.

Michael:

Yeah. We're gonna we're gonna talk about jams. I've, my brother has been playing the guitar since he was in, like, primary school. And it was always like, you know, he and I would jam a bit and but he would always have a guitar in his hand between, like, when he got home from school to when he went to bed, basically. And, you know, after I moved out of home, he kept playing and he played in a couple of bands.

Michael:

And it was like, you know, I saw him play once and it was like the band that he's in has their own original music, but they also play as a cover band. And I saw I saw his cover band play. And I hadn't seen the original music for 10 years or something. And they I went and saw a gig of his couple of months ago now because it was, like, near home. So I thought it was easy to to to duck out once the kids have gone to sleep and and be back without getting crazy.

Michael:

And he he has turned into, like, I've I've never felt proud of my brother, like, you know, as as a big brother, like, never felt proud of him. But when I saw him on that stage, I'm like, hell, he's he's really stuck to his instrument and really perfected what what he's doing. And so I, like, I I I was proud of him, and they they put out their new album a couple of weeks ago. And I've been listening to that fairly consistently. But they they charted their band.

Michael:

So they reached number number 15 on the ARIA charts. So, yeah, they it's legitimately huge competition. Not not just like me me pumping up my brother. And they were, like, I think, 20 or something on the the vinyl charts as well behind, like, 10 Taylor Swift albums or something like that. So that I I feel like that's cheating.

Michael:

But, yeah, to to get on the podcast of the band? They're called Audio Reign.

Jake:

Audio Reign. Okay.

Michael:

R e i g n. I'll put a link to that

Jake:

in the

Michael:

show notes. Check out the the new album.

Jake:

What sort of, what sort of genre are we talking about?

Michael:

Yeah. It's rock. Okay. But, yeah, it's it's like it's good stuff. It's all original.

Michael:

It's, the the title track is called, Relentless, which they which they released back in, like, 2021, I think, you know, on on the back of lockdowns and COVID and all that kind of stuff. Sure. Sure. You know, it's that that kind of energy of, you know, let us out of here kind of thing. But, yes.

Michael:

Yeah. That's the album. Yeah. Really quite good, as I said on on the charts as well. So, yeah, check check it out.

Michael:

I think, you're decent. Well, maybe I'll maybe I'll put a snippet at the end of the at the end of the show.

Jake:

You absolutely should. That's a great idea. I think we should start doing that. There's some audio rain at the end. Yeah.

Jake:

That's actually it's I feel like a lot of the whole music industry stuff is is some of it's just luck. Right? Being in the right place at the right time, the right person hearing you, that sort of stuff. It reminds me of this, this one comedian. I don't remember his name, but he was on, like, David Letterman or something.

Jake:

And he was like, what would you say to, you know, young comedians who are hoping to follow in your footsteps? And he was like, I would tell them to quit. He's like, it's not gonna happen. It's not gonna happen for you. He said he said, statistically, for all the people listening to this, he's like, it's not gonna work out for you.

Jake:

You. You should just quit. He was like, I just got lucky. That's what it comes down to. I just got lucky.

Jake:

He said, but you won't. It's it's just funny. Yeah. But, you know, it's

Michael:

the only people who There are

Jake:

It totally is.

Michael:

Yeah. There's there's so many things like that in life, where, you know, there's there's this comedian who had a a special recently, and everyone found out, like, because he was he was always big on sorry. He was not big on TikTok. But, you know, he eventually conceded and and started posting stuff. But he only ever did any, like, crowd work and things like that on on TikTok.

Michael:

So people never really saw his comedy, and it got to the point where he was so popular. And I think largely popular on TikTok with a certain demographic because he's like a strapping young lad kind of thing. Right?

Jake:

So Mhmm.

Michael:

The majority of his audience grew from, you know, being a strapping young lad and and, you know, women finding him attractive and stuff. So when he got his Netflix special, people found out what his actual comedy was like, and they really turned on him. So Oh, really? So much well, because it's it's not not the not the kind of humor that they thought that that they were.

Jake:

Oh, okay. So Do you know do you remember his name? Who the guy is? It's okay. I'm taking you off topic.

Jake:

What you were talking about is, like, the idea of getting lucky or whatever. So

Michael:

Yeah. Like, it's it's totally getting, lucky. Right? And being in the right place at the right time and happening to have the the the person there that, like, sees you and and, you know, figures it out and that kind of stuff. So, Matt Rife is the name of the comedian.

Michael:

Okay. I think

Jake:

I've heard of him now.

Michael:

But yeah. I guess it kinda goes His his actual actual comedy is very different to what you see it. What people had seen of him and knew him for from TikTok. So but he got his $20,000,000 from Netflix. What does it matter?

Jake:

Oh, yeah. I've seen this guy. Yep.

Michael:

It's not bad. Yeah. I was gonna say it kinda

Jake:

goes along with Aaron's talk. Right? Like, working in public increases your luck or whatever. Right?

Michael:

Mhmm.

Jake:

It's kinda how he ends his talk. Like, if you you know, some one of these days, something's gonna happen for you and people are gonna say, well, that's really lucky. You know, like, yeah. Well Yeah. It is.

Jake:

But also, I've been working my tail off to get that luck. Right? To make that luck happen. So yeah. Anyway, good lesson.

Michael:

Before we finish up our little our music segment here, can I just Yes? Indeed. Say, Kelly Clarkson is, like, really underrated? Is that a thing?

Jake:

Like Okay.

Michael:

Is Kelly Clarkson underrated? Underrated, overrated? Because she is incredibly talented.

Jake:

She's pretty oh, yeah. She's absolutely talented. 100% agree on that.

Michael:

It was it was never my kind of music. Like, you know, American Idol, pop music, whatever. But, you know, now she's got the Kelly Clarkson show. She does this Kelly Okey, so she's always doing covers and stuff. And I don't think I've heard a bad cover.

Michael:

Like, every cover that she has put out is just new. Like, she's got such an incredible range, like, in terms of what she can sing. And and I mean, yes, she's she's doing it publicly. So she's not going to perform something that she's, you know, you're not good at. You don't you only put out your best work, but I think everything that she's attempted has been incredible.

Michael:

So I think Kelly Clarkson underrated.

Jake:

Yep. I know. I I don't listen to a lot of Kelly Clarkson, but I can imagine that to be true because she is an incredibly talented vocalist. Absolutely. Yep.

Jake:

She's been on you know, she's on American Idol. She was also on The Voice. That's where I've seen her a lot is on The Voice, actually. I don't think she's on there this season, but, watched some of that back in the, yeah, in the last couple of years. My wife likes that show, so we watch it every once in a while.

Jake:

But it's good. Yeah. And she is very talented. Well, folks, we are about 12 minutes in here, and we haven't touched on any code stuff. So why don't we do so?

Jake:

Why don't we jump in and do some code stuff? We've been working on recently, we're gonna be doing some near shoring of some stuff, and so we're trying to get everybody out of our legacy system and onto this new system that we're sort of building, which is meant to ramp up all of our internal team members a lot faster than it would have, if they were using the old system. The old system is a green screen terminal system. And so so, anyway, this is this is a modern web interface. And so, you know, you have the old you have the old veterans who are making plenty of money using the old green screen one.

Jake:

So we can't get rid of it. You know, but you have the new stuff that needs to accomplish all the things that the old stuff did, hopefully. Right now the

Michael:

strategy is sort of different. Set of requirements is the new system.

Jake:

That's the

Michael:

everything the old system.

Jake:

The old system did. Now the good news for us is that we've been able to roll it out, slowly, like, eventually. Right? Because all the new people were getting trained on both systems essentially. Right?

Jake:

And so our goal was to essentially make the new system attractive enough to persuade people who are using the old system to switch. We don't make them switch. There's no forcing their hand, and we will probably never fully make anybody switch. But what we're trying to do is make it so that the new system does all the things that you have to do in the old system in 10 steps, in 2 steps. And so it's much faster, much more efficient, and it just does your job for you.

Jake:

So you can focus on doing the actual work rather than following this 10 sets of steps. Right? Yeah. Now to be fair, the 10 sets of steps can be done by a veteran in the same amount of time. Doesn't matter to them.

Jake:

They it's memorized. Right? They just they just handle it. It's no big deal. But it has been interesting, to do that.

Jake:

And one of the ways that we've done this is, using pendant and feature flags. And I've gotta tell you, it has been a huge game changer. I don't know if we've talked much about Pennant on this show before, but if we haven't, I think we should. Have you guys used Pennant much?

Michael:

Yeah. We're starting to to roll it out now, across new stuff that we're we're pushing out because we do need to be able to, you know, feature flagger on and off. We're trying to figure out, like, the best way of using it. And I think Tim has made some modifications to Pennant since it was released, kind of not not for me or not because of me, but some things that I've said that, you know, this is how we kind of want to use a feature flag piece of functionality. I think that kind of creeped in, where a lot of the stuff is like the feature is on.

Michael:

But we or the sorry. The feature itself is off, but we wanna opt people into it. And the way that it was working initially, it was like a kind of a global global thing. And it was like on or off.

Jake:

Yes.

Michael:

So you know, now it was like database fallbacks or something like that. That was that was implemented. So yeah, we database fallbacks are

Jake:

familiar with this,

Michael:

like as in resolving it from some database thing rather than some like global toggle or whatever. So this allows us to have the feature turned off, but then opt in like admin users or internal users as we start testing that and things like that. So I haven't been Sure. Maybe to across the implementation or how we've actually been using it. But I know that that I've bumped into some stuff initially with it.

Jake:

Yeah. Maybe it'd be worth me trying to explain briefly how I think Pennant works. Run it by you, see if that crosses your filter, like, if that makes it through your filter of how you think it works. And then I can talk about it, like, how we've been using it a little bit and see if that's helpful to anybody who's interested in trying it

Michael:

out maybe. Yeah.

Jake:

Cool. So the concept of feature flags is that you can have a, feature, a new thing that you're developing that you can release into production without crashing your entire application. Right? So, like, I will as an example, I have a feature that one of my team members is working on. It's the end of the week.

Jake:

It's Friday. It's not completely done yet, but it's done enough that I can test it out. But I don't wanna test it out for everybody. I just want it, like, it works locally. It works in my tests.

Jake:

That's fine. Fine, but I want to see what it works like in production. And so what I can do with feature flags is I can put it behind a feature flag, I can push it to production, and it's not enabled for anybody by default unless I say so. So that's sort of like the promise that I'm making, with these feature flags is that you can you can slowly roll these things out to only yourself and into a beta set of users and then eventually roll it out all the way. So let me that's that's sort of like the premise.

Jake:

Let me explain how that works. With Pennant, once you install it, there are a couple different ways that you can define features. The easiest way is just to define a string. And so what you do is you can say, it's similar to like a gate check. And so you can say is a feature enabled, like, for this particular user or whatever, and you can just pass a string.

Jake:

And then if it's never been resolved for that user before and you have a values you you have a resolve function set up, it will determine, if it's enabled for that user or not. So that's one way to do it. Not the way I recommend doing it. The other way that we do it is you can define a class. And so you can say, I think it's PHP artisan pennant make or something like that, and, what you can do is then you can define the name of a feature.

Jake:

So for us, we'd say something like can view payment iframe, right, feature. Can view can view payment iframe feature. And so inside of that class what you get is you get a function, sorry, a method called resolve. And, the resolve gets a argument passed to it, which is dollar sign scope. And by default, the, type of that argument is mixed, meaning it can be a bunch of different things.

Jake:

Right? But what, what the feature facade will typically do is it will automatically resolve the logged in user and pass that to that resolve method. So what you get is inside that class, you get the user and then you can determine if that particular user should be allowed to see that feature or not. And now typically what I do when I'm just rolling out one of these global ones is I'll just say return false. That's it.

Jake:

Return false. And so what that means is anytime you are checking for that feature, and typically for me, it's like inside of Vue or inside a controller or it could be inside of a LiveWire component, If I want some behavior to work one way, if the feature is enabled or a, funk, you know, behavior to work a different way if the feature is disabled, you can do that. And, like, inside of your LiveWire component. Right? You can say it should go to this API or it should go to this API depending on if it's enabled or not, which is really nice.

Jake:

And so I just just say return or sorry, resolve returns false. So what that does is anytime that feature is deployed, once the feature is deployed, there is now a features table inside of your application. Now here's one of the tricks. No user will have that feature resolved unless they hit the page that contains that check for that feature. So it's not automatically resolved as soon as you push the feature.

Jake:

The person who is hitting that page has to resolve that feature and then a record is written to the database or whatever driver you're using, determining that that particular feature class and then it will have a flag if the if it's enabled or not true or false. Right? So by default, it's gonna be false for everybody, which is great. So I go visit that page. It's false for me, and then I can go to the database and I can turn it on for myself.

Jake:

True. And now I get it and nobody else does, which is great. And if you wanna roll it out to a set of beta users, I'll do the same thing. Go find them in the database, turn them on to true, your development team, your QA team, whatever, go turn them to true, and then you can do your testing. The other thing that you can do is inside of that resolve, you could use the user to determine if they're part of a group.

Jake:

Right? So you could say, do they they have a particular role? Are they in the QA group? And if they are, resolve true, otherwise return false. And so what that does is when the user hits that feature and it resolves, it will look at the behavior that you have specified inside that method and return true or false based on whatever checks you have on that user.

Jake:

So that's the most simple version of what we're talking about. You are not limited, however, to using the user as the scope. You can also do something like pass the user's team. Right? And so if you pass the user's team, you could then see, like, is the team the QA team?

Jake:

Rather than getting user in that in that resolve function, you would get the team, and then you could just check against the team. So So when you're doing that, you'd have to say feature, whatever the name of the feature is, 4, and then you either pass in instead of the user, which is what what default is. You'd say user arrow team or something like that. Right? And then that's what's gonna get passed to your resolve function.

Jake:

So it's pretty simple. That works well. But if you don't know that it only resolves once before it gets written to the database, that can be very confusing because for me originally, I thought it gets resolved every time they load the page, but it does not. It gets resolved once. And then once it's in the database, that's what it is.

Jake:

Unless you clear it out and let it resolve again.

Michael:

That was that was the thing that tripped me up the first time that I used it. Yep, exactly. I was gonna use it, on the Laracon AU website to determine whether or not something should display. Mhmm. And so because it resolved I think it was time based.

Michael:

And because it resolved once.

Jake:

Yes.

Michael:

You know, I was expecting it to just appear when, you know, that time was was in the past or in the future, whichever way it went. And because it was already resolved. And because it was like an anonymous thing, it wasn't a per user thing. By the time that time rolled around, nothing happened. So, yeah, something something to be mindful of because of the way that it does that resolution logic.

Jake:

Yeah. I wonder, like, if there's a way to, like, how would you accomplish that if that's what you wanted to do? I mean, instead of using a feature flag, you could probably just say, like, if current time or if now is, you know, after this particular time, I suppose, is what you do. Yeah. But it seems like

Michael:

What what I ended up doing is in that scenario, what I ended up doing was just using, like, the array driver or whatever it is. So that it

Jake:

Oh, okay.

Michael:

So it does actually check it each time, but I think that's, like, global. I don't know that you can do it, like, per flag. So Yeah. Right. It's like you guys

Jake:

will drive it.

Michael:

Statement in there.

Jake:

Correct. Correct. That's exactly right. I suppose if you wanted to do the feature check that every time and you wanna do the right, I mean, that would work. That would work, which is handy.

Jake:

Okay. So that's number 1. That's number 1 got you there is that if you want to resolve it, you know, it resolves once per user when you do the page. If you want to re resolve it, you have to sort of clear out that flag, and then it will re resolve it for you once you hit that page. Now the other thing that can be a little bit annoying with that is, like, for example, if I wanted my QA team members to have it enabled and I and by default, I'm just setting a false.

Jake:

Right? I'm saying just resolve false. That's it. Every user that I want to enable it for has to go hit page first before I can enable it for them because it's not going to be in the database first. Right?

Jake:

They have to go there and resolves it. Then they get a record in the database. Then I can go set it to true, which is annoying. And so one way that we got around that is in our application, we're doing a little bit of trickiness. So when we are deploying, we loop over our features directory, and we say, go grab any of the features classes that are in there.

Jake:

Then we say go into the database and delete any features that are in there that are not in this list, Right? So we do a where not in, and we delete them all. So that cleans up any of the old ones that aren't being used anymore. And then secondly, we say, for each user resolve missing or load missing, and then we pass in that class, or that that list of classes. And so what that does is it basically eager loads or eager resolves those features for every single user in our table at that point in time.

Jake:

And so it's not a perfect solution, but what it does do is it allows us to be able to, as soon as a feature is deployed, it's resolved for every user. And now I can go in there and allow the users that I want to see it to see it. Now, again, there are better ways to do that. This is just a way that we've found around it that does work. So that was gotcha number 2.

Jake:

Gotcha number 3 is that each one of these features, if you're using the database driver, has to be resolved on each page load, not resolved, sorry, queried, and they're individually queried for. And if you have a check more than once on a page, it will query for it more than once. So if you're using features heavily, which we are, you can end up with 13, 14, 15, 25 extra queries per page load because it has to go hit all of those things.

Michael:

Yeah.

Jake:

So there is a eager load feature for this. So you could say eager load, and then you can pass the list of classes that you're interested in that you're loading, And then you can then then it will pass it along with that to the page, and you won't have to query to resolve them again. And it just does it in one big query rather than in 20 queries. It does it in 1, passes it along, and you're all good to go. So just a couple of things to be aware of that we've found that have bit us.

Michael:

Maybe maybe is does Pennt have the ability to, like, flag that? You know how with eloquent models, you can disable lazy loading and things like that. I wonder if

Jake:

Interesting. And

Michael:

it has or should have a like

Jake:

that that would be a good lazy

Michael:

lazy loading of those features so that it forces you know, won't do it for you, but it will force you to then make sure that, you know, you're going and doing that. So if there's any rogue, you know, request to to loading a feature, at least you're prompted to do that so that you don't have any user impact.

Jake:

Yeah. That's an interesting concept. I like that idea. That could be a good pull request. Another good pull request, I think, could be this idea of, like, time bombs, which I think we've talked about before, which is like you could say if it's after a certain if it's after a certain date, this feature should throw an exception in my test runner, right, or in my or in my development environment.

Jake:

If in my development environment or my test environment and there's a feature that's being resolved that's after this drop dead date, it basically is a halt for you to go fix this. Either remove it because you're not using it anymore or go update the date manually, whatever. So that's I think that's the last. Let me think. Oh, no.

Jake:

That's not the last gotcha. That's that is another pull request that you can make. The last gotcha is that if you're using Livewire, and you're using Laravel debugbar, it will look like these queries are being run every 2 seconds. It's a, it's a weird thing. So, like, it looks like I because I was, like, watching my I was watching my debug bar, and it was, like, every 2 seconds it'd be, like, boop, and, like, re resolve all the features.

Jake:

I'm, like, what the heck? Boop. Do it again. Resolve all the features.

Michael:

Like a love life.

Jake:

I don't think I did that. I don't know if I did. I might have. That might have been it, but I talked to Tim, and I was, like, Tim, by the way, this is really weird. He's like, I can't reproduce it.

Jake:

I don't know what you're talking about. And I turned off debug bar, and I was like, oh, it's actually not it's not happening anymore. I was like

Michael:

Yeah. There was something I had the other day with this, like, a setting that you can put into the debug files config. I'll see if I can dig it up. Ajax handler auto show. And so anytime it makes an Ajax request, like any and I had this happening in Nova where I was trying to, like, look at the query that it was running or something.

Michael:

But every time an AJAX query happened, it would refresh and, like, change

Jake:

the current

Michael:

debug bar. So it's possible that something is true. Oh, that might have run it.

Jake:

Yep. Yep. That might have been

Michael:

turn that off in debug bar. But it's interesting. It it would still record the request. It just wouldn't refresh. So I could actually look at the thing that I was looking at without the, you know, the next request coming in and then updating the current context of debug bar.

Michael:

So, yeah, the the I mean, that's the only thing that springs to mind is that if you had a poll on there and it was causing, you a request to go back to to Livewire, then, yeah, as part of that life cycle, it's probably going to be resolving all of the feature flags again or the pennant flags. Yeah.

Jake:

Yep. So those are the things I've run into with pennant, and, I would say that I would definitely recommend it for use. It's been a huge lifesaver. And, there are a couple of little things that you have to understand about it, but once you get it, it's solid. And a lot of people could say like, well, I mean, I could rewrite that.

Jake:

I could write that on my own. And it's like, you totally could. You really honestly could. I know what we were just talking about is like, sometimes a conditional is completely sufficient. But it's also tested.

Jake:

This is also tested, and there's documentation for it, which is why I choose to use this rather than my own because I know myself, and I know I'm not gonna write documentation for this. So the next developer that's coming behind is gonna be like, what is this? How does this work exactly? It's like, dude, I don't know. Ask the last guy who wrote it.

Jake:

You know? Yeah. Yep. So instead of just saying, go go look at the docs. That's where it is.

Michael:

Yeah. I I think that's the thing with with any of the first party Laravel stuff is that, you know, yes, you can write it yourself. Yes. You can implement it yourself. And, yes, it will probably work for your use case.

Michael:

But the Laravel stuff is battle tested with, you know, hundreds of thousands of applications. If there's issues with it, they're probably going to be found and fixed way sooner than if you've got your own thing running. So, yeah, always absolutely always prefer first party things. And then, like, reputable third party things, you know, Sparse Beyond Code stuff. There's lots of reputable stuff out there as well.

Michael:

But, you know, do your own due diligence on that stuff, of course.

Jake:

Yeah. And the thing is too is, like, if you're really, like, dead set on, like, well, I could do this myself and this doesn't have this thing that I need, write the pull request for it. Like, let everybody benefit from the brain, you know, that you've that you've got and, like, from the feature that you think could really be included. And if it still doesn't if they if they don't accept your pull request, fork the thing. You know what I mean?

Jake:

Mhmm. Something like that. I mean, there's a lot of options other than just writing your own stuff. And so I don't know. I think it's worth it.

Jake:

You know what I saw? That was hilarious. In our, I've got this application that was probably built on, like, Laravel 4 back in the day, and it's your IATSTUTI or something, whatever it is. What is how do you say that?

Michael:

Yeah. Yeah. What was it? IATSTUTI.

Jake:

IATSTUTI. Is that what it is? Yeah. It was like nullable fields package where it was, like, there are certain yeah. Still kicking around.

Jake:

I'm like, dude, we can get rid of that. Sort of, like, nostalgic. It's like, maybe we'll just leave it around for a little bit longer. So I don't even know. That was the original package you wrote that, that allowed us to meet.

Michael:

I don't even know that it that it's worthwhile using that now because, you know, Laravel does No.

Jake:

You got

Michael:

the null. I suppose I suppose it handles situations where, like, it does more of a filled check than a trimmed strings. Uh-huh. What is those empty

Jake:

strings to null? Right? It's what it does. It's it's the that's the that's the other middleware that we have now too. So there's, like, trim strings and there's empty strings to null.

Jake:

So it doesn't do anything anymore.

Michael:

Yeah. So I don't I don't know, but, like, it still gets downloads. And, like, people will ask for a bump to the Laravel 11. So I guess people are still using it. I don't I don't know.

Michael:

That's so funny. Need to still use it in, you know, in 2024 on on Laravel 11, but, you know, as long as people ask

Jake:

for it. It's probably one of those things that's, like, it's already installed. It's already on my models. Like, I'd it's just when I do a composer update, it just gets installed. It's the newest version.

Jake:

It's like, I don't I don't care. It doesn't I don't ever see it. I don't need to mess with it. And so, like, I could totally rip it out, but it's like, doesn't even matter. It's not worth it's nothing's broken.

Jake:

Just leave it. You know? Yeah. So, anyway, other more complex issues to deal with. So yeah, man.

Jake:

I will say so before I go on another rant, give you a chance to talk about anything you wanna talk about because we're already at 30 minutes.

Michael:

Yeah. I mean, we spent 10 minutes of it talking about nonsense. So, that's true. Are you is is there anything?

Jake:

Yes.

Michael:

This towel over here. You've got this whiteboard over here, which is conveniently blurred out. But this is this is the speaker lineup over here. So,

Jake:

nice.

Michael:

I think we've we've put together a really, I think, unique. There's lots there's lots of people speaking this year that haven't spoken at a lot of people. We've got, I think, 17 speakers that we've sent invitations to. 8 of those speakers have never spoken at a Laracon at all. So very I and I I think they're gonna be very good talks.

Michael:

I think there are very they're very good speakers, And they've been in the Laravel community for a long time. So this is kind of, you know, this is the whole kind of theme that we're trying to put forward where Laracon AU is a bit bit more low stakes in terms of, you know, on the Laracon scale, in terms of number of people and and, you know, eyeballs across it and things like that. Obviously, the talks will go out online after the conference, but I think it's a bit more of a low stakes environment to to kind of start your speaking career, which is why we really try and and bring those new newer people in so that they get the opportunities to to see what it's all about. So, yeah, I I think 6 returning speakers are Matt Stalfa and and Simon Breschley Otis are a couple of those. We announced those earlier this week, as as coming back to to speak at our economy, which I'm excited about because I haven't seen Matt since he was here in 2018.

Michael:

So

Jake:

Yep. Good deal.

Michael:

No. Not true. Last time I saw Matt was in 2019. But, yeah, it'd be very exciting to have him here. The other international speakers that we've gotten very excited to to have on our stage.

Michael:

One of them has spoken at, Laracon US before. The other 2 have one of them. Sorry. One of them has, the other one hasn't. So I'm I'm excited to to bring these these voices, down under and get them on the stage.

Jake:

I'm excited to see if Kevin McKee made the list. We will see indeed. Stay tuned, folks. Stay tuned.

Michael:

Yeah. I think I was umming and airing about it. And I thought, do I because we we start historically, we have started the 2nd day of the conference at, like, 10 o'clock just because we do after dark on Thursday. So it gives people the opportunity to have a bit of a sleeping and things like that. But, we're gonna start both days at 9:30 this year.

Michael:

And we I mean, I think 9:30 is still reasonable for sleeping after Yeah.

Jake:

Oh, for sure. After

Michael:

that anyway. And so we're gonna we've we've added an extra talk slot this year so that we basically fill out both days.

Jake:

Oh, that'll be awesome.

Michael:

And And and we're gonna we're gonna try and do a panel of some description in the game because I thought we had a a lot of fun with the the Laravel team last week. And I've got Yeah. Yeah. I don't I don't know that it's gonna be Laravel team. It depends on on how many we get here.

Michael:

I know that Dreis is occupied. He's got or will have a baby come November, so he's not gonna be able to travel. Nuno is has put, his speaking around the world engagements on hold for the I mean, he's doing Laracon US, but I think that was you know, he said last year that he was kinda gonna simmer down and focus on content and pest and things like that this year. So I don't know if any of the new people, you know, Taylor's been hiring like crazy lately with, you know, Josh Yeah. And and a few others joining the fold lately.

Michael:

So, yeah, I don't I don't know who's coming, who's not coming. It'd be be exciting. And I'm I'm looking forward to, in about two and a half weeks, start announcing some more speakers once once we get the acceptances all come through and schedule kind of looking a bit like what we want the schedule to look like and going from there. So I'll just say tickets. That's super smart.

Michael:

We We smashed our blind bird allocation like 3 weeks earlier than than we had kind of forecast, which is fantastic. So, you know, we we brought forward the announcement of our first three speakers. And, early bird tickets are on sale now until later. I can't remember the date that that I put out, but, like, later or until sold out. So we're about, I wanna say, 40% through our capacity.

Jake:

And how many people do you how many people are you hoping to have, if everything sells out?

Michael:

Yeah. We're going well, 395 is the capacity. So we're we're at about that. You know, we're we're on approach to halfway after a couple of weeks. So it's good.

Jake:

That'll be great. Yeah.

Michael:

Yeah. Once it's like, I'm gonna be announce.

Jake:

That's a that's a good announcement, Scott.

Michael:

Would be good.

Jake:

That's a good set, honestly. That's a great that's a great conference.

Michael:

I've I've had a few people say, like, you're coming coming to, Dallas. I'm like, you're coming to Brisbane.

Jake:

Yeah. Nice.

Michael:

We're still like, I I get the pain of, like, when we try and invite someone to come here, and it's like, I I don't mind to travel. For some people, 24, 26 hours is is a bit much, especially when you're used to shorter flights. Being in Australia, for us to go anywhere other than New Zealand. It's a long way. So Yep.

Michael:

But I think, you know, I would love to go to Dallas this year, but it's just it's too hard with a 3 year old and a 6 year old to be on the other side of the planet. For, you know, I mean, any period of time, but to be on the other side of the planet, if anything happens with a 3 and a 6 year old, like, yeah, it's not like I can just be back quickly. It's, you know, 30 hours of of travel away. So I I understand it from that perspective as Yep. The parent of young kids.

Michael:

So not this year, maybe next year, probably more likely the year after that. So

Jake:

Yeah. It is tough, dude. I feel that. I feel that. You know, I've got the 4, and they're getting older, so they're getting more independent.

Jake:

We'll we'll get there eventually, but I still got the 6 year old. Did I tell you Harrison broke his arm?

Michael:

Yes. Not on here, but I yeah. You did you did share that he broke his arm.

Jake:

Yep. Yep. Broke his arm. And, so I mean, stuff like that still happens, you know? So, I mean, whatever.

Jake:

Whatever. They're good. They're good. They're getting to that age where, they get more

Michael:

and more head butt a chair the other day. Oh my gosh. I say head butt a chair. She was running and not watching where she was going and fell over and went head for us into a chair. So bit of blood, but no stitches or anything like that.

Michael:

I just took it to the emergency clinic. Bit of glue, bit of bit of bandage and it bit of bandage, and she was fine.

Jake:

I'm glad for the glue. I think the glue is a good call. Like, the, I love using glue so much more than the stitches. Like, I remember asking for glue when I went to the emergency room just because I was like, please don't undo stitches on my face. I dropped a dumbbell on my face once.

Jake:

That was fun.

Michael:

Lifting too heavy. Mhmm.

Jake:

Well, no. I was doing too many sets. I was, like, I was in my last set, last, you know, last, rep of my last set, and the dumbbell was too heavy. And the these things were not regular dumbbells. Okay?

Jake:

They were, like, the most janky dumbbells from, like, the most crappy gym you've ever seen in your life. So there was, like, basically, like, a piece of black pipe with weights welded onto the black pipe. No joke. So off the end of this dumbbell was, like, an inch of black pipe with just, like, a just just a circle, like, roughs you know, it wasn't even just metal. It was metal.

Jake:

It's like a sharp edge of metal. So stupid. And so it's coming down, and I can't, like, drop the other weight to support this one. And so I just see it coming towards my face, and I'm like, oh, my gosh. Like, I'm gonna drop this thing on my face.

Jake:

So that end, it goes wham right in my eye, like, right below my eye. Uh-huh. So I drop the weights, and it makes a huge noise. And all the guys who are lifting, who know what they're doing, are looking at me like, what are you doing? My brother happens to be in there, who is one of the guys who knows what he's doing.

Jake:

He was a beast at that time. And I'd stand up, like, almost knocked myself out with this weight hitting myself in the face. And I stand up and look in the mirror, and I just see this line under my face, and then it starts bleeding.

Michael:

Uh-huh.

Jake:

And I'm like, oh gosh. This thing is deep. And so I'm I said to my brother, like, dude, can you drive me to the hospital quick? He's like, bro, it's leg day.

Michael:

I'm in the middle of the set.

Jake:

Yeah. Exactly. He's like, dude, I can't I can't drive you. You don't have to wait. I get I'm like, I'm working out right now.

Jake:

Like, are you kidding me? So I drove myself to the hospital. It's so funny. And they glued it up. It was fine.

Jake:

But, oh, man. That was hilarious. It's it's filled in now. You can't really see it. But No.

Jake:

I love telling that story because I just love giving my brother a hard time about that. Dude, it's leg day. He had a he had a, he had a poster on his wall when we were growing up. It said your brother is getting married on leg day. That's what videotapes are for.

Jake:

That's what his poster said. I was like, respect, man. Respect.

Michael:

I'm not scared leg day. Very important. Don't skip leg day. You don't wanna be running around with chicken legs.

Jake:

That's right. That's right. It's so funny. Anyway hey. On on that note, we should wrap this one up.

Jake:

Episode 156, take 4. Mhmm. Yep. Episode 156. Find show notes for this episode at northmeetsouth.audio/156.

Jake:

Hit us up on Twitter at Jacob Bennett and Michael Dorenda or at North South Audio. Show notes for this episode, episode. We already talked about that. Rate us up in your podcatcher's choice. 5 stars would be amazing.

Jake:

And until next time, folks, don't drop any weights on your face, and don't skip leg day, and sign up for Laracon AU. We will see you in 2 weeks.

Michael:

Bye.

Creators and Guests

Jake Bennett
Host
Jake Bennett
Christ follower, web dev designer @wilbergroup and @laravelphp fanboi. Co-host of @northsouthaudio and @laravelnews with @michaeldyrynda
Michael Dyrynda
Host
Michael Dyrynda
Dad. @laravelphp Artisan. @LaraconAU organiser. Co-host of @northsouthaudio, @laravelnews, @ripplesfm. @thenpingme co-founder. Opinions are mine.
Music, feature flags, and making the new one do what the old one did
Broadcast by