Moving to Ghost

Starting on a technical note. Scroll down to the next section if you want to skip the techie stuff

A couple of years ago I discovered the idea of a static site being used to power a normal website where content need not be dynamic. To put this a little more simply, instead of making a database request everytime someone visited a website and then generating the page per request, a static site would simply send down a basic HTML file when a page request was made.

From my experience, that can still be a little confusing for most people. So a traditional website works like this.

  • Person visits adnanissadeen.com/post-1
  • The website goes to the database, and gets the data for post-1
  • It then takes this data, places it into the middle of a template, generates the HTML, and finally sends that back to the person visiting adnanissadeen.com/post-1

This happens on every single page visit (there are some exceptions to the rule but at the most basic level that's how a site built on top of wordpress or most CMS's might work without any optimization). The problem here is that there's a database request and a fair amount of computation required for each page view and if a site receives a lot of traffic suddenly it can end up tripping over itself and just crashing.

A static site behaves differently. Instead of doing the database request, it would generate and save the html for every page on the site so that the flow of request-response would look more like this

  • Person visits adnanissadeen.com/post-1
  • The server returns post-1.html

No db. No computation. Nothing. A site that runs behind Nginx like this can take a massive amount of traffic before it even begins to feel the stress.

This isn't anything new by the way. This is pretty much how people did things long before the days of Wordpress or any other CMS. They would type some HTML out in an editor, and upload it to their server. But doing this is hard when done manually. That means new links have to be added to archive pages. RSS has to be created separately. You might want to add it to your homepage and then another part of your site separately. Your homepage might need some post removed (maybe you only want to have the latest 10 posts on your site visible on your home page). And hell to the no if you end up changing your template. Gotta go and change it everywhere.

Thus CMS's came in to take over this complexity and in all honesty, they did make it that much easier. But the trade-off was the resources required. My goal with my CMS tool was to blend the best of both worlds together. A CMS to handle all this hard work of manually changing templates and whatnot but the end result would be a static site.

When life says hard mode: activated

I'm probably exaggerating when I say hard mode. But really. 2015, November 26th. My son was born. And while it's been an amazing ride, the amount of time that I have to spare between work, side projects, and some consultation, is extremely limited. And 2016 was a year I had a lot of goals and boy did I not realise the kind of ass kicking I was in for. Here's my list of todo's for the year and the results:

  • Finish my blogging software!! (not completed)
  • Work a bit more on my reply later app. (discontinued)
  • Launch a small passive income source on the side. (lol)
  • I have a small thing going with a friend where we want to work on side projects together. I want to make that work in 2016. (nope)
  • Blog more. I want to be writing 2000 words a week minimum. 52 weeks of that and I basically have the equivalent of a novel. Although I'm ok if this writing doesn't happen exclusively on my blog. (ah I knew I had a goal like this somewhere)
  • Complete the MIT linear algebra course by Gilbert Strang. (I actually said this??)
  • Complete at least 2 more online courses (1 of which should be an algorithms course). (yea... no)
  • Read 1 to 2 books a month. Fiction, or non fiction, doesn't matter. Then review it. (ok this kind of worked out minus the review)
  • Make time to do something special for my wife 1 to 2 times a month. She deserves more :) (sigh. I wish I had done better here)
  • Maintain a journal of life now that our son has arrived. (dam.)

Suffice to say that between taking care of my son and wife, and shifting house, and settling into a new job, I got sidetracked.

Re-evaulating life plan. Or chop chop

Something I realised towards the end of the year was just how important it was going to be for me to be extremely frugal with my time. Anything that does not help me achieve my goals would have to go. Basically there's no time for distractions in life right now.

Which brings me to this move to ghost. I really do enjoy writing. And blogging. I can't count how many ideas went wasted last year because my blog wasn't ready to handle a high volume of publishing. So I sat down and thought about it really hard and asked myself what I want to achieve in my side projects. Did the blog matter more? Or did the CMS I was trying to develop matter more? And when I thought about it, I realised that although the idea of this "best-of-both-worlds-CMS" was something I greatly desire, it came second place to actually blogging and a distant closer to last place in the list of software I'd love to actually develop. Add to this the mind block that wasn't letting me move on to anything else without completing this CMS first and I realised I just had to cut it.

I've never let go of the ideal that I should be in control of my content and hosting it where I want to, so Medium.com will never be an option hopefully. Wordpress was just too heavy and I really do love how Ghost has been built. So Ghost it is now and for the foreseeable future.

I'm sad. I really am. But this is what being ruthless with managing time can look like. It's a lot of "NO!". It's a lot of chop chop.

And with that done, I feel a bit more free. It's time to move on. 2017 has already been a great start for me. I have a lot of goals but a very different approach to achieving them this year. I've already achieved a big goal (zero distraction time while working/8 hours pure focus time) and I'll be blogging about that soon hopefully.

May this blog live a longer life than my previous attempts :D