It's the vibe, it's Mabo with Tim MacDonald
Welcome to the Ripples podcast. This is episode 14. I am Tim MacDonald, and I am joined, of course, by the one full Michael and Greg. Hello. How are you doing today?
Greg:Great. Tim, how's things?
Tim:Really really good. I'm really excited to be here. Thank you so much for asking me to be on.
Michael:That's alright. Thank you for taking the time out of what I I can only imagine is a very busy day for you.
Tim:Always. I mean, I I I like to pretend that I'm busy, even if I'm not. Sorry.
Michael:I mean, if your bosses are listening, that's that's definitely what we're gonna say. We've got a little special extraneous guest over my shoulder. You may think there he is. You may think it's my little angel devil buddy Yep. Because we look so much alike, but that is my son who who decided he didn't wanna go to vacation care today.
Michael:So he's just chilling with me.
Tim:Dude, he's big. I haven't I feel like I haven't seen him for ages. He's he's a big kid now.
Michael:He's shot up Like, every now and then I look at him and I'm like, he's he's a full, like, full on his own person now, which is crazy. That is crazy. He's turned 6 a few weeks ago.
Tim:Wow. Yeah.
Greg:You just wish that stopped growing sometimes. It's just like, could you just stop? Yeah. Yeah.
Michael:Hey. Don't be distracting. Alright. So, Tim, we have you here, because you are probably one of the great Australian success stories in the Laravel community, which although this this podcast is not specific to the Laravel community, we do we do feature a lot of people from that community, because that is, you know, where we spend most of our time and we spoke to Jess a few episodes ago, Jess Archer, who kind of announced off handedly that she's, now engineering team lead at Laravel of the team that that you are on. And and so, you know, we we thought we'd get a bit of your perspective on that.
Michael:But we also had Samuel Levy on last episode and and he sort of spoke about when you kind of transitioned away from doing freelance and and handballed your clients to to him. So there's a bit of connectivity within the Laravel community, especially within the Australian space. So I thought maybe we would go back, I guess to before your time at Laravel and talk a bit about your journey as as a developer as how you found your way into Laravel and and kind of go from there.
Tim:Yeah. Okay. That sounds great. Keen. This this sounds really fun.
Tim:Yeah. I mean, there's heaps to dive into there. I guess, like, starting with, like, getting into into development, like I mean, I still remember, like, I feel like it was like the moment it clicked for me, like, I was doing, like, a uni degree, and I was doing I was just, like, throwing myself in a different uni degrees to like, try and work out what it is I like even cared about. Like, what was I passionate? Like, I knew the things I like doing, but what did I want to like, like, you know, really upscale on?
Tim:I remember I was like writing some like C plus plus or something and I'm like, I don't know what I'm doing. And then all of a sudden like this like code ran in the, and the output was like some silly, like scissor paper rock game or something. And I was like, I just created something from nothing. And it just blew my mind. And I just like, it just, like, clicked for my brain.
Tim:Do you guys remember, like, when when when something just, like, clicked like that for you when it came to programming? Like, was there a moment for you when it was like, this is this is, like, something I could, like, sink my teeth into really deep?
Greg:Yeah. Yeah. I I had a I, when I was a kid, we had I don't even know if it still exists anymore, but there was a a magazine you could subscribe to. It was like a kids science magazine that was run by the CSIRO. It was a double helix or something.
Greg:And at the back three pages of it were, like, 2 basic programs that you could just sort of type out. This was, like, well before magazines were distributing things on CDs, and I guess half the audience probably doesn't even remember that. But, yeah, there's definitely this sort of feeling of being endowed with some, like, mystic power when you can, like, make a computer do a thing. I mean, even if you're just copying stuff off Stack Overflow or whatever, there's like massive adrenaline surge when you're like, oh my god, I've just like I've I've made something that, I didn't have to, like, buy materials or, you know, learn complex skills or, or anything. I can just type into a computer that I already have, and it will it will do what I tell it to do.
Greg:So, yeah, definitely definitely resonates. I love that.
Tim:Yeah. The magic power is for sure. Like, you you you do feel like a wizard sometimes, like, when you're creating something from nothing. It's very cool. What about what about you, Michael?
Michael:So I I did work experience in, like, an IT department in a high school for not for my high school, but I went to another one that, like, I knew the the head of IT there through friends of the family. And I went there and kind of in between doing IT department stuff, like going to get a dodgy printer or going to, you know, do whatever else, the the head of IT was like, here is some visual basic and he set me up with, you know, visual basic and he set me up with some textbooks and and some stuff and he was like build build this thing and that was the first time really that I had done any programming and and whilst I'd like it didn't click for me immediately, it was like, oh, I can like put these things together and make something happen and I didn't really do any programming after that, you know, probably 2 or 3 months with Visual Basic after that, but I'd always had like a passing interest in PHP, but never enough to have any idea of what I would do with it in high school. And it was not until I left high school and I bailed out of Uni after a semester, and I was working for an internet provider, like a start up provider, where we needed to build like a provisioning system for, you know, managing sign ups and and putting all of that process in.
Michael:That I woke up one Saturday morning and I just sat down in front of the computer and I started building this thing, which ended up being like our provisioning system and it was like at that moment, I'm like, I can take all of this like manual work that I have to do and put it onto a web page on the computer and just automate a lot of it, and and that was kind of the the moment really that that triggered that, you know, that switch in my brain to go, yeah, this is this is what I wanna do.
Tim:Yeah. I love it. I love it. Yeah. I never got into because were you both saying you were doing basic?
Tim:Q is it q basic? I I never did basic sort of things. So was the Yeah.
Greg:So I mean, I I was I was back in DOS days, when when I first started. I I did do a bit of visual basic when I kind of got a white collar job and similar to Michael's. Yeah.
Michael:I was
Greg:playing around with Visual Basic for applications, which is sort of a very trimmed down version of Visual Basic that exists or existed. I'm not quite sure. It's been a while since I've been in the Microsoft space, but, it was it part of the Office suite, so it allowed you to to, like, take spreadsheets and do even more. I mean, there's some crazy stuff people do with spreadsheets with just formulas, but there's, like, a programming language that sort of sits behind it that allows you to to take that, know, another step further. And, being even if you don't well, at the time, I didn't have, like, any great skill, but sort of just being aware that you could even do these things, was like a big setup for me in my career because it's, you know, as soon as somebody ran into a ceiling of what was sort of possible with formulas or basic access databases or whatever, and but they didn't really even have the knowledge.
Greg:You know, there was a there was a deeper level that you could you could go to. So, kind of made me the guy who was like, can you work this thing out? And then, you know, start building sort of business scripts inside of spreadsheets, and hopefully none of those are still running. Somebody somebody at a bank that I once worked at is probably banging their head up against some things that I wrote 20 years ago. No doubt.
Michael:Amazing. It wouldn't surprise me. Like, spreadsheets that that kind of get ingrained into the business are very
Greg:different. My wife.
Michael:Like, they're because it's like it's just easy for some department in the business to, like, not trouble IT because or, you know, the the engineering team because it's like, we've gotta do something and it and it starts as an internal thing and before you know it, like, that team puts it in the hands of the salesperson and the salesperson goes, look at this amazing thing that we can do and no one ever stops to think at that point, like, how do we actually sell this? Like, how do we and and before you know it, like, it's such a big part of the business to load
Greg:up the
Michael:wall in
Greg:your business. Right?
Michael:And and so, you know, sellers have sold it and then product is, like, oh, they're selling this thing. We've gotta, you know, get it into the product, and then poor engineering team, like, 6 months down the road of this thing is, like, alright. Now we've gotta make it part of our platform. It's like, it's not as as easy to, you know, just go in there and an article the other day talking about, like, never using spreadsheets because it it always starts with the best intentions that, you know, it's gonna be a short term thing. We're gonna use it to get over a hump or something, and and then, yeah, as Greg says, it becomes a low barrier wall when it's, like, there forever.
Michael:So I'll see if I can dig that article up again and and and put it in the show notes so people would have a read of. I sent it to Adam Wyland because he's like a a massive, you know, spreadsheet person. He's he's still, despite all that he's accomplished in his career, firmly believes that, like, spreadsheets are the ultimate programming tool. And yeah. He he had a good chuckle over it.
Greg:There's there's that there's that, I can't remember the exact quote, but there's there's that quote that that every every piece of software of sufficient complexity eventually becomes, able to send emails. I think the same is true of spreadsheet. Every every every program with sufficient, complexity eventually becomes Microsoft Excel.
Tim:Very similar vibe as well of like, you know, I think about like putting a proof of concept, like deploying a proof of concept somewhere. As soon as it's like out there in the world, it's like, cool. It's no longer a proof of concept. Like this thing is the foundation now of how we're moving forward.
Greg:You're not going to get
Tim:to like start and, like, pull it all out and do it again like you wanted to.
Greg:And there's this interesting tension there. I mean, I I'm I'm not, I'm I as much as I prefer people would not put business logic in spreadsheets, I I know that that's kinda where my career started. And if people can kind
Michael:of
Greg:self serve and and do things, then who am I to tell them not to? That there's an interesting tension with proofs of concept where I mean, I I'm I'm like a small change iteration guy. Right? So I I want the simplest thing that could possibly work in the hands of customers as soon as possible no matter how no matter whether it's finished or is anything like the thing that I ultimately want customers to use. Like, I want the feedback.
Greg:But you're right. Once it's out there, changing it becomes like, it's easy it's probably easy to change from from a from a coding point of view. It's probably very easy to change, but there's this sort of, customer expectation that, you know, once they've got it, it's final and you're not allowed to change it anymore. So you've got to kind of support all of your bad hacky decisions until, like, the end of time.
Tim:Yeah. Yeah. For real. Yeah.
Michael:So, you know, coming into it, you unlock this this this superpower of of programming through, you know, c plus plus in university. Did you did you are you like me? Did you abort your university degree or did you finish, see it through?
Tim:I did not see it through to the end. So I, I like, I was like click. Yes. Programming must know more. So then I could like, you know, you could pick what subjects you do in the next semester.
Tim:And I just like, I was like, all right, all the programming ones are stacking up right here. Right? Like all the like hardware, deep theory ones. I was like, they're interesting. That's cool.
Tim:I'll, I'll, you know, get into that. I was just like stacked up all the programming ones and I did those bit by bit and I was just like, this is the thing, like, this is like, I don't need to, cause I wasn't going to university to get a job. I was just kind of like, I wanted to go deep on something. I wanted to excel at something and I wanted to like find the thing. Obviously, you know, I'd hoped that I'd get a job at the end of it, but then I was like, I know what I want to do now.
Tim:Like, this is it. And, I lived in Wagga Wagga, which is kind of a rural city, in New South Wales. And I was like, well, how do you do programming in Wagga Wagga? Like, how do you do that? I don't, I didn't know about like the communities, like the development communities.
Tim:I didn't know about, you know, contracting or anything. I'm just like some random that's like found programming and wants to do it. I'm like, I don't know if I can do c plus plus in Wagga, but I can. Everyone wants a website. Every business wants a marketing website.
Tim:And and, yeah, I kind of stumbled into WordPress, the classic. So definitely like a WordPress origin story. Did did either of you 2 kind of, like, start like, dive into WordPress? Have you gone deep on that?
Greg:I I don't think I have a I think I avoided it from a career point of view, but it has if you're in PHP, it it comes across your desk at some point with probably more regularity than any of us really want. So, you know, we had a corporate Internet at a previous role that was built on WordPress and, you know, corporate Internet. So they wanted they then wanted, like, connections to, you know, various, bits of functionality. The business' engineering team was largely a dot net shop. So what is this PHP, this horrible Yes.
Greg:Untyped glorious mess that was at the top of PHP 5, so it wasn't even good PHP yet. And, yeah. So, dabbled but certainly haven't gone in. In fact, recently, I've been looking at building a website for my own things and I've kind of gone to WordPress because it's it's just completely turnkey. And I'm like, what even is this?
Greg:So there's a big missing part of my career, which for better or worse, I don't have the I don't have the deep understanding of the loop and yeah.
Michael:Yes. The loop. Yeah. Yeah.
Tim:Yeah. Page. The title. Yeah. I mean, what great function names as well?
Michael:Like, that's sort of
Tim:like this. So There's actually some like really nice stuff about WordPress as much as, you know, it's so easy to like put it down because it uses all this global stuff. Like there's a lot of like real good niceties about it, but, I actually love WordPress. I think WordPress is great if you use it for the right thing. Obviously, there's people out there that bend it to do absolutely insane things.
Tim:And, you know, yeah, exactly. And, you know, for better or for worse, whatever that ends up, ends up looking like. But yeah, I was like, I found someone who was kind of, I was just kind of like tinkering and, this person came in and saw me tinkering when I was working at, like, an Apple store, and they were like, oh, you building a website? And I was like, yeah. And they're like, cool.
Tim:Come around to my place on the weekend and let's chat and we just kind of started the business doing WordPress stuff and that's where I really just learned to like because I didn't know programming inside out. I didn't know concepts or or patterns or any of that kind of stuff. I just knew that I had to make button red, like, we want button to be red. And so I'd, like, hack and slash, like, as much as I could. And like, I I remember doing things like this is where, like, everything was jQuery and like, I remember, like, I have to change this thing, and I don't know how to do it because I don't know what CSS is.
Tim:And I just I remembered, like, finding something about doing it with jQuery on Stack Overflow, and then I'm like, what is jQuery? And I remember, like, googling, what is the difference between JavaScript and jQuery? I keep hearing these two things. I'm thinking they're, like, disparate things, and I'm like, I just remember that, like, oh, it's all it's all kind of this one, like, web thing. And that was like real hacky slashy stuff.
Tim:I'd like I I loved that phase of development because I'd like I had no rules. It was just get the customer what they want in any possible way without any good patterns or anything. I'm sorry for, whoever takes over my websites, which is again, Sam. I'm sorry, Sam. I'm sorry for everything you have seen.
Greg:There's the golden rule, right? It's not wrong if it works. It's not wrong if it works and someone's gonna pay you
Tim:for it.
Greg:Yeah. Yeah.
Michael:In the business context, if someone's paying for it, you know, customers are never gonna look at your code. The and and this is something that that constantly comes up in, you know, online discourses, like, that's a that's a bad way of doing or you shouldn't use this pattern, or you should use that pattern. It's like, as long as it works, as long as the customer is happy with it, and as long as they pay their invoices, most of the time it doesn't matter, and a lot of the academia around programming is just in online discourse. Facades and it gets, you know, for for all of these different things all of the time and it's cyclical or be you know, it comes and it goes. Laravel goes on.
Michael:All of us keep building Laravel sites, and it doesn't matter because it's serving real business reasons.
Greg:I I find the state of I find the state of online discourse on this stuff. I tweeted about it the other the other day. I can't I got into a into a little bit of a a Twitter argument, which don't get into Twitter. I don't even kids. It's not it's not fun.
Greg:Someone was suggesting that, in all cases, it's a bad idea for you to have multiple databases that do different things. So for example, like MySQL and then Elasticsearch. And I sort of come down on the side of use the right tool for the job. Like, if you, you know, if you want the right feedback, you need to you need to be using the right tool, and that might mean that your infrastructure complexity kinda goes up. But the whole conversation was black or white.
Greg:It was all, like, always only use 1 database or always use a 1,000 databases. And I ended up tweeting that, you know, the the the the discourse on Twitter is is always this black and white thing is either right or it's wrong. The reality is that it's it's there's a spectrum there. I mean, there are some things that are egregiously a bad idea. Like, don't change the color of the button with jQuery.
Greg:For no other reason, then you're gonna get a flash of on style content where it's blue and then it turns red, which is gonna confuse people. But, like, there are definitely some things that are kind of like that we all kind of know. Like, we all know we shouldn't do. Unless we're saying leave me. That that seems kinda like a I shouldn't do this, therefore, I'm going to definitely do it.
Greg:But once you kind of have, like like, some level of skill it doesn't even need to be, like, a really huge level of skill. Once you get some basic understanding of where the traps are, like, I don't think, you know, you need to be necessarily worried about I think people would be more successful if they were worried about whether things were working and whether they were being paid for them rather than whether or not they're using domain driven design and event sourcing exactly as it's written in the book, and, you know, dependency injecting all the things and whatever else the sort of right way to program is. I think people would be in a much better place. Like, not just financially, but also but their headspace wouldn't be filled up with so much, like, anxiety over, am I doing the right job? And as Michael says, like, your customers don't see it.
Greg:You see it. Your colleagues see it. And, you know, you've got a good group of people that will, like, lift you up and help you get better as opposed to ridiculing you for doing it wrong. But, yeah, I Right. The Internet discourse on programming is, like, really tiring and awful.
Greg:Because there is no
Tim:right to wrong. Exactly. We need to be like solving problems. And so like, so let's let's talk about facades for one second. So, there's 2 sides to this coin, which is I don't like facades.
Tim:I don't like referencing facades in packages. And I can't I remember at one point, I got hit by something or maybe it was just like more static stuff I can't remember, but I got hit by something and it was annoying in a package. And so then I ended up going, I'm just going to do like, do dependency injection in packages because I hit this thing and, but I still use facades in my projects because like, it's just super easy there. Like, I never like have run into that problem there. So like, it's it's again, it's like solve the, like, work on the problems that you have in front of you and like, if something like, changed because of the problems, don't change because there's this rule that you need to, like, abide by across the board on everything.
Greg:Yeah. And and software is immutable. Right? Sorry. Mutable, I should say.
Greg:Like, you can Big time. Like, if you focus on getting the thing solved first, you can always go back and make it better. Like, refactoring from facades to dependency injection is actually not usually not that hard. It's usually not a big deal. So you're focusing I I I don't I don't know whether it's, like, just this sort of people procrastinating.
Greg:Like, is is the decision to, like, do all the things correctly just some hidden form of procrastination because I don't actually know how to solve the problem? Or
Michael:Yep.
Greg:Yeah. I don't really know what it is, but the the the online discourse just just drives me crazy. And, like, something you said earlier about, you know, you know, it's similar to Michael's story where you've kind of, you know, not finished university degrees because you've figured out how you can do it. Programs is one of the only careers that you can do that in right where you can just decide that to hell with academia, I'm gonna go cash checks, and worrying about the academic arguments. And I don't nothing against the people who make the academic arguments.
Greg:They're always very, very smart people and they've always got points, in their context and that's that's great. That's wonderful. But worrying about all of that stuff is how you become an academic, not how you become someone who drives a Lambo.
Tim:Yeah. Yeah. For real. Yeah. It's all contextual and and like the whole, like, even like, because a lot of the time it's like, well, show me the code that's problematic.
Tim:I know that's like a big thing, but it's not even that like because a code can be problematic depending on the context. Like you need, it's like, show me the code and then explain the entire context behind this thing for me to even know if it's a problem or not. And that's when
Greg:I can
Tim:know whether you're using what. Yeah. And so, yeah, 100% just like, yeah, arguing in a vacuum is not fun for anyone.
Greg:Yeah. So to what extent does, like this is interesting and it's probably a little bit off topic for the podcast, but to what extent does the does that discourse feed into how things at Laravel get written? Because, like, Laravel's scrutinized by camps of people who I think there's less of them now or I'm seeing less of them now, but there's always this camp of people that Laravel is a toy that's used for small conceptual things and it's not ready for big boy enterprise things, which is news to me because 1 and a half 1000000 lines of code, very, very big application running on Laravel. It's definitely it's definitely suitable for enterprise. So to what extent does that discourse feed into making sure that you guys quote, unquote do it right?
Greg:Or we just not give a shit?
Tim:I I mean, I definitely wouldn't wanna speak on behalf of anyone else and, but I know, like, you know, I've whenever I'm contributing to the framework, I'm just doing what, like, I guess I kind of like know the vibe of the thing, you know, like people will be like, oh, I don't like tap. And it's like, I know it sounds silly, but like tap is, it's about the vibe of the thing. And you know, not, not referencing temporary variables is like, it's temporary variables aren't intrinsically bad, but it's about the vibe of the thing and like how there's there's, I don't know. There's a whole, like, it's kind of like an ethos and a, yeah. Man, I wish I could put it into words.
Tim:I probably could if I had thought about it more, but Yeah. I just, like, I know kind of where I I feel like I know where kind of, like, Taylor's coming from with with those kinds of decisions. And so I just kind of like have embraced that to make sure that like you would with any team member. Like, you if you and I are working together and we're pairing and and I keep doing something, you're like, I don't like it that way. Like, can we do can we do let's say you didn't like single line closures for whatever reason, which, of course, we all love those, but you were just like, I just like fat things and I and I'd, like, I don't have a strong opinion.
Tim:I'm just gonna start writing fat functions, right, rather than short ones. So it's that same thing with Taylor, like, contributing to the framework just like knowing the vibe of the thing and being like, we wanna use a tap here. We wanna do this. We another thing I've been really liking recently, is, using, you know, the list function, but you can now just do it with like the array literal syntax. So you're like open square bracket, variable name, variable name, close square bracket equals, and then you have the array.
Tim:Yeah. And it, like, backfields into that. I've been loving that for, like, defining several different variables out of, like, a list of things to, like, again, like, collocate the the variable assignment into like one block into like one thing. And it's like, it could be several different lines, but it's, again, it's like, it's not messier and it's just it's got a certain vibe to it and a certain, like, here's here's the thing that's happening that's important. You don't need to read every little line unless you're like really diving into it.
Michael:I don't
Tim:know if that answers your question or if I just went off topic even more.
Michael:We, we sat down as a team last week, I think, or the week before, and and we had a a similar discussion. You know, we we talked about how how we want to now that the team has grown to we've got 7 people on shore and we've got, 5 or 6 I think offshore that are all contributing to the same code base. It's like how much of this do we codify now? You know, how much of it can we codify because we don't wanna have PR reviews where you're getting sidetracked by nitpicks and optional styling stuff, and it's like Viroveal takes you so far, you know it will do a lot of
Tim:the work but a lot
Michael:of things like I'd use a tap here or I would or wouldn't use a temporary variable here or I would do something in in one way or another, like it it is contextual and it's like you are right, it is it is a vibe thing in Laravel that is hard and people said, you know, can you write it down? I said, no, because I don't I don't know until I look at it, like, would I write this as as a short closure or as a long closure? Would I write this, you know, where would I align the variables? You know, sometimes we're using Pest for our test suite, and so we would have like post JSON using the the functional syntax in Pest, and then if it's if it's just like a smoke test where we're hitting an endpoint, we would say, like, post JSON, the the the route new line close paren arrow assert Okay. And and that would be like 3 lines and everything would be chained like that.
Michael:But if we're doing something a little bit more in in-depth, where it's a post JSON where we want to assert created and we want to assert the shape of of the the return JSON. Well, the assert created would wouldn't go on the same line as the closing paren of the post JSON now, it would go on a new line indented, and it's like these are kind of things that you cannot really enforce with a code linter. These are kind of things that you just that are it is how the code is written in the code base. No alignment and all that kind of stuff. And you can try and do it, and I think you'd spend more time bike shedding on tooling to do it, than just knowing, like, in these situations, we do this, and in these other situations, we do this.
Michael:And and I like it's it's hard, you know. And I think
Greg:We sort of we sort of have a rule that basically says, if someone new comes to the project and opens it up, it should look like one person read it. Yeah. So if you're trying to and that doesn't mean that you can't go and introduce some new way of doing things because I think, you know, where people have codified coding standards and stuff to the nth degree, you kind of lose the ability to do anything new or, you know, discover some better way of doing stuff. But there's probably been close to 20 people who've contributed to our code base over its life, probably more. But to the best extent we possibly can, it looks like it was written by one person.
Greg:Now it doesn't look anything like the code that I'd like to write. It's definitely not my my personal style or my personal vibe, but, and it's probably not the personal style or personal vibe of anyone on the team, to be honest. It's just some distillation of preferences where we've made a decision to do something. But, yeah, I think the the important part is that it does look like it was there was one contributor, which was the team as opposed to
Michael:Yeah.
Greg:You know, this guy's using tabs, this guy's using spaces, this person's using, you know, loops and variables, this person's using collections. Like, that just makes it so hard to read and understand what's going on because
Michael:Yeah. We definitely landed on that as as, like, the guiding principle is that if there is any doubt we would discuss it as a team. No one's gonna have any, you know, personal feeling about it. It's like if if 7 out of 8 people decide, you know, this is how we want to do it, then that's how the team is gonna do it and that's how we know to do it in future. So that that kind of stuff is is is tricky.
Michael:But, you know, at the end of the day, as you say, the team wrote the code. No no individual person wrote it. And so consistency is the key there.
Greg:So moving a little bit down on your journey, just to kind of steer it back to what we're talking about. At some point, after you decided to build websites for people, and I guess that's how you created your, your agency whose client base you eventually handed over to, Sam. You then took a bit of a leap into working for a team on a on a sort of application?
Tim:Yeah. Absolutely. So, I so I left, doing, I kind of went in and out of agency stuff. At one point, I nearly detoured completely into app development as well. So I went, I started getting really into apps and like the build your own app stuff.
Tim:And then I was like, I nearly got a I even nearly got a job at a, at a, like a, another framework that builds like, like, like app stuff, like, React Native and stuff like that before React Native and stuff even existed. So I nearly ended up down that pipe hole, and then I realized, nah, the web is what I want to do. I want to be on the web. I knew the back end, And that's when I found Laravel, which I thought would be an important thing to, I needed the back end. And I'm like, I don't think WordPress is the thing.
Tim:I'll look out for, and I think it was like, like Laravel 5.1 or 5.2 or something. It was out and, and I was like, this is the thing. But yeah. So so I learned that, did that, and then, yeah, I was, doing the agency thing and I was just like, you know what? Like, I don't know if anything I'm doing is good.
Greg:I don't know if any
Tim:of the code I'm writing is good. No one's ever said, Tim, that sucks. Like, you should be doing better. And, I'm probably the only developer to say, I really wanted someone to, like, critique my code and tell me how I was doing. Right?
Tim:Like, I wanted some kind of feedback. So I was like, you know what, I'm gonna, like, stop doing this, like, run your own business, you know, get to do your own hours thing and like get a job in an office with humans. That'd be crazy. So yeah. So I decided, you know what?
Tim:I'm gonna I'm gonna do that, and I, yeah, I, again, I'm sorry, Sam, for the code bases that I handed over to you and the terrible things that were done. Handed those over to Sam, and he was he was lovely enough to take them on for me. And then moved down to Melbourne, got a job, in a at a at a start up, like a real, what I would call in the best way, like a real scrappy startup. And that kinda took me back to that, like, hack and slash days where it was just like, we just turn around features in a day, you know, or whatever it was like, and we've just, everything was just like, let's just go, go, go, go, go and like try and get things out. And that was really useful when COVID hit and the entire business was a ticketing agency and there's no events anymore and we had to, like, pivot the company completely, like, on a on a dime and, yeah, change basically what we did to, like, keep the company going.
Tim:And that was really cool, But it just kind of didn't have didn't have the same vibe and excitement after that because, you know, there's not so many events during COVID. I don't know if you remember. And, yeah, so, I wasn't really looking, too much. I was, you know, I was still happy, but I just wasn't feeling it. And then there was this opportunity that to come up.
Tim:And, I think I think it was Jess, Jess Archer that actually reached out to me, and was like, hey. You know, we're looking for someone. Do you have any interest? And I was like, oh, I mean, maybe. And then she put me in touch with, you know, the person, you know, Phil, to to, like, have a chat and and, yeah, we kicked off that.
Tim:And then next thing I know, I'm I'm working with Jess. We're on a team together. And, yeah, we we that was that was an excellent time, getting to build that stuff. And I just, like, I just learned so much from Jess and took on so many things, and we were just we would just pair every day. And so we we both kind of, like, had our own ways of doing things and and I think Jess talked about this a little bit, but, like, the thing I love about working with Jess is when we argue, when we when we disagree on something, it's like they're the best days because, like, when you just agree on stuff, it's like, oh, we'll just do it this way, it's like, it's just boring.
Tim:You're just coding. But when you've I finally found that, like, that thing that I was really searching for, which was like someone to not just critique my code, but actually, like, come on that journey and, like, you know, bounce off each other and be, like, I wanna do it this way and, you know, the other person be, like, I wanna do it this way. And then we end up doing it, like, some other way that none of us had thought of because we were both pulling at each other to try and, like, find, like, to bring us along on that journey. And, yeah, I feel like that, you know, just learned pair programming is I realized through that experience was just like is so fundamentally important to me that I don't think I could work anywhere where I didn't have that opportunity anymore. Do you do you do much pair programming yourselves?
Tim:Do your team get into much pair programming? Is there space for that where you work?
Greg:Yeah. So we we do
Michael:it a lot. Really common. Oh, yeah. Go on. Go on.
Greg:We we do it a lot. We we experimented with it. I I I was reading the the Extreme Programming by Example book, and I'm like, you know, what this pair programming thing that's obviously, aware of it for a long time, but never really understood how. The team was fairly resistant to it initially, I think, because introverted developers don't want people looking at their stuff. And not everyone likes being challenged.
Greg:Right? People just some people just like give me a feature to build, and I'll build the feature and get out of there. We've found we we don't we don't do it nearly to the extent that you ingest to it, but we we do find that when there is a big problem that needs to be, like, cracked open, putting 2 or even 3 or 4 people, so that's getting up into mob programming, which is sort of pair programming taken to another level, you can you can get to the solution, like, far faster. I've heard it said I don't know how accurate this is. It's all sort of pop psychology nonsense, I guess.
Greg:But the, only half your brain is, like, working on solving the problem. So when you actually have a pair working, you have a whole brain working on the problem, not half a brain working on the problem. And it, yeah. It it we we find it to be really, really useful for, you know, taking a problem that might take an individual a week to get done and turning it into a problem that can get done in 3 or 4 hours because, you know, the other person has the missing knowledge that can be used to fill in and get that done. So, yeah, we we we do it we do it a bunch.
Greg:Certainly not it's certainly not like a like, I think the way Jess explains it to me is you guys are pretty much or at least at some point, we're basically doing it all the time, like, nonstop. We're certainly not that level. But
Michael:Yeah. You were a lot the same. I know the the majority of the rest of our onshore team now is is based in the office. So they they just spend a lot of time together. I I kind of am off in my own little special projects team that that just does the awful horrible things that we don't really want to divert any other time to.
Michael:But anytime that there's crossover between myself and and the other folks on the team, you know, when when things need to be done, you know, there'll be a bit of with this is this is the thing that we always start with, like, the asynchronous messages on Slack. It's like, hey. What about this? And I go, what about this? And it's like, hang on a minute.
Michael:You know, after 2 or 3 minutes of this back and forth, it's like let's just jump on a on a call and let's just work this out and like yeah. Asynchronous messaging is great, especially when you're remote or whatever, but it's it's just so much better to be able to jump on a pairing session, whether that like don't please don't use Slack, Huddles because they're horrible for it, but Drupal is fantastic. You know, you've got the camera, you've got the audio, you've got the screen up in front, you can draw on the screen, you can type on the screen, you can like, because trying to plant at someone else's screen in a huddle is just hopeless, but on Jupyter, you can just get a little pencil and just like squiggle and be like here, this is the thing that I'm talking about and you can just like, it is immediately obvious just how impactful and how much quick you can get stuff done when you are pairing with someone. And we have a lot of freedom to kind of just get stuff done. So there's no business rule that says, not one person, one thing.
Michael:We've we've just split our teams in such a way that they're cross functional, front end back end people, senior people, junior people, like and and it's just proving to be a really good way of working. And we're like, pairing is is certainly a thing, especially when we have to involve the offshore team, because they're offshore. There's no other way of doing that. They can't just come into the office and and sit around a table. So yeah, it definitely is, like could you haven't done it and and I know that, Mitchell Davis is is doing a lot of stuff with like Laramates to to kind of make this a more accessible thing.
Michael:Ben Holman has been doing like this pyramid scheme thing, which, you know, he's just jumping on and pairing with people, just getting to know people looking, you know, and it helps you as a as a developer as well just to be exposed to different code bases, which isn't, you know, available to everyone necessarily and you can't necessarily share, like, obviously, I can't jump on a pairing session with Tim and he's gonna show me the cool and exciting things that he's working on for Laracon US or anything like that. But, you know, there are when when you're working on bits and pieces, even if you if you've got an idea for contributing to the framework or something like that, like there are always people available. Jess has said this before as well, that she's always willing to to jump on and and go through stuff with you. Like there are plenty of opportunities out there, especially in a world of like, solo developers and freelancers and things like that to do this kind of stuff, and and it's it's really heartening to say that the community has kind of taken upon itself to to launch headlong into this as well to, you know, facilitate it.
Michael:Whether that's, you know, how Ben's doing it or or the stuff that Mitchell was working on with like an app that, you know, he did it as an experiment of like, how do I build an app with native PHP? But it's also rooted in this like, I've got the ability to just make friends with people across the country, across the world, and and jump on and pair with them. So I I really like the the pairing the pairing dynamic. From both from the learning and the teaching and just from like a socializing perspective.
Tim:Yeah. So such a good way to like level up as well. Like, I, you know, I've never really known, like, you know, where I am in some arbitrary scale of, like, good developer, but, like, all I know is, like, when I'm pairing the, like, I'm going up that scale, like, all the time, you know, wherever I am, like, I'm just learning stuff from everyone. It's, it's great and yeah. And even if it, even if it's just learning things that I don't like, you know, you just learn things about yourself and you're like, cool.
Tim:Didn't like learn like a new technique, but I learned that I didn't like the way they did X, you know. That's good as well. Then you can articulate, you know, more feelings and thoughts. So, yeah, pairing pairing is the best.
Greg:I also I also find it's a great way to reduce anxiety about the things that you're building because you've had another set of it sort of spreads the accountability a little bit. So Yeah. I I deploying stuff that I've built by myself is always nerve wracking. Deploying something where I've had 1 or 2 other people actually in the trenches with me on it makes doesn't make me completely anxiety free because it is possible for multiple people to make mistakes on these things. But you you feel like the likelihood of that is is far lower.
Greg:So wrapping up your journey then not long after you worked with Jess, both you and Jess decided to and I think your story has been well told on the Laracon stage last year
Michael:Yeah. If I'm
Greg:not mistaken. You 2 decided to leave the place you were working at at the same time and chance your arm at an opportunity at Laravel.
Tim:Indeed. Indeed. We did, which was yeah. It I I still don't understand how I I was lucky enough to have the opportunity to get to work at Laravel. But, yeah, here we are.
Tim:We we shot our shot and it it happened. And, yeah, Taylor Taylor was keen and went ahead and, yeah, I guess that's that's how we kind of ended up where we are, where where where I am. So, yes, it was a crazy journey. Crazy ride. Obviously, there was a a lot of things in between.
Tim:That was kind of the work stuff, but, you know, I think one of the things there there's been a few moments, coming back to, I'd like to talk about Laracon specifically. Coming back to Laracon, I remember I wrote a, a few things that kind of, like, propelled me along the journey that kind of, like, I I I felt as like a tailwind, I guess, like, pushing pushing forward to kinda get to where I I was, didn't know I want was going, but where I got to was, I wrote written a blog post on Laravel collections. I was just like, I wanted to contribute. I saw people writing blog posts. I was like, I could do that.
Tim:I don't know what I've got to write about. And I remember writing a blog post on Laravel collections, and I tweeted it. And I, you know, I didn't have really any followers, so I didn't really go anywhere. And I remember I was like, you know what? I'm just gonna I'm gonna ping some people that I feel like would, like, enjoy the vibe of this blog post.
Tim:So I think it was I think it was, Frank, and I think it was Caleb Porzio. And I remember Caleb and and Caleb replied and was like, this is sick. And I think he, like, went and retweeted it, and Frank did the same thing. And I then I and then I remember, like, I I woke up and I was like, oh, people have, like, read it. I was on Google Analytics and I was like, there's people, like, on my blog.
Tim:What is happening? This is crazy. And, and then I was like, okay, I'm gonna write some more. So I started writing more and then, I remember, Michael, were in the PHP Australia Slack channel, and he's like, you know, I'm I'm I'm hoping to see a submission for you for Laracon AU next year. I kind of remember what year it is now.
Tim:And I was like, you know what? I think, I think I might do that. And I just, I was, I was very nervous, but I thought I've written a blog post, so why can't I just do a talk on it as well? Like it, you know, it's like, it's just just this little idea, but maybe there could be a a talk in it that people think is interesting because I was keen on it. Like, it's not a big idea.
Tim:It's not like some new revolutionary thing. I was just excited by it and I was like, you know what, I'm gonna do it. I'm gonna submit a talk and I was lucky enough to be accepted and I I I gave it and I just had absolute blast giving that talk. I was so excited. And that I I feel like that was a big big tailwind behind me to, like, get the opportunity to, like, be a part of the community at Laracon, which was just amazing.
Tim:But then to actually get to present at Laracon just kind of blew my mind that I I could have the opportunity. And then I could that I that my little idea could actually fill the space to do a talk, I think was something I really doubted until I did it. Yeah.
Greg:Now we talk about this, like, a lot. Like, if you it doesn't really matter. I think I think around that time, collections really talked about a lot. Adam was writing a, an entire book on the subject, but it doesn't necessarily matter. Like, if you feel passionate about something, it doesn't matter if other people are also talking about it.
Greg:Just talk about your experience with it and, like, your particular take on it will just pick up, you know it may not pick up the sort of the the sort of mainline of people who are interested in that thing. I mean, maybe you're lucky if it does, but there'll be people out to the side who didn't get the way that Adam put it or didn't quite understand it. And then your take on it is you're sort of bringing more people into the fold. And, yeah, the the ideas don't even necessarily have to be, unique. They're just your unique experience in that particular space and why why you think it's why you think it's awesome.
Greg:Yeah.
Tim:I think there's so much value in just like seeing you can feel it, like, you can feel when you're in the audience. I know for me and this is, I guess, where I got, I kind of felt like I could maybe bring that is like, I could feel when people were like really passionate and really cared about what they were talking about. Again, even if it was something that I like, I I I knew deeply or I knew a little bit of, or I didn't know anything about, the talks where they were passionate and excited about it was so much more engaging for me than just like deep technical talks that were really serious,
Michael:you
Tim:know, or, or, you know, he's, he's like a new new product or a new feature or something. And it's like, it's just kind of been rattled off. But when those people are excited about whatever it is they're doing, there's just, I don't know. So if you, if you are listening and you have an idea and you are excited about it, please, please submit to Laracon's because there's there's like and and and local meetups and everything. Like, get out there and give talks and or write blog posts or share wherever you can and just be excited.
Tim:I think you just gotta you've just gotta be excited about the things that you're excited about, which you already are. So you just have to be yourself.
Michael:Yep. Yeah.
Greg:Sure. 100%.
Michael:Don't don't don't worry about the nerves or I mean, the nerves are gonna be there no matter what. People Yep. People that have been speaking for years years still still get those nerves. They're still sitting in the green room in the lead up to giving their talk on a Laracon stage, fretting over their slides and, oh god, I've got to get out there and and present this to, you a 100 and a half paper bag. All of that all of that is gonna happen no matter how many times you present, But until you put yourself out there to do it, you won't have done it.
Michael:So it's all just like fear that you've built up in your head. That, like, the adrenaline rush. Greg knows this. Last year when you got on, like, when you got off stage, the the the adrenaline that was pumping and like just the thrill of having done it and finished it and putting yourself out there. Like no one can take that away from you.
Michael:Doesn't doesn't matter what happens when you're on the stage. This is an achievement for yourself Mhmm. To to get out there and do it. And like let people decide. Now we we said this several times on on this podcast that the Laravel community is one of the most welcoming in terms of like Laracon audience, and they want you to succeed and they want you to to to present your ideas and and have fun up there.
Michael:And so that's what they will do when you get yourself on stage. No one's Yeah. No one's gonna No one's
Greg:paying 6 weeks. No one's paying 6 weeks. No
Michael:one's paying
Greg:6 weeks.
Michael:Yeah. Yeah. To do that and like, people that do that are doing it anonymously and they're not, like, I if you can't put your name to what you're saying then it you the opinion doesn't matter anyway.
Greg:Mhmm. 100%.
Tim:Yep. 100%. And and, like, it's scary to put yourself out there, and to, like, I remember I was I was like, is this weird? Like, is this a weird thing to do to just, like, message Caleb on Twitter and be like, read this post. You don't know who I am.
Tim:You know? Like, here's a random, like, you know, I've just slid into his DMs. And he was he was lovely and he, yeah, he said it was great and like, but I was scared that he, you know, it was just going to be no reply or at worst. It was going to be, please stop messaging me. Like, leave me alone, you know, but like the community is so lovely and like, don't, like, don't feel you need to kind of embrace that to some degree and like put yourself out there, but not just put yourself out there, like reach out to people and, like, specifically share stuff with people, that you think would also be excited.
Tim:Because, you know, Twitter can Twitter can often feel like you're just screaming into a void and, like, you're just like, oh, I've got these interesting things to say and no one's listening. And, you know, sometimes that is the case. But if you got something like, you know, if you've written a blog post you're really proud about and you know that someone else is excited about that, ping them and be like, yo, check this out. I remember I pinged Matt Stafford, I think, on some like deployment blog post I did that I was excited about because he was talking about it and it it I was stoked when he was like, that was a cool read. You know?
Tim:That's all he said. But I was just like, yeah. Heck yeah. Was. Yeah.
Tim:Thanks, Matt.
Greg:Also, look, the word the the absolute you kinda touched on it. The worst thing that's gonna happen. The absolute worst thing that's gonna happen is that they're not gonna respond to you. So what? Like, it's like, that's all you lose is you you take the you take the 30 seconds it takes to send someone a message and they don't read your thing.
Greg:Okay. Send it to someone else. Like, I I think we we could get all up in our head about, you know, what if they don't like me? What if they don't like it? Like Yeah.
Greg:There there's someone else out there. There's, you know, just do stuff. And if you if if if you're so crippled by the anxiety of people not responding to you, then you're you're not gonna be able to, like, reap the rewards for for doing this work. You're just gonna do what I've done for 20 years and toil in obscurity.
Tim:Yeah. Yeah. Big time. Big time. Circling back to what you kind of mentioned, at the beginning of the podcast.
Tim:So yeah. So now Jess and I working on the same team. We're we're slowly growing the Australian team at Laravel in in Australia, which is really exciting. And, Jess has been promoted to team lead, which has been fantastic. So Jess is an absolute gun.
Tim:And actually, when when she was on the show, she she said, oh, it's made I think she said, like, something like, oh, it's maybe a little bit awkward. So for the record, I just want to be very very clear that it is in no way awkward. It's actually freaking awesome. Jess is absolutely amazing, and she has, like, quite clearly, been just an absolutely amazing team lead in the in the short period of time that she's even been doing it. It's been it's been really great, and it's just gonna continue to get even better as we grow our team.
Tim:I'm really excited about the stuff that we're building. I would, of course, love to just tell everyone the kind of stuff that we're doing at the moment, but there's some really great stuff and you
Greg:know,
Michael:sometimes you know, sometimes as a as a company like that grows, sometimes a lot of that stuff is formality, like somebody has to and like your working relationship probably hasn't changed in the slightest other than, oh yeah, we defer to Jess in stuff, but like Jess is gonna defer to you in things that you're knowledgeable of, and like ultimately what this means is that Jess is gonna have to go and have like update meetings with
Tim:Exactly. You
Greg:know what I mean?
Michael:It doesn't doesn't really change your working dynamic.
Tim:She's still on
Michael:the go, you're still pairing Yeah. And like and and this is a good thing for, you know, you because it means you're not gonna be exposed to more people as the APAC team grows. You know, rooted to someone and like, there you go. Yeah. Yeah.
Michael:Uta, I look, Jess did tell us how to say it properly. I'm pretty sure they're like, you don't pronounce the r. Is that right?
Tim:Yeah. That's that's right. And it's got a bit of like an l at the beginning, Luther. Right.
Michael:And I'm Okay.
Tim:Yeah. So and I'm very sorry if I also mispronounced that. Yeah. Yeah. I'm I'm yeah.
Michael:We do try. We do try. Fantastic. Well, I think, sorry. Finish your thought.
Greg:No. No. No.
Tim:I was finished. Okay. Okay.
Michael:Well, fantastic. Great to have you on, Tim. I like I said to Greg earlier today, it's it's nice to have a bit of continuity through these different episodes. You know, we had Jess earlier on, we had Samuel. I said, well, we've gotta get Tim because this continuity, there's a thread through those three people, you know, it's showing that the ripples are not just individual, but they're like bouncing between people for the different reasons.
Michael:You know, just coming to work with you, you going to work with, you going to work with Jess, just going to work with you, you know, landing in Laravel, all of this stuff like you don't know where those ripples are gonna land, which is, the the the greatest, I think, thing of it. Eventually, you end up making waves somewhere, for for a lot of us, that's going to be at Laracon this year. I hope I hope to see there. I, see that we've got several, Joe is Joe Tannenbaum is coming to speak this year. We announced that last week.
Michael:Jess is going to be in attendance. We've got a couple other, Laravel team members that are that are making the trip as well, which is exciting. So we're gonna, you know, have some of the inside scoop, we're gonna have all kinds of different ideas, new people, old people, people that have been around the traps but never really public. So I'm I'm really excited about the lineup that we've put together this year. I'm excited about all the things that we're gonna do this year and I'm excited to have the opportunity to to mingle with people, which was kind of lost last year.
Michael:Because by the time I came out in all of the breaks, everyone had dispersed into the wind because we didn't have the room for it. So, I'm I'm excited to to have the opportunity to mingle with people in the breaks and not just be like running backwards and forwards between between speakers on stage. So if you haven't, we've early bird tickets for that, are on sale until the end of August. So 6 weeks or so now. I don't expect that they will actually still be available until the end of August though.
Michael:I think I think we'll probably sell them out before then, which is fantastic.
Tim:So Get on it people. If you're if you're if you're planning to get a ticket, go get the ticket, like right now. Pause this episode, go buy the ticket,
Michael:come back for the last 2 minutes. Best your budget is get your budgets in line. Make it happen.
Greg:Best LaraCon in the world. The only one I've ever been to. So but
Tim:It is. There's something about the Laracon AU. Like, it's it's I don't know. It's it's special to me. I I I love it.
Tim:I love it.
Greg:Yeah. I think there's a degree of intimacy there that's probably gets lost at the bigger ones.
Tim:I think so.
Michael:Yep. We we try and hone that. I've said to Taylor a few times, I'm like, I can't I don't I don't see how you do it. Like, I I I went to New York in 2019 when they were at the PlayStation Theater when it was like 900 people, I'm like, I don't I don't understand, like this is not a good thing, like anyone can watch the videos at any time, but you cannot you cannot socialize with those people. You can't make the connections, and I'm like, I don't I don't like, we'll be 395, 400 this year.
Michael:I don't I don't even wanna go bigger than that, if I'm perfectly honest. You know, if we can run a nice event for that number of people and like, beyond that number, it's hard to do anything social. Like the the the venue that we're doing after dark out this year, is like that is it. Beyond that, I don't know where I take more than 400 people to a social event. So, yeah.
Michael:Hope hope to see you around there. And on on that note, this has been episode 14 of the Ripples podcast. You can find us on Twitter, on YouTube at ripplesfm. You can find Tim at Tim Mcdonald 87 on Twitter. You can find Greg at Greg Skorman and I am at Michael Dorinda and until next time, I will see you
Tim:all. See you. Bye.