Countdown to Laravel Live Denmark

In this conversation, Sandro Gehri shares his journey into software development, starting from his early experiences with computers and programming. He discusses the evolution of his career, the significance of testing in software quality, and the transformative role of AI in coding practices. The conversation also touches on cultural comparisons between Zurich and Copenhagen, highlighting the livability of both cities.

What is Countdown to Laravel Live Denmark?

Countdown to Laravel Live Denmark is a short podcast series where we chat with speakers heading to Laravel Live Denmark in August. Each episode is a quick 15-20 minute conversation about how they got into programming, what they're working on, and a sneak peek at their upcoming talk.

Mathias Hansen (00:10)
Hey everyone, welcome back to Countdown to Laravel Live Denmark. Today I'm joined by Sandro Gehri How you doing Sandro?

Sandro Gehri (00:18)
Great, thanks, and you?

Mathias Hansen (00:20)
I'm doing wonderful. So Sandro is from wonderful, beautiful Switzerland and I hear it is extremely hot right now. How are you surviving?

Sandro Gehri (00:22)
Perfect.

Yeah,

yes, I'm surviving. So my kids had to jump into the pool, but for me it's fine right now.

Mathias Hansen (00:34)
Or at least it's nice that they can do that. That sounds like a wonderful thing to do when it's so hot. So you're gonna come visit, actually we're recording this just a week before the conference. So you're gonna come here next week to wonderful, temperate Copenhagen. We're really excited to have you. I think it will be too. Hopefully not too much cooler, just a little bit.

Sandro Gehri (00:37)
Yeah.

Yeah, it will be a bit cooler.

Mathias Hansen (00:53)
So, Sosandro, you're course joining us because you're speaking at the conference. And as I've done with the other speakers, I would love to start out by hearing your origin story. What are your earliest memories of computers and programming and what sort of inspired you to get into this kind of stuff early on?

Sandro Gehri (01:12)
yeah, actually my, my father used to work as a software engineer as well, but, back then not everyone had a computer at home. So all my friends had a computer at home, but we didn't have one at home. So I, my first experience with computers were the houses of friends. we're playing some really old school games. And then a couple of years later, we got a computer at home.

Mathias Hansen (01:25)
Yeah.

Sandro Gehri (01:38)
And then my father brought back home two really sick books about Visual Basic because he had to learn Visual Basic back then, but he wasn't really interested in. But so I picked up the two books and started reading and it were really interesting. so, yeah, that's how I got into programming.

Mathias Hansen (01:45)
Ooh.

So Visual Basic, that must have been on Windows, I assume?

Sandro Gehri (02:01)
Yeah, that was Windows 95. I think the first release. Yeah.

Mathias Hansen (02:05)
Yeah.

So, do you remember what was the first kind of programs you created?

Sandro Gehri (02:13)
I don't know which was the first one, but the first that actually worked was, a little game. don't know if you know it, it's mastermind where you can choose the colors and then the opponent has to, guess the colors. So I really implemented this board game in, in visual basic. Yeah.

Mathias Hansen (02:23)
Yeah.

That's

really cool. That also sounds like a really great game you can actually implement and reason and the scope is like somewhat reasonable. You're not trying to implement, you know, a monopoly or something like that. That's really cool. Yeah.

Sandro Gehri (02:52)
Yeah, it was complex enough back then, but, but

not too much. Yeah. So I had quite an early success with this. Yeah. So, and the best thing is the computer could choose the colors for me and then I could guess the colors. didn't need someone else to set up the colors and decide if it's right.

Mathias Hansen (03:13)
That must have been a pretty wild,

right, yeah, it must have been pretty wild experience that you program something and you actually got the computer to play against, you can play against a computer. That's really cool.

Sandro Gehri (03:24)
Yeah.

Yeah. And yeah, it was fun. I could actually use the software by my own. Back then the internet was not that widespread. So I didn't gave the software to someone else to download or something like that. Not even on a floppy disk. It was just for me for fun.

Mathias Hansen (03:40)
Yeah, that's awesome. So were you just immediately, like did you immediately just get excited about programming during this? Was anything in any particular like aha moment where you were like, wow, I want to do this for the rest of my life.

Sandro Gehri (03:55)
not really. I found it really interesting back then, but then, when I was a bit older and I had to do an apprenticeship and then I worked as a telemetician. That's a combination between electrician and I'm telephony network, stuff like that. So I was more on the installation side. And after these four years, when I finished this part and I started to study.

Mathias Hansen (04:12)
cool.

Sandro Gehri (04:20)
in software development. And then I used to, or since then I used to work as a software developer.

Mathias Hansen (04:28)
So you went to school for software development? Did you go to, so you went to school for software development? You went, you got an education in software development or no? Yeah.

Sandro Gehri (04:31)
Pardon?

