MIRC to Laravel with Biker Bogdan Kharchenko

Karl Murray (00:01)
Welcome to Voices of the Code. My name is Karl Murray, and this is Stephen Fox, whose voice is not doing super great today, so I'm gonna do a lot of talking for him. And today we have a special guest of Bogdan Kartchenko. And yes, I did ask him several times how to pronounce that, just to make sure I got it right.

Steven Fox (00:17)
Ha

Karl Murray (00:19)
Bogdan, you wanna go ahead and say hello for us?

Bogdan Kharchenko (00:22)
Yeah, hey, how you guys doing? I'm so happy to be here with you guys and have a cool conversation. I like the premise of this podcast, totally psyched to get.

Karl Murray (00:34)
Okay, so we do have a disclaimer for this episode, don't we Steven?

Steven Fox (00:35)
Cool, thank you.

We do, what's that?

Karl Murray (00:41)
The disclaimer for this episode is that Bogdan bought the domain for Larabets, which is the project that Stephen and I are working on that sort of like this, it lose quotes. Okay, so we do kind of have to answer a question. So we did take a couple of weeks off from this and we are definitely gonna miss our deadline for Larabets.

Steven Fox (00:53)
working in loose quotes.

Karl Murray (01:09)
Because a lot of things just happened the last couple of weeks. One, Steven went on vacation. How dare you go on vacation, sir?

Steven Fox (01:16)
Ugh. I'm just crazy, I can't believe I did that.

Karl Murray (01:21)
Right, right. The audacity of going on vacation, spending time with your family and not hanging out with Carl on a podcast. I also had the audacity to get a new job. So, I mean, that's, thank you. Thank you, Bogdan. So I am now a official title, Solutions Engineer at Lumenvier, which is a consultant agency kind of like Titan Co and Kirschbaum and...

Bogdan Kharchenko (01:34)
Congratulations.

Steven Fox (01:36)
Congrats.

Karl Murray (01:50)
that kind of stuff. They're heavily FileMaker Pro based and they used to do a lot more WordPress, but we're starting to head more in the Laravel community, which is pretty awesome. Why they hired several Laravel devs, not that they don't have a good team of Laravel devs already, but yeah, that's kind of why the podcast has been temporarily put on hold, but we are back with Bogdan Karchenko.

Steven Fox (02:19)
and we are back.

Bogdan Kharchenko (02:19)
Woo, I also think those are really good reasons. Vacation and a new job, I think that's worthwhile.

Karl Murray (02:27)
Absolutely, All right, Bogdan, the most important question that everybody here is going to want to know, what got you into coding and why Laravel?

Bogdan Kharchenko (02:37)
Yeah, I mean, I can take you back several years. And basically, this all started out, I came to America from Ukraine in 1997. And we came from a fairly poor family and community. And my parents ended up buying us a computer at the eve of 1999. So there was this Y2K crisis and

My parents went out to Walmart and they bought us like a e-machines computer and had like a CD-ROM floppy drive, the 56K modem. was it. Yeah. So it was the first introduction to a computer. And, you know, when we first got it, there was this internet relay client, maybe you guys know as IRC. Yes. And it was a Windows computer.

Steven Fox (03:14)
nice.

Dinosaur.

Karl Murray (03:33)
IRC.

Bogdan Kharchenko (03:37)
and there was a client called MyRC or Merck, I don't know what's it called officially, but in this internet relay chat client, there was a scripting mechanism where you could build like different tools or plugins within this web app or desktop app, I'm sorry. And so I really got into it. I was like, whoa, this is really cool. And I was probably...

I don't know, fairly young, I don't remember how old, but probably a year into it, I started making some pretty interesting plugins for this application. it was super, I don't know, for me, it was my first programming introduction, and I made a couple of these plugins, and I was like, well, I wanna have a website where I can put these plugins out in the wild. And this kind of brings me to...

how I got started with PHP to begin with. Somebody was like, dude, you should go just check it out. Like on one of these chats, he was like, you should go check out PHP. And I think PHP was like either version three or four. Honestly, I don't remember. It was like a very long time ago. And it kind of had that same feel of easy to get going. You don't have to compile code. And it had a similar programming pattern as like this mark or

MIRC application. So it really hit home for me. So that was kind of how I started with that. since then, I have worked on various small projects using PHP. And I did take a little bit of a brief period of non-programming for maybe like eight years. And I picked up programming again in like maybe

2010 or so and I kind of went back to the PHP world. I've done a bunch of WordPress stuff. I've done code igniter stuff and you know I had like a little side business. I had this website called my website repair.com and the whole thing was just about yeah it was just like amazing SEO juice and the whole premise was just like we fix broken WordPress websites and

Karl Murray (05:50)
Love the domain.

Steven Fox (05:52)
That is awesome.

Bogdan Kharchenko (06:00)
A lot of people had a lot of WordPress websites. think this was still on the cusp of Wix and Squarespace not being out yet, so people were still self-hosting. So I was doing a lot of that type of work. And my full-time job, which may be surprising for some, I used to be a paramedic for a long time. This is the reason for my brief disconnect from the programming world.

Once I got back into programming, I kind of got the itch and I kind of realized that like, you know, this is really what I love to do. And this is how, you know, I ended up, you know, getting out of that and doing programming full time. So that's kind of like the origin story.

