From World of Warcraft to Software Development with Kevin Ullyott

Karl M. (00:02)
Welcome to Voices of the Code. My name is Karl Murray and with me as always is the fantastic Stephen Fox.

Steven Fox (00:09)
You always do that intro and I'm like, I never know how to react to it because whatever. Hello everyone.

Karl M. (00:15)
Isn't it great? Isn't

it great? All right, so we have a really awesome guest and I'll let Stephen introduce him because I'm needing a drink of water suddenly.

Steven Fox (00:24)
Yes, welcome to the show Kevin

Kevin (00:29)
Yeah, nice to meet you. Yeah, Kevin Olliot.

Steven Fox (00:32)
Awesome. I met Kevin in Laricon in 2024 and we just kicked it off really quickly. I think largely because we found out that we live relatively close to one another here in the East Coast area. And then, we wound up having lunch together at a fantastic barbecue spot. I got to know a little bit about what he's currently doing.

Karl M. (00:54)
Okay, hold on, I have

to ask what barbecue spot are we talking about here?

Steven Fox (00:58)
Oh shoot, do you remember it was um, if you went like slightly northeast of the conference venue, it's one of the famous ones. Now you're going to make me look it up like we're we're a minute into this show and now now I don't remember. So anyways, yeah, we met. I'm going to look it up. This will be a great opportunity for Kevin to introduce himself. And yeah, but I just got to know him a little bit and talk about his current roles and some stuff that he's doing. So

Kevin (00:59)
man.

Yeah, people are going to be upset that we don't remember.

Karl M. (01:21)
Sure.

Steven Fox (01:27)
Kevin, we always like to kick this off, kind of learn a little bit about what got you into programming. This has been a lifelong thing. And yeah, walk us through what got you into writing a whole bunch of text into things that gets executed by a computer.

Kevin (01:41)
Yeah, sure. Man, okay. Starting back to the beginning. So I was always into computers, mostly from like a gaming perspective. I was one of those kids that like built a computer with my friends, did LAN parties in my house playing like Runescape and World of Warcraft and stuff like that. Yeah. Yep. Yep. The cloud, the OG. Yep. What a

Steven Fox (01:56)
yeah, RuneScape. That's a throwback. That's

a throwback.

Karl M. (02:03)
Are we still playing RuneScape or are on Classic or did you upgrade to the newest one?

Kevin (02:07)
I

am playing RuneScape Classic. I won't play RuneScape 3. just can't, I can't do it. I can't do it. But yep, I am playing a little bit of RuneScape Classic. Yeah, I would just, I would tink around with that. And then at some point I just started writing, writing like visual basic scripts to do the most random stuff like password protect some folder for some like random reason, make, make the computer talk to me like it was Jarvis or something like that.

And then I eventually got into editing the Windows registry. think it's been a while since I've messed around with Windows, but Windows registry to give myself a hidden admin account. So, uh, cause my dad installed this like software that limited the amount of World of Warcraft I could play. So I made this hidden admin account so I could play more World of Warcraft. Yep. Yep. So, so that's how I got into, you know, black started a black hat career. No, just kidding.

Steven Fox (02:52)
My god, this is this is great

Peace.

Kevin (03:02)
And

got into that and then I was just always interested. I started in PHP. I've pretty much always been in PHP and did vanilla PHP websites for some family friends for like their websites, their small businesses. Eventually discovered WordPress and started doing WordPress sites there. And eventually got like a job doing tech support at a company that made a

they kind of had their own like PHP custom MVC. And so then eventually moved into like a tech role there. And yeah, just kind of went on from there. Just kind of eventually from WordPress discovered Laravel and never left.

Steven Fox (03:41)
Nice.

When was that? About what time? Like what year would you say?

Kevin (03:51)
gosh,

times a human construct man. Version, I'd probably say, I think.

Karl M. (03:52)
Or what version if you remember it.

Kevin (04:01)
Seven. Yep.

Karl M. (04:05)
Nothing

wrong with seven. Seven was a good-

Steven Fox (04:05)
can't remember what year that would have been. Is that

like 2017, 18? No. Is it really that recent?

Karl M. (04:10)
2020?

Kevin (04:13)
Yeah.

Karl M. (04:15)
Yeah, we're only on 12 now.

Kevin (04:16)
Yes.

Yeah.

That's all right then. Yeah.

Steven Fox (04:20)
Okay. yeah, about

Karl M. (04:22)
So roll back. Roll back.

Steven Fox (04:22)
five years ago. Well, most importantly, most importantly, it was Terry Black's barbecue. That's where we had lunch. Terry Black's.

Karl M. (04:27)
Okay, so was probably 19 or 18, but yes.

Yes.

Kevin (04:34)
That's right. That's what it was. Yeah, that is very good lunch.

It was good lunch. I ordered way too much brisket.

Steven Fox (04:40)
It was like.

It was the biggest barbecue joint I've been to and like because it was there was a ton of people in there seating outside and as well. And. It's a good thing I just had dinner, otherwise I'd get hungry thinking about it, but it was really good barbecue. It was really good. We have some pretty good barbecue where, you know, around these parts where we live, but it was pretty phenomenal. So anyways, not to just completely derail your.

Kevin (04:59)
See ya.

Steven Fox (05:08)
your segue into Laravel and how you got into it.

Karl M. (05:10)
Well, I was gonna say that was a great

segue into our sponsor, Terry Black's Barbecue.

Kevin (05:14)
Thank you Terry Black's Barbecue. I pull up the shirts Terry Black's.

Steven Fox (05:14)
Thank you. Yeah.

Karl M. (05:17)
I'm just kidding.

I'm just kidding. Nobody sponsors the show

Steven Fox (05:20)
Dude, deposit in that zero dollar check was awesome.

Karl M. (05:23)
other than just kidding. Nobody sponsors the show other than Steven and her.

Steven Fox (05:28)
It's... and Carl.

Karl M. (05:32)
But if you want to sponsor us, just send us some gear. It'll be fine.

Steven Fox (05:33)
But we're accepting offers.

Yeah. Okay, so we got into Laravel, we'll call it roughly five years ago. And what was your first kind of professional use of the framework? Was it doing it at that company or for something else?

Kevin (05:43)
Yeah. Yeah.

Yeah, I was at a company, they developed like a whole WordPress ecosystem for real estate agents, I think. And I eventually kind of needed to do some like advanced processing on like different like financial stuff for the company and the clients. so one of the developers there, like you just mentioned this thing called Laravel to me, and I just started digging into it. And I created this whole like batch

before batching was a thing like batch queue jobs and all that to do all this like financial processing to generate a like a report. And that's that's kind like my first foray into into Laravel and then just kind of dived in from there. Yeah. Yeah. Fell in love with it.

Steven Fox (06:34)
Nice. Yeah, dude.

Karl M. (06:37)
Was it

the tagline, your coach should be beautiful that got you into it?

Kevin (06:42)
yeah, yeah, it was the expertly spaced and typed out comments and all that. Yeah, I missed out on the dragon, think, though, unfortunately.

Karl M. (06:49)
yes, listen.

The dragon?

Kevin (06:54)
The, the Larval Dragon that used to be in the, used be in the code.

Steven Fox (06:58)
Yeah, didn't they like have us do a transform on it with at the conference? Anyways, you know, quick little random question. I really like the queue stuff with Laravel, right? It's like such a powerful feature. Would you would you put that amongst like your most? I'm going to say like valued features of Laravel, right? Like. Do you use it a lot in the stuff you do, Kevin?

Kevin (07:03)
something like that yeah anyway

Yep.

yeah, definitely. Yeah. We, we do, we, my current role, we process like massive amounts of data from student information systems. And so everything has to be queued at that point. We send millions of emails, like at the click of a button that an advisor sends out to like a whole subsection. like queues are definitely like one of the strongest things we've tested, like almost everything that Laravel can do to the limit with what we do. And queues is definitely one of them. Like we've had to make some like slight changes to.

