These days Debian Gnome and default Ubuntu are so similar these days the difference is negligible once you installed 1 or 2 plugins that mimic the Ubuntu functionality. Ubuntu's gnome is just plain gnome with a few in-house extensions made by Canonical - hardly worth it in my opinion while Debian is rock solid. Buster (the current stable) is nearly perfect IMO.
Huge ruby ran here. Ruby on Rails has been my day job for a decade, and it pays the bills well enough. Crystal has always been a curiosity to me, but I have never been as productive in any other language or framework as I have been with Rails. I dont' care if you're language is "ruby-like" or "go fast" - if I'm not as productive with it as I am with Ruby, I'm not gonna touch it.
I'm sure that it's nowhere near as productive as Rails, but this framework is probably best positioned to be the Rails of Crystal, in case you haven't seen it:
It's a significantly younger language than Ruby, so no, the ecosystem is not as diverse (yet). It is quite populated though - for a taste you can browse at sites like https://crystalshards.xyz/ or https://shards.info/.
Been using it since late february, or early march on insiders channel... been incredibly happy with it and surprised how well it's been working for me. Both wsl and docker have been really nice overall.
I'm not sure how a lock file would help in this scenario, unless you're also committing your cache to source control (like a lot of folks did in the bad old days of NPM). The local cache is great, but that doesn't prevent the content of those URLs changing for someone who doesn't have access to your cache.
Why are you _regularly_ clearing lock files? If you're bypassing lock files you're going to have the exact same issue with npm or yarn or any other package manager that downloads from the internet.
Dunno about OP but I pin versions in package.json because it allows me to control the versions and upgrade major versions only when explicit and necessary, and rely only on the lock file to keep it the same between commit time and the production build.
That doesn’t actually work and gives you a false sense of reproducibility and stability. Sure your top level dependencies might not change without explicit changes to package.json but every time you run npm install without a lock file all transitive dependencies are re-resolved and can change.
What about the dependencies of your dependencies? You're gonna get burned when a breaking change gets introduced a few levels deeper than your package.json. Not everyone follows semver perfectly, and sometimes malicious code gets distributed as one of these transitive dependencies.
That's fine for one developer pushing to production from their own machine. But I've you have aCI server and you're working with other people you're going to want to know that everyone is working with the same modules.
I joined a company that had their application on about a dozen environments in Elastic Beanstalk that would fail for no reason during deployments. When everything went find it took about an hour to deploy, when stuff goes wrong - say goodbye to half your day (at a minimum). The general solution to most deployment issues was to just terminate every instance but 1, deploy to 1 instance and let the scaling policies kick in to replace the terminated instances. EB is absolute trash.
The thing about Type 2 virtualization not working is true, but if you hyper-v enabled you already have type-1 virtualization so type 2 is kinda irrelevant.
I've been using Hyper-V for about 5 years and never noticed any performance impact worth mentioning. Type 1 hypervisor VMs are still technically running on the metal.