North Meets South Web Podcast

In this episode, Jake and Michael discuss the differences between transactional and campaign email and some approaches to sending them. We also touch on Jake speaking on PHP[TEK] 2024 on the topic of state machines.

Show links

Creators & Guests

Host
Jake Bennett
Christ follower, web dev designer @wilbergroup and @laravelphp fanboi. Co-host of @northsouthaudio and @laravelnews with @michaeldyrynda
Host
Michael Dyrynda
Dad. @laravelphp Artisan. @LaraconAU organiser. Co-host of @northsouthaudio, @laravelnews, @ripplesfm. Opinions are mine.

What is North Meets South Web Podcast?

Jake Bennett and Michael Dyrynda conquer a 14.5 hour time difference to talk about life as web developers

Speaker 1:

Hi. I'm Michael Durinda.

Speaker 2:

And I'm Jake Bennett.

Speaker 1:

And welcome to episode number 150 of the North Meade South podcast. Yeah. K k k k k k k k k k k k k k k

Speaker 2:

k k k k. Hey. So this is, like, 150 officially, I guess. I guess. We've had this discussion a couple times.

Speaker 2:

Let's have it one more time for those of you who care. This is I mean, like, the you know, technically, this is not the 100 and fiftieth episode, but it it is number 1 50 episode as far as the labels go. We've had more than a 150 episodes. It's just we haven't numbered every one of them because some of them have been Christmas.

Speaker 1:

There is a 151 published episodes.

Speaker 2:

There we go. There we go. So anyway yeah. For you, super fans out there, I guess. So let me tell you what's been going on.

Speaker 1:

You've been painting.

Speaker 2:

I have been painting a lot, actually. I I should, like, show you around. It's still hold on.

Speaker 1:

Let me see. Can you see?

Speaker 2:

We're getting all we we're putting new have new floors in. I've painted all of these areas. There's still, like, chairs up and everything. So, yeah, it's been, it's been an adventure. I will say I have been up way too late, way too many nights in the last couple weeks painting, but it's been great.

Speaker 2:

I I'm I'm super glad I'm almost done, and so very much worth it. It's feeling like everything's coming together and wonderful. So I'm I'm glad to be almost done with that.

Speaker 1:

Did you do a little burn yourself as well?

Speaker 2:

No. Oh, no. No way. There's been 2 guys here. Well, you know, you always tell me, like, you know, you do too much yourself.

Speaker 2:

And I took your advice on this one, and I was just like, you know what? There are people who know what they're doing, and I'm just gonna let them do it. And I will tell you, it's been 2 guys for 3 days, I think, and they're probably they've got one more day. So if we say that that's, like, what? That's, like, 24 times 2, it's 48 hours, right, so far with 2 people doing it, 48 total altogether.

Speaker 2:

Mhmm. I cannot even imagine how long, and that's people who know what they're doing. I cannot imagine how long it would have taken me. I would have never got it done

Speaker 1:

ever. Yeah.

Speaker 2:

And so it was very much just worth having them do it. It's totally worth it, and, I'm gonna get a deal out of it by the time we're done. You know, it's gonna be it's gonna end up being being good. So

Speaker 1:

It's good. It's what you want.

Speaker 2:

Yes. Yes. Yes. Yes, indeed. Yes, indeed.

Speaker 2:

So how about you? How are things going for you?

Speaker 1:

Yeah. Things are going pretty well. Eli finished his 2nd week of school and he's enjoying it. And he kind of it wipes him out. So he gets, like, really cranky towards bedtime, and then he, like, falls asleep between when I leave the room and and when Ray comes in to say goodnight to him.

Speaker 1:

So it's tiring him out. And then Saturdays, he will actually sleep in till 7.

Speaker 2:

Good man. There you go.

Speaker 1:

7. So he go he came out this morning after I got back from my run and he goes, I had a little bit of a sleeping today. I said, that's good, bud. You get tired from all of that schooling. So That's alright.

Speaker 1:

That's going well. But, you know, he's enjoying it. He's, you know, we haven't he hasn't got himself in trouble or anything in in the 1st 2 weeks, which is good. He's,

Speaker 2:

Nice job.

Speaker 1:

He came I went to pick him up this week and he came running out. He goes, dad signed me for Ozkick. And Ozkick is like little kids' footy. So it's their first

Speaker 2:

Ah, nice. Okay.

Speaker 1:

Actually playing footy. So he's come running out asking. So that's basically

Speaker 2:

Is it violent or not too bad?

Speaker 1:

No. It's mostly kids at that age don't really have the coordination of skills, so it's mostly just chasing a ball around. Sure.

Speaker 2:

But there's a lot of value in that too, honestly. You know? Just to chase sides, just getting familiar with the field and whatever. Yeah.

Speaker 1:

