Preheat oven to 375°F. Heat a sauté pan over medium heat and add chopped bacon. Cook until crisp and remove from pan, reserving half the fat. Add the butter and onions and sauté until onions are translucent.
Add corn, garlic, salt and cayenne pepper and sauté for 3-4 minutes to cook the corn. Remove and set aside.
In a large bowl, whisk the eggs and then add the cream and milk and whisk until combined. Add the pepper, nutmeg, Parmesan and cornmeal and whisk until combined. Stir in the bacon, onion, corn mixture and pour into a greased 2 quart casserole dish. Bake for 1 hour or until no longer jiggly. Serve immediately.
Notes
If you don't have a casserole dish, a 9x9 baking pan works. You can make in a 13x9 baking dish as well, but it won't be as thick.
You can skip the bacon if you want it to be vegetarian, but add another 2 tablespoon unsalted butter.
Frozen corn can be substituted for fresh if needed.
Use freshly grated Parmesan cheese as it just tastes better.
Avoid overcooking the pudding, as it can become dry. It's done when it's set in the center but still slightly jiggly. Use a toothpick or knife to check for doneness; it should come out clean.