Ivan's Illusions

Ivan Markov


← Back to Posts

Welcome, again, again, again!

Woah, this feels like a ritual at this point. If you’re here, it’s possible you came from libreivan.com! Yep, that’s right. I made yet another new website.

In this post, I’ll be referring to libreivan.com as lic, for conciseness. The truth is, I wasn’t really happy with the state lic reached after roughly a year of iterative development. In this post, I’ll go over the reasons why I abandoned lic, and how this new one, ivanmarkov.net is going to work!

Technical debt

Overtime, lic became complex, like very complex. Here are just some of the issues:

It was four websites, actually

Yeah, you heard that right. lic wasn’t just a website, it was four:

  • Main website
  • Lite version
  • Retro version
  • Microwave ARG

Due to limitations in the templating engine, I was forced to change up the deployment script to build the same website four times: the first time was simply for the main website, no tweaks or anything; the second time was for the lite version, which used different templates; the third time was for the retro version, same thing and, lastly, the Microwave ARG was a fourth build which used both different templates and different contents.

This was a mess. I tried as hard as I could to make the file structure good but, the templating engine was just not dynamic enough to do it in a way that wasn’t unapologetically hacky. Which actually brings me to the next point!

Weird stack

lic used Deno + Lume for its static site generation. This… led to many issues. Mostly that the lack of documentation and support was a bit of a headache. As a result, I had to implement things I shouldn’t have implemented, and it worsened the inconsistencies between the four versions.

It was also in JavaScript, a language I don’t exactly excel at. As a result, the codebase was just… always alien to me.

Weird stylesheet

As lic grew, the stylesheet became bigger (especially with all the weird effects it implemented). It came to the point where most of the website’s weight came from the stylesheet.

As a means to aid this problem, I implemented a “dynamic stylesheet” system which split the stylesheet in small chunks that would be loaded dynamically as you navigated through the pages. Sadly, this meant implementing new pages involved specifying the necessary styles and added lots of technical debt.

Additionally, this also made the stylesheet somewhat harder to maintain. It was initially forked from readable.css and reimplemented in SCSS, so the whole page was weird

Weird accessibility

The accessibility in lic was good, but not perfect. I did use aria labels, and always made use of semantic HTML when possible, but even then, due to all the technical limitations and weird CSS tricks, I was often forced to use weird HTML workarounds, such as using an unordered list inside the nav element.

Weird art style

The art style in the site was just too minimalistic for what I do nowadays. Back then, I’d boot up Figma or Inkscape, make some design in SVG and put it in the site and enjoy.

Now, don’t get me wrong. SVG is awesome! However, my philosophy has changed. I now much prefer drawing things by hand in my drawing tablet and exporting it as an image.

Is it a lot less dynamic? Yes. Is it technically less efficient? Also yes. But man, I love drawing! I don’t think making images with a mouse could ever be as fun as using an actual pen (even if digital) and dumping my brain with it.

Unsustainably writing philosophy

My writing philosophy back then was… inefficient. I’d set unrealistic length goals. “I won’t publish this until the marker surpasses 7 minutes”

Trauma

I don’t want to think about NaNoWriMo, don’t even mention it to me or even anything vaguely related, PLEASE.

The new method

One site

The new site is simple! This is on purpose. One page to compile, and it’s widely compatible. No retro, no lite, no nuthin’. If your computer can’t run this, I don’t know what could!

Hugo as the stack

The whole stack is now just Hugo. I didn’t like Hugo in the past because of its lack of web… ness. But! I have changed my mind. I now realize that Hugo being native is one of its biggest strengths.

One of the main advantages of Hugo to me, is that I have the option to split the site into two: the theme and contents! The separation of concerns here is wonderful. It also does a surprising amount of work for you. Granted, the site as it is right now may seem… lacking, to say the least, but that’s the point! Iterative changes.

Simple, unified SCSS stylesheet

Yep, the CSS is now simple! I hope it’ll keep being that way. One single file, minified. No headaches! As a result, I’m hoping that for the entirety of this site’s lifetime, I’ll be able to keep everything in one small file.

Free accessibility from simplicity

I mean, there’s not that much to access, so accessibility is just… a free byproduct of lazy engineering!

SO RETRO art style

The site has been intentionally changed up to look retro. This is completely intentional, and I’m happy with how it turned out.

Sustainable writing philosophy

As you might have noticed, the writing in this site is now concise! I realized that, if I have some messages to deliver, I might as well do it in just the right amount of words.

Heck! Why did I ever think a twenty-word blog post had to be one hundred? It was honestly kind of silly of me. What matters is, it’s over! Now I can focus on writing and publishing posts, instead of trying to meet unrealistic goals.


With all of these changes, I’m hoping to build the foundation of a website that can truly last without technical pressure or weird decisions slowing development.

Published on 2025-08-10

Shiz has no AI, trust me bro.