Yeah. Yeah. My, my sister always said, like because all of her kids play soccer. But she said a lot of a lot of the kids up where they are, that they come into the soccer club. They they learn soccer to get the, you know, the foot eye coordination and and all of that kind of stuff.

Speaker 1:

And and sort of the fitness app. And then they transition into playing hoodie as they get older.

Speaker 2:

So Interesting.

Speaker 1:

Pretty interesting. But I don't know anything about soccer and have very little interest in it. So I'm kind of hoping he doesn't end up playing soccer. But, you know, whatever whatever makes him happy. You know, we'll we'll try things and he's at that stage now.

Speaker 1:

We we kind of held off doing any team sports or anything, because he was eligible last year, but we kind of Uh-huh. Wanted to hold off until he was a little bit older, because then he'd be doing it with kids that he's in school with and and things like that.

Speaker 2:

So he Yeah. That's a good plan.

Speaker 1:

So this runs in, like, term 1. And then we'll if he if he's still interested in that, we'll get him to an actual football club to to do Oz Kick in term 2 and and see how he goes from there.

Speaker 2:

That's really neat. I hope I'm sorry. Go ahead.

Speaker 1:

Yeah. So the and then they have, like, the Oz kick then gets to play on, like, the AFL days. So during halftime, the Aussies

Speaker 2:

Oh, that's so cool.

Speaker 1:

They select you know, it's not every kid that does it, but they, as far as I know, but they those select kids to come out and they'll get different games throughout the year where they can come out and and have a run around for 20 minutes during halftime, which is which is pretty cool. He's he's always interested in that. Anytime he's kind of bored with the footy, he's like, I wanna stay until the little kids come and play, and then I wanna go home. Mhmm. So Mhmm.

Speaker 1:

Yeah. I think it's So he's

Speaker 2:

he's grown up watching that. Yeah. That's cool. Yeah. I'm curious in in terms of, like, popularity, for sports, in Australia or at least in the area that you live in.

Speaker 2:

So I would guess you've got so footy is like for those of you who don't know, I believe you're talking about Australian Rules Football. Right? Yeah. Yes. That's right.

Speaker 2:

Okay. So so we've got that. So we've got footy, you've got soccer. Do they call it soccer or do they call it football for you guys?

Speaker 1:

Yeah. We soccer. Yeah.

Speaker 2:

They call soccer. Okay. So Australian News Football.

Speaker 1:

Obviously, the people the people that follow soccer will call it football.

Speaker 2:

True. And then

Speaker 1:

the rest of us call soccer soccer. Or futsal is the other gets bandied around depending on the ethnicity of the person talking about the soccer. The Italians and the groups and that, they they tend to call it futsal.

Speaker 2:

My sister Okay. So fair enough.

Speaker 1:

As well. So.

Speaker 2:

Oh, really? Yeah. Yeah. They're just kinda interchangeable then. So, so we got Australian football, you got soccer, you've got basketball.

Speaker 2:

Do you guys have any yeah. Cricket is a cricket a big one too? I mean, I know at least depending kind of on maybe again depending on, like, the ethnicity. I know that we've talked about this a little

Speaker 1:

bit before too. So footy and cricket would be the 2 main ones. The big

Speaker 2:

That's what I was actually that's what I was curious about.

Speaker 1:

In winter, cricket in in summer. Soccer's got a huge following. It's very popular as well. Then the the eastern states. So Queensland and New South Wales are very heavily leaning towards rugby.

Speaker 1:

And I

Speaker 2:

know that there's rugby in the rugby

Speaker 1:

union, and I don't know don't know which of the 2 it is, but rugby is a a very Queensland, New South Wales thing. Footy is very much, a Victoria, South Australia, Western Australia sport. And, like, we've got basketball and that's expanding, but our our National League would would probably struggle against your college basketball teams,

Speaker 2:

to be honest. So it's still it's still kind of up and coming. Yeah. Yeah. Do you guys play baseball at all?

Speaker 2:

You guys play baseball or is it is not really Yeah.

Speaker 1:

There is a bit of baseball around. We the the season just finished here last weekend and my home team hometown team won the the championship.

Speaker 2:

Oh, wow. That's cool.

Speaker 1:

Yeah. So apparently Home

Speaker 2:

hometown team. Nice.

Speaker 1:

We play it, but we're also pretty good at it. So There you go.

Speaker 2:

Nice. Love it. Well, hey, folks, if you showed up to hear about Australian sports, then you're in luck because that's exactly what we're talking about today. So very nice. Hey.

Speaker 2:

I've got an interesting topic to talk about here. Have you ever done campaign emails, like marketing emails for a company that you work for, not just personally?

Speaker 1:

No. Most of the stuff that I've done is transaction. We don't do any of the campaign emails. Like, if you're talking the, you know, drip campaigns and things like that.

Speaker 2:

Sure. Yeah. Or just Like, anything that you would that you would consider, like, a subscribed list of people or something like that.

Speaker 1:

Mhmm.

