Jason McCreary (Jmac) - Laravel Shift & growing a side hustle to full time

Jason McCreary joins the show to talk about how Laravel Shift works, and how Jason thinks about his business. Shift started as a side project to help developers update their Laravel applications, and has grown to provide his full time income. In particular, the pricing model and features available (Shifts, Bench, etc) are very interesting!

# JMac

**Chris:** All right. We are recording with Jason McCreary and I, I guess I pronounced that. Right. So that sound good. It's good. Okay, cool. I actually don't think I've ever said it out loud to myself, except for, in my head before.

**Jason:** Yeah. Some, some people do Jay Mac. I mean, at the end of the day, it doesn't matter to me.

I mean, I had that nickname for such a long time. I respond to it, but of course I respond to my real name as well. It's funny though, every now and then some people don't put the two together. I don't know. Maybe I feel like I was listening to another podcast and they kind of like referenced shift and then somebody behind the podcasts was like, yeah, Jay Mac.

And the other guy was like, Jason McCreary. And I was like, I was kind of laughing. I was like, oh

**Chris:** no, that's the same person. That's great. I had the nickname of Fido growing up for decades. , stilled trails me. If I ever go back home, it's still. Nice, but I don't go to tele people that really

Connecticut I'm grew up in near Waterbury, Connecticut. And now I'm in San Antonio, which is a big move, but six years ago. Yeah. Yeah. Where are you right now? I don't

**Jason:** remember either. I'm in Louisville, Kentucky. And then here, this is where I'm from now. I did live in New York, I guess, technically Hoboken, uh, for probably about three years.

And then I moved back.

**Chris:** Cool. I didn't know you were in Kentucky. I had no idea for some reason I pictured you in the east coast

**Jason:** somewhere. I was in New York for a while. Maybe, maybe at the very, very beginning of my layer bell career, so to speak

**Chris:** right on. Okay. So I'm going to do this first thing, which I, , always fail to do so.

, episode so far. So I'm talking to Jason McCreary, he's created level shift. Liberal shift is an application that helps you update your level applications. I guess every update is to the next major version, right? There's no kind of minor version updates.

**Jason:** No, not, yeah. I mean, I guess if you're getting weird with like semantic versioning, then, then yes, there were quote, unquote minor version updates for like the layer belt five series.

But Larry Bell officially adopted semantic versioning at six. So that's why we go 6, 7, 8, 9 now.

**Chris:** Okay, man, I have so many questions about how this works, but okay. So, , can you just really quickly talk about the maybe timeline history of it and then when you became full-time on it?

**Jason:** Yeah. Uh, so shift was launched on December 23rd, uh, 2015.

So this December will be seven years sober, closer to six years right now, but seven years I'll be, um, since I launched shift, it coincided with the Laravel 5.2 release, I believe. And it was right after I met Taylor at a PHP conference and I had given a talk on upgrading the major versions of Laravel at the time that was level four, two to level five.

Oh. And I remember after the talk, I was kind of like, Hey man, do you know any scripts that like, do this? Or have you built anything? Or like, you know, blah, blah, blah. And he was like, no, but I've used that. So like at the conference hackathon that night or whatever, I was like hacking away on these scripts to like show him and get his feedback on while we were all there at the conference.

**Chris:** Cool. So did you have eaten it really have the idea for the app ahead of time when you asked him those questions or did you kind of have that in the back of your.

**Jason:** Not really, the only idea I had of the script in general was the fact that, you know, I've, I've been running PHP for 20 years now. So I've been around the block when it comes to frameworks prior to Laravel.

So, you know, CodeIgniter of course, but then even before that, like cake PHP, early versions of symphony, like I've definitely tried things out. And I remember cake specifically, as well as working on like things like Magento, they came with scripts that would kind of help you patch or update the project.

It wouldn't do everything, but like, it was just kind of a nod to like, here's this thing you can run that kind of helps you stay up to date. And that's, that's kinda what prompted the question with Taylor was just that I had seen it in other frameworks and, and packages or libraries inside of, of, uh, the PHB community.

So I was just curious if you had anything like that. Cause I was, I was super new to level like. I was freelancing at the time for some web agencies around town, they had been using Laravel and they were all on four two. And I just thought, oh, if I had these scripts, like, you know, I could like, you know, multiply my capacity by just running these tools.

Right.

**Chris:** Neat. Yeah, for sure. Okay. So I've always wondered how shift works. Like, is it like a new set of scripts for every major version or is there kind of a lot of manual creation of, of that kind of stuff or,

**Jason:** you know, again, shift being six years old now it's evolved and matured, I guess you could say over time.

So I would say until about level five for each thing was its own individual script. Like its own individual PHPs. And it was, it was very PHP scripty. Like it was not object oriented. It was a bunch of functions and like a helper file. It, it called out the shell commands through Zack and all sorts of stuff.

Yes. Very, very beautiful. So once I realized it was going to keep going, you know, with five, five, and definitely once I went full time on it, I kind of turned that into a little bit more of an object oriented engine type pipe and filter, , sort of pattern that made it a lot easier to build new shifts because you could start leveraging.

If you think of something like carbon, it's kind of like this, you could argue some might say and call it a God class. Like it's just got everything in this class, right? Like carbon yesterday and now, and the format or, and all this stuff. It's all in one. Class, the shift has a very similar thing. I took all those crazy functions that I had and put them in what is a facade effectively for shift.

And so I can call things like shift, , find files, uh, shift, determined, namespace shift, you know, get file contents, all these things that I can mock and make it a little easier to test because it's a facade just like you using our valve. So it really took shape probably at five, five. And from there, the base structure of every shift uses that kind of task engine, pipe filter, kind of, , pattern.

**Chris:** Cool. All right. So for, so for things like you have to update composer, dependencies, , , can you reuse that between versions or does it have to, do you have to tweak it each time to say like, all right now it's version, you know, level nine and level nine has this specific version of like the collision package or.

**Jason:** Yeah, there's actually a public repo out there that I maintain. , it's under shifts GitHub, uh, but basically it's like a package registry and it kind of has the versions that shift, , uses for those types of things. It gets automated. Of course it gets automatically updated, but like, , for the most part, that registry is just kind of this internal thing I track.

So the code can stay dynamic, but it'll, it'll ask that registry like, Hey, what are the dependencies for nine dot X? And that little package will give it back. All right.

