Butter two 9 x 2-inch round cake pans. Dust with flour and shake pans to evenly spread the flour around. Set aside.
In a medium mixing bowl, sift together flour, baking powder, baking soda, salt, and cardamom and set aside.
In a small bowl, combine cream of coconut, 1/4 cup water, vanilla and almond extract. Mix well and set aside.
In the bowl of an electric mixer fitted with the paddle attachment, cream together butter and sugar using a medium-high speed. Cream for about 3-5 minutes, until light and fluffy.
Add the eggs one at a time. Beating well after each addition. Scraping down the sides of bowl with a rubber spatula between beating.
Turn the mixing speed to low and add flour mixture one third at a time, alternating with the cream of coconut mixture. Begin and end with the flour. Mix just until combined, and be sure to scrape down sides of bowl if necessary.
Divide batter evenly between the two prepared cake pans. Smooth tops of the badder with a spatula.
Put the cakes into the oven and bake until for 45 to 50 minutes, or until a toothpick inserted into the middle of the cake comes out clean.
Allow the cakes to cool for 20 minutes.
Gently remove the cakes from the pans and transfer to a wire rack. Cool completely.
In a small saucepan, whisk together flour, 1/2 cup milk, vanilla and coconut extract until well combined.
Put the saucepan on the oven over medium heat. Gradually whisk in remaining 1 1/2 cups milk.
Heat, whisking constantly, until the mixture comes to a low boil.
Reduce the heat to low.
Continue whisking for about 2 to 3 minutes, until mixture thickens and big bubbles form.
Pour the mixture into small heatproof bowl and allow to cool to room temperature. Whisk occasionally as it cools.
In the bowl of an electric mixer fitted with the whisk attachment, mix butter at a medium speed for 2 to 3 minutes, until soft and creamy.
Gradually add confectioners' sugar.
Increase the speed to high and beat for 5 to 7 minutes, until light and fluffy.
Gradually pour in the milk mixture.
Increase speed to medium-high. Whisk the buttercream until it is light and fluffy. Scrape down bottom and sides of bowl between mixing.
Spread frosting using a cake spatula.
Poke several holes in each layer of cake using a toothpick and then brush cake layers with the coconut syrup.
Allow the cakes to stand for at least 15 minutes so the syrup can be absorbed.
Place one cake, flat side down, on serving plate.
Spread the top of the layer with a big scoop of buttercream. Then sprinkle over 1/4 cup coconut.
Place the second cake on top of the first, again, flat side down, and ice the top and sides with the remaining buttercream. Pipe on the outside garnish.
Sprinkle the remaining coconut into the center of the cake.
Any leftovers can be stored in the refrigerator for up to 2 days.