Steven Fox (07:41)
Mm-hmm.

Kevin (07:56)
to how some things work underlying. But it gets you there 99 % of the way, and it's just such a powerful feature, definitely.

Steven Fox (08:05)
Okay, so you teased a little bit of what you're doing now. Help us fill this gap and what other roles you had before you landed at your current place.

Karl M. (08:10)
Yeah, please, I am.

Kevin (08:13)
Yeah,

Karl M. (08:14)
If you guys aren't

watching the video podcast.

Kevin (08:19)
What was that last part?

Steven Fox (08:21)
I said just kind of fill in the other roles that I know you've had before you landed at your current job and then we'll keep going with that.

Kevin (08:28)
sure. Yeah. like I said, I worked at various companies, like a company that did websites for nonprofits and churches, built Laravel and WordPress apps for them. That was just like I was just like a software developer at that point. Eventually moved up into being a senior at a real estate agency and then eventually moved on and worked at the agency Kershbaum.

If you folks are familiar with that, I worked on like a whole bunch of different Laravel projects there. Got a chance to work on like different things for colleges, like small tiny apps for like little mom and pop shops, huge enterprise level apps. I even built like a really big application for the music industry that ended up being listed in Billboard magazine. That was super cool. Yeah. And then.

Steven Fox (09:23)
wow. Nice.

Kevin (09:25)
Yeah, yeah, it was neat. I got it. I got framed and everything. That was super cool. And then and then I landed in my current role, which is software development director of Canyon GBS. We build purpose built software for the public sector. like post secondary education, governments, municipalities, stuff like that. Currently focusing like our big mission is to help students get into college and graduate college by building software that can like.

Steven Fox (09:31)
Nice.

Kevin (09:55)
for underprivileged institutions that can really just help advisors help students and help students make it through their collegiate career.

Steven Fox (10:05)
Nice nice and so you said director of engineering that mean your day has a lot of coding in it or are you mostly sort of a reviewing strategizing architecting what is your role really look like.

Kevin (10:19)
Yeah, that depends on the day. like, we're this weird position where we have a good amount of funding from the Bill and Linda Gates Foundation. We recently got a grant from them. And so we're like this weird point where we're a startup, but we act like an enterprise company because we really want to be. So we're like, we're ISO 2007 certified. We're SOC 2 compliant from the very beginning, like the foundation of company. Our audits have like had nothing in them.

that's been found. And so like, I have such like a weird role because like, typically, software development directors or, or the role I started in SDM, you don't spend a huge amount of time like in code, you're mostly doing reviews or like architectural planning. I do both. It really depends on the day. I do high level architectural planning for like the future of things working on and then I also take some like bigger

Bigger items to work on out of that blog and kind of still kind of my feet wet and code every day. So, yeah.

Steven Fox (11:24)
Nice, nice. How big of a team do you guys have there?

Kevin (11:27)
we're currently at, let's see. And I think at the time at this reporting and we're currently actively recruiting for software engineers. So. Do you want to work with me? Yeah. Yeah. You heard me first. Yep. I currently actively.

Steven Fox (11:35)
Nice.

Hey, you heard it here first. Sweet.

Karl M. (11:43)
What's the email

address? I might know a guy.

Steven Fox (11:46)
What's the...

Kevin (11:47)
Yeah, yeah, I'll get

I'll get that to you. I'll send over the job description and all that. So yeah, we're looking for software engineers. We're a fast growing team. We've got currently looking for software engineers to kind of building up the team of like senior technical leadership and all that.

Steven Fox (12:07)
Yeah, yeah, you guys have done a really, really good job. I mean, it's pretty amazing to hear what you guys have accomplished as a company in such a short period of time and landing like real customers and, you know, doing a lot of like you said, I mean, you guys are like very enterprisey for how new you are to the landscape and how small the team is in the grand scheme of things. I am a little bit curious, Kevin. Not related to like any company specifically, but

Kevin (12:13)
Thanks.

yeah.

Yeah, definitely.

Steven Fox (12:37)
You're a developer that we have talked to that has fulfilled both corporate roles, right? Where you're working for a single company to do a particular role. And then you've also worked for an agency where you inevitably end up jumping from project to project with these shorter timelines and you see multiple apps in a condensed kind of format. Can you just kind of like let me know what you think about

both styles of working like any pros and cons you see and you just kind of let other devs in the Laravel space know like hey this is what I really like about corporate stuff but this is what I really liked about working at an agency and vice versa anything that's you know I'm sure there's maybe negatives to either side so just kind of curious since you've played both roles

Kevin (13:27)
Yeah, that's a very fascinating question, honestly, and something I think about quite a bit of like, what is my opinion on that? yeah, so, you know, if I'd start off with advice, I'd probably say, like, as a developer, you should try out both. Like, they're such different realms. Like, they seem so similar in many respects, but it's really different.

Steven Fox (13:36)
Yeah.

Karl M. (13:53)
vastly.

Kevin (13:53)
One of the things,

yeah, definitely. One of the things that like, one of the core things I struggled with in agency was that like, you really put your heart and soul into like the products you're making as developers, right? Like if you really care about like what you're working on and when you work at an agency often, and this can happen working enterprise, you can get laid off or anything like that, but very often like the client drops off or...

Steven Fox (14:09)
Mm-hmm.

Kevin (14:21)
or the project just ends or something like that. So you end up like these shorter terms, like you almost feel like it's like heartbreak, you know, in some sense, you kind of, you, like kind of lose your baby in some, in some sense of doing that. But agency work is so, it's so good for like getting amazing amount of experience into a career. You get such a breadth of knowledge of like,

Steven Fox (14:29)
Right.

you

Kevin (14:48)
starting off with a greenfield project and kind of like really getting your skill, like starting your teeth on doing that, getting into like an angel project where you're like saving something that's kind of, you know, kind of already been built and you need to piece it back together. Different industries, different sizes of scale needed. That's like such a benefit you can get. So I think like anyone in our

In our situation should try to work in an agency at some point. It really just kind of gives you this like really nice, nice breath. I think of experience. Yeah. Yeah. Yeah.

Steven Fox (15:28)
Yeah, that makes a lot of sense. That makes a lot of sense. What was like

the typical tenure? How much time would you find yourself working on a particular client's project when you were within an agency? it weeks, months? Years.

Kevin (15:40)
you

Yeah, yeah it-

Typically, in the agencies

I worked at, it'd be like a year at kind of like the minimum. Maybe somewhere I would do something for like six months. But typically at agencies that I eventually was employed at, we took on like longer form projects, where we'd be an embedded team or something like that.

Steven Fox (15:54)
wow.

Kevin (16:14)
So like I've typically done like a year stint. what some projects I've even been in for like two years. I guess like in some respect, like it's, it's roughly similar in my experience when I've done those projects to working at like a corporate environment, the major difference, there's still like a cultural difference. I think they're like you like working to flip onto the other side, like working at a, at a more like structured corporate organization style. There's a lot more like spin in the game almost like you.

Steven Fox (16:44)
Yeah.

Kevin (16:44)
You

feel a lot of like you wear the t-shirt with the logo on it, you know, around your house. Like you just, you feel really connected to what you're doing there. and you can kind of like have just much more road for advancement within the company at that point.

Steven Fox (16:54)
Right.

Yeah, bit more of a long game.

That makes sense. makes sense. Carl, do you have any questions at this point? You've been you've been quiet over there. You're probably been Googling. Can you GPS in a flash of this other stuff?

Karl M. (17:11)
lots but come

Kevin (17:15)
We're source

Karl M. (17:16)
Yeah, like

Kevin (17:17)
available

too, by the way. So you can look at the repo. can see me being. Yeah.