**Chris:** So you found ways to automate stuff. So it's not so much manual work between each year. Cause I got a mix, right? I gotta imagine there's some manual work between each major version, depending on, you know, what's

**Jason:** changed.

We definitely create kind of the framework for the, the major version. So like level nine of course gets its own. Task classes. So it has a class called dependencies that will do all the updates, but that code inside of there is probably 90% copied from the layer of LH shift, which is 90% copied from the lower belts, seven shifts.

So they look very similar and there are some opportunities where we use things like traits to, to share that work. But for the most part, I'm not against copy pasting because I've found over the years, just like how it started, there will be variations between the code. So it's, it's just easier to do that than to try to over architect like this perfectly dynamic, every version

**Chris:** logic, you know?

Yeah. I couldn't imagine that being an easy thing to do or even possible.

**Jason:** Yeah. I just, I just copy paste the class. It's. Cool.

**Chris:** That's awesome. , okay, so you and Jesse out, this is Jesse kind of like a co-founder or what's that like

**Jason:** I brought Jess on, , probably I wanna say like 2019 maybe may, maybe even early 2019.

And at first it was kind of just a contract thing. Like, Hey, I got this extra work, like you're, you know, excited about Laravel really hungry. Like she had reached out to me when I launched base code about like the audio version of the book. Like I made like something where I kind of read the book and of course it wasn't released with the early access.

So she was like one of the first people that emailed me and was like, Hey, where's the audio version. Right. And we just kinda got to chatting and she had some questions about shift and, and yeah. So I just started contracting her. And then I think either 20, 19 or 2021. I had already been full-time on shift for about a year at that point.

And I could forecast its revenue a little bit better. Like I could see that it was still growing and I felt comfortable with it supporting me. Then I kind of talked to her about like a monthly retainer. So she's basically on a monthly retainer.

**Chris:** That's awesome. Was, it seems like you both combined are doing a lot of really good work for that.

I mean, I mean, you do some work in public stuff, right. With, , with your podcasts and there's some screencasts or, streams, I should say.

**Jason:** Yeah. I try to do some live streams. Those are honestly a little more for me with Izzy now. Like it's a good way for me to just focus for an hour and kind of force myself to get back into it by kind of turning the camera on and doing it live.

You know, it might be something I've thought about in my head ahead of time, but. It's nice to just kind of have the code, you know, close the door, turn on the camera and just, and just kind of jump in and see how far I get. Cause that might be the only hour I can focus during the day, you know,

**Chris:** for sure, man, I miss, , having a multi-story house or even basements because I moved to Texas like six years ago.

There's no basements anywhere here. And the house we got is one story. So like I can't get away. The kids. So everything that has to do with recording is like carefully timed out or risky

**Jason:** I'm in the I'm in the basement. Uh, but like his he's like room is like diagonal there. So I can't be too loud. But, but yeah, no, Jess . Actually did, , partner.

We did partner on, , the work bench, so it has a revenue share of profits. So that's, that's actually like a kind of a true partnership is that one specific piece of shift the desktop app, because I'm just not that I never really kept up with front-end tech. So I really leveraged her to build, to build like the view front end for that.

, and then I kind of focused on the backend node JS aspects of, of all that it's built with electron. So you can of course use web technologies for it. But I was a little more familiar with, with node and building applications from my iOS work years ago, but like again, knew nothing of views, so she helped, you know, with that.

**Chris:** Cool. Okay. So what is workbench? Because I have seen it, but I've not dug into figuring out like what exactly it is. Yeah.

**Jason:** I kind of, that's something I realized didn't want to focus more on this year. I kind of realized that. We built so much in 2020 with kind of like the COVID shutdown, you know, , that I realized I've done kind of a poor job of, of talking about all the services, you know, shift has now.

So everybody knows like the upgrade shifts, but there, there are other shifts that can do things like modernize your code base or generate tests or generate CGI. And like, then we kind of took all those tasks again with this new kind of object model of these tasks. We were in a place where after building all these shifts, there were some of these tasks that people might want to run in isolation.

So like, you might want to run the dependency. That we have in level nine for a package, you know, you might just want to run it generally after six months of a release. Right. So we took all those and we put them in the work bench in at first it was just the cloud thing. And you can think of it much like a build your own shift.

Like it has about 60 different tasks. You can throw them together. It has things like adopting, you know, converting switch to match, , adopting latest level conventions, like anonymous migrations, or maybe removing the down method from migrations. It has like formatting tools beyond what a format or would do.

So things like, um, let's say you want to adopt snake case for all your tests. Like we have something for, for that, right? Like that wouldn't necessarily be something an IDE would do. So we're kind of filling that gap of like things that we've written plus things that we want, that aren't really out there.

And the workbenches are meeting. To offer that. So it's kind of like a standalone shift. That's very custom to how you build that. And it got enough traction where we thought let's make this closer to the developer, like the experience of going out and logging in and, you know, issuing a PR might, might be too much friction there.

So we thought, okay, well, if we could put it on your desktop, like that might just be something that you have in the background when you're, when you're kind of doing like a refactor Friday, so to speak, and you can just sit there and click these tasks and you can figure out how you want to commit them and which pieces you want to use.

Like, we're just going to run it like really close to the metal, so to speak.

**Chris:** Okay. That makes sense. So we'll update like a major version at all, or is it just the task lists do specific.

**Jason:** Right now it's just the tasks. So there probably, I think there's like 63 of them now we're actually, during March and April, we kind of committed ourselves to focusing on those now that the level nine release is down.

So we've just added like five more in the last few days. So there's definitely over 60 tasks currently. You can't run a upgrade, a traditional shift from it, but that's something I want to build before Laravel about 10.

**Chris:** Okay. So

**Jason:** I guess, because I just, again, I think, I think having that experience close to the developer and where they are already writing code, you know, in their ID or whatever, like on their local machine, like, again, it just gets rid of those few extra frictional steps of like going in and signing into GitHub.

You know, some people don't want to share permission. Some people have organizations where they then have to request certain levels of access from the organization. Like it's just get rid of that friction.

**Chris:** Okay. So that is an electronic app runs locally. It doesn't do commits, but it'll change your code for you.

And then you can decide how to do that yourself, which sounds up developers alley.