Steven Fox (06:43)
That is awesome.

Karl Murray (06:44)
Okay, now let's go in game. What got you into Laravel specifically?

Bogdan Kharchenko (06:49)
Yeah, so I was kind of in a bit of research mode back in like 2000, I want to say 14. And I saw that Laravel was like a thing on the market. And one of the things that really drew me were the documentations. I was just like, well, this is amazing. It's like well written. And one day at that point, I was already doing like a bunch of code igniter work.

at that point in time, was like, well, let me just see how this works. And I was able to quickly build a very robust application, which followed the really good Laravel conventions by generating a bunch of controllers automatically and models and all these things that, to me, was just like the speed of development got me super excited.

about Laravel and then I shelved it for maybe about six months or so and I came up to, had a client that wanted to have a project built and I was like, well, let me take a look into Laravel again. At this point it was already Laravel 5.0 and I started building this application and basically never looked back. It's kind of been the only thing that I'm interested in in terms of working with and

Not only because it's great for developer experience, I think there's a lot of benefits for, if you run an application, like a real application, I think it gives you lot of confidence in terms of its actual ability to deliver every single time.

Steven Fox (08:39)
Yeah, full featured applications.

Bogdan Kharchenko (08:42)
Yes, correct. and like just to go into that a little bit, I ended up building a SaaS application very early on in the literal time, you know, when I started. And this was like a pretty like reliability intensive application where it's effective, it's still out there, but basically an employee would have to come in, clock in, clock out. There was like these very,

even though they seem very basic, they're critical infrastructure things that needed to work. And I just remember deploying it on Forge using Vapor for zero time deployment, I'm sorry, Envoyer. And there was a lot of peace of mind when I went to sleep that I didn't have to wake up in the morning to a huge disaster. And even though those things happened, mostly because of my errors that I've made or introduced.

But I think overall, just everything being so crystal clear of how the application works, not only for me, but I remember also sitting down with my client, he was like a business guy. And he was like, well, can you just kind of show me how this works? And I just legit opened up PHP Storm, and I was like, here's the route, here's the controller, here's this.

a query that's being made with an ORM and it's very readable, not just for developers, but also for the business people. they're like, yeah, that makes sense. This is the way it works. So that kind of all sealed the deal and I never looked back.

Karl Murray (10:19)
Awesome. What stock are we using with Laravel? it Altol? Is it Blade? What are we using?

Steven Fox (10:19)
man.

Bogdan Kharchenko (10:27)
Yeah, so I've been sticking to Blade and full page refreshes as like the de facto thing. Right around where when, you know, in that period of time when I started using Laravel, there's been a bunch of like JavaScript frameworks coming out. And, you know, it was like Angular people were using and then people were using Vue, people were using React in the early days and...

I ended up getting on a project where we had a view front end and a Laravel back end. And it just took us so long to actually deliver features because we would have to write code in effectively two different languages. And it made everything from testing to just managing, compiling. And it was just not a good experience. So I try as...

much as possible not to use any like SBA type of application. Even though things have gotten better, especially if you use something like inertia or Livewire nowadays, those things are like very performant and they jive really well with each other. But yeah, certainly full page refreshes, just basic view, basic blade components and

peppered in some JavaScript when needed. Maybe Alpine JS, jQuery, I know. It's not super popular, but it does the job.

Karl Murray (12:02)
Hey, jQuery is making a comeback. It's making a comeback. They just released version four a couple months ago, if I remember correctly. I was like, this is insane.

Steven Fox (12:03)
It makes money.

Bogdan Kharchenko (12:04)
Is it?

Really?

Yeah, so there's been a lot of pushback for some reason on jQuery. And the arguments like, well, you don't need jQuery. You could just write this plain JavaScript code. But then if you really step back and think about it, the whole benefit of jQuery is that you don't have to do all of this complicated document, getElementByID stuff. There is a nice shortcut.

And I think, yeah, it's sometimes a little heavy in terms of the package size. I think it's much faster to write jQuery code than do plain JavaScript. It's not that great. And jQuery supports, I don't know how much of an issue it is now, but cross-browser JavaScript compatibility, which used to be a big thing back

Karl Murray (13:08)
I misspoke. It's jQuery 4.0 beta was released January, February 6th, 24. So it's still in beta, but it is dropping support for IE 11. So.

Bogdan Kharchenko (13:16)
Okay.

excellent. About time.

Karl Murray (13:25)
So.

Steven Fox (13:25)
At a curiosity, Bogdan, have you tried like sprinkling in just Alpine JS when you would normally reach for jQuery?

Bogdan Kharchenko (13:33)
Yes. Yeah, so Alpine.js is basically the jQuery of the modern world. And it does work great. And I say this not to compare one versus the other. think ultimately, and this kind of comes back to some of my basic principles. We as developers a lot of times fixate on, well, I want to use React because it's

Karl Murray (13:38)
The modern jQuery.

Steven Fox (13:41)
Yeah. Yeah.

Bogdan Kharchenko (14:02)
does all these things and I wanna use Vue.js or I wanna use this and that. And I just think that there's nothing wrong with using jQuery if it does the job. There's nothing wrong with using Alpine.js if it does the job. Alpine.js does not do the same thing React would do. They obviously have to pick the right tool for the job. So I just think a lot of people get stuck on that, like, I need to have a really successful application I need to use.

