Soak the saffron strands in the hot water or milk for at least 10 minutes or till the milk has changed to a bright yellow.
Heat ghee in a wide based pan/kadhai and toss in the cashew nuts and fry them on a low heat till they then turn light golden. Remove. Next, fry the raisins till they just puff up, remove immediately before they burn.
In the same ghee add the semolina and roast on a low heat for 2- 3 minutes taking care to see that it doesn't burn. If you fry the semolina on a low heat it will get partially cooked and help fluff up quickly. While the semolina is frying, bring the water (or water & milk mixture) to a boil.
When the semolina has roasted and gives out a nice aroma add the boiling milk and water mixture to it. Be careful as the mixture can splutter! Mix till it is smooth & lump free.
Add the sugar and stir till it gets absorbed. Next, add the saffron mixture or food colour
On a low heat keep stirring the mixture so that it doesn't stick to the bottom of the pan and slowly the mixture comes together in a lump
Add the 2 tablespoons of ghee and stir till it gets absorbed
The sheera/kesari is almost done. Add the roasted nuts and raisins, pineapple chunks and give it a good mix. Add the cardamom powder if using. Cover the pan and turn down the heat to very low. Allow to cook for 1-2 minutes. Remove from heat.
If you wish, serve the sheera in a bowl. Lightly grease it with ghee and then put the sheera in it, invert the contents onto a plate. Serve hot.