**Jason:** Yeah. And performs all the automation that you want it to perform. Um, and then from there on, you're kind of in control. So some people like that, some people love the PRS, , from shift. So, you know, we're hoping to kind of be out that side of it too, where maybe there's an option where it auto, you know, makes a PR for you or something

**Chris:** I'm in the camp of liking the PRS, the PRS and shift I find are extremely nice, like a great explanation of what's happened and like why the change has been made.

And they're like, oh yeah, you might want to check out this to like, you know, do the, that last 1% that might need to be done by hand.

**Jason:** Th the funny thing is like, I I've learned over the years almost immediately of launching shift that that's the thing that people have. Like even, I always thought when, like I couldn't automate something, it was kind of a failure that I had to leave a compliment or leave a comment.

But so many people have said like, they, they loved those comments. Like almost, almost to the point where they don't even care if it automates it or not, they kind of just like that custom upgrade guide that they get.

**Chris:** Yeah, this is, this is a super interesting psychological thing. Cause like it's the part that makes the person feel maybe empowered or like something like is unexpected and really nice.

Like it still is actually giving you work. Like it's giving you a task to do sometimes, but it's like either you feel really good about it. Like, oh, I know exactly what I need to do. This makes sense. Um, it's written clearly, so it's not like vague, you know, it's like, it's nice. I think that that touches on something interesting.

**Jason:** Yeah, it is. It is funny. Cause yeah, like I said, I look at it like a failure. Cause my goal is you, you send me the feedback email and says, worked a hundred percent, all that hit deploy. And like, but a lot of the feedback emails are like, oh, it's awesome. Love, love the comments had to change these three or four things, but it was great.

Right. And I'm like, what were those three or four

**Chris:** things,

right. Yeah. Interesting. I'm trying to think if I ran into stuff that I had to change outside of the comments, I can't really remember any, the other thing is I don't, I don't shift enough or like the Laurece really cycles while every one year. And maybe it's every two years now.

**Jason:** Yeah. That was something I was really concerned about.

Cause there actually wasn't a release in 2021 because they kind of kept pushing it back. Not only to move to the annual release cycle now, but then they moved it back even farther to align with symphony six. So they are, they are supposed to be at the moment anyway, , yearly. So every year, probably in February, you know, with layer con winter

edition.

**Chris:** Okay, good. Cause I realize, I just said, wait, is it every two years then I'm like, oh, that sounds scary for a business perspective. But everyone you decide to see.

**Jason:** It definitely worried me last year. And I, you know, I was joking, you know, Taylor and I have this ongoing joke of like the shift killer. And I was like, I was like, you actually built, you didn't even have to build the shift killer.

You actually made the shift killer by moving the release out. So we were kind of teasing. He was like, oh, you know, charge double or whatever. So it's like, okay. I mean, oh, I'm sure it's way more. That's, that's a whole different podcast, but it's one of those things where like, it's funny that, um, you know, I guess it turned out okay, is the long story short.

Like I was really worried when the release came back, but now that label nine released, uh, you know, , I'm definitely on track to still keep the growth that I've had the last few years. So that's, that's very, very

**Chris:** exciting. That's good. Okay. There's not enough episodes released of this podcast yet for you to know, but Laravel's, , kind of having a downward price pressure on the stuff inside of the layer of all community is a, is a recurring theme so far in the episodes that.

, specifically tailor prices stuff, very reasonably. , and as a result, I think a lot of stuff in Laravel community tends to be priced more reasonably. You don't have, you don't see like the higher kind of inflated prices that you might see elsewhere. , so that, that seems in language shift. That's also why like chipper, CIA has been lower in price, like kind of below 50 bucks a month.

, although I have plans to change that, then I also, like, I think what makes sense for shift to like, kind of do the lower tiers, although I think like even porridge and stuff like that as grown in price over the over time. And I think it makes sense, like for the business ecosystem side of layer of, Elta also kind of like go in to go up the cost.

The quality of everything is been so high. I like, it seems like it could and should, and I bet people are willing to pay for it.

**Jason:** I've I've never really meant a. Upper limit for shift yet. I mean, I have increased the prices several times over the years. , and some of it's like an obvious increase, like for unsupported versions of Laravel, for example, that's kind of where the pricing tier, , hits now, but it's one of those things where I definitely could charge more and sure I'd lose a little bit of the customer base, but I kind of like keeping it affordable.

Cause like somewhere in my mind that means more people are using it and more people are talking about it. And so far that's proven well, and on top of which, like, I definitely want to live comfortably, but I don't necessarily consider myself greedy. You know, greed's not the right word, but just materialistic where it's like the money money is everything to me, I guess

**Chris:** the point.

Yeah. My cost is not interesting.

**Jason:** Yeah, exactly. Like I I'd rather have growth and have people be like interested in happy with the product.

**Chris:** . I like your pricing model too. I really liked the idea that older. Versions are more expensive to update the newer ones that kind of keeps people like, I don't know.

I don't know how much, like, like the price point is still low enough where like, if I had an older layer of L I would just be like, yeah, buy this one, buy this one, buy this one. But I dunno if I'm less pressed sensitive to that, on that stuff than other people.

**Jason:** It is there for motivation to like stay current.

But yeah, I don't, I don't think it's going to keep somebody from bumping up in LTS version. Like if that matters to them as an enterprise or for a team or whatever, but yeah, I haven't really seen any pushback on the pricing. Like there's, there's still people in there buying the four to shift and going all the way up to nine.

So like, it's, it's not like people are deterred at all from paying for each version. So that's kind of where I want to be, rather than someone saying, oh, I upgraded manually to six and then I'm going to start running shifts. Like I'd rather you just get in the ecosystem and, and do it, you know?

**Chris:** Yeah. Yeah.

Man level four. Imagine being unfold. I'm sure there's still a lot

**Jason:** of apps, man. People underestimate that stuff, but there, I just upgraded a 42 at the other day with the, with the human shift, to the consulting side of it. And, , honestly, anytime a new version comes out, I get four or five of those that come out of the woodwork.

Oh, we're finally going to do it now. No.

**Chris:** How, , have you seen, okay, so I think, did you say it in these chat rooms where it's like, oh, there should be, or the be good? Mark it for like a human shift type thing.

**Jason:** Yeah. I tweeted that, I think last week when I was kind of finishing up that, that season of, of doing the consultant.