Steven Fox (17:21)
That's a really cool topic, actually. I didn't realize this until one of our recent conversations that we had before this recording. So talk to us a little bit about that, like whose decision was it to go source available and what has that meant for your company or team? And it's not something that we see a whole lot, right? There's definitely...

Kevin (17:44)
Yes.

Steven Fox (17:47)
Open source and then closed source and not a whole lot of people that are doing. Hey, our sources out there. We're just not really accepting random pull requests, so tell us what that looks like for you guys.

Kevin (17:56)
Yeah, yeah.

Sure, yeah. So, see, our two flagship products are source available, like I said, and that's Advising App, which is more on the collegiate post-secondary. Its tooling includes a chat GPT-similar AI tool that's privacy-compliant for colleges, much cheaper than chat GPT for colleges as well. And then they have retention and recruitment CRM.

That's advising app. Aiding app is kind of like a help desk solution for governments and municipalities integrating like different AI solutions and different like more modern help desk ideologies to kind of help along for folks that can't get some of more expensive tools.

The decision to make those source available was actually our CEO or the founder of our company. He's Joe Locata. Yeah, he's a huge proponent of open source and the tech community. We work together to kind of start the foundation of this version of advising app and aiding app. And since the beginning of it, you can see that the first commits that myself and then eventually Dan did.

We, yeah, it's all just kind of publicly available. Like I said, it's source available. You kind of mentioned it a bit. We're not like necessarily, you know, accepting pull requests at this point, if folks had it or like issues and all that. Nobody's done that yet, but we would consider it, I think. But yeah, we're really just wanting to like do the best enterprise code for this sector.

using Laravel and we're hoping that folks can kind of learn from that, that our experiences and our knowledge can be shared. We believe that like our tools, that like the services that we offer in hosting it in our unique way and selling it, know, doesn't require it to be closed source. Like they can't, you can't take copy the magic of like the new features and the innovation that we do as we

As we kind of build it. So helping the community and being able to just kind of see what we're doing, we think is very important.

Steven Fox (20:23)
Yeah, I liked it a lot. soon as you told me that it was source available, it was fun to just go code diving and see how you guys do stuff and look at pull requests and see how they're described and what changes are there and all of that type of stuff. It was pretty cool. Carl, have you seen much of that from your experience? you know of other not side hustle projects or just companies that have source available stuff?

Karl M. (20:24)
Absolutely.

Kevin (20:30)
Yeah. Yeah.

Karl M. (20:50)
I don't do side hustle projects

at the moment.

Steven Fox (20:54)
Ha, Lara

Bets.

Karl M. (20:57)
And

what work have we done on Larabets in a while? We were supposed to release that February.

Steven Fox (21:00)
I know I'm just being I'm being a stickler.

Kevin (21:02)
calling you out.

Steven Fox (21:06)
Yeah. Yeah.

Kevin (21:08)
Everyone knows that it always runs over, you know, the deadline. You gotta pad it.

Karl M. (21:12)
Uh, well, the issue

is, is we haven't committed to it in a while either. I mean, we, mean, Steven and I have both had a crazy couple of months. Like I would call Steven and be like, Hey man, we need to do a podcast. And he'd be like, yeah, let's do a podcast. And then a couple of days would go by and we're like, yeah, I got crazy busy at work. And Steven's like, yeah, I did too.

Kevin (21:17)
mmm

Yeah.

Yeah.

Steven Fox (21:39)
Yeah,

this is why it's been like literal months since we've done one of these episodes.

Kevin (21:44)
Yeah, it's

Karl M. (21:44)
Yeah.

Kevin (21:46)
been a crazy time.

Karl M. (21:46)
So I guess I can touch on that for a second. Yeah, life has been crazy for us. So this is still a thing. We're still working on it. We're still working on Lara Bets. We just need time. And unfortunately, we do not have an unlimited amount. And Stephen and I both have very young children. And so this gets to be a lot of fun to actually have time to sit down and breathe for five minutes.

Steven Fox (22:00)
Yeah.

Kevin (22:03)
Yeah.

Karl M. (22:14)
and talk to somebody else and get to know them and see how they're working, what they're working on, and all this kind of stuff. This is a lot of fun, guys. Be on the podcast. Just come on. It's great.

Kevin (22:25)
Do it, it's fine.

Karl M. (22:26)
Alright, pitch over. We don't have talk about that anymore.

Steven Fox (22:29)
So yeah,

Carl, what's your take on source available for real businesses?

Karl M. (22:33)
I really like the idea

of source available. I have not seen it as much as I would like to. And the reason I like it so much is because it does give newer developers the opportunity to look at something go, OK, they decide to do it that way. Maybe there's a reason for that. One of the ones I see often is why developers would use translations even though their app is only available in English.

And so you're like, okay,

Steven Fox (23:04)
Hmm.

Kevin (23:04)
Yeah.

Karl M. (23:06)
what's the purpose behind that? What's the, I hate to quote Maui, but what's the lesson? What's the takeaway?

Steven Fox (23:12)
No.

Karl M. (23:15)
Told you I have really young kids. But I mean, it's in your head. You're welcome.

Steven Fox (23:17)
my God, you do have kids. man. What's even worse is right now, you're welcome is just rolling through my head. So like you just derailed

Kevin (23:25)
Yeah.

Steven Fox (23:26)
my entire thought process.

Karl M. (23:28)
To follow that up, you're welcome, Stephen.

Steven Fox (23:31)
Yeah, yeah.

Kevin (23:31)
No.

Karl M. (23:35)
Yeah, anyway. But yeah, I do like that. I do mentor to some. I don't want to say that underprivileged, but they definitely don't have the resources that I wish I had growing up. And so it is really nice to be able to go, hey, this is production code. Like you can look at it right now and take ideas from it and implement. And I really like I was at LairCon 2024 as well and loop.

Kevin (23:54)
the end.

Karl M. (24:05)
Downing walked on stage and was like, what can you learn from Laravel new? And okay, so you can learn a lot from Laravel new. We learned that from Luke. What can you learn from a open source slash code available product like Kevin's?

Kevin (24:07)
you

Steven Fox (24:10)
Mm-hmm.

Kevin (24:19)
Okay.

Steven Fox (24:24)
Yeah, a full thing. Totally.

Karl M. (24:26)
Yeah, there's

things here. There's commit messages. There's some type of comments or not comments, but readable code that explains why we did things the way that we do them. But the other part that I liked that Kevin said is Laravel is enterprise ready out of the box. You do not need to do anything to make it Laravel ready or enterprise ready.

Steven Fox (24:47)
Yeah.

Yeah.

Karl M. (24:53)
And that's the thing that I think a lot of people forget about as well is, hey, I've got a new Laravel application. I have to load it up with stuff I may or may not ever touch or use because those are enterprise ready. And it's like, no, that's not necessarily the truth.

Steven Fox (25:11)
Okay, here's a segue for you. What kind of database are you guys using at Canyon?

Kevin (25:19)
The only the only correct choice which is Postgres. yep. Yep.

Steven Fox (25:21)
here we go, baby, here we go!

Karl M. (25:25)
SQLite users, please, shield your ears.

Kevin (25:28)
Sorry, don't come at me. yeah, yeah,

Steven Fox (25:31)
Okay, hot take. Let's hear it, Kevin.

Kevin (25:32)
yep. Yeah, the only right one, which is Postgres. Yeah, so sorry folks, yeah, we chose Postgres for like, yeah.

Karl M. (25:42)
What's the logic behind that?

Steven Fox (25:45)
Yeah,

yeah. Give us the lowdown.

Kevin (25:47)
The low down is performance-wise outperforms MySQL and some of the others. We also liked some of way we could customize certain data types. We have a lot of ways we have to parse data and data that comes from external SIS student information systems, which can come in any sort of data format. And so we've had to create some custom types to be able to handle that.

some more advanced relationships. One of the biggest core reasons why we chose Postgres at first was have you guys ever heard of foreign data wrapping?