Speaker 2:

No. Okay. No. Okay. Gotcha.

Speaker 2:

So, what we have done pretty typically is we have done transactional emails as well. Right? That's that's been solely what we've done. We've never done any sort of campaign sort of, like, hey. Let's email these people sort of deal.

Speaker 2:

We've never done that. But in the industry that we're in, we're wanting to expand the ways that we're attempting to communicate with people and also giving them the option to essentially choose which way they want to be communicated with. The challenge that we have is that the folks that we're trying to get in touch with, none of them have talked to us before and none of them have basically consented to be talked to. Right? They don't it's it's they just haven't because they're not our clients.

Speaker 2:

They're not it's nothing. We're trying to find these people basically is what it is. Right? And so some of them, you'll call them, they'll never pick up their phone. They just won't.

Speaker 2:

But if you text them, they'll text you back. Or if you email them, they'll click the link that's in there. Right? So it's, but we also are very sensitive to wanting to be good actors in this space. We certainly don't want to spam anybody.

Speaker 2:

We want to give people the option to unsubscribe, and we want to make sure we have a really good sender reputation, all that stuff. Right?

Speaker 1:

So

Speaker 2:

one of the challenges that we've faced is that we're kind of going from this transactional idea to more of like, well, we have, you know, I don't know, 3,000 people who have logged into our our payment portal and have given us their email, but we haven't heard from them in a long time. So we're gonna email those people. But we're not using like, basically, what we did is we just said, let's take our transactional stuff that we've already done and just send some people into those files and just go manually send 3,000 emails. Well, that's fine, but none of those transactional emails have, like, an unsubscribe button or anything like that, right?

Speaker 1:

And

Speaker 2:

so what ends up happening is people marking this as a spam or as abuse, whatever, and that's not great. So we're trying to figure out if we, if we move those sorts of things over to something like mail coach, you know what I mean, where we just load them up into mail coach and then shoot them out. Yeah. Because mail coach, I believe, will already handle most of that unsubscribe stuff. You know what I mean?

Speaker 2:

Like, the with that deal.

Speaker 1:

Yeah. Built for that kind of stuff.

Speaker 2:

Right. Exactly. Built for some of that stuff. But I I found it interesting sort of how the whole unsubscribe thing works. And so I'm I just wanna take a quick minute to break this down.

Speaker 2:

Yahoo and Google recently banded together to do this new thing. They're calling it Yahooogle informally, I think, right? And so it's like basically these rules they've had for senders that they're now choosing to enforce. And so one of the things that they're enforcing is that if you send over 5,000 emails a day, any of your marketing emails must have a one click unsubscribe. So one click unsubscribe, meaning not you click and it goes to a page where it says, do you want to unsubscribe?

Speaker 2:

And then you click that again. Not that, Like a literal one click unsubscribe. So the way that this works is interesting. There's these there in 1997, there was these list headers that got introduced as an RFC for emails. So in emails, you can send these headers through and there's like list subscribe, list unsubscribe, list archive, and all the list there is referring to like an email list, right?

Speaker 2:

A list of people that you're emailing, right? So you can think of it as like, you know, newsletter sort of deal, right? So all of those list headers are specifically related to mailing lists. Well, list unsubscribe has been there for a long time, but typically it's just been a yet a get URL where you again, you send them there and they click it. The problem is that if you are trying to implement a one click URL solution where you say, okay, as long as they hit that page, we'll unsubscribe them.

Speaker 2:

A lot of email service providers now will automatically hit any link in exactly prefetch everything to make sure that it's it's not spam or it's not, virus or, you know, whatever. Apple, if they, you know, if there's a tracking list or whatever, they hit everything just to like throw off advertisers so they can't say like, oh, that's a good email address. You know what I mean? They'll always kind of visit that thing. So you can't really do that.

Speaker 2:

So what they are doing now is they're suggesting that that list unsubscribe is a get URL that does the you click through and then you click it again and it unsubscribes or or, and I should say that URL should also be able to be posted to. And if you post to that URL, the post will then unsubscribe them in 1 in one, you know, in one hit. So you know how in Gmail or whatever you say, like, like, there might be, like, some unsubscribe thing or whatever. Like, if they click spam and you have a one click unsubscribe, they won't mark it as spam. They'll just unsubscribe them for the list sort of deal, I think is the idea, right?

Speaker 2:

Because they know users don't really differentiate between spam and abuse and whatever. So if, as long as you're playing with the rules, then what Google will do is they'll send the post request to that list unsubscribe header. And you also have to have one one more header called list unsubscribedash post. And that post basically says 1 the value of that needs to be one click unsubscribe. That's what that value of that header has to be.

Speaker 2:

And if it is, then they'll go ahead and post to that URL rather than get it and then assume that you're going to unsubscribe the user. So I thought that was pretty interesting actually. I asked Freak today if they already implemented that. And he was like, yeah, we've had that for, like, 3 years. I think he said in version 1, we had that.