Cause again, it happens a bunch, there's a spike in it when there is a release. And um, so coming off February, really for like the last month, up until about a week ago, I mean, I was doing two or three of these a week. It was really taking up all my time. Right. And that doesn't scale obviously. Right.

Because it's just my time, like it's not like shift where you're buying and I built it. It's done. Like I buy it when I sleep, but don't matter to me. But the consulting side, I like doing it because it lets me run shift. But at the same time, I really don't advertise it a whole lot because again, I just don't have the time to do many.

Right. And so there could, there could totally be a market like shift as a middleman market. Right. If you, if you think about it, I I'm just in the middle. Like I don't build their Vel. I don't, I don't schedule the upgrades, but I'm here to kind of help you upgrade your application. It's it's just a total market.

That's created sub market, like inside of Laravel. Right. The funny thing is now that shift is big enough and there's so many versions of layer of L now that like, there could even be a sub market under shift of like, okay, I know how to use shift, like really awesome. Like I've watched some of J max live streams, like I'm a pro at it.

And like, I'm going to use that to again, increase my capacity to, you know, go and be a layer belt consultant for old applications. Right. I'm going to put that in my toolkit and kind of helped me look good. Right?

**Chris:** Yeah. I think there's a lot, probably a lot of opportunity there. And, um, I forget maybe I was talking to Aaron Francis when you actually, after you tweeted that, I think I was talking to him about it.

And he was like, like on the rail side of things, people charge a lot of money for. Updating old apps for, as a consultant, ,

**Jason:** engagement. It was funny about, I think it was pre COVID and right before we knew we were going to have Izzy, but actually reached out to DHH and I was like, Hey, what do you feel rails would be receptive of something like shift here's, here's a link to this thing I've built from there, Vel.

And I'm really thinking of tackling another category. And, you know, the rails is the obvious choice for another kind of full stack web framework that has versions that, you know, could be automated. And I remember reaching out to some rails consultants and just kind of understanding, you know, what they did for upgrading what they charged, what was there.

And yeah, I mean, totally agree is the point like. It's amazing. Like some of these people were charging like three or $400 an hour and, you know, 20 hours to upgrade. So Hey, keep charging that. But what if, what if you start trying out rail shift in the background?

**Chris:** Yeah. I mean, save them time, especially as like the base and then like the weird customization that their client has done.

Like, how does that work out for your, uh, have you run into like weird customizations that shift could never possibly handle, or then you have to like do a bunch of work to, to get the app running or are people kind of receptive to you getting like 75, 80% of the way. And they have to take care of the rest.

**Jason:** Most people are pretty receptive, both the fact that they could they're handed back an application that like composer install, you know, runs and artists and runs and they can take it from there. Cause they know all the, they know all their crazy customizations. They know all their features that are important or, or maybe complex, or maybe it had some code that they weren't happy with.

Like they have that knowledge. So that it's really a good pairing because. Again, I handle all the things super efficiently related to the upgrade that felt really daunting to them that wasn't their skillset. I give them something back. That's running Laravel nine. Again, all the dependencies are compatible.

Maybe there's some updates there and I give them their own checklist and they now there's light at the end of the tunnel for them. Right. Like they now can see, oh, okay. We're, we're on the latest version out. Now I'm going to go do all the things I wanted to do. You know what the latest version of Arivale and I kind of take a back seat.

Neat.

**Chris:** Like I know that sparked a memory. I think the latest update I did was for a chipper CA I got it up to level seven, cause it was six and I still have to do eight and nine, but after seven I had extended some classes like package. That level uses. I just extended it. It's already there. So I don't, I don't even . Define it as a dependency.

, although technically, maybe I should, but I don't define it as a dependency, but I do use it, but then it changed its API. , Somewhat. So I had to go fix that and of course, shift couldn't have known that cause that's like some custom part . Of my application. , so I was wondering like, I dunno if you ran into that kind of stuff with the consulting too.

Cause that's like, that's like when I hit and it was not hard to fix, but it was like, you know, more stuff to do.

**Jason:** That's kind of the final frontier for shift. We we've really paved the road on all of the other categories and, and even to an extent, the category of package dependencies, but I think the next major hurdle and one that I may start doing for like core Laravel packages, like cashier, for example, is also either making a separate shift for those or starting to include that again with these longer release cycles.

Yeah. It's a little scary from a revenue perspective, but it's really cool from a development perspective because now. You know, 11 months to go build, you know, to go improve shift and make it even cooler for layer belt 10. So like, even though they might say these things are only maintenance releases and all the features are trickled out over the years.

Sure. But you're not necessarily adopting them. You know, you're not going and getting those every week. And again, if shift has new features that it can do, then there's still the appeal of going to use it. Like why not? Right. So I do wanna, I do want to tackle that to your point and may not get all the, all the way down to every package ever made, but maybe some of like, yeah, maybe some of the first party level ones, and maybe some of the really, really common ones from a sponsee or core dependencies, like dot and UNV, maybe we start to look at things like that too.

Well, even

**Chris:** the, even the first party ones are numerous. Right.

**Jason:** And we, we do for the most part, and that is something starting probably with . That shift does a lot better about it will at least bump your dependency. So like it'll, it'll update composer. So hopefully you can go ahead and run composer update.

Now it does warn you in the PR like, Hey, you might have to go, you know, look and see if there's any upgrade steps for these, but yeah.

**Chris:** Does it handle any stuff with a mix I've always done shift and I just left an X alone because I'm just scared to touch the no JS like dependency

**Jason:** stuff. I think with nix six, we started doing more there.

So it will, it will bump, excuse me. It will bump you to mix six and, , update like NPM to be correct and have all the right scripts for, for mix six.

**Chris:** Cool. And I see that there's also the tailwind, , shifts also, which is really cool. I actually need to do that myself.

**Jason:** Yeah. That was kind of the rails substitute the rails one way.

Once, once we found out we were pregnant at once, COVID hit, it was kind of one of those things where it's like, rails might be a bit daunting right now. We, Jess and I went for the tailwind shifts and stuff. Cool. I have to try it. I feel like there's more, there's more crossover, like kind of bringing it into the business side of things.

