I picked up Medium primarily for dumping my thoughts and learnings immediately after discovering it back in 2016. I have published several pieces of writings on software engineering and garnered a healthy amount of audience there. Up until very recently, it has served me quite well. Medium aims to democratize online content writing by lowering the access barrier for the non-technical writers and does a fairly good job in doing so. It’s extremely easy to fire up Medium’s built-in editor and just start writing. There’s nothing to install or configure as everything is embedded into their website. The formatting tools are not fancy but adequate and the process of publishing involves merely adding a few tags and hitting the designated button. This reduction of friction usually means less focus on formatting, deployment, hosting and more focus on the actual writing. May be that’s why people outside of the tech sphere have embraced the platform wholeheartedly. Also, the platform has fantastic SEO and no matter what you are writing about, it’s almost guaranteed to gather a few eyeballs around it. There are a number of publications dedicated to different topics and they make the process of building up an audience even easier. However, the good stuffs probably end there.

Although Medium has been adopted by numerous technical writers and publications, it wasn’t necessarily built targeting this group and doesn’t consider them as first class citizens of the platform. I primarily write about Python, data science, software development and infosec in general. There’re multiple pain points that eventually forced me to steer away from Medium and look for better alternatives. First, It doesn’t support markdown syntax and the bare-bone formatting tools can get in the way of writing contents that have code snippets or require custom formatting. Secondly, there’s no built-in support for code syntax highlighting and you have to embed your code snippets as github gists. Managing and maintaining all these random gists can be a lot of work if you have many sizeable blogs that contain code snippets. Also, there’s no proper support for Latex syntax to render mathematical equations. That’s a huge deal breaker for me since many of my Data Science blogs use mathematical equations to explain disparate concepts. Usually, you get around this by converting the equations to images and embedding them in the blogs. But it completely borks mobile device readability. Another thing is that you don’t control your contents in the platform, Medium hosts and manages them for you. It can be both a blessing and a curse. Blessing because you don’t have to worry about deploying, hosting or managing your writings but at the same time you lose control over them too. Medium can censor you without you even knowing and as of writing this rant, you can only export your content to html, not to markdown format. So, if you ever think of leaving the platform, migrating can be big pain in the rear.

For me, the final nail in the coffin was their introduction of the premium tier. Until then reading and writing on Medium was, although problematic but quite manageable. Then they started blasting these premium subscription banners right at your face. This incessant pestering for subscribing turned into an unavoidable nuisance pretty quickly. Now, I don’t know about you, but most of the contents Medium displays in my feed are premium contents. Often I open an article just to arrive at a dead end that hides the rest of the content behind a paywall. Then I started paying 5$ per month to get rid of these, only to be disappointed by a plethora of low quality articles that were previously hidden behind the paywall. I’m all in for a subscription based business model but it seems like Medium tries its best to make you feel almost sorry for yourself if you’re not paying.

So, I finally took the step and wanted to get out of the platform even at the cost of losing a few visitors in the process and started looking for other options. I had a few almost non-negotiable requirements in my mind.

First, I needed absolute control over all of my contents, which means writing them using my favorite text editor (VSCode). Secondly, complete access to the contents in their raw format is mandatory. Markdown had to be the format of choice since it’s fast and easy to write without losing focus while tinkering with bolts and knobs of different custom menus of the in-built editor that usually these blogging platform offers. Also, Latex support and image rendering was crucial for me as several of my blogs contained charts and mathematical equations in them. It also had to be mobile friendly. Finally, the deployment and publication procedures should be almost as easy as Medium, means, I wouldn’t have to deal with the complexities that might arise while hosting and deployment when I just wanted to get the job done.

So, I started exploring multiple options. Since I primarily work with Python, I was looking for a Python based blogging framework and discovered Pelican. However, to my disappointment, almost all of the themes pelican offered were either ugly, didn’t work on phones, unmaintained or several years old. So, I shifted my focus on some of the newer frameworks like Hugo and Gatsby. Hugo is written in Go and the ecosystem is pretty darn cool. It has a huge collection of official and community built themes that work almost out of the box. Gatsby is even better if you are comfortable with Javascript and React. I picked up Hugo and started a building a brand new blog. Unfortunately, I quickly became obsessed with the process of building a new blog and began tinkering and exploring the framework a little too much. Changing the themes multiple times, customizing them with CSS, changing colors and stuff etc. I focused more on the building process than the writings itself. Then there was this messy process of deployment. Since I wanted full control over my contents, I decided to deploy the blog using Github pages. Hugo supports deployments using gh-pages but I couldn’t find any straight-forward CI formula that worked out of the box. So, I wrote something myself to automate the deployment but wasn’t very happy with the overall speed of the entire process. Dealing with deployment issues weren’t exactly the best experience when I just wanted to push my darn contents.

While I was again in search of a simple tool to make my own blog, I found this tweet where Hamel Hussain and Jeremy P Howard announced fastpages. It has pretty much everything that I want in a tool to architect my blog. The UI is super simple, it supports blogging in multiple formats, I can write and preserve my blogs as markdown files, jupyter notebooks or even as microsoft word documents. The UI also looks great on mobile devices and the it hosts the blog in Github. I don’t have to get out of my text editor to write a blog and the CI works out of the box. This makes the entire hosting and deployment completely automatic and hassle free. Now I just write my contents in markdown or jupyter notebook format and push it to the master branch. The CI takes care of the rest of the things.

Fastpages is very opinionated. It exposes a few loose strands for you to customize and the philosophy here is to bootstrap you with a minimum set of toolkit required to perform the tasks at hand. Also, it’s the perfect blogging tool if you work in the data science paradigm since it has the ability to directly turn your jupyter notebooks into beautifully formatted static blogs. However, the process of migrating my previous blogs was a chore. I haven’t yet fully migrated all of the writings as Medium doesn’t export the contents to markdown format. I tried a few CLIs to convert the html documents to markdown but the results weren’t satisfactory. So copy paste is my only friend for now. However, I’m quite enjoying the process of writing new posts and publishing them with a single git push origin master. Also, my Google Analytics is already showing a pretty encouraging amount of traffic here. Not regretting the journey and definitely not going back.

I still read Medium blogs from time to time, especially when the contents come from someone I already know. However, my days of writing anything there is over. Adios, Medium, It’s been a pleasure!