Karl Murray (14:25)
and.

Bogdan Kharchenko (14:31)
Well, that's not true. could just use blade with some jQuery, plain JavaScript, Alpine JS, like you name it. The most important thing is to actually do some work and deliver some value.

Karl Murray (14:42)
Well, and developer experience matters too, like 100%. So to be fair, and I wholly agree with you, Bogdan, but yeah, developer experience matters too.

Bogdan Kharchenko (14:54)
Yeah, 100%.

Karl Murray (14:57)
And that was one of the things that I've always struggled with is the amount of people that are like, we have to use React. Do we really have to use React? Is there another solution that might be better for us? Or are we just sticking with React because we can hire 10,000 college graduates in five minutes because of everybody knowing React now.

Steven Fox (15:20)
Right. Yeah.

Karl Murray (15:21)
So, I think that's one of the things I really liked about Laravel was the fact that it's like, it's not being taught in schools. So you're not getting that vibe of you have to use it because everybody uses it, right?

Steven Fox (15:35)
Right, Yeah.

Karl Murray (15:39)
Okay Bogdan, and so what do do now?

Bogdan Kharchenko (15:42)
Yeah, so right now I work for a company called InterNACHI. I work with a gentleman named Chris Morell and Skylar Katz. I'm sure you guys remember them. They've been mentioned at the Verbs presentation at Leracon. So they're heavily involved in a lot of this event sourcing stuff. yeah, we work together at a company called InterNACHI, and we're basically a member association for home inspectors.

And we utilize Laravel pretty heavily in our day-to-day.

Karl Murray (16:16)
Okay, tell me a little bit or what you can about that stack. Tell me some interesting things that you've got using that stack specifically.

Bogdan Kharchenko (16:27)
Sure, Everything basically that I've mentioned so far is exactly what we're doing. When I first joined the team, we were kind of, and I joined the team six years ago, we were kind in the same position of, do we go with a front-end stack and an SPA and Laravel on the back-end, or do we use Blade? Because none of us in the company had really solid experience using React.

and we didn't have the financial backing to hire a bunch of React developers. We just basically said, let's do basic blade templates, full page refreshes, and that gave us all the benefits that I mentioned, everything from testing and just not having to deal with another programming language to maintain.

Steven Fox (17:21)
Right. It's a fairly old application, right? InterNACHI's been around for a while.

Karl Murray (17:22)
Sounds good.

Bogdan Kharchenko (17:26)
Yes, so, InternetG itself has been around for over 20 years. There's some legacy code that is still around, but it's all mostly migrated into a Laravel app. And I believe, you know, I think there's maybe half a million lines of code in this Laravel application. So it's a pretty big application.

Steven Fox (17:51)
Were you around when it was doing that migration from kind of old school PHP to Larval?

Bogdan Kharchenko (17:55)
Yes. Yes. So when I joined Internachi, Chris Morrell has already started doing some of that work. And he's, you know, he's moved some of like the basic components. But over the last six years, you know, we've been moving various components over and, you know, and, you know, a lot of people ask me like, you know, what do you do on like your day to day like non programmer guys? And, you know, I tell them I'm like, you know,

Imagine that we have a highway like an interstate and we have to basically move traffic without causing delay, you know, and this is kind of what we've been doing with some of this like, you know, legacy code is, you know, we do have an active user base that is using all these features and how do you, you know, move, you know, code and, you know, make sure that it continues to work in terms of like the data model and structure and you also want to like improve it, right?

So it's definitely been a challenge to do that without causing a lot of headache or data loss. So we have been doing it time by time. And it's been going great. think ultimately though, I think if we were to start from scratch with a brand new application, you could probably move a lot faster. Because you don't have some of that older code base to worry about.

There isn't that much, let's say, testing and documentation of how things work. So a lot of times you'd have to go and explore, figure out what it does, and then you can move it. But it's a good challenge. I think we're almost there. There's a few more components that need to come over, but I think we're at the end of the tunnel pretty soon.

Steven Fox (19:47)
Can you get into any specifics in how you guys are actually doing that? Whenever you say, OK, we've got, I don't know, whatever, this feature or something, and it's like, well, it's currently in legacy. This is what it looks like. How do you actually do that?

Bogdan Kharchenko (19:52)
Sure.

Yeah. Yeah.

Sure, so I'll give you an example. we have a mechanism, we have basically a cron job in this old system that runs every so often and it calls a PHP file which gathers a number of records from the database and then effectively there's corresponding files that it would call. So they're kind of like little...

file handlers, you would say, right? Or little jobs. So we have been traditionally in this legacy system calling this file with a cron job, dispatching maybe five or 10 of these quote unquote jobs. And they did various things, send emails, make an attachment, and so on and so forth. And we wanted to bring that over into our new system and

You know, we sat down with Chris and Skyler and we kind of brainstormed how to do that. what we ended up coming up with, which I think was a pretty good solution, was we would move these individual handlers into Laravel one by one while maintaining, while keeping that original, like, cron job file that dispatched all these things. And...

We would move that piece of code over and we would say instead of sending that email from host, though, we would just say, write a record to a table in our database that signifies what to do to Laravel. And then in Laravel, we created a job that runs every minute that checks that table to see if we need to like process a queue from our old system. And we took, you know,

