Have you ever thought about updating some minor things about your project and ended up in pretty much re-inventing the wheel? Just some little tweaks here and there, nothing special. Shouldn't take more than a few days. I somehow managed to walk this way and went from "just some tweaks here and there!" for my blog to "I will update pretty much the entire universe!" within just a few blinks. I'm not entirely sure what happened here - but let me try to explain what happened... or what not happened.
The initial plan
Since the release of my Gatsby site I wanted to polish a few things. Things like overhauling the sidebar which took way to much space for way to little information, re-position the tags since I've always felt like they were kinda lost at the bottom of the front page and many other things like that.
Ultimately it shouldn't be a huge update but still required some work.
But side projects can be deceptive. There's no project manager, no budget, nothing which stops you from blanately forgetting all the requirements, blindly disregarding the concept of time and pretty much wasting your life. That's the good thing about side projects to a certain degree - but often causes more harm than good in the longsight.
A new backend... or not!
Even though I've complaint a lot about Ghost I'm still using it to this very day. Before anyone grabs his pitchfork to haunt this hypocrisy let me briefly explain why;
Ghost (or at least how it renders posts) is heavily integrated in the entire system which powers my blog. I started using Ghost many years ago and it has become an essential part of my blogging system which is why it's really hard to replace. Furthermore, I still like the editor it provides - and since I can defeat a lot of its quirks by using Gatsby I'm okay with that until I've found that some decent replacement which is worth it.
But "worth it" is easier said than done, because I haven't found a system which I'd enjoy so much that I'd take the pain of replacing Ghost. Understandibly I don't want to spend weeks for being disappointed or even annoyed by it afterwards.
I'm not saying that some CMS out there aren't good (no, not you WordPress) - it's just that I can be a very picky guy with a pretty good idea of what he wants from his blogging engine.
So the answer to "what systems would replace Ghost in my case" is simple: a custom solution. And that's exactly what I went for.
Looking back at this point I don't know why I thought this would be doable in a reasonable amount of time, but I guess I just wanted to create yet another side project to let it die a few days later. But at least I had fun these days (and tried out Materialize which is really cool).
After some days of putting a serious amount of work into this thing I realized: this is not going to be done anytime soon. I've got other projects which would benefit the world more than a more convenient of managing my blog content.
To prevent shipping a half-hearted solution which would end up in a post where I blame myself for creating it and how much I'd like to replace it by something better I simply abandoned the project and will stay with Ghost for the next time.
It's obvious that I definitely should go for a custom solution - but that's nothing I can create within a few days. Pretty obvious in retrospect.
New styles... or not!
I really enjoy working with styled-components. I enjoy it so much that I wanted to completely overhaul my entire CSS of my blog by replacing the current SASS solution with styled-components.
Half way through rewriting components in styled-components I asked myself: why the fuck am I doing this?
I didn't find an answer. The only thing I could think of was "engineering for engineering's sake" - but that's a very poor choice when it comes to a private blog which source code is not even publicly available. Who'd admire the beauty of weeks of work which would do absolutely nothing regarding the readers experience?!
End of the story was a git checkout back to master, pick some things I really wanted (and rewrote them to SASS, because fuck me) and move on to the next feature.
Farewell, Caraway
With this update I've switched from using my own custom solution, Carraway, for managing subscriptions and contact form submissions to other SaaS. As of now I'm using the gatsby-plugin-mailchimp for managing newsletter subscriptions and getform.io for contact form submissions.
The major reason for this change was to reduce maintenance on my side. My blog alone consists of multiple systems of which some are solely maintained by myself - reducing the amount of systems I need to take care of is always greatly appreciated.
With this Carraway is no longer needed and will no longer be maintained by myself. Farewell!
A new search
One of the features which has made it to the final version is the new search powered by Algolia. My initial draft of the search was some serious monstrosity; did you know that every time you've visited my site you downloaded the entire index of all my posts and all the fancy search stuff was happening in your browser? Yep. I'm that kind of evil. I prefer having you to download a 190 kb file instead of implementing a real search.
But, let's be real here: I hated this search implementation from the beginning. I just wanted to release the update back then, and simply doing it this way was the safest way in my opinion.
Safest, you ask? Algolia is a SaaS and charges money at a certain point of operations and records. Back then I had no idea if I'd reach this limits with my blog (and, honestly, I still don't know) - but I've found some interesting thing: Algolia for Open Source. AOS makes it possible for open source projects to get increased limits as long as you fulfill their requirements and add a "Search by Algolia" logo to your search.
A blog is not really what you'd think of when thinking of open source - but I've got a software blog with lots of free guides and maintain some open source projects. Maybe that's enough?
Using my dear "let's just ask" attitude I did exactly that: I just filled out the application form and hoped for the best.
After some days I got a response which told me that I'm accepted for AOS and that Algolia will increase my limits if necessary - wohoo!
I'm still on the free plan but if my blog reaches its limit I can just write them again and they'll increase the limits (to something like 200k operations and 100k records if I remember correctly). Talk about cool folks!
Design updates
As you may have seen the feed has been unified throughout the entire blog and slightly re-designed. This was actually one of the few things I didn't think of completely over-engineering. Thank you, brain.
Lessons learned
It's fairly obvious that I've spent an insane amount of time for a fairly simple update this time. Not because the technology failed. Not because some other dude is to blame. But because I just straight ran into the path of over-engineering without realizing.
Usually I do have a pretty detailed list of requirements I want to do when starting to work on a project, but for blog updates I prefer(ed!) a more agile approach. With having a rough idea of what the update should be like I just start to work on and if I stumble upon something I consider important I just go for it.
That was a pretty retarded thing to do.
I've learned my lessons: write requirements for everything.