Yes, yes, I made a bachelor

degree back then, but already 20 years ago. It's a long time. Time flies, right?

Mathias Hansen (04:43)
Yeah, no, time flies, time flies.

Really cool. And so you got your degree and you just went out and started working as a software developer.

Sandro Gehri (04:54)
Yes, two friends of mine founded a web hosting company. So they needed someone to develop their software, basically a CRM back then. So I started building the CRM for them and then we attached all the stuff like the registering domains, setting up web hostings and stuff like that. And yeah, I worked there quite a long time, up until last year. So yeah.

Mathias Hansen (05:20)
wow, that's incredible.

So did you get to use some of your experience working with the telephone and networking installations on the web posting or the posting part of that?

Sandro Gehri (05:30)
Yes, not that I did the software development, but we set up our own data center and this was quite a network heavy task. So I could really use this experience from before. It was really helpful. But now I'm much more away from networking and stuff like that.

Mathias Hansen (05:42)
Yeah.

And I think that's also a trend in general, right? With all these cloud providers and even VPS servers and stuff like that. It's rare that you have companies that actually own their own, like have their own hardware and data centers and things like that. It's sort of abstracted away, right?

Sandro Gehri (05:58)
Yeah.

Yeah. that, yeah. And I

think all the topics like network engineering or software, that gets more complex. So you need to specialize in further than before. So then in the beginning, everyone did more or less everything, but now we are much more special specialized than the beginning.

Mathias Hansen (06:29)
Yeah, and also from a security point of view, Like the requirements are probably much higher now than they were just five or 10 years ago.

Sandro Gehri (06:37)
for sure.

Mathias Hansen (06:38)
Hmm, yeah. So you are not gonna talk to us next week about servers. You're gonna talk about mutation testing. And I'm really excited for this. So do you wanna give us a little bit of a short tease or preview into, in general, what you're gonna cover?

Sandro Gehri (06:44)
⁓ That's right.

Yeah. First of all, I really love testing. it's quite one of my hard topics. So I really love them. So mutation testing is a technique to ensure that you have a really high quality in your tests. It's not only, it's not a line coverage that only tells you which lines are covered. It actually tells you how well your code is actually tested. Not only.

in a quantitative way, like 10 out of 10 lines. It's more in a quality way. For example, you really have tests for the boundaries when you have rules from maybe you have a number that must be between one and 10. then mutation testing can tell you if you have tests for the lower boundary, the upper boundary and so on.

Mathias Hansen (07:50)
So basically helping you uncover test cases you hadn't even thought of or.

Sandro Gehri (07:54)
Yes.

There are multiple things you can get from mutation testing. The most obvious is of course, a missing test. The second one is maybe a test that isn't good enough. For example, when you have this boundary from one to 10 and you wrote your test with two and nine, you have tests, but they are a bit off. And sometimes you can detect redundancies in your code.

Mathias Hansen (08:17)
Mm-hmm.

Sandro Gehri (08:22)
So mutation testing can help you with your code quality as well, not only with your test quality.

Mathias Hansen (08:28)
That's really cool. So I can't help bringing up AI, because it's on everybody's minds all the time. And I wonder if all these AI coding tools have changed the way you write tests or the way you kind of workflow for testing things.

Sandro Gehri (08:32)
Yeah

yeah, of course it has changed the way I write tests. I really love TDD, so test room development, you write your test first. but that's not always possible. And then I always had a hard time when I implemented something to say, now I have to write all the tests and think about all the edge cases. And AI helps that a lot.

And I think AI is a good combination with mutation testing. Mutation testing helps you to detect where you still miss something and AI can help you implement it. With AI, I think I am more into writing my actual code and then let AI write my tests. Because yeah, I don't be, I don't care if the test is maybe not

Mathias Hansen (09:25)
Okay, yeah.

Sandro Gehri (09:32)
100 % like I would write it. At least it's readable and it does what it should do. But with my application code, I prefer to write it by my own or help AI to write the code and then refactor it. With tests, I usually don't refactor that much if I'm happy with the AI result.

Mathias Hansen (09:51)
That's really interesting.

Yeah, I can totally understand you there because, yeah, so making the code readable and following the conventions that you prefer. I can totally see how that's way more important for the main code base. And then for the test, you can be a little bit more lenient in exactly how the tests are written, as long as they're testing what they're supposed to test, right?

Sandro Gehri (10:15)
Yeah. Yeah. And in the last couple of weeks, I made good progress in that AI can understand my application and it can run all the commands. usually run on my own, like running tests, running the linter, running Rector, PHP, Stan stuff like that. So I could tell AI to do this all in the end. And then I have the code quality already a bit higher when AI tells me that. Yeah, it's finished with its task.