Speaker 2:

And so it's like for me, I I'm that's where I'm at. I'm like, okay. Well, I could buy Mail Coach for 250 bucks and just do it that way and be done with it. Or I could try and build these unsubscribes into all of my transactional email things too.

Speaker 1:

That would be the developer thing to do. But you are gonna spend more than $250

Speaker 2:

of your

Speaker 1:

time doing that.

Speaker 2:

100%. I think the thing that I'm concerned about is that I'm going to end up using the same domain to send all of those emails, both my transactional emails and my campaign emails. And so Google doesn't care at all which one is which. You know what I mean? The sender reputation is tied to the domain itself.

Speaker 2:

So I either have to a, send all my campaign emails from a subdomain or something like that, which would be fine. I could do that. Or I would need to also just make sure that the emails that I'm sending that are transactional also have that same functionality, that same unsubscribe functionality. And to be honest, I can't really think of a reason why I couldn't do that. Like, I could just include it there as well.

Speaker 2:

So if somebody did mark it as spam, it doesn't mark it as, like, an abusive email. It just says, like, hey, don't send them an email again. And so I could just put it into a block list essentially or something like

Speaker 1:

that. Yeah. Depends on what that transactional email is though. Like, a

Speaker 2:

lot of

Speaker 1:

the time, you're sending transaction emails that are like, you have an invoice that you need to pay us or, you know

Speaker 2:

Or thanks to your payment, here's your receipt.

Speaker 1:

Payment or yeah. Like, that kind of stuff. And if someone marks that as spam, you, you know, you probably don't wanna unsubscribe because you'd Right. Like, you probably have some, compliance obligations to send that kind of information to people. But I suppose, like, if you can demonstrate that you have sent it, it is probably not your responsibility to make sure that it was received.

Speaker 1:

Interesting.

Speaker 2:

Yeah. Yeah. If it bounces, for example, though, like, if it bounces on our side like, if we get back a hook from AWS or something that that email bounced, we are obligated to to follow-up on that. So, like To follow-up.

Speaker 1:

Our printed Yeah.

Speaker 2:

Our fallback.

Speaker 1:

In the mail.

Speaker 2:

Exactly. That's literally what we have to do because it's like Yeah. The the initial is, like, you must notify them in the original. It was like, you have to print an email or print and mail. And they're like, well, you can email it, but if you don't get it through there, then you have to send it through mail.

Speaker 2:

So it's like, okay. So anyway, that's been an interesting rabbit hole to kind of go down, and I thought it's it's just a clever solution. Like, it's a really well written, well understood piece of documentation. They just the RFC is really well written. I I I thought it was good.

Speaker 2:

So Yeah. Yeah. Kinda cool.

Speaker 1:

Yeah. It's it's good to know that, you know, Blake and Co at Sparsity have built that thing and they're aware of all of these RFCs RFCs and things that they need to adhere to if they're going to build and sell, obviously, a comprehensive mailing thing. Mhmm. Like, now you could build it yourself, but you're not gonna know about these things, much less implement them. So Totally.

Speaker 1:

There's always that kind of stuff. And and then, you know, if you're using the Mail Coach Mail Coach cloud thing or if you're using, you know, SendGrid and not SendGrid. If you're using ConvertKit or, SendStack from the team at Beyondcode or whatever. Like, if you're using these services, they're going to do some level of work to make sure that they can keep their deliverability rates up high Yeah. Because they're offering this as a service.

Speaker 2:

And one

Speaker 1:

of the mail codes, you can bring your own, you know, s s e s or whatever, you know, transactional mail provider and and send your mail that way. So, yeah. There's there's certainly things to do. I would certainly all of that kind of stuff, I would always send from a separate email to a separate domain. Just to make sure that Yep.

Speaker 1:

You know, your internal staff emails that are, you know, jakebennett.com don't get caught up in in, like, some spam loop.

Speaker 2:

Exactly.

Speaker 1:

And you get on those blacklists, and you can get stuck on there for ages. And and they're quite aggressive about it now as well. So

Speaker 2:

For sure.

Speaker 1:

It's definitely definitely something that you wanna keep away from your, like, human, generated or originated emails versus, you know, the automated system emails and things like that. So that's something I'm looking into again, this year as we're about to gear up for emailing, you know, attendees and and, you know, wait lists and, you know, the the sign up list and all that kind of stuff, for Laracon AU. At the end of this month, I'm kind of revisiting do we wanna keep using what we're using? Do we wanna look at using ConvertKit or something like that? So just trying to figure out I mean, we're using Zendesk at the moment.

Speaker 1:

I found that Zendesk was a little bit lacking in terms of some of its segmentation features, which we were trying to do to kind of email people at various points in in the sort of, like, sales journey, if you will, for for Laracon. So

Speaker 2:

The funnel?

Speaker 1:

