TL;DR Wren is 1) a fun little project to sink my teeth into and 2) a Bear-inspired super simple static site generator
The want to blog
I’ve wanted to have a little corner of the internet for a long time. I’ve just never gotten around to it.
I always found myself a little paralyzed by overthinking the style, the layout, the everything because it felt like something that was so mine had to reflect me. But I also came to realize the site was not what really showed me. The words and the other content was.
I realized what I needed was something that would get out of my way, and not let me get in my own way, and just let me write. I was also yearning to build something and find a side project to really sink my teeth into. So although "build it from scratch" is the most in-my-way a project could possibly be, I started experimenting with static site generation.
Around the same time, I stumbled across Bear, an amazing little platform that exemplified what I was going for. It was content-first, and writing that content was hyper-focused on the words and not the presentation. I fell in love pretty quickly.
So taking heavy inspiration from Herman Martinus’ work on Bear to get started (including borrowing plenty of its open source code), I started on an initial version of Wren.
Keep it simple
The biggest goal for this project is that making a blog should be as simple as possible.
As little configuration as possible. As few options as possible. As little thinking as possible.
This also lends itself to a few fun goals I’d like to achieve with the project as it matures.
I want to aim for a single executable, with as few dependencies as possible (hopefully none). This will be an adventure into code packaging, something I haven’t really gotten to play with.
I also want to keep the generated code simple. I’ve always loved the idea of semantic HTML and not having a <div> for everything. I want to aim for single HTML files, with little to no JavaScript.
A secondary goal is to make it a really great terminal tool. Of course following the first goal, there shouldn't be much in terms of options, but I still want to make what functionality there is as usable and understandable as possible. I’ve been reading the Command Line Interface Guidelines, and feeling inspired by a lot of the practices outlined there.
Goals
These are somewhat to make Wren a useful blogging platform for me, somewhat just to have some fun on the development side.
- Fairly close feature parity with Bear
- I’m not trying to replace Bear in any way, and a static site generator could never compete with the amazing community over there. Bear just makes a lot of great choices that align with the goals of simplicity in this project, so I think aiming to match it makes a great starting point.
- Treesitter code highlighting
- This is purely for fun, but it is true there are things that the regex-based highlighters that are prominent on the web can’t compete with Treesitter in terms of accuracy. If the syntax highlighting is getting statically generated anyway (so no page load-time overhead), why not make it the best it can be?
I’m going to keep working on Wren whenever I have time. If you want to keep up with it, check it out on GitHub. At the time of writing, it’s in the very early stages (I’m still referencing the actual source code for the configuration info on this post), but I think it will be getting better rapidly.