I might have coded myself into a corner.
I started ciboulette.net 10 years ago. I have a hundred cutomers. It't a lot of Meteorjs code that has to keep running.
I first hosted it on heroku, but it was expensive and slow. Then I moved to digitalocean thanks to meteor up, a cli tool that takes care of setting up docker, mongo, nginx and let's encrypt certificatess. It was really easy to get up and running. I moved to hetzner eventually and added more apps on top of the mup setup.
Over time, I've understood bit by bit how some of its components work. But it's difficult to start learning when everything is already deeply intergrated.
Meteor up hasn't been updated in a while. It's stuck on an old version of nginx and docker. Now, I finally have to understand what's going on on my servers. Time to learn a lot of things at once.
I feel like this happens often in tech. You find a tool that gives you superpowers. It lets you do things you could not do before. You take advantage of it, count on it, reap the benefits. Then you realise that when serious issues happen, you suddenly need to understand everything your tool did for you.
It wrote code you weren't capable of writing. Now you need to reverse engineer and debug that code.
I should resist complexity much more and keep things very basic and flat, and use tech I know well. Because building something without deep understanding is just postponing the learning time to the worst possible time.
This applies to AI of course, where you could easily vibe code a mess, then be unable to understand what you built. But also to hosting tool like meteor up or kamal, that set up production hosting for you. Programming Frameworks often carry the same risk. They let you put all your eggs in one basket that you don't yet understand.
Those tools are useful. I'm forever thankful to zondern for meteor-up. But it's a good idea to be curious and slowly learn what's happening under the hood.