Personal website
Published on 27-12-2019 Latest update on 10-01-2020
The domain
I've had my domain name, johanvanhelden.com, since 2012. But I never did anything with it. It was just to make sure no one else got a hold of it.
The first website
Finally, in 2016, I started experimenting with Ghost. A blogging platform build for Node.js.
I still remember it was a real pain to set up on my shared hosting environment. And working with it was also a bit annoying. When I switched to a VPS it became a little easier to host, but still. It just did not feel right. Not very easy to use and I just did not like how it was hosted. I had to use a special node.js process manager to keep the blog running and sometimes it would get stuck.
The framework switch
So a year later I decided to switch to what I knew best. Laravel.
In 2016 I created 2 blog posts. So when I was thinking about creating a blogging module for the Laravel rewrite I quickly decided against it. It would take up time and I figured I would never use it. So I simply converted the blog posts to static code, rewrote the Ghost templates to Blade and called it a day. I was surprised how quickly I made the switch. I think it took me 1 evening and everything was finished.
The redesign / rewrite
I was never really happy with the site. It was a site that looked like a blog with 2 static blog posts from 2016 without an ability to manage them. This is what it used to look like:
So it started to itch again. I wanted to rebuild the website into something more future-friendly and with a fresh coat of paint. A lot of new tools released that I wanted to try out as well. So that’s what I did. I made a plan, a design in my head and just started.
The tools I am using for this website are:
Nova
Nova is a tool I used before and I love it. It is very easy to create an admin panel with it. And does not take much time at all. So I decided to use it for the Projects and Tools, so I could make changes to those without having to open a code editor, committing, pushing and deploying anything. And for the future I have a blogging module on my todo list so I can use Nova for that as well. It’s well worth the license costs considering the amount of time and code it saves!
Inertia.js
It was my first time using Inertia.js. I decided to use Inertia.js because the Laracon EU 2019 presentation blew my mind.
Inertia.js lets you quickly build modern single-page Vue.js applications using classic server-side routing and controllers. I knew I wanted a SPA but I really disliked all the overhead. Having to build the API endpoints, having the extra HTTP/axios requests to fetch data after the initial page load. It can also be quite complex at times if you have pages with paginated tables or searches or where you have to fetch data from the back-end based on the URL.
Inertia.js takes all this overhead away! Usually, for SPA’s, I use Vuex to manage states and Vue Router to manage the routing, but in this case, I did not need those. Inertia.js was enough.
Tailwind CSS
It was also my first time to use Tailwind CSS. I heard about it many times and know many people in the Laravel community use it. But I was just so used to bootstrap. It was a bit of a risk to me. I was worried it would take me to much time to create what I want. But the documentation ended up being great. And there are a lot of examples on the internet.
But it turned out great. Really easy to use. Sure, I still need the documentation, but I will be using it in future projects as well.
The action pattern
I also decided to experiment with the action pattern for my website. And I like this pattern a lot and will be using it in more future projects. It’s a great way, for me, to organize domain-like business logic.
In conclusion
It has been fun to rewrite my website using these new tools. But I am also happy that it is finished for now. Please feel free to check out the source code!
About Me
I am a full-stack developer (for some reason full-stack developers are called Unicorns...) from the Netherlands and started programming when I was 12 years old. The first programming language I learned was Visual Basic. I have always loved bringing my thoughts and ideas to the computer screen.
After finishing high school I knew that I wanted to make my living by programming. So I choose an "Application Development" study. When I completed my internship, I started working full-time making websites and web applications. The language I was writing in at the time was ASP Classic.
ASP Classic; however, was quickly overshadowed by PHP and I decided to switch to that programming language instead. In the beginning I was making my own "mini frameworks" for projects I was working on, but quickly switched to CodeIgniter.
Luckily, after a few months, I discovered a framework called Laravel. And up until this day I still use Laravel as my PHP framework of choice. It just gives you so much features out of the box, it becomes trivial to quickly set up a proof-of-concept. And is also powerful and flexible enough to transform that proof-of-concept in a future-proof, stable and secure application.