Just as usual, I wanted to work on a weekend project. I came up with a name. I registered a domain.

I started with a new devbox because I like a clean install like that without requiring to run a whole container. Now, I wanted pick something I felt nice about to work with. Here were the choices in my head -

  1. deno
  2. bun
  3. nodejs 😔

I thought - YOLO, lets go deno! 🦖. I loved how it is an all in one tool with fmt, lint, test, and what not. I wanted that. Okay so I decided to use fresh over deno because its native to deno, right?

I also needed a CSS framework but I did not want to think too much. So I found the smallest usable one for me - pico.css! it was so easy and it got the job done. By far the direction I am heading seems great!

I loved how easy things were and how snappy and fast it was. It was awesome! my "Work in progress" page finished so quick. And thats pretty much all I accomplished.

I wanted 3 things next -

  1. Feature flags
  2. Global state
  3. Maybe some networking on the client side?

I first tried to use growthbook. They had only react support. I thought - I could use the js sdk and work around it. Ok fine. It seemed a bit complicated to use in terms of their UI. Okay fine, I try to find an easier one maybe I can self-host. That way I could even put it behind cloudflare CDN and use caching on it and clever cache-busting when I change values could help propagate changes. Okay fine I have a plan. I ended up going with Flagsmith instead. It was even easier. Perfect.

Now, Server-side rendering chaos ensues.

I need to make a ton of decisions

  • do I fetch the flags on server side or client side? Why one over the other?
  • how do I retro-fit nextjs instructions on the Flagsmith website to fit Deno's fresh over preact?

Now I am just losing my mind. I should not have chosen this stack. I still have to think through authentication, I18n...

This is why I need something that works across "NATIVES" - an acronym I personally use for my work.

  • N - Networking
  • A - Authentication
  • T - Telemetry
  • I - Internationalization
  • V - Versioning (slow rollouts)
  • E - Experimentation
  • S - State

I need a suite of tools that all work together in all those areas with full knowledge of each other. I am gonna make a thin "bring your own framework" type of js library layer as a connective tissue between all these. I am that frustrated.

I am also thinking about the fragmentation of UI frameworks and "pick a side"-ness of all of them where we cluster the available frameworks into clumps and how mild barriers are forming around each ecosystem. I do not feel so great about that. Although I understand this is how web has always been and it has worked out to a certain degree.

Maybe I will go back to just using plain webpack + react + react ecosystem.