This Personal Site Has Feature Flags
Feature flags are something you see in some larger products. GitHub uses them a lot and I am genuinely excited when new flags show up. It’s fun to participate in something new, even if there are some rough edges.
This small, personal website is the farthest thing from a large product. I intentionally embrace its nature as something that’s small in scale. This manifests itself in a few ways:
- As of writing this, there is no JavaScript. Not because I don’t want there to be or because I hate JavaScript or something. While I certainly am a bonafide member of the Anti-JavaScript JavaScript Club, that means I like to use it when I need it. So far I haven’t found a use for it, but that doesn’t mean that I won’t. I do know that when I do, I will have am equitable alternative for those who do not have JavaScript enabled.
- I don’t use a CSS build process or any pre-processor or any framework for that matter. If you look close, you’ll realize that sometimes there actually no rhyme or reason to the way that I’ve organized my CSS, in some places it’s messy, and there’s likely some dead code. My younger self would be grimacing.
- I often hold off on implementing features that might seem relatively easy to implement (namely with JavaScript alone) as I don’t see them as absolutely necessary or I’m not interested in doing a half-assed job.
So, if I’ve embraced being small, why am I using a larger product pattern like feature flags? Well, it’s actually because I am small.
I often don’t have tonne of time to work on this website. That can make more ambitious projects harder to tackle. Sometimes, I’ll be in the middle of working on something, then life happens and I can’t return to it for a week or even longer. It can be really easy to forget what I was doing or sometimes I’ll have something pressing that I need to change or do. In those latter situations, I’ll stash or revert those working changes into oblivion.
Since this website isn’t just a home for the words I write, but is something that I use to learn and refine my skills as a web developer, I’m generally not working with deadlines and am more willing to take the time to get things right. The balance between being a perfectionist, but also someone who explores is hard to navigate—it can easily lead to accomplishing nothing. Something else to balance is keeping this thing working so that I can write.
A few months ago I realized I could use a “development flag” to maintain my progress on features I was working on and while continuing to push the website forward in other ways. After doing this for a little while, I realized that it might be beneficial to expose some of those work-in-progress bits to others for feedback and as a way of working in public.
Doing this allows me to take some risks I usually wouldn’t for the sake of preserving a working mainline experience. I can still preserve the that experience while exploring new features that won’t diverge from each other through stale branches or forgotten stashes. In some cases, I can explore techniques or web platform features that won’t be ready for a few years.
So, if you’re interested, I only have a couple small features at the moment. Any feedback on their implementation is appreciated. I’ll be adding some more experimental features in the future.