In love with Emacs

In love with Emacs

For years now I’ve had this on-again-off-again relationship with Emacs. I was first introduced to Emacs—more specifically org-mode—by a Hulu Software Engineer during a Lunch and Learn. I was immediately hooked.

From day one I was capturing TODO’s, meeting notes and jamming stuff into an org-journal file. The org-agenda kept me on task and organized. And then, a year or so later I realized I wasn’t even opening Emacs any longer. So, I dusted off the old config, updated my .emacs and jumped right back in. And then the same thing happened, I simply wasn’t using it anymore.

So here we are again, that little purple icon in my dock called out to me and I answered. But this time I went with a completely new overhaul: Doom Emacs!

As someone who uses VIM at least multiple times a day, Doom’s “always Evil mode” approach suits me well. So I ported into my config.el only the portions of my old Emacs config that were important—mostly org-mode stuff—and I went to work adapting to Doom.

I love it.

I knew I’d need something to keep me motivated to use Emacs, so I decided to use Emacs to write and host a blog. This blog.

Yep. This blog is written in org-mode, translated to a web page via ox-hugo, and then shipped up to AWS where I host it via S3 and Cloudfront.

I will explore this process in detail in a later post, but the beauty of this is that the only real portion I’m concerned with—the blog posts—is maintained in a single org file. I simply add a new sub-heading as a blog title, drop in some necessary hugo matter, and start writing the post. Once I’ve finished the post and want to publish, I toggle the heading state to DONE which adds a timestamp, I export the file, let hugo build it and then sync it to AWS. If I have a post that I want to keep as a draft, I can toggle its heading state to TODO and hugo will not export it to HTML until I toggle it to DONE.

I need to finesse the final “deployment” steps to AWS, but for now this is working very well. And, it’s keeping me inside of Emacs, which was the whole point.