This site is runs on Ghost in a little micro container somewhere out in Virginian data center. I wrote the theme, put up the service, and here I am writing my first blog post.

Ghost Logo

but what the heck is Ghost?

Ghost is a blogging framework, just like Wordpress, it was initially a Kickstarter project and it is still very much in beta. Quiet a few people have mentioned the project to me over the last few months and I thought I would give it a spin.

So here is that spin

My initial thought on Ghost was: Wow this is gorgeous. My thoughts on that front haven't changed. I've given a stab at my own theme, but I am no means a designer and this theme does not do justice compared to some of the other themes out there. The internal interface is clean, intuitive and easy to navigate. However, let's be honest, a gorgeous template is platform independent. Just because people have done beautiful things with Ghost, doesn't mean you have to use Ghost to do beautiful things.

In writing the theme, there really isn't all that much to worry about. The current documentation of Ghost is a handful of pages, opposed to the encyclopedic Wordpress Codex. If you've ever worked with Mustache or Handlebar templates before, there's nothing new. This lack of functionality if anything is a plus. Too often I've come into projects that fail to separate logic and rendering. I don't want to see math in your views, I don't want to see database calls or request handles- keep that stuff in a different layer. Whether you follow MVC or not, it's important to keep your code clean and readable. In writing this theme I found myself more worrying about design than internals. Ghost forces you to do that, and that's awesome.

<!-- Not great code -->
<!doctype html>
<html>
	<head>
	</head>
	<body>
	<h1>Posts page!!1!1</h1>	
	<?php
        # Database settings
        $db_server = mysqli_connect(getenv("MYSQL_PORT_3306_TCP_ADDR"), getenv("USER"), getenv("PASSWORD")) or die(mysql_error());
        $connected = db_server->select_db(getenv("DATABASE"));
        $data = ($this->db_server->query($this->query)->fetch_all(MYSQLI_ASSOC)));
        foreach ($controller->status["data"] as $row) {?>
        <div class="time">
            <b><?php echo $row["formatted"]; ?></b>
            <div class="idea">
                <?php echo $row["idea"]; ?>
            </div> 
        </div>
	<?php }?>
	</body>
</html>
<!-- Nicer Code -->
<!doctype html>
<html>
	<head>
	</head>
	<body>
	<h1>Posts page!!</h1>	
    <!-- Notice how logic elsewhere allows for greater readability -->
	{{#foreach post}}
        <div class="time">
            <b>{{formatted}}</b>
            <div class="idea">
                {{idea}}
            </div> 
        </div>
    {{/foreach}}
	</body>
</html>

Conversely no hooks into the framework, is a major drawback. I can't do anything fancy like grab posts in page or even have search functionality without altering the framework core. Good-bye infinite scrolls and smooth transition. Given that Ghost is in Beta, this may change, it looks like plugins (they're calling them 'apps') will be included soon. Until this is the case: Ghost provides something more like a fancy static site with some blogging capabilities than a robust blogging platform.

Ghost tries to focus on making publishing easier. It uses this github-like markdown to create posts with the abillity to embed HTML. However, unless you're familiar with markdown or HTML, this isn't that much of a benefit. As such, their strongest point is more of a meh.

So in conclusion, Ghost:

  • is Pretty beautiful

  • is Pretty simple

  • is Pretty Limited (for now)

  • has OK publishing features

So why choose Ghost? I would recommend it for developers who just want to try something new. The personal setup is somewhat technical, and the lay person won't be able to get it running super easily. However, once the site is up, even someone new to webdesign should be able to read and edit themes without too much difficulty, and getting around should be no problem. Honestly, for more involved projects I would probably use Wordpress for a blogging framework. Using Ghost for anything more than strictly blog is a bit of a stretch since it's so limited, but I'm hopeful for the future. Since Ghost is open source, you can contribute to the project yourself and help steer the project as you see fit. An active project in its relative infancy is pretty exciting; can't wait to see where it goes.