the data and knowing what data is in that Q job and which file we need to call in Laravel, we effectively sent a signal to Laravel to process something from the legacy system. So that has been working out really well and we also used it for other aspects of the system. So for example,

We have a course platform and at the end of this platform when you complete this course, we would send you an email. And rather than like sending it from the legacy system, we just queued that job into this system and said, hey, send this email when you're ready. you know, we now taken over control of sending an email from an old system through Laravel, which has been really nice. So that's...

One of the ways to do it, and there's other tricks that we're doing, not just in this process, but in general, having to deal with proxy servers and so on and so forth, because we have to split traffic between two different servers in real time.

Steven Fox (23:09)
That sounds complicated. Like the queue side, I am kind of wrapping my head around, and that makes sense. You guys almost made your own queue stack, right? It's like SQS, homegrown. But man, how do you handle web traffic where it's like, well, this route is on old system and this other route is now on the new

Karl Murray (23:11)
Yeah, that does

Bogdan Kharchenko (23:11)
Yeah, luckily

Yes.

Yeah. Yeah. Yeah, luckily, I don't have to deal too much with the DevOps stuff. And Chris Moreau has been kind of like owning that job ever since before I even got there. But it's effectively a proxy server that sits in front of the main domain. And all the requests kind of go through it. we're able to, based on route patterns, direct traffic to different servers.

Steven Fox (23:37)
Yeah

Bogdan Kharchenko (23:57)
So yeah, it's challenging. Older code bases are challenging. It's not as easy as like, yeah, let's spin up a Forge server and everything just works.

Karl Murray (24:08)
Right. So what tools do you use, Bogdan? Are we using VS Code, PHP Store, BIM?

Bogdan Kharchenko (24:16)
Yeah, so I'm certainly a PHP Storm fan. it has been, prior to PHP Storm, I've used various tools like NetBeans. I don't know if you guys remember. I don't know if you guys are that old.

Karl Murray (24:30)
man, NetBeans mentioned. Back in my Java days, I used NetBeans a lot.

Bogdan Kharchenko (24:36)
Yeah, so ever since I got a hold of PHP Storm, I've been basically using it nonstop. And when the VS code came out, a lot of people were super excited about it. And I know a lot of people use it day to day, but I've given it a few chances, but it just doesn't have the same abilities as PHP Storm does. Especially when you combine it with the Laravel IDEA plugin,

Karl Murray (25:01)
So I'm gonna...

Bogdan Kharchenko (25:07)
To work with Laravel has never been easier. I know that Laravel is also deploying a plugin for VS Code, but it has certainly improved my developer experience, and everybody on our team uses the same configuration, it's the same tool, so it's really nice to work with somebody that uses the same tool, and you can basically help each other. Exactly, yeah. A lot of times it's like,

Karl Murray (25:31)
press this keyboard trick and it'll just work.

Bogdan Kharchenko (25:35)
We'll be doing some pairing sessions and I'll be doing some complicated thing that there's a shortcut for. And they're like, yeah, there's this shortcut. I'm like, that's amazing. But yeah.

Karl Murray (25:47)
Are you guys mostly remote? Okay. So what does a pairing session look like for you guys? open Zoom, Slack, are we Tuple? What are we using?

Bogdan Kharchenko (25:49)
Yes, we are 100 % remote.

Yeah, so we use tuple, but we also pair on zoom if it's pretty quick. We're just kind of showing some code, but yeah, usually it's, you know, one person driving and maybe two of us just kind of pitching in some ideas or, you know, not just writing code, but we're also like when I mentioned we look at some of the legacy code, you know, oftentimes it's better for us to look at it together.

as a team to figure out what's going on.

Karl Murray (26:29)
You need one person typing, one person thinking, and one person translating.

Bogdan Kharchenko (26:35)
Yeah, yes, for sure. So we do use it extensively and code reviews and a bunch of other tools. I think Tuple overall just has the best quality for screen sharing. And it's been working out great for us.

Karl Murray (26:53)
So I'm expecting a sponsorship deal from Tupul pretty soon.

Bogdan Kharchenko (26:56)
Yeah, I should reach out to them. I reached out to JetBrains and they ended up sponsoring a meetup that I host in Greenville, South Carolina. They give us a bunch of, not a bunch, but they give us a handful of free licenses to give away to our attendees, which has been super nice. So maybe it's a good idea. Maybe I'll reach out to Tupol. Maybe they'll give us a month free or two month free license for a team or something.

Steven Fox (27:24)
That's awesome.

Karl Murray (27:25)
Yeah, that kind of stuff is fun. So you use dark mode, light mode.

Bogdan Kharchenko (27:31)
So I used to do dark mode many years ago, but I think my eyes have taken a toll on it and all I do is do light mode. I just think there's some benefits to it in regard to, you know, so we use GitHub for, or I use GitHub for code storage. And if you have the same like theme in your IDE as the GitHub theme,

It makes code review pretty quick. Or don't have to shift themes. So that's the theme that I use. It's like a GitHub ID theme. And it's in light mode. Even my GitHub is set to light mode only. I

Karl Murray (28:18)
So if you ever do any pair programming with Steven, he will put sunglasses on immediately. Just letting you know now.

Bogdan Kharchenko (28:24)
Hahaha

Steven Fox (28:25)
This is why Bogdan is tan and I am pale.

Karl Murray (28:29)
Yeah, the light of the monitor. That makes sense.

