Today was a lot of interview prep. That’s great because I like the self-reflection time, but it doesn’t leave too much time to work on these side projects.
In the spirit of documenting my process of thinking and working, I want to talk about how I’m going to tackle the next step of this Hugo migration.
The problems I’m facing, in no particular order, are:
- I need to change the front matter from how it is to something more consistent for Hugo. Not all of my posts are consistent, but I can easily make it so
- One pet peeve of of mine is the way images are handled in Markdown.
- For one, it jacks up my file format/layout because sometimes the image is inserted at the end of a line and I haven’t explored how to wrap the line to my desired 80 characters. Perhaps it really isn’t a problem and I just need to read some documentation. But it’s on my mind
- The way I would like to handle it is to reference some variable name in my
Markdown, which is then processed later to be replaced by the properly
formated
<img>
tag and whatnot. Each blog post already stores some metadata about itself; moreover, it’s in akey:value
sort of thing withYAML
, so how hard can it be to say “If you see thiskey
in the Markdown, then swap it with the<img>
where the source is thevalue
”. I did a tiny bit of research and it sounds like this feature is possible with something calledshortcodes
. I’ll look into and you’ll find me writing about it in a few days, I’m sure
- I need to figure out how to restructure my posts to match the “Hugo way”. I
know that Jekyll was very very very flexible with whatever I threw at it. And
I’ve read that Hugo is pickier. So I need to make this transition work and
work properly so that I’m not fiddling with this down the road
- Disclaimer: It’s not that I don’t like fiddling with this site. It’s literally one of the main reasons it exists. Heck, my love of tinkering is what drives this migration in the first place. I have enough experience with these static site generators that I’d like to make sure I do things right from now on. I’m done with the “I’m learning and let’s just get this functional”.
So to fix that front matter issue, I’m definitely writing a script to do it. I have just enough blog posts to say, no way I’m not doing this by hand. I’ve thought about 7 steps that the script should take:
- Read in the current front matter
- Compare it to my “ideal list” of key-value pairs and keep the good ones
- Add the missing ones with default values I need to go in and change
- Add the filename to some list that tells me to look at some thing
- Also note which files have an image in them
- Make a new file containing the new front matter and the old content
- Put this new file in some target directory
The code will definitely look like: for every file in my /posts
folder, do the
thing.