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 -
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 -
- Feature flags
- Global state
- 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'sfresh
overpreact
?
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.