Keshane's Blog

Why another blog?

I previously had a blog at keshane.com/blog. That one was built using a web framework called Django. It was a way for me to dip my toe into web development using the “basic” tools - a self-managed virtual private server (VPS) hosted on DigitalOcean, a manually configured Nginx reverse proxy, an Apache HTTP server behind that reverse proxy, an SMTP and IMAP server for emails, Let’s Encrypt’s certbot for TLS, raw database queries, hand-crafted scripts for continuous deployment via webhooks, and the knobs that Django allows you to turn. All of that was a useful learning experience for me, and I even made a few blog posts. While I love tinkering, the maintenance has grown to be burdensome as my interests move toward creating content.

You’ve got issues - I got them too

What kind of issues did I need to deal with?

Each item by itself is not burdensome, but addressing the accumulation of all of them became a time sink. In some cases, I have not been able to resolve the issues in a satisfying way - like updating to the latest OS version -, and their presence distracts me from starting another blog post.

We don’t need no education

Make no mistake, running my own server has been an incredible learning experience. There is no better way to find out how servers on the internet work than by diving into the nitty-gritty and creating your own server application. While there is still much more to explore, I feel like I have learned enough of the general concepts, and the efforts to maintain my server are no longer worth my time.

I’m at a point in life where developing my softer skills like communication and writing are more valuable than growing my technical skills. For my personal life, the self-reflection needed to write a blog will help me explicitly define the relationships I have with myself and others. As my relationships mature (I’m recently engaged!), I want to figure out how to maintain those positive vibes that make life worth living. For my career, explaining and arguing for ideas and designs have become more important than executing them. To improve at writing, one must practice… writing (note to self - I should also read more).

Related to an aside in the paragraph above, I am also piloting whether this stack is a good candidate for a wedding website to which my fiancee could also make changes.

Do better

How does this new blogging infrastructure allow me to focus more on writing? The core of this process is the static site generator (Jekyll in this instance) that takes a set of Markdown files (essentially plain text files with a very small syntax for defining markup) and turns them into HTML files. The part of this stack that makes the blogging part easy is Netlify, which can pull the markdown files from the version control origin of my choice, perform the compilation, and serve it up on the internet with all the bells and whistles that a modern website needs. Netlify CMS also allows me to make edits in a web browser if I’d like to make changes on the go. I have gone from defining a database schema for a blog, writing boilerplate Python to glue the data to templates in Django, setting up SSL, keeping Django up to date, etc. to writing my thoughts in a file, committing it to version control, and pushing it. The property that my writing is kept in plain files and directories instead of a database is also appealing as a more readable organization of my thoughts.

One caveat - this new stack does not currently perform the “email notifications about new posts to subscribers” behavior that my previous stack had. Netlify has a feature called Functions which I will explore more and which I hope can support a light-weight solution of keeping subscribers.

Conclusion

If you’ve come this far, thank you for being an interested reader! I do not intend to share this blog very widely. These musings are mostly for myself and close friends and family who like to find out what I think about.