From Reverse Engineering to Software Development with Jayson Lindsley
Karl Murray (00:00.889)
Welcome to Voices of the Code. I am your host, Karl Murray, and with me as always is the fantastic Mr. Stephen Fox.
Steven Fox (00:08.638)
You're too nice Karl, but thank you. Hello everybody
Karl Murray (00:11.513)
You're very welcome. All right, so today is going to be a little bit different because I'm going to do the announcements first instead of waiting to the end just because I feel like people don't listen all the way to the end. Probably because I'm boring. Anyway, if you want to be on the show, email me at [email protected] and we'll get you on the show today with us. We have Jayson Lindsley. Jayson say hello.
Jayson L. (00:37.358)
Hey everybody, great to be here. Thank you for having me. It's kind of an honor. It's my first podcast, so hopefully I don't get nervous and trip over myself too much. But yeah, it's great to be here.
Karl Murray (00:49.977)
Can't be any worse than me and Steven.
Steven Fox (00:52.246)
But say, you're doing great so far, Jason. So just keep it up.
Jayson L. (00:54.058)
You guys are natural. You're natural. Believe me.
Karl Murray (00:54.209)
Hahaha!
Karl Murray (00:58.241)
I mean, this is only episode six, so I guess we're figuring it out as we go.
Steven Fox (01:03.21)
Yep, for sure, for sure.
Karl Murray (01:06.073)
All right, Jason, tell us a little bit about yourself and what got you into programming.
Jayson L. (01:10.474)
Yeah, I took kind of an unfamiliar path to get into programming. kind of, I describe myself as a jack of all trades, kind of a Swiss army knife. I am involved in quite literally everything in the organization that I'm at. Stuff from dealing with like the marketing team and like the tooling and the SEO part down to like our actual cloud environment and AWS and then doing some of the actual development work with our team here.
and believe it or not, kind of all started cause I wanted to actually be, doing reverse engineering. That was, that was actually my original career path. and some, somehow along the way I ended up in web def.
Karl Murray (01:59.489)
I feel like you missed the mark, Jason. I could be wrong. But you're sp—
Jayson L. (02:02.542)
Yeah, quite a bit.
Steven Fox (02:07.313)
Are you allowed to say what company you're working for?
Jayson L. (02:10.434)
Yeah, I'm working for Myoutdesk. So Myoutdesk is essentially like a virtual staffing company. So we find people worldwide right now in the Philippines. And we find the great people that have a lot of work experience who want to work for a US company remotely. And then we find great US companies. We have a lot of requirements for them as well, just so can make these really successful matches.
You can kind of think of it like a really curated like upwork experience where we vet both sides to make sure things work and then make really committed long-term matches. And that kind of overlaps with what I'm doing for that company in a lot of ways just because there's a lot of stuff to fix. There are a lot of problems on the tech side. And then I also work on our productivity software and timekeeping software.
Karl Murray (03:04.803)
Nice. And where are you based out of?
Jayson L. (03:07.08)
The company is in Sacramento, California.
Karl Murray (03:11.211)
Are you in California as well or no?
Jayson L. (03:13.004)
Yeah, I am. Also in Sacramento, like we have some people who are global, but yeah, we have a guy on my team who's in Pakistan. We have three that are in the Philippines. So we're a little bit more distributed for the IT side.
Karl Murray (03:15.875)
Very nice. Whoop. Also in Sacramento.
Karl Murray (03:29.305)
Alright, well I'm about to admit something. I've told Stephen before and I got some glares when I said it. I'm actually from Simi Valley, California.
Jayson L. (03:38.69)
From what was it again?
Karl Murray (03:40.665)
CME Valley, near LA.
Jayson L. (03:43.766)
I see I'm from like NorCal originally so I don't know anything about SoCal at all.
Karl Murray (03:49.931)
wow. About, what is it, like 10 miles northwest of LA, like the outer rim of LA. So yeah.
Jayson L. (03:52.31)
Like.
Jayson L. (04:02.712)
I've never even been to LA. I've been to LAX one time and I got yelled at by the TSA agent and I've just been kind of avoiding it since.
Steven Fox (04:03.158)
Nice.
Steven Fox (04:11.02)
Just never been back into one bad TSA person and all of Cali is blown. Southern Cali.
Jayson L. (04:16.155)
Right?
Karl Murray (04:20.825)
I have a Did you go to Laravel or Laricon this year?
Steven Fox (04:22.636)
That's funny.
Jayson L. (04:26.42)
No, I actually haven't been to Larecon. I have yet to go there. I've been to a few other conferences. I've been to Dreamforce a few times because I also have Salesforce experience. But I'm hoping one day I can get to Larecon. It looks like there's a lot of people there that I recognize in the community. So kind of excited to get over there.
Karl Murray (04:44.961)
no.
Steven Fox (04:49.888)
Nice, nice.
Karl Murray (04:50.297)
For sure. Yeah, you've got to get out there. It's an experience for sure.
Jayson L. (04:58.102)
The main thing too is it's like, I'm doing like 900 things all the time. So one of the challenges is like, I'll go there and I'll see all this stuff and get FOMO. Like I really want to use Livewire, but like I don't have time or it's like not on the boilerplate. And then I'll just like kind of start making excuses in my head. Like, hey, they're working on this really cool thing. I need to make an excuse to use it. Like where can I fit this in? Even if it doesn't make sense.
Steven Fox (04:58.59)
It is a good time.
Jayson L. (05:24.398)
So I kind of end up with this issue of like, stop building cool stuff because I'm too busy to use it.
Steven Fox (05:34.392)
That could be a deadly trap for us developers, because then you just want to keep jumping on these new trains and just constantly going down these rabbit holes of new technologies.
Jayson L. (05:42.38)
Right, I mean.
Karl Murray (05:42.894)
Which is-
Jayson L. (05:46.442)
It's probably healthier than chasing every JavaScript framework though.
Karl Murray (05:47.927)
Which is funny to me, because I always...
There's a website for that if you're if you're curious. It's the amount of new JavaScript or days since last JS. But something like days since last JS framework.com or something like that, and I'm convinced it's hard coded to zero. Because I've never seen it.
Jayson L. (06:10.555)
They should set it to negative one and just so they're future proof forever
Karl Murray (06:15.019)
Hmm. Yeah. For the C.C. guys of the of the listening to the podcast, that would be an overflow.
Jayson L. (06:27.382)
I saw that meme for like, since I'm working on timekeeping software too, I have the pleasure of working with time zones. And so I saw a meme where it's like days since last time zone issue and it was set to negative one. It was like a post-it note. that is absolutely too true. I love the time zones. It gets so confusing so quickly.
Karl Murray (06:51.257)
So the primogen posted a video not so long ago on YouTube where he was talking about like why time zones are such a nightmare. And one of them was like this island decided that it wanted to be part of that time zone. So no matter what, it's going to jet into the other time zones that the entire island is considered that time zone. And it's like, everything south of the island is a completely different time zones like, but it's directly south. We don't care. It's directly south.
Jayson L. (07:20.414)
Yeah, could honestly spend hours talking about all the stuff that we've ran into with time zones. It's horrible. But it's kind of a necessary evil. Yeah.
Karl Murray (07:27.929)
Stay away from Indiana. Just don't do it.
Steven Fox (07:32.552)
Mm-hmm. Yep.
Karl Murray (07:34.425)
Somebody posted a GitHub repository for this and it's why Indiana's time zones are so messed up. And it's like every law that was put on the books for because they do it county by county. The county can choose what time zone they they belong.
It's like, doesn't make any sense.
Jayson L. (07:51.682)
I do not feel, I feel for the standard library authors. Well,
Steven Fox (07:58.282)
I have one little tidbit on time zones. I'll jump in here really quick to mention the bit me. Maybe it'll help somebody. I was recently doing something, and it was seeding data into a MySQL database. And it kept telling me, this date is an invalid date time, so it wouldn't insert the record. And I'm looking at them like that looks like a perfectly formatted date time when the world is going on and after too much time.
trying to figure out what the heck was going on. It was because it was a leap or not a leap day. It was a time change day. So we were like springing forward for a daytime savings or daylight savings. And so it was at like, you know, whatever March day at 2 0 8 a.m. which is when the time goes forward which technically never exists. I'm like, my sequel, you're killing me.
Karl Murray (08:46.585)
which never exist.
Steven Fox (08:54.7)
So you just have to like go in and tell my sequel to, I don't know, you know, default to using UTC daylight savings protocol and then it will dump it in. But it was just like, for the longest time, I was like, why does it not accept this stupid record? It was like,
Karl Murray (09:05.217)
Karl Murray (09:08.665)
All the crazy things we run into as developers, like adding an extra comma to a CSV file will completely wreck your day.
Jayson L. (09:19.249)
yeah.
Steven Fox (09:19.252)
Yep, yep, yep, yep. yeah, you see programmers, you think buffer overflows are hard, try Daylight Savings in a MySQL database.
Karl Murray (09:20.121)
You
Karl Murray (09:32.089)
I just have a universal rule always UTC Just save your life. It's always use UTC when storing it in the database
Jayson L. (09:39.822)
I have some caution against that, though, that I've learned. OK, so let's talk about scheduling. And maybe I just haven't stumbled upon the solution, but we've been looking at this for a couple of years now. But I want you to think about if you were to take a time zone that is going to be like in America, Los Angeles, right? So you work in America, Los Angeles from 8 AM to 5 PM, no matter
Karl Murray (09:44.487)
here we go. Let's go. Hot take.
Steven Fox (09:45.365)
let's hear it. Let's hear it.
Jayson L. (10:08.342)
Like what day? It's always like Monday through Friday, that's the standard schedule. Okay, if you put that in the database, you're gonna have a problem with 5 p.m., which is because it's gonna be zero zero. And then what's gonna happen is daylight savings is gonna come around, and it's gonna bump that value. And so what you're gonna kinda end up with is this case where you need to know.
Either you're going to have to know where you're at or you're have to move those UTC time stamps when daylight savings occurs. Or else that 8 a.m. is going to get bumped in SOAS 5.
Karl Murray (10:40.003)
Yeah, I have historically always just...
Jayson L. (10:47.586)
Go ahead.
Karl Murray (10:49.721)
So the way that I've solved that problem is I just use JavaScript to figure out what time zone they're in and bump it forward or minus based off of their time zone that they're in. But yeah, they can get.
Jayson L. (11:02.392)
So.
It gets really gross when you're like, yeah. If you're forwarding in the future, it gets really bad. Like if you're projecting that, right? Because if you're doing it on the PHP side and you're saying, OK, I want to use this schedule and I want to get this entire month on the calendar, and you're going to generate it at that time, it causes some really gross logic on.
Karl Murray (11:06.278)
As somebody who dealt with
It gets fun because
Jayson L. (11:30.478)
that side when you're trying to figure out like, OK, we weren't in DST for this day, but then we are now in this day. And it's just it's not a problem that I found to elegantly solve unless you actually just code it in the target time zone in the database, in which case then I wouldn't recommend using UTC. I would just say if it's always 8 AM, like leave it at 8 AM and put the standard time zone in another column.
or else you're gonna probably cause headaches for not necessarily the viewer, right? Because you could put it back into UTC when you send it down to the browser if you want to use their local library. But for the backend, it's just been wrecking havoc on us for so long that we're like, we cannot do this again. Next time, we're just gonna leave it in the time zone.
Steven Fox (12:13.63)
Hmm
Karl Murray (12:13.646)
Yeah.
Yeah, we used to do a lot with the GDS and stuff like that. it would deal with a special character being put in the database if it crossed a day. if you were getting on a two-hour flight at 11 PM, you would cross the day. So it would put a special character in, letting you know that you are landing a different day than the day you took
Steven Fox (12:45.92)
Hmm.
Karl Murray (12:46.989)
which gets to be really fun when you're trying to solve that problem. But we found that just putting it in UTC and then pulling it the like running a JavaScript to figure out where and when they will be landing ends up making a lot more sense. So we just query the user every single time they log in and say, hey, look, they're in this time zone now. Save that in the database and then give them all times based on that time that's the current.
Steven Fox (12:52.938)
Yeah.
Karl Murray (13:17.547)
unless specified otherwise.
Steven Fox (13:20.864)
Hmm. So fun. So Jason, you have fun with time zones at the job. Is there any other challenges that you face that you want to throw out there for us to talk about that come to mind?
Jayson L. (13:32.6)
There's
Too many for right now. I almost want to circle back to what got into programming, right? To kind of bring it back, which we got really sidetracked. That's probably my bad. For the audience, I have ADHD, so I sometimes get derailed and I have to bring myself back. So I want to go back to that because I have a really interesting path where, as we mentioned earlier, I wanted to do reverse engineering. obviously that didn't happen.
Steven Fox (13:37.772)
Too many for right now, okay.
Steven Fox (13:45.9)
it's all good.
Jayson L. (14:05.078)
I wanted to go back to like me breaking my first computer because that's what really started everything. So I was really poor growing up. so in middle school, I became really good friends with like the security guard. There was like a retired naval officer security guard who worked at the middle school. And since I got dropped off early, I would just hang out with him and just talk. He ended up giving me my first computer.
Steven Fox (14:11.456)
Let's hear it. Let's hear it. Take us to the beginning.
Jayson L. (14:35.118)
because he had an extra one. And so I got that. It was a Windows 95. And I was like, this is legit. I got my first computer. It's mine. Set it up at home. And I was able to finally play stuff like Warcraft II Battle.net Edition, Starcraft. And we had dial-up internet. So everything was awesome. Then one day, my mom took me to Circuit City, and I saw Red Alert II.
And I was like, I want to play that. That looks awesome. Same thing, top down. It's what everybody else is using. And I was the kind of person that would go through every menu. I would just learn. I was sitting there, and I would go through every menu. would hit every button. I would change the color on the monitor and be like, why does this look wrong now? And it's like, OK, because I changed that to 256 colors instead of 32-bit. I was just clicking stuff. Didn't matter.
But I got good at at least going, OK, I know how much RAM this has. I know how fast it is. So I went to go install the game. like, that's There's not enough hard drive space. I already clicked around enough to know, OK, well, if I go to properties on the folder, I know how much space stuff takes. I'll say, bet. I'll just start deleting stuff. So I started deleting stuff from the System32 folder, like the driver folder in particular. And I did get it to install. But.
Then when I rebooted, I lost sound and internet. my, yeah, well everything else was in use, right? So it wouldn't let you. So I was like, hey, we're using this right now, you can't delete that. And I was like, try again, try again. was like, all right, well that's not good. So whatever, skip. But yeah.
Steven Fox (16:08.108)
That's it? That's actually pretty good.
Karl Murray (16:21.177)
That's like telling Linux users to remove the French language pack.
Jayson L. (16:25.806)
It was interesting because like, that's exactly how I learned what drivers do. I was like, no, I shouldn't have done that. And my mom was a little bit upset. But what was also interesting is at that school as well, there was the computer guy was going around upgrading all the computers from Windows 95 to Windows 98. And I was like,
Hey, could like that would totally be good for me too. So I don't know. I was talking to him and he just handed me the stuff to do it. And he's like, Hey, just bring it back. I'm like, heck yes. went. So I managed to get the computer from a broken soundless 95 to a 98. The modem still didn't work though. Cause it was like aftermarket or something. but at least I got that part working and, then, my mom ended up getting a loaner computer from her work.
which I also broke, but we'll get to that later. All this is kind of important staging. That one I broke because at the time I was like really in, I started learning about like torrents and stuff like that. And you know, at the time you like, would open up uTorrent, it'd be like, hey, we could make this download faster if you let us, you know, adjust how many TCP connections you have open. And I was like, that sounds perfect. And I hit yes. And then it corrupted the windsock stacks.
Karl Murray (17:51.403)
And this is why we don't let Jason test in prod.
Jayson L. (17:54.947)
Right? So, you know, I just, I was like, okay, whatever. So then I broke that and then, you know, that knowledge though about like what the Winsock stacks, the TCP-IC stacks does in Windows and fixing that, that actually got me my first job, computer repair. I've only ever had two interviews, by the way. So I've never, I've never had to actually go look for, I like just don't look for jobs. They kind of just show up.
but I was working at an ice cream shop and
Karl Murray (18:26.349)
Must be nice living in California.
Jayson L. (18:29.344)
It's weird, I was working at an ice cream shop and I just kind of sent off my resume to this computer repair place and I haven't had broken my own computer enough to get a job there. So that is basically where the reverse engineering started.
Steven Fox (18:45.056)
You heard it here, folks, just leave a wake of destruction behind you and it'll eventually lead you into a career path of development.
Jayson L. (18:56.864)
Yeah, basically...
Karl Murray (18:57.529)
He's not wrong. I mean, that's how I got started was like trading computer parts around. So hey, you need a hard drive. I need a video card. Here's a 20 gig hard drive. Can you give me that? You know, stupid cheap video card that will at least make my computer boot. Yeah, perfect. Good swap.
Jayson L. (19:17.269)
Yeah, and it's weird too because I just was like, okay, all this stuff that I did manage to break, I got a lot of it fixed. And then it landed me my first job at that computer repair place. I was, well, technically second. I don't really count Baskin Robbins. I mean, that's ice cream. That's weird. But I became quickly like the guy. They're like, if it's a broken computer and you guys can't fix it, goes to Jay.
If he can't fix it, it's dead. Like there's no hope. And I was going to college at the same time for my computer science degree. So I was doing that. I was getting better at that. I had like Windows VMs on the side. And so people would do stuff like run registry cleaners, which by the way, don't, don't do that. Orphan keys can't hurt you. They're fine. Just leave them. I don't even know how they determine they're orphan, but I've seen like so much like important information just get.
destroyed because of registry cleaners. All of the C cleaner and glare utilities were the big ones. Those are going to delete it. And you're just sitting there like, yo, I can't open anything anymore. Because it deleted several keys responsible to tell Windows how to open an EXE. All the handlers are gone. So during that, though, I rebuilt the tool that they were using for deploying software.
Windows Defender, Malware Bytes, all that fun stuff. I built that in C Sharp. And during like that, I was also collecting malware samples because people were coming in with like all kinds of fun stuff. And I was like, how does this work? So I was just pulling it in and ripping it apart. had a copy of Oli debugger and IDA Pro. And I was just like learning assembly C, pulling these things apart.
Steven Fox (21:11.424)
Mm-hmm. Mm-hmm.
Jayson L. (21:14.306)
And eventually, eventually they were like, hey, we'll pay you $4 an hour more if you work on our CRM because it's falling apart. And I was like, OK, that sounds good. And that's how I started PHP. I straight up, I will be for real though, like going from C Sharp to PHP and having nobody to tell you how it works. I did not get it at first.
Steven Fox (21:31.779)
Aw yeah!
Jayson L. (21:43.21)
I was lost. I was like, how on earth does this control? How do you put in a URL and get to a controller? Nobody was there to explain this to me. And I was like, where, how? what, how did it was Kohana. So I'm like sitting here like, what, how does this even do anything? And it was like ridiculous. And so like, I, that too, I was like, what are these very, where are the classes? Where is everything? Everything was just shoved in a controller or in a model. And I was like, what?
Steven Fox (21:52.289)
Hmm.
Karl Murray (22:02.009)
Magic methods will kill you every time.
Steven Fox (22:05.59)
Magic methods.
Jayson L. (22:12.686)
So I made it a point when, because I'm in like director seat now, so I'm getting a point. If I'm ever bringing anybody in who's not used PHP, I'm going to like go over how a framework works with you first. Because it doesn't, if no one tells you, it does not make sense. You're just like, there's an index file and then black magic and then somehow some request ends up in a place and you just have to kind of know what the method name should be. And that was one of the...
Steven Fox (22:37.14)
Yeah, not to mention that the stack to calling that index file isn't the simplest thing, right? There's not like a binary that just is running on the server, right? You have to have an actual server engine calling FPM and doing all of this other stuff too, just to get a process to execute the file. So yeah, pretty complicated.
Jayson L. (22:49.1)
Right? And then...
Jayson L. (22:57.298)
And I think cPanel was the goat when I first started. So everybody was running cPanel. I was like, what does this even do? This doesn't make sense. So I had to start from the ground up. like, OK, so this is Nginx. And I need this to go to PHP, FPM, for god knows. But then there's Apache and Apache. I don't know. The whole thing was horrible. But eventually started to click. And then I learned I hated Kohana. And I hate per- I hate-
Steven Fox (23:25.237)
Nice.
Jayson L. (23:25.866)
having route per like anything parameterized where I'm like trying to guess where it goes. That's one of the things I love about Laravel is you just pick your route names and you're good. You tell it where to go. It'll figure it out. And I'm just like, thank God. Cause like you'll make something really nice. You'll be like, I want it to be this. I want to have this specific name in this specific controller. And it's like, yeah, I'm not going to call that. You have to make it ugly.
Steven Fox (23:39.948)
Mm-hmm.
Jayson L. (23:54.37)
That way I know where to find it. That's how I felt with Kohana and Yi and all these other ones. It was just like, no, I'm good. So that's kind of the on-ramp to like how that all happened was pretty much me breaking my computer, all that fun stuff. And then finally we end up in PHP and I promptly stopped doing any reverse engineering. I got rid of my malware analysis book. I deleted my pirated copy of IDA Pro.
Steven Fox (24:02.496)
Yeah, yeah, yeah.
Karl Murray (24:02.563)
Yeah.
Jayson L. (24:24.219)
and I haven't really touched anything like that since so, but I also haven't broken my computer sense. So we're good. It all evens out.
Karl Murray (24:32.355)
So if you are somehow listening to this podcast and you're not into tech already, here's the key takeaway. Break it. Irrelevant, irrelevant. Maybe they're interested in tech and want to get into it eventually. let's say, for example, you're not here yet. The tip here is break it, learn how to fix it, and then put that on your resume. There you go.
Steven Fox (24:40.7)
What are you doing if you're listening to this podcast and you're not in tech already?
Karl Murray (25:01.986)
Hahaha!
Jayson L. (25:03.035)
It's a very, very valid path. But I have a feeling it's not what a lot of people do. And I can't say I recommend it if you don't have a lot of money, because my mom was very mad at me breaking those things.
Karl Murray (25:17.859)
Well, I would say start up a Linux VM. Break the hell out of it like literally break it. And force yourself to learn how to fix it. Do not just wipe the OS and start over.
and you will go so far in the web world.
Steven Fox (25:37.036)
Yeah. Luckily, we have a lot of really cheap computational devices these days. So if you really want to kind of like hack away on something, just, well, yeah, or even just like the Raspberry Pi and the Arduinos and stuff like that. Like some of the really big light bulb moments I had on my educational venture, and this would have been 15, 20 years ago.
Karl Murray (25:45.017)
Well, yeah, DigitalOcean's $5 a month.
Steven Fox (26:03.722)
was getting some of the first Arduino stuff and understanding that, hmm, I can write code here that eventually will get this switch to engage, which will send voltage out this little serial port thing, and then a physical something happens. And at the end of the day, that's what computers do. So it's just a really cool way to discover how a lot of these
Karl Murray (26:27.065)
Right. Right.
Steven Fox (26:33.592)
little pieces come together. I think it's a lot of the engineer's mindset too. It's like people that are really good engineers, they are just intrinsically curious about how things work. And so wanting to take them apart and put them back together, whether that's physically, digitally, it's just a common thread between a lot of engineers, I think. Regardless even of discipline. Because like I was a mechanical engineer originally.
And it was much the same way. It was everything from building cars and engines. And my mom has hilarious stories of me taking apart the toilets in the house and putting them back together. It's just, you just want to know how stuff works. And there you go. And maybe one day it'll lead you somewhere.
Jayson L. (27:21.102)
Yeah, that's how I feel about like, malware too. When I was really into that, a lot of that stuff was just like, how are they doing this? Cause I was instructing the other people about how to remove very specific, you know, not, not a lot in the way of root kits. Cause those were particularly dangerous, but I do remember like going through and actually grabbing a hard drive that had a root kit on it, looking what it did to the MBR. Like TDSS was like the popular root kit at the time.
And I... Yeah, sorry about that. Yeah, Master Boot Record. Just a lot of Windows internals. I really wanted to understand how exactly all that stuff was put together. And importantly, these pieces of malware at the time were writing things to registry keys that you wouldn't think were even in use.
Steven Fox (27:50.902)
You're saying a lot of stuff I don't know about Jason.
Karl Murray (27:53.209)
NBR is master boot record.
Steven Fox (27:58.837)
Okay.
Jayson L. (28:20.664)
that would jump through hoops, there were things like droppers that would have a whole installation process that were encrypted. It was just a lot of fun, but it's the same thing. I just wanted to understand how are these working and how can I advise everybody else about how to safely eject them from the system without having to run big tools that potentially put that system in danger? Because some of these would take such a heavy-handed approach like, it's bad, delete it.
Steven Fox (28:33.856)
Mm-hmm.
Jayson L. (28:47.583)
Well, if it's registered as a driver and you just delete it, Windows won't boot. So a lot of it was fielding stuff like that too and making sure that like, guys, for this one right now, don't do that or else that machine won't boot. And then that's a whole other different problem.
Karl Murray (29:02.861)
Lesson learned by using Cloud, Crabstrike.
Jayson L. (29:07.038)
Yeah, I was surprised that Windows doesn't have a rollback for drivers after that. Kind of a weird one considering. I don't know.
Steven Fox (29:08.106)
No.
Karl Murray (29:22.041)
I'm just surprised it hasn't happened to Apple yet. That level of... Well, I guess Apple doesn't really let you get that low level.
Jayson L. (29:32.098)
That is true, yeah.
Karl Murray (29:32.707)
Like if you're gonna affect the boot up process of a Mac, don't think Apple lets you in there.
Jayson L. (29:40.662)
Yeah, I think they recently announced to Microsoft, at least, that they're probably going to try to get those AVs out of the kernel anyway. So I think we'll probably see that stop being an issue in the future.
Karl Murray (29:53.753)
thought they said something about switching to a Linux kernel going forward because they were noticing something about WSL and how much more efficient it was being, but I could be very wrong on that.
Jayson L. (30:09.211)
I'm not sure of the Czech, was it Tom Warren, his tweets?
Steven Fox (30:09.461)
Hmm.
Karl Murray (30:12.663)
or more of a Linux-like kernel? Or, I need to watch more low-level learning. That's what it comes down to.
Jayson L. (30:23.916)
Yeah, I don't do much of that stuff anymore, if at all, so I'm kind of out of the loop.
Steven Fox (30:25.682)
good show. That's a good show.
Karl Murray (30:31.235)
Fair enough.
Steven Fox (30:31.66)
So Jason, has much of this kind of hacky, break things, security concerns, has that translated a lot into your present day to day? Like, do you find yourself, I don't want to say gravitating towards, but like being able to identify some of these threats for your company and the application better because of it?
Karl Murray (30:53.337)
It's a simple spy Stephen's question. Because of your past experiences that help you as your current experience.
Jayson L. (31:02.622)
Yeah, mean, really, really, I guess the mindset of, yeah, the mindset of just looking about how things work has been a little bit helpful. I'd say it's been more helpful for debugging than anything. Like, I can look at an app. It doesn't even matter if I've developed it, right? You can run into an issue in a web app that you're working with, and you can just go, I guess I see kind of why that's probably happening. Maybe that'll help me get to a resolution faster.
Steven Fox (31:05.638)
Yes, but in a specific way.
Steven Fox (31:17.9)
Mmm.
Jayson L. (31:33.09)
but more so for, you know, my, my current position, a lot of that stuff is mostly, think, just curiosity is kind of curiosity and problem solving. I have like a lot of experience doing a lot of different stuff and I think that's just kind of like who I am. So when it comes down to like learning how things work, whether it's going to be like, you know, Google's knowledge graph.
All the way into just what's going on in AWS. I'd say that's the real benefit there. Yeah, it's, I'd say it's more about how I approach just the problem solving experience, but also because I'm sort of a jack of all trades, Swiss Army Knife, I can do a lot of different stuff in a lot of different areas. So right now that's kind of why I'm in that director seat is all field requests and
I'll know immediately where to send them. Or if they're stuck, that's where I'll jump in myself.
Steven Fox (32:38.508)
That makes a lot of sense. Yeah. Cool.
Karl Murray (32:42.073)
What editor are you using if you're still writing code? Yeah, I know.
Jayson L. (32:48.206)
Yeah, that's a random question. I use a lot of different ones, depends what I'm doing. I use PHP Storm for, obviously, for most stuff since I am using Laravel. So we have a couple different applications in production right now. We have Yi, which is old, and we're trying to get it to Laravel. We just have kind of a bandwidth problem. We haven't had time to dedicate to doing that port yet. And then we have like an integration.
Steven Fox (32:48.236)
conversation left turn
Jayson L. (33:17.474)
server that kind of floats out in the ether and just handles a lot of interoperability stuff. We have a lot of systems that are all talking to each other and that's kind of like the Goliath that's sitting out there. Its only job is to route stuff around between endpoints, whether it's going to be web hooks from like bunch of different services or if it's going to have like some sort of purpose with handling like our like billing operations.
It does a little bit of everything and that is built on Laravel. And it's been just an absolute pleasure to work on, which is why I love Laravel, because it's fast. If I need to get something up, if I need to get a webhook endpoint up, I know that I can just drop it through there. So for the other stuff I'm doing, like if it's anything like Lambda related, I'm going to drop that into VS Code. So I also do Rust over in VS Code. I was using Rust Rover for a little bit, but...
Steven Fox (34:03.116)
Mm-hmm.
Jayson L. (34:16.334)
because we have a Tarii app that is currently in use. I know a lot of people, not a lot of people have shipped like Tarii 2 to production. We're ramping up on Tarii 2 right now, which is really exciting. So for anything Rust, I just automatically defer to VS Code. So those are my two choices. I was never big on Vim. I just, I don't know if I got there late, but I was just like, eh, like I need an, for me, I need an IDE. Like I just, prefer that.
Karl Murray (34:47.833)
Well, that's going to land this episode. I'm just kidding. Sorry, Steven and I are both Vim users. of course we have to get that in there.
Jayson L. (34:52.022)
You
Steven Fox (34:58.252)
Well, we're VimMotion users, we're not actual VimM There's a very big difference.
Karl Murray (35:01.923)
Fair enough.
Fair enough. Fair enough.
Jayson L. (35:06.398)
Yeah, just was never really, I don't know. I just never, it never really took off for me, at least in that way. I do have to use it on occasion, right? Like if you're SSH into something and you have to do something really sketchy. Like once, one time we broke production, I'll give you an example. We accidentally DDoS ourselves. So my colleague had deployed some code that was when you were like on a dashboard, it had an interval and then that interval would basically call home every so often. And he accidentally forgot a zero.
Steven Fox (35:26.397)
brilliant.
Jayson L. (35:36.43)
So what happened is if we have 2000 users and they're all, they all kind of show up for work about the same time. So like every like 50 seconds, the server would just get dog piled by like 2000 requests in burst at the same time. And so that was a case where I was like, and that endpoint wasn't super light either. So I was like, I was at the ring central conference, I think in 2017 and I had to like, I had to like go in and I was like, okay, hold on. they had to.
Steven Fox (35:53.055)
god.
Jayson L. (36:06.552)
whitelist, I had to whitelist my IP so I could get to the jump posts. That way I could go into production. So I could just add like an early die statement somewhere just that way we could get the fleet back under control. because like it was in elastic beanstalk at the time and you could always scale up. But one of the issues is I inherited the app that I'm talking about from a Russian company called like Magora and they did, they've never heard of indexes in their life.
they've never like heard of like any, it was so, was like, I was like, my God, like every time we solved a problem, the load would move. So if you kind of think about like, okay, we had at the time when that service was first up, it had five servers running in, it was costing like five grand a month to keep this thing running in AWS. I got that down to like $400. So the first thing was like the,
Steven Fox (36:37.388)
No.
Karl Murray (36:37.785)
You
Jayson L. (37:03.022)
problem was on the PHP side, right? So it would basically be in this big loop to build schedules forever and it would take too much time. So I all right, well, I'll start there. I optimized that. Literally all of the load moved on to the database. So now every server was just sitting there with waiting because it couldn't get data from the database fast enough. So then I had to go fix the database. But then we had another problem where then we moved the load back to the servers now. And then we're like, OK, we need cache. We need Redis in here.
We kind of, it's been like a work in progress to kind of, cause when you don't do it right the first time and you kind of inherit those products, I just assumed that like some of this stuff would have been, it was already running in production. So I was like, okay, like we'll tackle this one at a time. I didn't think to like go through and meticulously audit each table and figure out where you're potentially shooting yourself in the foot. But yeah, it was, it was a weird one. So.
Yeah, that's to circle back. That's when I use stuff like V or Vim or Nano is specifically if I'm in an SSH environment.
Steven Fox (38:11.724)
Right, As long as you know how to get out of it, Colon WQ, then you know that you're fine.
Jayson L. (38:21.28)
The harder part is when you forget to sudo.
Karl Murray (38:21.843)
He's actually still stuck in the session.
Jayson L. (38:25.454)
You forget the pseudo, then you W, it's like, yeah, I can't write that, bro. And I was like, my god. Like, now I have to go through all this again, and I gotta call my colleague over, I'm like, okay, what's the 15 hotkeys I need to change this line? He's like a wizard in there, that's like his thing. He has, I swear, you could just take away his mouse, he'd be fine. He doesn't need it.
Steven Fox (38:28.876)
Bye!
Steven Fox (38:45.574)
Mm-hmm of them wizard. Yeah, I'm not I'm not that I'm not that good. I'm not that good
Karl Murray (38:47.705)
That's the dream. That's the dream.
I'm getting close, but still nowhere near.
Steven Fox (38:57.92)
Yeah, I can do some of that stuff, but it takes me longer to remember and actually get it like written out correctly with my keyboard. It's just faster for me to touch my mouse at that moment.
Karl Murray (39:09.689)
Steven uses J. Steven will grab his mouse instead of hitting J 17 times or hitting 17 J.
Steven Fox (39:18.86)
Yeah, yeah, yeah. Yeah. Or like you get to a line and it's like, I can't remember how to like get to exactly where I want to be in this line. And so it's just w w w w w w w w. Mm hmm. Yeah, well, then half the time I'll do that and I won't realize that the letter I'm going for occurs earlier in the line and my brain will be going too fast. So I'll just like F where I'm trying to go.
Karl Murray (39:20.025)
You
Jayson L. (39:21.089)
Yeah, I the same way.
Karl Murray (39:24.025)
Karl Murray (39:29.305)
F and then the letter that you're looking for there you go. That's always fun
Steven Fox (39:47.688)
CIW to start changing the ward I'm in, but then I realized my cursor is at the wrong location in the line. And so then I'm like, crap. And then I have to escape, go out and undo, and then actually get to where I want to be. I'm like, damn it. I'm trying to be fast and it's just making me go and search.
Karl Murray (40:05.267)
Ugh. Yeah, I get see that kind of stuff. Yeah. So I guess Jason dodged a bullet on that one. At least he doesn't get stuck in them circles.
Steven Fox (40:06.966)
Yep. The life of a Vim user.
Jayson L. (40:16.024)
Yeah.
Karl Murray (40:19.289)
so, yeah, for sure. Sticking with the browser or the editor stuff, Tabs, Spaces, Light Mode, Dark Mode, what are we using?
Steven Fox (40:21.313)
Good stuff.
Jayson L. (40:33.331)
I just use I think the default like I it goes to spaces But I've never really had I've never really stopped to consider that to be honest because whenever I'm in any of my editors It's like hey, we're just converting tabs to spaces for you. And I'm like, alright cool. I I literally never paid attention I've seen the memes but yeah
Karl Murray (40:54.777)
That is a great thing. That is great for the memes, but not really an argument to have in 2024 going into 2025. Just use a use a linter. Every language now has a linter of some sort.
Jayson L. (41:06.944)
Yeah, I I don't think I've ever been in an editor where it used an actual tab though. So it's weird to me. Maybe I missed it or something like maybe I just was lucky. But I've never ran into a file, I think, that had actual tabs into spaces. So.
Karl Murray (41:27.865)
I think you only run into that kind of problem if you're dealing with a language that is white space. This is what term I'm looking for. I don't remember, but Python, for example, where if you mix the tabs into space, you're going to run into a world of hurt. most modern languages don't do it anyway, so who cares? Light or dark mode?
Steven Fox (41:47.916)
Mmm.
Steven Fox (41:55.872)
Right, right.
Jayson L. (41:59.221)
Mostly dark mode. think... I'm trying to think, like, do I? It's like some apps... Okay, so some apps I prefer to be light mode. But my editor's almost 100 % dark mode.
Karl Murray (42:03.361)
I like there's a case for switching the light. Here we go.
Karl Murray (42:16.739)
So the only time I ever switch to a light mode is if I'm editing something that's in light mode. So I do a lot of like switching back and forth between light and dark because I'm doing like front end stuff and it's like, hey, what does this look like if I'm using light? And then I'll switch my editor to light so I don't like go with that jarring experience of like, hey, my screen is dark and I switch back to the browser and it's not bright. I'd rather it be universally bright and universally dark.
Jayson L. (42:45.674)
Yeah, it's interesting that you mentioned front end. So for both of you, what is your preferred front end stack? I kind of am interested because we're on the other side of building a chat feature in Vue, and I've kind of ran into the issues that I have with that framework's reactivity, and it's been biting us for a little bit. And it's a thing I thought I would never run into.
Steven Fox (42:45.791)
Yeah, yeah, that makes sense.
Jayson L. (43:12.14)
So I'm kind of curious what you guys, what you're using. Are you React people or?
Karl Murray (43:17.165)
The interviewee interviews the interviewers. So I am built and tall. So view inertia tailwind and Laravel and obviously tall. So tailwind, alpine, Laravel, LabWire.
Steven Fox (43:20.748)
too. This is this is great. I love this.
Steven Fox (43:40.076)
I'm kind of the same, but it depends a lot on the specific needs. so I, yeah, like present day, if I'm doing something that's not extremely front end interactive, I will reach for tall. I actually really like the way of doing things with LiveWire. It's really, really, really fast.
Karl Murray (43:59.565)
I'm gonna throw a wrench in that. I don't really think that you have to have you in 2025.
I know hot take, but most of what you want to do is available using Alpine in Livewire.
Steven Fox (44:19.188)
Yeah, I mean it is all just JavaScript at the end of the day. It's about how easy it is to get the JavaScript into the browser. But I...
Karl Murray (44:23.459)
Correct. Correct.
Karl Murray (44:27.577)
Correct. If you do not like writing JavaScript, tall is the best way to go because then you don't have to write JavaScript. 95 % of the time.
Steven Fox (44:39.388)
Yeah, yeah. There are some situations that I have done some pretty complicated things with Alpine, and I did kind of-
Karl Murray (44:47.501)
But you throw that in a component, you throw that in a component, and you never look at it again until it's time to debug it.
Steven Fox (44:51.848)
Well, as you're writing it, you're just kind of thinking like, OK, man, yeah, this is one of those times where some of the additional features that view or react provide would make this a little bit easier. But yeah, so I had done a decent amount of view stuff and I didn't really know React for quite a while, until about a maybe year ago or so.
Then I've been dabbling into it a little bit more. one of the few things that I find myself liking about it, and it's so incredibly simple, but it's getting out of the single file component convention and being able to have either a page or a kind of bigger component that's main feature set requires some
very coupled and connected child components. And then being able to have all of those in the same file, like nice locality of concern. Like you see this a lot when it's like, I have a component that is the list wrapper for whatever you actually want to put onto the screen. And then each one of the list items is also its own component. And so just this simplicity of having
the wrapper and each little item right there next to each other. They can share some functions that are in the same file and stuff like that. I don't know. I do like that part of React. But at the same time, I will 100 % admit I am much more of a back end guy these days than a front end. So I don't think I'm even qualified to answer that question for really front end heavy applications anymore.
Karl Murray (46:49.465)
Alright, I'm have to ask this question because people are gonna want to know what issue did you run into views reactivity that you never thought you'd run into?
Jayson L. (46:59.578)
So, okay, so we're talking about Tari, right? I guess we could start with the motivation for even moving to Tari was app size. So Electron is, we took a C Sharp app and an Objective-C app and we moved it over to Electron because I was like, we can't manage two different code bases. Also, I don't do Objective-C. I don't understand it.
Steven Fox (46:59.84)
Yeah, what's going on there?
Karl Murray (47:14.585)
Stupid huge.
Jayson L. (47:25.226)
It's ugly, it's weird to me. don't, I'm sorry for anybody who loves it. Like that, they get up in their day, get, I love, I get to write Objective-C today. I'm so happy. I don't, I'm so, like, I don't understand you. It is, it is awful. I'm like, I can't do this. I can't work on this. So I got, so me and my colleague, we were like, okay, let's go to Electron. And then we quickly ran into this IPC main. If you want to do AC, you have another window floating around somewhere or else your Apple.
like freeze your main thread and cause issues. Right? Like that's like the thing with electron apps. In addition to the size, is it's really hard to do async stuff if you have like a bigger load on the background. And we weren't really liking that. So we went to Tari. And Tari is like, I'm super comfortable with that.
I don't mind Rust. I picked up a couple books on Rust and we love it. And with this latest iteration of our app, we're like, well, now our executable for installing is only eight megabytes. And in addition to that, we can have our front end completely separate. Let's address some other pain points with this, which one of them was communication with this distributed workforce that we have. So let's build chat.
We decided to grab PubNub and start building chat in there. And that is where we started running into this issue of the reactivity system and the problem of rendering a ton of components on the screen at the same time. And we were using Discord as our North Star for where we want to be performance-wise. And it is not easy.
Steven Fox (49:08.0)
Hmm.
Jayson L. (49:16.856)
things that we just didn't think about that would cause re-renders. Because it's hard to go, OK, this is a piece of data that needs to be here, but I don't want to observe it. And we have Pinyas for the store of this thing. And then just depending on what we're doing, we were just causing excessive amounts of re-renders. Then we tried using like, and this is a big caveat with Tari.
for listeners. Make sure that you know how your app is going to behave in WebKit. You're going to need to understand when you deploy to Mac, you're going to be using that. So a lot of the tricks that you may use for a chat experience, like keeping the chat window stuck to the bottom when you insert a new component, is not super simple.
Steven Fox (49:52.608)
Hmm.
Jayson L. (50:06.904)
For your Chromium edge-based browsers, there's some tricks you can use. And it's a one-liner, and you're good. It is just a lot harder with Chromium. But what we ran into was excessive re-renders, because we're touching things we shouldn't be doing. A lot of stuff where the Vue libraries have behavior that is just simply not geared toward performance. We have a component library.
And I think I tweeted this, that I think it was a mistake to use a component library because it would mutate some style variable up in the DOM somewhere else. So because that was happening, would reflow the whole layout. And so when you were scrolling up and down, your memory usage would go from 120 megs to 700 on WebKit. And we just kept running into all these problems.
Steven Fox (51:00.672)
Mmm.
Jayson L. (51:04.5)
So one of the things I kept going back as I was looking at React, I'm like, man, like I just wish this would behave a little bit because like the React I have done, I found myself really wanting some of those things for this, which is like only thing that will cause a like under very specific re-render scenarios. Like if I update part of like an element or something like that with Vue, like redraw the whole tree, right?
There's some cases where I wanted something that would be reactive by itself, but not necessarily cause that behavior. And so we've had to go through this crazy optimization for the past month where we've just been digging up everything that we could think of to try and make this thing perform it. And we're finally there after a lot of pain and building our own custom scrolling component and all these other things that we had to go through.
Whereas like some of that stuff's just available in React because the ecosystem so rich Like you would just have that available in like a way that you'd be like, like I know that's already there or maybe you know Like everybody else should pick Shad CN and just move on with your life for all those components And then you kind of know it's like okay, it'll be performant and I don't have to worry about it It's just a lot of friction with that. So that that's kind of that was that was really the main one is like just
really tracking down those redraws. And then too, saw somebody on Twitter made something specifically for React called React Scan that will actually look for those re-renders for you as a plugin for your browser. And I was like, I need that. That would have been so helpful a while ago, because instead we had to go through the VU lifecycle, and we had to add the... And there is a hook for when it re-renders, right?
Steven Fox (52:47.11)
Huh!
Jayson L. (52:55.038)
We have to add that to every single component. So we ended up having to go do that and figure out where are we incurring costs that are making this CPU usage and this RAM usage happen. So it's been a learning experience. But this fleet's going good. So we're ramping up to our 2,500 users globally right now, which is awesome.
Steven Fox (53:21.196)
Dang. I got two questions there. One, how many components are you talking about on a page that are rendering?
Karl Murray (53:22.649)
That is awesome.
Jayson L. (53:30.69)
So you want me to start with that one?
Steven Fox (53:34.4)
Ballpark. Ballpark.
Jayson L. (53:36.236)
Well, OK, think about a chat app. You scroll up, you want to see it, right? Say you have 100 messages, you have at least 100 parent components storing those messages. If you hover over those, depending on how you're doing it, you also have 100 message options. Then if you think about the avatar, avatar would be a component, the actual text, which will take the markdown coming from your chat. Ours is built on PubNub, right? So they'll have a markdown version of that. Or if you want to send like,
There are other types you could do. I forget what it's called for like tip tap, but it can consume like JavaScript or JSON. looks like HTML and turn it back and forth. There's that. And also too, people want to scroll up and down. So if you look at Discord, right, you can go through hundreds of messages and everything is like great and it's still performant. But you're still at the end of the day, we're talking like 500 components. Like, unless you're very
careful about what you actually put there. And we didn't really pay attention to that when we first started. This issue kind of came about later. And then there's also issues with WebKit where, so you want to put it in a virtual scroller, right? That would make sense because you don't necessarily need to render stuff that you're not showing in the DOM. So you kind of want to take those off. But you need to do that in a performant way while still retaining their size. And.
It turns out if you do that in Safari or like WebKit, if you just keep adding images and removing images, it actually slowly leaks memory as well. So that's something else you have to keep in mind is how you're doing that. Maybe put it in like a canvas. all of that stuff like matters a lot. And it was kind of a crazy experiment to go through this. And then two, if you change chat channels,
Karl Murray (55:18.679)
That actually makes sense now that think about it.
Jayson L. (55:29.394)
you're taking all those old messages off the stack and putting on new ones too. So even if that channel was like performing after it loaded, you still have to be able to swap those out quickly. So there's a ton of challenges with that. And it's honestly been kind of a pain. that's the answer to your first question. Depending on how you're building it, there can be a lot
Steven Fox (55:53.792)
Interesting.
Karl Murray (55:54.041)
Well, thanks for that insight for my upcoming projects.
Steven Fox (55:57.59)
Yeah.
Jayson L. (56:00.504)
Yeah.
Steven Fox (56:00.94)
Do you know how does Discord or I mean, they're I'm guessing native, not actual like Tauri. But I don't know. Do you know how any apps are doing this that are effective? Do you just have to go native and then
Jayson L. (56:12.488)
I don't
Steven Fox (56:20.694)
solve a problem that way or what?
Jayson L. (56:22.304)
Well Discord is React, so they're just clever and that's kind what we had to do. had to be clever. simple things like an emoji panel, you have to use like a sprite sheet and you have to use one. So you're gonna want to move around the same one and like another layer. That's what we ended up doing was any hovering pop-up anywhere. It's just one. And we had to manually position it because we had
Steven Fox (56:25.087)
Okay.
Steven Fox (56:43.252)
man.
And then.
Jayson L. (56:48.46)
TipTap doing it at first and then turns out that just keeps adding TipTaps to the DOM forever. like not TipTap, like Tippy I think it was. So we had to do custom for all of that stuff. it's good now. But I do wish that like they in like the licenses area for Discord, they list all the stuff that they use.
Steven Fox (56:53.962)
Mm-hmm.
Jayson L. (57:14.07)
And so we could have just gone and looked at that from the, you know, then if we had React, you could have looked for, you know, how they're doing it and been like, that is a good idea. Cause this is an internal tool. It's not like we're trying to, you know, ship this out to people. So yeah, it's, it's wild.
Steven Fox (57:14.55)
Gotcha.
Steven Fox (57:28.234)
Right. Well, that leads me to my second question, which is, did this actually have to get built? Why not just use something off the shelf?
Jayson L. (57:37.49)
So we, it's about like the expense of like bringing in those other things. So we have this, this desktop productivity app and this is where it's connected to. So the app has kind of two purposes. The first one is going to be that they're, you're required to like run it and it's a very light sort of like making sure that you're there.
Steven Fox (57:50.336)
Okay.
Jayson L. (58:01.842)
We're not doing anything heavy. If you look at all these other productivity apps that are out in the marketplace, they're basically spyware. We don't do that. And we also try to keep a very low footprint for resources. And if you look at like Slack or something like that, we're talking like at the scale of 2,500 people, like thousands of dollars of spend for something that is not
super, like, it's not something that they use all the time. It is a tool for like, it's just, it's not like a $10,000 problem per month, you know? Like, and that's these tools would end up being at that scale, it's very, very expensive. And so we're like, well, we already require them to run this tool that we built. So let's just add chat on top of it. And PubNub has a chat, like, library already.
Karl Murray (58:36.185)
It's not mission critical.
Jayson L. (58:59.222)
It's just when we're working with the channel sizes that we're in, with the amount of people that we're in, you have to take some alternative paths to kind of get to the same spot. There's this more like, you know, like best case scenario pitch. It's kind like when you're looking at a Hello World tutorial and you're like, this is great. You just run it and you're off to the races, just drop this in and everything's awesome. When you start doing things for 2000 people though, like all of that just breaks down and it doesn't, it doesn't really work.
Karl Murray (59:30.263)
Yeah, that's always a fun game to play.
Steven Fox (59:30.614)
Gotcha.
Gotcha. Out of curiosity, not, well, whatever. I'm just going to ask anyway. can get, have you seen, have you seen the new campfire thing that like once 37 signals has put out, which is like a pay once self hosted, very trimmed down slack.
Jayson L. (59:39.906)
Yeah, go for it.
Jayson L. (59:50.174)
you
Jayson L. (59:55.592)
I did look at that actually. That was like one of the things I was actually gonna use first. But some of the reviews on Reddit were not great. And that's kind of what dissuaded me from doing it that way. Another thing too is like having our people have to run two apps was a hard sell. We need to be out of the way because they have... So the way that like our model works, right, is they're gonna be working for like a company in the US.
Steven Fox (01:00:06.24)
Okay.
Jayson L. (01:00:25.698)
This is just for us, organizationally, to be able to reach them, to communicate with them, to make them feel like part of this bigger ecosystem and this team. And so we don't want to be like, hey, in addition to you running Microsoft Teams for your client, also launch the app that we have so you can log in and start your shift. And then also, by the way, also launch this chat app. It doesn't really feel good for them.
Steven Fox (01:00:51.733)
Right.
Jayson L. (01:00:52.526)
And so not only that, we're saving a ton of money. So if we just compare baseline costs of just having this on PubNub ourselves, because one of the things I am responsible for will be in this director seat is the budget. We took our AWS costs, as we mentioned earlier, from like $5K down to like, we spend like a grand now on everything. To do this on PubNub direct with the way we set it up, we're talking like maybe $700 a month.
If we're going out for a whole year of costs, we're talking thousands and thousands just to have this rolled into an app that's more convenient for everybody. The challenges along the way are difficult, but it's worth it. And for anybody who's going to build their own, definitely listen to the concerns I brought up earlier. You will save yourself a ton of time.
Steven Fox (01:01:33.355)
Mm-hmm.
Steven Fox (01:01:48.704)
Yeah
Steven Fox (01:01:52.204)
Cool. OK. Nice. I want to say they were making Campfire open source. It's not open contribution, but it's source open. I'd be kind of curious to see how they were maybe handling some of the front end stuff. Yeah. Cool. And I actually want to say I had even heard of another kind of
Karl Murray (01:01:52.345)
For sure.
Steven Fox (01:02:21.66)
slackish competitor recently that's open source and is it like Hooli or something?
Karl Murray (01:02:26.605)
Yeah,
Karl Murray (01:02:30.915)
Hooli? No, no, no, stay away from that.
Steven Fox (01:02:34.294)
Why? What's up with that? And for me.
Karl Murray (01:02:36.854)
That's the Google in Silicon Valley.
Steven Fox (01:02:42.337)
Huh?
Karl Murray (01:02:43.51)
of Silicon Valley.
Steven Fox (01:02:46.43)
Okay. Uh-huh.
Karl Murray (01:02:47.235)
the HBO show. They have a bad guy company and it's basically like their Google. It's called Hooli. H-O-O-L-I.
Steven Fox (01:02:56.436)
Okay.
Steven Fox (01:03:01.0)
Okay. What does that have to do with the real Hooli? Are you trying to make a joke here that I'm just not ringing with? Okay. Okay. I now understand. Okay. So for the real Hooli though, is it not good or not? Okay. I see. Yeah.
Jayson L. (01:03:02.99)
I'm not following at all.
Karl Murray (01:03:05.75)
Hahaha
Yes, that's exactly what's happening here.
Karl Murray (01:03:20.195)
Don't know how I would like to do it.
Steven Fox (01:03:27.124)
Okay, nevermind, just curious. I was mainly asking you, Jaysing, because was hoping you had researched some of these things that I'm also curious about, and so you could relay your information to me.
Karl Murray (01:03:32.941)
Matter most.
Jayson L. (01:03:36.374)
I, yeah, we looked at like all of them, including Mattermost. And we just kind of felt for our case. Also too, like, you know, I, like despite the challenges that we've ran into, like this was still all like built in like the last quarter. So, you know, despite all this friction and stuff like that, I think it's well worth to have it directly integrated in our app for, just for like,
Karl Murray (01:03:38.775)
Matter most is the one you're thinking of.
Jayson L. (01:04:06.314)
scale and return on our actual investment here into that desktop product. we did look at all of those other ones, and we're just like, eh. They didn't feel like a good fit.
Karl Murray (01:04:14.297)
I mean, you'd have to.
Steven Fox (01:04:21.174)
Sure. Yeah.
Karl Murray (01:04:22.637)
Well in to your point earlier, I mean you're you're saving thousands of dollars a month if you're paying 10 to grant a month in slack, it's going to be a pretty quick turnaround to get your your ROI back. For building that.
Steven Fox (01:04:36.48)
Right. Right. Totally.
Jayson L. (01:04:38.402)
Yeah, exactly.
Karl Murray (01:04:38.681)
Because 10 grand a month is 120,000 a year. That's insane. I mean, you could pay another debt for that.
Steven Fox (01:04:43.04)
Yeah. To be honest, Jason, just throwing this out there. This is really interesting to me. This isn't something that I hear about or come across frequently. And some of the stuff that you guys were just describing is a pretty cheeky way of handling some of it. That's really cool. Maybe if you guys really iron some of this out, it would make for an awesome
larycon talk. So you should consider wrapping this up and pitching that because I would personally be super interested to hear more about it.
Jayson L. (01:05:18.204)
I would love to...
I would love to get up on stage and yap about Tari. And I'm not like a super amazing Rust dev, but this was like, Tari was the thing that kicked this off because it checks all the boxes. So we're serving people in the Philippines. I can't ask them to download 200 megabyte packages. Like, you know, granted the internet since I've been at this company for 10 years now, right? I don't move around a lot. I immediately went from computer repair to like this place and,
Steven Fox (01:05:43.009)
Right.
Jayson L. (01:05:52.758)
started solving problems and now it's 10 years later and my problems just keep getting more complicated. But the sense like since I started here, like the internet infrastructure over there has improved drastically, but still we're so sensitive to it because this is not only a product that they're required to run. We want it to be as out of the way as possible and as efficient as possible. And Tari is like the key to making that happen. The packages are small. They're focused.
performant and it's just been a pleasure to actually develop on. So once you kind of get into like the rust mindset about how to like do the things you need to do natively, or even if you don't, even if you're just shipping a binary site where they can open a web app in the binary, it doesn't matter. It's still a better pick, for like 99 % of use cases. So I would love to just get up there and yap about like,
Here's the challenges we ran into with it. Here's how we did it. Here's how we deployed it out to everybody. the team over there has done such a great job. And also their Discord support channel is always active. And there's a guy in there, Lucas. And he is always on top of stuff. If I don't know something, I'll just put it in there. I guarantee it.
no matter what day of the week it is, within a couple hours, he'll have an answer. He'll just be like, yeah, I answered this two weeks ago or two months ago and linked to the exact thread. And that guy's awesome. And I think he's part of the Crab Nebula main team now. So yeah.
Karl Murray (01:07:33.187)
Join Towery Discord. Okay.
Jayson L. (01:07:37.998)
Yeah, 100%. They're awesome over there. But yeah, if anybody's on, yeah.
Steven Fox (01:07:38.124)
Love it.
Karl Murray (01:07:43.417)
For those of you who are listening to this, for those of you who are listening to this audio only, I picked up a notebook and wrote. That's why I see it's long.
Jayson L. (01:07:53.332)
And two, if you're an electron and you're like, think we need to maybe move to this app in the future, again, just consider the point about the differences with WebKit. If you're comfortable kind of approaching both and tackling both, then it's a fantastic move. For us, it freed up a lot of application complexity because we were doing this crazy IPC second window thing. And two,
Steven Fox (01:07:55.148)
Very good.
Jayson L. (01:08:22.018)
just overhead for the machines that we're running on. The specs of computers over there are not the best. We have to be really respectful of our workers' resources, their system resources. And when we had our Electron app, sometimes it would get kind of heavy. Like it would go do some big cycle, right? So we have like a couple of features in there for tracking. Like we take an obfuscated
screenshots so we we take like a screenshot if they have that feature on and We jumble it a lot so we can't tell what it is. You can get a vague idea you can be like, okay that's obviously YouTube, but you can't tell what's going on and You know that process over on electron lane was just so heavy And like we can't be doing this on on these people's machines like this is not free We do it now this thing is like
Karl Murray (01:09:17.848)
So.
Jayson L. (01:09:19.366)
so insignificant, so quick about it, it's amazing.
Karl Murray (01:09:24.856)
So for people who don't have the context, Electron weighs like 120 megs just spinning up the app. And Tauri is like seven megs.
Steven Fox (01:09:36.298)
Yeah. I mean, is an electron basically running an instance of Chrome?
Karl Murray (01:09:37.571)
So.
Jayson L. (01:09:40.93)
Yeah, it's, yeah. It's Chromium.
Karl Murray (01:09:41.205)
It is essentially.
Steven Fox (01:09:43.222)
So and Chrome is not the most lightweight thing ever.
Jayson L. (01:09:49.358)
And people have made very beautiful apps. Despite the challenges of working in Electron, they've made some really wonderful apps. And I definitely don't want to be like, hey, your apps, you need to pick it up and move. But for people that are looking to kind of get through the pain or get through the transition a little earlier, because I really do believe Tari will be the future for all of these.
Especially because they have like a mobile stack now that they're working on and like that's like, I think it's production ready. I really think this is going to be at the forefront. I haven't played with the mobile at all because we ported our one app to two, but yeah, just fantastic product.
Karl Murray (01:10:21.281)
Yeah, as of 2.0.
Karl Murray (01:10:33.337)
So I'm really excited to have had Jason on the show because I was talking to my boss Nick yesterday and we were talking about like things that we going forward with mobile like we wanted to have a couple of different options and I actually pitched going with tower 2.0 and it's awesome to have Jason's experience coming on the show and then I know Nick listens to the show.
probably while he's trying to go sleep at night, but whatever. So him being able to hear somebody else's experience in working with Tauri and how nice of an experience it's been is always a win. But as somebody who's getting excited about getting into mobile and desktop native-like experiences, I'm excited to that it's not the end of the world of an experience.
Jayson L. (01:11:29.046)
Yeah, it's pretty awesome. And I've done only a little bit of mobile. I've played and tinkered with React Native, and it's just not like for me at all. I couldn't really, it was Expo. So I'm really hoping that like from like the development side of things that they nail it. Because I know they definitely have the talent to do so. And then hopefully with that, like I'll be able to ship this same app.
to phones, because that's kind of like the next frontier, right? We have chat. We have this desktop app that's running that has these mobile connections. So it would be nice to start that as maybe like a 2026 sort of thing, where we can then connect to these devices and people can chat with their teams and stuff like that at mod using their actual phone. So hoping that's in the future.
Karl Murray (01:12:27.705)
That's awesome. Alright, well I'm going go ahead and start wrapping this up because we're out over an hour. But there is a couple of rapid fire questions we like asking just to kind of. See where you're at. Who you are? What do do outside of writing code?
Jayson L. (01:12:44.826)
I am addicted to survival games. I'm a huge Project Zomboid, Rimworld, Kenshi fan. I have hundreds of hours of doing that on Steam. My wife says, you're always working so hard and your job sounds really stressful. And then the way that you unwind is by playing the most stressful game I've ever seen. And yeah, that's kind how it goes. Yeah.
Steven Fox (01:12:49.694)
you
Karl Murray (01:13:14.083)
So I made the mistake of getting my wife into seven days to die. And now she just looks forward to blood moon. So I'm like, what is wrong with you? For those of you who don't know.
Steven Fox (01:13:14.378)
Nice.
Jayson L. (01:13:24.14)
I'm surprised they actually got that released.
Karl Murray (01:13:28.569)
I'm surprised that's crazy. For those of you who don't know that it's been an alpha for like 12 years. Quite literally. They just released it this year. But the premise of the game is that you wake up, you have no resources, you have, you know, a pair of cloth pants. That's it. And your goal is to build a base because every seven days you're going to have a blood moon, which is a
Bunch of zombies coming at you. And if you don't have a place to hold up, you're going to die. A lot.
Jayson L. (01:14:04.876)
You should get your wife to play Zomboid. Just tell her it's like a spicy version of The Sims. Because it kind of is, like in a way. It's the same isometric. You can build a house. You can decorate your house. It's a lot of fun. It just has a few things to consider.
Karl Murray (01:14:22.219)
I was watching Let's Game It Out. I was watching Josh from Let's Game It Out play that game and he was trying to go out of his way to find like the worst way to play the game. And so that's a fun game to watch if you ever get bored, just go to YouTube and type in Let's Game It Out Project Zomboid and watch him try to beat the game in the worst way possible.
Steven Fox (01:14:22.774)
few things to consider.
Jayson L. (01:14:43.441)
I Aaron from Game Grumps also gave it a try and he was so upset but also you could tell he was kind of interested and so I was hoping he'd come back and revisit it. He hasn't so far but I'm still holding out hope.
Karl Murray (01:15:00.481)
Or sure. All right. Do you have any final tips for people who may be getting into coding?
Jayson L. (01:15:08.77)
would say the, big thing for anything in tech right now is a lot more resources than when I started, right? I started just breaking my computer. That's how I did my thing. You don't have to do that. You can skip all that. have Jeffrey way with Lara casts. you have all these courses, these amazing like instructors. I like Aaron Francis has like a couple of courses now too. They.
are just good at teaching. I would say start there. And that's why I like the Laravel community in general, is just following the community, you get to see all these cool things that are happening. People are tweeting about what they're working on. You have just these projects kind of surfacing. You courses surfacing all the time that have like a ton of amazing information. There's also books about going to production, like Battle Ready Laravel. All of these things are amazing.
and stuff that I wish I had or at least maybe known about sooner when I started because like again to speak back to that friction when I first started PHP in general I was like how does this work nobody explained this to me all that stuff so available now like your fingertips that I would just lean into it get a larcast subscription for Christmas and just go just go in there
Karl Murray (01:16:29.977)
Black Friday deal. It's 50 % off right now. I'm not being paid to say that but Jeffrey
Jayson L. (01:16:33.57)
That's awesome, that's perfect.
Right, maybe, okay, maybe he'll have to sponsor the podcast now, right?
Karl Murray (01:16:41.121)
I was gonna say, Jeffrey, get your people to call my people. My people's Steven. Just call Steven.
Jayson L. (01:16:46.446)
Yeah, think that's how I found Laravel too. I was looking for an alternative because I was like, I don't like this, this feels wrong. And I kind of stumbled upon Laravel after kind of working my way through like a symphony and like, what was it called? Cake PHP or something like that. Yeah, that, yeah, we won't have to talk about that, but super happy with just the caliber of what they're doing and the tools built into it.
Steven Fox (01:17:01.643)
Hmm.
Karl Murray (01:17:01.927)
God.
Jayson L. (01:17:15.126)
Like, I gotta say, even if you're not doing Laravel, there's a lot out there just surfacing from the Laravel community that is just amazing. Everybody's doing this awesome stuff. And then you have me doing a little bit of everything.
Karl Murray (01:17:30.969)
Okay, now I have one final question. What content creator do you just like, the second they post something, you hop on and you've got to see it right away. I know you've got one.
Jayson L. (01:17:45.81)
you know, I am huge on Digital Foundry. That's not like a specific person, as far as content creation. And that's not really tech. It's sort of tech related. but I'm really into like Digital Foundry's work. I, I just like the way I always watch their, their podcasts and also skill up. also like really like his stuff. So not necessarily, coding, but coding adjacent.
that that's really, you know, I don't watch too many people who do coding, on, on YouTube in particular, but I am subscribed to like Aaron Francis's channel. Like he, does post some stuff on YouTube sometimes, which is awesome, but yeah.
Karl Murray (01:18:31.469)
He is super quick to like some new technology comes out and it seems like an hour later he's got a YouTube video up on it and you're like, what the heck? How is that physically possible?
Jayson L. (01:18:39.608)
He, yeah, he's really something else. And it's cool, I'm just like this random person who knows about him. But yeah, if they're out there listening to this, the community at large who's kind of in the background definitely appreciates all the hard work he put in.
Steven Fox (01:18:47.552)
Josh Siri too.
Karl Murray (01:19:02.071)
Sure. All right. Well, I think that just about wraps this up for this week, Jason. It's been absolutely awesome to have you on the show. Thank you so much for sending me the email and asking to be on the show. For the record, you are the first and only person so far who has done that. I'm hoping to get a couple more because we don't want to get into episodes where it's just Carl and Stephen talking to each other.
Steven Fox (01:19:03.926)
Well said.
Steven Fox (01:19:31.188)
Nobody wants that.
Karl Murray (01:19:32.601)
Nobody wants it. So please. I mean, I guess we can have Jason close this out. What was your experience like being on the show? Yeah. What was your experience or what does it feel like being on the show? Just because I don't think I've ever asked that question to anybody that's been on the show.
Steven Fox (01:19:40.499)
putting him on the spot.
Jayson L. (01:19:50.964)
I like it. it's it, I mean, it works for me too. I feel like I kind of meandered a bit. And so like now I'm thinking about like the, poor Spotify listing where it tries to like, put like little timestamps on every single topic. They're all going to be just drastically different. So sorry that that's my bad. we kind of, everything gets kind of gets derailed, but yeah, I enjoyed being here. and, I love to be, on here again.
Karl Murray (01:20:07.81)
Hahaha
Jayson L. (01:20:19.378)
Maybe if it's not in this format, maybe just a folk maybe a specific focus show about maybe tari or another piece of tech that I've used That would be amazing. But yeah, it's been it's been great talking to you and thanks for having me
Karl Murray (01:20:34.519)
Absolutely. Thank you so much. I'll see you guys later. Bye.
Steven Fox (01:20:35.862)
Thank you.
Thanks, Jason. See you guys.
Jayson L. (01:20:39.992)
Yep, Okay.
Karl Murray (01:20:40.217)
All right, Jason, stay on for just a few minutes.