Steven Fox (26:29)
I don't think I have. Foreign data wrapping.

Kevin (26:31)
Yeah, yeah.

Karl M. (26:32)
Enlighten us.

Kevin (26:34)
So originally, we don't do this now. No, never heard of it. Yeah, we don't do this now. But the original idea was that instead of like pulling data in from student information systems, we wanted to use this concept called foreign data wrapping in Postgres, which essentially allows you to have Postgres treat a table in an external database as if it is a local table.

Steven Fox (26:36)
No.

Kevin (27:01)
in your database. So we'd have like the students table hosted at this completely separate SIS system and Postgres would just handle getting the connection data and running and modifying the queries to kind of retrieve and read and write from that table. And we could just treat it like a completely native table within our application. And we set up the full prototype for that and it worked and

It was amazing and I still dream about it to this day. Cause we had like, it would just like it. Yep.

Steven Fox (27:31)
Okay, hold on. Hold on. Is

it doing like a local copy of that external table?

Kevin (27:38)
It would, if I remember correctly, cause it's been a couple of months, you know, I haven't read the documentation directly. It doesn't do a local copy. just, you give it the credentials and it makes the SQL queries remote and does some like Postgres trickery in the background to just act as if it's a local table that you're just querying to get the data.

Steven Fox (28:03)
That is wild. Because, yeah, my first guess was that it was almost using like a. Kind like a clustering setup, right, like a replica, right, and using kind of that. Yeah, some similar logic there, but. Yeah, it's it's literally just saying, hey, when I need data from this table, like it's not on disk or in RAM, it's at this connection.

Karl M. (28:04)
Now that's insane.

Kevin (28:11)
Yeah, something like a materialized view or something. Yeah.

Karl M. (28:15)
But it sounds like it's doing more of a proxy.

Kevin (28:18)
Yeah, yeah.

Yep. It's at this

connection. Yep. Exactly. Yep. Yeah. And they had, they had all sorts of like, they have all sorts of connections out to different database types. We connected to AWS Redshift. We'd have, we'd have the college normalized the, the data into that. And then we pull it in and then we could just treat it like any other table. Larva wouldn't know the difference. And it worked really well. Yeah. We eventually moved on from that. No.

Steven Fox (28:50)
Wow. Is it read-only?

damn, so you need a lot of trust in who you're, is like, woo.

Kevin (28:57)
Yeah. Yeah. yeah. Yeah. Well, let me,

let me put it this way. Foreign data wrapping is not read, is not read only. We did read only just because like student information systems, we don't want, I don't want to mess with like college student data. You know, I don't want to overwrite that. So we didn't do that. and it worked great. We just, we switched off of that for just business reasons of working with the college to normalize the data and everything. It just wasn't feasible. in doing that.

Steven Fox (29:07)
Okay.

Karl M. (29:08)
We don't want to mess with them.

Kevin (29:27)
and we moved on to like a more sinking process. then, so we had Postgres and we were kind of settled in there. The performance just really seemed to outperform everything. The custom types we made a huge amount of use of. I've always been a big fan of, of, let's mention it up there actually. Scott is going to go for our comeback. Yeah.

Steven Fox (29:50)
Is okay, I have a question for you.

You mentioned the performance is really good. I've. Is it a myth that like my sequel reads are typically quite fast faster than Postgres or has that not been your experience?

Karl M. (30:03)
I can answer this question because I've actually done the research on it. It depends on

the amount of data and it's ever so slight. It is not even noticeable to the human.

Steven Fox (30:16)
Okay. How much data?

Kevin (30:16)
Yeah, yeah, there's a fact.

Karl M. (30:17)
It's more

than anything, it has to do with how much RAM Postgres uses versus how much RAM MySQL uses. So there is a huge difference in the amount of RAM to performance. You can tell I've done the research on this. This is crazy. It's the amount of RAM to performance versus what MySQL uses. Now, the biggest perk to using Postgres

Steven Fox (30:23)
Okay. Okay.

You

Karl M. (30:46)
is they tend to launch new features very quickly. Like they come up with an idea and they're like, that's coming out next month. Versus MySQL will be like, you want to be able to handle longitude and latitude? Yeah, those are strings for now. If you want to do something else with it later, then we'll turn it into a feature, but it's going to take years before it becomes something real.

Steven Fox (30:50)
Right.

Kevin (30:51)
Yeah.

Yeah.

Yes.

JSON support so good too in Postgres.

Steven Fox (31:10)
Yeah.

Karl M. (31:12)
Yeah,

there's a huge performance increase with going with Postgres for JSON over MySQL, specifically when you're parsing.

Kevin (31:20)
Yeah.

Yeah, yeah, yeah, we're using all the. Okay.

Steven Fox (31:25)
Does Postgres

Karl M. (31:26)
So if

Steven Fox (31:29)
do clustering? Can you shard your data across multiple server hosts with Postgres?

Karl M. (31:35)
You can,

but I'm going to tell you one thing. You should almost never, because there's a lot of performance there.

Steven Fox (31:41)
Well, tell that to the

people that have really large databases.

Kevin (31:45)
of the large datasets here.

Karl M. (31:47)
Yep, understood, but for the

large majority of people, there's not really a value in it.

Steven Fox (31:55)
Yeah.

Karl M. (31:57)
that, goes back to the don't do it until you need it. Yagni it. that's, that's.

Kevin (32:00)
Hmm. Yeah.

Steven Fox (32:01)
Yeah, yeah, yeah. I've just been in the

situation where I need it and with my my sequel, like your option is to go planet scale. So you actually need you need a piece of go software sitting in front of your my sequel boxes in order to figure out all of the sharding. And that got me really turned on to a single store. I don't know if you guys have heard about that, but. It's a hot boy. We could have a totally different conversation on that, but.

Kevin (32:10)
Right.

Yeah.

Karl M. (32:20)
Yes.

Kevin (32:23)
yeah.

Karl M. (32:25)
I've heard of it.

Steven Fox (32:29)
It looks really really cool. It's what they use with Fathom Analytics. yeah, so yeah, I suppose Chris, do you know out of like standard? Can you do sharding?

Karl M. (32:31)
Alright.

Kevin (32:40)
I think you can. Yeah. I haven't, I haven't explored that much recently.

Steven Fox (32:42)
You must, because isn't...

Aren't they doing... For Laravel Cloud, they're using serverless Postgres, right? At the moment? That kind of leave me...

Karl M. (32:51)
incorrect.

Kevin (32:52)
Yeah. Yeah. All right. Don't they the option

to do serverless postgres? Are you talking about for the for

Karl M. (32:57)
They're spinning up an RDS.

Steven Fox (32:57)
Yeah.

feel like right now, like that is your option, is serverless Postgres.

Karl M. (33:05)
I

believe it's RDS, I could be wrong.

Kevin (33:07)
Oh, RDS, RDS, you have the option of serverless Postgres. Yeah. You have different options. You have Aurora, like Aurora serverless Postgres, Aurora serverless MySQL. No, wait, no. I'm gonna just put my foot in my mouth. Is there a serverless MySQL in Aurora? I don't remember now. Viewers, tell us.

Steven Fox (33:07)
Okay.

Karl M. (33:10)
technically is okay, fair.

Steven Fox (33:12)
Okay. Okay.

Okay.

You

Karl M. (33:25)
Please comment

and tell us how we're wrong.

Kevin (33:28)
Please comment.

Yes.

Steven Fox (33:30)
Yeah,

I think they're working on MySQL for cloud. guess something like a,

Karl M. (33:34)
They are

currently at the time of recording. They are currently out of bandwidth for it though. So if you try to go to cloud and spin up a MySQL, it'll say, A, it'll say it's not available for developers. It's like they're out of the bandwidth, but it shouldn't be used in production environments. They specifically say that in the docs.

