Bring a large pot of water to a boil. Add the basmati rice and boil for 30 minutes. Turn off the burner, drain the rice and return it to the pot on the burner you just used. Cover and let it steam off the heat for at least 10 minutes until ready to serve.
While the rice boils, warm a large deep skillet over medium heat. Add the oil, onion, ginger, garlic and a pinch of salt. Sauté for about 5 minutes, stirring often, until the onion is translucent.
Add the sliced carrots and asparagus to the skillet. Cook for 3 minutes, stirring occasionally.
Add the green curry paste to the center of the pan. Stir constantly for 2 minutes to "bloom" the spices and marry them with the aromatics.
Pour in the coconut milk, water and sugar. Bring to a gentle simmer. Reduce the heat and cook for 5 to 10 minutes, or until the carrots and asparagus are tender but not mushy.
Stir in the chopped baby spinach and cook for just 30 seconds until wilted.
Remove from heat. Stir in the rice vinegar and soy sauce. Taste and add salt or red pepper flakes as needed to achieve a perfect balance of salty, sweet, sour, and spicy.
Divide the steamed rice into bowls, ladle the curry over the top, and garnish generously with fresh cilantro.