For about a year I’ve been walking the line between full-time developer, and a dude who just happens to sometimes write code at work. When it came to my own personal publishing endeavors, I found myself torn between the simplicity of existing content management systems, (Wordpress, Wix, etc…) and the satisfaction of a “custom” blog.


Joe in Japan is something of a happy medium.


I put the word custom in quotations because while I do maintain this blog using a code editor, there happens to be a wealth of pre-made elements at work here.

Perhaps the main driving force behind this endeavor is GatsbyJS.

Which is, in their own words,

“A free and open source framework based on React that helps developers build blazing fast websites and apps”

So instead of working inside a WordPress dashboard, I’m hanging out someplace that looks more like this -

Markdown code from a blog post with a terminal command line view

The question you may be asking yourself is, “Why?”

I suppose aside from wanting a blazing fast website, I can’t deny my inclinations to be as hip and current as possible. I believe wholeheartedly that GatsbyJS will be able to help me accomplish these goals.

So am I claiming to have hand-coded this entire site?


No, not even close. Aside from the Gatsby framework there are two other major contributing factors behind the scenes.

These are in essence, the lifeblood of this project. That being said, the barrier to entry is still quite substantial. It required me upping my coding game significantly in order to get this off the ground.

There were several aspects of this project that were entirely alien to me. In particular, working with GraphQL, the elusive query language invented relatively recently by a team of elite Facebook developers.

The image of the Lonely Pokemon at the top and it’s accompanying code snippet is a reference to the site’s data layer, which uses GraphQl.

Here’s what Cubone might look like as a GraphQl response, if that sort of thing interests you.

{
  "data": {
    "pokemon": {
      "name": "Cubone",
      "image": "https://img.pokemondb.net/artwork/cubone.jpg",
      "types": [
        "Ground"
      ],
      "classification": "Lonely Pokémon",
      "resistant": [
        "Electric",
        "Poison",
        "Rock"
      ],
      "weaknesses": [
        "Water",
        "Grass",
        "Ice"
      ]
    }
  }
}

If it doesn’t, then I’m afraid you’ll just have to take my word when I attest to it’s coolness.

In a third scenario, if you’re now inspired to start a Gatsby project of your own, you’ll find no shortage of tutorials and templates on the official GatsbyJS site.

However, my own personal biases would have me suggest that you check out my own Gatsby Starter Blog, which I built pretty much entirely using said tutorials. You can get the code for it on my GitHub.

As for me, I’ll now be devoting a bit of time to the teardown of my WordPress sites. No hard feelings, it’s just time to go.

Besides, doesn’t “Gatsby” just feel a bit classier to say?