Bogdan Kharchenko (28:29)
Yes. Yes, for sure.

Steven Fox (28:33)
Hey, you just kind of like glanced over something there I feel like we could touch on for a minute. So do you want to talk at all about the meetup you do with Upstate?

Bogdan Kharchenko (28:42)
Sure, yeah, so

You know, so I'm fairly new to the Greenville area and I moved here for about two and a half years ago and everybody is still kind of like recovering from COVID and trying to get their bearings set. And I went to a local meetup, you know, we have this organization in Greenville called hackgreenville.com. By the way, if you're in South Carolina, North Carolina or the surrounding areas, check them out. But...

I went there and there was like a lot of momentum of people trying to get out and, you know, know each other. And I think people have just kind of missed that because of COVID. And so that was a bit of an inspiration. And then sometime later I went to the Nashville Leracon Conference. And after that Leracon Conference, I got super pumped because we saw a bunch of people in person.

And I kind of in the back of my mind, I wanted to do some sort of local meetup. luckily, I found the person who ran the PHP meetup in Greenville. It's called Upstate PHP. he was just kind of like, if you want to restart it, go ahead. So earlier this year, after taking four year hiatus from the meetup,

from the Upstate PHP Meetup. We did our first event. We had five people show up. And we just had pizza, got to know each other. And it was a really good time. And what I got from that was that people, kind of like my hypothesis was, people really did want to get out and see each other, somebody's hand, and get to know their story. So.

You know, we've since then hosted two additional meetups which have been both successful. We've had Daniel Colburn come out from Asheville to talk about verbs. We recently had Alex Six do a talk about filament, which I know he was on your podcast. So, you know, we're able to attract some talent and, you know, we're getting, you know, anywhere from 20 to 30 people to come to this event. And, you know, it's been great. I love...

that people are able to find each other. I was talking to a gentleman at one of the meetups and he was mentioning that there's potentially a job opportunity from one of the other attendees. So to me it was just like, wow, what more can you get? Not only are you learning, you're getting to meet people that could potentially give you a job or potentially be your business partner. And I think in person,

still has a lot of value. know that everybody's remote, but because everybody's remote, I think there's a void to fill. So we are happy to do it, to bring people together. But yeah, so that's upstatephp.com. If you guys are in the area, definitely check it out. We meet on a quarterly basis. I think the next meetup will be in January. So stay tuned.

Steven Fox (31:50)
Yeah. Highly recommend, highly recommend. It was, I made it to the one with Daniel and if you're in this, even not in the area, like come into town Greenville for starters. Yeah. Greenville is a really, really cool town city. It has like this awesome, good downtown experience, but it's not overwhelmingly big. And that was really nice. And then two.

Karl Murray (32:01)
Fly in, buy tickets.

Steven Fox (32:18)
I got so many valuable relationships because the size was like perfect. There was enough people that it didn't feel like awkwardly intimate with complete strangers and yet at the same time it wasn't larikon sized. And so if you want, you can have a meaningful conversation with pretty much everybody else in the room and it was just super great. It was super awesome. So highly recommend.

Bogdan Kharchenko (32:43)
Yeah, no, it was a fantastic experience. Thank you for that feedback. know, it's, you know, especially that one time we had a lot of people come down. We had like Eric Barnes, Jason Beggs, obviously you were there and you know, we had Chris Morel, we had.

Steven Fox (32:55)
Chris flew in, Joel and everybody, yeah. was just like lots of people came in. It was awesome.

Bogdan Kharchenko (33:00)
Joel Claremont. It was a lot of people and yeah, it was a really good time. And we don't want it to be like a big size. We want it to be approachable, like you said. It's somewhere where you can actually get to know somebody. In contrast to Lericon, yeah, at Lericon this past year, I felt so exhausted. Like my dopamine levels were drained for like a week, maybe two, just from having conversations with various people. And it's a great event.

But it's really hard to actually have a meaningful one-on-one long-term conversation with somebody. Exactly. Yeah.

Karl Murray (33:35)
You've got like five seconds between one conversation to the next one. Bogdan, you were one of the few people I actually got a chance to meet at Laricon. So we did this whole Telegram chat thing where I was like, actually like, hey, I'm over here in a red jacket, blue backpack. If you need me, I'm here. And Bogdan was one of the guys he was like, raised his hand. He was like, hey, I'll meet you over by terminal coffee. I'll see you there in like five minutes. And like, all right, deal. Five minutes. I'll see you there.

Bogdan Kharchenko (33:53)
Yes.

Karl Murray (34:04)
So that that was kind of cool. What was your your your big key takeaway and don't say Laravel cloud. Everybody says Laravel cloud from Laricon this year.

Bogdan Kharchenko (34:06)
Yeah, that was awesome.

I think in general, like, you know, this is my fourth Lericon I believe I'm at. you know, I think the, not in any particular product, but I think just overall the community is just as strong as it was, you know, I think my first Lericon was in 2018. And, you know, that shows, you know, that the community is still kind of sticking together. There's really good vibes. Like I had a really good time.

I don't know, I haven't seen any drama. It was a really good experience. As far as the talks, I was really impressed by the Lerval reverb demo with them flying the drone. I thought that was super wild. Because I always had my doubts like, can reverb actually scale? And then once you see how many data transmissions it does,