Like I felt like there was a lot more of a crossover market of course, between Laravel and tailwind. And then there would be for layer Velon rails. So they're not used a whole lot. I think there's still worthwhile, but, um, I don't know. We'll we'll see. I, I still need to kind of poke at them to maybe see if I can get on his podcast or something to, to talk about them.

Yeah.

**Chris:** That's a good idea. I was just looking at those right now. I need to do that. The Tailwind 3 one because I'm on Tailwind 2. And like, it's fine. But like, you know, the latest is better.

**Jason:** Exactly. Those are really good too, because they get back to the core of what shift was, which is really just a lot of search and replace, you know?

I mean, even Adam will say that on Twitter a lot, like, oh, here here's this reg X, I have to change all my colors, you know, like. Okay, like shift does that for you? That's what it's good at,

**Chris:** The other thing I've been curious about is the shift for Docker. And I don't know is that just like shift that it is packaged up into Docker container and then we can run it locally. Is that kind of like your enterprise plan where like, it's kind of like, on-premise

**Jason:** exactly, you know, right away we supported GitHub Bitbucket and get lab, and those are, of course the cloud based services.

Now there is, on-premise get hub. There is on premise get lab, of course, as an open source, , offering, , so immediately I was getting those questions. Oh, does this work for my, you know, self hosted GitLab? Does this work for our enterprise? And for about a year, the answer was no, you know, push it to a temporary repository, private, you know, on Bitbucket at the time, I think was the only one that supported free private repos.

So I was like, you know, push it the bit bucket, private run, shift, kill it, you know, you're good to go. And you know, that's something else we may stumble into. But ironically enough, I've found when working on shifts that not everybody really knew get that way. So it was one of those things where like, that was almost too many steps.

Again, going back to that friction, it was too much friction. So once I got familiar with Docker, I started to think, and I might even ping you about a few questions every now and then, but like, it was just like, well, I could just package this up in like a far and have it download to a. You know, base image and, and just let you run it locally, you know?

And, and when stocker desktop was on the Mac, I think around that time, it was like, yeah. Okay, I'm going to build these. So instead of like, trying to support this never-ending list of, of get hosts that, you know, may or may not have an API may or may not be open, maybe firewall protected here's Docker, just go run it.

It satisfies all use cases of, you know, connectivity issues, but also just privacy issues, like NDAs or paranoia, you know?

**Chris:** Right. So has he ever worried, like, is the code encrypted or anything in that, right?

**Jason:** No, it's really just in a PHAR , But the PHAR is individual to the one you want to run. So at this point, you'd have to buy what 35 shifts to have the whole code base.

And even then you wouldn't really have all of it. Right. So, I mean, you're going to, you're going to spend like $4,000 because the Docker shifts are slightly more for that privacy support premium that you're going to get. Like, so, you know, it's just, I don't know if somebody wanted to do it, like have at it, right.

It's not like, it's not like you're gonna launch that. I mean, you would get fried by the community. Like it's just not gonna look good. Yeah.

**Chris:** Especially this service, I feel like you built a good moat or out it like this, this isn't the type of thing where copycats could really combine and take it like a more kind of generic, I dunno, like email provider app.

**Jason:** Yeah. I mean, your best copycat really is just the biggest competitor we have or just people wanting to upgrade themselves because they look at it like a learning opportunity or they don't value their time or whatever. You want to look at it as like that's, that's the competitor. It's not, I don't think it's ever going to be someone else.

**Chris:** Well, that's really neat. Then it's grown to support you full-time and even, you know, provide for Jessie too. That's awesome.

**Jason:** Yeah. Yeah. I mean, it's, it's one of those things that, , it definitely was scary the first year, because I left a consulting position at Papa John's, which has, at the time they had a hub locally there, their business hub was here.

And that first year, like I made half of what I was making as a consultant through shift. So it was, it was a little scary, but it was still enough, you know, it was still fine. , it took about two years to really pass that salary. And I remember listening to like Justin Jackson a lot. And you know, at the time he was like sharing articles with people, like who looked at five years of being an entrepreneur and looked at five years of staying at their job and they would've come out ahead at their job, you know?

But I think over time I've realized that that's a narrow vision, especially now that I'm a parent. Like it's one of those things that, that doesn't factor in that maybe I'm only working 10 hours a week that week. And I get to, I get to spend time, you know, as daddy daycare, right. Like, or I can go woodworking, like while she's taking a nap or something, you know, or we can travel more before all of this.

So it was like one of those things that it's, it's a narrow look like again, it only looks at the money aspect and you know, that's important in the world we live in, but like, it's not the only thing that should matter.

**Chris:** That makes a lot of sense. It's kind of like, this is kind of the dream that's I think, I mean, that's at least what I tell myself I'm working towards, but right now I'm working like a job and then other stuff at the side as after the kids go to bed, ,

**Jason:** I remind myself every now and then that you're, that you're still at UserScape I listened to the first episode the other day when it was released, just kind of preparation and, , you know, I like listening to podcasts in the community, but, but yeah, it's a lot, I mean, when I was, when I was still working a day job and doing shift for about two years, it was one of those things where like, it was nice extra income at first.

Um, but I just never saw it being a full-time thing I re I really never did. So

**Chris:** cool. I'll just go to Joey. He keep hammering away. Stuff's going to

**Jason:** happen. Yeah. And kind of to the point of that first episode, like I think it's good to. Talk and share some of those. I've tried to do that more in the last year.

And now that I've felt like shift has kind of hit this recognizable level of like a million in revenue. Like it's one of those things where I think it's good to share this story that it's not overnight, you know, this is six years, this, this was, you know, two or three years as a side project. You know, this, this was, you know, struggling with price increases and scale and, you know, technical challenges too.

But, but really more business challenges of, of like, how do I market this? What do I price those that, , you know, do I move into other product categories like rails? You know, w when do these things happen? Should I have done those? Like, you know, just a lot of different questions that, that come into it. So it's, it's just not an overnight thing.

Like, I think shift is good evidence in lens towards the adage of like slow and steady wins the race kind of thing.

**Chris:** Do you think you'll try something like rails after maybe after the kids a little older,

**Jason:** not any more. It was kind of funny. I was watching the lyrical documentary the other day and I kind of put this on, on my avatar.

So here's kind of the inside story here, but I love that line where Taylor said like, you know, this is going to be like the Titanic. Like I'm going to be playing the violin all the way down. And I messaged them and I was like, dude, I love that. And so I changed my, my, , Twitter little, you know, pre pin or appended, the little avatar of, of a violin, because that's kind of where I am with shift.

