Lessons from Neovim configurations and 11ty website templates

5 min read

This weekend, I changed my neovim configuration from nvchad to kickstart nvim. The primary reason was that the level of abstraction in nvchad was a bit too much, and I wanted a single init.lua file in which I could comfortably add plugins through lazy.nvim. I hadn’t recognized it up until now, but not fully appreciating the structure for the config was presenting a significant barrier to further making my setup my own. Not only was kickstart neovim incredibly easy to setup, I have been able to tweak so many things that I had put off of the past year because I now have a much better handle on how to implement those changes. Throughout this experience, I learned more about the trade-offs of complexity, and reflected on how my neovim adventures differed from revamping my website with 11ty. In one instance I was building from the top down — I took a template and began to strip away and tweak the components I didn’t need. In the other, I removed most of the complexity and started from a more bare bones configuration to build off of.

Lesson 1: Additional features are not free

If a template touts the ability to do several fancy things, it is likely that those fancy things rely at least, in part, on external dependencies. I’ve covered this a bit in nobody can code alone, we all rely on each other so I won’t belabour the point here, but the main gist is that more functionality often equates to more overhead. Even in the rare case that it doesn’t it certainly will involve more mental bandwidth to keep track of all the features and how to work with them. To present a more accessible interface to customize these features for the user, a developer will often abstract a lot of the truly fine-grain control. While helpful when starting out, this can begin to add an extra layer to get through when diving into the heart of the configuration. If the repository for a plugin says “just add this to your init.lua”, I would have to add the extra step of determining which init.lua. Furthermore, as I wasn’t the one that designed the structure in the first place, the choices (while probably very intelligent) didn’t seem intuitive. I just kept thinking “well, that’s not the way I would probably do it”.

Lesson 2: Change hurts more for things that are habitual

When I first started my neovim journey I didn’t think that I would ever get certain keybindings down[1]. However, the more that I have consistently used them, the more they have solidified to the point where I don’t have to think about them. In creating a setup that will hopefully work for many years, I think that it is important to be able to create a custom setup now with the keybindings that make sense for me, rather than having to adapt to the keybindings decided on via a distribution like lunarvim, nvchad or AstroNvim.

For something like the website redesign, in which the layout isn’t changed as much and all that matters is that markdown content eventually gets published, relying on a template isn’t as big of a deal. In doing so, I’m not committing the decisions of others to memory, and changing at a later point is much easier.

Lesson 3: There is no shame in using templates

If I were to sit down and design a new eleventy site from scratch it would take many hours for the site to have the same look and feel as the current template does. Some people may see using a template for one’s personal site as a moral failure, and I felt a small bit of this both with the previous template and the new. Doing something yourself from the ground up feels empowering, however ultimately we have to take a step back and realise that recreating the basic code of a blog is likely a waste of time[2].

As this post highlights, the most important thing is that friction is minimized. How long does it take from idea to publication? Is the process fun? Is it something that will be able to continue working with minimal issues? As Feel Good Productivity emphasizes, we are much better at doing things that we enjoy.

Conclusion

Using a more pared down neovim configuration, combine with a template for the website works best for me, and allows me to enjoy to the process of writing and posting to the blog. In fact, it has been so enjoyable, that I have been more inclined to keep playing around with the configuration and experimenting with plugins than doing harder work — such as working on my exercism problems!


  1. For those especially attentive readers, yes I also was on lunarvim to start!. ↩︎

  2. I would argue the same is true for many businesses. In chasing a custom software solution that they think will solve all of their problems, they burn massive amounts of time when they would be 95% of the way there with something off the shelf. ↩︎