for that drone video shot, like it's remarkable. So that's definitely.

Karl Murray (35:21)
That was a pretty cool video. If you were at Laircon and you were in the Telegram group, it was really funny because he just walks outside, casually drops a box in the middle of the stage and the Telegram chat just blew up with a hundred people going, what's in the box? What's in the box? Which I thought was pretty funny, but yeah, that was one of my favorite talks as well.

Yeah, that was definitely one of my favorite ones. Okay, so what's your favorite tip? Like, we're gonna start wrapping this up pretty quickly. like a new Laravel developer, what's your big thing that was like life changing for you getting into Lera?

Bogdan Kharchenko (36:03)
So I guess I can give a more general tip for developers and then maybe a Laravel tip specifically. feel like early on, I think there was a podcast with Taylor and in this podcast he said something that kind of opened up my eyes and this is not just like a Laravel thing but...

And one of the things he said is, a lot of people focus on over-optimizing their application and scaling it to some infinite number, like they're going to be the next Facebook. And the reality, that's not going to be the case. This is why I say, if you need to use jQuery, use jQuery. If that's what you love, just focus on actually delivering value to your customer, whether that's a client using your SaaS app or

you know, customer that is paying you for a small project, rather than like over engineering like, like what if I have like a million records in this table? Like you know that this is gonna be a five page application managed in filament. Like there's not gonna be a million pages. know, like don't over engineer it, just go and actually do it. And you know, if you need to deploy it on Laravel Forge on a $5 VPS machine,

that's probably gonna suffice 99.99 % of the applications out there. Like you don't need Laravel, Vapor, you don't need an expensive Amazon EC2 instance with its own standalone RDS database. Like don't over-complicate it. Just build everything on one machine and then hopefully your app will grow and you will consider some of these things painful at that time. like at that point in time,

you will actually, you know, it will be worthwhile to do that investment rather than like gold plating your entire application at the very beginning only for it to fail. So I think that's like one thing that really stuck to me and I think a lot of people spend too much time gold plating their systems, which is great if you want to like practice, but if you actually want to deliver value, you know, you got to ship it quickly.

So that's one thing. As far as Laravel tips, I think the most meaningful thing to embrace, and I know that there's a lot of, or used to be a lot of pushback against the ORM of Laravel, and everybody would be like, ORMs make your application so slow, you gotta write these native, you gotta write these SQL queries from scratch and do all this stuff.

But I think once you figure out how the ORM works, how the relationships are structured, I think that's the key part. Because once you do that, you can build quickly. You can figure out how to really create tables that you need and not have to do some sort of crazy joins. I don't know. I think.

The ORM is probably the best part of Laravel. Managing manual SQL queries is incredibly painful. And there's all types of security risks and so on and so forth. But just using the ORM provides a lot of value. So I think mastering that is probably the number one tip.

Karl Murray (39:39)
Did you take the Laircast course on mastering eloquent?

Bogdan Kharchenko (39:45)
I did not. I used to watch Laracast many, many years ago, and I, for some reason, just stopped. And I just, you know, I think like, I remember, I will say, like when I first got into Laravel, I got into Laracast, I would go to sleep listening to Jeffrey Way talk about controllers and stuff. And maybe I did watch this video, if it's an old video, but... okay.

Karl Murray (40:10)
It's Jonathan Renick did the course on like performance driven eloquent or something like that. I don't remember exactly what it's called, but yeah, it was a pretty fantastic course. If you haven't. Already seen it, I would highly, highly, highly recommend it, even if you already have a very vast understanding of eloquent, just because. Taylor has joked about the only person that knows eloquent better than than Taylor is Jonathan Renick.

Bogdan Kharchenko (40:40)
OK. Yeah, I'll have to check it out. I know that there's a lot of tips and tricks. And I remember Jonathan Renning came up. I want to say he was at a Lericon, and he showed a cool demo on how to optimize some queries that would otherwise take a little while to do. So I think there's obviously a lot of very advanced eloquent that people do need to know. But I think just understanding the basics is like, especially for a newcomer, right?

Karl Murray (40:41)
So if.

Get you there 95 % of the time.

Bogdan Kharchenko (41:09)
Yeah, like 95 % of the time you will get there and yeah.

Steven Fox (41:16)
Yeah, that's the really good part to me about Jonathan's course when I went through it is to me, he did a great job of covering performance and tips and tricks of databases first, and then how you accomplish that with Eloquent. So it's actually less like advanced Eloquent to me. It's more of like advanced database querying with Eloquent.

And that was like a pretty big differentiator because a lot of the things that you learn in there just conceptually apply to multiple database engines. And the ORM is just a way to interact with building queries and stuff like that. And so it pays dividends well beyond just eloquent.

Bogdan Kharchenko (42:05)
Yeah, I'll have to definitely check it out. It sounds like a worthwhile course.

Karl Murray (42:10)
And I'll ask the last question that we love asking outside of writing code. What is back tonight to do?

Steven Fox (42:20)
Do you like fountain pens?

Bogdan Kharchenko (42:23)
No, I do not like fountain pens. So I like to live on the edge in life, I guess. But I used to race motorcycles in my early 20s. And I still have a huge passion for it. And I don't race anymore. But I occasionally go to the racetrack just for practice. I also have a street bike that I just picked up this year.

