From Stop Motion to Software Development with Dan Harrin

Mathias Hansen (00:10)
Welcome back to Countdown to Laravel Live Denmark. I'm your host, Mathias Hansen. And today I'm here with Dan Harrin Dan, how are you doing?

Dan (00:16)
Hi, I'm doing great. Thanks for having me on.

Mathias Hansen (00:19)
Thank you taking the time to come on. I'm excited to chat with you. I never chatted with you before, so this is going to be fun. Yeah, likewise. Yeah. So Dan, you, of course, going to be speaking at LaveLive Denmark here in August. We're really excited to have you. We're really excited to hear more about Filament 4, right?

Dan (00:25)
It's nice to meet you. Yeah, it will be fun.

Yep, yep, never visited Denmark, so it'll be my first time in Copenhagen and in Denmark. I've only gone up as far as the Netherlands, so it'll be interesting to see the differences. Yeah.

Mathias Hansen (00:47)
cool. Yeah. So you know,

a little secret is we have the conference in August because we're trying to do it at like the, you know, the best time of year weather-wise. Can't guarantee anything, but hopefully it'll show, you know, Copenhagen will show itself from its good side during the conference.

Dan (01:01)
No. ⁓

Nice, yeah, yeah, I mean slightly more chilly than the UK I think, like since it's a little bit more north but yeah hopefully it'll be good. In August it's quite unbearable in the UK anyway so it'd nice to have a little bit cooler. Yeah, yes, yeah.

Mathias Hansen (01:19)
Right, it's just on that edge of like miserable or like really nice, right? You never

quite know. Do you have crazy weather in the UK right now as well?

Dan (01:29)
Yeah, we had a heat wave all last week and now it's kind of a bit stormy, a bit rainy, but it's kind of a bit of respite from the temperatures we had. So it's kind of okay to be honest. Yeah, yeah, yeah.

Mathias Hansen (01:37)
Yeah.

It's like, what season is this? I'm not really quite sure. It's just, yeah. well.

So Dan, I always like to start out by hearing from the speakers their sort of origin story. How did you first get into computers and technology? What are your earliest memories?

Dan (01:56)
Well, always remember having a computer in the household. But I think the first thing that got me really excited about computers was doing like stop motion animation. So like, I had a little webcam that I connected to the computer and there was this software, it was called like SAM or something. And basically you could take the photos on the software and then change the key frame rate and everything. And add sound and stuff. So that was quite fun. And for some reason,

Mathias Hansen (02:06)
yeah!

Dan (02:26)
I then was interested in websites and everything. So we found this website called HTMLisEasy.com, I think. ⁓ And I think you could actually download all of the HTML and CSS files for the website so you could just have it locally. Because I think the internet was pretty slow. ⁓

Mathias Hansen (02:35)
Okay.

Like templates basically

or?

Dan (02:47)
No,

like you could download the actual instructions from the website and you could just load them up in a local web browser. So it was quite easy to get started with, but I was just using notepad at that point to just write HTML by hand, no auto complete or anything. And I think I use notepad++ a little bit, but I feel like I most of the time I spell on notepad at that point.

Mathias Hansen (02:52)
All right.

Mmm.

Dan (03:06)
So I did, I did a bit of that. I didn't really venture much into JavaScript at that point. It was major stage human CSS. I think JavaScript scared me a bit. but then I got into, ⁓ yes, yeah, yeah. Then I got into the, like Raspberry Pi ecosystem a bit when I was, when I was pretty young, probably like 10 or 11. I think Raspberry Pi's were kind of like a, an invention out of like Cambridge university at that time. So.

Mathias Hansen (03:12)
Mm-hmm.

We've all felt that.

Right, yeah.

Dan (03:33)
It

was really, really young, but there were these PyJam meetups that were quite popular and they were like scattered around. And there was a local one that I attended. So I got to meet lots of people and hear about the stuff they were doing with hardware. And I learned Python and stuff to control relatively Py inputs and outputs. So that was like my first proper programming experience because HTML and CSS is more of markup, I guess. And then I think

