Preheat your oven to 350 degrees Fahrenheit and prepare two 12-cup muffin or cupcake tins with paper liners. Set aside.
In a large bowl with a hand mixer or in the bowl of your stand mixer fitted with the paddle attachment, add the butter and sugar.
Mix the butter and sugar together on high speed until light and fluffy. Add the eggs one at a time, mixing well and scraping down the sides of the bowl after each addition.
Measure the milk and add the vanilla to the milk. Set aside.
Measure the flour, baking powder, salt and spices into a separate bowl and whisk them together to combine.
Add about 1/3 of the flour mixture to the butter mixture and mix on low speed just until combined. Add half the milk mixture, mixing well just until combined. Add another 1/3 of the dry ingredients, mix, and then add the rest of the milk and mix. Finally, add the remaining dry ingredients and mix well until everything is well combined, scraping down the bowl.
Divide the batter between the prepared 24 cupcake liners and bake for about 18-20 minutes at 350 degrees Fahrenheit, or until a toothpick inserted into one of the cupcakes in the middle of the oven comes out clean.
For the frosting:
Whip the butter on high speed in your stand mixer or in a bowl using your hand mixer.
Add the powdered sugar one cup at a time (add the cinnamon with the first addition), mixing after each addition.
Add the heavy cream one tablespoon at a time and whip the frosting on medium-high speed for several minutes until it's light and fluffy.
Add the frosting to a piping bag, fitted with an open tip (or no tip at all). Pipe the frosting onto the cooled cupcakes (NEVER frost hot cupcakes...the frosting will melt!) in a circular motion, and sprinkle with some cinnamon sugar (optional).
Refrigerate until ready to serve, or serve immediately.
These cupcakes can be made up to 2 days ahead of time and stored in an airtight container in the fridge. Before serving, let them sit at room temperature, uncovered (to prevent excess moisture) for about 20 minutes.