Decisions, Decisions

I am hosting this minor catastrophe in writing on WordPress.com. That may change in the future (edit: It did), but for now I’m trying to focus on the writing and not the “sysadmining”. I love implementing technology, but it can also become a distraction. A blog platform seemed to suit the kind of content I was thinking about. I thought about building out my own platform to do it too. I spent a few weeks thinking it over. I had the following options:

  1. WordPress or another off the shelf blog platform hosted in Azure. I’ve done this before. The templates are already there in Azure so you don’t need to do much. This is the best option if I were thinking I’d be a 40hr a week blogger who was trying to monetize the site. I’m not (who knows where the future goes?).
  2. WordPress hosted by someone else who lets me change anything and everything.
  3. WordPress on . This is a far more limited customization experience, even on the higher paid tiers. You can customize CSS and change some theme options, but there's no access to the page layout itself.
  4. Roll my own. Maybe this would mean simply dropping files in a folder (or blob storage) and letting some server side code read metadata to find files, etc.
  5. Office 365 SharePoint. I have an O365 enterprise subscription so this would be no additional cost.
  6. What else?

A future post will discuss the concepts of Infrastructure-as-a-Service (IaaS), Platform-as-a-Service (PaaS), Software-as-a-Service (SaaS), and other xaaS. I am scheduled to also talk about it at the Chicago .Net Users Group in July (I’ll let you know when this is confirmed). Knowing both of those are coming, the decision on how to host the site took on more significance. Dogfooooood!

What am I dogfooding here? Mostly my advocacy of the following points:

  1. Using a cloud based approach makes sense.
  2. Keep things as simple as they can be, but not any simpler than that. This is general principle in assessing SaaS->PaaS->IaaS.
  3. Focus on the value you’re trying to acheive and don’t get lost in the technical weeds.

That in mind, rolling my own rolled right out the window. I ruled out O365 SharePoint early on because it’s a good collaboration platform, but it’s just too clunky for simple articles. That left me with WordPress or something like that. SaaS->PaaS->IaaS dictates I should use the highest level of abstraction that can work. As I could come up with no valid reason to sysadmin my own WordPress installation, even as an Azure AppService, a hosted solution seemed a better fit. Any reason I would have for my own Azure installation would be ego driven and not value driven. I would also be buying into keeping WordPress up to date with patches^[The last time I used an Azure gallery deployment for WordPress, that was the case. I asssume that’s still true, but haven’t verified it.]. Even if it’s trivial to do so, it’s still more than zero. I’ve seen some updates go badly south too, so I learned to stand up a new instance from the old rather than just updating the existing instance.

The Conclusion

That realization dramatically affected my view on App Services being PaaS for this case. SaaS->PaaS->IaaS is often a matter of perspective. There is no neat classification, so I fall back on calling it a continuum. If I were building custom software and I needed something IIS-ish to go host it on, then Azure App Services gives me IIS-as-a-Service. However, here I want WordPress-as-a-Service. As I would have to perform the updates myself, WordPress on App Services suddenly looks an awful lot like IaaS. Dogfood sure tastes great!

So, that pretty much left me at number 2 and 3 from the first list. I ended up going with 3 for now as I just wanted a platform to publish on and I did not want distractions. It’s a bit more expensive as I still wanted to be able to customize at least some CSS, but it at least keeps me out of the temptation of completely customizing everything.

Additional Information

As far as the writing itself concerned: I’m writing in Visual Studio Code^[VS Code has become my go-to text editor in the last 6 months or so.] using markdown and then I’m using Pandoc to turn that into HTML. That then gets published to WordPress via the advanced technology of copy and paste. Here is the task I use in VS Code to output the HTML. As it’s declared as a build task, CTRL-SHIFT-B will run it. Pandoc is on my PATH so there’s no magic to "command": "pandoc".

{
    "version": "0.1.0",
    "taskName":"build", // ctrl-shift-b
    "command": "pandoc",
    "isShellCommand": true,
    "args": ["${file}", "-o", "${fileBasenameNoExtension}.html"],
    "showOutput": "always"
}