You know yeah. The funnel. You know, people that get signed up, but then, you know, they didn't open an email. You know, we wanna email those people again, for example. Hey.

Speaker 1:

You might have missed that tickets are on sale, or you might have missed that CFE is open, or you might have you know, all of that kind of stuff. Yep. Or people that were on the wait list, you know, you wanna make sure that they get notified of all of that kind of stuff. So

Speaker 2:

Yeah. Absolutely. That makes sense.

Speaker 1:

Looking at email again at the moment.

Speaker 2:

Nice. Yeah. Yeah. So that's been interesting. I've also been playing with keyboard stuff this week again.

Speaker 2:

I know we talked about that 2 weeks ago. I've had a couple breakthroughs. David Hemphill helps me with this. And so I think the the place where I'm at now is that I have mapped caps lock, which I was afraid of doing. I've had mixed results with caps lock and I think it's because I was probably trying to do it on a magic keyboard and also on my mac keyboard and macs don't really like when you mess with caps lock too much.

Speaker 2:

But on my on my and may or maybe I just don't have it set up right. That's that's possible too. But on my on my Keychron, it has no problem with it. It's it's

Speaker 1:

Great. Interesting.

Speaker 2:

It doesn't care. Yeah. So what I did is I mapped caps lock to tap to escape and hold is super. So that's been great. It's been really nice because with those 60% keyboards, like I said before, like escape is, sorry, there's no there's no tilde, tilde back ticks.

Speaker 2:

So I mapped my escape to tilde back ticks. I mapped my caps lock to escape and super, right? So tap is escape, hold is super, and then I mapped my control key, my bottom left control key on tap it's caps lock and on hold it's just control. So that's worked pretty good. That's worked really well.

Speaker 2:

And then the other thing that I did is I started using Raycast, with hot keys as well. So with ray I've been using raycast, but they have hot keys and a hot key basically allows you to define a keyboard shortcut to launch an app. Right? So what I can do now is I can hold down caps lock and I can press any of my home row keys and those pop up my most recent or my most, used applications. So like command, sorry, hold caps lock, h is, happy place, h happy place, PHP storm, Right?

Speaker 2:

That's what I I have to map them in my brain. And then, j is Slack. It's like Jake. If someone's trying to get a hold of me. Hey, Jake.

Speaker 2:

K, I think, is edge. I don't have a good mnemonic or mnemonic device for that. And l is loud, which is Teams because I hate Teams. It's so loud. It is just so loud.

Speaker 2:

So many notifications going through there. So, anyway, that's what I've got there. And then I've also, instead of using Moom, m o o m, my window manager that I was using previously, Raycast also has window management, which I did not realize, which is pretty cool. And I can assign hot keys to those commands as well. So I can press caps lock right, caps lock left, and that will, you know, that'll bump my screen to one side or to the other side.

Speaker 2:

Caps lock space, does full screen in the middle. Interesting. Yeah. So it is interesting.

Speaker 1:

And then Maybe I need to look at using those hot keys for the because I use the window management stuff in in Raycast as well. But I just open up Raycast and then type, like, FIFO for first 4th or LAFO for last 4th and things like that. So, having having the ability to do it with hot keys will be interesting.

Speaker 2:

Yeah. So the the couple of things that I discovered in Raycast are like those the hot keys, which, you basically, if you go to any command and then you press command k and then say configure command or configure extension, whatever, it'll bring up a panel and it'll say, alias or hot key. So hot key will basically say you don't have to be in Raycast to run this. You don't have to press command space to pop up Raycast. You just press the keyboard combo.

Speaker 2:

Yeah. Exactly. It's a global thing. So if you press this hot key, it'll just do whatever that command is. An alias, however, is if I'm in Raycast and I type this, it will do this command, right?

Speaker 2:

So I can do the same thing if I press like command space. So for like my top right corner, I actually don't have that mapped in in Raycast for putting something up there in my window management, but I signed an alias of tr top right. So I press command space open open Raycast tr enter, and that pops up to the top right. But you can, you know, you can assign any sorts of aliases. So like for my GitHub alias so GitHub is an extension, right?

Speaker 2:

But within GitHub extension, there are multiple commands. One of the commands is search repos, and so that's the one I use almost all the time. And so what I did is you go to GitHub and then you go to you go to configure command. It's the command k and then you go to search repo and then you can assign an alias to that. So the alias is g h.

Speaker 2:

So now what I do is I open Raycast, type g h tab, and then I just type in the name of whatever repo I'm looking at. So in my case, like core.overgroup .com. I just type in core. It pops it up, and then I can, from there, press, like, command shift p to get to pull requests or command shift I to get to issues, or enter to go to the repo. So it's really fast.

Speaker 2:

My I think that has been the biggest hurdle that I faced moving from Alfred to Raycast was there's so many options in Raycast and it took me forever to kinda navigate through the different pieces. And I just it wasn't fast enough. So the aliases have been really helpful in the hot keys too. So it's a nice

