text:
Tuesday, February 28, 2017
Spaghetti alla Carbonara with Eggs & Pancetta
Lusciously indulgent, Spaghetti alla Carbonara is an Italian pasta dish based on eggs, pecorino romano, guanciale and black pepper. The key is to toss and thoroughly mix the cooked pasta off the heat with the cheese, eggs, pepper and pasta water, to create a creamy yet not overly thick sauce. A true carbonara has no cream, but although purists may shudder, I do sometimes add a little cream depending how I'm feeling! Like most recipes, the origins of the dish are obscure but there are many legends. As 'carbonara' literally means 'coal miner's wife', some believe that the dish was first made as a hearty meal for Italian coal miners. Romans use guanciale (cured pig's jowl), which is more delicate than pancetta (unsmoked Italian bacon), and also leaner. If you can find it, by all means use guanciale, otherwise pancetta or bacon work just as well. For the sheer wow-factor, I do like to drop an egg yolk into each nest of pasta, which guests stir to form an even creamier sauce. Garnished at the end with a flurry of coarsely grated Parmigiano, "Coal Miner's Spaghetti" must be one of the great pastas dishes of all time.
Spaghetti alla Carbonara
Serves 4
1 lb spaghetti
2 tbsp olive oil
1 lb guanciale or pancetta
4 large eggs, separated
1 1/4 cup fresh coarsely grated Pecorino or Parmigiano-Reggiano
Kosher salt and freshly ground black pepper
2 tbsp fresh chopped thyme leaves
1/4 cup heavy cream, optional
Put a large pot of salted water on to boil for the pasta and cut the pancetta into 1/2 x 1/4 inch lardons. Combine the olive oil and pancetta in a large sauté pan set over medium heat, and cook until the pancetta has rendered its fat and is crispy and golden. Remove from the heat and set aside, being careful not to drain the fat.
Cook the spaghetti in the boiling water until just al dente. Scoop out 1/4 cup of the pasta cooking water and set aside. Drain the pasta.
Add the reserved pasta water to the pan with the pancetta, then toss in the pasta and heat, shaking the pan, for 1 minute. Remove from the heat, and add 1 cup of the Parmigiano, the egg whites, thyme, pepper to taste, and the cream, if you're using it. Toss until thoroughly mixed.
Divide the pasta among four warmed serving bowls. Make a nest in the centre of each one, and gently drop an egg yolk into each nest. Season the egg yolks with a little more fresh ground pepper and sprinkle the remaining 1/4 cup of Parmigiano over the top and dive in.
Monday, February 27, 2017
Wolfgang Puck: 2017 Oscar Culinary Classics
For the 23rd year in a row, chef Wolfgang Puck prepared a mouthwatering menu for the stars attending the 2017 Governors Ball after the trophies for the 89th Annual Academy Awards are handed out. Puck starts planning the menu in December, although after more than two decades at the helm, he's more than prepared for last-minute substitutions. "We try to get all our ingredients in by Friday afternoon," he explains. "We still might change some things because we're going to the farmers' market, and we'll just see what they have." Some dishes are made a day in advance, but most of the cooking begins at 6:00 a.m. Sunday morning. And while there are some year-to-year mainstays on the menu, Puck also uses the nominees as inspiration for new recipes.
Eric Klein, the new Wolfgang Puck Catering executive chef, works alongside Puck to create more than 50 imaginative dishes, from one-bite hors d'oeuvres to small-plate entrees that are passed throughout the evening. From made-to-order sushi to mini burgers to tiny tacos to caviar-topped baked potatoes, there will be food everywhere. New menu items this year will include Moroccan spiced Wagyu short rib topped with a parmesan funnel cake; taro root tacos with shrimp, mango, avocado and chipotle aioli; gnocchetti with braised mushrooms and cashew cream; lobster corn dogs; made-to-order sushi, custom poke bowls and an array of shellfish; plus a selection of Puck's signature dishes such as smoked salmon Oscars, chicken pot pie with shaved black truffles, and baked macaroni and cheese. The pastry team of Kamel Guechida, Monica Ng and Jason Lemmonier will offer a dessert menu brimming with innovative and playful desserts served at multiple dessert stations, plus the ultimate dessert buffet featuring Puck's sought-after 24-karat-gold chocolate Oscars. Puck will use locally sourced ingredients and sustainable seafood to feed the 1,500 guests who will attend, and plans to donate all unused prepared foods to Chefs to End Hunger.
Oscars® Governors Ball Menu
Menu Created by Wolfgang Puck and the Wolfgang Puck Catering Team, including VP Culinary Eric Klein and pastry team Kamel Guechida, Monica Ng and Jason Lemonnier
GF - Gluten Free NF - Nut Free DF - Dairy Free
Passed Hors d'Oeuvres
Spicy Tuna Tartare, Sesame Miso Cone (NF)
Mini Burgers, Aged Cheddar, Remoulade (NF)
Smoked Salmon Oscar Matzo (NF)
Assorted Pizza (some Vegetarian, Some Vegan, NF)
Korean Steak Tartare on Puffed Rice (NF)
Lobster Corn Dog (NF)
Sweet Pea Falafel with Hummus and Za'atar (NF, Vegetarian)
Spiced Gougeres with Black Truffle Dust
Taro Root Taco with Shrimp, Mango, Avocado and, Chipotle Aioli (NF, GF)
Savoury Bites
Homemade Pretzels, Pimento Cheese (Vegetarian, NF) x2
5 Year Aged Gouda (Vegetarian, GF, NF)
Parmesan Reggiano (Vegetarian, GF, NF)
Gold Dusted Truffled Popcorn
Roasted Nuts with Rosemary, Cayenne, Sea Salt and Brown Sugar (GF)
Fleur de Sel Breadsticks (NF, DF)
Spago Style Lavosh (NF, DF)
Poke, Sushi & Shellfish Station
Made to order on custom ice bar
Passed Small Plates – Served Hot
Baked Potato with Caviar (GF, NF)
Chicken Pot Pie, Black Truffles (NF)
Sunchoke Soup with Black Truffle (Vegetarian)
Baked Macaroni and Cheese (NF)
Gnocchetti with Braised Mushrooms and Cashew Cream (Vegan, GF)
Moroccan Spiced Wagyu Short Rib
Semolina Puree, Crispy Brussels Sprouts, Parmesan Funnel Cake and Citrus Charmoula Parsnip Agnolotti, Black Winter Truffles (Vegetarian, NF)
Dover Sole, Girasole Puree, Spaghetti Squash and Herb Vinaigrette
Passed Small Plates – Served Cold
Baby Beets with Goat Cheese Yogurt, Savory Granola, Citrus and Bitter Greens (Veg) Chopped Salad with Popped Sorghum, Shaved Carrots, Feta, Croutons, Dijon-Champagne Vinaigrette (Vegetarian, GF, NF)
Hearts of Palm, Watercress, Grapefruit, Jalapeno-Meyer Lemon Vinaigrette
(Vegan, GF)
Dessert Action Stations : Made to order...
Lava Cakes (melting Sphere with flavor anglaise) – Turbo Chef
Gelato and Sorbet with Waffle Cones
Gelato (Vanilla, Chocolate, Coffee, Salted Caramel Popcorn, Dulce de leche) Sorbet (Mango, Raspberry/Acai)
Vanilla waffle, Red Velvet
Takoyaki Cake Balls Raspberry Lychee
Individual and Plated Sweets Chocolate Buffet
Caramel Cappuccino Oscar Lollipops (GF, NF) Chocolate Chips Cookies (NF)
Assorted Mini Cookies
Coconut Macaroons (NF)
Chewy Cranberry Meringues (Pink Color) (GF, NF) Macaron (Truffle, Strawberry, Pistachio, Chocolate, Coffee) (GF)
Oreo Cookie S'more Dome
Raspberry Panna Cotta, Lemon Sable
Dry Passionfruit Marshmallow Rocher
Bubble Banana/Strawberry Cheesecake Lollipop Freeze-dried Strawberry (NF) Dark Chocolate Brownie (NF)
Mocha Tiramisu in Verrines (GF)(NF)
Large Barks for Breaking Station (white, milk and dark – some movie candies)
Artisanal Chocolate Bonbons, Movie Theater Flavors
Sour patch kids York Peppermint Red Hots Goobers Butterscotch
Carrot Jalapeno Pate De Fruit (GF, NF)
Milk Chocolate Ring Dings
Mini Éclair Gianduja Mousse
Chocolate Peanut Butter Tart
Caramel Banofee Pie
Krispy Pops (lemonade, cherry pop rock, cookies and cream) Florentine Cookies
Chocolate Chips Cookie Sandwich (V, GF)
Coconut Vegan Cupcake (V, GF)
Double Chocolate Cherry Cookies (V, GF)
Passed Small Plates - Sweet
Tropical Gateau (coconut, mango, passion fruit)
Black Currant Pavlova (violet meringue, citrus ganache) Elderflower Champagne Parfait with Raspberry Espuma (champagne pairing) Mini Yuzu Bars (NF)
2,600 lb ice raw bar with poke, sushi and shellfish
Taro root tacos with shrimp, mango, avocado and chipotle aioli
Hot baked potatoes with caviar
Smoked Salmon and Caviar Oscars
Pistachio, Violet, Mango, Chocolate and Raspberry Macarons
The Dessert Buffet
Marks Gardens with feature more than 10,000 blooms, including burgundy amaryllis, red parrot tulips, white hyacinth, tiger anemone, white dubium
"The theme of this year's Governors Ball is 'magical transformation.' As they enter the Ball, guests will transition from a dazzling sea of red to a tricolor motif of eye-popping gold and red on an infinite blanket of white," said Kurland. "The unique design of the space has been meticulously created to celebrate Oscar gold." And as always, the room will be filled with flowers. This year, we're inspired by California mid-century 1950s, 1960s, clean and modern," said Mark Held of Mark's Garden, with more than 10,000 blooms, including burgundy amaryllis, red parrot tulips, white hyacinth, tiger anemone, white dubium and many more.
Roasted Yukon Gold Potatoes with Crème Fraîche & Caviar
Serves 12
Recipe courtesy of Wolfgang Puck
12 medium Yukon Gold potatoes
2 oz Iranian osetra caviar
Crème Fraîche:
2 tbsp buttermilk
1 cup heavy cream
Stir together the crème fraîche ingredients and let sit at room temperature overnight, covered, until the mixture thickens. Scrape into a container, cover, and refrigerate until needed. Preheat oven to 350°F. Wash and dry the potatoes. Wrap individually with gold aluminum foil (if possible!) and place on baking sheet and bake for 1 hour. Remove the potatoes from oven and set aside. To serve, score and pinch each potato and garnish with a dollop of the crème fraîche and osetra caviar.
Smoked Salmon Oscar with Iranian Osetra Caviar on Brioche
Serves 8
Recipe courtesy of Wolfgang Puck
1 loaf brioche
1 lb smoked salmon
2 oz Iranian Osetra caviar
Dill Cream:
1 cup sour cream
1 tbsp lemon juice
2 tbsp shallots, chopped
1 tbsp fresh dill, chopped
Pinch of salt and white ground pepper
Whisk the dill cream ingredients together thoroughly. Cut the brioche into the shape of an Oscar statuette and toast until golden. Spoon small amount of dill cream on the brioche. Layer smoked salmon on top and garnish with caviar.
Wolfgang Puck's Mini Cheese Burgers with Remoulade & Aged Cheddar
Makes 12 mini burgers
Recipe courtesy of Wolfgang Puck
3/4 lb ground beef
1/4 tsp Kosher salt and freshly ground black pepper
4 tbsp extra-virgin olive oil
6 oz aged cheddar cheese, sliced
6 slices Brioche bread, punched out with a 2-inch ring cutter or 12 mini buns
Arugula leaves
6 cherry tomatoes, sliced
3 cornichons, sliced
Remoulade Sauce:
2 cups heavy cream
3 cloves garlic, minced
2 sprigs fresh rosemary
1 tablespoon sweet paprika
2 tablespoons peanut oil
3/4 cup of brunoise of red onion
1/2 cup of brunoise of red bell pepper
1/2 cup of brunoise of yellow bell pepper
For the remoulade sauce, combine the heavy cream, garlic, rosemary and paprika in a medium saucepan, and reduce by half. Allow to cool to room temperature. In a sauté pan, heat the peanut oil. Sweat the onions, red and yellow bell pepper until glossy. Transfer to a plate and allow to cool to room temperature.
Preheat a grill or grill pan. Put the ground beef in a bowl and season with a generous pinch of salt and pepper. Mix together with your hands to combine. Take about 2 tablespoons of the ground beef and roll it in the palm of your hand like you are making meatballs. Flatten the top slightly and put the mini burger patties on a side plate. Drizzle the burgers with oil and season the tops with salt and pepper. Turn the burgers over and season the other side.
Place the burgers on the hot grill. Cook for 3 minutes, then turn them over with tongs. Put about 1/2 ounce of aged cheddar cheese on top of the burgers, allowing it to melt. While that's cooking, put the brioche circles or mini buns on the grill. Let them toast slightly on both sides, about 2 minutes total time.
To put the burgers together: Put the toasted brioche circles or bun halves on a platter. Top each with a small spoonful of Remoulade. Put the burger on top, cheese side up, followed by an arugula leaf, a slice of tomato and a slice of cornichon. Top with other half of the brioche or buns, and secure with a decorative pick.
The Lion's Punch inspired by Garth Davis's film Lion
Serves 2
4 oz Myers's dark rum
10 oz ginger beer
Lime wedges
Friday, February 24, 2017
Tuna Salad with Avocado, Onion Sprouts & Boiled Egg
Low calorie, low carb and a great source of Omega-3, this simple, light and delicious Tuna Salad recipe makes an easy weekday dinner paired with sliced avocado, hard boiled eggs and some fresh tomatoes. Topped with a mound of flavourful onion sprouts and dressed with a tangy vinaigrette, summertime dining doesn't get any easier, healthier or more satisfying.
Tuna Salad with Avocado, Sprouts & Hard Boiled Eggs
Serves 2
10 oz (2 small cans) canned tuna, drained and flaked
1/2 cup diced English cucumber
3 green onions, finely chopped
2 tsp fresh squeezed lemon juice
1 lemon, zested
2 tbsp fresh dill, finely chopped
1/3 cup mayonnaise or Greek yogurt
1/2 tsp salt
1/4 tsp black pepper
6 oz mixed greens
2 large eggs, hard boiled, peeled and halved
1 avocado, peeled and sliced
6 grape tomatoes, halved
1 package onion sprouts, for garnish
Maldon salt and fresh cracked black pepper
3 tbsp extra virgin olive oil
1 tbsp white wine vinegar or lemon juice
2 tsp Dijon mustard
1 large garlic clove, minced
Fresh cracked black pepper and salt, to taste
Add the olive oil, vinegar, Dijon and minced garlic together in a small bowl and whisk until well combined. Season with fresh cracked black pepper and salt to taste. Combine tuna, diced cucumber, green onions, lemon juice, zest, dill, mayonnaise, salt and pepper in a large bowl and stir well. Toss the mixed greens with some vinaigrette to taste, then arrange on 2 plates and top with a generous scoop of the tuna mixture. Top with a handful of onion sprouts and garnish with sliced avocado, tomatoes and hard boiled eggs. Season with Maldon salt and fresh ground black pepper to taste and drizzle with more vinaigrette if need.
Thursday, February 23, 2017
Toasted Coriander & Fennel Seed Crusted Salmon
Toasted coriander and fennel seeds become the fragrant foundation for a wonderfully flavourful dry rub, perfect on swordfish or salmon. Coarsely ground with white peppercorns and seasoned with a little kosher salt, the mixture is pressed into the fish, and grilled over medium-high heat for a delicious light and crispy coating, with scents redolent of Indian and Middle Eastern cuisine. A great source of heart healthy omega-3 fatty acids, this Coriander & Fennel Crusted Salmon is excellent served on a bed of grilled asparagus and garnished simply with a slice of orange and drizzle of balsamic fig glaze.
Coriander & Fennel Crusted Salmon with Grilled Asparagus
Serves 2
2 tbsp coriander seed
2 tsp fennel seed
1/2 tsp white peppercorns
1/2 tsp kosher salt
2 organic salmon filets, about 6 oz each
1 bunch asparagus, trimmed
Olive oil, for brushing
Fresh thyme, mint and sliced orange, for garnish
Balsamic and fig glaze, for drizzling such as Kalamata brand
Place the coriander seeds, fennel seeds and white peppercorns in a small pan over medium high heat. Toast the mixture, shaking the pan frequently, until they become fragrant and begin to brown, about 2 minutes. Let the mixture cool a few minutes and then transfer to a spice grinder or small food processor, and coarsley grind. Spread on a small plate with the salt and mix well.
Brush the salmon filets with some olive oil then dip the top side of each filet into the spices, pressing well to adhere. Transfer the fish to a plate, cover with plastic wrap and refrigerate until required. Place the asparagus in a small dish and drizzle with a little olive oil and toss to coat. Season with kosher salt and black pepper to taste, then cover with plastic wrap and refrigerate along with the salmon.
Wednesday, February 22, 2017
Maccheroni al Ferro with Ragù alla Bolognese
Inspired by this recipe for handmade Maccheroni al Ferro by Toronto chef Massimo Bruno, I have made this easy and delicious pasta many times after discovering the website of this talented chef and teacher last year. Ferri means 'irons' and refers to the thin metal rod around which small pieces of dough are rolled in order to create this unique shape of pasta. Originating from the southern Calabrian region of Italy, Maccheroni al Ferro is made using semola di grano duro rimaninata, a remilled durum wheat semolina, mixed with a little warm water and olive oil then kneaded until smooth and elastic, a process which takes about 15 to 20 minutes. Cut into five or six smaller pieces, the dough is hand rolled into long snake-like coils then sliced into 1/2 to 1-inch long pieces, then shaped into maccherone using a wooden or metal skewer. One places the skewer on the centre of each piece of dough, and pressing it lightly to make it stable, one then starts rolling the dough to make a cylinder. Removing them carefully, the pasta are laid onto a parchment lined baking sheet until all the maccherone are complete. If one or two don't work out, simply roll them back into a small ball and try again. They don't need to be perfect, just made with love! Served with this classic Ragù alla Bolognese recipe by Mario Batali, the sauce is made with a delicious combination of sautéed vegetables, veal, pork and pancetta which are slow-cooked with milk, white wine and just a hint of tomato paste — a light and delicious sauce for my little pillows of loveliness "e tutto fatto a mano"!
Three simple ingredients: semolina flour, warm water and olive oil
Using a fork, the mixture is blended until it holds together
The dough is the kneaded for 15-20 minutes until smooth
The dough is cut into six pieces and rolled into long ropes
The dough is cut into 1/2-inch pieces
Using a chopstick, the dough is rolled into 'ferro' and placed on a parchment lined baking sheet
A traditional Ragù alla Bolognese
Maccheroni al Ferro with Ragù alla Bolognese
Serves 2-4
1 cup Semola Di Grano Duro Rimaninata (remilled durum wheat semolina)
1/2 cup warm water
1 tbsp extra virgin olive oil
Sea salt, for adding to boiling the pasta
1/4 cup extra-virgin olive oil
2 tbsp butter
2 carrots, finely chopped
2 medium onions, finely chopped
4 ribs of celery, finely chopped
5 garlic cloves, finely sliced
1 pound ground veal
1 pound ground pork
4 oz pancetta, ground or finely diced
6 oz tomato paste
1 cup whole milk
1 cup dry white wine
1/4 cup parley leaves, chopped
Kosher salt and freshly ground black pepper
Parmigiano-Reggiano, for grating
In a 6 to 8-quart, heavy-bottomed saucepan, heat the olive oil and butter over medium heat to start the ragù. Add the onions, celery, and garlic and sweat over medium heat until the vegetables are translucent and soft but not browned, about 10 to 15 minutes. Add the veal, pork, and pancetta and stir into the vegetables. Add the meat over high heat, stirring to keep the meat from sticking together until browned. Add the tomato paste, milk, and wine and simmer over medium-low heat for 60-90 minutes. Season with salt and pepper to taste, and keep warm until ready to serve. The sauce can also be stored in an airtight container for 1 week in the fridge or frozen for up to 6 months.
Place the flour in a large bowl and make a hole in the centre. Pour in some warm water and olive oil and mix together slowly with a fork until the dough comes together, is no longer sticky and becomes hard to mix with the fork. Remove the dough from the bowl and place on a clean surface. Massage the dough by pulling and stretching it out until it becomes soft, smooth and elastic, about 10-20 minutes.
Slice into 6 pieces and using your hands, roll each piece into long snake-like cylinders about the thickness of a cigarette. Once all the dough has been rolled out, sprinkle some semolina onto a clean surface, and coat all of the pasta so it won't stick together. Slice each roll into 1/2" pieces. Using a 'ferri' or thin wooden skewer, place it in the middle of each small piece of dough, and using a little pressure, roll the rod back and forth until the dough is wrapped completely around the rod, then slide the pasta off and arrange on a parchment lined baking tray in a single layer, and dust with some flour to keep the past from sticking together if necessary.
The pasta doesn't need to dry for long and can be thrown into boiling water shortly after being made and will be finished cooking in a few short minutes when they float to the top of the water. Using a large slotted spoon, transfer the pasta with any pasta water that's attached, to an appropriate amount of hot Ragù Bolognese, and toss so that the pasta is evenly coated with the sauce. Serve garnished with some grated Parmigiano-Reggiano and a sprig or two of fresh thyme for pizzazz.
Tuesday, February 21, 2017
Indian Monkfish Curry with Tomato & Cilantro
Often compared to Lobster, Monkfish's firm-fleshed and meaty texture is ideally suited for this warm, fragrant and delicious Indian fish curry. Inspired by a recipe from The Cooking of India by Santha Rama Rau, this curry recipe is simple, easy to prepare and absolutely addictive. Onions, garlic, ginger and kari leaves are sautéed in olive oil until golden brown, then an aromatic mixture of cumin, turmeric, ground coriander, cayenne and fennel seed are added, infusing the kitchen with an intoxicating mouth watering aroma. Chopped tomatoes, yogurt and cilantro are mixed into the sauce, producing a rich fragrant gravy into which sautéed monkfish are added, then simmered for a few more minutes. Served with jasmine rice, papadam and a selection of chutneys, this easy Monkfish Curry is a light and flavourful salute to my tattered Time-Life series of cookbooks.
Monkfish Curry
Serves 2
1 lb monkfish tail
2 1/2 tsp salt
7 tbsp vegetable oil
6 oz finely chopped onions
2 1/2 tsp chopped garlic
2 tsp chopped fresh ginger
12-16 Kari leaves
1 tsp ground cumin
1 tsp turmeric
1 tsp ground coriander
1 tsp cayenne pepper
1/4 tsp ground fennel seeds
4 tbsp water
1 lb can tomatoes, drained and chopped
3 tbsp chopped fresh cilantro, plus extra for garnish
6 tbsp plain yogurt
Heat 5 tablespoons of oil over high heat in a large skillet, until water flicked into it splutters instantly. Add the onions, garlic, ginger and kari leaves, and sauté for about 8-10 minutes, stirring constantly, until the onions are soft and golden brown. Reduce the heat to low, add the cumin, turmeric, ground coriander, fennel and one tablespoon of water, and cook for a minute or so, stirring constantly. Stir in the tomatoes, 1 tablespoon of fresh cilantro, the yogurt and the remaining teaspoon of salt. Increase the heat to medium, add the remaining water, then cover and simmer for about 20 minutes.
Cut the monkfish tail into 1-inch medallions, pat dry and sprinkle with salt. Heat the remaining 2 tablespoons of oil over high heat in a small skillet, and sauté the monkfish for 2-3 minutes on each side, until each medallion is opaque.
Place the monkfish medallions side by side in the sauce, and sprinkle with the garam masala and remaining cilantro. Reduce the heat to low, cover tightly and simmer for another 10-15 minutes.
To serve, ladle the Monkfish Curry into a warmed bowl, and garnish with some chopped cilantro. This is delicious served with basmati rice, papadums and selection of chutneys.
Monday, February 20, 2017
Broccoli, Onion & Dill Frittata with Gruyère
Among the most classic of brunch offerings, omelettes, quiches, and frittatas are also some of the most versatile. Healthy, light and delicious, this low-carb Broccoli, Onion & Dill Frittata with Gruyère is simple to prepare and delicious to make anytime of the year. Italy's version of the Spanish 'tortilla', the frittata is a thick, hearty open-faced omelette with an egg base, and contains more or less anything you like: herbs, vegetables, cheeses, meat, seafood or even pasta. The beautiful thing about frittatas is that there are endless flavour possibilities. They are cooked over very low heat on a stove, or in an oven, until the underside is set and the frittata is beautifully puffed up.
Broccoli, Onion & Dill Frittata with Gruyère
Serves 4
8 large eggs
1 cup grated Gruyère
1 small onion, finely chopped
1/4 head of broccoli, florets only, cut into small pieces
2 tbsp chopped fresh dill, plus more for garnish
2 tbsp vegetable oil
salt & white pepper
Whisk the eggs in a large bowl and season with salt and pepper. Stir in the grated cheese and chopped dill, and set aside. In a medium non-stick sauté pan, heat 2 tablespoons of oil over medium-high and cook the onions until translucent, about 5 minutes. Then add the broccoli florets, season with salt, pepper, and sauté stirring frequently until the vegetables have softened, about 4-5 minutes.
Preheat the oven to 425°F. Pour the egg and cheese mixture over the vegetables and stir to combine. Reduce the heat to medium-low, sprinkle with a little more dill, then cover and cook for 15-20 minutes until the frittata has set around the edges and the middle is cooked through. If the top is still runny, place the sauté pan in the oven uncovered for 2-3 minutes, until the surface is set. Serve while hot with a glass of fresh squeezed orange juice with a splash of sparkling wine for a delicious start to a Sunday morning.
Friday, February 17, 2017
Swordfish with Citrus & Cilantro Marinade
I adore swordfish and serve it at least two or three times a month. Ideally, it's best grilled outdoors on a barbecue to create gorgeous grill marks, but when faced with a winter that just won't quit, baking the swordfish in the oven is the next best thing. With a dense, meaty texture and mildly sweet flavour, the key is preparing a marinade that is fragrant enough to enhance the swordfish without overpowering it's delicacy. This fabulous Citrus and Cilantro Marinade of lemon and orange zest, cilantro, sesame oil, olive oil and Ponzu sauce works beautifully on swordfish as well as salmon, tilapia or even seafood. Marinated for at least half an hour, the swordfish is simply baked in a 400°F oven for about 25 minutes, or until it's just cooked through. Served with a light salad and chilled glass of white wine, warmer weather doesn't seem so far away.
Swordfish with Citrus & Cilantro Marinade
Serves 2
1 lb swordfish, cut in two
3 slices of orange and arugula, for garnish
2 tbsp chopped cilantro
Zest of 1 lemon
Zest of 1 orange
1 tbsp olive oil
1 tsp sesame oil
1 tbsp Kikkoman Ponzu citrus-seasoned soy sauce
In a small food processor, blend the cilantro, lemon zest, orange zest, olive oil, sesame oil and ponzu sauce until well combined. Place the swordfish in a flat dish and coat with the marinade. Allow the fish to marinate 30-60 minutes. Preheat the oven to 400°F and bake the swordfish in a non reactive dish for 25 minutes, or until the fish is just cooked through. To serve, place the swordfish on a warmed serving plate and garnish with sliced orange and arugula, accompanied with the salad and a chilled bottle of white wine.
Thursday, February 16, 2017
Mulligatawny Soup: An Anglo-Indian Classic
A classic Anglo-Indian soup, the name of which means "pepper water," should be richly endowed with meat and piquantly spiced, Mulligatawny became popular with the British stationed in India during colonial times of the late 18th century and later. When they returned home, they brought the recipe back with them to England and other members of the Commonwealth, especially Australia. The recipe for mulligatawny has varied greatly over the years and there is no single original version, but is usually based on a chicken stock and curry, with cream, chicken, onion, celery, apples and almonds and garnished with rice. This recipe by Sydney Oland starts with toasting mustard, cumin and coriander seeds in a small pan over high heat until the spices become toasted and wonderfully fragrant, about 3 minutes. Transferred to a mortar and pestle and ground until fine, it also features fresh ginger, garlic, sweet potato, tomato and green lentils for a bright, richly flavoured and satisfying soup, perfect on a cold winter day.
Mulligatawny Soup
Serves 4
Recipe courtesy of Sydney Oland
1/2 tsp whole mustard seeds
1/2 tsp whole cumin seed
1/2 tsp whole coriander seed
3 tbsp vegetable oil
Kosher salt and freshly ground black pepper
1 lb chicken thighs, skinless
1 onion, finely chopped, about 1 cup
1 medium carrot, finely chopped, about 3/4 cup
1 celery rib, finely chopped, about 1/2 cup
1 tbsp curry powder
3 medium garlic cloves, finely chopped
1 inch piece fresh ginger, finely grated
1 sweet potato, peeled and cut into 1/4 inch pieces
1 apple, peeled and cut into 1/4 inch pieces
1 plum tomato, cut into 1/4 inch pieces
1/2 cup dry red or green lentils
6 cups homemade or store-bought low sodium chicken broth, or water
Greek yogurt, to garnish
Finely chopped cilantro, to garnish
Red chili flakes, to garnish
Place mustard seed, cumin seed, and coriander seed in a skillet and toast over high heat until spices begin to smell toasted, about 3 minutes. Transfer to a mortar and pestle or spice grinder and process until fine.
Preheat oven to 375°F. Season the chicken thighs with salt and black pepper and roast until cooked through, about 25 minutes, then transfer to a plate and reserve.
Add the vegetable oil to a large pot and once hot, add the onion, carrot, and celery and cook, stirring often until onions are translucent, about 5 minutes. Add the curry powder and toasted spices and stir until the vegetables are evenly covered. Add the garlic, ginger, sweet potato, apple and plum tomato and stir to coat. Add the lentils then return the baked chicken thighs to the pot. Add the broth and bring to a simmer, then cover and cook until the potatoes and lentils are soft and soup has thickened, about 1 hour.
Remove thighs from the soup and shred the meat and skin then return to the pot. Season to taste with salt and pepper and serve garnished with yogurt, cilantro, and red pepper flakes.
Wednesday, February 15, 2017
Mini Chocolate Pecan Tarts: A Valentine Treat
One of the most irresistible of desserts, nothing beats a sweet and delicious Pecan Pie. This classic recipe is an updated mini bite-size version of the traditional Southern family favourite. With a buttery chocolate tart pastry and rich nutty caramel pecan topping, these mouth wateringly decadent Caramel Pecan Tarts are absolutely divine, completely addictive and the ultimate Valentine Day treat.
Mini Chocolate Pecan Tarts
Makes 4 mini tarts
Chocolate Tart Pastry:
1 cup of very cold butter cut into ½-inch pieces
1 1/3 cups of all purpose flour
1/3 cup of pastry flour
3/4 cups of icing sugar
2/3 cup of cocoa
1/4 tsp of kosher salt
1/4 cup of water
Chocolate Pecan Tart Filling:
4 large eggs
1/2 cup of granulated sugar
3/4 cup of brown sugar
1/2 tsp of kosher salt
2/3 cup of corn syrup
2/3 cup of whipping cream
1 tsp of vanilla extract
1/3 cup of brandy
1/4 cup of butter, melted
1 ½ cup of pecan halves
Chocolate Drizzle:
1/3 cup of whipping cream
4 oz of semi-sweet chocolate
1 tbsp of corn syrup
Preheat the oven to 375°F. Using a food processor, combine the butter, flour, pastry flour, cocoa, icing sugar, and salt and pulse until the texture resembles coarse sand. Add the water and mix until the pastry just comes together, being careful not to over process. Using your fingers, press the dough firmly into four 4-inch mini springform pans with removable bottom and chill for 30 minutes. Line the pans with parchment paper and fill with baking beans and bake for 8-10 minutes or until just firm. Remove from the oven and discard the parchment paper and baking beans.
Coarsely chop the chocolate and place in a heat-proof bowl. Place a small saucepan on medium heat and cook until the cream just comes to a simmer. Remove from the heat, and pour over the chocolate. Let sit for a 2-3 minutes and stir until the both the cream and chocolate form a homogeneous mixture. Add the corn syrup and stir again.
Using a teaspoon, dot the topping of each of the cooled tarts and swirl decoratively. Serve at room temperature or slightly chilled. The tarts can also be stored for up to 5 days in the refrigerator.
Subscribe to: Posts (Atom)


text:
What else can you put in your outline? Everything! Today we make notes about things easily forgotten when a writer has the main events in focus.
Family & Occupation
Remember, everyone's got to eat.
Family and occupation. It's easy to get immersed in the main plot arc and forget your MC doesn't live in a void. His or her life is still happening around them. Add reminders in your outline to include a scene or at least a phone call with someone from work, a friend or family member. Readers relate to juggling all those things. Your MC should too. Those cutie pies above are my kids. In the picture on the left, that was what they looked like when I first typed "How to write a book" into Google. The picture on the right is what they looked like this time last year. A whole lot happens while we're writing. Don't forget your characters have the same experience. Life keeps moving forward around them despite whatever they are facing personally. Use your outline to remind yourself to make reference to the people and events in your characters' lives that impact them. The story doesn't happen in a vacuum.

subset: commoncrawl


text:
Looking for a delicious gift for a diabetic friend or family member? Or perhaps you need a gift with less sugar for a friend watching their weight? Whatever your needs, we can help you find a sugar-free gift that looks and tastes incredible. Perhaps you're looking for something Kosher for Hanukkah or Yom Kippur? You'll find we offer a fabulous selection of kosher gifts.
Here at Shari's Berries you'll find perfect 45th birthday gifts that are sugar free and full of flavor. Every gift we create is made with only the freshest ingredients and beautifully presented. Whether it's one of our great gift baskets for women, featuring tasty sugar free delights or a full dozen of our colorful birthday cookies, you can trust that they will taste incredible.
We believe that just because you're watching your sugar, you can't enjoy a few special treats. Choose from any one of our 35th birthday gifts to ensure the delight of the ones you love. In addition to our sugar free gifts, we offer a variety of gluten-free gift baskets and treats.
We strive to always provide the finest sugar free delights for every occasion! Shari's Berries welcomes you to browse our extensive selection of all our uniquebirthday gifts for kids while you're picking out the perfect sugar free gifts.
Our sugar free birthday gifts are perfect for all ages and can make the a great surprise whether its gifts for a 21st birthday or even 65th birthday gifts. So next time you need a memorable sugar-free gift, shop Shari's Berries.


text:
Don't see your question? Visit our help section.
Get access to great in-store deals and local pick-up
Sign up for our email deals newsletter!
Get your hands on the most authentic college basketball experience ever, in NCAA® Basketball 10. Enjoy ultimate control over your team's strategy and style of play, including real Motion Offensive Systems including the Dribble Drive, Princeton and Flex to name a few. See the game like it has never been seen before, with authentic broadcasting presentations from the all-star announcing crews of Dick Vitale, Brad Nessler, and Erin Andrews of ESPN, and Gus Johnson and Bill Raftery of CBS Sports. From the broadcast table to the hardwood - it's all there in NCAA® Basketball 10.
*Online connectivity required.
Rated 7.3 out of 10 by Game Informer.
Pro Price


text:
Careers Energy Industry Analysts
Energy Industry Analysts experience many opportunities to grow, learn, and excel in a constantly changing environment. They have opportunities to travel across the U.S. for on-site visits to collect data from regulated energy companies. While on-site, analysts also engage in meetings with top executives of the regulated entities to discuss issues, make recommendations and maintain external contacts and outreach to the industry.
With responsibility over the nation's wholesale electric and gas markets, FERC decisions affect multi-billion dollar companies and the industries, which are essential to the nation's economy and security. Analysts assess the significance of developments and trends in the energy industry using state-of-the-art analytic tools for current and future regulatory policies. Analysts provide the Commission with policy options, recommendations and strategies relating to the Commission's regulation of the evolving energy industry. This exciting evolution calls for innovative approaches to ensure the fairness and efficiency of competitive wholesale markets.
FERC needs professionals and students with the following qualifications:
- Four year degree or relevant experience
- Analytical ability
- Excellent communication skills
Meet Energy Industry Analyst, Camilla Ng


text:
Etta James Dead at 73
Music icon and vocal legend Etta James has died at the age of 73 after losing her battle with leukemia, according to a report from CNN. She is survived by her husband, Artis Mills, and her two sons, who were all present at the time of the singer's passing.
James' longtime friend and manager, Lupe De Leon, broke the news, saying, "This is a tremendous loss for the family, her friends and fans around the world. She was a true original who could sing it all – her music defied category." He continued, "I worked with Etta for over 30 years. She was my friend and I will miss her always." James, who was born Jamesetta Hawkins, was diagnosed with leukemia in March 2010 and her health was slowly deteriorating ever since.
Over the span of her career, James released classics such as the wedding favorite 'At Last' and iconic and inspirational tracks like 'Tell Mama,' 'All I Could Do Was Cry,' and 'Trust in Me.' Despite her battles with heroin and painkiller addiction throughout her life, James never disappeared from the music scene, treating fans to live performances and countless records boasting her inimitable and incomparable voice.
Throughout her life, James won six Grammy awards and was inducted into the Grammy Hall of Fame twice. She was also inducted into the Rock & Roll Hall of Fame and won a slew of other venerable awards. Additionally, James influenced countless artists over the years, including Beyonce, who portrayed the blues/R&B singer in the 2008 movie 'Cadillac Records' and performed 'At Last' for President Obama at his inaugural ball.
Rest in peace, Etta James.
Watch Etta James Perform 'At Last' at Her 1993 Rock & Roll Hall of Fame Induction Ceremony


text:
Text Size
Share »
May is National Stroke Awareness Month
Jackson C.
Saturday, November 23, 2013
By: Erin Cunningham
On February 19, 2011, our son 8 year old son Jackson, suffered an ischemic stroke. He had been playing basketball that morning and felt fine. A few hours later he complained of a stomach ache. Not long after, he had a terrible headache, began vomiting and collapsed. About 14 hours and 3 hospitals later, Jackson was given an MRI and we were told he'd had a stroke. Jackson spent the next month in a pediatric hospital, going through two surgeries and beginning therapy. Next he transferred to the Rehabilitation Institute of Chicago and was there for another month doing therapy. Two and a half years later, Jackson still sees doctors at RIC almost every month and does therapy there about four times a year. Jackson also sees local therapists for Occupational Therapy, Physical Therapy and Speech Therapy and attends school on a part time basis. Jackson was able to keep up with his class and is now in the sixth grade. This past summer during therapy at RIC, Jackson ran for the first time since his stroke. His left arm, hand and fingers are what give him the most trouble. He gets very frustrated because his left arm still doesn't work right, but continues to amaze us with his passion for recovery.
Printer Friendly Version
1-800-STROKES1-800-787-65379707 E. Easter Lane, Suite BCentennial, CO email@example.com
© Copyright 2019
National Stroke Association, All Rights Reserved. Unauthorized Use is Prohibited.
About Us · Board · Press · Contact · Privacy Policy


text:
Walnut/Secure Distributed Computing/Capability Patterns
From Erights
Capability Patterns
As discussed in the minChat security review, facets are objects that act as intermediaries between powerful objects and users that do not need (and should not be granted) its full power. We saw a facet in use in the audited version of the eChat program, where the chatFacet. was interposed between the chatController and the remote chat participant. Here is a little general-purpose facet maker:
# E sample /** * <param> target is the underlying powerful object * <param> allowedMethods is a map. The key is a method name, the value * is the set of allowed numbers of arguments. So ["receive" =>[0, 2].asSet()] * would allow the receive method, with either 0 or 2 arguments, to be forwarded. **/ def makeFacet(target, allowedMethods) { def filteringFacet { match [verb, args] { if (allowedMethods.maps(verb) && allowedMethods[verb].contains(args.size())) { return E.call(target, verb, args) } } } return filteringFacet } def chatController def chatFacet := makeFacet(chatController, ["receive"=>[1].asSet(), "receiveFriend"=>[1].asSet()])
Facets of this type can be retrofitted onto an existing system. We did this with very little effort for minChat with the chatFacet, but the technique works for far more complicated problems as well. The capability-secure windowing toolkits that E has placed on top of Swing and SWT uses facetization as the main tool.
Facets can be made much more sophisticated in their restrictions on access to their underlying object. You can make a facet that logs requests and sends email when certain methods are called. In an SEC-regulated stock exchange facet, you might wish to grant the capability to make a trade only from 9:30AM to 4PM excluding weekends and holidays.
One interesting example is the use-once facet, which allows the holder of the facet to use the facet only one time. For example, this version of a chatReceiver only allows a single message to be sent:
# E sample def onceOnlyReceiver(baseChatController) { var chatController := baseChatController def onceOnlyReceiver { to receive(text) { chatController.receive(text) chatController := null } } }
This version will throw an exception back to the sender of a second message.
It can be tempting in a facet to suppress a couple of powerful methods in the underlying powerful object and delegate the rest.
# E sample def powerfulObject { to doPowerfulOperation() { #do powerful operation } to doWeak1() {} to doWeak2() {} to doWeak3() {} #.... to doWeak99() {} } def badFacet extends powerfulObject { to doPowerfulOperation() { #do nothing, no forwarding for the powerful operation, but forward everything else } }
Avoid this. For a facet to remain secure during maintenance, it should never just delegate by default. If a new method is added to a powerful object (in this example, suppose powerfulObject is updated with a new method, doPowerful2()), it should not be exposed through the facet by default: rather, the facet must by default not expose it.
This risk can be exhausting to avoid, but it is always dangerous to accept. The first version of the capability windowing toolkit on Swing suppressed the handful of dangerous methods in the Java version 1.3 of Swing rather than explicitly allowing the safe methods, of which there were thousands. Within 30 days, the entire system was broken: the Java 1.4 Beta included hundreds of new, security-breaking methods. The only saving grace was that we had always known that the first version, thrown together in haste on weekends, was just a proof-of-principle and would have to be replaced. We just hadn't appreciated how soon replacement would be required.
Revocable Capabilities
If you wish to give someone restricted access to an object with facets, it is quite likely you will want to revoke access at some point as well.
The simplest way of making a capability revocable is to use a transparent forwarder that includes a revocation method:
# E sample def revocableCapabilityMaker(baseCapableObject) { var capableObject := baseCapableObject def forwarder { to revoke() {capableObject := null} match [verb, args] {E.call(capableObject, verb, args)} } return forwarder }
Note that, even though the forwarder is nominally delegating all method invocations (except revoke()) to the capableObject, we cannot use the extends keyword to capture the behavior. "Extends" creates an immutable reference, so the fact that the capableObject is a var wouldn't allow you to revoke the delegating behavior. Instead we use the match[verb, args] pattern.
Capability revocation, like facet forwarding, can be based on complex sets of conditions: revoke after a certain number of uses, revoke after a certain number of days. This example uses a simple manual revocation. Indeed, this version is too simple to work reliably during system maintenance and upgrade, and a more sophisticated pattern is generally recommended:
# E sample def makeCapabilityRevokerPair(baseCapableObject) { var capableObject := baseCapableObject def revoker { to revoke() {capableObject := null} } def forwarder {match[verb, args] {E.call(capableObject, verb, args)}} return [forwarder, revoker] } def powerfulObject { #...big powers } def [power, revoker] := makeCapabilityRevokerPair(powerfulObject)
In this pattern, the authority of the object and the authority to revoke are separated: you can hand the power to revoke to an object you would not trust with the authority itself. Also, the separate revoker can itself be made revocable.
Sealers and Unsealers
A sealer/unsealer pair makes it possible to use untrusted intermediaries to pass objects safely. Use the sealer to make a sealed box that can only be opened by the matching unsealer. E has built-in support for sealer/unsealer pairs:
? def makeBrandPair := <elib:sealing.makeBrand> # value: <makeBrand> ? def [sealer, unsealer] := makeBrandPair("BrandNickName") # value: [<BrandNickName sealer>, <BrandNickName unsealer>] ? def sealedBox := sealer.seal("secret data") # value: <sealed by BrandNickName> ? unsealer.unseal(sealedBox) # value: "secret data"
If you hold the unsealer private, and give the sealer away publicly, everyone can send messages that only you can read. If you hold the sealer private, but give the unsealer away publicly, then you can send messages that recipients know you created, i.e., you can use it as a signature. If you are thinking that this is much like a public/private key pair from public key cryptography, you are correct, though in E no actual encryption is required if the sender, recipient, brand maker, and sent object all reside in the same vat.
While the Brand is built-in, it is possible to construct a sealer/unsealer pair maker in E without special privileges. The "shared variable" technique for making the maker is interesting, and because the same pattern appears in other places (such as the Notary/Inspector, coming up next), we demonstrate it here:
# E sample def makeBrandPair(nickname) { def noObject{} var shared := noObject def makeSealedBox(obj) { def box { to shareContent() {shared := obj} } return box } def sealer { to seal(obj) {return makeSealedBox(obj)} } def unsealer { to unseal(box) { shared := noObject box.shareContent() if (shared == noObject) {throw("invalid box")} def contents := shared shared := noObject return contents } } return [sealer, unsealer] }
The variable "shared" normally contains the value "noObject", which is private to a particular sealer/unsealer pair and so could never the the actual value that someone wanted to pass in a sealed box. The unsealer tells the box to shareContent, which puts the content into the shared variable, from which the unsealer then extracts the value for the invoker of the unseal method. In a conventional language that used threads for concurrency control, this pattern would be a disaster: different unseal requests could rumble through, overwriting each others' shared content. But by exploiting the atomicity of operational sequences enabled by promise pipelining, this peculiar pattern becomes a clean solution for this, and several other security-related operations.
Vouching with Notary/Inspector
Suppose Bob is the salesman for Widget Inc. He persuades Alice to buy a widget. Bob hands Alice a Widget Order Form with a money-receiving capability. It is important to Bob that Alice use the form he gives her, because this particular form (which Bob got from Widget Inc.) remembers that Bob is the salesman who should get the commission. It is important to Alice that she know for sure that, even though she got the order-form from Bob, this is really a Widget Inc. order form, and not something Bob whipped up that will transfer her money directly to his own account. In this case, Alice wants to have Widget Inc. vouch for the order-form she received from Bob. She does this using an Inspector that she gets directly from Widget Inc. The Inspector is the public part of a notary/inspector pair of objects that provide verification of the originator of an object. To be vouchable, the orderForm must implement the startVouch method as shown here:
# E sample ####### Widget Inc. software ##### #vouching system #returns a private notary that offers a public inspector #throws problem if the object being vouched is not vouchable def makeNotary() { def nonObject {} def unvouchedException(obj) {throw(`Object not vouchable: $obj`)} var vouchableObject := nonObject def inspector { to vouch(obj) { vouchableObject := nonObject try { obj.startVouch() if (vouchableObject == nonObject) { return unvouchedException(obj) } else { def vouchedObject := vouchableObject vouchableObject := nonObject return vouchedObject } } catch err {unvouchedException(obj)} } } def notary { to startVouch(obj) { vouchableObject := obj} to getInspector() {return inspector} } return notary } #create Widget Inc's notary def widgetNotary := makeNotary() #Order form maker def makeOrderForm(salesPerson) { def orderForm { # .... methods for implementing orderForm to startVouch() {widgetNotary.startVouch(orderForm)} } return orderForm } #publicly available inspector object #(accessible through a uri posted on Widget Inc's web site) def WidgetInspectionService { to getInspector() {return widgetNotary.getInspector()} } ##### bob software ##### #scaffold for sample def getOrderFormFromBob() {return makeOrderForm("scaffold")} ########## Alice's software to vouch for the order form she received from Bob ##### def untrustedOrderForm := getOrderFormFromBob() def inspector := WidgetInspectionService.getInspector() def trustedOrderForm := inspector.vouch(untrustedOrderForm)
Proof of Purchase
"Proof of Purchase" is the simplest of a series of capability patterns in which the goal is not to transfer an authority, but rather to show someone that you have the authority so that they can comfortably proceed to use the authority on your behalf. In Proof of Purchase, the requester of a service is demonstrating to the server that the client already has capability that the server is being asked to use. Unlike the more sophisticated upcoming Claim Check patterns, the proof of purchase client is not concerned about giving the server an excess authority.
An interesting example of Proof of Purchase is Component.transferFocus(fromComponentsList, toComponent) found in the tamed Swing package. In standard Swing, the holder of any panel reference can steal the focus (with component.requestFocus()). Hence any keystrokes, including passwords, can be swiped from wherever the focus happens to be by sneaking in a focus change. This is a clear violation of POLA. You should be able to transfer focus from one panel to another panel only if you have references to both panels. If you have a reference to the panel that currently has the focus, then you can never steal the focus from anyone but yourself.
A natural-seeming replacement for component.requestFocus() would be requestFocus(currentFocusHolder). It was decided during the taming of Swing, however, that this would be breach-prone. If Alice transferred to Bob, not a panel itself, but rather a simple transparent forwarder on that panel, Alice could collect authorities to other panels whenever Bob changed focus.
Since we had a convenient trusted third party available that already had authority over all the panels anyway (the javax.swing.Component class object), we used the "proof of purchase" pattern instead. The globally available Component.transferFocus method accepts two arguments:
- a list of panels that the client believes to contain, somewhere in their subpanel hierarchies, the focus
- the target panel that should receive the focus
In the common case where a whole window lies inside a single trust realm, the client can simply present a reference to the whole window and be confident that the focus will be transferred.
The interesting thing about Component.transferFocus is that the recipient does not actually need the client's authority to reach the component that already has the focus. The Component class already has that authority. The client must send the authority merely to prove he has it, too.
Basic Claim Check
A common activity that brings security concerns into sharp focus is the delicate dance we perform when we use a car valet service. In this situation, we are handing the authority over our most precious and costly possession to a teenager with no more sense of responsibility than a stray cat. The whole valet system is a toothsome exercise in POLA.
In this example, we focus on the sequence of events and trust relationships involved in reclaiming our car at the end of the evening. The participants include the car owner, the valet service itself, and the random new attendant who is now on duty.
We have already chosen, for better or for worse, to trust the valet service with a key to the car. As the random new attendant comes running up to us, we are reluctant to hand over yet another key to the vehicle. After all, this new attendant might actually be an imposter, eager to grab that new Ferrari and cruise out over the desert. And besides, we already handed the valet service a key to the car. They should be able to use the key they already have, right?
Meanwhile, the attendant also has a trust problem. It would be a career catastrophe to serve up the Ferrari from his parking lot if I actually own the dented 23-year-old Chevy Nova sitting next to it.
In the physical world, we use a claim check to solve the problem. We present to the attendant, not a second set of car keys, but rather, a proof that we have the authority that we are asking the attendant to use on our behalf.
# E sample def claimMgr := { def carKeys := [].asMap().diverge() def claimMgr { to makeClaim(car) :any { # the claim object has no interesting # properties except it has # a unique unforgeable identity def claim {} carKeys[claim] := car return claim } to reclaim(claim) :any { def car := carKeys[claim] carKeys.removeKey(claim) return car } } } def attendant { #return a claim check when car is parked to parkCar(car) :any { # ...code to park the car... return claimMgr.makeClaim(car) } to retrieveCar(claim) :void { def car := claimMgr.reclaim(claim) # ...code to retrieve car... # no need to return the car reference, the owner of the claim # presumably already has such a reference } } def car {} def carOwner := { var claim := null def carOwner { to letAttendantParkCar() :void { claim := attendant.parkCar(car) println(claim) } to getCarFromAttendant() :void { println(attendant.retrieveCar(claim)) } } } carOwner.letAttendantParkCar() carOwner.getCarFromAttendant()
Basic Claim Check Default Behavior
Suppose the owner of the car loses the claim check. He can still prove he owns the car by presenting another key. In software, this situation would be comparable to the situation in which the owner hands the attendant a direct reference rather than handing the attendant merely the claim check. The car owner has violated his own security, but it is hard to visualize situations in which this is not a reasonable argument to pass to express his desire. We can cover this case with a small modification to the claimMgr's reclaim method:
to reclaim(claim) :any { try { def car := carKeys[claim] carKeys.removeKey(claim) return car } catch prob { if (carKeys.contains(claim)) { return claim } else {throw(prob)} } }
What should the claimMgr return if the carOwner hands in a car reference for reclaim, if the car is not actually in the claimMgr's parking lot? The answer depends on the application, but such a situation violates the expectations of all the participants sufficiently that throwing an exception seems the safest choice.
NonTransferable Claim Check
We are far from done with claim checks. A careful car owner will not actually hand his claim check to the parking lot attendant. Rather, he will merely show the claim check to the attendant. After all, if you hand the claim check over to an imposter, the imposter can turn around and hand the claim check to a real attendant, pretending that he is the owner of the car.
The problem is somewhat different in cyberspace. The good news is, in cyberspace the attendant doesn't return a reference to the car just because you hand him the claim check. Instead, he merely performs the action you ask of him with the car. This set of actions is limited by the attendant's willing behavior. So the claim check is not as powerful a capability as the car itself. But it can still be a powerful capability. And the bad news is, in cyberspace, you can't just "show" it to the attendant. You have to give it to him.
Here we demonstrate a "nontransferable" claim check. This claim check can be handed out at random to a thousand car thieves, and it does them no good. The trick is, before handing over the claim check, the owner inserts into the claim check a reference to the individual he is treating as an attendant. The ClaimMgr compares the person to whom the owner handed the claim, with the attendant who eventually hands the claim to the claimMgr . If these two people are the same, then the owner handed the claim directly to the attendant. Otherwise, there was an intermediary party, and the request should not be honored.
# E sample def makeBrandPair := <elib:sealing.makeBrand> def valetService := { def [claimSealer, claimUnsealer] := makeBrandPair("claim") def claimMgr { to makeClaim(car) :any { def transferableClaim { to makeNontransferableClaim(intendedRecipient) :any { return claimSealer.seal([car, intendedRecipient]) } } return transferableClaim } to reclaim(claim, actualRecipient) :any { def [car, intendedRecipient] := claimUnsealer.unseal(claim) if (actualRecipient == intendedRecipient) { return car } else {throw("claim not transferable, invalid attendant")} } } def valetService { to authorizeAttendant(attendant) :void { attendant.setClaimMgr(claimMgr) } } } def makeAttendant() :any { def claimMgr def attendant { to setClaimMgr(mgr) :void {bind claimMgr := mgr} to parkCar(car) :any { # ...code to park the car... return claimMgr.makeClaim(car) } to retrieveCar(claim) :void { def car := claimMgr.reclaim(claim, attendant) # ...code to retrieve car... # no need to return the car reference, the owner of the claim # presumably already has such a reference } } return attendant } def legitAttendant := makeAttendant() valetService.authorizeAttendant(legitAttendant) def carThief { to parkCar(car) :any { return println ("Ha! stole the car") } to retrieveCar(claim) :void { try { legitAttendant.retrieveCar(claim) println("Ha! didn't get car, but got control") } catch prob {println(`rats! foiled again: $prob`)} } } def carOwner := { def car{} var claim := null def carOwner { to letValetPark(attendant) :void { claim := attendant.parkCar(car) println(claim) } to letValetRetrieve(attendant) :void { def noTransferClaim := claim.makeNontransferableClaim(attendant) println(attendant.retrieveCar(noTransferClaim)) } } } carOwner.letValetPark(legitAttendant) carOwner.letValetRetrieve(carThief) carOwner.letValetRetrieve(legitAttendant)
Note an important implication in this pattern: the ClaimMgr winds up in a position to accumulate references to all the entities a claim check holder treats as an attendant. In this example, the ClaimMgr gets a reference to the carThief as a result of the carOwner's casual handing out of claim checks. It seems unlikely that the ClaimMgr can harm the carOwner's interests with this reference, but in other circumstances the reference may not be so harmless. To reduce our risk exposure to the alleged attendants to whom we hand the claim check, we have increased our risk exposure to the ClaimMgr.
Note also the limitations on the nontransferability of this pattern. The carOwner can still transfer authority, either by handing someone a reference to the car, or by handing out the transferableClaim from which nontransferableClaims can be made. The nontransferability is voluntarily chosen by the carOwner. You can't prevent people from delegating their authority, and even this pattern doesn't change that fact.
Oblivious Claim Check: Loan Officer Protocol
Voluntary Oblivious Compliance, or VOC, was pioneered by the Client Utility System. VOC is a field only recently recognized by the capability-security community as an important area of exploration; the claim check patterns here are early fruit of that research.
Let us consider a somewhat different problem. Suppose that different attendants are trusted to handle different cars by the valet service. One valet has a motorcycle license and parks all the Harleys. Another has a multi-engine pilot's license and parks all the Boeing 747s. Of course, the one with the motorcycle license is a teenager who has always wanted to try his hand at parking a 747, and knows his lack of experience is not a problem. In this situation, each attendant has a different set of authorities at his command; just because you hand your claim check to a legit attendant doesn't mean the valet service thinks it would be a good idea to let that attendant drive your vehicle. A more generalized way of stating the problem is, in this case the authorities of the individual receivers of the claim checks vary, and management of the individual receiver's authorities is beyond the scope of what the ClaimManager should be trying to figure out. After all, the individuals know all their own authorities; it would be poor design (and unmaintainable at scale) for the ClaimManager to try to duplicate this information.
This situation, while not a part of the real-world valet service problem, has a significant area of application in cyberspace. This area is Voluntary Oblivious Compliance, or VOC. Let us consider a more sensible example. Alice works for HPM, and Bob works for Intil. HPM and Intil are often competitors, but Alice and Bob are working on a joint project from which both companies expect to profit handsomely. The Official Policy Makers of HPM have identified a number of documents which can be shared with Intil, and indeed have forwarded to Intil references to the allowed docs. Alice wants to refer Bob to a particular HPM document, but only if sharing the document is allowed under the HPM policy. In this case, the VOCclaimCheck that Alice sends to Bob demands that Bob demonstrate to HPM's ClaimMgr that he already has authority on the document before fulfilling the claim. To prove his authority, Bob sends to the ClaimMgr all the HPM doc authorities he has (i.e., the list of docs HPM handed to Intil). Only if both Alice and Bob already have authority on the object does Bob get the document. This is sometimes called the Loan Officer Protocol, in reference to the old adage that a loan officer will not give you the loan unless you first prove that you don't need it.
Since bob can't get the reference unless he proves he doesn't need it, we can now see why this is a pattern of Voluntary Oblivious Compliance. It is voluntary, because Alice could just send Bob the document and circumvent the system. And it is oblivious, because Alice doesn't need to know whether a document can be shared with Bob before sending it.
Going back to the parking lot attendant who wants to park the 747, he has to demonstrate to the ClaimManager that he has the keys to the 747 before the Claim Manager will let him go for it. The owner of the 747 is much relieved.
Humorous as the 747 example might be, we will now switch to the scenario with Alice, Bob, HPM, and Intil for our sample code. The basic strategy is that the ClaimMgr not only examines the claim check from Alice, it also examines the list of authorities that Bob hands over to see if any of Bob's authorities match the one inside Alice's claim.
# E sample def makeBrandPair := <elib:sealing.makeBrand> def [claimSealer, claimUnsealer] := makeBrandPair("claim") def HPMDocClaimMgr { to makeClaim(doc) :any { return claimSealer.seal(doc) } to matchClaim(claim, listOfCandidates) :any { def doc := claimUnsealer.unseal(claim) for each in listOfCandidates { if (doc == each) {return each} } throw("No match from claimCheck to candidate auths") } } def intilSharedDocs := [def doc1{}, def doc2{}, def doc3{}] def bob { to lookAtHPMDoc(claim) :void { try { def doc := HPMDocClaimMgr.matchClaim(claim, intilSharedDocs) println(`reading doc: $doc`) } catch prob { println(`can't read: $claim`) } } } def alice { to sendDoc(doc, recipient) :void { def claim := HPMDocClaimMgr.makeClaim(doc) recipient.lookAtHPMDoc(claim) } } alice.sendDoc(doc2, bob) alice.sendDoc(def doc4{}, bob)
The oblivious claim check pattern can require scattering even more authority to the winds than the nontransferable claim check. The recipient of the claim check (bob) needs to have all the authorities that alice might give to him, rather than merely the ones she actually does give to him. And the trusted third party who matches the claim check against the list of possibilities (the HPMDocClaimMgr) gets to accumulate authority to everything that bob thinks alice might be trying to send him. In the example scenario, this is just fine. But some care is required.
Oblivious Claim Checks as Guards
An elegant style of using VOC claim checks is to set up the pattern as a pair of guards. Alice would use the ClaimCheck guard to send a reference to Bob, and Bob would use the CheckedClaim guard, with the list of candidate references, to receive the authority. We will show the implementation of the BuildGuards ClaimCheck and CheckedClaim guards in Advanced Topics when we talk about writing your own guards, but their usage would appear as follows:
# E syntax def bob { to lookAtHPMDoc(doc :CheckedClaim[intilSharedDocs]) :void { if (!E.isBroken(doc)) { println(`reading doc: $doc`) } else {println(`can't read: $claim`)} } } def alice { to sendDoc(doc, recipient) :void { recipient.lookAtHPMDoc(doc :ClaimCheck) } }
The ClaimCheck guard coerces the doc into a sealed representation of itself. The CheckedClaim guard unseals the claim and matches it against the authorities in the intilSharedDocs list. As a guard, it is better style to return a broken reference than to throw an exception if something goes wrong. In the parameter guard, if an exception were thrown, the recipient would have no chance to do anything with the problem, the exception would be thrown directly back to the sender before the recipient was even aware there was an issue.
Oblivious NonTransferable Claim Check
It is possible to make nontransferable oblivious claim checks as well. We leave the code as an exercise for the reader.
Powerbox Capability Manager
The powerbox pattern collects diverse elements of authority management into a single object. That object, the powerbox, then becomes the arbiter of authority transfers across a complex trust boundary. One of the powerbox's most distinctive features is that it may be used for dynamic negotiations for authority during operation. The less trusted subsystem may, during execution, request new authorities. The powerbox owner may, in response to the request, depending on other context that it alone may have, decide to confer that authority, deny the authority, or even grant the request authority after revoking other authorities previously granted.
The powerbox is particularly useful in situations where the object in the less trusted realm does not always get the same authorities, and when those authorities may change during operation. If the authority grant is static, a simple emaker-style authorization step suffices, and a powerbox is not necessary. If the situation is more complex, however, collecting all the authority management into a single place can make it much easier to review and maintain the extremely security-sensitive authority management code.
Key aspects of the powerbox pattern include:
- A powerbox uses strict guards on all arguments received from the less trusted realm. In the absence of guards, even an integer argument received from untrusted code can play tricks: the first time the integer-like object (that is not really an integer) is asked to "add", it returns the value "123"; but the second time, it returns the value "456", with unpredictable (and therefore insecure) results. An ":int" guard on the parameter will prevent such a fake integer from crossing into your realm.
- A powerbox enables revocation of all the authorities that have been granted. When you are done using a less trusted subsystem, the authorities granted to it must be explicitly revoked. This is true even if the subsystem is executing in your own vat and you nominally have the power to disconnect all references to the subsystem and leave the subsystem for the garbage collector. Even after being severed in this fashion, the subsystem will still exist for an unbound amount of time until the garbage collector reaches it. If the authorities it has received have not been revoked, it can surprise you with its continued operations, and continued use of authority. Not all kinds of objects in the Java API can be made directly revocable at this time, because an E revocable forwarder cannot be used in all the places where an actual authority-carrying Java object is required. For example, the untrusted object may want to create a new image from an url. The natural way of doing this would be to call the Java Icon class constructor with (url) as the argument. But if an E forwarder were handed to this class constructor, the constructor would throw a type exception. Different solutions to such impedence mismatches with the Java type system are required in different situations. For the icon maker, it might be acceptable to require that the untrusted object read the bits of the image from the url (through a revocable forwarder) and then convert the bits into an icon.
- A new powerbox is created for each subsystem that needs authorities from within your trust realm. If a powerbox is shared across initiations of multiple subsystems, the powerbox may become the channel by which subsystems can illicitly communicate, or the channel by which an obsolete untrusted subsystem can interfere with a new one. When the old untrusted subsystem is discarded, its powers must all be revoked, which necessarily implies that a new subsystem will need a new powerbox.
In the following example, the less trusted object may be granted a Timer, a FileMaker that makes new files, and a url. The object may request a different url in the course of operations, in which case the powerbox will ask the user for authorization on the objects's behalf; the old url is revoked, and the new one substituted, so that the object never has authority for more than one url at a time. The object that operates the powerbox may revoke all authorities at any time, or it may choose to revoke the Timer alone. Finally, the operator of this powerbox may, for reasons external to the powerbox's knowledge, decide to grant an additional authority during operations, an authority whose nature is not known to the powerbox.
# E sample # The authorized url may change during operations, so it is a var def makePowerboxController(optTimer, optMakeFile, var optUrl, optMakeUrl, makeDialogVow) { # In the revokers map, the object being revoked is the key, the revoker # is the value. Note it is the actual object, not the forwarder to the # object, that is the key. var revokers := [].asMap() # when a revokable forwarder is made, the revoker is automatically # placed in the map of revokers def makeRevokableForwarder(object) :near { var innerObject := object def revoker { to revoke() {innerObject := null} } revokers with= (object, revoker) def forwarder {match [verb, args] {return E.call(innerObject, verb, args)}} return forwarder } # makeFileFacet is exposed to less trusted realm; guard the path it receives # This simple file facet only supplies 2 methods that return immutables # If the file handed out mutable objects, such as streams, these would have # to be wrapped with revokableForwarders as well. def makeFileFacet(path :String) :near { def theFile := optMakeFile(path) def fileFacet { to getText() :String {theFile.getText()} to setText(text :String) {theFile.setText(text)} } return makeRevokableForwarder(fileFacet) } # makeFile is actually handed to the less trusted object # It is either null or a revokable forwarder for makeFileFacet # In other words, makeFile is a revokable maker of revokable file facets def makeFile if (optMakeFile == null) { bind makeFile := null } else { bind makeFile := makeRevokableForwarder(makeFileFacet) } # Like the file facet, this url facet only supports methods that return # immutables. def makeRevokableUrlFacet(optUrl) :near { if (optUrl == null) { return null } else { def urlFacet { to getBytes() :pbc {optUrl.getBytes()} } return makeRevokableForwarder(urlFacet) } } # Return a vow for a new url # Use dialog with user to determine if new url should be granted # Vow resolves to null if anything goes wrong def makeRevokableUrlVow := { def makeUrlVow(requestedUrl :String, why :String) :vow { def urlDialogVow := makeDialogVow("Url Request", `<html> Confined Object requesting url for this reason:<p>$why </html>`, requestedUrl, ["Grant", "Refuse"]) return when (urlDialogVow) -> { if (urlDialogVow.getButton() == "Grant") { optUrl := optMakeUrl(urlDialogVow.getText()) makeRevokableUrlFacet(optUrl) } else {null} } catch prob {null} } return makeRevokableForwarder(makeUrlVow) } var caps := [].asMap() caps with= ("TIMER", makeRevokableForwarder(timer)) caps with= ("FILEMAKER", makeFile) caps with= ("URL", makeRevokableUrlFacet(optUrl)) def powerbox { # any of these capabilities may be null, i.e., all are optional # in a powerbox, strictly at the whim of the powerbox operator # who created the powerboxcontroller and the powerbox to optCap(key :String) :any {return caps.get(key, null)} # When the less trusted object requests a new url, the # old url is immediately revoked, and the promise for the # new url is substituted # If the powerbox has revokedAll, any attempt to requestUrl # will throw an exception back to the untrusted object # The "why" parameter is the less trusted object's justification # for needing the url to requestUrl(requestedUrl :String, why :String):vow { if (optUrl != null) {revokers[optUrl].revoke()} def revokableUrlVow := makeRevokableUrlVow(requestedUrl, why) caps with= ("URL", revokableUrlVow) return revokableUrlVow } } def powerboxController { to revokeAll() { for each in revokers {each.revoke()} } to revokeTimer() {revokers[timer].revoke()} # Confer an additional capability during execution to conferCap(key, cap) { caps with= (key, makeRevokableForwarder(cap)) } to getPowerbox() {return powerbox} } } # now, show how to create a powerbox and hand it to an untrusted object def makeUntrustedObject(powerbox) { def timer := powerbox.optCap("TIMER") def urlVow := powerbox.requestUrl("http://www.skyhunter.com") def untrustedObject { #... } return untrustedObject } def powerboxOperator() { def makeDialogVow {#...construct dialog vow } # use real objects, not nulls, in typical operation, though nulls are valid arguments def controller := makePowerboxController(null, null, null, null, makeDialogVow) def powerbox := controller.getPowerbox() def untrusted := makeUntrustedObject(powerbox) # later, confer an additional authority def special controller.conferCap("SPECIAL", special) # when done with the untrusted object, revoke its powers controller.revokeAll() }
Both the file facet and the url facet restrict the user to methods that return immutables. If these facets returned mutables, like streams, then those mutables would also have to be wrapped in revokable forwarders. In the general case, this requires the use of a membrane. write section on membranes, and link
This section is not yet done
We start with an revokable forwarder such as this one:
pragma.syntax("0.9") def makeRevokableForwarder(obj) :any { var target := obj def revoker { to revoke() { target := null } } def forwarder { match [verb, args] { if (target == null) { throw("Capablitiy revoked: " + verb) } else { return E.call(target, verb, args) } } } return [revoker, forwarder] }
But there is an proplem: The forwarder leaks authority by allowing ocaps through without wrapping them in revocable forwarders. What if each revocable forwarder wrapped the calls arguments and return value?
def makeWrappingRevocableForwarder(obj) :any { var target := obj var revokers := [].diverge() def revoker { to revoke() { target := null for item in revokers { item <- revoke() } } } def forwarder { match [verb, args] { if (target == null) { throw("Capablitiy revoked: " + verb) } else { var wrappedArgs := [].diverge() for item in args { var f, r := makeWrappingRevocableForwarder(item) revokers.push(r) wrappedArgs.push(f) } var r := E.call(target, verb, wrappedArgs.snapshot()) return makeWrappingRevocableForwarder(r) } } } return [revoker, forwarder] }
Okay, now we closed that authority leak but introduced an other proplem.
Can you spot it?
We get wrapped wrappingRevocableForwarders at each invocation through any of the forwarders made by makeWrappingRevoableForwarder. So no wonder the system would feel sluggish.
And instead of using this long unwieldy name we should just call it what it is: an membrane.
def makeMembrane() :any { var forwarders := [].asMap().diverge() var revokers := [].asMap().diverge() def membrane { to wrap(obj :any) :any { if (forwarders.maps(obj)) { # we already have an forwarder for this object return forwarders[obj] } if (forwarders.contains(obj)) { # no need to make an forwarder for an forwarder of the same membrane return obj } var target := obj def revoker { to revoke() { target := null } } def forwarder { match [verb, args] { if (target == null) { throw("Capablitiy revoked: " + verb) } else { var wrappedArgs := [].diverge() for item in args { wrappedArgs.push(wrap(item)) } return wrap(E.call(target, verb, wrappendArgs.snapshot())) } } } forwarders[obj] := forwarder revokers[obj] := revoker return forwarder } to revoke_all() :null { for item in revokers { revokers[item] <- revoke() } } } return membrane }
Petnames and Forgery among partially trusted participants
E's encrypted authenticated references ensure that random attackers get no traction trying to break into your distributed system. As mentioned in the earlier minChat audit, this means that all interesting break-ins will be made by "insiders", i.e., people who have been granted some capabilities inside your system. We have talked so far about low-level attacks that attempt to acquire or use inappropriately conveyed authority. At a higher conceptual level, people can try to present themselves as someone else and get your user to intentionally, but erroneously, grant other information or capabilities.
minChat dodged this problem because it is a 2-person chat system: the person at the other end of the line will have difficulty convincing your user he is someone else, because your user knows the one and only person given the URI (because he used PGP encryption as described earlier to ensure that only one person got it). But in a multi-person chat system, Bill could try to pretend to be Bob and lure your user into telling him Bob's secrets.
There is no single all-purpose solution to this risk. However, one critical part of any specific solution must be this: Do not allow the remote parties to impose their own names for themselves upon your user.
The general solution is to use petnames, i.e., names your user chooses for people, regardless of how those people might name themselves. Of course, it is reasonable to allow the other people to propose names to your user (called nicknames), but the user must make the final decision. The user must also be able to change her mind at a later date, when her list of participants grows to include not only Bob Smith but also Bob Jones, and she must disambiguate the pet name "Bob" she had for Smith.
The general layout of such a petname setup might be as follows:
Petname: Nickname: minChat facet URIs: Bob Bobby <uri given to Bob Smith> Bob J Da Oyster <uri given to Bob Jones> Mallet Bobby <uri given to Mallet the Cracker>


text:
Enterprise mobility is not a new concept. IT has delivered email and other information to mobile devices for a while now. That said, the devices that make up today's enterprises are no longer fully known and controlled.With BYOD, mobility has introduced both risks and opportunities within the enterprise, driving IT to adopt mobility strategies and solutions that can keep pace with these vulnerabilities.
Device security and trust are not only main concerns for IT, but for users as well (albeit in different ways). Enterprise mobility management (EMM) solutions help IT ensure that data is delivered safely across devices and that consumers are offered the privacy and personalization of features that they crave.Yet, as we see time and time again with things like shadow IT, users don't always have the same level of appreciation for, or understanding of, why we need (and should love!) device management tools.
In this slideshow, Manoj Raisinghani, vice president, global product marketing, mobile platforms group at Citrix, has distilled consumer perceptions vs. the reality of enterprise mobility.
Related Topics : In Their Own Words: The Four Dark Horses for the Third Major Mobile OS Speak, HTC, Mobile Search, 3G, Location-Based Services
Wearables are revolutionizing the workplace, with innovations that create a safer work environment or enhance the way professionals are able to go about their job. ... More >>
Here are the top 10 strategic technology trends that will impact most organizations in 2017. Strategic technology trends are defined as those with substantial disruptive potential or those reaching the tipping point over the next five years. ... More >>
Digital innovation is by far the biggest influencer, changing the way we do just about everything, from shopping to communication to running a business. ... More >>


text:
Chrissy Teigen sent an odd Christmas message to her Instagram followers this year.
On Christmas day, the 28-year-old model posted a prank video of her husband John Legend grabbing her by the throat as she wished "Merry Christmas" to her fans. She later pretends to be distressed and asks for help as the pair fake fights on camera.
While Teigen meant to post the clip as a joke, she later removed the clip from Instagram after receiving worried comments from her followers.
This is the second time Teigen takes her Instagram posts a bit too far this year. In October, the model came under fire after sharing a vulgar video where she introduced her over 300,000 followers to the "vagina raspberry."
In the clip, Teigen is seen blowing a raspberry into a fellow model's crotch as a third person introduces the term.
[The Daily Mail]


text:
Ricky Gervais might have indeed "warned" the Hollywood Foreign Press Assn. that he'd pull no comedic punches and spare none of Hollywood's sacred cows in reprising his hosting role on the 68th Golden Globes broadcast.
Nonetheless, a visible contingent in the glitzy crowd Sunday night was palpably discomfited by the British comic's full-frontal joke assault, which set a corrosive tone for this year's ceremony that was reflected by both onstage repartee and in backstage opprobrium.
Gervais' opening remarks — which snark-blog Gawker dubbed "one of the most unrelentingly harsh and uncomfortable monologues in awards show history" — skewered 64-year-old Cher's status as a senior citizen, needled 84-year-old Hugh Hefner as "the walking dead" and made mincemeat of the critically drubbed ( yet Golden Globe-nominated) Angelina Jolie- Johnny Depp heist-thriller "The Tourist."
But that was only a warm-up. He went on to question the sexual orientation of high-profile entertainment industry Scientologists and — talk about biting the hand that feeds — suggested that the HFPA had accepted bribes (as a recent lawsuit has alleged).
After he introduced Robert Downey Jr. as someone better known for his stays "at the Betty Ford Clinic and the L.A. County Jail" than for his movie roles, the "Iron Man" star felt compelled to address the situation.
"Aside from the fact that it's been hugely mean-spirited with mildly sinister undertones, I'd say the show's going pretty good so far, wouldn't you?" Downey asked.
Among Gervais' other victims: Bruce Willis (" Ashton Kutcher's dad") and HFPA President Philip Berk ("I had to help the HFPA president off the toilet and pop his teeth back in!")
In a moment that made light of the HFPA's decision to disqualify Gervais' comedy "The Invention of Lying" from Globes contention last year, though, Berk gave the star of the English version of "The Office" back as good as he got: "Ricky, the next time you want someone to qualify your movies, go to another guy," Berk fired back in accented English.
While attendees such as Guy Pearce and Sean "Diddy" Combs heartily endorsed the comedian's low blows — "I think he's doing an excellent job," Combs exclaimed, "I'm really enjoying it!" — certain presenters hedged their bets with mixed praise. "He's been terribly nasty and horribly rude and I think he's genius," said "The Social Network" co-star Andrew Garfield. But some guests, including veteran Hollywood producer Richard D. Zanuck, could hardly suppress their disdain for Gervais' performance.
"It's one thing if it's just the people in the room, but on a broadcast it makes you feel bad for some of the people," said Zanuck, producer of "Alice in Wonderland" whose movie successes date back to "The Sound of Music." "I know it's what some people want, but I still feel bad."
About two-thirds of the way through the broadcast, the Twitter trending topic #freerickygervais gained popularity with many responders pondering whether the comedian had been ordered to tone his act down by either the show's producers or the HFPA. "ok seriously people, Ricky is being held somewhere and tortured for crimes against Hollywood," a tweeter going by the handle @aussuze posted Sunday.
Backstage, Downey, a recovering addict who spent a number of years as the punch line to the kind of barbs now directed at Charlie Sheen, elaborated on his earlier remarks. "I think it's great to be funny, but it's just better if you can do it without hurting people," Downey said.
Toward the end of the Globes ceremony, presenters Tom Hanks and Tim Allen got in on the Gervais bashing.
"We can recall back when Ricky Gervais was a slightly chubby but very kind comedian," Hanks said.
"Neither of which he is now," Allen added quickly.
In an interview last month with the Los Angeles Times about hosting, Gervais said: "I quite like people hating what I do. I quite like the fact that some people hate me so much they don't sleep, they make themselves ill."
Asked in the event's interview room point blank if he'd hire Gervais to host again next year, Berk issued a nondenial that spoke volumes. "No comment," he said.
Times staff writer Nicole Sperling and Gina McIntyre contributed to this report.


text: Hairstylists Magazine | GLOBElife ♦ COMPANY Hair CareBeautyPrivate Label hairstylists EQUIPMENT & DESIGN Hairstylists AccessoriesHairstylists Furniture BUSINESS Italy Hair DistributorsWorld Hair Wholesalers ACADEMY Training for HairstylistsTraining CD/DVD on SaleFranchising for Hairstylists TODAY IN THE WORLD Exhibition for Hairstylists TOP HAIRSTYLISTS Top 100 Hairstylists ItalyTop Hairstylists U.S.A.Top Hairstylists U.K.Top Hairstylists ESTop in the WORLD HAIR SALONS Hair Salons in ItalyHair Salons in the World AU - BE - BR - CA CH - DE - EN - ES FR - IT - NE - US BEAUTY INSTITUTES Beauty Institute Addresses SERVICES Section for HairstylistsHairstylists MagazineMarket ResearchHerbs & HairHair Lexicon X Home Page privacy SERVICES - Hairstylists Magazine AH MagazineHairdressing hair magazine with new hair cuts and hairdo images ALTERNATIVE HAIR MAGAZINEAlternative Hair Magazine - Legends 2012 asian beauty bizThe Specialist Business Magazine catering to Beauty, Cosmetics and Health BEAUTY BAZARProducts for hair and hair accessories BEAUTY BAZAR 2018 BEAUTY BAZARProducts for hair and hair accessories BEAUTY BAZAR 2015 BEAUTY BAZAR - Photo ShootingTONE ON TONE coloring hair - shampoos for hair dye BEAUTY BAZAR - Speciale Novita Cosmoprof 2018Beauty Bazar 2018 - Speciale Novit? Cosmoprof 2018 Beauty Bazar fashionhairdressers magazine, beauty fashion bazaars, latest hair cuts fashion, breaking new hair, new hair bq magazineJOURNAL BQ MAGAZINE - new hairstyles magazine hair fashion Aesthetics - New hair cuts hair hairstyles bq trendJOURNAL BQ TREND - new hairstyles magazine hair fashion Aesthetics - New hair cuts hair stylists Cosmetics in RUSSIAHair magazine specializing in cosmetics marketing, beauty and hair fashion CUBEimages of Hair Fashion - hair cuts photos news CUBEimages of Hair Fashion - hair cuts photos news CUBEimages of Hair Fashion - hair cuts photos news CUBEimages of Hair Fashion - hair cuts photos news CUBE SOLO MODA 2010880 images of hair fashion by the best hair stylists in the world Edicola - News StandThe newspaper kiosk daily Corriere della Sera, La Repubblica, Il Sole 24 Ore, Il Messaggero, Libero, L'Unitŕ ESTILOSESTILOS | Magazine for hairdressers and beauticians - Photographs of hair fashion GOSSIP e NEWSINTERCHARM MILANO INTERNATIONAL FAIR 7-8 October 2012 Magazineon line gossip and news regarding hair fashion, beauty and body care granchichairdressers magazines, poster display, photo cuts hair for men, women, children, photo album fashion, hair, health, beauty salons, hair fashion photos, hair, beauty, hair products sales, instant hair, baldness cure, hair loss, made in italy HAIR AND STYLEHair fashion and aesthetics magazine - Hair cuts images hair fashion imagesHaircut, hair fashion, fashion designers, hair, hair photos Hair MagazineMagazines hairdressers | hair magazine | Magazine hair cut | magazine hairfashion HME HOMBRE MagazineHairdressers magazine - Aesthetics Periodical - Beauty news - Hair cuts photos IHF MAGAZINEThe Italian fashion hair and the best foreign designers Intercoiffure MondialIntercoiffure mondial - hair fashion and aesthetics magazine - Newspaper hairstyles - hairstyles trends news News 2010 LH - La HorquillaMagazine pictures of hairstyles with fashionable hairstyles LnenailManicure Pedicure magazine - Reconstruction nails MODERN SALONHair fashion magazine - aesthetic beauty magazine news_2010All the latest news on products, accessories and furnishings for hairdressers and beauticians PARRUCCHIERI CAMPANIMagazines hair, new hairstyles, beauty, aesthetics, fashion, hair PrincePRINCE - Review of male hairstyles and hair fashion aesthetics - New hairstyles hair cuts hair QUEEN InternationalWomen Hair Magazine - Aesthetics Hairstyle Fashion REVISTA CABELEIREIROSBrazilian hairdo magazine and fashion trends SALON HAIR MAGAZINEHair and beauty magazine - Magazine fashion hair stylists SalubeliaMagazine for hairdressers | GLOBElife | SALUBELIA | Beauticians - Hair fashion photos Stampa & RivistePrint Magazines and hairdressers | hair magazine | Manuals hair products STYLING MAGAZINEHair styling magazine - New hairdo - Hairdressers Beauty periodical TENDENZAHair fashion and beauty - Periodical hair fashion TOCADOHairdressers and hair fashion - Hairmagazine TOP HAIRSTYLISTSGuide to the best hairdressers in Italy, Trentino Alto Adige. TOP HAIRSTYLISTS TOP HAIRSTYLISTS 2010Guida ai migliori parrucchieri d'Italia UNIPROThe numbers of cosmetics - April 2010 Contattaci Subito Newsletter Gossip e News Beauty Bazar GLOBENews E-commerce Globelife TV - Internet television youtube/globelifeTV Hairfashion Gallery App hair Beauty News Hair cafe Encyclopaedic hair website HomePage privacy policy


text:
LEWISTON, Maine – Returning to action after ending 2010 as one of the top overall programs in the country, the MIT women's track and field team picked up where it left off, registering a pair of dominant wins over Bates College and Colby College on Saturday afternoon. The Engineers, who earned top 10 finishes at both the Indoor and Outdoor NCAA Division III Championships a year ago, outscored runner-up Bates, 216.5-85.5 while Colby was third with 76 points.
Portia Jones led the way for the Cardinal and Gray, who won 13 out of 18 events. Jones was the first across the finish line in the 55-meter dash, the 55-meter hurdles and the 200 meters. Jones' time of 8.60 seconds in the 55HH was just 0.05 seconds off the NCAA provisional qualifying standard.
Karin Fisher cleared 12-2.00 feet in the pole vault to win the event and achieve the NCAA provisional qualification. Hazel Briner was second in the event with a 11-7.75 foot vault and Lauren Kuntz (11-1.00 feet) took third. Briner would also take first in the long jump (16-6.50 feet).
In her first varsity collegiate competition, Megan Bumgarner, earned a surprise victory in the high jump, tying the MIT record with a leap of 5-1.75 feet. Jacqueline Brew (34-5.50 feet) and Amy Magnuson (34-1.50) swept the top two spots in the triple jump, as Magnuson, the former All-American, returned after missing all of 2010 with an injury.
Briner, Magnuson and Brew combined with Jones and Jaclyn Konopka to sweep the top five of the 55-meter hurdles as well.
Other individual event wins were provided by Bumgarner (1:03.76) in the 400 meters, Jamie Simmons (1:42.64) in the 600, Anna Holt-Gosselin (5:19.59) in the mile and Alina Gatowski (10:29.67) in the 3000 meters.
Tech also swept the relays, taking first in the 4x400 (4:16.74), 4x200 (1:54.46) and Distance Medley Relay (13:10.08).
The Engineers will return to action at next weekend's Springfield College Invitational on Saturday, January 22 beginning at 12:30 p.m.


text:
Faculty Directory
Alan Mantooth
Distinguished Professor, The Twenty-First Century Research Leadership Chair in Engineering
Department of Electrical Engineering
College of Engineering
(ELEG)-Electrical Engineering
Phone: 479-575-4838
Email: email@example.com
Dr. Mantooth (S'83 - M'90 - SM'97 – F'09) received the B.S. (summa cum laude) and M. S. degrees in electrical engineering from the University of Arkansas in 1985 and 1986, respectively, and the Ph.D. degree from the Georgia Institute of Technology in 1990. He joined Analogy in 1990 where he focused on semiconductor device modeling and the research and development of HDL-based modeling tools and techniques. Besides modeling, his interests include analog and mixed-signal IC design and power electronics. In 1996, Dr. Mantooth was named Distinguished Member of Technical Staff at Analogy (now owned by Synopsys).
In 1998, he joined the faculty of the Department of Electrical Engineering at the University of Arkansas, Fayetteville, as an Associate Professor. He has received numerous teaching, service, and research awards since returning to the UA. He was also selected to the Georgia Tech Council of Outstanding Young Engineering Alumni in 2002, and the Arkansas Academy of Electrical Engineers in 2006. Dr. Mantooth was promoted to his present rank of Distinguished Professor in the Electrical Engineering Department in 2011. In 2003, he co-founded Lynguent, an EDA company focused on modeling and simulation tools.
Dr. Mantooth helped establish the National Center for Reliable Electric Power Transmission (NCREPT) at the UA in 2005, for which he serves as director. In 2006, he was selected as the inaugural holder of the 21st Century Endowed Chair in Mixed-Signal IC Design and CAD. Dr. Mantooth has published over 200 refereed articles on modeling and IC design. He holds patents on software architecture and algorithms for modeling tools and has others pending. He is co-author of three books and has served on several technical program committees for IEEE conferences.
He is currently serving the profession as Vice-President of Operations for the IEEE Power Electronics Society. Dr. Mantooth is a Fellow of IEEE, a member of Tau Beta Pi and Eta Kappa Nu, and registered professional engineer in Arkansas. Professor Mantooth serves as the Executive Director for NCREPT and GRAPES as well as two of its constitutive centers of excellence: the NSF I/UCRC on GRid-connected Advanced Power Electronic Systems (GRAPES) and the NSF EPSCoR Vertically-Integrated Center on Transformative Energy Research (VICTER). He also serves as the Director of the NSF EPSCoR GREEN Center for Nanoplasmonic Solar Cell Research.
- Electronics I
- Electronics II
- Senior Design
- Modeling and Simulation of Mixed-Signal Circuits and Systems
- Power Semiconductor Devices
- Analog & Mixed-signal Circuit Design
- Analog CAD
- Semiconductor Device Modeling
- Power Electronics
- B.S., Electrical Engineering, University of Arkansas
- M.S., Electrical Engineering, University of Arkansas
- Ph.D., Georgia Institute of Technology