Place the coconut in a large dry skillet over low heat; cook, stirring often, until golden brown and toasted, about 7-10 minutes. Make sure to keep an eye on it so it doesn't burn!
In a medium bowl, beat the egg until frothy and paler in color, about 2 minutes.
Add the milk and coconut milk then whisk well to combine.
Pour the cornstarch, sugar, and salt into a saucepan.
Pour the liquid into the saucepan and whisk well. Cook the mixture over medium heat, whisking nearly constantly, until the mixture thickens, about 5-7 minutes.
Remove from the heat and stir in the butter, coconut extract, and vanilla. Let the pudding cool for a couple of minutes.
Pour through a fine sieve into individual serving dishes. Place some saran wrap directly on top of the pudding to prevent a film from forming.
Refrigerate until ready to serve, at least 1 hour.
Serve topped with whipped cream and a spoonful (or two) of the toasted coconut. Enjoy!