I failed again...
Tags: devjournal, webdev
Published: 2022-09-15 10:19:03

So, what I attempted to do looked pretty simple. You can peek at the very early temporary website if you want to grasp the idea if you want.

{% embed https://passwordless.id %}

I knew what I had to do, and how, but still I am mesmerized by how much time I am taking (wasting?) on it. It's crazy how much times is spent on the most trivial things. For example, I started to build the UI, picked https://cdmoro.github.io/bootstrap-vue-3/ as a UI of choice (why I picked this one is another story) and at some point wanted to add a carousel. No biggie, piece of cake, right?

Here is how it unfolded:

- oh, there is no carousel documentation in the docs, too bad
- hey, but wait, there exists a carousel component ...it's just not in the docs
- hmmm... trying to use `<b-carousel>...`
- first attempt failed 
- ... inspecting the DOM and trying again and again to get the component working
- giving up after too many failed attempts
- sending an issue to the github repo of doc missing
- some almost empty doc was added
- noticing another ticket wondering if the carousel works
- well, apparently not
- forking project and checking out the sources to see if I can fix it myself
- `npm install` => error error error
- reading logs and googling leads me back to the project's readme
- doesn't work with `npm`, you have to install `pnpm`!
- installing new tools...
- pnpm install works, pnpm dev works
- making changes to the code ...what? No live preview?
- ...taking a closer look at the code itself anyway
- well, either a whole bunch of code is missing or it must somehow invoke bootstrap's own javascript
- this thing is probably just a draft that never worked
- two days went down the drain
- what did I want again, a carousel?
- well, copy paste raw bootstrap, even if it's a bit uglier => done

A few moments later:

- noticing the lib is really low on components. No datatable, no datepicker, no file upload...
- wondering again if I picked the right UI lib

My logic was simple. I'm most proficient with vue2 but since it's "deprecated" in favor of vue3, I thought I'd do it in vue3. Regarding the UI, I thought I would mix one of the most popular frontend framework (vue) with one of the most widely used CSS framework (bootstrap).

- vue =>  used by 51% of devs according to stateofjs
- bootstrap => used by 85% of devs according to stateofcss

Both are released since 2+ years, there should be a good lib now, right?

Well, it turns out that `bootstrap-vue` tries to update to vue3/bootstrap5 since more than 2 years without success. ...and the most meaningful vue3/bootstrap5 I found was https://cdmoro.github.io/bootstrap-vue-3/ which has ...only 500+ stars! ...and is kind of very basic. No offense here, I know it's voluntary work, which is already great. It's rather that I find it strange that the individual techs gather so much interest and github stars, yet their combination is almost a ghost town.

You may say: who cares? Just use another UI framework not tied to a CSS framework. Well, I find it nice to have a "compatible" styling. You can use a bootstrap to style your website, your markdown docs, your webapp and they will just visually fit well together. You could even use two different tech stacks, as long as they share the bootstrap theme, they will look alike. This extra compatibility in very nice, especially when thinking long term.

...well, if it was there. But apparently, I'm one of the few thinking like this. Almost every UI framework ships its own styling, which its own utils classes, for whatever reasons.

Since I'm not a youngling anymore, I feel more and more the times have changed. In the past, I had the feeling it was more about "programming", thinking about how to design, implement, algorithms and stuff. Nowadays, I have the feeling I spend my days learning libraries and tools, replacing deprecated stuff without end and googling most of the time ...which I often find tiring. 

The rate at which technology changes is also quite daunting. For example, at my workplace, they have complex webapps with jquery, then ractive.js, then angular.js, then angular X, then vue 2 and are now contemplating moving to vue 3. It might sound harmless, but it's huge piles of code various people must maintain and perhaps migrate someday. I guess other companies face similar challenges. Frameworks get hyped, used, dumped and either some poor soul have to take care of the aftermath or it's rewritten from scratch. Sorry for the grumpy tone.

And now I'm still at my starting point, wondering what to do:

- go on with this lacking vue3-bootstrap5 lib
- go back to vue2 with a full featured bootstrap lib
- pick another vue3 UI framework? Which one?
- ...sometimes I even wonder if I wouldn't be faster with good ol' HTML sprinkled with some JS instead of all these monster frameworks.

And yet again, for the simplest things, I'm turning in circles, getting back to square one and taking ages. :(