Like it's definitely going to be my last kind of PHP Laravel career endeavor. I mean, I'm sure I'll always code in some regard, but you know, it's going to be more like my scheduling system for my woodworking shop. It won't be like rails shift, you know?

**Chris:** That reminds me, this is just, just remembered that you do.

I don't know if you did maybe past tense, like a bunch of stock options type trading stuff. Are you still doing that?

**Jason:** Yes. So that is the exit strategy for me. I think when Lenovo goes down to Taylor's point, I will go down playing the violin with him and, you know, I might make a shift that goes to whatever the next big thing is, but that's it.

I won't be, I won't be trading boats, you know, I won't be jumping ship on the Titanic to, to the other ship. Like, it's just going to, I'm going to go down with it. So, yeah, but the point, , to your question that, that's really what it is right now. I'm trying to take and save as much as I can from shift to.

Basically my retirement . Fund. Right. Um, you know, as, as a solo preneur, I don't have necessarily a 401k that's matched by a company. So all of that has to come from me. , now there are, you know, like, , self-employment plans and things that I do, but again, I'm not getting any extra money for retirement, right.

From anywhere,

**Chris:** no free money from the employer.

**Jason:** Yeah. Which, which, if you get that, you need to take advantage of that is kind of the sub point. But I I've, I've invested probably for as long as I've coded and it's one of those things that I've made all the mistakes at this point. So now that unfortunately now that I have, you know, I guess more money to invest, I'm, I'm a little better with it.

And, , so I'm hoping I'm hoping to grow. You know, the gains that I've made from shift, you know, in things like the stock market.

**Chris:** Yeah. So are you doing kind of more safer mutual fund stuff or are you kind of having some, they have like a, uh, some fund money I'm to do bigger bets or I guess more risky bets, not necessarily bigger.

**Jason:** I probably am more risky than I . Should be. , now, now that I, I guess I'm married and a family man, the wife has definitely taken an interest in that. And, , you know, once, once more index funds, once, once more, , stability. So some of the, some of the drawdowns during COVID and, you know, some of the political stuff.

And then of course now with, with things with a Ukraine, like she doesn't really like that pain. She doesn't like seeing the portfolio down, you know, 20%.

**Chris:** That makes sense. I dunno. I see opportunity there cause I'm not near retirement yet, but I also don't have a lot of free cash to dump into the stuff

**Jason:** right now.

Oh yeah. I mean, me too. I look at that and be like, okay, it goes, it goes another three or 4% lower and I'm putting everything in this, you know, but she's like, I want out and Hey, I know that that's actually like the bad . Choice after again, after all the years in it. But, uh, yeah. So I'm hoping that that is going to give me enough that maybe in 2, 3, 4, however many years, you know, shift starts to either be used less or maybe layer bell is in general, use less.

Um, you know, hopefully that will be built up enough where maybe it can compensate for that salary loss sort of like

**Chris:** cool. A little bit of the FIRE stuff, their right to, , start living off of, , what's the word I'm looking for? Not interest to live off of.

**Jason:** Yeah. Yeah. That's another thing. Dividend heavy portfolio lately.

And that's been really good because ironically in, in an inflationary market, um, those stocks actually become your growth stocks. So you might've once been in them for the dividend, but now everyone's running to them because they want to beat, you know, inflation. Interesting.

**Chris:** Okay. I didn't, I didn't put that piece together.

Okay, cool. I love personal finance stuff. That could be a whole another podcast.

**Jason:** Yeah. Well, telegram me anytime on, I love talking about it.

**Chris:** So I have my side business is, which is . Like a mix of, , screencasts stuff, right. Courses and whatever Chipper CI brings in. , none of it has replaced a salary yet, although some years, of course, as it could have, but I never quit, which has ended up being good because once I had kids, I had so much less time.

, I never made the transition to full-time. Courses and stuff, which, I mean, there's an argument made there's two years where it made more than my salary, where I should have maybe, but I didn't, I don't know if I regret that I don't really do that. I kind of, I kind of like, , UserScape a lot and that kind of thing, but kind of getting to with the finance side is that I've actually maybe three years ago started maxing out the 401k and you know, like that's not all matched from, from UserScape, but I've just maxed out the whole like 19,000 or 20,000 or whatever, because the income, even on the years, that's been bad for courses and stuff is, has made up for that loss of PR that loss of quote, unquote income from putting so much into the 401k.

So I really riding that boat as much as I can to like, just keep saving as much as I can. , some months that actually makes it feel a little tight, depending on how high the credit card bill is. But I also, I always know, it's just like money I'm saving. Cause I put money to like a non retirement account and stuff too.

So I, I know like I'm actually saving a bunch, so I could always like go back or do less if I need to, , is this really nice to have like kind of an asset on the side? That's like, even if it's not your full-time income, it's really nice to have something that's giving you the ability to save.

You know, if you're not the type of person, if you're the type of person who can control your spending. And like, I don't, I don't think we're especially good at budgeting or anything in my household, but . It's like, we can, I still save a lot, like

**Jason:** as much as I can, I'm super minimalist, if it, if we're going to break down the spending, , and hopefully, , you know, Ashley's not listening to this, but yeah, she, she definitely spends for us.

Um, I'm just a minimalist. I mean, as you can tell, I got the conference t-shirt on, you know, Hey, I'm wearing sweat pants. I mean, this is, this is probably the only thing I've bought in the last, you know, year, so. Right. But yeah. Anyway, it's, it's a. That's kind of one of the tricks, I guess you could say that I've, I've had, that's helped over the years is, you know, generally speaking in tech, you do get a good salary.

So I think if you can be prudent, you know, or, or a little frugal, , and really only spend on the things you want, like you, you can build a savings pretty quickly. I mean, not necessarily any more with family. Of course I get it. But in general, , that was always kind of step one.

**Chris:** Definitely. Yeah, definitely got to not spend all you make but it's aware.

, yeah, I also like how I used Wealthfront from a non-retirement stuff and, , that actually lets you take a loan out against it. And the interest rate was super low. I found, I just did this one the last year to help pay for some stuff and Shepard CA. And the interest is really low and you just pay it back.

