I've long been thinking about writing more blog posts but it was always a somewhat tedious task due to the Jekyll setup I had. That's why I moved to Ghost.
Writing in an IDE without a live preview, having to commit and deploy changes is extremely counterproductive. Running Jekyll locally often came with its own issues, too many times I had problems (primarily with Ruby) that I had to figure out and fix before I could actually do what I wanted to do.
Several times I've tried re-designing my website and used several other solutions to manage the content. There was always something that caused me to stop development, as a result, a lot of time was wasted and I was still stuck with the same old issues.
Over the course of a few years, I've tried several CMS systems and static site generators but today I've made the final push to actually finish things up as I've taken a liking to Ghost.
Out with the old
My old website was designed by myself, it was based on Bootstrap and generated with Jekyll.
Over the years I've done improvements all around, it started with a basic theming of bootstrap and continuously improved on it. As I learned new things, the place I tried it on was usually my blog.
What I've learned and added over the years:
- Critical CSS: this is CSS that is added inline in the header which contains everything needed to render everything that's above the fold. These days you would just use HTTP/2 Server Push to preload critical assets.
This critical CSS was generated separately for each page on my blog.
- Refactored JS: The JS has transformed a lot, from plain js to CoffeeScript to more modern JS. Removed jQuery as it was overkill and re-wrote the bootstrap scripts to work without jQuery.
- Security headers: I spent a lot of time learning about all the various security headers, my goal was to have an A+ rating on securityheaders.com with all the external tools I was using (Disqus, Google Analytics, AdSense). At first, it was set up in NGINX, but I later migrated to Firebase and had to convert it all.
- CDN: I added CDN using Amazon s3 and Cloudfront, it was never really necessary but it's a learning experience.
- Migration to Serverless: At one point I migrated to a Serverless stack but quickly ran into issues that made me run back to my old NGINX setup on Digital Ocean. I learned some valuable lessons from it and it all turned out alright in the end.
- Migration to Firebase: I migrated to Firebase about a year after, I was interested in trying it out and the process was simple, deploying was trivial. Because the free tier was more than enough, that was the end of my Digital Ocean droplet.
In with the new
While the old site had a custom design, I'm now using the default Ghost theme - this may change over time but right now I want to try and focus on blogging more. Eventually, I may just make a custom Ghost theme - or.. who knows!