Interview with Freek Van der Herten: Living the dream with Spatie
Agiledrop is highlighting active members of different open-source communities through interviews focusing on their projects and initiatives, as well as trends and innovations in the digital sphere.
We got the opportunity to talk with the co-founder of Spatie, Freek Van der Herten, who gave us an exclusive look into the origins and evolution of the company, the conception of Full Stack Europe and some of his favorite projects in the Laravel ecosystem.
1. Please tell us a little about yourself. What’s your role in the Laravel/PHP community and what do you do professionally?
I’m a PHP developer and co-owner of Spatie, a well-known company in the Laravel ecosystem. We create big Laravel applications for clients and we also have a big portfolio of open-source packages, we really love creating open source.
I think in the Laravel community we’re seen as “the package guys” - so, if there’s a common functionality that doesn’t really fit in the framework, I think most people will check out our repositories to see if we’ve created a package.
We’ve done this now for a couple of years. We started doing it when Laravel was still small, so it was basically creating a package for everything that we needed.
2. How did you first get started with software development, in particular PHP and Laravel?
I started using PHP a very long time ago, I think around 2001. I started with PHP 4 and one of the first things I did was create a website for my band as a student.
The site itself had no framework, it was all basically just handwritten; I don’t know if there was a framework in 2001, maybe Zend was around at the time but Laravel and Symfony certainly weren’t - but, yeah, I wasn’t a professional so I didn’t know these things, I just opened Notepad and started typing.
After college, I started as a COBOL developer, so I was into mainframes for about 7 or 8 years and I didn’t do anything for the web at all, I just worked for a big financial institution on their back-end heavy stuff because I was working at scale a lot, this was one of the major banks in Belgium and it was just fun to do it.
Going back to PHP - my buddy Willem had just started his own company some years before, a web company of two people which was called Spatie. He did a bit of everything - designing, a little bit of programming, and he had another business partner at the time who did photography.
The tagline was, Spatie is in-between everything, cause “spatie” in Dutch means the whitespace between words, so their tagline was “in-between everything”, because they did everything, from design to photography.
And Willem noticed he can’t do everything by himself, and he knew that at the time I wasn’t that happy anymore at my job since it was feeling a little bit stale by that time. So he invited me to do some PHP programming for him, just some basic stuff.
From there, the ball started rolling. I saw that PHP had changed since I touched it in the early 2000s; we were already on PHP 5, we had the internet, we could look stuff up online.
There was another friend of Willem, Jef, who handled the client aspect, and he also wanted to join Spatie because he believed in that. So that’s when Spatie as we know it today was born, with us 3 partners: Willem as the designer, Jef as the one who does everything client-wise, and me doing most of the programming.
At about that time all these frameworks like Symfony and Zend were becoming big. We figured, this is something that’s here to stay, so let’s use one of the two and so we picked Zend.
But, if I skip forward a few years, we were back in a place where we thought, hm, we made these Zend sites now, but PHP is becoming a little bit stale.
There’s this group of developers, the Ruby developers, that seemingly have like all the nice things, they have a big community that wants to learn, they’re going for good documentation and improving DX, making things as simple to program as possible. PHP, on the other hand, seemed to be a dying language with infrequent releases.
And so we decided to switch to Ruby because that’s where the fun and the improvements were. But then I stumbled upon a little framework called Laravel. It was via a blog by a friend of mine who now lives in the same city, Dries Vints.
So I tried Laravel, I think it was the beta of Laravel 4. I think packages could already be installed with Composer, so this was also one of my first experiences with Composer. I was immediately blown away by how much better Laravel handled things such as creating routes than Zend.
I think in my head I decided right away that we’re coming back from Ruby to PHP, because we know PHP well, and this Composer thing is awesome, we have a framework here that embraces the latest features in PHP 5.4 - come on, let’s give PHP one more go.
So we stuck with Laravel ever since. We had a CMS that we built on top of Zend, called Blender, which I started converting to fit our Laravel applications and learning more and more Laravel.
I found a lesson on Laracasts about creating a package, and it demonstrated how you can run the test of your packages automatically through Travis and see the results in the GitHub interface. My mind was blown - I didn’t do any testing, I didn’t do any package development, but I thought, this is the key to keeping all our sites up to date.
And that’s basically how the whole package adventure started. In the beginning it was really crazy, I think I released a package every week or every two weeks or so. And people still ask me where I get the inspiration from - it’s just because we already had all that functionality in the CMS I mentioned and we were already using it.
3. How would you describe Laravel to someone who has never heard about it?
I think what I would say to a programmer is that it’s a framework for PHP that really wants you to have a fun time creating a solution. I think one of Laravel’s core values is that it has a great emphasis on developer experience, and that’s something I really appreciate about it.
I think this is the most important thing about Laravel that sets it apart from other frameworks. I’m not trying to say which one is best, people have lots of kinds of personalities. These frameworks have personalities too; IT isn’t an exact science, so you should pick whatever suits your personality best, there you go.
4. Can you tell us a few words about Full Stack Europe and its organization? Maybe with a special emphasis on how you’ve tackled the whole Covid situation.
It’s all a bit interconnected again. When I started learning Laravel and modern PHP, I started going to conferences as well. There was one talk that I went to at the PHPBenelux Conference by Coderabbi, about community and sharing.
I think a month after that talk there were like 5 new meetups in Belgium because it was so inspirational. I also spotted a meetup in my hometown, and I recognized that sharing things could help me become a better programmer.
So even though as an introvert my whole character was screaming at me not to do it, I contacted the organizer of the Antwerp meetup and offered to give this short presentation.
And this is where everything lines up - the organizer of the Antwerp meetup is Dries Vintz who is also into Laravel. We ended up talking after the meetup and he asked me to join in organizing the meetup, so I helped him with that for a couple of years.
We saw that more and more of the talks weren’t on PHP anymore, and the meetup was called Antwerp PHP. So we thought, hey, we want to have a name that’s a bit broader, and so we renamed the meetup to Fullstack Belgium.
And time passed, everything was going great, the meetups were doing well, and we thought, what is the next step? And that’s when the idea for Full Stack Europe was born.
We didn’t have any experience in organizing big conferences, but luckily we got in contact with Mathias Verraes who runs the DDD conference, and he saw potential in the idea and joined the organization of Full Stack Europe. So we thought, yeah, let’s go big immediately - so our first edition of the conference had about 300 people.
We were planning on doing the next edition this past October, but as you know we have the ongoing pandemic, and we saw very early on that organizing a conference in 2020 would become a problem.
We had a bad feeling about it, so we didn’t sign any contracts with a venue or pay for airline tickets, and we immediately canceled and decided not to do it this year. In hindsight, this was a very good decision.
We considered doing a video conference, but decided against it because with Full Stack Europe it’s really about the people and besides, we don’t have the know-how for a great online conference. If things return to normal here in Europe, we’ll hopefully be back in October.
5. Can you tell us more about Spatie’s transformation through the years and the work you do there now?
I’ll just continue the story where we left off earlier. We’re now in 2013 or 2014, I’m learning Laravel, Spatie is still 3 people, we’re doing client projects, but they’re now Laravel projects.
We’re getting more and more potential clients, so we had to start hiring more people as well. It was never our intention to create a big enterprise company; we always wanted to stay small and have people that are just passionate about things.
In a way, we wanted to hire people that not only want to build stuff, but are also interested in how we can improve in building, and who don’t care about only the result, but also how you get to the result. And we were really lucky - I think we really have a world-class team of passionate people at the moment.
Nowadays we’re more selective about projects and we favor those that are more technically challenging and that we can learn stuff from, which also means being able to invest enough time into them.
We don’t do projects with a short deadline anymore, because you can’t really experiment or learn too much in such a short time, and that just isn’t fun. With large projects, we can more easily take a full day for experimenting and learning, which also brings a lot of calm since we don’t have to worry about every minute.
So, that’s the most important change compared to a couple years back, that we only have a few big clients that are technically challenging. One of the big ones I can reveal is Tomorrowland, we do a lot of things for them. I can’t delve into specifics, but a lot of things are powered by Laravel and need to work at scale, cause it’s a big festival.
The second thing that’s changed is that we also started creating our own products. We wanted to invest more time into certain things, but that time needed to be covered as well, and in open source we would never reach that level of polishment, so we decided to try selling the things which would otherwise be open source.
And that’s how things like Flare and Mailcoach have started, from this desire to create really quality things on our own. I can also share that this has been successful, our costs are covered, so we’re going to do that more in the future.
Now we’re also doing video courses; there are a few free videos on our website, but as with paid pieces of software, to have a course that’s well polished and has good marketing, that takes time, so we’re also creating paid courses. So, yeah, we’re really in a good place, we have good people, we have fun work, so it’s a dream, really.
6. What are some of your favorite projects and initiatives in the PHP/Laravel ecosystem?
Right now I’m working on a new version of Mailcoach. For anyone who doesn’t know Mailcoach, it's basically a self-hosted version of an email automation tool such as Mailchimp.
And this has an interesting story: I have my own blog where I share knowledge which has a newsletter that was becoming popular. I was using Mailchimp for it a couple years ago, but it’s only free for the first thousand or two thousand addresses, and after that the cost really grows.
I didn’t want to pay Mailchimp the whole time, because the newsletter is free, it’s all free content, and it just didn’t make sense to start adding costs to that. So I thought, hey, I’m a programmer, can’t I just solve this myself?
At first I used a piece of software called Sendy which is self-hosted email software. But I found it had performance problems, so I thought, I’ll just dive into the code and try to fix it, maybe contribute a little bit.
But then I opened up the codebase and I saw the kind of code that I wrote in the beginning of 2000, with like queries and HTML together, every page a script of its own - nah, we’re not going to do this. I’ll just program it on my own. I decided to make a package out of this, so I could send my own newsletter with that package.
And that was when we got into that idea, that we can’t go open source if we want to make it really great, so we have to make a paid product out of it. So that’s the origin story of Mailcoach, we released it at the beginning of 2020.
Now my other colleagues, they’re also working on a few things - there’s one secret thing that I can’t talk about just yet, but the other thing that I can talk about is that we’ve allocated quite some time for Flare, the Laravel exception tracker, for 2021 - there’s a lot of love there and we’re going to polish that.
I’m also very enthusiastic about two projects in the Laravel community. They’re both getting known, but I have a feeling that one of them is also being used a lot now, and that’s Livewire, an amazing package by Caleb Porzio.
It’s basically a package that makes it easy to work with server-rendered partials. So, for instance, you’d traditionally use something like Vue or React if you wanted to change something on a page after it has been rendered. Livewire enables you to do that entirely with PHP.
To me this is really game changing. It enables you to use server-side technologies to add front-end behavior. I think Livewire is already becoming popular with a few key players in the Laravel community and I can only see that popularity growing.
It tries to make testing a lot more developer-friendly. It’s basically a huge improvement to the developer experience of PHPUnit, the most used testing runner for PHP.
It’s also very nice to see the creator of Pest, Nuno Maduro, recently getting hired by Laravel, and it makes perfect sense because he shares the same values as the other people in the Laravel organization.
It’s a hard prediction to make, but I wouldn’t be surprised if Pest became the default runner for Laravel tests in the near future. I don’t have any insider information here, I don’t know, it’s just a personal guess, because the core values are the same. So, keep an eye out for Livewire and Pest, cause I think they’ll become very big!
7. Do you have a favorite side project beside your work for Spatie?
Definitely my side project Oh Dear, which I’m very passionate about. It’s something I started with a buddy of mine a couple of years ago; it’s an uptime tracker, but one that’s specifically made for the things we need it to do.
So, what makes Oh Dear special is that it will not only monitor your home page, but will actually crawl your website and tell you about any broken links on any page. It also does status pages; you can see an example at status.laravel.com, cause Laravel uses it, as well as status.flareapp.io.
So I’m really proud of where and how Oh Dear has grown. It’s been a success both technically and commercially, so we definitely did something right there and it’s really nice to see it all coming together.