Kevin (33:42)
yeah.

Interesting.

Steven Fox (34:00)
Yeah, yeah.

Okay, okay. So postcress, huh?

Karl M. (34:03)
But

Postgres, that's the answer.

Kevin (34:07)
Mm. That was gross.

Steven Fox (34:09)
I've like barely used it. It's one of the things that I'd have to learn a little bit of new SQL syntax, yeah? It's like a little different for...

Karl M. (34:17)
it's mostly drag and drop?

Kevin (34:17)
No,

it's pretty much the same. Yeah. There's one thing you'll miss. There's one thing you'll miss. There is no after, there is no being able to put a column in a location after another column. That is the, that is one of the two biggest downsides to Postgres. So everything goes to the end of the table.

Karl M. (34:21)
Yeah, it's mostly drag and drop.

Wait a month and they'll fix it.

Kevin (34:40)
that, the, the, discussion for that has been going on for like years at this point. Like people, like people have been asking for that. think it would take like a pretty significant rewrite is the last that I read in, order for them to support it. yeah, that's, that's an interesting caveat of, of Postgres. Another one is that we've actually run into before specifically when we're doing a lot of the foreign data wrapping stuff is a lot of people don't know this, but

Karl M. (34:42)
I'm just kidding, I know.

Kevin (35:11)
MySQL, technically when you do an insert, wraps your insert for you in a database transaction. And so if there's a failure in that, then like your connection is okay and you can just continue to make continued connections. Postgres won't do that for you out of the box. And so like, if you have like an SQL, like a pure SQL error, you'll corrupt your connection and you actually have to like...

drop that connection and reconnect, do some finangling to get that back. And so there's some, there's some weird stuff that can kind of go on there. If you accidentally trigger a, an actual true SQL error while using Postgres that we've kind of had to like navigate around, which I started at one point to start to like write a, like a contribution back to Laravel to kind of wrap that. But the point in which you'd have to do that is pretty deep. I think in the Laravel code that it was hard to kind of do that and like a

a way that'd be compatible with all the drivers. yeah, that's been us. That's been us in the past.

Steven Fox (36:12)
I say.

I'm going to test another of your Postgres knowledge. I should probably just take Aaron's like Postgres course or something because it's that ask you the questions, but I'm curious. Do you know if you have an existing table with a whole bunch of data in it and you add or change an index? For that table, does it have to like completely lock that table and build the index at that moment?

Kevin (36:23)
Yeah.

That's a good question I couldn't give you the answer off the top of my head for. Yeah, that did make sense. Yeah, that totally made sense. Yeah.

Steven Fox (36:50)
It was my question, did that even make sense? Like, I've literally run into an issue in the past, right, where

Karl M. (36:53)
Yeah. Yeah.

Steven Fox (36:56)
a table had a hundred million rows, right? And we needed to add a compound index. And like, as soon as you do that, MySQL is just going to lock the table and like hold it until... And it's actually the same for, I think, adding a column? Or maybe it is exclusively adding the column.

and not the index. I don't know. There was some situation where we're trying to do something to alter the table. And then it would just hang for like minutes because it was trying to add this stuff with it and it completely blew us up. And that was like actually one of the big reasons for considering going to planet scale, if I remember correctly, because they can kind of do that in a.

Kevin (37:25)
Yeah.

Mmm.

Yeah.

Yeah.

Karl M. (37:39)
I have done that

before. But MySQL, when I worked at the travel company, we actually had to migrate 20 million records from one table to another one. And we had to do it over the course of, I think it was two and a half months. Because if we did it any faster than that, it would just crash our production database.

Kevin (38:03)
energies.

Steven Fox (38:05)
Yeah, I think that the strategy I've heard when you do need to do that is you create a whole new table with the schema you're looking for that's empty. You then copy over on the MySQL side, which won't lock the table. And then as soon as you're ready, you just swap the name of the tables and delete the old one.

Kevin (38:16)
Good night.

Karl M. (38:21)
Mm-hmm.

Kevin (38:26)
Yeah, that's it. Yeah, we do similar strategies to that.

Steven Fox (38:28)
But like.

That's annoying. I want to just be able to add a column and not have it hang for five minutes. So, yes, Postgres the same. sorry, Carl.

Kevin (38:32)
Yeah, yeah, yeah, no.

Karl M. (38:32)
Yep. We used to.

Kevin (38:36)
Yeah.

Karl M. (38:39)
The favorite part of that strategy, the favorite part of that,

Kevin (38:41)
I think it is. Good.

Karl M. (38:43)
yeah,

I'm sure it is. The favorite part of that strategy is as a pro tip, put an underscore in front of your title and that will let people know not to touch it.

Kevin (38:56)
Yeah. Or a TMP underscore in front of it or something like that. Yeah.

Steven Fox (39:01)
Yeah.

Karl M. (39:02)
The only reason I don't like TMP underscore is so many people misinterpret that.

Kevin (39:07)
I guess so, yeah. I guess the underscore.

Karl M. (39:09)
But if you put an underscore,

they're like, what the heck? is this here? And you're like, don't touch it.

Kevin (39:12)
Yeah, I'm not gonna lie, if I saw that I'd be like,

is that some sort of system table or something? I'm not gonna touch that. Yeah, it's a good strategy. Scare the DBA or the devs into not touching it.

Karl M. (39:17)
Exactly. Exactly.

Steven Fox (39:20)
Do underscore not

underscore touch underscore users. Do not touch users. Yeah.

Kevin (39:25)
Yeah.

Karl M. (39:25)
Yes, even don't touch the users

Kevin (39:30)
BLEH

Yeah,

we actually did. We were working on something very similar to that. Like, just a of weeks ago where working on like this mass import script to be able to import like a CSV with like hundreds of thousands of students, like within a short period of time. And we're in this like long tech discussion where, my boss and like some of the seniors on my team were like all going back and forth about like, okay, so like.

is we have to import these two tables and, you know, we're gonna like, we're gonna start to write to one and then like check back to see if there's new records and stuff like that. This huge long discussion. And eventually like halfway through the conversation, I had an idea very similar to what you said. And then right, they got to the end, they created this whole like tech plan for how they were gonna like set up this structure to do this massive import. And I just go, hey guys, what if we just like,

wrote all of the data to like this temp tmp underscore students table and then when it was done it started transaction delete the old table swap the name commit the transaction and then you're good and it worked yeah

Steven Fox (40:45)
Yeah. There you go.

Karl M. (40:47)
Yep.

That's a fantastic strategy. I love that one. The other one I've tried in the past that was kind of fun is putting it in something, another data warehouse of some sort. And then trying to explain to people like this is a data warehouse. That data does not go away. It does not get manipulated. It is not, it is only there for reference. And then convincing them to not touch it.

Kevin (40:51)
Yes.

So...

Steven Fox (41:10)
Hmm.

Karl M. (41:16)
That's a fun one.

Steven Fox (41:17)
Okay,

so something else I'm kind of curious about, Kevin, you guys have Dan Heron on the team. Right, Mr. Filament. I would assume whatever I would assume he's a pretty busy guy because like filament is so incredibly popular, lots of pull requests, lots of issues. And obviously, he's not the only one working on it. But like, yeah, is that been.

Kevin (41:23)
We do.

Karl M. (41:27)
Not sponsored by the way.

Steven Fox (41:46)
I don't know, like what has it been like working with someone who is kind of a main maintainer or that prominent of a package? Right. Is it like super cool? Because if you guys I'm assuming you're using filament at Canyon, I think you are. Is it kind of cool that it's like, man, filament did this like for Canyon and then it's like, sweet, I'll put that in V4. But imagine there's also other times, right, where he's just a super busy guy. So is there anything that

Kevin (41:54)
Mm-hmm.

We are, yeah. We are,

Steven Fox (42:16)
You could itch my curiosity with and just talk about what it's like to work with Dan and in the context of that.