Speaker 1:

Yeah. I think Rissa Jackson, who spoke at Laracon AU, she gave like, her talk at Laracon AU this week gone was on using Raycast and and the power of all of that kind of stuff. So I'm keen to check that out when it's available

Speaker 2:

Oh, cool. On the video. I'll I'll have to watch that. Yeah.

Speaker 1:

Yeah. And then I think Luke Downing also shared he's got some stuff that he set up with shortcuts. Like, the Siri shortcuts on his Mac where it kind of

Speaker 2:

Oh, yeah.

Speaker 1:

Into position. Which I've been I want to do, but I can't be bothered looking how to do it. So if if Luke's just gonna hand it out on a silver platter, then then that'll be really good because I like to have all of my things in certain places on different desktops and things like that. And because I'm using this utility called better display to to give me, like, a fake retina on my ultrawide monitor, It doesn't seem to to remember the position of things. Every time my MacBook goes to sleep, when I open it again, everything's kind of just collapsed onto desktop 1.

Speaker 1:

So I've got to every time it comes out of sleep I've got to move it. So it'll be cool to see if I can figure out how to make that work using Siri shortcuts and raycast and whatever else. I can just push the button and it'll it'll do what it needs to do.

Speaker 2:

That is really cool actually. And I'm I was just looking at Raycast with shortcuts. Like, if you press command space and type in shortcuts, it'll pull up shortcuts as an application, but it'll also list out all of your shortcuts and then you can do the same thing alias or hotkey them. So if you if you wanted to, you could assign a global hot key to run a run a shortcut, which is that's pretty nice, because there might be things that you can do with a shortcut that you cannot do with Raycast, possibly. Yeah.

Speaker 2:

You can do it in the

Speaker 1:

scripting and things like that as well.

Speaker 2:

Yeah. You know, what's one thing I really wish was possible with shortcuts or with just Apple in general. So I use I have Icloud plus I think is what it's called and, I really like the hide my email feature, which is nice because I don't really want to give away my primary email address unless it's absolutely necessary. If I know I'm sending it to a person, I don't have a problem sending it to a person. Although here's my nightmare story, right?

Speaker 2:

I was like, oh, I'm sending this email to a person. No problem. I'll give them my email address. And then they did a they sent out a mass email to, like, 300 people for, like, a class reunion or something stupid, and they put everybody in the CC. I'm like, you moron.

Speaker 2:

You just exposed my email. So frustrating. So anyway, I love the hide my email feature. I use it all the time. Mhmm.

Speaker 1:

But

Speaker 2:

there's no way to get a hide my email email really quickly. Yeah. Unless you go into the settings and then go to Icloud and then go to, you know, whatever it is. Mail and then go to hide my email and then generate a new one. It's just annoying.

Speaker 2:

It's like there's gotta be a faster way to do that.

Speaker 1:

Yeah. Go to use Safari and it'll give you the option.

Speaker 2:

Yeah. That that's true.

Speaker 1:

I don't Like, it detects when it's an email field, and you can like, it'll pop up to you, like, do you wanna use a free field, or do you wanna hide by email? And it comes up there. So that

Speaker 2:

may be true.

Speaker 1:

But that means

Speaker 2:

you're using

Speaker 1:

Safari just to just to fill out a form. So

Speaker 2:

Right. Right. So the thing is it's gotta be using a simple API to do so. Like, it can't be that complicated to go get your email and go, you know, generate a one time use email. It's gotta be simple.

Speaker 2:

But I had a shortcut that used to work on a previous version of Mac OS that would kind of like it was you it used the shortcuts to go through the menus and get to it for me, but it doesn't work anymore. It broke.

Speaker 1:

That's a shame.

Speaker 2:

So yeah. Whatever. Whatever.

Speaker 1:

One last thing before we wrap up. You are speaking at PHP Tech in is it March? Or is it later than May?

Speaker 2:

I think it's later than that. I think it's June or July or something. Let's see. Php tech.

Speaker 1:

Tech.phparch.com.

Speaker 2:

April. 73 days. April.

Speaker 1:

There you go. So how I mean, that'll be a a nice easy drive for you down from, where you are. Yep. How's that Absolutely. Conference are you are you just giving the same talk that you gave on US last year or you are you augmenting it?

Speaker 1:

You're adding stuff to it?

Speaker 2:

I was asked to give the talk again, yeah, by Eric. Actually, when we were at Lair consoles. Absolutely. I'd love to do that. So, yeah, I'm gonna polish it back up, prep it up again.

Speaker 2:

I will likely add a couple more things. I might just say, and here's some additional reading that you could do. So some of the things that so, like, I felt like the talk itself did a great job of explaining basic state machines, and that's great. However, there was a lot of people who reached out afterwards and were like, okay. Hey.

Speaker 2:

