Preheat oven to 350F, spray 2 9-inch cake pans with baking spray and dust with flour. Line each pan with a round of parchment paper on the bottom.
Begin by making the caramel. Put the ingredients in a medium saucepan and melt over medium heat, stirring to dissolve the sugar. When everything is melted, raise the heat slightly and wait for the mixture to come to a boil. You don't need to stir it at this point. This will take about 3-4 minutes. Once the mixture boils, remove from the heat and pour into a heatproof bowl to cool. Do not stir.
In a large bowl blend the wet ingredients together until smooth. You can do this by hand, or in a stand mixer.
Whisk the dry ingredients together, and then slowly add to the wet, just until everything is smooth, don't over beat. Fold in the nuts.
Pour the batter evenly into the two prepared pans. Bake for 25-28 minutes, or until they spring back when lightly touched in the center, or a toothpick inserted in the center comes out without wet batter on it.
Let the cake layers cool on a rack for 15 minutes before turning them out to cool completely. Carefully peel off the parchment paper.
Now make the frosting. Put the cooled caramel into the bowl of a stand mixer fitted with the balloon whisk attachment, or you can do this with electric beaters. Begin beating the caramel, then add the sugar, one cup at a time. After the second cup of sugar, add the milk or half and half and then finish with the sugar. Beat until thick, smooth, and creamy. If your frosting seems too thick, add a touch more milk. If it seems too thin, add a bit more sugar.
Frost the cooled cake. You can store your cake at room temperature, or in the refrigerator.
Notes
*to toast pecans, put them on a dry baking sheet and toast in a 350F oven for 10 minutes.