I think maybe past or the mutation testing talk I gave will be in past PHP. Maybe past PHP will has its own MCP protocol integration and it could even test more specific or even smarter. Yeah. It's, it's something that I have in my mind. I haven't actually done something into in this direction. Maybe I have to talk with you.

Mathias Hansen (10:58)
I'll be even smarter than just, yeah, yeah, yeah, yeah, yeah. Hmm.

Sandro Gehri (11:09)
in Copenhagen about this topic, but I think this would be really, this could be really interesting. Then it could be more specific about which tests to run and interpret the results easier than just from the command line. But to be honest, it already works pretty well.

Mathias Hansen (11:12)
That sounds like a... Yeah.

So I think you, Nuno, and also TJ Miller need to sit down and have a really good conversation about this. Because I think having Prism in the mix to actually interface, know, create the bridge between the LLM and the MCP server, wow, that is really, really interesting.

Sandro Gehri (11:33)
Yeah, probably.

Mathias Hansen (11:43)
Really cool. So, yeah, so that's definitely changed the way you approach testing, it sounds like. Is it mostly a way to be more or is it also a way to yeah, essentially write more tests than you would otherwise have done, like basically expand your test suite quicker?

Sandro Gehri (12:00)
Yeah,

it's primarily writing more tests. In the really critical part of my application, I was already quite picky to test all the edge cases before AI, but now you can do it on either on the broader part of your application because AI is quite smart about edge cases in testing.

Mathias Hansen (12:20)
So I'm going to ask, are you using Clot Code or Cursor or what's your favorite tool?

Sandro Gehri (12:26)
at the moment, my favorite tool is Juni, in PHP storm. That's the AI agent from chat brains. ⁓ yeah, it's, it's, I really like deep integration into PHP storm. and it's really smart about the context, which files you have opened recently. So when you, for example, when I write an action and I tell it to write another action, then it's smart enough to go to the action from before and.

Mathias Hansen (12:33)
Yeah.

Sandro Gehri (12:54)
check out what the structure is and then try to implement it in the same way. That works really, really great.

Mathias Hansen (13:00)
That's really awesome. I have not had the pleasure of trying out Jun yet, but I'm a huge fan of PHP Storm. my daily driver. So I would definitely want to check it out. And everybody listening, if anybody's listening out there, you should check it out too.

Sandro Gehri (13:08)
Yeah, you should give it a try.

Yeah.

Mathias Hansen (13:14)
So Sandro, I actually don't remember. Were you at Live Alive at Denmark last year or no?

Sandro Gehri (13:21)
No, sadly I wasn't able to make it last year. But I'm really looking forward to come to Copenhagen this year. I haven't been to Denmark or Copenhagen in my life yet, so it's my first time there. I'm really excited to see the city and the vibes of the city, the famous bicycle city.

Mathias Hansen (13:25)
Well we glad you're able to make it this year.

I mean... Yeah!

And what better time to go to Denmark than to go for a level conference, right?

Sandro Gehri (13:50)
Yeah, that's the perfect combination. And I have one day before and one day after to wander around in the city.

Mathias Hansen (13:59)
Great.

So I talked to lots of people, both speakers and attendees, and a lot of people are coming.

who has never visited Denmark before. So there's gonna be a lot of people who are just looking for things to do. And I always ask all the speakers, I'm gonna ask you as well, is there anything particular you've heard of or seen in Copenhagen that you would like to experience while you're there or see or eat or what have you?

Sandro Gehri (14:10)
Okay.

there's nothing special I could say here, but, maybe you have already heard of this famous rankings about the best or the most livable cities in the world. And there's always a competition between Zurich and Copenhagen, which one is first. So I really look forward to compare Copenhagen to Zurich because I don't live that far from Zurich. So I know the city pretty well and yeah, excited to see.

Mathias Hansen (14:46)
really? I didn't know that.

Yeah.

Sandro Gehri (14:58)
how Copenhagen is.

Mathias Hansen (14:59)
I like that, that's really fun. That's a really good idea to look at from that point of view. Yeah. And I mean, it's also not really a fair comparison because we intentionally put the conference at what is supposed to, hopefully it's the nicest time of year to visit Denmark. Unfortunately, if you visit in winter, it's gonna be winter, it's gonna be really dark for most of the day. As you know.

Sandro Gehri (15:20)
Yeah, yeah,

it's in the north, of course. But in the summer we have longer sunshine per day. that's awesome.

Mathias Hansen (15:24)
Yeah.

Yeah, for sure. Yeah.

Well, it was really great chatting with Sandro and hopefully people are maybe listening to this on the way to Live Live Denmark. And if you are, we are very much looking forward to seeing you and yeah, and having a fantastic time at the conference. So thank you so much, Sandro. I'll see you very, very soon.

Sandro Gehri (15:55)
Thank you and

see you soon. Bye.