Introduction
In this issue of Behind the Dev, we're going to be taking a look into the day-to-day of the developer Pascal Baljet.
Pascal runs his own software company, Protone Media, and is currently building an exciting new package for Laravel called Splade! If you're interested in checking out Splade on GitHub you can head over to https://github.com/protonemedia/laravel-splade.
If you don't already follow him on Twitter, make sure to check out his profile at: @pascalbaljet!
Behind the Dev
Can you tell us a bit about yourself?
Hey all! My name is Pascal Baljet, and I'm running a software company, Protone Media, focusing on Laravel apps. My wife and I live near Amsterdam with our 4-month-old daughter, and it's a lovely place with our families nearby. I've been in web development since high school and have been doing freelance gigs since then. In the early 2010s, I moved from vanilla PHP to CodeIgniter. When that framework was fading away, I jumped to Laravel with version 4. I value the friendly community and try contributing with the 15+ open-source packages. Sometimes I work on building desktop and mobile apps with other technologies, but it's really Laravel that I like the most.
How did you first get into web development?
From a very early age on, I was intrigued by electronics. Radios, computers, electronic music instruments, it didn't matter as long as it needed power and had buttons, I wanted to know everything about it. Luckily, when I was young, I had access to a computer thanks to my parents. They were also really fast embracing the internet. I was never really interested in gaming, but I was always tinkering around and trying to break and fix stuff. I vividly remember my dad doing a Visual Basic 5 course for his then-current job, and he showed me the examples from the book and how the code came to life on the screen. Of course, I didn't have 'real' projects to work on when I was a kid, but after school, I copied the example codes from the book and figured out how changing pieces of the code changed the outcome. It was like a game for me. I still feel that childish magical excitement when working on complex stuff and the idea that you came up with works and comes to life.
After primary school, when I was 14, I started working at a computer electronics store. I advised people on buying new things, but I also built and repaired computers. It was like a candy shop for me. Later when I changed stores, I started working on a little inventory tool with a colleague, which I think was the first thing I built with PHP. One thing led to another; before I knew it, I was developing all kinds of tools and websites for people. It's almost been 15 years, and over time, the projects became more severe and extensive, and I was able to build a company around the projects.
As a developer, what's your typical day like?
My day starts with checking whether any client projects we do (as a service) might have a critical issue that requires my attention. Most days are fine, but I always block the first hour of the day just in case there's some urgent thing I need to resolve. Then it's primarily working on new features for client projects, though I try to block one day a week for open-source projects like Splade and other Laravel packages and keeping up with all the new things. It's nice when you can work on a single project all day, but I don't have problems with context switching. For example, It's fine to work for two hours on a project, go into a client meeting, work for an hour on an open-source package, and then switch back to another client project. So I don't have fixed hours for calls and meetings, and I try to be flexible while meeting project deadlines.
Are there any tools that you use on a daily basis?
I work on a 27" iMac at home, and I use a 13" MacBook Pro with a 27" external display at the office. I use VS Code, and all extensions and settings sync perfectly. I switched from a VM (mostly Homestead) to Laravel Valet, but I've been using the built-in Laravel/PHP development server a lot lately. I use Firefox for development and Safari for regular browsing. Other than that, my most used apps are Github Desktop, Sequel Ace, Slack, and Apple Music. I use Apple Notes for to-do's and notes because it's dead simple and won't go anywhere, unlike most startups that do to-do apps. For screencasts, I use OBS for recording, iMovie for editing, and Logic Pro for audio.
Is there anything in particular related to development that you enjoy working on the most?
Besides the coding itself, I enjoy brainstorming and discussing with clients. I love to find a way to turn their needs into an easy-to-use solution that might do all kinds of complex things under the hood. Of course, not all projects are complex per se, but I love those in particular. Sometimes a user can be wondered by an action that's behind a single click. Yet, at the same time, I know some extensive complexity is happening. That's what I enjoy! When that all comes together and works seamlessly, you feel like you've done a great job.
If you could go back in time and give younger Pascal some advice when you were first starting in development, what would it be?
Invest much more time in your reading skills. I've wasted so much time not reading documentation. So many things I could have solved much quicker if I had just read the documentation instead of quickly scanning it and thinking the answer was not there. I think it's a common problem amongst juniors, yet it is some kind of learning process. Almost no one believes you when you say, 'just read again'. It's like you have to waste that much time before it sinks in.
Do you have any hobbies outside of web development?
Besides computers and development, I've always made music from a young age. I started with playing keyboards but soon switched to guitar. I've struggled for a long time to decide whether I wanted to be a musician or a developer. I studied Computer Science in Amsterdam for a short while, but it didn't grasp my attention at all. So I switched to studying pop music guitar at the Conservatory of Amsterdam and got my bachelor of arts. Of course, that still didn't help me to choose, so I finally figured out I won't. As I've got my own company, I can almost always schedule around gigs and rehearsals. During the pandemic, there was much more development than music, but overall, it's great to be able to do both. I really love the combination. I think it's because of the creativity and freedom in both disciplines. In the end, I figured out I just really like creating things.
Can you tell us a bit about Splade?
Laravel Splade is the latest addition to the open-source family, but it's much more than just a Laravel package that adds some functionality. It's a whole new way of building apps, and I think it's fast and clean. I've been building interfaces with the Blade template engine for the longest time and sparkling views with Vue components to make them dynamic and interactive. But this can become messy, and you have to make many decisions that are not truly part of the real problem you're solving. For example, what part of the template stays in Blade, and what goes into a Vue component? When do you choose async forms over traditional forms? How do you keep translation strings in sync, and what about state management? Do you prepare view data server-side or client-side?
Over the last few years, we moved to other front-end frameworks like Angular, Vue, and eventually Inertia.js. Still, it never matched the comfort and speed (development time) of building a server-side rendered app. Splade combines Blade and Vue, but in a splendid, elegant way. The ultimate goal of Splade is not to avoid writing JavaScript but to do as much as possible with Blade while still having the full power of Vue when needed.
What head start do users get when they develop with Splade?
Splade consists of two parts: the SPA (single-page application) capabilities and over 20 components to make your app interactive. Building a SPA with Blade is fantastic, and you don't have to configure anything; it just works. Modern UIs are dynamic and interactive. So while you can still use custom Vue components and libraries, Splade can provide most of the interactivity needed throughout your app. For example, two-way binding of data, toggling, animating and teleporting elements, modals, and toast. It supports lazy loading pieces of data and templates, you can use persistent layouts, and it integrates beautifully with Laravel Echo. In addition, it's got powerful Form Components that support Eloquent Model binding and validation. Also, it's got a superb DataTables-like component with support for auto-fill, searching, filtering, sorting, toggling columns, and pagination. Everything is ready-to-go with default Tailwind styling, but you can fully customize it. In fact, all Vue components are renderless, so all the styling happens in Blade templates. You don't need to recompile or rebuild Splade when you customize the styling. It feels very familiar for Laravel developers.
What's next for Splade?
We've been building new apps with it, and we're currently moving a giant traditional Blade + Vue app over to Splade. The benefits are enormous. There are no full-page reloads, and forms are submitted asynchronously, which delivers a much better user experience. In addition, we could remove many custom Vue components with built-in ones, resulting in much cleaner Blade views.
I expect Splade to hit v1.0 real soon. Most of what I had on the wishlist is there, but some things need a little more polishing. Using it in real projects helps tremendously. After hitting v1.0, I will build an open-source application with Splade in public, likely an e-commerce app. I still have to decide on the format, but people seem to like screencasts. I'm really excited about Splade. It somehow feels different from other packages. Can't wait to see where it goes!