Kevin (42:22)
Yeah.

Sure. Yeah. So Dan, Dan's extremely one of the most talented developers I've ever worked with. like he accomplishes tasks, not just in filament, but like in the work we do, like at like a, like crazy, crazy pace and rate and like degree of accuracy that like terrifies me. I don't understand when he sleeps or like how he, how he's able to do this, like how he maintains filament and still like works as a,

Steven Fox (42:45)
You

Kevin (42:52)
as a software engineer, like on our team, he just does such a great job. But yeah, no, we operate independently of filament. Dan has like, if we ever like work on something and like I think the import system that filament kind of added in the version of that that exists in filament now, Dan originally wrote a lot of that for a part of the work that we were doing.

And when we sort of like find things like that where we're kind of working on something and Dan says like, Hey, this, would be something great to kind of share with the community and filament. We, we let them have time to kind of put that in filament work on that. but we, we try to like, stay really away from like influencing it. Like we don't want filament. like we don't have any say in what Dan does with it and don't try to influence them in any way. Sometimes I try to make little comments cause I can't, I can't help myself. I'm just.

be cool if you added this or something like that. But he doesn't, he doesn't listen to me. But, so, yeah. And, yeah, he, we just kind of like operate, like he, he acts as a regular software engineer or working. We talk a little about filament. He offers when, when he can, you know, some things he'll say like, this, this would work. sometimes it doesn't. And we just kind of like fork things. We do things like pretty differently.

Steven Fox (43:53)
You

Kevin (44:19)
sometimes in the way Filament will recommend it by default even. Filament by default will recommend putting the form and table and everything in the single resource. So you kind of share that between the create and edit page. I'm very undry in a lot of respects. So I don't do that. I don't have us do that. We duplicate the form often in edit and create pages. So we kind of veer a little bit from the default.

Steven Fox (44:46)
Mm-hmm.

Karl M. (44:48)
So

have you guys heard this new phrase? It's called wet. Wet coat. Write everything twice.

Kevin (44:53)
Yeah.

Yep. Yep. I'm very, I'm very much of a leader of that. Yeah. Abstracting early is like the enemy to me trying to do stuff like thinking too far ahead. you never know, like we operate so agile, like we have one week sprints. So like, we never know whether what we're doing is the thing to do. So we've, we've always just kind of operated. Yep.

Steven Fox (44:57)
I like that.

Karl M. (45:19)
You want feedback as early as possible. That makes sense.

You want your iterations to end right away, which makes sense.

Kevin (45:28)
Yep.

Yep.

Steven Fox (45:29)
Okay,

now you're taking me down another path. Here we are with a much longer episode than I meant to have. But you just made me think of something. 30 minutes. We're doing this at night at nine o'clock. I'm bugging out and here we are tonight. I'm kind of curious. OK, so you guys do one week development sprints. Wet code. I like this term. This is a new one for me. Totally picking that up.

Karl M. (45:36)
Yeah, Steven started was like, we're gonna do 30 minutes, 30 minutes only.

Kevin (45:42)
Here we go.

Karl M. (45:42)
If you're still here, by the way, thank you.

Kevin (45:46)
you.

Okay.

Karl M. (45:57)
You know the best part about

wet is stands for right everything twice, but it could also be right every three three.

Kevin (46:05)
Alright everything through.

Steven Fox (46:05)
Okay, Bryce.

Karl M. (46:08)
Thrice.

Great band by the way.

Steven Fox (46:11)
Have you guys doing like, I don't know, whatever thinking about problems in a one week time period and stuff like that. Have you seen it contribute at all to technical debt where you're like, man, we really did hack this out like really quickly because that's the way we operate. And now here we are two months later and it shot us in the foot.

Karl M. (46:23)
We iterated too fast.

Kevin (46:32)
Yeah. We've never had a shot in the foot experience. always, we're, yeah, we're perfect at everything. Look at, look, we have to inherit the team. Look at, look at it. It's public. It's perfect every single time. No comments on PRs are immediately merged. No. Now CI, none of that. Yeah. It's just, it merges in directly into main. Yeah, no. So we.

Steven Fox (46:37)
Kevin's like, we're perfect. We just always do perfect code.

Karl M. (46:41)
We have Dan Heron on the team.

Steven Fox (46:49)
We run no air monitoring, nothing.

Kevin (47:00)
We've never had like a real big shot in the foot thing, mostly because like, because we've been operating, we've been operating in one week sprints since like the foundation of the company for like, uh, almost coming up on two years now, I think since I started working on the project itself. Um, we've always operated in, kind of one week sprints. And so we've always looked at things from that perspective. And so we know, like, we feel like we found this balance of like where, where we make the cut.

like where we make the cut when we cut a corner and we remember where that piece is. And we always have like a back door. Amazon has, I always try to remember it. It's like, I think the principle is called like a two-way door problem or something like that. Like you need to have an immense amount of discussion if the door, if the pathway you're going down is a one-way door, but if the pathway you're going down is a two-way door, you could come back.

then you can take that risk. You don't have to like look into it that much. So we always try to find that like two way door where we can kind of like get an iteration out for something. We know that like it's not perfect and it's not perfect in these ways. And those become like backlog items that go into the next week and the week after that. But like it has contributed to like significant technical debt. But if you can do it like in a conscious way, you can

You can keep track of that. You know what I mean? Like, you know that it's there, you know where it is, you know what you have to refactor. So there's technical debt, but like, it's always, I feel like the worst technical debt is the stuff that you just like, you're just like, I feel like this part of the code is bad, but like, I don't know why. Like we've always tried to like document like, this is why it's bad. Like we need to go back and like, do this right. Like, and we know how to do it right, but we just don't have the time, you know, stuff like that.

Steven Fox (48:50)
Right. Yeah, known technical debt isn't quite as bad as unknown technical debt. So do you guys ever find yourself with problems or something that you're trying to solve that is bigger than like a one week thing and you just have to put more time into thinking about it, right? And it's just does that stuff come up?

Kevin (48:55)
Yeah. Yeah.

Yeah.

Yeah, definitely. Yeah. There's just some things that you do in all development that can't take a week. Something that's so complicated or so pervasive throughout the code base that it just kind of carries over for us. And we're not so strict that if a ticket carries over, end of your career, something like that. As things carry over, it's totally fine. Yeah. We just kind of.

keep an eye on it and see if we need to shift priorities or see if there's other ways, like now that we've worked on it, we can take the increment where it's at and see if there's benefit from that and if we need to pivot. But typically, we kind of see something through. And if it takes a little bit longer, then it takes a little bit longer.

Steven Fox (49:59)
Yeah, now for you guys at Canyon and like the engineering roles. Do you guys have a spread of junior and senior developers or you guys all seniors? What does that look like?

Kevin (50:15)
Yeah, there's like a pretty good spread of like more mid level to senior to like the software engineering, which we kind of consider like more of a senior principal level architectural discussion role. So we have quite a bit of a spread there. There's also discussion of like opening up in the future to even more junior roles for further like further mentorship programs, if not internships in the future. We've been thinking about that quite heavily being in

higher education space, like helping folks in education and careers so important to us. yeah, so we have like a pretty, a pretty nice spread right now, I think, of experience and like folks coming from different backgrounds, different areas. And so we kind of all, we even do like a collaborative meeting every single workday in which we all just kind of help each other with the problems that we have. I'm not.

Typically you'd think that's stand up. We have like a separate stand up meeting, but then there's also just like another meeting that we have that we're just like, if anybody's stuck on anything, kind of go from there. We kind of split that stuff apart from stand up.

Steven Fox (51:28)
That's awesome. Have you guys, since you do have, you know, individuals like yourself and then the juniors, is there okay, other than, for example, these meetings, is there anything else that you guys have found to be particularly helpful to like bring some of the mid or junior developers like up to speed really quickly, right? Has it been like pair programming sessions? Has it been answering slack questions with really clear communication?

