I Overengineered My Portfolio Website: (Part 1)
If I were to list all the reasons of why I consider this entire endeavor to be Overengineering, it would start with the fact that it’s a personal portfolio (I’m definitely not looking at a million people’s worth of traffic) and the fact that I don’t write a lot of blogs or many personal project write ups.
One morning I got to thinking, what if I were writing a lot of those? I did have a few ideas for blog rusting away in draft phase in my Obsidian (vault). I would need to edit the content files in my codebase quite frequently. Practically speaking, that’s a solved problem, I could change a few files on the codebase, push it upstream to see the changes live, and this endeavor would not need to start, yet here we are.
Here is where I should stop explaining the reasoning because I know for a fact it’ll stop making any sense, but since I’m documenting things, here’s my list of reasons in no particular order.
- It’s cleaner to maintain the write-ups separately from the codebase (separation of concerns I guess).
- I preferred subdomains over URL path (completely opinionated).
- It sounded like a lot of fun (this reason can be ranked the highest).
- I can write from any machine with Obsidian and a keyboard, no codebase necessary.
A few questions arose: if I keep the write-ups and the codebase separate, how would I achieve that? [[submodules|Git Submodules]] comes to mind, I had to ditch that idea because
- It didn’t help with “writing from any machine with Obsidian”. A submodule only exists once you’ve cloned the parent repo, its content rides inside the portfolio codebase, not apart from it. I wanted to open Obsidian and write, not clone a codebase first.
- The dreaded “Detached HEAD”. Checking out a submodule pins it to a commit, not a branch, so writing a note means checking out a branch by hand, committing inside the submodule, pushing, then going back to the parent repo to commit the pointer update too. Every note, twice.
The answer that I found was to maintain a separate repo for write-ups from my codebase, one that could stay private while the codebase stayed public. This decision cascaded into the rest of what I’ll cover in the next parts.
← Back to blog