Heat the oil with the cinnamon stick in a large saucepan over medium-high heat. Cook, stirring, until the cinnamon unfurls, 1 to 2 minutes.
Add the cumin, cloves, and cardamom and cook, stirring, until the cumin turns a golden brown color, about 1 more minute. Add the lentils, turmeric, water, and salt. Bring to a boil and skim well, Turn down the heat and simmer, covered, until the lentils are soft, 20 to 40 minutes, depending on the type of lentil used. Add more water during cooking, if necessary. Taste for salt and add more if you need to.
Remove cinnamon stick. Use immersion blender to gently puree some of the lentils. Alternatively, ladle about 1/2 cup of the lentils into a small bowl and mash them with a spoon. Return the mashed lentils to the pot and give the dal a stir. Continue cooking at a simmer, uncovered, for 5 minutes to thicken. If you like a thicker dal, puree more of the lentils until you reach the desired consistency. If you like a thinner dal, add water.
Heat the oil in a small saucepan over medium-high heat. Add the onion and cook until it just begins to brown around the edges, 4 to 5 minutes. Add the garlic paste, ginger, and minced chile and cook just to mellow the raw taste of the garlic, 10 to 15 seconds.
Stir half of the tempering oil into the dal along with half of the cilantro and all of the lemon or lime juice. Simmer very gently for 5 minutes Transfer the dal to a serving bowl, pour the remaining tempering oil over the top, and sprinkle with the remaining cilantro. Serve hot with basmati rice and Indian bread (naan or kulcha are my favorites).
Adapted from Indian Home Cooking, by Suvir Saran