All good things come in threes

Why it took me three tries to create this blog and what I learned on the way

Tags: meta

To be honest, it took me several tries to get this simple blog working. This is kind of embarassing for a web developer, but hear me out!

About half a year ago, I got fed up with using my Raspberry PI with DynDns and got me a vServer and a top-level domain. The main motivation, other then hosting all sorts of crazy stuff like Gogs and random experiments, was to have a personal blog.

For most people this would have been straightforward: Head to tumblr or install wordpress or any other CMS. But this was far too mundane for me. Oh no - it had to be state of the art, and custom-made.

First attempt

First thing I tried was a Kendo-UI SPA setup I mostly run at work. I made some modifications that quickly escalated into a full-blown framework. Of course this slightly shifted away my focus from the blog, but at least we could use the improvements at work.

First rule: If you do a project, focus on the project. Don't get sidetracked, by some seemingly brilliant idea. (This is true for every project, not just programming)

Second attempt

A few weeks ago, I decided to give the blog another try. This time I decided to use Angular (4) and Core. In the former I didn't have much experience, in the later nobody had much experience at the time. After I dragged myself through the swamp that is Webpack configurations and getting to run core on linux as well as the question wether to use "project.json" or "*.csproj" and why in the world this even has to be such a big deal, I got the boat floating - beautifully.

Some time later I showed the first prototype to a friend in university, who has a more conservative view on web development. "Why is there a loading screen?" he asked (Answer: 1mb+ payload of Javascript), "What happens if I turn off Javascript?" (Answer: Blank page), "Will this work in IE9?" (Answer: No). Then he showed me his blog, which was just static (Jekyll-generated) HTML, but it was super fast and worked on literally every device capable of rendering HTML. Somehow this "stone-age" technology did a better job than my Angular "rocket-science".

Second rule: Always find the right technology for the Job. There is no such thing as a Golden Hammer.

However, I ended up with a nice template for future Angular/Asp.Net Core projects.

Third and final attempt

So static page generation seemed like the way to go. I probably should have used Jekyll or Hexo, but I still wanted it to be custom made. Also this was a welcome oportunity to get a little bit more into Node.js. I figured, I could just collect files from a folder and run them through DoT.js templates. Well it turned out to be a little more complex than that and lead to creating a little tool called page-gen, to finally create the blog. "Wait a minute!" you might say "Creating your own static-page generator. Didn't you totally get sidetracked again?" Well ...yes, thats why rule three is:

Third rule: Feel free to break rule one and two, especially for personal projects. Always choosing the easy and obvious option often stops you from learning something new. Also you might discover a new way to solve a problem. Even if the first attempts didn't lead to anything, I learned a lot in regards to Typescript, Webpack, Asp.NET Core and Angular 2+. And this knowledge might proof to be more valuable than having a niche-blog.