I ran into this situation, like, how should I do this? And so I was like, okay. Let's run through the steps and and some of the things that I saw people struggling with were where's a good place for me to create a state diagram? Where how can I do that? Should I just do it in, like, you know, whimsical?

Speaker 2:

Or should I just, like, open a Visio doc and start doing it? There's some places that are actually really good for doing that, like xstate.vis, I think is what it is, or xstate visualization is one one of the good ones. I think

Speaker 1:

a mermaid would do it if you use Mermaid JS because you can do it on Yeah. All in markdown then.

Speaker 2:

Yeah. Absolutely. Yeah. That would be great. I find a lot of times though, like, when you're when you're doing that, like Mermaid, for example, is really nice.

Speaker 2:

I love Mermaid because I can throw it in a GitHub issue and it just renders and it's wonderful. I don't have to open an editor or anything like that, but it's not great for just exploring ideas because it's too it's too low level. You know what I mean? I just

Speaker 1:

want to

Speaker 2:

be able to throw stuff on a page. Yeah. Exactly. And so state state diagrams, I feel like a lot of times, especially when you're first getting started, you just need to throw something on a page. Like write it on a paper if you need to.

Speaker 2:

I don't care. But anyway, x state does a good job of that. So I might mention that. And then the other thing I might mention, so that's on the front side of like getting started sort of thing. Then the other thing I might mention would be to say, in the case that you end up with some complex scenarios, then state charts is where your next stop is on the state machine train.

Speaker 2:

So parallel states, hierarchical states, avoiding state explosion, where it's like you have multiple states that depend on other things and you end up getting like, just like exponentially large sets of state transitions if you're not if you're not careful. And so state charts is a great way to to that's the solution to it. It was created for that reason. And so there's some really good reading on that and some, some good things. Here's the challenge with that.

Speaker 2:

There is no such thing as a state chart library for PHP right now. There's not. There's job, there's one for JavaScript. There isn't one for PHP. So maybe in the next 73 days, I'll create one.

Speaker 2:

I don't know. We'll see. Mhmm. It'd be kind of fun.

Speaker 1:

Okay. Native native PHP app that just shows out to use NPM to JavaScript it up for you. Oh, there you go. There you go. Oh, wait.

Speaker 1:

Oh, my god. Working. Maybe maybe you you and Daniel Coborn can tag team, State Machine's what's it called? Verbs? Verbs.

Speaker 2:

Like his event sourcing? Event sourcing. Yeah. Event sourcing.

Speaker 1:

So if you can tag team at at talk@lauraconau. That'd be great. Oh, dude. That would

Speaker 2:

be great. I'd love that. That'd be super fun.

Speaker 1:

Let me do it again. So, yeah. So PHP Tech is what do we say? April 23rd 25th at the Sheraton Suites in O'Hare. We will put links in the show notes for you if you wanna buy tickets.

Speaker 1:

They're available now. It's a 3 track conference. So it's 2 days, 3 tracks. If you can't attend physically, there's also live stream access, so they'll do it for live stream as well. So definitely check that out if, if it's something that you know, it's a it's a PHP conference.

Speaker 1:

Loads of speakers, lots of networking. We've talked about all the benefits of of attending conferences and things like that as well in the past. So definitely check that out, especially if you're in Chicago. You know, it's just a

Speaker 2:

Absolutely. Anybody in the Midwest, you know, for sure. It's a no brainer for anybody in the Midwest. You should definitely come.

Speaker 1:

And it was something something to tie you over between Laracon India and Laracon US You got it. Which is August this year, I think. There's so many conferences now. You know, Laracon EU just happened. Laracon India is happening.

Speaker 1:

PHP u the PHP UK conference is next week. PHP Tech is is in April. There's Laravel Live UK, which is, I think, July. Then Laravel Live Denmark, which is August, and then Larocon US is a week later in August. I'm sure it will definitely not be extremely hot in in Texas at that time of year, and then we'll be back in November.

Speaker 1:

We're getting very close to all of that goodness as well. So looking forward to sharing details with everyone. We've we've secured hotels for, attendees, which we we did the 1st year and we didn't really get much, feedback or return on it then as we didn't do it the last couple of years. But I think just from a from a attendee experience thing to say, like, this is the hotel. Here's your coupon code.

Speaker 1:

You'll get, you know, you'll get a discount to go and stay at. One of one of the hotel operators actually operates 8 different properties within, like, a 30 minute walk of the conference venue. So you can stay at any of them depending on, you know, what your budget is and what your tolerance to to walking is, we should be good. There's and then there's a second hotel operator as well that we will have, you know, special rates for conference attendees. So we're really trying to kind of make this an all in experience.

Speaker 1:

It's not just, like, ticket. With all the stuff that we're putting around it, to to just make it the the best that we can make it, which I'm really excited on. And the people that I've kind of shared secret details with already, they I mean, you know, how many of them are yes people? I don't know. Know, they're just saying

