In a big saucepan or Dutch oven over medium heat, melt the butter. Add the onions and celery when the butter has melted and become frothy. Sauté the onions for 3 minutes, or until they are transparent. Stir often.
Add the pepper, salt, and garlic. After one minute, stir often.
To remove the raw flour flavor, add the flour and simmer for one to one and a half minutes. Stir nearly all the time.
Next, slowly pour in the broth, whisking or using a wooden spoon to mix constantly. Add the flour and mix until it dissolves. Keep adding.
Stir in the creamed corn after that.
Increase the heat and simmer the soup for approximately five minutes. After reducing the heat to medium-low, cook for ten minutes while covered. Maintain a simmer and stir from time to time. Adjust the temperature as needed.
Cook the corn long enough to thaw in the meanwhile. Usually, it's enough to use half of the suggested time on the box. Make sure to drain properly.
To the corn chowder, add the potatoes and corn. Adjust the heat a little higher if it doesn't immediately begin to simmer. After that, reduce the heat to medium-low, cover, and simmer the potatoes until they are soft, about 15 minutes. Make sure the potatoes are not sticking to the bottom of the saucepan by giving them an occasional stir.
In order to heat through, turn the heat down to low, add the half-and-half (or milk), mix thoroughly, cover, and cook for two to three minutes.
If necessary, taste and add salt. To give you an idea, we increased ours by ½ teaspoon.
Ladle the soup into individual bowls and top with chives and chopped bacon, if using.