Thank you all for the informative advices. Here is the summary for those who are in the same situation:
1. Run Windows on Linux by using VM
for the applications you can’t run on Linux
Risks:
* some softwares may attempt to detect VMs and refuse running
* Anything what needs to touch hardware may not work.
2. separate "data" partition on D:
3. back up %APPDATA% and %USERPROFILE%
4. learn chocolatey, scoop or winget
Winget should be good enough
5. Don’t worry about C:\Program Files
6. (Mixed) Use/Don’t use Ansible (or saltstack/salt)
Use:
* Allows you to setup a new machine quickly and consistently when one breaks, get stolen, or lost in an inconvenient time.
* You can get a clean and consistent development environment so that you do not depend on anything accidentally installed on the machine.
* If you define specialised roles, create test playbooks for those individual roles, use these roles to compose more complex playbooks, and offload logic to custom ansible modules that are written in python, you won't wrestle with heavy logic in the template or playbook layer.
* installing software and pulling some configs and scripts down is fine
Don’t use:
* You will spend your days fighting a mix of yaml and Jinja.
* You will end up looking at Python errors because there are no static types.
* errors are cryptic.
7. Use WSL2
You need 32gb of ram, but ram is cheap so choose a good thinkpad
Comments
Thank you all for the informative advices. Here is the summary for those who are in the same situation:
1. Run Windows on Linux by using VM
for the applications you can’t run on Linux
Risks:
* some softwares may attempt to detect VMs and refuse running
* Anything what needs to touch hardware may not work.
2. separate "data" partition on D:
3. back up %APPDATA% and %USERPROFILE%
4. learn chocolatey, scoop or winget
Winget should be good enough
5. Don’t worry about C:\Program Files
6. (Mixed) Use/Don’t use Ansible (or saltstack/salt)
Use:
* Allows you to setup a new machine quickly and consistently when one breaks, get stolen, or lost in an inconvenient time.
* You can get a clean and consistent development environment so that you do not depend on anything accidentally installed on the machine.
* If you define specialised roles, create test playbooks for those individual roles, use these roles to compose more complex playbooks, and offload logic to custom ansible modules that are written in python, you won't wrestle with heavy logic in the template or playbook layer.
* installing software and pulling some configs and scripts down is fine
Don’t use:
* You will spend your days fighting a mix of yaml and Jinja.
* You will end up looking at Python errors because there are no static types.
* errors are cryptic.
7. Use WSL2
You need 32gb of ram, but ram is cheap so choose a good thinkpad
8. Debloat with Recommended Tweaks
Run
irm christitus.com/win | iex
from Administrator Terminal (Powershell)
The link leads to https://raw.githubusercontent.com/ChrisTitusTech/winutil/mai...
VirusTotal
https://www.virustotal.com/gui/file/709834b0e003b6bb546cf16e...
9. Get [PowerToys](https://github.com/microsoft/PowerToys)
10. Use Devbox for containered environment
https://www.jetpack.io/devbox
11. Dual-Booting Linux and Windows
If you use physically separated drives, you don’t need partitioning.
12. Dedicated Windows machine for class
Yes it sure would be the cleanest solution but I prefer one device for everything
13. keep a git repository with all dot files in it
Many people suggested that using virtualization is the way, otherwise just let Windows be Windows.
Also, backing up seems to be a good practice.
I’m planning to write a blog about this, if it worked.
Again, thank you all for the helps!