Mastodon

Creating a blog for your non-techie significant other; the path to Ghost

So it turns out that someone got in my wife’s ear and suggested it might be a good idea for her to start a blog. Who would ever suggest such a crazy thing?! It actually makes a lot of sense as Kylie embarks on her path as a more public identity and fellow Pluralsight Author that she has an online presence. Having me around who has some experience with this should make it easy, right?!

The thing is though, there was no way I was going to take her down the path that I had originally gone with my blog, that being Google’s Blogger service. Now don’t get me wrong, Blogger was the right choice at the time six years ago, but since then it’s done… nothing. It hasn’t evolved, not one little bit. Still the same old clunky templating model, Google still messing with my markup and still no SSL support (more on that here and no, Google’s recent announcement doesn’t cover custom domains).

So here’s the back story on what I wanted for her, the path I ended up going down and if you read on, why I’ll shortly be taking troyhunt.com in the same direction.

No, I don’t want to be your webmaster

Let me get this out of the way very early – I’m not interested in playing sysadmin for anyone else’s blog. In fact I’m not interested in playing sysadmin for my blog! I get my fix with Have I been pwned? (HIBP) and that’s the sort of web asset that demands knowing your way around a web server and dealing with software updates and all the rest of the stuff that goes with it.

Blogs, for the most part, are very well suited to being offered as a service. I’d far prefer to go to a reputable player and let them SaaS the whole thing up than me having to maintain it myself. And you do have to maintain it when you self-host whether that be updates, backups, capacity management or dealing with unexpected crazy traffic. That takes time and my time is valuable dammit!

Let me illustrate the point:

I want to be powerless during blog failures in the same way I want to be powerless during power failures at home – I don’t want it to be my responsibility! I want to pay someone to keep the service running and that means when it goes down, they hop to it and fix it for me. Plus a solid provider with a globally distributed network and dedicated support staff are almost certainly going to achieve higher availability and cause you less hassle. I’ve written before about great responsibility in terms of the more things you have to manage, the greater your ability to screw them up. Using SaaS instead of managing your own PaaS (or even worse, IaaS) can be enormously empowering and what people often fail to recognise is the significantly higher cost of “control”. I don’t mean dollars, I don’t care about small amounts of money, I mean time. I made this point when I recently wrote about optimising my life; time is an extremely valuable commodity to me and if I have to devote a couple of hours of it each month to looking after a blog, that’s gonna come at a cost.

What I’ve loved about running my own blog on Blogger is that I’ve never once had to deal with actually running the site. I’ve had thousands of simultaneous users and months that go into the millions of page views and I’ve never even thought about perf or bandwidth or scaling out or any of that sort of stuff. I don’t care that I can’t see the virtual flashing lights on the server, that just doesn’t add value for me.

Ok, I feel a bit better getting that clear! The point is that especially when it comes to someone else’s blog, there’s a lot to be said about just turning it on at a provider then they can always contact those guys for support if need be. You don’t want to have to be “that guy” – I didn’t want to have to be “that guy” and I’m her husband!

tl;dr – it had to be a hosted service.

The recommendations

As with all journeys of discovery these days, it began with a tweet:

The responses basically broke down into three camps:

  1. WordPress: Obviously very well-known but also very frequently features in the “X number of WordPress websites pwned via vulnerability” headlines. Yes, yes, I know that’s frequently third party code gone wrong, but WordPress has also become a bit of a goliath of a platform that does many things beyond just being a blog.
  2. GitHub Pages: A lot of people seemed happy with this route, but it just didn’t feel like the right option for someone who doesn’t live their life in code. That may be an unfair characterisation of GitHub Pages, but the next option also had a lot more supporters…
  3. Ghost: This was where the majority of the love was directed and this is the route I chose. Let me explain:

I’ll start with Wikipedia’s Ghost page because is sets the context very well:

The idea for the Ghost platform was first written about at the start of November 2012 in a blog post by project founder John O'Nolan, the former deputy lead for the WordPress User Interface team, after becoming frustrated with the complexity of using WordPress as a blog rather than a content management system.

This is one of the things I love about Ghost – it’s first and foremost a blogging platform which does just that. John’s frustration with WordPress was the same feeling I was starting to get when looking at it and I really like the way he’s approached this. If you have a read through that Wikipedia page around the history and how he got things up and running, it’ll probably resonate with you as it did with me.

There’s a copious amount of info out there on Ghost already so I won’t reinvent the wheel and describe everything it does, but there are a few things that stick out for me. It’s super intuitive to use, content is written in markdown, it’s easy to assign rights to collaborators and it basically just does all the fundamental stuff you’d expect and does it in a way that feels like it’s 2015 and not 2005 (hi Blogger!). Everything is light too – light pages, light theme and again, just the bare essentials needed to make the thing actually do what it needs to do and do it well. It just doesn’t feel like there’s unnecessary cruft to deal with.

You can get Ghost for free and run it wherever you like. If you’re like me and predominantly live in the Microsoft world, you can even grab it straight out of the Azure Marketplace and create a new site with it completely configured:

Ghost in the Azure marketplace

Remember, Basic and Standard “websites” on Azure actually let you host as many sites as you like on them too so if you’ve already got one of those, you can Ghost totally for “free”. (Do also take a look at Shawn Wildermuth’s blog post on making it all work with Azure though – it’s a cautionary tale). Except as I’ve already said, “free” isn’t free and I didn’t want to play webmaster, I needed a hosted service which brings me to Ghost Pro.

