I have migrated my homepage over to the static site generator Hugo. Its bastically what I had built before with some pandoc and Python magic, but… well… a lot better. And this basically represents something I have learned over the last few years. Before this change everything was some cobbled together DIY stuff. I worked quite well, but everything small represented a huge task. For example, adding an RSS feed to my old blog required reading the RSS spec and generated an appropriate XML in Python. This might have been a learning experience, sure. But it was still something that needed maintaining and understanding. And in the end it was just sunk time you know?
By now I know that I’m able to implement the most simple portions of most specs. And generating some XML in Python isn’t exactly breaking new ground. Thus, when assessing the situation critically, the whole ordeal was hardly a learning experience and much more just a chore. And its the same with oh so many other things as well. There is a thin line between doing something for the first time to learn from it and just doing a shoddy job at something you were already capable of doing.
I guess most people have a similar learning curve. When getting into programming every bit of help is used. Projects consist of a bunch of sample code and external libraries you don’t really understand yet. I lived through this phase with very early Visual C# and Unity projects. After a while you become much more confident at writing stuff yourself. And then it just clicks, you pass the threshold where you are basically able to do everything. Sure it may need some additional reading to understand concepts, but the programming portion of every problem becomes almost obvious. Surely from now on you no longer need to rely on any external code and can just do everything from the ground up? From first principles?
And so you do. And honestly, you should. Just to see that nothing really is magic. Most people who have programmed portions of the software that drives your daily workflow aren’t magical geniuses, but rather people who’ve worked on building a thing. And hopefully they were payed well for building their thing. I remember the first time I build a 2D game from the ground up in C. Built the rendering, audio and game logic all using only SDL to do the grunt work for different platforms. And you know what I did with that newfound knowledge? Build it again and again. To get it “just right”. Turns out I knew enough to make a game engine, but that took a little too much time away from working on the “game” part.
So we’re back at the main problem. Doing everything from first principles puts you in the position that you have to work a little too much on those first principles instead of the main idea you have. And they’ve been done. Countless times before. And possibly much better than the way you have built them. So instead of spending too much time reinventing the wheel, I am now much more self-critical in thinking about WHAT my novel idea actually is. And then I make sure to put as little stepping stones in the way towards that idea as possible.
Just a quick side note: Maybe of course the novel idea is a much better way of building something that already exists. In this case the previous point is moot.
But yeah. That’s why switching to Hugo represents a new learning for me. Sure I could also build a custom static site generator just for my website. But either it becomes a mess of random scripts or I spend more time working on that, than on my site. And then I’d just end up with a terrible looking site that I’d spent waaay to long working on.
Thanks for coming to my TED talk.