3 minute read

I like Medium. It's where I started eponymously blogging. Medium publications are great and the workflow is pretty neat. Lots of good content and publications are still in Medium.

But I really like tables. Maybe it's because I've spent a part of my life in spreadsheets. Tables are probably one of Markdown's pain points. There is no good way to style a table in Markdown. Not only because there are at least three different ways to write a table, but because after 10 rows, no matter which Markdown extension I'm using, I stop liking working with tables. I still prefer it over having no tables, or having to take a screenshot and embed and image of the table.

I also like syntax highlighting. Embedding gists from GitHub and going back and forth, is frustrating at times. These are things that medium doesn't do, and I like to do.

I wanted

  1. Tables and code highlighting
  2. Not to host or maintain anything
  3. Write content in Markdown or HTML
  4. Export content easily
  5. Draft and publish using the same solution
  6. Not break the bank

Hosted CMS sounded good but I couldn't find one that fulfilled all of the above. The next step was to pick from one of the 2^10 static site generators out there and then pick the hosting which was probably going to be git based anyway.


I picked Zola. It has a lot of themes, it's easy to install, configurable, and it looks like I can work with Tera, since it's quite similar to Jinja2.

A great feature is the "live" view. You can run zola serve, and zola will setup a watcher under your content. Every time you save zola will build the content on the fly and serve it. This is a huge time saver, and makes writing a pleasant experience.

The difficult part was figuring out Zola's content layout and then converting medium's HTML to Markdown with frontmatter. The docs are great, and there are multiple examples.

For the conversion I wrote a script to do the heavy lifting with pandoc converting HTML to Markdown.

I looked at the deployment docs on Zola, and picked Cloudflare Pages.


Make a repo in GitHub or GitLab, push your markdown. You can largely follow this guide just beware that Clouflare pages v2 build system doesn't support zola, yet.

You can now setup a custom domain and you're good to go.