The Sea Grille has always been an outstanding Nantucket restaurant. Locate mid-island, near Stop and Shop, it has been serving visitors and locals for thirty years. The fact that it is still run by the same family explains not only its longevity but the quality of food and of the service. And in these troubled staffing times, that is quite a compliment. Our waitress was hard working, cheerful and experienced and made the whole visit that much more fun.
The menu lists appetizers, salads and Simply Prepared Seafood, as well as Island Favorites and Creative Coastal selections. Even though we have tried a lot of their menu over the years, we keep gravitating to these last categories, because they are so very good.
One of the specials last night was a Fried Clam appetizer ($26), served on a salad base of pickled onions. Since fired clams cam be kind of heavy, this was a welcome change to try a few without committing to a whole meal of them. They were greaseless and really flavorful: just the right amount for an appetizer.
Our other appetizer was a little more elaborate: Lobster Bisque ($16), baked in a dilled puff pastry. It arrived piping hot, but with delightful pieces of lobster in the bisque. This dish has apparently been on their menu since the very beginning. It is very impressive.
One of our entrees was Grilled Lobster and House-Made Fettucini ($44) [shown above], with roasted tomatoes, garlic, marinara, and beurre blanc. We hadn’t had this one before either, and there was a lot of lobster, and excellent fettucine. The mixture of roasted tomatoes with the marinara and the beurre blanc made a delicious sauce for the pasta and enhanced the lobster’s flavor.
Our final entrée was their Free Form Ravioli ($37), a sort of playful version of the dish where the ingredients are cleverly hidden under a sheet of ravioli pasta. The dish includes lobster, shrimp and scallops, served with mushrooms, roasted tomatoes, garlic, and topped with crispy leeks. Odd though it may seem, it is outstanding.
Finally, we had to try one of their desserts, although frankly we didn’t really need it after this delightful but filling meal. We decided to split an order of the Chocolate Brownie Sundae ($14), which comes with vanilla ice cream and copious caramel sauce. It was a great finish, though.
The Sea Grille is at 45 Sparks Ave, and is open Monday through Saturday from 5pm till close. You should make a reservation for sure!
There isn’t much to making gazpacho: it’s a cold soup made from tomatoes, cucumbers, peppers and anything else in your garden you might want to try. Now that there are really flavorful tomatoes at peak ripeness, you can chop up some gazpacho in your blender just a few minutes. If you don’t have a garden bursting with tomatoes, try getting some from a farm stand or farmer’s market to get the best flavor. Supermarket tomatoes are bred for traveling ability, not flavor, so you probably want to avoid those.
The first tomatoes that come in most gardens are the cherry-sized ones, and those are usually the sweetest as well. Use those along with a few bigger tomatoes for the best result.
We call for about 2 lb of tomatoes, but depending on the number of guests, you can increase or decrease this. Just make sure you fill your blender with all the veggies. You can always make more, and combine them in a bowl to make sure the flavors are uniform.
2 lb tomatoes, quartered. (Leave the cherry-sized whole)
1-2 cucumbers, depending on size, peeled
½ bell pepper (red, orange or green) cut up
1 clove garlic, smushed to remove the skin
2 Tb red wine vinegar or sherry wine vinegar
½ cup water
1/3 cup extra virgin olive oil, extra for garnish
Put all the above ingredients into a blender and blitz until uniform. This should give you a nice, chunky soup, which will still have bits of peel and seeds among the chunks.
To make a smoother gazpacho, run the soup through a food mill to filter out the seeds and skins. The flavor will be the same, but the mouth feel will be less chunky.
Chill the soup for an hour or so in the blender or in a couple of quart mason jars.
½ loaf French or other country bread, cut into croutons
Basil, cut into strips (uses scissors or a knife)
More extra virgin olive oil
Put a little regular olive oil into a cast iron pan and brown the croutons briefly.
Pour the soup into serving bowls, and add a few toasted croutons to each bowl, and garnish with a few strips of basil and a splash of extra-virgin olive oil.
If you lived in Columbus, Ohio in 1960 and took your film “to the drugstore” to be developed, it probably passed through my hands. My first major summer job was that year: I worked for Kisco Photo Service in a small building at Goodale and High St. This was essentially a family business owned by Mr Kissinger (I think) and more or less managed by his son in law, the smooth-talking Bill Smith. I seem to recall there being jokes along the line of “I wonder whose Kissinger now?”
Kisco Photo Service had a network of drug stores they serviced throughout Central Ohio. Their drivers picked up the film from these stores and dropped off the negatives and prints a couple of days later. While most of their business was still black and white printing, they did process Kodacolor and print it. They did not handle slides, but probably sent any out to another lab.
I was an avid photographer all through high school and had my own darkroom, where I did my own developing and printing: mostly black and white, but Jeff Luce and I got together and processed and printed some color from time to time. I had spent afternoons and Saturdays of my senior year as a darkroom assistant for Al Lupidi photography and Longview and High.
So, when looking for a summer job, when Al’s summer business didn’t warrant help, I took the bus down to Kisco with a resume in hand and talked myself into a summer job. As I recall, seniors got out of school nearly a week before our graduation and all-night party, so I started work that week and took off two days around graduation the following week. Since we were a 1-car family and my father mostly drove to work, I rode my bike down to Clinton School (back where this all started) locked my bike to a bike rack there and walked across High Street (or took the underpass) to catch the bus.
My boss was Billy Hillscher, who oversaw operations, and he introduced me to Ellen who worked developing the black and white film. I became her assistant, and since I already knew how to open film rolls and cartridges I was that far ahead of where they expected.
The film developing took place in a long, completely dark room, with a machine that moved the film through four tanks and then out through a light lock to a drying room, where the film was taken to be printed.
We stood at the beginning of the tank and received film and the original envelopes tucked into clips in a wooden bar that would hold five or six rolls of film. The film was loaded onto the bars outside our room, by intake people, who placed the bars in a rotating 3-sided lazy Susan. When they had loaded enough bars, they knocked on the wooden housing and rotated the film into our dark room.
Here we placed the bar on the front of the developing machine, opened each film roll or cannister and clipped to film to the bar, and attached a weight to the bottom end of the roll. This was tricky in the dark. Roll film was taped inside a black paper backing, so you had to unroll the trailing end (since it was now reversed), clip it to the bar, pull down the paper, and tear through the tape at the other end. The 35mm cannisters were actually easier: you just rapped the long end on any hard surface and the other end popped off, so you lift out the spool of film. (This doesn’t work anymore. Kodak decided people were reloading them, so now you need a bottle opener to pull off the end, which destroys the cannister.)
Then we moved the bar from the holding position to the machine’s moving chain, that raised the bar up about 5 feet, moved it forward and lowered the film into the film developer. The bars sat in notched on two chains on either side of the tank, that slowly moved forward about one notch every 30 seconds, coming to the end of the developing tank in about 8 minutes. At the point, the bars were lifted on the chain up and down into the second tank which was a rinse to stop the development process, and then on into the third tank which contained the film fixer or “hypo,” (actually sodium thiosulfate) which dissolved the parts of the film that contained no image, essentially the black areas in the photo. The film went up and down into the fourth rinse tank and then out into the drying room.
“Fine Grain” developing
Occasionally, someone would request “fine grain developing.” What each actually happened was that we put all of those rolls requesting fine grain on a single bar, and when the film came down into the developing tank, we reach in and moved the film ahead two notches in the tank, so they would be developed a bit less. But since this was the same developer, there was a little hooey going on here, and the company charged the customers extra for this hooey.
However, in those days, most people were still using Kodak Verichrome Pan, which was a film designed for amateur photographers who used box cameras and other simple devices. The film had such a wide exposure latitude that it was pretty impossible to screw up your film exposure (or development). We also saw some Tri-X pan which was more of a professional quality film, and more light-sensitive.
Most of the film we handled was 120 or 620, which produce 12 6×6 cm negatives on a roll, or 127 which produced 12 smaller images on narrower film. We also had a significant amount of 35mm film come in, mostly 20 exposure rolls, but when we got 36 exposure rolls, these were longer than the 4 foot depth of the developing tanks, so we had to loop the film down and up the adjacent clip on the film bar so it didn’t hit bottom. The people that attended the film in the drying room unhooked one end and attached a weight so the film would dry without a water spot in the middle where the loop had been.
When the film was dry, it went on to the printers, who were a series of (mainly) women who sat at little consoles and centered each image manually using a little display, and then press “Print,” which exposed the next few inches of a roll or photo sensitive paper, entirely enclosed in the printer console, so they could work in an illuminated room. The rolls of paper were developed within each console, I think and then cut into individual pictures. The printer people had some control over the exposure of the printing paper and if they mis-guessed, this was caught when the prints were cut up and those negatives were reprinted.
You may think that this idyllic life was all there was to processing film, but of course, there were always snags. Once and a while, Ellen and I would have loaded all the film that had come in into the machine and went out into the light and had a coffee (her) or a Coke (me). But sometimes we’d be standing there when we heard a terrible CLANKA CLANKA CLANKA coming from the machine and we ran back into the dark room. Ellen pulled out a little flashlight with a green filter over the lens and we looked for what was stuck. Usually, we had to turn off the machine and rescue the film bar that had gotten stuck diagonally across the chains, and then hurriedly turn it back on, perhaps advancing the film to make up for the amount of time it had already been in the developer. If we acted quickly, nothing was lost.
Kisco had two drivers, Jimmy and Chuck that went out to all the drugstores on their route and delivered and brought back film in batched several times a day. But there was one time a day, usually around 10:30 or so, when there would be a frantic knocking on the film door and the word “Whiston” being shouted at us.
It turns out that this referred to Whiston Pharmacy in Mount Horeb, Ohio. Apparently, they had an arrangement with Whiston that their film would be back the same day, perhaps because of the distance and the route the driver drove, and we had to drop everything and move film to Whiston to the front of the line, so it would get to the printers and back to the drivers in a few hours. Amazingly enough, this pharmacy is still in business some sixty years after I worked at Kisco. Kisco is, of course, long gone.
The color developing and printing was a much smaller part of the business. All the color film was developed personally by Hillscher, so there couldn’t have been that much. There were three color printing consoles for making the final prints. These were operated by women who came in later, because of how long developing the color film took, and, incidentally, dressed a lot better than their black and white printing colleagues.
I did get an employee discount to have my own film processed, and I had recently gotten my first electronic flash or speedlight, or “stroboflash” in older argot. So, I shot a roll of color to try out my new toy, and brought it in. I remarked to Ellen that I hope the strobe exposed film would come out OK.
Well, for this, I got called on the carpet, because, not realizing that the pictures were exposed with an electronic flash, they printed them assuming I had use regular flashbulbs. Now, regular flashbulbs had a much warmer color to them then do electronic flash shots, which tend to have a bluish cast. Hillscher was furious with me that I hadn’t marked them “strobe exposed,” and when he saw the first prints, he had to have them all done over. Not only was I being berated for something I never heard of before, but it was clear this stuff was all pretty new to them, too. I think I did one more roll with Kisco with mixed results and decided I would be better off sending my color prints to the nearby Kodak processing lab in Findlay.
I played clarinet all three years in the North High School band but was worried that when I got to Oberlin College, I wouldn’t be accomplished enough to join the Oberlin Concert Band. Several other clarinetists had moved on to take lessons with Dr Don McGinnis at the OSU school of music. So, I asked my mother if she could call him during my workday and see if he could take me on for a few lessons that summer. Well, as soon as she told him that I was going to Oberlin, he exclaimed: “Oberlin! That’s my school.” And I was in.
So, on Wednesdays, I took my clarinet to work and then took the bus up to the OSU campus. I walked over to the music school for my lesson. He was great, and improved me quite a bit, and I did get to play in the band in college.
But one Wednesday, Hillscher asked me if I could clean the stockroom, which amounted to mopping the floors and waxing them. Needless to say, this wasn’t an elegant operation, and I arrived for my lesson covered with schmutz! But he let me in anyway.
I spent a couple of days later in the week, inventorying their stockroom. I suspect that few of the others really were great readers, but it wasn’t too difficult. Thanks? No, not really.
Taking my leave
When I accepted the job offer, Bill Smith had promised me a raise once I had become experienced. That never happened, and when my parents asked if I wanted to come on vacation with them in August before leaving for college, I agreed and gave Kisco my notice. I know Kisco had wanted me to work a bit longer, but I felt it was time to get out, so I did.
The next summer, I help paint lines on the streets of Columbus, but that’s another story.
This is a refreshing summer dessert that can serve 10 or so people, and while it looks rather elaborate, it really is just strawberries in whipped cream layered between meringues and iced with a buttercream frosting mixed with almond crunch. The only time-consuming part is making the meringues, and most of the time is waiting for them to bake. This recipe is adapted from one we found in the Sunday NY Times many years ago.
5 egg whites at room temperature- twice
1/8 tsp cream of tartar – twice
1 cup blanched almonds, finely ground – twice
1 cup confectioners’ sugar – twice
“Blanched almonds” means almonds with the skins removed. You can buy them that way or you can remove them yourself, a bit more cheaply. For this entire recipe, we used 2 6-oz bags of whole almonds, which amount to about 2 ½ cups.
To blanch the almonds, bring a saucepan of water to a boil and drop in all the almonds. Let them boil for just one minute (no longer!) and then drain them in a strainer and cool them with running water. You will find that you can pop the skins off the almonds by pinching the thick end of the almond. The almond should pop right out of the skin. You can even do two or three at a time.
When the almonds are cool, chop them up in a food processor as fine as you can. Reserve ½ cup for the almond crunch below, and use the remaining chopped almonds to make the torte layers.
Making the torte layers
In this recipe, we will make 4 layers at a time and then repeat to end up with 8 layers.
Preheat the oven to 350˚ F.
Put the 5 egg whites in a mixer bowl with the 1/8 tsp of cream of tartar and beat until the egg whites are stiff and dry. Reserve 4 egg yolks (once) to use in the frosting below.
Fold in 1 cup of confectioners’ sugar and 1 cup of the chopped almonds.
Cut 4 squares of baking parchment to 8” x 8”. The roll of Reynolds parchment is only 15” wide, so our “squares” were actually 8” x 7.5”. Place the parchment squares on two cookie sheets and divide the meringue mixture equally among them.
Spread the meringue to near the edges of the squares.
Bake for 16 minutes or more. You want the meringues to be well browned. We found that varied a bit with the thickness of the meringue but was closer to 18 minutes.
Immediately after removing the meringues from the oven, use a spatula to flip them over onto a wooden counter, and use a small spreading spatula to peel the parchment off the meringues. You need to do this right away while the meringues are warm. Don’t worry if there are some small holes.
Stack the meringues on a plate, separated by wax paper.
Repeat to make 4 more meringue layers.
½ cup blanched almonds
½ cup sugar
Place the almonds (chopped or not) in a small iron skilled along with the sugar.
Heat until the sugar melts and turns golden brown. Don’t let it burn.
Pour the hot sugar mixture into a buttered pan and allow it to cool.
When cool, put the solid sugar-almond mass in a food processor and grind it to a powder.
Set aside to use in the frosting.
1 quart strawberries
1 tsp unflavored gelatin
1 ½ Tb cold water
1 ½ cups heavy cream
½ cup sliced or slivered almonds.
Reserve 4 large strawberries for decoration.
Slice the berries, sprinkle with sugar and set aside.
Mix the water and gelatin in a small pan, and heat until the gelatin dissolves.
Beat the cream in a mixer until it is fairly firm.
Then dribble in the gelatin solution and mix through.
Fold in the sliced berries
½ cup sugar
½ cup water
4 egg yolks, beaten in a mixer bowl
½ lb softened sweet butter
Put the sugar and water in a saucepan and heat until it is dissolved.
Continue heating at a slow boil until the solution reaches 238˚ F, the “soft ball” stage.
Put the egg yolks in a mixer, and beat them and then slowly add the syrup to the yolks while continuing to beat.
Beat until cool
Gradually beat in the butter.
Stir in the powdered almond crunch and transfer the mixture to a small bowl and refrigerate until of a spreading consistency.
Place one of the better meringue layers on a cake cardboard or plate.
Spread with around one-seventh of the strawberry-cream mixture.
Continue adding layers and spreading cream and top with the last meringue layer.
Chill the layers for an hour.
Take the layers out of the fridge, place on a cake turntable and, using a sharp knife, cut off any uneven pieces of meringue or berries.
Spread the frosting along the top and then along the sides. If the berry mixture begins to ooze out, return the layers to the refrigerator, and centime later.
Decorate the sides with the slivered or slice almonds and top the torte with large pieces of strawberries.
Chill for a few hours and serve cool to your adoring fans.
We recommend slicing with a sharp knife so that the layers are distinct.
Richard Olney was an American Painter who moved to France in 1951, and became enamored of French food while in Paris. He moved to a farmhouse in Provence, which he essential built and rebuilt by hand and wrote some of the seminal cookbooks on French country cooking. His French Menu Cookbook was his first big success, and he bought an expensive French stove with some of the proceeds. His books stress using local ingredients and discuss pairing each recipe with wines.
In one of the most fascinating intersection of chefs as cookbook authors, Luke Barr’s book Provence, 1970 describes a year when Julia Child, Simone (Simca) Beck, MFK Fisher, James Beard, cookbook editor Judith Jones and Richard Olney all visited together in Provence, cooking, sharing ideas and changing the course of food in America.
This recipe for Chicken with 40 Cloves of Garlic is Olney’s and is a jumping off place for all sorts of variations. Writing in the New York Times, Dorie Greenspan describes this dish as a “no-matter-what recipe” that young cooks can count on to always work. She also proposes some interesting variations, noting that you can add wine, more kinds of vegetables among other things.
The essence of Olney’s recipe is chicken, herbs, and four heads of garlic cloves, all cooked together in a casserole until only a gentle hint of garlic flavor remains. We have described the details of how garlic flavor develops and noted that you get very little of that flavor if you don’t cut into each clove. While Olney and other chefs may not have known the botany of garlic, chefs in general knew the properties of garlic and how to obtain them, by mincing the clove or, as this recipe does, simply using them cloves whole.
The recipe calls for a whole chicken or four drumsticks and thighs. Comments on Greenspan’s article suggest you remove the chicken skin, since it doesn’t become crisp in this recipe and would just hang around looking floppy.
In the accompanying photos, we made only half a recipe, with two chicken legs and used only 2 heads of garlic.
1 whole chicken, cut up, or 4 chicken legs cut into thighs and drumsticks, skin removed.
2/3 cup olive oil
4 heads of garlic, cloves separated but unpeeled. Discard any loose hulls.
1 tsp mixed dry herbs (thyme, oregano, savory)
1 large bouquet garni, large branch celery, parsley, bay leaf, leek grrens and lovage if available, tied with string.
Flour and water for dough
Cut up the chicken, remove the skin and place the pieces in a casserole.
Add the olive oil, salt and pepper, and the herbs, chopped if fresh, and mix it all together with your hands.
Place the bouquet garni in the center of the chicken pieces, and push the garlic cloves all around between the chicken pieces.
Put about 2-3 cups of flour in a bowl and add water and a few drops of olive oil to make a dough.
Roll out the dough large enough to cover and seal the casserole.
Moisten the rim of the casserole and press the dough all around the rim.
Cover the casserole and bake it at 350˚ F for 1-3/4 hours.
Remove the lid.
Some suggest serving the sealed casserole and breaking through the dough seal at the table. Actually, you almost lift it off whole. It isn’t really to be eaten.
Serve with crusty French bread, grilled or toasted if you prefer. Take a couple of garlic cloves with each serving and squeeze them with a fork to get the soft, cooked garlic out to spread on the bread. You will find it delicious, slightly sweet and not garlicky at all!
We haven’t made garlic fries in some years, so we looked at published recipes to see what people are doing. As far as we could tell, they all got it wrong! All the recipes we found suggested mincing the garlic and the sauteing it to “reduce the garlic flavor.” Duh! Why no just use less garlic? Those recipes also suggest pouring the cooking oil over the fries along with the dis-flavored garlic, making a greasy mess.
The problem is that cooking the garlic can easily make it nearly tasteless. You could throw on some rice instead! And further, since garlic has a lot of sugar in it, it is very easy to burn it!
As we noted in our previous article, garlic develops its flavor when you cut it up, and loses its flavor when heated.
So, we went back to our own recipe from years ago:
5-6 cloves of garlic
4-6 sprigs of Italian parsley
2-3 Tb Diamond Kosher salt
French fries (frozen ones are OK)
Mince the garlic to small pieces and then chop it with the parsley.
Chop both into the pile of salt until well mixed.
Toss over freshly made French fries and mix well. Let any excess fall off when you move them to a serving dish.
Serve at once.
Not much trouble here, and they go as well with hamburgers as they do with baseball. Note that we chose Diamond Kosher salt of Morton’s, because the salt crystals are smaller. And while we have a wooden counter top, we chose to chop this up on a cutting board, making cleanup easier.
To get the garlic smell off your hands, rub them with salt before washing them.
The garlic bulb is a really unusual plant. Each clove in the garlic head is actually a single swollen leaf, according to Harold McGee. Garlic’s strong taste and smell is actually a protection the plant evolved: when an animal bites into it, the strong taste is released, repelling the animal.
A whole garlic clove has only a mild taste and aroma, but when you cut into it, the enzyme alliinase is released from one part of the bulb and reacts with the compound alliin (a derivative a the amino acid cysteine) in another part of the bulb to form allicin, which has the characteristic garlic aroma and taste. Note that the plant evolved this defense to keep away animals, and garlic is actually quite toxic to dogs and cats: you should avoid letting any get into their food.
The alliinase enzyme is quite sensitive to temperature. Students of Professor John Milner at Penn State carried out a simple experiment where they placed garlic cloves in a microwave oven for one minute. While the garlic cloves appeared unchanged, analysis showed that the enzyme had completely disappeared after heating. They noted that other types of heating are sure to give the same results.
So this means that you need to chop the garlic before heating or cooking it, and that you should let the chopped garlic stand for a few minutes before adding it to the food you are preparing, to allow time for the enzyme to work to develop the flavor.
Garlic has much more sugar in it (fructose) than onions do, and is thus more prone to burning. Cook it at low temperatures when sautéing it, or add it directly to a liquid.
These two facts explain why dishes like Chicken with 40 Cloves of Garlic are so mild. The garlic cloves are never cut up: and the alliinase is destroyed by heating soon after the cloves are added to the pot.
Always buy fresh heads of garlic. Avoid the ones in little boxes, as they may be very old. You should also avoid bottled peeled garlic cloves in oil, as they are prone to develop botulism, according to McGee. And do not refrigerate garlic, which also will reduce the flavor.
When peeling garlic, you can use the simple rubber garlic peeler tube shown above, or you can use Jacques Pepin’s technique, and just cut a small slice from the root end of the clove. This will free the skin and it will just about come apart in your hand. You can also just crush the garlic and pick out the peel from the rubble.
And how do you get that garlicky smell off your hands? Rub them with salt and then wash as usual.
Many computer courses in Python suggest writing a calculator program in Python to develop both your logic and user interface skills. In this article we discuss some more advanced concepts you might use to write a good calculator program with a minimum of effort. We are not, however, proposing to do your entire assignment, but only to give you some helpful pointers that may make your program easier to write well.
If you look at our calculator interface, you quickly note that it is really a 5 x 4 matrix of buttons, but actually 6 x 4 counting the value display line, which actually just a Label field. So even if you haven’t bothered to learn about layout managers (there are only two in tkinter) now would be a good time to start.
It is also helpful to note that all of the numerical buttons (all the gray ones) have the same function: they put a number into the display line. The only exception is the period button which also has to check to make sure that only one period gets added to the number.
The trouble with an interface using all these buttons is deciding where the clicks for all these buttons go. One really simple solution is to put the command to be executed right inside the button. Here is the interface for such buttons:
# abstract class defines command interface class DButton (Button): def __init__(self, master, **kwargs): super().__init__(master, command=self.comd, **kwargs)
def comd(self): pass
This is an abstract class, in that the comd function just has a place holder pass statement. But if we derive buttons from DButton, we can fill in each comd method with actual code as we see below. All of the buttons in this example are derived from DButton and each derived button has its own comd code.
In all cases, these buttons will not know much about the value display or the state of the period or anything else. Instead, we create a Mediator class that knows about the value display and receives commands from all the buttons. So, our Numeric button is just the following: mostly just setting up the font and color:
def __init__(self, master, med, **kwargs):
super().__init__(master, width=2, fg='white',
butnfont = tkFont.Font(family='Helvetica',size=16, weight='bold')
self['font'] = butnfont
self.med= med # save copy of Mediator
Our comd function calls the Mediator’s numClick method and sends it the label of the button, which is the text representing the actual number we want to add to the value display.
self.med.numClick(self['text']) # gets number from text label
At the top of the list of widgets we create the top label, and then we create the Mediator and pass it that label. The Mediator is the only class that knows about the contents of that label, and it receives calls from the various number buttons to add that text to the label. In this method it adds a leading space, which could be changed to a minus sign if you change the numbers sign, and then just appends numbers to the label:
# Any number is clicked
def numClick(self, text):
if self.first: # if first char clear the zero
self.setlabelText(" ") # leading space
self.first = False
st = self.getLabelText() + text
So, we create all of the number buttons in a grid as shown in the figure. Here is a bit of that code for buttons 7, 8 and 9. They are placed in grid row 2 in columns 0, 1 and 2.
but = NumButton(root, med, text='7')
but.grid(row=2, column=0, padx=1, pady=1)
but = NumButton(root, med, text='8')
but.grid(row=2, column=1, padx=1, pady=1)
but = NumButton(root, med, text='9')
but.grid(row=2, column=2, padx=1, pady=1)
To illustrate the structure of this part of the program, the Mediator communicates with the label and the buttons all communicate with the Mediator:
In a similar fashion, all the other buttons are command buttons that tell the Mediator what to do. The C and CE button clear all the data and the CE buttons just clears the text in that top label.
Clicking one of the operation buttons (+, -, *, or / ) tells the program that the current number is done and that a new one will start so that the two numbers needed to carry out that operations get created. You should store each of those in some sort of array or stack along with the operation symbol. Usually this array can be stored right in the Mediator class. Then, when the Equals sign is clicked, you carry out the calculation.
If you enter
2 + 3
the Equals sign button should combine those and display “5.0”. (We convert all of them to floats for simplicity.)
This will work for more than two numbers, and combining them left to right mainly works:
5 * 3 + 2
will correctly display 17. However, if you remember the priority rule My Dear Aunt Sally, you carry out multiplication and division before addition and subtraction, and simple to right combining of the data will produce the wrong answer for
2 + 5 * 3
This should still result in 17, but unless you remember the priority rule, you will get the wrong answer.
Since this simple exercise is to construct a simple calculator, limiting it to two values is a reasonable first approximation. Handling this priority issue is left as an exercise for the reader, but obviously you have to find a way to perform multiplication and division first. Most likely, you will use the Python eval() function.
Using a Dictionary to choose operations
One other clever trick you might want to consider using is finding a way to choose the function to be carried out based on which of the operation buttons you select. You can use a simple dictionary which returns the function you want to carry out:
Then, you can use the text of the operation sign to get the right function:
func = funcs.get(sign) # will be one of four symbols
sum = func() # execute that function
By deriving new classes from the Button class, you can make a really nice-looking calculator interface in a grid layout of 6 x 4, where the top line is the label and the 5 x 4 represents the control and numeric buttons. All of the buttons benefit from having a Command interface, and all of the numeric buttons can call the same routine since they all put numbers into the top label. The Dot button differs only in that you must limit it to one decimal point per number.
The major class for handling all these button clicks is called a Mediator, and it is the only class that has access to the top data line display.
You keep the various numbers and operations that the user enters in an array or stack, and you can use the dictionary method to selection the function to carry out the right operation. Carrying out computations of more than two numbers means remembering My Dear Aunt Sally to choose the operations to carry out first.
You can make these nice, puffy beer-battered shrimp with very little effort. You just need to let the batter sit for 30-45 minutes before you start dipping and frying the shrimp. We found that the best frying temperature for the shrimp was about 350˚ F. They still take only minutes to brown.
If you are using a stand mixer, you might find that it can’t beat a single egg white. We usually put in two so the beaters will catch the whites, and then only use about half of the beaten whites.
1 lb shrimp, peeled and deveined.
½ cup flour
Dash of salt
1 beaten egg
1 Tb melted butter
½ cup beer
1 egg white, beaten
About 3-4 cups canola oil
Seafood sauce of your choice
Folding egg whites into batter
Mix the flour and salt and stir in the butter and egg.
Add the beer gradually, stirring only until smooth.
Let the batter stand in a warm place for 30-45 minutes
Preheat the oil to 350˚ F.
Beat the egg white to stiff peaks.
Fold the egg white into the batter.
Dip the shrimp into the batter and drop directly into the hot oil. Cook only 5-6 at a time to keep the oil from cooling.
Serve with French fries, lemon wedges and cocktail sauce.
Since you have the hot oil, why not make some French fries, too? Cut about 1 or potatoes per person into strips and soak in cold water for an hour, and then drain them.
Turn the oil temperature up to 375˚ F. Dry the fries, and cook them in a couple of batches. Serve at once.
We’ve been thinking about visiting Hoodoo Brown since before the pandemic, and now that we and they are more open, we thought we’d give it a whirl. It’s right at the intersection of Route 7 and Route 35, with a fair amount of parking behind as well as some in front.
We first attempted to have dinner there Saturday about three weeks ago, leaving Wilton about 5:15pm and getting there before 5:45. They politely told me there was a 1-1/2 hour wait, and maybe we should come back on a week night. So we did.
We got there last night (Thursday) about 5:45pm, and were able to park right in front. There was no crowd at all. The really friendly hostess seated us right away, mentioning twice where the bathroom was. Either we looked like we needed it or she thought their food did.
Our waitress was really helpful with their beer list, which was way longer than was printed in the menu. We ordered an IPA she recommended., and it was great While the menu itself is not large, it can be daunting, since so much of it seems to be quite large portions of meats. It features meats by the half pound including: brisket, pulled pork, pork belly, pastrami, pork ribs, smoked chicken, smoked sausage and beef rib. Their special that night was smoked prime rib 1 lb for $35 and 2 lbs for $44. It seemed a bit much for us.
There were also several appetizers, including BBQ Nachos, Texas Poutine, Fried Green Tomatoes, Chicken wings (several sauces are offered) and Burnt End Deviled Eggs. We got the chicken wings with barbecue sauce and the deviled eggs.
Of these, the chicken wings were tender and flavorful, but the deviled eggs just plain weird. The little bits of burnt ends were variable in tenderness and the deviled eggs themselves pretty flavorless. They would be better if they added some mustard or horseradish to the egg filling so they rose to the flavor profile of the burnt ends.
Oddly enough, the waitress said there was no pork belly (not ready yet) and no bacon or sausage. This was disappointing since pork belly is featured in several of the menu items.
We ended up ordering their copious sandwiches, made up of brisket, pulled pork, pork belly and chicken in various combinations. We settled on the Hogzilla, made up of shaved pork ribs, pulled pork, pork belly, fried green tomatoes and supposedly Hoodoo Voodoo sauce. It also comes with copious French fries as well. The waitress said they’d add extra puled pork to make up for the missing pork belly.
The French fries were quite good, but the pulled pork was dry with no barbecue sauce within. We did each get a small 1 oz cup of sauce with our place setting, and we probably could have asked for more, but it would have been better if it had been mixed into the pork.
If you look at the two pictures of the sandwich, you will see an odd orange square of something or other. The waitress identified it as pork belly crackling, but we think not, as it was hard enough to break a tooth on. And you could play a tune on your metal tray by banging it with that square, which I finally decided was more like petrified bacon. Luckily, we didn’t bite into one! We wished we’d stuck to ordering the ribs.
Their dessert menu looked sort of interesting, especially the Carmelita Sundae, but we didn’t partake. Our bill with tax, but before tip, including 3 beers was $72.
Hoodoo Brown is at 967 Ridgefield Rd and is open T-Th 4:00pm-9pm, F-Sa 11:30am-9:30pm Su 11:30am-8pm, and takes phone orders up to half an hour before their closing times.