Caution: before you proceed with this recipe, understand that dulce de leche is dangerously addictive. It's perfectly sweet and rich -- without being too sweet or too rich. Its name also translates to "milk jam," so it is perfectly acceptable to spread thickly on buttered toast, topped with a sprinkle of sea salt.
For a vegan variation, replace the milk with coconut milk. This can also be made with goats milk for an added tang, but then you're technically making cajeta.
This recipe was inspired by the versions by Deb Perelman and Alton Brown, then adapted. —Catherine Lamb
Mix the first four ingredients together in a saucepan over medium heat until the sugar dissolves. Take off the heat.
Stir in the baking soda, then put the mixture back on the stove over low heat. You want the mixture to bubble along the edges, but not to boil over.
Let the mixture cook for 1 1/2 - 2 hours, stirring occasionally. The color will begin to sneak from white to tan after an hour or so, then will darken rapidly. Keep a close eye on it now, stirring constantly. As the mixture darkens it will become thicker, and also nuttier. After your dulce de leche reaches your desired tone of caramel color, take it off the heat and let it cool slightly
If you want your dulce de leche to have a silky smooth texture, push it through a fine mesh strainer. If you don't want to go through the extra effort, it will be more than fine as is.
Dulce de leche keeps, refrigerated, for up to four weeks. Eat it over ice cream, spread on toast, or right out of the jar.