And I just came back from this past weekend. I was at the Tail of the Dragon in Tennessee and North Carolina, if you guys know where that is. And that was an amazing road. We went out with some guys there. Beautiful turns and scenery and everything like that. But yeah, so I do that. aside from that, I also do mountain biking, which is another extreme sport. I do skiing, which is.

Steven Fox (43:00)
Yeah.

Karl Murray (43:00)
Very nice.

Bogdan Kharchenko (43:21)
another extreme sport and I've done scuba diving once, which was super cool, but I haven't done it since. I do really want to pick it up again. I just haven't found the time between all the other extreme stuff I do. So yes, I like to get out as much as I like writing code. I don't want to be in front of a computer my entire life. You know, I want to get out. You know, I was in Europe a couple of years ago.

And my kind of general observation was the people that go there are either pretty young that don't have kids or very old that don't have kids. And in between that period of time, I think you need to enjoy life a little bit. Because when I was pretty young and I didn't have kids, I also didn't have money. And I don't want to be old without kids and unable to do some of these things.

in life. you know, I'm trying to enjoy it a little bit.

Steven Fox (44:29)
Totally. Track riding motorcycles is one of the things that yeah, Bogdan and I hit it off quickly because there's not many developers that you could be like, yo, you dropped me at the track and Bogdan was one of them.

Bogdan Kharchenko (44:32)
Yes, I know Stephen, you're into or yes.

Yeah, I honestly think you'd be surprised. I was surprised that DHH was racing cars and not just at a local track event or a small organization, but at Le Mans. And I'm sure he did a bunch of stuff. I think there needs to be a channel or something that argue into extreme sports.

Steven Fox (44:48)
Yeah.

Yeah.

Bogdan Kharchenko (45:09)
for developers because I often find that the guys that I ride mountain bikes with, they also do skiing. And then some of the guys that I ride motorcycle with, they do some other extreme sports. So I think once you're in there, you're in that extreme category. So I think there needs to be an extreme sports club for programmers.

Steven Fox (45:32)
Yeah, adrenaline seeking coders. I like it.

Bogdan Kharchenko (45:33)
Yes. Yes.

Karl Murray (45:37)
performance

Steven Fox (45:37)
New podcast I hear coming to light right now.

Bogdan Kharchenko (45:41)
Yes.

Karl Murray (45:43)
Yeah, cause Steven needs a fourth podcast.

Steven Fox (45:50)
like all of my week now. man.

Karl Murray (45:52)
Yeah, Stephen's available every day for another podcast.

Bogdan Kharchenko (45:58)
That's awesome.

Steven Fox (45:59)
never-ending recording.

Karl Murray (46:01)
Right, right. Are you into custom keyboards or what are... Nope.

Bogdan Kharchenko (46:06)
No, I have a Logitech keyboard that's like the ergonomic keyboard. It's slightly curved. And it's been working great. think one of the reasons why I actually dislike those mechanical keyboards is the amount of noise they make just drives me crazy. I just don't want to sit in front of a typewriter all day and you

Karl Murray (46:31)
I okay, so Steven, we need to get in a room with Bogdan. We need to show him how to build a keyboard that doesn't Astronomically loud. Yeah, I I Bogdan, I'm not kidding. I have parts behind me for keyboards like I just built keepers. Yeah, I I actually buy foam and stuff like that to fill the ins like all the cavities my keyboard so that they they aren't.

Bogdan Kharchenko (46:39)
There's a way, I see.

Mm-hmm. I see. So you can actually build one. Okay. Okay. Yeah.

Karl Murray (47:00)
loud and annoying like that. Yeah.

Bogdan Kharchenko (47:00)
I see. So they don't make clacky noise. Yeah, I think, you know, there's nothing wrong with that. I just think like to me, I never got into it. I know some people are super into keyboards. There was a gentleman, I want to say his name was Austin, at Lurekown. He was like giving away these like custom keys that he created. And, you know, you have one. there it is. Beautiful. Yeah. So he was giving them away and I was like, well, I kind of want one, but I don't have a...

Karl Murray (47:20)
I

Bogdan Kharchenko (47:29)
keyboard to even I'm gonna waste it so he gave me a defective one which I do have but it just it wouldn't fit fit into any keyboard but yeah I think there's a little subculture you know in that space and it's huge just like the neo vim guys doing their extreme programming and them yeah so I'll let it up to those guys yeah I just

Karl Murray (47:33)
That's pretty cool.

Every episode somebody mentions NioVem.

Steven Fox (47:52)
It's gotta get mentioned.

Bogdan Kharchenko (47:57)
I don't know if I have the patience to sit and map the keys on my keyboard and some text file and upload the firmware and do all that work. It just seems like a lot of

Karl Murray (48:10)
Yeah, you don't have to go that crazy. You can get a standard keyboard that works the way you expect it to without changing anything, but you can still get that mechanical feel where you have a typing experience without it being astronomically loud and annoying. Keychrons being my favorite as far as like you can get a standard model that doesn't change a whole lot. The one I am using on my gaming computer is actually like the K.

Bogdan Kharchenko (48:16)
Okay.

Karl Murray (48:38)
K10 or Q10 or something like that. But it's an Alice layout, so you have a nice ergonomical layout, but it's an aluminum brick. My wife picked it up the other day and she was like, yeah, this is like the zombie apocalypse weapon. So if someone breaks into the house, you're just going to clock in with this keyboard, right?