anything like that. That's kind of an area that I'm somewhat interested in, like trying to help new developers, especially within the Laravel ecosystem, like get into it. But like everybody has to start somewhere. I did it through ingesting an enormous amount of Lair casts, but like other people might choose other options. And, also as you kind of get

Kevin (52:09)
Mm-hmm.

Yeah.

Karl M. (52:18)
Stephen just likes Jeffrey

Way's voice. He falls asleep to it every night.

Kevin (52:20)
Who doesn't?

Steven Fox (52:22)
Well, he lives like an hour

Kevin (52:23)
Who doesn't?

Steven Fox (52:25)
from, you know, away from where I'm originally from. So, you know, I had that. Whatever that doesn't matter. I don't know. It was really weird. He's like, and he lives outside of Orlando. Anyway, I have just sort of seen from my own experience that as you get more and more senior into developer roles, you shift into helping, you know, newer developers actually do the code and you're sort of helping guide and provide

Karl M. (52:30)
So it's like being at home for you.

Kevin (52:32)
Yeah.

Steven Fox (52:52)
a perimeter and like what they're doing and architecting things. so, yeah, knowing any strategies that work really well for bringing juniors up to speed, making sure that what they do doesn't go way off the rails, like communication stuff. Yeah, you just like have any input on that?

Kevin (53:05)
me.

Yeah.

Karl M. (53:09)
I know that this is already a really long

question, but I'm going to piggyback off of it. Let's add third party, or not third party, but like the extended ecosystem. So not just the Laravel framework, but Laravel, Envoyer, Forge, Cloud, Telescope, Horizon, Reverb, the list keeps going. But how do you get?

Steven Fox (53:14)
Do it.

Kevin (53:22)
Mm.

Steven Fox (53:32)
Even like

filament Nova like major major packages and stuff like that. Yeah.

Karl M. (53:35)
Yeah. Yeah.

Kevin (53:36)
Mm hmm.

Okay. Yeah. All right. Okay. Let me piece, let me start to piece together and answer. No, that's okay. That's no problem.

Karl M. (53:41)
Sorry, that was... I thought

we asked the question long enough that you would have time to answer the question in your head.

Kevin (53:49)
yeah, I should

have started to write it out,

Steven Fox (53:52)
that you should just

blanked us out about five seconds into my question.

Karl M. (53:56)
You

Kevin (53:56)
No, no, no, I got it. Yeah. So,

yeah, so I can, I can really like mostly answer from like, you know, being an enterprise, like corporate role, right? Like training up folks and unlike on a team like that. like we're huge about open spaces and like open communication that meeting I talked about a bit just to, to end on, to end the discussion on that. Like it's,

Steven Fox (54:18)
Mm-hmm.

Kevin (54:23)
It's like a loose requirement. Everyone sort of shows up regardless of if you need help or not. Cause I just have this like, I have this ideology that like, even if you only have paying attention, like you're still kind of working on your items and everything, but somebody else is getting help. So you like over here, like somebody who's having this problem or something related to it, like later on, like weeks or months later, when you kind of run into something similar, you might, something might click, you know, like you might, you might remember some part of the conversation or at least remember.

who had that problem and reach out to them. So we really like to do that. We created.

Karl M. (54:59)
The just

the I just so happen to know

Kevin (55:02)
Yep. Yeah, exactly. Yeah. Yeah. Yeah. They're great.

Karl M. (55:04)
I love those. I don't know why

I know this, but here's the thing that I know.

Kevin (55:10)
Feel like someone said that? Yeah, feel like,

yeah, yeah, exactly. Yeah. And then we, Dan and I, like, and a few others, like early on in the project started, we created this thing called the developer handbook at our organization, which we listed, like all of the things that we know and that we know that we use, including like

advanced knowledge of filament, advanced knowledge of live wire, advanced knowledge of Alpine and just like listed everything out and like, here's like, here's like what a software engineer at Canyon GBS like knows typically. And then we took that whole list and we like scoured the internet for Laracast videos, free YouTube videos, courses, articles, documents, and just sort of created this like large repository that continues to grow.

of just resources. And so whenever folks have like, like I always say, like whenever you have downtime or, you know, I try to dedicate a little bit of time for folks throughout the week to be able to just like read through that and just start to start to kind of expand their knowledge and ask questions about it. I have a complete open door policy like, and I try to pair, like we do pair programming during those meetings and stuff like that. That's like huge.

to try to help folks in getting up to speed on things. And then really getting into the meat of our project, trying to give them a simple task for when they're first starting off. And then I just keep an eye on their progress and give them something that I feel will push them towards something that they haven't had experience with, that they haven't had a huge amount of experience with, like tailwind or something like that.

I give them, you know, I'll try to find a ticket that will be like redesigning like one page or something like that, making some style changes on one page so they can start to get like exposure. you know, I got a degree in web design and then really largely self-taught from that. And so like, I just feel like experience is just like one of the biggest experience in working with folks that like have done it before.

is one of like the best ways to learn. so just like pairing when I can, offering up a code review, being open and honest and kind in code review, like not just saying like, well, this is not correct or something like that, but like explaining like, Hey, I think we should do this here for this reason for X, Y, and Z. And just kind of really going into the explanation there and following up.

and following up with them at that point and see if they have any questions on like the reason why. Because I think that's one of the things that makes like a good programmer in my opinion is somebody like you care about the reason why something works. You want to know like how does the service container work in Laravel, you like you want to like delve into that and like that curiosity like.

Anyone I think can be an amazing programmer if you have that that curiosity there. So just like really like allowing an environment where that can flourish and you can just like have folks that have done things that you can ask questions on and like never feel afraid to answer those quite ask those questions. I think like that's like one of the best ways to. Deform like a like a good mentorship like a good training program.

I'm still trying to learn it. Honestly, I'm fumbling a little bit with the answer here towards the end because it's such an interesting question. What's the best ways to train folks? It's something I still try to find every day. Then to your question, Carl, finding those resources for filament and more advanced ecosystem things. One of our questions during

during some interviews is like, what's your experience in the community? And we like to hear about that. And we like to get folks that are company involved in the Laravel community. We plan to attend Laricon this year and the years afterwards and just get really invested into it. Cause it's such an amazing kind and like strong community that Taylor and the team and everybody folks like you guys have kind of built up, you know, and created just such an amazing ecosystem.

So getting like sharing posts from Laravel news and stuff like that amongst coworkers, getting them really into the ecosystem, I think is huge. We're not, the last thing I'll say about what Carl said is we're not so much like, I'm not always so in tuned into the products like Forge and Laravel Cloud as much as the rest of the community, because we've created our own way of deployment.

that is a little weird. So like I haven't used to Forge.

Karl M. (1:00:20)
Did anybody else see Stephen's

ears perk up? Like he was like, I'm new way of deployment. I saw that. I don't know how I just saw it in his head. He was like, he's gonna ask that question. All right, sorry, go ahead.

Kevin (1:00:24)
Okay.

Steven Fox (1:00:29)
you

Kevin (1:00:29)
Just correct that a little bit.

Yeah, no problem. Yeah. Now say like, I'm sure some of you have done what we've done before, yeah, so I haven't used literal foraging in quite some time. In the beginning, when we first launched the app, I actually used Envoyer, think, actually. What's Envoyer, right? think it's a spell. Use Envoyer. Yeah, Envoyer is good.

Karl M. (1:00:52)
It was good.

Steven Fox (1:00:55)
zero downtime deployment.

Karl M. (1:00:57)
It's coming to Forge soon. They're gonna, Taylor tweeted this. They're killing Envoyer and all the features of Envoyer is moving to Forge.

Kevin (1:01:00)
Yeah.