that gave me the courage to venture from Python into PHP and JavaScript. So then I was able to like build on top of the website skills that I'd done. And I feel like at that point I was probably like 12 or 13 and I knew family members and people who wanted websites done. So I made some e-commerce websites like WordPress or whatever. And I made some, I think my first experience with Laravel was...

Mathias Hansen (04:19)
Yeah.

Dan (04:23)
through October CMS, which is like a Laravel-based CMS. And I built a few websites with that as well. And then from there, I then learnt Laravel based on the October CMS work that I'd done on top of it. So yeah, that's kind of my origin story.

Mathias Hansen (04:37)
That's kind of cool that OctoberCMS

was your entry into level.

Dan (04:42)
Yes, yeah, I was just looking

for a better WordPress that was more customizable really. October CMS was pretty good for that. So it was nice.

Mathias Hansen (04:47)
Right.

That's awesome. You kind of caught me with stop motion, so I kind of want to dive a little bit back into that, because that's really cool. So what kind of stop motion movies did you do? Because I actually remember doing stuff like that with like Legos. Did you do something like that?

Dan (04:57)
Yeah, yeah, yeah, that was fun.

you

Yeah, I think I did some with Lego.

Yeah, I think Lego was the easiest one to do, to be honest, because I definitely did some with clay as well. ⁓ But that's more difficult and the pieces get more brittle over time and everything and the consistency between them. You can see fingerprints and everything. So I think Lego was... I probably did most of it with Lego, to be honest, because it was much easier. on top of that, I also did programming with Lego a bit with Lego Mindstorm.

Mathias Hansen (05:13)
Oh yeah, yeah, yeah.

Dan (05:33)
and stuff like Lego Technic pieces with motors and sensors and things.

Mathias Hansen (05:34)
Yeah, yeah.

That's really cool. But I guess this was probably, was it pre YouTube these days or?

Dan (05:44)
I think YouTube was probably in its infancy. I'd say I didn't use it though at that point. yeah, pre YouTube in my life. Yeah.

Mathias Hansen (05:47)
Yeah. No, no, no, no. That's really cool. Yeah.

So October CMS and then Interlayerable. How did filament come about? That was also out of a need, I assume.

Dan (06:02)
So Filament, I didn't found Filament originally. ⁓ It was founded by a guy called Ryan Scherler in 2020. And he was a developer that was working on a CMS built on LiveWire, because that's what really interested him. And I met him on the LiveWire Discord server, which I ran during lockdown.

Mathias Hansen (06:05)
Hmm?

Dan (06:22)
and he was looking for someone to collaborate on the project to do more of the backend side of the framework. So I joined him and I worked and built out the backend side of version one of Filament. And then he worked on like the front end side. So we released that together in March of 2021. And then he was expecting a kid, so family took over and everything. So...

I then took it on from there myself and I've built a team around me that now maintain the project with me. So I think there's probably like 10 team members now, which is great. But we all handle different parts of the project. So I handle like most of the code side. I have a couple of people who also contribute some bits on the code side, but then some of them handle support for the community and plugin reviews and marketing.

So it's kind of a real variety of like talent that we have concentrated in the project which is really nice.

Mathias Hansen (07:20)
Yeah, I mean, that makes sense. It's also a large project and it sounds really nice that you have actually a team assembled. So there's hands and brains to work on things. So are people sort of all over the world or like, where are they? Are they geographically close to you or how does that work?

Dan (07:28)
Yes, exactly. Yeah.

No, no, not at all. No, I think

the closest person to me is probably Zap and he's in the Netherlands. Then we've got Dennis in Germany. Adam and Alex and Adam and Alex are in the US. Kenneth is in Guatemala, I think. He's originally from the US, I think.

Mathias Hansen (07:44)
Mm-hmm.

Dan (07:54)
Leandro and Saeed are from Brazil and Hassan is in Iran and I hope I haven't forgotten anyone. Ryan Chandler, also is like a of a founding member of the project as well, he helped us a lot, especially in the early days and he's also from the UK.

Mathias Hansen (08:06)
Yeah,

cool. So you also feel the time zone struggle once in a while trying to coordinate or is everybody pretty async?

Dan (08:13)
We don't often have