And instead of money going into the account, increasing the amount of shares and stuff, you own funds you own, it just pays back the loan. And then once you've finished paying that back, then, you know, it start, you start buying the funds again, which is really handy. That's interesting

**Jason:** because I didn't sorry.

I was going to say that. That's interesting. Cause, cause again, I listened to episode one just, just the other day and , I didn't realize that you had bought, , Chipper. See, I get all the emails and I actually actually read them. , but it's one of those things where I must've missed that or maybe it wasn't, I don't really, we didn't really announce it or anything.

Okay. Yeah. I didn't know if it was totally clear or not, but it is now. So it's interesting to me, I guess, on, on the topic of finance, but, but bringing it into a little bit of like chipper and stuff, like it's interesting that I guess you bought out David or, or he wanted to be bought out. Like if it were me, I probably would have just been.

Silent partner, like maybe a little bit of a buyout, but like I probably would have kept, you know, to the point of that dividend, you know, I might've just said, Hey, I'll be a silent 20% owner and you just take the helm the rest of the way

**Chris:** that almost happens. Um, okay. And then David wanted to get out completely for whatever reason he decided to do that.

, you know, it was a long conversation. I'd brought it up to him a while ago because we had both not been working on it for so long. , I had asked him if he was . Interested in that . Because , I knew courses felt tough to me at the time. And like, you know, two kids and everything, and the amount of time would have actually recorded where it's quiet enough to do that is not as much.

, although then I made cloud casts anyway, but that's besides the point, but, um, yeah, so we'd had a conversation about it and said, yeah, that could probably work out. Um, and then nothing happened with it really. , I started making cloud casts. I actually had an idea in my mind, some you do cloud casts in and use that money to help pay for a potentially, you know, going forward with that plan.

Um, so that is actually ended up how it, how it worked out. , the timing was different. Like, I didn't, I didn't know if we were ever actually going to do the plan, but like David reached out and said, yeah, actually I want to get out of this basically. So, , we did that and now I own it. So that's, , that's been fun.

It's been fun because I got kind of renewed energy to, to work on it. And I've been pounding away on it ever since.

**Jason:** Yeah. I've been seen a lot more of those emails and like features come across and of course, on Twitter, um, you know, you talk about the Yamhill build a little while back.

**Chris:** Yeah, all sorts of stuff.

**Jason:** What's kind of like the, I'm sorry, I'm taking point here on a couple of glasses. That's great. So what, what, what did the like payback sorta speak timeline look at? Like, obviously you kind of did a lump sum, but like, did you kind of look and say, okay, well, if chipper keeps its current growth, I'll have this expense recovered in 18 months

**Chris:** or something like that.

It's actually something close to that. Yeah. Okay. , it wasn't, it wasn't too, too long. So I did a mix of money from, I took a small loan out from the start and stuff I had in Wealthfront because the terms are so good. And because it just reduces, you know, I actually want to have some cash around. I don't want to just like, get rid of all the cash.

, and then, but it was all lump sum to David after that. And then it w I forget exactly what it was. It was like 18, 20 months, something like that for a payback period. But if the MRR on it is, it's not super high, but it's in the thousands. , and I'm just trying to see if I can grow it. It's been there for so long because we stopped working on it for probably a year or something.

We didn't do much out of that, the maintenance and support. , but it was growing before that and then it had a plateau and then that it kept at that plateau. I didn't drop her. It wouldn't even went up a little bit. So like the turn is really low, which is nice. So now I'm just trying to put effort into it, to see if, see if I can get some results from that.

And it's like, early signs are decent, but I think the pricing needs a lot of work and, and I like a few extra features to go with that. So that's what I'm working on next. So the word, the features and building out and the ones I haven't talked about yet or a happening, and then there's going to be a pricing change.

So there'll be, I think, a lower price point. I mean, there's definitely gonna be a lower price point to make it easier to get started with it. And then you can increase with at various stages, , But the pricing stuff has hired those, like those, I have a bunch of decisions to make, , a lot of CIA applications now build bill you on like a credit system.

They don't, they don't just do an amount of money per build minute or loan get hub does that. But a lot of them have a credit system and you eat away at the credits. And if you choose a larger server, you, you know, it takes more credits per minute per build minute. Does that make sense? Yeah. Then like a smaller server.

So like, and like on the smallest here you might use like circle CIA uses like two credits per minutes on their smaller tier. And then like that goes up to like 50, 50 credits a minute on their bigger tiers. Cause your servers are a lot bigger. , and I kind of like that because that aligns what I think is the valuable part for a customer, right?

Like running builds and, you know, however long your bill takes, it takes and like the server size and stuff. And it also aligns with the cost of like running infrastructure to run builds. I really don't think developers and maybe like developer managers, like the price uncertainty necessarily, necessarily that goes along with that.

**Jason:** Sure. , , that makes

**Chris:** sense. So I'm still leaning towards like, just kind of a straight pricing plan that, that like a lower kind of easy to start and tear kind of like how forge has a lower one. That's easy to start on and then jump up from there to get more features, , and you know, at a higher cost essentially, and then, you know, have a few tiers.

So you can go from like, in the tens 15 range ish, up to 50, up to a hundred, up to 200, something like that

**Jason:** per month is that builds or projects are

**Chris:** that is the, that is the price dollar price. And then you'd get, you know, I haven't, I haven't pinned down what, that would be a, probably more, probably I'm thinking, leaning towards like limiting how many private . Projects, , you could have, and then also builds until you get to a certain tier.

Then you got unlimited. , and then there's other features like if Docker is offered and available to you, because Docker is like another server I have to spin up so that Docker's not on the same server as the build one for security reasons. And so there's more infrastructure that, that goes into that, all sorts of things like that.

**Jason:** That was actually a mistake I made on the shifty plans, which is like a subscription to shift. So you just, again, you kind of pay one low price and you can run whatever shifts are included with that plan. Or, you know, of course there's an everything plans. You can run any shifts that we ever make, but I've noticed that I kind of taken a closer look at that with, with level nine.

And again, the changing of the release cycles. I had to kind of revisit the duration of that plan, but it's kind of funny, cause like there's a huge gap. Most of the quote unquote unlimited plans maybe have like 10 or less Rebos that are on that point. But there's maybe like 3% of the subscribers that have hundreds of repos on this plan.