Nice, nice. Yeah, that would be really nice. think they'll do a really good job. There was a time period where it wasn't getting a whole lot because they were mostly focused on Forge and Vapor and getting Cloud out. But think rolling that into Forge would be a really good boost for them.

Karl M. (1:01:12)
That will be.

I think it's going to help them a lot

because it's not a huge team, but they do have a lot of applications and that fragmentation can make it difficult. So I think that helps tie it all together. And then they only have three things for server management deployment kind of thing. You have Forge, you have Vapor, and you have Cloud.

Kevin (1:01:35)
Yeah.

For sure.

Yep.

Yep.

Karl M. (1:01:54)
Versus right now it's like, we've got to manage that. this new feature came out. We want to integrate it with Forge, but it kind of falls into the Envoy ecosystem. So which one does it really belong to? Like what feature does that belong? what base does that belong in, I guess?

Steven Fox (1:02:12)
Yeah, yeah,

Kevin (1:02:13)
Yeah,

yeah.

Steven Fox (1:02:13)
yeah. That makes sense. OK, Kevin, you just dropped like a whole bunch of stuff that I would love to talk about, but we're to have to wrap this up at some point. Yeah. One question I do want to ask, though, you guys mentioned this developer handbook. Is that also something?

Karl M. (1:02:19)
Yeah, I'm thinking part two thoughts.

Yeah, any chance

of open sourcing that?

Kevin (1:02:31)
Yeah.

Steven Fox (1:02:32)
Yeah,

is that available?

Kevin (1:02:34)
That's not, but me and sure. Yeah. Yeah. So, not, not available for now. Yeah. But

Steven Fox (1:02:37)
How can I get my hands on that?

Karl M. (1:02:39)
Yeah.

How many?

How many job applications

do I have to fill out to get to that? Just.

Kevin (1:02:48)
Just

one just one and then then then and then a couple interviews, but it could be you But yeah Now that's not yet. That's an internal thing. But we actually to speak on that a little bit We are like we've been thinking for a long time about like something similar to layer cast right like courses and and and Possibly maybe even putting on layer cast or doing something different about like working in

Steven Fox (1:02:53)
Hehehehe

That's great. All right.

Kevin (1:03:17)
an enterprise mass scale environment in Laravel. And so I think like something like the developer handbook would probably be something we'd include in that sort of stuff.

Karl M. (1:03:28)
I am sending you a really awesome resource. I don't know if you've heard of project ixdf. Let's see. Yes. It's the interactive design, but they have an open source handbook that talks about writing Laravel and view code in a succinct way. And then they give you examples of like.

Steven Fox (1:03:37)
Sounds familiar.

Kevin (1:03:48)
and

Karl M. (1:03:54)
the good, the bad, the ugly, like don't do this, this is ugly and doesn't work. And here's a good example of how to do things. If you could take this in like 10 exit and make it open source, that'd be awesome.

Kevin (1:03:57)
Yeah.

Yeah, yeah,

absolutely. Yeah, that's, this is similar to what we, like what we're doing, what we want to do. But yeah, I have to look through this. I haven't seen it. Nice.

Karl M. (1:04:16)
They even cover like SQL conventions. They're like, don't do this. You're going to write a really slow query that does in plus one and don't do it. It's just bad. And so yeah, it's kind of neat. Steven, how do we put that in the show notes for people? Because now I've mentioned it and they're like, where the heck do I find that? OK.

Kevin (1:04:25)
and

Steven Fox (1:04:38)
Yeah, we can do that. We can

do it on a transistor. That's pretty cool. That's pretty cool.

Karl M. (1:04:42)
All right. This show is technically

sponsored by Transistor still. So we should probably mention them. Good job, Stephen.

Steven Fox (1:04:52)
Yeah.

Karl M. (1:04:55)
Go, Steven. I should

Kevin (1:04:57)
all planned.

Karl M. (1:04:58)
go get the

transistor hatch. Just kidding.

Steven Fox (1:05:00)
It's all

good. All right, Kevin, I do think this is now twice as long as I thought it was going to be. But this was a really, really good conversation. I had a lot of fun. Learned a lot of really neat stuff. Don't agree with anything you're saying about Postgres, but that's OK. We'll have another. I'm just kidding. Sequel life for life.

Kevin (1:05:12)
anything.

that's, yeah, that's okay. Part two, part two, we'll battle it out.

Karl M. (1:05:24)
I'm

Kevin (1:05:26)
Yes.

Karl M. (1:05:27)
gonna sit on the side. Okay, so Stephen knows this, but nobody else does. So I'm gonna admit this on the podcast. I don't like popcorn, but I'm gonna sit next to, I'm gonna sit on the show eating popcorn, just watching this, just to see how this goes down.

Steven Fox (1:05:41)
Dude, I eat enough popcorn

for the both of us. It's like it's my guilty pleasure. Oh. Oh. I'm fresh out. I'm fresh out. Gotta go get some more. Kevin, if you have any socials or anywhere that you'd like people to kind of find you or or can it. Well, I was going to say it's usually easiest just drop them in the show notes and people can just click on them.

Kevin (1:05:43)
Yeah, me too, man. I'm really, I'm reeling from that. I'm going to have popcorn after this now and I'm going to think about Carl while I do it. Yeah.

Karl M. (1:05:50)
You

Now is the time to say them.

Yes.

Kevin (1:06:10)
Yeah.

Steven Fox (1:06:10)
So

that's good. We'll get that stuff and for any listeners just look down there. You can see where to find Kevin, Canyon GPS, all that stuff. Oh, we can even include maybe a link to where people can apply for a role. So if you're listening to this soon enough, then that might still be relevant. And I think we might have to do a part two after a little while. Because this has been fun. So do we have any any final things that anybody else wants to say, Carl, Kevin?

Kevin (1:06:10)
Yeah.

Yeah, for sure. Absolutely.

Karl M. (1:06:29)
assuming I don't beat you to it.

Kevin (1:06:32)
Yeah, yeah, absolutely.

Steven Fox (1:06:39)
You guys good?

Karl M. (1:06:41)
No, this has been fantastic. Thanks for having us on your show, because this is more you than us, which I really like. A lot of times it's like us filling in for people, and it's been nice to talk to you.

Steven Fox (1:06:50)
Yeah, yeah,

Kevin (1:06:55)
Yeah, it's been great talking to you too.

Steven Fox (1:06:55)
Yeah.

Yeah, you've done you've done great, Kevin. Excellent first podcast. Way to go. All right.

Kevin (1:06:59)
Thanks.

Yeah, the first one in the books. Yep.

Karl M. (1:07:05)
Wrap that up.

Was this your last question? Was this your New Year's resolution that you were going to be on podcast?

Kevin (1:07:14)
You know, it was, it was actually a part of a new year's resolution to like revamp my like internet image. So I like did my read it, my whole website and like, in like black and white text and like real fancy to try to copy like some of like the, the like, yeah, I kind of stream copy. Yeah. Just like, just like, you know, make it look real refined. And I was like, you know, if I could get on a podcast too, that'd be awesome. So yeah, you are composing it in some way.

Karl M. (1:07:29)
You copied my website?

Steven Fox (1:07:42)
Here we go. We've done it. Alright everybody.

Karl M. (1:07:44)
Three months

in, good job. I'm proud of you,

Kevin (1:07:47)
Thank you. Thank you. Yeah, not going back to the gym.

Steven Fox (1:07:48)
Thank you. Thank you, Kevin.

Karl M. (1:07:49)
Alright.

Steven Fox (1:07:50)
Yeah, right.

Karl M. (1:07:51)
Nailed it.

Steven Fox (1:07:52)
Thank you, Kevin. Thank you, listeners. We'll catch you guys all in the next episode.

Karl M. (1:07:57)
Sounds good. Bye.

Kevin (1:07:59)
Bye.

From World of Warcraft to Software Development with Kevin Ullyott
Broadcast by