Bogdan Kharchenko (48:40)
Okay.

Yeah, send that to me. Send me a link afterwards. I'll definitely check it out. Can't say I'm going to buy it, but at least I want to take a look at this aluminum beast. Kind of interested.

Karl Murray (49:09)
It's pretty crazy. But yeah, it's pretty cool.

Bogdan Kharchenko (49:12)
Okay.

Steven Fox (49:17)
I would say that this step up going from a standard layout to something where you have thumb clusters is much more important than, yeah, it's way more important than going from like a butterfly switch to a mechanical switch. Thumb clusters, these are like one of your most valuable assets on your hands and for it to only strike a single key times two fingers.

Karl Murray (49:17)
It's the Q10.

Thumb clusters was a life changer for me.

Steven Fox (49:45)
is little bit of a waste. So as soon as you get thumb clusters, it opens up a whole new world.

Bogdan Kharchenko (49:47)
Yeah.

Yeah, I did see it. Chris Morel does have one of those like moonwalkers or something. And I was at his house one day and he was just showing me like, if you press this, it changes this whole layout. I was like, dude, like there's some 3D level keyboard stuff right here. So I'm just like used to capital letters and lowercase letters and stuff. that does like the work. But kudos to you guys for doing all that keyboard stuff. It's pretty cool.

Karl Murray (50:19)
It is pretty cool. I'm not on Stephen's level. Like he sent me his firmware the other day and he was like, check this out. I'm like, yeah, no, I'm never going to figure this one out. Sorry, Stephen.

Steven Fox (50:31)
It's one of those things that I've now been doing it for, I think, two years with the setup. And so it becomes a second nature as remembering that to go from a lowercase s to a capital S, you hold Shift. Well, whenever I want to do a custom key command for PHP Storm or some other application, I can just hold my thumb down and tap it, and it just happens to represent something else. And you can just get a little bit more efficient with that.

Bogdan Kharchenko (51:01)
Yeah, that's pretty cool.

Karl Murray (51:01)
The the the Q8 that I'm going to send you a link to does actually have two buttons in the middle next to the keyboard next to the space bar and so you can program those to be whatever you want. So are you using a Mac or PC or Linux? What are we using? OK, so you could actually program those to be command keys on the middle one on your right hand and then a control key on the on the left side if you want. And that ends up being a really, really, really cool.

Steven Fox (51:01)
That's all.

Bogdan Kharchenko (51:11)
Okay. I see. Sounds good.

Mac Mac

Okay.

Got it.

Karl Murray (51:31)
simple change that doesn't require months of free programming your brain to figure out.

Bogdan Kharchenko (51:38)
All right, okay, sounds good.

Karl Murray (51:40)
It's not like the ZSH keyboards that Stephen and I use where it takes you like two weeks to figure out how to type on it properly.

Bogdan Kharchenko (51:50)
See, this is why I don't want to get into this space, because I know that once you get into it, you're like, well, I this up in one day, and then you get some other keyboard that takes like two weeks to configure.

Karl Murray (51:55)
It's a gateway drug.

Yeah, it's a gateway drug. It 100 % is. All right, Bogdan. Well, it's been awesome getting to meet you. It was awesome getting to meet you in person and talking to you in telegram and all that kind of stuff. Love having you on the show. Next week, if Stephen is available, I think I am. I think we're gonna do Delia Thompson, who recently got into Laravel, like in the last year or two. So she should be a fun one.

Bogdan Kharchenko (52:03)
Yes. Yeah.

Karl Murray (52:31)
to get to know and see how she's doing with that. yeah, we'll see you next week, guys.

Steven Fox (52:39)
Absolutely. Can I do a couple of really quick name drops as we sign off here? And we'll also put some links in the show notes, yeah. Bogdan, where can people find out more about the Meetup first?

Bogdan Kharchenko (52:51)
So the best way to find out information about our meetup is upstatephp.com. We also have a Twitter account or formerly known as Twitter X, also upstatephp. And you can sign up to our newsletter and we can give you a shout out next time we're gonna have an event. Also, if you are interested in speaking at our event, feel free to...

you know, find us on the website and just reach out to us because we are interested in getting interesting conversations going. So if you want to get in and have a place or a platform, feel free to reach out.

Steven Fox (53:31)
And then the other one I wanted to mention, Chris is an awesome guy. And it's impossible that you would listen to this podcast and not know about his, but he does do over-engineered. So if you like this type of kind of technical Laravel coding stuff, go check out Chris's podcast as well. OK, that's it for me, Carl. You can sign us off.

Bogdan Kharchenko (53:42)
Yes.

Karl Murray (53:53)
And we're out now.

Alright, we'll see you guys next week.

Bogdan Kharchenko (54:01)
Alright, see ya.

Steven Fox (54:02)
See ya.

Creators and Guests

Karl Murray
Host
Karl Murray
Laravel /PHP Developer, Inertia, Vue, Tailwind, Livewire. Autism Dad of two wonderful children.
Steven Fox
Host
Steven Fox
Fullstack @laravelphp developer + entrepreneur. Owner of @BackerClub. Core contributor to @PinkaryProject. Co-host of @TheBucketPod & Voices of the Code.
MIRC to Laravel with Biker Bogdan Kharchenko
Broadcast by