And I mean, they're just, it just, I wouldn't have imagined, I mean, it makes sense if you're a web agency or whatever, you know, you probably have a crap load of them, but like, it's one of those things where like, I, you know, now it's like, what do I do? Do I suddenly introduce a unlimited plus plan? Like it says unlimited, like how do you have that?

So, I mean, I think I just live with it, but it's one of those things that was kind of funny when I actually did some stuff. And you

**Chris:** look at it, you're like, oh gee it's I kind of had a moment like that, looking at how people use chipper too, which is, has gotten into it. I think what you can do is grandfather people into the older plants and then restructure pricing for newer customers, which kind of is, you know, it's fair to people who have done it.

You don't surprise them with like, oh, by the way, you're getting bumped up to this plan

**Jason:** at the end of the day. Like I'm not, I'm not super worried about it. Cause it's, it's probably not as resource intensive as chipper, of course, but it just kinda made me think like, I can probably foot that, but like you would have a server cost potentially of like them running builds, you know, for all that.

So of course you would have to think about that way more. It's just something I didn't think about it until I saw it.

**Chris:** Yes, I definitely, yeah. There's like, there's really interesting to have, like, you can kind of calculate a cost per customer cost per build type thing, which I actually really haven't done down to like a real payment.

It gets a little mixed up because people are, are multiple builds, are running on one server. So it's

**Jason:** like something I was curious about with chipper because I've kind of watched it from the beginning and it was a little, I think it was extra interesting to me because at the time I was working on the test generator and the test generator was kind of one of the first shifts that actually more or less built your project because it needed to run migrations to figure out model factories that needs to run artisan to figure out your route lists.

So like, it actually has. You know, more or less run your application had to do composer install had to do all these things that you probably are very familiar with. , you know, to build a, you know, a CIA tool. And so that's why I, you know, I definitely reached out to you in the beginning and you probably remember, and, and I think I even talked to him till about like a bit of a partnership in there somewhere because it was just like, it felt really there's a lot of synergy.

I felt like that could be there, but also remember at the time that like get hub actions kind of started becoming more popular. And I don't think you guys had quote unquote like officially launched. I think you guys had like a very long beta period. If I remember correctly.

**Chris:** Yeah. I've launched a lyric on.

And then, then it was like a paid or a credit card upfront trial, which essentially was the beta period because we did that. So we wouldn't get it like. Which is laughable. So try to live it a signups, but, , but we did at the beginning, cause I was really unsure if the build system was going to stand up to, and it actually, I had to rebuild the build system like a months, a few months after that.

**Jason:** Yeah. So the prudent thing makes sense. I guess my question was more, you said that you guys kind of both really weren't working on it there for a little bit. Do you feel that was because you didn't see it growing the way you wanted was what did life just get in the way? Like what created that pause? I'm

**Chris:** curious.

Definitely life got in the way we were both working on stuff. I have a job and I was, I wanted to do some more core stuff cause it wasn't like it took off and it kept growing. It wasn't like the Justin Jackson, like, you know, , what he says about like the, the market makes it very obvious is like, it felt like that at first.

But then we had that plateau and then. , and then Larry, David had Nova Nova, you know, makes good revenue. And then I had a job and other course stuff to work on too, to kind of like keep up the past years of, of course revenue to keep that going essentially. , so it got really hard to, um, to keep working on it.

So, uh, life got in the way is the correct inaccurate answer to that. And, , now I've kind of, I mean, I've, I've, I don't know about court. I still like doing the course stuff, , and putting out content and stuff in life kind of thing, but I see more potential. I think I've changed my mind and I see a bunch more . Potential in, , a SaaS application in the longterm, just because of that recurrent revenue where like, you know, if people are in the door and you've already done the hardware of getting people in the door and they're . Paying monthly or yearly.

Um, so we'll see, it's a bit of a gamble. , I don't know if it'll be the right choice or not, but I'm not gonna, I'm going to basically going to give it a year or so, and kind of see what happens, especially after this pricing change, because if that happens and I, and nothing moves the needle doesn't move at all, then I'm kind of like, , I dunno, what I'll do I have to make a tough decision then?

I mean, I guess, I guess it'll be, yeah, maybe. I mean, it'll, that's why it's a tough decision because maybe there's more I could do, or maybe the market for this thing specific to Laravel isn't the right move. Or maybe it should just, maybe it shouldn't be specific to Laravel and should be like everything, in which case there's more work to do and then maybe trying to get funding or something.

I don't know. I mean, that's an interesting idea too. I don't know. I don't know if I'm built for that. I don't know if it'd be VC funding either. It might be like a tiny seat type.

**Jason:** Yeah, that's, that's kind of, the other aspect of shift is like, it's really nice for me. And another reason I'm not super worried about like eating out every penny on the dollar in pricing is because I can really give shift as much or as little time as I want.

Like, and now again, on the positive side of the annual release cycles, like Jess and I literally worked on the level nine shift in January at launched in February and yeah. Make tweaks to it. I clean up some of the comments or I get user feedback of course, but I'm really just in a support capacity now.

And that's a very finite thing, you know? So it's not like I have to go work on the level nine shift anymore. If I didn't want to, you know, I do. Cause I like it and it's fun and I want it to be the best, but like the point is I am in total control of how much time I spend on it. But instead of letting it die, like shifts still lives on.

Like I could do nothing on shifts. It would probably still match my salary from a job, you know, for probably two or three years.

**Chris:** Nice. That seems ideal.

**Jason:** So that's right where I want to be. Great.

**Chris:** Cool. Yeah. Don't rock that boat. That seems right. Yeah.

Yep. , cool. Okay. We're an hour. So, , if it sounds good to you, we can start wrapping up. Yeah. Yeah. Okay. I had a lot of fun with this. I could just keep going, man. These casts always get really good at the end, too.

**Jason:** Okay, good. Finally get flowing on the conversation, right.

**Chris:** Uh, okay. So let's do this.

Where can people find.

**Jason:** So I'm gone dark on Twitter. , that's probably where be easiest to find me. , but of course, shift Laravel shift.com. Those emails always go to me, so, and I answer pretty much every email, so never hesitate , to send me something.

**Chris:** Sounds good. All right. , I will talk to you soon.

Have a good one. Thanks for coming on.

Jason McCreary (Jmac) - Laravel Shift & growing a side hustle to full time
Broadcast by