Yeah, I mean,

we don't often have that many like team calls, but I guess as long as you have a good scheduling tool, it's usually okay. We can usually find a time that suits everyone. But yeah, we all work asynchronously. And to be honest, it's good for the project that people work across time zones because like the users are across time zones, especially like support and stuff, like people in Europe for support and people in South America for support. So it means that there's quite a lot of coverage there as well. So that's quite good.

Mathias Hansen (08:24)
Yeah.

I- that's- that's interesting.

Oh yeah, that sounds amazing, of course it's a worldwide project, does that make sense? You just casually mentioned having a good system for organizing all this. Are you using any specific tools? It's not just GitHub issues, presumably?

Dan (08:49)
Yes.

Honestly, GitHub issues are my to-do list. So anything that was on GitHub issues, like the vast majority of the tickets are either feature requests that I've accepted or bug reports that I'm assigned. And if it's not on issues, it's usually not something that's on my radar. So issues and discussions and pull requests are the three main places where I organize the project. But then we also have like Discord, which is where most of the support happens. And I'm chatting with the core team over there a lot of the time.

Mathias Hansen (09:03)
Hmm?

Dan (09:25)
But yeah, apart from that, we just have a few organization things that I have shared with specific members of the team for things like DevRel. So if we have plans for podcast episodes, I might just use a Google Doc for that. Nothing really fancy though. Yeah.

Mathias Hansen (09:40)
Yeah, that's

cool, but it sounds like everything is really well put together and organized, which is always nice.

Dan (09:44)
Honestly, yeah, it doesn't

require that much organization, but I feel like it doesn't. We're not in a bad place with that.

Mathias Hansen (09:51)
You make it sound

easy, but I bet it's a little bit more to it than that. Cool, we are fortunate to have you come and talk about Filament 4. how are you approaching this talk? Is it going to be live demo, or how are you going to structure it?

Dan (09:55)
Yeah, sometimes.

Yeah, so I've put together a few live demos of new features and things that I can present in kind of like slides, but within an app. So I can just click through the different demos and demo them quite easily. So they are live demos. I'm not writing too much code though. There is one specific.

Mathias Hansen (10:20)
sweet.

Dan (10:26)
demo that I write from scratch that interacts with an API. So that's kind of the most risky part of it, to be honest, because the API might go down, who knows. And apart from that, there's also another demo that compares some like performance things between version three and version four. So I've got that lined up, but yeah, most of it is live demos and just me talking through things. I did have a ton of slides and I ended up deleting most of them because I just couldn't fit it all into half an

That was

Mathias Hansen (10:52)
It's a good problem to have to try to pare it down, but it's also difficult, right? ⁓ So, it must be incredibly difficult to architect something like filament, given how flexible it is, right? Because it's incredibly powerful what you can build with filament.

Dan (10:54)
It always ends up like that. Yeah.

Yes, no, is. You have to constantly think about the different use cases that each component is going to be inside and like the context around it. So like you might be using some of the components within one of the app and panels that we have in the framework, or you might have them in your own live component. And it's like a balance between how is the functionality, like the backend functionality injected into the component? How is the styling provided in all of the contexts? Like we need to make sure

that the styling gets loaded properly and that it isn't broken if you have CSS that's kind of overriding things. And also how the JavaScript is just distributed. So we have like a whole asset system that handles like versioning and everything for the JavaScript and asynchronous loading for some Alpine components. So yeah, like the system is, has a lot of its own standards that it uses. And those standards are used by the core components, but also any plugins.

think

about documenting all of the different mechanisms for the plugin developers as well to be able to build on top of those. So yeah, it's quite complex to work on everything and also keep the documentation up to date.

I think actually structuring the documentation is probably one of the most difficult things that I've done because so many different things can be used in many different ways and allowing the content to be accessible in the right place for the user to find it is very difficult because there is a lot of it and you might use a component in many different places but I don't really want to duplicate too much of the content across the documentation.

Mathias Hansen (12:40)
Right, yeah.

Dan (12:40)
as well.

So that is really tricky. I think that's one of the most tricky things to be honest.