Speaker 2:

Sure. It's hard to say. Yeah. Yeah.

Speaker 1:

It's hard to say. You know, but but, you know, you don't wanna just go and tell it to everyone before you're ready or

Speaker 2:

to someone

Speaker 1:

that you don't know. Because, you know, they might tell you it's bad and or they might share their information that that I'm not ready to share yet. So so far, I've heard good things. And, I hope that now as we get closer to the date, hopefully, by the end of February, Fingers crossed. I haven't seen any of the branding for this year yet, but, yeah.

Speaker 1:

Hopefully, we can get that all moving pretty quickly. And then once it's out in the open, we'll have CFP. I've got one speaker ready to go, which I'm very excited about. I'm hoping not that Taylor listens to this podcast, I'm sure. But I'm hoping that we can get Taylor.

Speaker 2:

Let's go. Come back to the studio.

Speaker 1:

It's been it's been, 6 years since he was here last. So fingers crossed we can get man himself back. Maybe he spends the reins the reins of, director of engineering over who will have a bit more free time. So fingers crossed.

Speaker 2:

Gotta you gotta figure out who that's gonna be. Gotta figure that out. Who's that gonna be?

Speaker 1:

Is it you? Did you apply? Maybe maybe it's me.

Speaker 2:

No, dude. I I don't think I I don't think I can hack that job. I don't think I can do it.

Speaker 1:

I was talking to someone else about it and they they're well positioned. Like, their skill set is such that they could take on that kind of role. They're not sure if they would be able to take on the publicity. Like, to

Speaker 2:

be That makes sense.

Speaker 1:

The public face. Like, it would be known that you're the developer event the the director of engineering or the head of engineering, whatever that role is, at Laravel LLC. And so, you know, this is possibly a certain level of expectation from the community that they're gonna be like a Twitter person, that they're gonna be public, that they're gonna be, you know, talking about, like, this is how we run Laravel, you know, as a team of 20 developers or whatever. So there's, some trepidation around that. And I'm sure that they're not

Speaker 2:

the only ones.

Speaker 1:

Sounds like, you know, you could probably do it, but would you want the pressure of, like, leading a team of engineers that is responsible for our overall framework? Like, that's a tall order.

Speaker 2:

Yeah. It absolutely is. It absolutely is. And, yeah, for me specifically, I don't know. I I don't think, oh boy, I would just say that

Speaker 1:

there are

Speaker 2:

a lot of people better suited, I think, to that job than than me. And so, yeah, it would be it would be tough though. It would definitely be a lot of pressure, and and intimidating too. I mean, like, there's so many smart people on team Laravel, and so it's, yeah. But but it also would definitely be something you'd love to put on your resume.

Speaker 2:

You know what I mean? Like to work as the, you know, lead engineer, like the main guy, not the main guy. Yeah. One of the main people helping to lead the team. Mhmm.

Speaker 2:

So that'd be cool. That'd be really cool. Interesting.

Speaker 1:

Alright. We're gonna wrap up. But, also, did you submit have you submitted will you submit for Laracon US again this year?

Speaker 2:

I've talked to my wife about it. It is a really large commitment. And so

Speaker 1:

With 4 kids. Yeah.

Speaker 2:

Yeah. We will see. We will see. I feel like having had one under my belt, I feel like a little bit more confident that I could do it. It would just be, you know, it is just, it's just a lot of time.

Speaker 2:

And so, yeah, we'll see. We will see. I would like to. I'll say that. I would really like to, but we'll see.

Speaker 2:

Not sure yet.

Speaker 1:

Okay.

Speaker 2:

Yep. Good good good talk though. Alright, dude. 150. Episode 150.

Speaker 2:

Find show notes at Laravel sorry. Not Laravel News.

Speaker 1:

Find show

Speaker 2:

notes at northmeansouth.audio/150. Hit us up on Twitter at michael dorinda@jacobennettor@northsouth audio. And, of course, if you like the podcast, rate it up in your podcast of choice. 5 stars would be amazing. Folks, we'll see you at PHP Tech if you happen to be there.

Speaker 2:

Otherwise, we'll see you in 2 weeks. See you later.

Speaker 1:

Bye. Oh, you can watch this on on YouTube too. There is a video now.

Speaker 2:

Oh, nice. I love it.

Speaker 1:

Do that. No. You can see everything's gonna be checked out. See my house. Oh, man.

Speaker 1:

Oh, I was gonna come in, Trey. You're so you have to see all the trash oh, no.

Speaker 2:

That's not trashed. It's fine. That's fine.

Speaker 1:

It's fine. It's mid renovation. It's totally fine. There we go. Except at all.

Speaker 2:

There we go. It's it is. It's totally fine. Alright. Alright.

Speaker 2:

Thanks everybody. We'll see you.

Speaker 1:

2 weeks.

Speaker 2:

2 weeks.