In this issue of Behind the Dev, we're going to be taking a look into the day-to-day of the Laravel web developer Dan Harrin.
Dan maintains Filament and his contributions to the Laravel community are nothing short of amazing!
If you don't already follow him on Twitter, make sure to check out his profile at: @danjharrin!
Behind the Dev
Can you tell us a bit about yourself?
Hi, I’m Dan Harrin, and I’m the Lead Developer & CTO at Stagent, a startup that provides booking management software to artists and agencies in the music industry. I primarily use the TALL-stack, and maintain Filament, which is an ecosystem of packages to accelerate the development of Laravel apps. I am 19, have no degree in computer science and I’m completely self-taught. I grew up in Essex, England, but I have recently moved to Cardiff, Wales where my girlfriend is studying at university.
How did you first get into development?
I think my first exposure to HTML and CSS was when I was around the age of 9. I had expressed interest in building a website to my parents, and I remember that my mum downloaded the HTMLisEasy.com tutorials onto our family computer. It ran Windows 7, and it only had Microsoft Notepad and Internet Explorer installed, so that’s what I used in the early days, before installing Notepad++ a few months later. 😅
After spending probably a year just building websites on my own, I was gifted an original Raspberry Pi, which was a small Arduino-esque computer that I could use to experiment with hardware. I believe that’s where my real passion for programming started. At that point, Raspberry Pi as an organisation was very young and not very well known, but there were “Raspberry Jam” community events popping up in different areas of the UK, where other Pi enthusiasts gathered to discuss their hobby, partake in workshops, and attend mini conference talks. Raspberry Pi was my first experience in a few things - I learnt Python: my first programming language, it taught me how to use Linux, and it showed me how powerful communities were in our industry.
As a developer, what’s your typical day like?
I usually start work at 9am, and first check Basecamp for any new messages or urgent todos. I look at the tasks remaining in this development cycle (we work in 6-8 week Shape Up periods) and decide what I am going to work on today. We’re still in the early stages of launching Stagent, so my day usually consists of communication with the CEO and sales team. I am the only full-time developer, but we do have contractors work with us as well, so sometimes I will also be communicating with them. My work is remote, separated by a few breaks for food and drink, maybe a walk to the shops, and keeping on top of my monster GitHub notification inbox. I’ll also check on the Filament Discord server periodically and answer a few questions, although I have amazing contributors who answer the vast majority of questions before I even see them.
Are there any tools that you use on a daily basis?
I depend on a lot of tools, but a few that I come into direct contact with very often include:
Do you have any hobbies outside of web development?
Yes! I try and squeeze in a bike ride or run before work in the morning. I am very lucky that in both Essex and Cardiff there are huge natural spaces that I can exercise in, weather dependant of course. 😉
Culturally, I really enjoy cooking, music, and politics, especially environmentalism. Sorry (not sorry) for those who follow my Twitter for tech and see anything related to those.
Growing up I was also really into photography and film, always visiting parks to take photos of the nature I found. I now also use a drone, which can capture a different perspective than usual. My camera bag currently consists of a Sony Alpha 6600 and DJI Mini 2.
Can you tell us a little bit about Filament?
Filament is an admin panel, form builder, and table builder built on the TALL-stack, which is Tailwind CSS, Alpine.js, Laravel and Livewire. You can easily install any of our packages into your app and get started building in a couple of minutes. The goal of the project is to make developers who are already familiar with Laravel much more productive with their work, taking away the need to do the same boring, repetitive tasks in every app. The form builder and table builder packages were born out of my own frustration of working on many projects which were all heavily form-driven; I craved an advanced, flexible and stable library for building many forms quickly.
It was originally created by Ryan Scherler in 2020 as an admin panel, and he released v0. In early 2021, I met Ryan on the Livewire Discord server which I manage, during a meetup. We began talking about the project, and he very kindly took me on board, where I built and released Filament v1 on March 1st 2021.
Is there anything in particular that you like about Filament?
In v2 we released a special syntax that used Laravel’s dependency container to dynamically inject variables into closures throughout the Filament project. This concept forms most of the underlying power behind our packages. It allows developers to retrieve any piece of contextual information about the current form component, table column, table filter, or action, from any method. Users can build their own dynamic layouts without any specific Filament “feature” that constricts the user to a limited set of customization possibilities.
Is there anything that you’d do differently if you had to rebuild Filament?
After launching v1 I had a lot of regrets about some of my architecture and API design choices, but v2 was a complete rebuild and I don’t think v3 will be very different from it, mostly just consistency tweaks that are breaking changes. I am very happy with v2 and how flexible it is to implement major new features, and our users seem to love it as well.