From Amiga to AI with Rasmus Nielsen
Mathias Hansen (00:09)
Hey everyone, Mathias Hansen back with another episode of Countdown to Laravel Live Denmark.
I'm joined today by Rasmus Nielsen who's going to be on stage for Laravel Live Denmark in August. Rasmus, how you doing?
Rasmus (00:21)
Hey, Mathias good to see you. Yeah, I'm great. How are you?
Mathias Hansen (00:24)
I'm doing good, thank you. So Rasmus, before we go into your talk, let's start by talking a bit about your origin story. How did you come into being a developer working computers? What are your earliest memories?
Rasmus (00:37)
Yeah, well, as I was growing up, actually, I remember we always had computers in the house, even though my, I mean, my dad, was, he was a taxi driver by profession, but he was very, you know, fascinated with computers, always reading magazines. And, and so I remember in the like early mid nineties, we, had an Amiga at home where I would play Pac-Man and, just that kind of thing. And then, I mean, later on we would get Windows 95 and, and, and
all the subsequent ones. So yeah, I guess I was always exposed to computers at home.
You
Mathias Hansen (01:14)
Yeah, so you say you played Pac-Man on the Amiga? Do you remember any other games from that time?
Rasmus (01:20)
It's such a long time ago, so I would say that the memories are very blurry. But as for web development and programming, I think it started one summer break from school when I was 11 years old. And I was on Amazon Messenger with a friend from class. And he sent me this link to a website called HTML.DK. That was kind of like a forum and had a bunch of tutorials.
Mathias Hansen (01:23)
Yeah.
Mm-hmm.
Rasmus (01:46)
And so he sent me that link and I was like, what's all that about? And he was like, yeah, this way you can like make websites and stuff like that. And I remember I was a bit skeptical at first. was like, you know, what's use it is it to me, but I still like, was bored. I just kind of started checking out this tutorial and before I knew it, you know, I made my first website and I thought it was really cool. And I just kind of, it kind of stuck with me from there.
went on to CSS. And yeah, so at an early age, I guess I kind of started doing websites and then went on with programming from there.
Mathias Hansen (02:20)
So Rasmus, you're of course a level developer and work with PHP. Have you always worked with PHP or have you also worked with other server-side languages or done desktop apps or anything, even mobile apps, stuff like that?
Rasmus (02:33)
Mmm.
Yeah, so PHP was my first like server side program language. And I actually remember, you know, after doing, after making my first website with HTML and CSS, was like, Hey, this is, this is pretty cool, but what can I do with it? You know? And so I remember sitting down reading, reading up, like how does one like make a login system? How does one make, you know, make it do a bit more? And I remember seeing like on one hand, you
At the time, least, was kind of like, on one hand, you have PHP, which is kind of like the open source and a bit more community driven. And on the other hand, like it would be something like s.net, which was, I remember reading at the time was a bit more closed. It was a bit more Microsoft and, you know, but they kind of could do the same thing. so it wasn't like some big strategic decision or anything, but I was like, hey, PHP sounds pretty cool. And so that's kind of what I went with.
And I would say that's the one I've been doing ever since. But of course, I've also done a bunch of Node.js and just dabbled in other things. During the whole crypto thing, I did a bit of Solidity and just exploring and testing out different things. Yeah.
Mathias Hansen (03:47)
So you've always been curious, trying new technologies, exploring new things.
Rasmus (03:51)
Pretty much, pretty much. Also, know, kind of touching on your chat with Dan Johnson, I've also done a bit of hardware and bit of Arduino and that kind of thing, but yeah. Well, I'd say just as I've always been interested in programming, I've also, you know, I have this fondness of hardware and, you know, just kind of playing around with electricity and.
Mathias Hansen (04:03)
Ooh, tell me more.
Rasmus (04:15)
You know, would always, as a kid, I'll always like take apart alarm clocks just to see like what's inside, how does it work? What can I do with it? you know, Lego Mindstorms was probably my big kind of first investment with my allowance. I think I saved for like a year to go and buy the big Lego Mindstorms kit. you know, it was pretty cool, like, you know, being able to just building robots, making see like just seeing what you can do with.
Mathias Hansen (04:25)
⁓ yeah.
Rasmus (04:42)
with electronics basically.
Mathias Hansen (04:44)
Yeah, so LEGO Mindstorms was slash is this core you can program, right? And like attach motors and lights and sensors and stuff, right? And you have this whole... think they had a... Rasmus, I think they had like a building block system or something, like block programming or something, is that right?
Rasmus (04:55)
Hmm.
Yeah, totally. It wasn't like you sat down and wrote any scripts or anything, but it was very much like these building blocks that you can wait for two seconds, then turn on this motor and do this thing and wait for if this input meets a certain threshold and do this. So it was very much like the same kind of logical faults behind it, but a lot more visual for, mean, obviously so that kids could also do stuff with it.
Mathias Hansen (05:27)
That's really cool. Do you remember anything particular you built with the Mindstorms robot kit?
Rasmus (05:33)
Yeah, so I think I built kind of this robot. It was almost like an animal that could sense with where it was. Well, anyway, it was like this little car that had sensors so it could stick to a lane or it could drive on a table without falling down.
When it feels it's at the edge of a table, then it reverses and changes direction and that kind of stuff.
Mathias Hansen (05:58)
That's really cool. That's really cool.
Rasmus (06:00)
It's great fun for sure.
Mathias Hansen (06:02)
So you have these dissensors that were following a line around on a piece of paper or whatever.
Rasmus (06:07)
Yeah, there was also like a light sensor that could kind of sense color, but not really, but it could certainly like sense brightness. And so in that sense, you could also make it follow a line.
Mathias Hansen (06:17)
That's really cool. So have you done any projects with hardware recently? You talk about Arduino boards?
Rasmus (06:18)
He he.
Yeah, I mean, I I do, you know, kind of came into play when I was in high school. I kind of had electronics as a subject because I was very interested. And I think, you know, at that time, we for one of our projects, we built kind of like this laser tech game where we actually like build out the components ourselves and with with hardware and all the resistors and transistors and everything it required to.
kind of have like a belt strapped on with a sensor and then we could go around and shoot each other in school. That was pretty fun. But the most, but the most recent one was I built like a dog fooding, like a kind of like a fooding for my dog. whenever, you know, he go presses a button or something with his nose, then he will get some treats and stuff like that. just a little side projects.
Mathias Hansen (06:58)
That sounds super fun.
That is awesome. So Rasmus, you're going to be speaking about concurrency with PHP and Layable at Layable Live Denmark. So there's lots of different ways to handle concurrency with PHP. Do want to give us a high level intro to the direction of what you're going to cover?
Rasmus (07:16)
Pfft... Hehehe...
Mmm.
Yeah, so I mean, it's very much a scratch my own itch kind of thing where, you know, because PHP is a very synchronous language and most of the time we don't really have to know about it or dealing with concurrency. But I'd say as part of my day job, we kind of run a lot of kind of microservice architecture with with Laravel or distributed services.
So specifically, we are very exposed to some larval applications having to make HTTP requests across the stack. that kind of, especially if you want to run things in parallel, things can very quickly become a little more complicated than if you just make one request and
wait for it to finish and then make the next one. And since also I've done a bunch of JavaScript as well, mean, the whole concurrency model is just very different there. So that will kind of be my starting point of, around HTTP requests and how, you are making a lot of HTTP requests, how can you kind of orchestrate it and basically make your application faster?
Mathias Hansen (08:54)
Yeah, so that was my next question was, is essentially a big part of this is making your application more responsive ⁓ by speeding up requests.
Rasmus (09:02)
Yeah.
Exactly. but I think also, you know, one thing or something I'm also gonna, obviously I'm gonna spend some time like digging into what even is concurrency and is it the same as running things in parallel and what is blocking IO and how do we encounter it in general in our applications? And then of course, what can we do to make it faster?
Mathias Hansen (09:25)
Yeah, because that's also the classic concept of multi-threading, right? And running things in threads. And that's a whole nother can of worms, which is separate from this, right?
Rasmus (09:35)
It is. But it's definitely also a valid approach if you have, especially if you have a lot of CPU intensive work that you can do in parallel, then multi-threading is definitely a good option. But it's not necessarily the most efficient option or hardware efficient option if all you're doing is waiting for the applications to respond. that's something that I didn't know very much about before I started this whole journey the past couple years outside.
Mathias Hansen (09:55)
Hmm.
I guess complexity is a big thing too, like trying to maintain your code that does things and concurrently you're in parallel and whatnot. Especially with threading, I've seriously gotten bitten in the past because when things truly run concurrently, it can get really complicated and you can get some weird crashes because of things trying to be accessed or written to at the same time.
Rasmus (10:23)
So sure, it can
spin out of control very quickly if you don't know what your app is doing, or even if you do, it's just you don't necessarily foresee those problems upfront.
Mathias Hansen (10:33)
Yeah, so I guess you're going to talk about some methods that are a little bit easier to manage than that.
Rasmus (10:39)
Yeah, again, with the whole scratching out, it really is like how to optimize or minimize blocking IO basically and optimize the things that you can do concurrently and then without necessarily spinning up more processes, but just for instance, firing off multiple HTTP requests and then.
waiting for some of them to return and then do a bit of processing and then do some other things. And specifically, we will also touch on concurrency frameworks such as ANPHP and other frameworks like that and how they actually work under the hood.
Mathias Hansen (11:15)
That's really exciting. That's really exciting.
Rasmus (11:17)
you
Mathias Hansen (11:18)
So Rasmus, wanna switch gears a little bit and actually talk a little bit about...
AI coding is huge these days. And I know you're from the Danish layerable community and we've gone to meetups together. I saw a talk you did recently on basically the same subject, so really exciting. But I know that a lot of the talks recently has also been about coding with cursor or things like that. How is AI, or
Rasmus (11:27)
Mm.
Thank you.
Mathias Hansen (11:54)
LLM driven programming affecting your day-to-day job right now or your workflows.
Rasmus (11:59)
So, I mean, it kind of depends on which projects and also how much, on the projects that I kind of control myself or where I know that I can, where it's okay to utilize AI, I do utilize it a fair bit. I think, well, I say my favorite tool at the moment is Cloud Code, which I have been using
Mathias Hansen (12:19)
Mm-hmm.
Rasmus (12:22)
think for like Harvey, you know, it was, was pretty early on to, get in the early, early access program. And I have used it quite a bit since. And I, the way I use it, I would say the way I use cloud code is it's, it's very much like a junior developer or kind of we will, we'll go through the plans together and, and then I'll, I'll kind of monitor it and make sure that it's on the right path. And, but it's basically, you know, just.
writing all the boilerplate code or scaffolding all the code and then I'll jump in and finish it and make sure that everything is the way I want it to be. But I think it is a really good way to just get more done. And for me, I don't find so much that I lose control or that I forget how to do it myself. It's just that it can just do it a lot faster than me. And I've written this code.
a hundred times before I don't need to keep writing the same things. So in that sense, you know, it's a bit more like just do all the grunt work that I don't really want to do myself. And then, know, on some other clients that are very enterprisey, it's very much, there's a lot of compliance and we, you know, it's, there's some limits to how much of the code base can I let the AIC just for the sake of security and yeah.
Mathias Hansen (13:23)
Yeah.
Rasmus (13:40)
internal software.
Mathias Hansen (13:41)
So there's a big challenge still with how can we do this securely and in a compliant way that follows compliance procedures, right?
Rasmus (13:50)
Exactly. yeah, so, I'll and sometimes I do miss it, you know, to that there is an AI that just has all the context of the project when it's like, well, I can write these tests myself, but why not let the AI do it just because or at least like have a crack at it and then I'll adapt it.
Mathias Hansen (14:10)
Yeah, take it for a step, get things scaffolded so you can have a base point to jump off of. ⁓
Rasmus (14:16)
Yeah, yeah,
exactly. But also I'd say like just having ChachiBititi, having Claude, like just as a chat to have a chat about things. I mean, a lot of the times I also find that it works a bit like rubber ducking, like even just writing out the problem. It's like, hey, I think I just solved it in my head. I don't even need to send this query, but you know, just saying it out loud basically can do a lot. And then of course, like...
Mathias Hansen (14:27)
Yeah.
Rasmus (14:39)
you know, just, just having the AI respond to you and, and, you know, brainstorm on some ideas or some naming or I use that a lot throughout my day as well.
Mathias Hansen (14:48)
Yeah, so you're talking a lot about, hey, it makes things lot faster, right? So one thing I experience is it definitely increases productivity significantly, but it's kind of having the effect of it just raises the bar and the ambitions of what we want to get done and what we think we can get done suddenly. So it doesn't really, it's not really making a...
be workless. It's just making us increase our ambitions like crazy and try to get so much more done because now it seems possible. Do you see that as well in your work?
Rasmus (15:25)
I
completely agree. I was going to say I never felt more busy than I currently do. And that sounds bad, I don't necessarily see it that way. It's just more like, I don't feel that I'm running out of things I want to build quite the contrary. Just the threshold of when I want to build it has all of a sudden, with code being a lot cheaper or a lot faster, it just means that there's even more problems to tackle.
And I feel that in my own side projects as well, that all of the sudden I'm able to complete features a lot faster and just, yeah, improve the product essentially.
Mathias Hansen (16:03)
Yeah, I think one of my big fears now is essentially we're going to write so much more code and build so much more infrastructure to maintain. So that's definitely a long term like considerations to have or consider for, my God, we're building all this stuff, we're shipping all this stuff. Well, we have to support it forever and maintain it and testing and things like that. That's kind of interesting.
Rasmus (16:16)
Mm-hmm.
Yeah. Yeah.
Yeah, yeah,
So, I mean, hopefully AI will also be there to help with that because otherwise we all screwed. Yeah.
Mathias Hansen (16:38)
Yeah, please help with that too.
That's really cool.
So Rasmus, you live in Denmark, but you are kind of on the western side of the country. You're actually near Aarhus, right? Which is the second largest city in Denmark.
Rasmus (16:55)
That's right. The second largest city that nobody outside of Denmark has ever heard of. But it is. I think here in Aarhus, the local politicians like to call it the smallest big city you've ever heard of or will ever visit.
Mathias Hansen (16:59)
It's a really really lovely city and there's lots to see in Aarhus.
that's a nice slogan, yeah.
Rasmus (17:13)
Yeah, but it is lovely city and it's very manageable to get around and it has most things you need, but obviously coming to Copenhagen or even big cities outside of Denmark, it's, yeah, it's, we were just in London and I mean, that's like a whole lot of scale of how, what you can do and see how big the city is.
Mathias Hansen (17:33)
Yeah, for sure. That makes perfect sense. But either way, is there anything in particular you'd to see or do or eat or experience when going to Copenhagen for the conference?
Rasmus (17:44)
Yeah, I mean, I think there's a lot of cool places. There's a lot of good restaurants. Last time at Leroy Live, we did the checkout war picks that think Jacob mentioned on the other podcast. ⁓ Yeah, lots of good places to get like, you know, good craft beer and I like a good IPA.
Mathias Hansen (17:56)
Yeah, hit that down.
Yeah.
Rasmus (18:06)
And I would say one thing, if the weather is nice, I have often seen people sailing around the river in those go boats. I mean, that just looks really fun and just a good place to enjoy sunny weather and just hanging out with friends. So maybe if the weather allows it and there's some people around, then we can all hop in a boat and go for an hour or two.
Mathias Hansen (18:15)
Yeah!
That sounds like so much fun. That's a small electric boat so you can rent, right? And you're gonna sail yourself without any requirements. You just go, yeah. I actually did that. We had some friends visiting a couple years ago and it was really lovely day. We got on one of those boats. And there's no canopy or anything on the boat. They're completely open. And we got like halfway through the trip to the other end of the canals in Copenhagen and it started pouring.
Rasmus (18:40)
Exactly. Yeah, yeah, yeah.
Hmm.
Hahaha.
Mathias Hansen (19:03)
And it's a really, really slow boat. This is not a speed boat. So that was a great merry. It was certainly a great merry.
Rasmus (19:06)
No, no.
I mean that's the thing like being out in the open, being underwater, it's like yeah you have to challenge your inner sailor and just go with whatever the weather throws at you, especially in Denmark I guess.
Mathias Hansen (19:26)
Some might say you're in a Viking.
Rasmus (19:28)
Yeah, yeah.
That's it.
Mathias Hansen (19:29)
Alright, well, we should definitely make that happen. That could be so much fun. Maybe get a small fleet of boats for the conference. That'll be fun. Alright, well, thank you so much for chatting with me, Rasmus. I'm really excited for your talk and to see you at Laravel Live Denmark.
Rasmus (19:33)
Let's do it.
That would be so much fun.
Yeah, my pleasure. I'll see you there. I look forward to it.
Mathias Hansen (19:49)
That was Rasmus sharing his journey as a software developer If you want to hear more from Rasmus, come see his talk at Laravel Live Denmark. Go get your tickets at laravellive.dk