Ghost Pro

In a nutshell, it’s hosted Ghost and it looks like this:

The Ghost Pro pricing model and SSL support

We paid for a year of the “Personal” plan up front which took 20% off the price and the quotas are more than enough for someone just starting out in the blogosphere (they also don’t “hard cap” those quotas which is important). I then wrapped CloudFlare around it (you know there’s a really good course on how to do that…) so we got SSL for free as well as a few other perf bits. That wasn’t without its challenges mind you (read the bit here about Facebook’s Open Graph tag), but ultimately we ended up with a site like this:

kyliehunt.com

Which I think looks rather nice! Which brings me to templates.

Creating (choosing) a template

I don’t know how many websites I’ve built over 20 years of web dev work. Hundreds, no doubt, and I tend to obsess over detail too so it’s never a small task. I was very happy just to pay for an existing template then configure it appropriately and I suggest that’s the smart way forward in a situation like this where you’re building it for someone else.

There’s a great ecosystem of templates out there (the Ghost Marketplace is a good place to start) and I’ve gotta say, I really like the quality of the themes. Some of them are a little over-stylised for my eye, but for the most part they’re very clean, content-rich and well designed in terms of optimisation, responsiveness to various device profiles and configurability. There’s a heap of good documentation out there on Ghost Themes if you want to roll your own (and it is a very nicely designed templating model), or you can shortcut things by taking their default Casper theme and tweaking it to your heart’s desire.

The experience with Ghost thus far

So a couple of months in, what’s it been like? Because I tend to give a pretty “warts and all” account of things, let’s start with the bad:

Not off to a great start. Of course this is the joy of putting anything online – sometimes it’s offline! The question becomes how long it’s offline for and how frequently it happens. Everything I’ve ever put online has been down at some time or another due to outages on behalf of the service provider and whilst this clearly wasn’t good timing for Ghost Pro, it’s never happened since. To my earlier comments around not self-managing, when it did go offline I didn’t stress about trying to recover things myself (and you will have to stress about this yourself sooner or later if you self-host), and sure enough it came back online shortly after.

Probably the main things beyond that worthy of note is Kylie adapting to some techie paradigms (in fairness, she’s not non-technical, she’s just not a “techie”). Markdown, for example, is not where non-techies tend to create content, they’d rather be in Word. There’s MarkdownPad which partially bridges the gap but I’d ideally like to have a tool that plays nice with Word and generates the markdown out of that without it looking like the HTML kludge that Word otherwise generates when you convert anything to markup. Optimising images is another one – what you put on the blog is what gets served so those nice hero looking images – yeah, don’t serve them up at 800KB! Incidentally, I’d be a little tempted to pay CloudFlare $20/m to auto-optimise a bunch of stuff (as well as doing other things) for a blog of sufficient scale to justify it.

As for Ghost Pro, it’s reasons like this which is why I wanted a managed SaaS offering:

You've been upgraded to the latest version of Ghost

This is exactly the point! New stuff for free as opposed to new stuff that I have to invest my time and effort in downloading, installing, testing, possibly screwing up etc. Some may make the argument that it’s not too much of a burden and for them perhaps that’s true, but that hour or so is essential to me not to mention the delegation of risk in that nothing that I then have to fix is going to go wrong, I get enough of that with HIBP!

One other thing actually that’s stuck out for me is fantastic support from Ghost, including from John O’Nolan. They seem to have a very community-centric approach and they “just get it” when it comes to how to interact with people online. That may also be because they’re still a small, young organisation but that may also be why their service seems to resonate so much with everyone who uses them. They’re just nice guys and a pleasure to deal with.

Beyond that, there’s really not a lot to report which is exactly how I’d like it to be. Kylie has half a dozen blog posts under her belt now with a bunch more in draft and she never gets distracted by managing the platform, she just focuses on her writing. Same for me too for that matter – I never get distracted by the platform either and that makes me enormously happy! So happy in fact that I’m moving troyhunt.com over to Ghost Pro.

It’s time to Ghost troyhunt.com

There’s an increasingly large number of things that have bugged me about Blogger, some of which I’ve detailed here and in the post I linked to on SSL. Not least of which is that I simply can’t serve this site up over HTTPS unless I’m able to rewrite page contents at the same time (i.e. reference embedded images via the secure scheme). It’s not just that, it’s little things like not being able to change the fact that a mobile device always gets a ?m=1 query string appended, Google keeps adding in cookie warnings for Euro visitors (and no, I couldn’t care less about EU legislation, stop messing with my site!) and the whole template needs a good refresh anyway.

I’ve had some great chats with John about moving the site and also with a theme creator he’s connected me with. I’m going to blog about the whole thing in detail once I actually make the move, obviously it’s not a simple task for going on 400 blog posts. There are issues such as URL patterns changing and obviously a move to HTTPS so there’s a bunch of stuff we need to work through, but it’s the right move at the right time.

Anyway, heaps more to come on that front. I reckon Ghost is a great way of starting out with a brand new blog if that’s the one thing you really want the site to do. I also reckon it will be a great platform to move this blog onto, albeit with a bit of hard work which you’ll be able to read all about here in the near future!

Ghost
Tweet Post Update Email RSS

Hi, I'm Troy Hunt, I write this blog, create courses for Pluralsight and am a Microsoft Regional Director and MVP who travels the world speaking at events and training technology professionals