Mathias Hansen (12:45)
I think documentation is also something that is so important, but that many people might take for granted, right? Of course there's documentation, right? But it's not easy to structure and write and, you know.

Dan (12:57)
Yeah. And it's very easy

to say, I want more examples in the documentation. But if I had some more examples, like nine times out of the 10, they're not actually going to be useful as well. And also I don't want to add too many examples, then push down really useful content in the documentation and hide that. So I've kind of.

started enriching the documentation with more interactive components, like collapsible sections and things. So I can add tons of detail to the docs without actually preventing the user from scrolling past it really easily, which is good.

Mathias Hansen (13:21)
cool, yeah.

That sounds really helpful so you can sort of hide things a little bit if you need to so it doesn't, it's not supposed be both, right? And I guess documentation is also one of the strengths or like original big things the layerable got known for was like having really good documentation and sort of showing how that makes it easy to, or easier at least to pick it up and build things with it. So it's really important.

Dan (13:33)
Yeah. Yeah.

Yeah.

Yeah, I think one of the biggest things that I took

from Laravel's documentation when I was writing filaments was about how the structure of the framework shouldn't necessarily dictate the structure of the documentation. Like if you take Laravel's documentation, like just from memory, like there's a database section that's completely separate to the basics and digging deeper sections. Now, if you were structuring that based on the framework, you might have like a section per

Mathias Hansen (14:10)
Mm.

Dan (14:14)
Illuminate component for example and that's yeah, and that's kind of what I wanted That's what I was trying to do with filament for a very long time like having the form components separate from the tables from everything else and then having like panels separately But now I've just learned to integrate things in a more natural human way that kind of breaks my brain a bit because it doesn't actually adhere to how the project structured at all and in theory like it shouldn't work, but it works much better and Laravel does that very well by

Mathias Hansen (14:16)
Right, like per namespace essentially, yeah, yeah.

Dan (14:44)
making sure things are in the place you expect them and highlighting the most important parts of the framework like the database and pushing that, like pulling that away from just being lost with the rest of the features.

Mathias Hansen (14:55)
Like having

solid conventions that are sensible you could argue, yeah.

Dan (14:58)
yeah, yeah, but also

in the documentation being able to break the conventions of structure to find a new structure that's more relevant for a particular feature as well. Yeah, yeah, yeah.

Mathias Hansen (15:03)
Hmm.

to better communicate. that makes sense. Interesting.

This is really good feedback. I have to rewrite or at least be part of rewriting our API documentation later this year. So I'm taking notes over here.

Cool, well Dan, it's a very short episode, or they all are, so we're almost running out of time, but I do want to ask you, since it's your first time in Copenhagen, mentioned, anything in particular you want to see or do or eat or experience while in Copenhagen?

Dan (15:35)
Yeah, when I visit new cities, especially European cities, because they have the best architecture, I do like looking at the buildings and how nicely presented the city is. And I'll be bringing my partner along after the conference so we can explore the city a bit. And she's really into looking at cathedrals and fancy buildings, so we'll probably be visiting wherever we can find that looks nice.

Mathias Hansen (15:41)
Hmm.

Yeah.

Copenhagen is certainly great for that, there's lot of interesting old buildings, churches and stuff like that. think one of the big tourist attractions would be the Round Tower, which is like the Eiffel Tower of Denmark, just a lot less impressive. And very round, yeah.

Dan (16:11)
And round and not square.

Mathias Hansen (16:16)
It's not great if you easily get motion sickness because it really does go round and round and round to get up. But it's a good view from up there. But there's a lot of other awesome buildings you can check out. Cool. Well, looking forward to seeing you in August in Copenhagen. And hopefully the weather will be nice. And we'll have a good time.

Dan (16:20)
⁓ okay, right, yeah. Yep.

Yeah, looking forward to seeing you there.

Mathias Hansen (16:36)
That was Dan Harrin taking us back to his earliest days of writing code. If you want to hear more from Dan, come join us at Laravel Live Denmark on August 21st and 22nd in Copenhagen. Buy your tickets at laravellive.dk

From Stop Motion to Software Development with Dan Harrin
Broadcast by