Home Blog Page 56

Grounded in Clay: The Met’s First Community-Curated Native American Exhibition

0
Arroh-a-och | Laguna Storage jar c. 1870–80 Clay and paint 20 1/4 x 24 1/2 in. (51.4 x 62.2 cm) Indian Arts Research Center of the School for Advanced Research
Grounded in Clay: The Spirit of Pueblo Pottery is the First Community-Curated Native American Exhibition at The Met, on view at both the Museum and the Vilcek Foundation now until June 4, 2024.

In a far corner of the first floor of the Met, just past the atrium of the American Wing and through a glass door, lies this small but intimate — and intense — collection of clay vessels, at last shown on their own terms. Rather than being placed within the typical Western concepts of art and history, here, more than 60 members of 21 tribal communities selected the pieces and wrote their descriptions, some of them in the first person.

From the project description: “The approach illuminates the complexities of Pueblo history and contemporary life through the curators’ lived experiences, redefining concepts of Native art, history, and beauty from within, confronting academically imposed narratives about Native life, and challenging stereotypes about Native peoples.”

At the entrance to the exhibit sits an enormous black jar by Lonnie Vigil from 1995. The text is by Nora Naranjo Morse (Kha’p’o Owingeh/Santa Clara), who begins, “When the clay calls, there’s no denying it . . .” She describes Vigil’s history, his process, and the knowledge passed down to him by Pueblo ancestors that enabled him to answer the call and to create such a vessel.

Panel discussion or talk at arts and literary event
Felipa Trujillo | Cochiti Mono figure c. 1966 Clay and paint 10 5/8 x 5 1/2 x 3 3/4 in. (27 x 14 x 9.5 cm) School for Advanced Research

Inside, a long case of other black vessels looks over a collection of water jars — one from San Ildefonso Pueblo and two from Tesuque Pueblo (ranging from 1860 to about 1920) —with curvy or geometric patterns in black on a light background. A Nahohal Tribute Pot (2016) and two Mono Figures (c. 1900 and c. 1966) have unglazed bits of terra cotta that act as a colorful accent. Another case of jars from several different tribes, the oldest dating from about 1880, shows the range these utilitarian objects could have. Nearby, a pair of unglazed, plain jars dating from around 1900 (Pueblo, Tortugas) show off the inherent appeal of the clay itself.

Story by Stephen Treffinger


Grounded in Clay Events at The Metropolitan Museum of Art

In honor of Indigenous Peoples Day on Mon., October 9, The Metropolitan Museum of Art is offering a number of free events.

First on Tue., October 10, Dr. Joseph “Woody” Aguilar (San Ildefonso) joins Russell Sanchez (San Ildefonso) for a Met Expert Talk. These talks give attendees a chance to get a deeper insight into on view galleries and works of art through untold stories from curators, scientists, conservators, and scholars.

Then, on Wednesday, Clarence Cruz (Ohkay Owingeh) visits the museum for another Met Expert Talk before a final Met Expert Talk with Elysia Poon (Indian Arts Research Center Director) and Tony Chavarria (Santa Clara) on Thursday. The day closes out with a Pueblo Community Panel titled Exploring Indigenous Ceramics.

Registration is required for events. Explore the events and save your space at groundedinclay.org/events.

A footer photo with a white background, one TABLE Magazine and subscribe info and button

Subscribe to TABLE Magazine’s print edition.

The Love of The Love Apple’s Family Meal

0
A group of chefs and staff members at Love Apple sit around a table filled with food and wine.

The mission at The Love Apple in Taos has always been to serve guests the finest seasonal local foods, organically grown by farmers and other friends, and intended to elevate good cheer and well-being. The same is true of the family meal, served before every dinner shift to the team that joyfully runs this revered restaurant, a group of employees who consider each other as family. 

“One of the reasons that we initially decided on a family meal is that we wanted to create a restaurant that people wanted to work at, and we wanted to create a family,” says The Love Apple founder and owner Jennifer Hart. “Most of us have worked together for over five years. We share our lives together.”

A Special Meal Each Shift

With the family meal, the staff also gets to share The Love Apple’s divine made-from-scratch regional home cooking. The dinner menu changes seasonally with nightly specials and might include such creative fare as Buttermilk Yellow & Blue Cornbread; Three Mushroom Walnut Pâté; Grilled Trout Wrapped in Corn Husks; and House-Made Potato Gnocchi — ethereal dishes that nurture and delight. (The food, along with the flawless service and rustic, romantic ambiance, is why many people consider The Love Apple to be one of the best restaurants in New Mexico.) The family meal, prepared by Chef Jenni Ford, is of the same caliber, equally delectable and nurturing as well as diverse.

“Jenni’s family meals are amazing,” Hart says. “She always has a salad and a main and she’s always trying to do something amazing, like steak and fajitas, tacos, and a delicious gluten-free vegetable lasagna, because so many people are gluten-free. It is challenging for Jenni because everyone has a different thing they cannot eat. One person doesn’t eat dairy, and another doesn’t eat meat.”

A plate of bison fajitas with calabacitas held at the dinner table.

This intimate restaurant, housed in the former Placitas Chapel built in the 1800s, is steeped in atmosphere and charm, with just 13 tables, (plus patio seating in the summer) hand-hewn vigas, distressed wood floors, elegant chandeliers, candlelight, fresh flowers, and other inviting details. Before the dinner guests arrive, a last-minute flurry of activity unfolds in the serene space, often as the family meal takes place. 

“The Love Apple’s staff meal looks different depending on the day,” says Manager Cheri Keil. “Most evenings, we are running around to put finishing touches on the dining room or throwing another log on the fire for our guests to walk into a cozy and welcoming space. Jenni takes care of us. She feeds us whole and hearty meals to get us through a shift… It’s not always glamorous but as we wait for our guests to arrive, you will find us chatting about specials or a fun and funky new wine.”

Time For Innovation

Often the team sits down together to catch up on what’s happening at the restaurant. “It’s the time when we talk about what’s new on the menu, what’s going on in the restaurant,” Hart says. “We’ll open a bottle of wine and analyze it.”

The Love Apple’s family meal also provides a place for the chef to innovate, creating new dishes that might be added to the menu. “It’s a good way to try out ideas without any judgment,” Hart says. “We encourage the chef to try different things and see what comes out of it, maybe a new sauce or something else.”

Kitchen staff prepare a family meal in the Love Apple kitchen with food everywhere.

Manager Cheri Keil enjoys the chance to sample those innovations. “It’s the time for our kitchen to get creative and try new ideas,” she says. But, she adds, it’s always a treat when Ford makes chicken enchiladas for everyone.

A Place To Connect

The family meal, served in restaurants around the world, gives employees sustenance as well as a sense of solidarity, as they bond over food before a busy dinner shift. With a sense of family already firmly in place at The Love Apple, the family meal just might resemble your meals at home—filled with laughter, stories, and delicious food, all of which deeply warm the heart.

“It’s just nice to sit down and enjoy a meal,” says Hart. “I mean, we work in the restaurant business, we should also enjoy wine and food. It’s nice to connect with everybody and be together. Everyone has kids, and we’re running around all day, so it’s nice to come in, sit down and relax, and enjoy a meal together.”

Story by Lynn Cline / Photography by Doug Merriam

A hand scoops out taco filling with a spoon. Various taco elements laid out on a chef's table, including tortillas, rice, potatoes, peppers, and more.

Subscribe to TABLE Magazine’s print edition.

Horno Restaurant, A Place For Family

0
The staff of Horno restaurant enjoy a fried chicken meal at a table in the restaurant with the owner.

The Spanish word for oven is horno. For those who have spent significant time in the Southwest, adobe hornos can be spotted outside family homes, largely dormant throughout the year until it’s time to bake traditional pueblo bread for feast or holidays. 

Like many cultures around the world, the oven, the hearth, or the kitchen are the center of family activity and gathering. For Heather and David Sellers, owners of Horno Restaurant, who have spent their lives in kitchens and restaurants, it’s also a place of inclusivity and access to exceptionally crafted food.    

Chef David prepares the fried chicken at a kitchen station for the staff meal.

How It All Started

Many may remember David from his tenure as chef at Santa Café before opening restaurant Amavi with his wife, Heather. Eventually, David would establish and run the Street Food Institute, a small-business incubator and social enterprise for food entrepreneurs. Heather received her degree in social work and worked with kids in Santa Fe schools. The couple opened Horno in June 2021. With their background in high-end restaurants and helping others through nonprofit work in New Mexico, the name perfectly captures their life’s work.   

“When we came up with the concept of Horno, we wanted to create a different model for Santa Fe: excellent quality food without being crushingly expensive. We have a lot of fine-dining experience, but we wanted it to be accessible to everyone,” says David. 

The Marcy Street restaurant, whose motto is “Food for the People,” is located in the former home of Il Piatto, which shuttered permanently after the pandemic. The interior transformed into bright uniformity with spare décor and warm wood accents. In simple terms, it can be described as inviting without pretension.

“We want the customer to feel like they’re walking into somebody’s house, have a family experience, and feel the love of the household,” says David.  

The Atmosphere of Horno

It is a vibe that matches its playful menu: grilled octopus and Iberico ham, burrata Panzanella salad, fish sandwich, bouillabaisse for two, and lemon curd cake. “I crafted my ability to make great food at a not very expensive price. The fine dining scene has changed over time. It’s not what it used to be.”

A kitchen staff member prepares a salad at the kitchen station.

Like most professional kitchens, where the outside world is tuned out by cascading voices, printing order tickets, and music, staff often becomes family by proximity, fate, or choice. And as one would imagine, Horno’s family meal is central to its culture.

The Horno Family Meal

“Family meal is super important to us,” says David. “Creating a family culture in the restaurant with the front and the back of the house is one of the most important things to have. I put a lot of effort into making that food good and nourishing. We always wanted our restaurant to be a family environment, not only with staff but with our guests. Every day, we make a family meal. We all sit down as a family and eat; we always care to make something special for everyone.” 

Once a month, David would prepare Southern-style fried chicken for a staff meal. Among his many other “duties as assigned” is managing the restaurant’s social media accounts. 

“I posted a picture of the fried chicken on social media and our regulars picked up on it and asked us to do it at the restaurant. I tried it, and now we do it every other Wednesday, and it’s a phenomenal success. It literally tripled our business on Wednesdays.” 

Restaurants are curious places. Staff can become family, and those you serve and support what you do in return create a bond. And in small towns like Santa Fe, where we connect with people from around the world, there’s universality in places like Horno where terms like “local” and “tourist” are erased with one stroke of a home-cooked meal meant to be enjoyed like family.

Story by Gabe Gomez / Photography by Tira Howard

A hand scoops out taco filling with a spoon. Various taco elements laid out on a chef's table, including tortillas, rice, potatoes, peppers, and more.

Subscribe to TABLE Magazine’s print edition.

Compound’s Exclusive Meal: The Family Spread

0
Owner Mark Kiffin pictured in the kitchen with a plate of tacos.
Owner Mark Kiffin

You’ve likely savored The Compound’s scrumptious Chicken Schnitzel, draped in a parsley lemon sauce and dotted with capers. Or perhaps you’ve relished the hearty slow-braised Osso Bucco, Grilled Heritage Pork Chop with pomegranate pork jus, or flavorful Bucatini with Maine Lobster Tails. Yet, no matter how often you’ve dined at this venerated Santa Fe restaurant or how many extraordinary seasonal dishes you’ve tasted, one meal will always remain off-limits. Unless that is, you’re hard at work in the kitchen, turning out the fabulous food that has long placed The Compound on the world’s culinary map.

A Kitchen Family Tradition

“It’s kind of a tradition in the kitchen where the cooks will often cook for themselves,” says Mark Kiffin, who has owned The Compound for more than 20 years and, in 2005, became only the second person in New Mexico to win the coveted James Beard Best Chef of the Southwest award. “It’s a simple thank you. The big part of it is you’re not under any pressure. It’s not about the wow factor, it’s about a thank you. The camaraderie is already there, and the chefs really are making the meal to take care of each other.” 

A hand scoops out taco filling with a spoon. Various taco elements laid out on a chef's table, including tortillas, rice, potatoes, peppers, and more.

The Compound’s kitchen meal is a variation on the family meal, or staff meal, that many restaurants serve to their employees for sustenance and a sense of togetherness before the start of a long, often demanding shift. A few eateries in the country started serving the family meal in the 1970s, and by the 1990s, the tradition had firmly taken hold. It became so rooted, in fact, that The Family Meal: Home Cooking with Ferran Adrià—a collection of nearly 100 relatively easy-to-make recipes from one of the world’s greatest chefs who cooked at El Bulli, the now-closed three-star Michelin restaurant in northern Spain—remains a global bestseller more than a decade after it was published. 

Spicing Up Breakfast

The Compound’s version of the family meal, shared by 10 or so chefs of all ages, is often served for breakfast, as the work day begins, or later, as an after-dinner shift snack. “It’s usually of the Latin flavors, which The Compound doesn’t serve,” says Kiffin, known for his signature Contemporary American menu, which blends New World influences with Mediterranean flavors. “There are times when I’m a part of it, and then times when I will buy things at the grocery store for them to cook with, like chorizo, tortillas, and cilantro.”

Guests attending cultural event in Santa Fe

As the kitchen staff preps for the day starting around nine or 10 a.m. before The Compound opens for lunch service, the chefs will often throw together a meal that reflects their Mexican heritage. “They’ll always put a salsa together. The degree of heat depends on who makes it,” Kiffin says. Then they might cook scrambled eggs with potatoes or refritos, chorizo seasoned with garlic and cilantro, and serve it all with a stack of corn tortillas.

Sometimes, French toast is on the menu, made with Bimbo bread, a product of the iconic Mexican bakery company that now operates throughout the United States. Everyone eats on the fly as they’re setting up for lunch. “We don’t get a lot of sitting down,” Kiffin says. “Eating while standing over the trash can is a way of life. It also gives them a little energy. They have to make sure they have something to keep them going once we start lunch.”

Late-Night Snack

The kitchen meal that is cooked up after The Compound’s dinner shift ends amounts to more of a snack that the crew enjoys while closing things down. Tacos are at the top of the list for this time of night. “We also do pasta, and depending on where we are in the schedule, there are spicy chicken legs and thighs and, every now and then, one of the guys will bring in mole from home,” says Kiffin. “This meal is usually done quickly, to give someone a snack before they’re going home. We shouldn’t eat this late. It makes your heart race and you don’t sleep well.”

Story by Lynn Cline / Photography by Tira Howard

A hand scoops out taco filling with a spoon. Various taco elements laid out on a chef's table, including tortillas, rice, potatoes, peppers, and more.

Subscribe to TABLE Magazine’s print edition.

Salmon Poke with Yuzu

0
Exquisite Salmon Poke Infused with Yuzu, Truffled Yuzu Kosho Sauce, Spicy Avocado Purée, and Crispy Rice Cracker

Chef Dakota Weiss’s Salmon Poke with Yuzu is nothing less than a plate of delicious, edible art. The ingredients–from the wafer-thin slices of lotus root and Fresno chile, to the green pops of color from her avocado purée–create a dazzling display of contrasting yet complementary flavors and textures. Artfully arranged gold flake miso sesame cracker shards finish this dish off with the pièce de resistance. To drink? Chef Weiss suggests a dry Riesling or an Albariño as the perfect accompaniment to this work of art.

What is Yuzu?

You may have heard of Yuzu in Asian cooking but did you know it’s actually a fruit? This citrus fruit is native to East Asia. It’s sort of like a cross between a mandarin orange and a citron. Plus, it has a complex aroma that blends the tartness of lemon with the sweetness of mandarin and a hint of grapefruit. Its fragrant, zesty, and intensely flavorful, especially when used for its juice. Add this bright, citrusy burst to sauces, marinades, and desserts.

Print

clock clock iconcutlery cutlery iconflag flag iconfolder folder iconinstagram instagram iconpinterest pinterest iconfacebook facebook iconprint print iconsquares squares iconheart heart iconheart solid heart solid icon

Exquisite Salmon Poke Infused with Yuzu, Truffled Yuzu Kosho Sauce, Spicy Avocado Purée, and Crispy Rice Cracker

Salmon Poke with Yuzu


5 Stars 4 Stars 3 Stars 2 Stars 1 Star


  • Author:
    Chef Dakota Weiss

Description

Salmon turns into a delicacy with the citrusy flavors of yuzu.


Ingredients


Scale

For the truffled yuzu kosho sauce:

  • ¼ cup yuzu kosho*
  • 1 cup rice vinegar
  • 1 cup yuzu juice
  • ½ cup mirin
  • ½ cup orange juice
  • 1 cup fish sauce
  • ½ cup truffle oil
  • 1 cup blended oil

For the spicy avocado purée:

  • 2 avocados, peeled and roughly chopped
  • ¼ cup lime juice
  • 1 small bunch cilantro
  • 2 ½ tsp salt
  • ½ a serrano chili, seeded
  • ¼ cup fish sauce

For the rice cracker:

  • 4 rice paper wraps
  • Black and white sesame seeds
  • Sea salt
  • Gold flakes

For the salmon poke:

  • 12 oz sushi grade salmon fillet, diced in ¾ x ¾-inch cubes
  • 1 lotus root, peeled and sliced thinly
  • 2 Fresno chiles, sliced thinly
  • 2 tbsp black and white sesame seeds
  • 4 green onions, sliced thinly
  • Salt
  • 1 cup black rice


Instructions

  1. For the truffled yuzu kosho sauce, purée ingredients in a blender until smooth.
  2. For the spicy avocado purée, purée ingredients in a blender until smooth.
  3. Cook the rice according to the package directions.
  4. For the rice cracker, fry the rice paper wraps in a deep-fat fryer for 30 seconds each side. Sprinkle with sesame seeds and salt. Before serving, break them and sprinkle on the gold dust.
  5. For the salmon poke, mix together the salmon, lotus root, Fresno chiles, sesame seeds, green onions, yuzu kosho sauce, and salt to taste.
  6. To plate, place small mounds of the cooked black rice in a half moon shape. Arrange the remaining ingredients. Add dollops of the avocado purée and then garnish with the crackers.

Notes

  • Yuzu kosho is a paste made from fermented chiles and the Japanese citrus fruit yuzu.

window.trCommon={“minRating”:6,”ajaxurl”:”https://www.tablemagazine.com/wp-admin/admin-ajax.php”,”ratingNonce”:”ea9827f2c8″,”postId”:5731};
window.TastyRecipes = window.TastyRecipes || {};

window.TastyRecipes.smoothScroll = {
init() {
document.addEventListener( ‘click’, ( e ) => {
let anchor = e.target;
if ( anchor.tagName !== ‘A’ ) {
anchor = anchor.closest( ‘a.tasty-recipes-scrollto’ );
}

if ( ! anchor || ! anchor.classList.contains( ‘tasty-recipes-scrollto’ ) ) {
return;
}

const elementHref = anchor.getAttribute( ‘href’ );
if ( ! elementHref ) {
return;
}

e.preventDefault();
this.goToSelector( elementHref );
});
},
goToSelector( selector ) {
const element = document.querySelector( selector );
if ( ! element ) {
return;
}
element.scrollIntoView( { behavior: ‘smooth’ } );
}
};

document.addEventListener(
‘DOMContentLoaded’,
() => window.TastyRecipes.smoothScroll.init()
);

(function(){

var bothEquals = function( d1, d2, D ) {
var ret = 0;
if (d1<=D) {
ret++;
}
if (d2<=D) {
ret++;
}
return ret === 2;
};

var frac =function frac(x,D,mixed){var n1=Math.floor(x),d1=1;var n2=n1+1,d2=1;if(x!==n1)while(bothEquals(d1,d2,D)){var m=(n1+n2)/(d1+d2);if(x===m){if(d1+d2d2)d2=D+1;else d1=D+1;break}else if(xD){d1=d2;n1=n2}if(!mixed)return[0,n1,d1];var q=Math.floor(n1/d1);return[q,n1-q*d1,d1]};frac.cont=function cont(x,D,mixed){var sgn=x<0?-1:1;var B=x*sgn;var P_2=0,P_1=1,P=0;var Q_2=1,Q_1=0,Q=0;var A=Math.floor(B);while(Q_1<D){A=Math.floor(B);P=A*P_1+P_2;Q=A*Q_1+Q_2;if(B-AD){if(Q_1>D){Q=Q_2;P=P_2}else{Q=Q_1;P=P_1}}if(!mixed)return[0,sgn*P,Q];var q=Math.floor(sgn*P/Q);return[q,sgn*P-q*Q,Q]};

window.tastyRecipesVulgarFractions = JSON.parse(decodeURIComponent(“%7B%22%C2%BC%22%3A%221%2F4%22%2C%22%C2%BD%22%3A%221%2F2%22%2C%22%C2%BE%22%3A%223%2F4%22%2C%22%E2%85%93%22%3A%221%2F3%22%2C%22%E2%85%94%22%3A%222%2F3%22%2C%22%E2%85%95%22%3A%221%2F5%22%2C%22%E2%85%96%22%3A%222%2F5%22%2C%22%E2%85%97%22%3A%223%2F5%22%2C%22%E2%85%98%22%3A%224%2F5%22%2C%22%E2%85%99%22%3A%221%2F6%22%2C%22%E2%85%9A%22%3A%225%2F6%22%2C%22%E2%85%9B%22%3A%221%2F8%22%2C%22%E2%85%9C%22%3A%223%2F8%22%2C%22%E2%85%9D%22%3A%225%2F8%22%2C%22%E2%85%9E%22%3A%227%2F8%22%7D”));

window.tastyRecipesFormatAmount = function(amount, el) {
if ( parseFloat( amount ) === parseInt( amount ) ) {
return amount;
}
var roundType = ‘frac’;
if (typeof el.dataset.amountShouldRound !== ‘undefined’) {
if (‘false’ !== el.dataset.amountShouldRound) {
if ( ‘number’ === el.dataset.amountShouldRound ) {
roundType = ‘number’;
} else if (‘frac’ === el.dataset.amountShouldRound) {
roundType = ‘frac’;
} else if (‘vulgar’ === el.dataset.amountShouldRound) {
roundType = ‘vulgar’;
} else {
roundType = ‘integer’;
}
}
}
if (‘number’ === roundType) {
amount = Number.parseFloat(amount).toPrecision(2);
} else if (‘integer’ === roundType) {
amount = Math.round(amount);
} else if (‘frac’ === roundType || ‘vulgar’ === roundType) {
var denom = 8;
if (typeof el.dataset.unit !== ‘undefined’) {
var unit = el.dataset.unit;
if ([‘cups’,’cup’,’c’].includes(unit)) {
denom = 4;
if (0.125 === amount) {
denom = 8;
}
if (“0.1667″ === Number.parseFloat( amount ).toPrecision(4)) {
denom = 6;
}
}
if ([‘tablespoons’,’tablespoon’,’tbsp’].includes(unit)) {
denom = 2;
}
if ([‘teaspoons’,’teaspoon’,’tsp’].includes(unit)) {
denom = 8;
}
}
var amountArray = frac.cont( amount, denom, true );
var newAmount = ”;
if ( amountArray[1] !== 0 ) {
newAmount = amountArray[1] + ‘/’ + amountArray[2];
if (‘vulgar’ === roundType) {
Object.keys(window.tastyRecipesVulgarFractions).forEach(function(vulgar) {
if (newAmount === window.tastyRecipesVulgarFractions[vulgar]) {
newAmount = vulgar;
}
});
}
}
if ( newAmount ) {
newAmount = ‘ ‘ + newAmount;
}
if ( amountArray[0] ) {
newAmount = amountArray[0] + newAmount;
}
amount = newAmount;
}
return amount;
};

window.tastyRecipesUpdatePrintLink = () => {

const printButton = document.querySelector( ‘.tasty-recipes-print-button’ );

if ( ! printButton ) {
return;
}

const printURL = new URL( printButton.href );
const searchParams = new URLSearchParams( printURL.search );

const unitButton = document.querySelector( ‘.tasty-recipes-convert-button-active’ );
const scaleButton = document.querySelector( ‘.tasty-recipes-scale-button-active’ );

let unit = ”;
let scale = ”;

if ( unitButton ) {
unit = unitButton.dataset.unitType;
searchParams.delete(‘unit’);
searchParams.set( ‘unit’, unit );
}

if ( scaleButton ) {
scale = scaleButton.dataset.amount;
searchParams.set( ‘scale’, scale );
}

const paramString = searchParams.toString();
const newURL = ” === paramString ? printURL.href : printURL.origin + printURL.pathname + ‘?’ + paramString;
const printLinks = document.querySelectorAll( ‘.tasty-recipes-print-link’ );

printLinks.forEach( ( el ) => {
el.href = newURL;
});

const printButtons = document.querySelectorAll( ‘.tasty-recipes-print-button’ );
printButtons.forEach( ( el ) => {
el.href = newURL;
});
};

document.addEventListener( ‘DOMContentLoaded’, () => {

if ( ! window.location.href.includes( ‘/print/’ ) ) {
return;
}

const searchParams = new URLSearchParams( window.location.search );

const unit = searchParams.get( ‘unit’ );
const scale = searchParams.get( ‘scale’ );

if ( unit && ( ‘metric’ === unit || ‘usc’ === unit ) ) {
document.querySelector( ‘.tasty-recipes-convert-button[data-unit-type=”‘ + unit + ‘”]’ ).click();
}

if ( scale && Number(scale) > 0 ) {
document.querySelector( ‘.tasty-recipes-scale-button[data-amount=”‘ + Number(scale) + ‘”]’ ).click();
}
});
}());

(function(){
var buttonClass = ‘tasty-recipes-scale-button’,
buttonActiveClass = ‘tasty-recipes-scale-button-active’,
buttons = document.querySelectorAll(‘.tasty-recipes-scale-button’);
if ( ! buttons ) {
return;
}

buttons.forEach(function(button){
button.addEventListener(‘click’, function(event){
event.preventDefault();
var recipe = event.target.closest(‘.tasty-recipes’);
if ( ! recipe ) {
return;
}
var otherButtons = recipe.querySelectorAll(‘.’ + buttonClass);
otherButtons.forEach(function(bt){
bt.classList.remove(buttonActiveClass);
});
button.classList.add(buttonActiveClass);

var scalables = recipe.querySelectorAll(‘span[data-amount]’);
var buttonAmount = parseFloat( button.dataset.amount );
scalables.forEach(function(scalable){
if (typeof scalable.dataset.amountOriginalType === ‘undefined’
&& typeof scalable.dataset.nfOriginal === ‘undefined’) {
if (-1 !== scalable.innerText.indexOf(‘/’)) {
scalable.dataset.amountOriginalType = ‘frac’;
}
if (-1 !== scalable.innerText.indexOf(‘.’)) {
scalable.dataset.amountOriginalType = ‘number’;
}
Object.keys(window.tastyRecipesVulgarFractions).forEach(function(vulgar) {
if (-1 !== scalable.innerText.indexOf(vulgar)) {
scalable.dataset.amountOriginalType = ‘vulgar’;
}
});
if (typeof scalable.dataset.amountOriginalType !== ‘undefined’) {
scalable.dataset.amountShouldRound = scalable.dataset.amountOriginalType;
}
}
var amount = parseFloat( scalable.dataset.amount ) * buttonAmount;
amount = window.tastyRecipesFormatAmount(amount, scalable);
if ( typeof scalable.dataset.unit !== ‘undefined’ ) {
if ( ! scalable.classList.contains(‘nutrifox-quantity’) ) {
if ( ! scalable.classList.contains(‘nutrifox-second-quantity’) ) {
amount += ‘ ‘ + scalable.dataset.unit;
}
}
}
scalable.innerText = amount;
});

var nonNumerics = recipe.querySelectorAll(‘[data-has-non-numeric-amount]’);
nonNumerics.forEach(function(nonNumeric){
var indicator = nonNumeric.querySelector(‘span[data-non-numeric-label]’);
if ( indicator ) {
nonNumeric.removeChild(indicator);
}
if ( 1 !== buttonAmount ) {
indicator = document.createElement(‘span’);
indicator.setAttribute(‘data-non-numeric-label’, true);
var text = document.createTextNode(‘ (x’ + buttonAmount + ‘)’);
indicator.appendChild(text);
nonNumeric.appendChild(indicator);
}
});

window.tastyRecipesUpdatePrintLink();
});
});
}());

window.TastyRecipes = window.TastyRecipes || {};
window.TastyRecipes.cookMode = {
wakeLockApi: false,
wakeLock: false,
cookModeSelector: ‘.tasty-recipes-cook-mode’,
init() {
if (“wakeLock” in navigator && “request” in navigator.wakeLock) {
this.wakeLockApi = navigator.wakeLock;
}

const cookModes = document.querySelectorAll(this.cookModeSelector);

if (cookModes.length > 0) {
for (const cookMode of cookModes) {
if (this.wakeLockApi) {
cookMode.querySelector(‘input[type=”checkbox”]’).addEventListener(“change”, event => {
this.checkboxChange(event.target);
}, false);
} else {
cookMode.style.display = “none”;
}
}
}
},
checkboxChange(checkbox) {
if (checkbox.checked) {
this.lock();
} else {
this.unlock();
}
},
setCheckboxesState(state) {
const checkboxes = document.querySelectorAll(this.cookModeSelector + ‘ input[type=”checkbox”]’);
for (const checkbox of checkboxes) {
checkbox.checked = state;
}
},
async lock() {
try {
this.wakeLock = await this.wakeLockApi.request(“screen”);
this.wakeLock.addEventListener(“release”, () => {
this.wakeLock = false;
this.setCheckboxesState(false);
});
this.setCheckboxesState(true);
} catch (error) {
this.setCheckboxesState(false);
}
},
unlock() {
if (this.wakeLock) {
this.wakeLock.release();
this.wakeLock = false;
}
this.setCheckboxesState(false);
}
};

(function(callback) {
if (document.readyState !== “loading”) {
callback();
} else {
document.addEventListener(“DOMContentLoaded”, callback);
}
})(() => {
window.TastyRecipes.cookMode.init();
});

window.TastyRecipes = window.TastyRecipes || {};

window.TastyRecipes.staticTooltip = {
element: null,
tooltipElement: null,
deleting: false,
init( element ) {
if ( this.deleting ) {
return;
}
this.element = element;
this.buildElements();
},
destroy() {
if ( ! this.tooltipElement || this.deleting ) {
return;
}

this.deleting = true;
this.tooltipElement.classList.remove( ‘opened’ );

setTimeout( () => {
this.tooltipElement.remove();
this.deleting = false;
}, 500 );
},
buildElements() {
const tooltipElement = document.createElement( ‘div’ );
tooltipElement.classList.add( ‘tasty-recipes-static-tooltip’);
tooltipElement.setAttribute( ‘id’, ‘tasty-recipes-tooltip’ );

const currentTooltipElement = document.getElementById( ‘tasty-recipes-tooltip’ );
if ( currentTooltipElement ) {
document.body.replaceChild( tooltipElement, currentTooltipElement );
} else {
document.body.appendChild( tooltipElement );
}

this.tooltipElement = document.getElementById( ‘tasty-recipes-tooltip’ );
},
show() {
if ( ! this.tooltipElement ) {
return;
}

const tooltipTop = this.element.getBoundingClientRect().top
+ window.scrollY
– 10 // 10px offset.
– this.tooltipElement.getBoundingClientRect().height;
const tooltipLeft = this.element.getBoundingClientRect().left
– ( this.tooltipElement.getBoundingClientRect().width / 2 )
+ ( this.element.getBoundingClientRect().width / 2 ) – 1;
const posLeft = Math.max( 10, tooltipLeft );
this.maybeRemoveTail( posLeft !== tooltipLeft );

this.tooltipElement.setAttribute( ‘style’, ‘top:’ + tooltipTop + ‘px;left:’ + posLeft + ‘px;’ );
this.tooltipElement.classList.add( ‘opened’ );

},
maybeRemoveTail( removeTail ) {
if ( removeTail ) {
this.tooltipElement.classList.add( ‘tr-hide-tail’ );
} else {
this.tooltipElement.classList.remove( ‘tr-hide-tail’ );
}
},
changeMessage( message ) {
if ( ! this.tooltipElement ) {
return;
}
this.tooltipElement.innerHTML = message;
}
};

window.TastyRecipes.ajax = {
sendPostRequest( url, data, success, failure ) {
const xhr = new XMLHttpRequest();
xhr.open( ‘POST’, url, true );
xhr.send( this.preparePostData( data ) );

xhr.onreadystatechange = () => {
if ( 4 !== xhr.readyState ) {
return;
}
if ( xhr.status === 200 ) {
success( JSON.parse( xhr.responseText ) );
return;
}

failure( xhr );
};

xhr.onerror = () => {
failure( xhr );
};
},
preparePostData( data ) {
const formData = new FormData();

for ( const key in data ) {
formData.append( key, data[key] );
}
return formData;
},
};

window.TastyRecipes.ratings = {
defaultRating: 0,
currentRatingPercentage: 100,
savingRating: false,
init( minRating ) {
this.minRating = minRating;

this.formWatchRating();
this.closeTooltipWhenClickOutside();
this.addBodyClassBasedOnSelectedRating();
this.backwardCompFormRatingPosition();
},
formWatchRating() {
const ratings = document.querySelectorAll(‘.tasty-recipes-no-ratings-buttons [data-rating]’);
if ( ratings.length {
event.preventDefault();
this.defaultRating = event.target.closest( ‘.checked’ ).dataset.rating;
this.setCheckedStar( event.target );
this.maybeSendRating( this.defaultRating, event.target );
this.setRatingInForm( this.defaultRating );
} );
}
},
closeTooltipWhenClickOutside() {
window.addEventListener( ‘click’, e => {
// Bailout (don’t remove the tooltip) when the clicked element is a rating star, or it’s the tooltip itself.
if ( e.target.closest( ‘.tasty-recipes-rating’ ) || e.target.classList.contains( ‘tasty-recipes-static-tooltip’ ) ) {
return;
}

window.TastyRecipes.staticTooltip.destroy();
} );
},
setRatingInForm( rating ) {
const ratingInput = document.querySelector( ‘#respond .tasty-recipes-rating[value=”‘ + rating + ‘”]’ );
if ( ! ratingInput ) {
return;
}
ratingInput.click();
},
addBodyClassBasedOnSelectedRating() {
const ratingInputs = document.querySelectorAll( ‘input.tasty-recipes-rating’ );
if ( ! ratingInputs ) {
return;
}
for ( const ratingInput of ratingInputs ) {
ratingInput.addEventListener( ‘click’, currentEvent => {
const selectedRating = currentEvent.target.getAttribute( ‘value’ );
this.handleBodyClassByRating( selectedRating );
this.toggleCommentTextareaRequired( selectedRating );
} );
}
},
handleBodyClassByRating( rating ) {
if ( rating < this.minRating ) {
document.body.classList.remove( 'tasty-recipes-selected-minimum-rating' );
return;
}
document.body.classList.add( 'tasty-recipes-selected-minimum-rating' );
},
toggleCommentTextareaRequired( rating ) {
const commentTextarea = document.getElementById( 'comment' );
if ( ! commentTextarea ) {
return;
}

if ( rating {
window.TastyRecipes.staticTooltip.changeMessage( response.data.message );
window.TastyRecipes.staticTooltip.show();
this.updateAverageText( response.data, recipeCardElement );
this.maybeFillCommentForm( response.data );

// Hide the tooltip after 5 seconds.
setTimeout( () => {
this.maybeResetTooltip( recipeCardElement, response.data, rating );
}, 5000 );
},
() => {
this.resetTooltip( recipeCardElement );
}
);
},
updateAverageText( data, recipeCardElement ) {
if ( ! data.average ) {
return;
}
this.setRatingPercent( data );

if ( ! data.count ) {
return;
}

const quickLink = document.querySelector( ‘.tasty-recipes-rating-link’ );
if ( quickLink ) {
this.setTextInContainer( quickLink, data );
this.setPartialStar( quickLink );
}

const cardStars = recipeCardElement.querySelector( ‘.tasty-recipes-ratings-buttons’ );
cardStars.dataset.trDefaultRating = data.average;
this.setTextInContainer( recipeCardElement.querySelector( ‘.tasty-recipes-rating’ ), data );
},
setTextInContainer( container, data ) {
if ( ! container ) {
return;
}

if ( data.label ) {
const ratingLabelElement = container.querySelector( ‘.rating-label’ );
if ( ratingLabelElement ) {
ratingLabelElement.innerHTML = data.label;
}
return;
}

const averageElement = container.querySelector( ‘.average’ );
if ( averageElement ) {
averageElement.textContent = data.average;
}

const countElement = container.querySelector( ‘.count’ );
if ( countElement ) {
countElement.textContent = data.count;
}
},
setPartialStar( container ) {
const highestStar = container.querySelector( ‘[data-rating=”‘ + Math.ceil( this.defaultRating ) + ‘”]’ );
if ( highestStar ) {
highestStar.dataset.trClip = this.currentRatingPercentage;
}
},
setRatingPercent( data ) {
this.defaultRating = data.average.toFixed( 1 );
const parts = data.average.toFixed( 2 ).toString().split( ‘.’ );
this.currentRatingPercentage = parts[1] ? parts[1] : 100;
if ( this.currentRatingPercentage === ’00’ ) {
this.currentRatingPercentage = 100;
}
},
setCheckedStar( target ) {
const cardRatingContainer = target.closest( ‘.tasty-recipes-ratings-buttons’ );
const selectedRatingElement = cardRatingContainer.querySelector( ‘[data-tr-checked]’ );
if ( selectedRatingElement ) {
delete selectedRatingElement.dataset.trChecked;
}

const thisStar = target.closest( ‘.tasty-recipes-rating’ );
thisStar.dataset.trChecked = 1;
thisStar.querySelector( ‘[data-tr-clip]’ ).dataset.trClip = 100;
},
maybeFillCommentForm( data ) {
if ( ! data.comment || ! data.comment.content ) {
return;
}

const commentForm = document.querySelector( ‘#commentform’ );
if ( ! commentForm ) {
return;
}

const commentBox = commentForm.querySelector( ‘[name=comment]’ );
if ( ! commentBox || commentBox.value ) {
return;
}

// Add comment details for editing.
commentBox.innerHTML = data.comment.content;
if ( data.comment.name ) {
commentForm.querySelector( ‘[name=author]’ ).value = data.comment.name;
commentForm.querySelector( ‘[name=email]’ ).value = data.comment.email;
}
},
maybeResetTooltip( recipeCardElement, data, rating ) {
if ( this.savingRating === rating ) {
this.resetTooltip( recipeCardElement, data );
}
},
resetTooltip( recipeCardElement, data ) {
window.TastyRecipes.staticTooltip.destroy();
this.savingRating = false;

// Reset the default rating.
const cardRatingContainer = recipeCardElement.querySelector( ‘.tasty-recipes-ratings-buttons’ );
if ( cardRatingContainer ) {
this.defaultRating = ( data && data.average ) ? data.average.toFixed(1) : cardRatingContainer.dataset.trDefaultRating;
cardRatingContainer.dataset.trDefaultRating = this.defaultRating;

this.resetSelectedStar( cardRatingContainer, data );
}
},
resetSelectedStar( cardRatingContainer ) {
const selectedRatingElement = cardRatingContainer.querySelector( ‘[data-rating=”‘ + Math.ceil( this.defaultRating ) + ‘”]’ );
if ( selectedRatingElement ) {
selectedRatingElement.querySelector( ‘[data-tr-clip]’ ).dataset.trClip = this.currentRatingPercentage;
selectedRatingElement.parentNode.dataset.trChecked = 1;
}

const previousSelectedElement= cardRatingContainer.querySelector( ‘[data-tr-checked]’ );
if ( previousSelectedElement ) {
const currentSelectedRating = previousSelectedElement.querySelector(‘[data-rating]’);
if ( currentSelectedRating !== selectedRatingElement ) {
delete previousSelectedElement.dataset.trChecked;
}
}
},
backwardCompFormRatingPosition() {
const ratingsButtons = document.querySelector( ‘#respond .tasty-recipes-ratings-buttons, #tasty-recipes-comment-rating .tasty-recipes-ratings-buttons’ );
if ( ! ratingsButtons ) {
return;
}
const ratingsButtonsStyles = window.getComputedStyle(ratingsButtons);
if ( ! ratingsButtonsStyles.display.includes( ‘flex’ ) ) {
ratingsButtons.style.direction = ‘rtl’;
}

if ( typeof tastyRecipesRating !== ‘undefined’ ) {
// Select the rating that was previously selected in admin.
ratingsButtons.querySelector( ‘.tasty-recipes-rating[value=”‘ + tastyRecipesRating + ‘”]’ ).checked = true;
}

const ratingSpans = ratingsButtons.querySelectorAll( ‘.tasty-recipes-rating’ );
for (const ratingSpan of ratingSpans) {
ratingSpan.addEventListener( ‘click’, event => {
if ( ratingSpan === event.target ) {
return;
}
ratingSpan.previousElementSibling.click();
} );
}
}
};

(function(callback) {
if (document.readyState !== “loading”) {
callback();
} else {
window.addEventListener( ‘load’, callback );
}
})(() => {
window.TastyRecipes.ratings.init( window.trCommon ? window.trCommon.minRating : 4 );
});

Recipe by Chef Dakota Weiss of Catch Santa Fe Poke
Story and Styling by Julia Platt Leonard
Support from Alex Hanna
Photography by Kate Russell

Subscribe to TABLE Magazine’s print edition.

Teriyaki-Glazed Grilled Octopus

0
Octopus Braised in a Symphony of Flavors with Sticky Rice, Wasabi Emulsion, Teriyaki Glaze, and Yuzu Aioli

Chef David Sellers’s Teriyaki-Glazed Grilled Octopus, like the food he serves at his restaurant Horno, is all about contrasts. Here, there is richness from the teriyaki, balanced by the acidity from the yuzu and heat from the wasabi. To drink, Chef Sellers suggests L’Escale, a Sauvignon blanc from the Loire Valley. It’s juicy, fresh and can hold its own with this dish. Treat yourself on a special evening and be sure to take your time plating. How you present your food can truly make all the difference.

What is Furikake Spice?

Furikake spice is a mixture of nori seaweed, sesame, chile, and other delicious things and is available in most Asian markets. It is a savory Japanese seasoning blend that adds a burst of flavor and texture to our Teriyaki-Glazed Grilled Octopus. The combination of salty, savory, and slightly sweet flavors makes it unlike any American seasoning you can find. You can find many different varieties of furikake and each carries a special element. Some may include dried fish, bonito flakes, vegetables, garlic powder, and red pepper flakes to name a few.

Print

clock clock iconcutlery cutlery iconflag flag iconfolder folder iconinstagram instagram iconpinterest pinterest iconfacebook facebook iconprint print iconsquares squares iconheart heart iconheart solid heart solid icon

Octopus Braised in a Symphony of Flavors with Sticky Rice, Wasabi Emulsion, Teriyaki Glaze, and Yuzu Aioli

Teriyaki-Glazed Grilled Octopus


5 Stars 4 Stars 3 Stars 2 Stars 1 Star


  • Author:
    Chef David Sellers

Description

If you want to learn to create an elevated meal, here’s where to start.


Ingredients


Scale

For the octopus braise:

  • ¼ cup canola oil
  • 1 onion, chopped
  • 1 carrot, chopped
  • 3 ribs celery, chopped
  • 5 cloves garlic, peeled and sliced
  • 1 cup white wine
  • 3 lemons, sliced in half
  • 4 bay leaves
  • 3 sprigs fresh thyme
  • Kosher salt
  • 3 ½4 lb octopus

For the sticky rice:

  • 1 cup sushi rice or similar short grain Southeast Asian rice variety
  • ½ cup rice wine vinegar
  • ¼ cup sugar
  • 1 bunch green onion, sliced

For the wasabi emulsion:

  • ½ cup wasabi powder
  • ¼ cup rice wine vinegar
  • ¼ cup granulated sugar
  • ½ cup canola oil

For the teriyaki glaze:

  • 1 cup soy sauce
  • ½ cup orange juice
  • Juice of 3 limes
  • ¼ cup sugar
  • 3 tbsp cornstarch

For the yuzu aoili:

  • 3 egg yolks
  • 2 tbsp yuzu juice
  • 1 cup canola oil
  • Pinch salt

For garnish:

  • Furikake spice


Instructions

  1. Warm the canola oil in a small roasting dish or pot large enough to hold the octopus. Over medium heat, sauté the onion, carrot, celery, and garlic in the oil until translucent.
  2. Deglaze with white wine and add the lemons, bay leaves, thyme, and season with salt. Add 4 cups water, bring to a simmer, and cook for 20 minutes. Turn the heat down to low and add the whole octopus. Cook covered in a 225-degree oven for one hour 45 minutes. Check for tenderness, if not quite ready give it another 15 minutes.
  3. Remove the octopus from the liquid and cool in a refrigerator until completely cold. Cut off the head and discard. Slice off the legs individually.
  4. To make the rice, bring the sushi rice to a simmer in 1 ½ cups of water, cover, and cook until just tender. Turn rice out into a bowl.
  5. In a small saucepan combine the rice wine vinegar, sugar, and green onion and simmer until sugar is completely dissolved. Season with a pinch of salt. Mix gently with rice and set aside.
  6. To make the wasabi emulsion, combine the wasabi powder, rice wine vinegar, sugar, and ¼ cup water. Stir until mixed and the sugar dissolves. Let rest for 15 minutes then whisk in the oil until emulsified.
  7. To make the teriyaki glaze, combine the soy sauce, orange juice, lime juice, and sugar in a small saucepan; simmer until the sugar is dissolved. Mix cornstarch with a small amount of water and whisk into the mixture. The sauce should thicken enough to coat the back of a spoon. Simmer for 2 or 3 minutes and let cool completely.
  8. To make the yuzu aioli, combine egg yolks and yuzu juice in a food processor. Turn the food processor on high and slowly add the canola oil until well incorporated. It should resemble a mayonnaise. Season with salt to taste.
  9. Brush the octopus pieces with oil and season with salt and pepper. Cook on a hot grill until slightly charred all over. Slice the octopus into pieces.
  10. To plate, smear a dollop of the yuzu aioli on six plates. Divide the rice among 6 plates, and place the octopus on top of and around the rice. Spoon wasabi emulsion and teriyaki glaze on and around the octopus. Sprinkle furikake spice over the middle of each dish to your liking.

window.trCommon={“minRating”:6,”ajaxurl”:”https://www.tablemagazine.com/wp-admin/admin-ajax.php”,”ratingNonce”:”f011bc3481″,”postId”:5725};
window.TastyRecipes = window.TastyRecipes || {};

window.TastyRecipes.smoothScroll = {
init() {
document.addEventListener( ‘click’, ( e ) => {
let anchor = e.target;
if ( anchor.tagName !== ‘A’ ) {
anchor = anchor.closest( ‘a.tasty-recipes-scrollto’ );
}

if ( ! anchor || ! anchor.classList.contains( ‘tasty-recipes-scrollto’ ) ) {
return;
}

const elementHref = anchor.getAttribute( ‘href’ );
if ( ! elementHref ) {
return;
}

e.preventDefault();
this.goToSelector( elementHref );
});
},
goToSelector( selector ) {
const element = document.querySelector( selector );
if ( ! element ) {
return;
}
element.scrollIntoView( { behavior: ‘smooth’ } );
}
};

document.addEventListener(
‘DOMContentLoaded’,
() => window.TastyRecipes.smoothScroll.init()
);

(function(){

var bothEquals = function( d1, d2, D ) {
var ret = 0;
if (d1<=D) {
ret++;
}
if (d2<=D) {
ret++;
}
return ret === 2;
};

var frac =function frac(x,D,mixed){var n1=Math.floor(x),d1=1;var n2=n1+1,d2=1;if(x!==n1)while(bothEquals(d1,d2,D)){var m=(n1+n2)/(d1+d2);if(x===m){if(d1+d2d2)d2=D+1;else d1=D+1;break}else if(xD){d1=d2;n1=n2}if(!mixed)return[0,n1,d1];var q=Math.floor(n1/d1);return[q,n1-q*d1,d1]};frac.cont=function cont(x,D,mixed){var sgn=x<0?-1:1;var B=x*sgn;var P_2=0,P_1=1,P=0;var Q_2=1,Q_1=0,Q=0;var A=Math.floor(B);while(Q_1<D){A=Math.floor(B);P=A*P_1+P_2;Q=A*Q_1+Q_2;if(B-AD){if(Q_1>D){Q=Q_2;P=P_2}else{Q=Q_1;P=P_1}}if(!mixed)return[0,sgn*P,Q];var q=Math.floor(sgn*P/Q);return[q,sgn*P-q*Q,Q]};

window.tastyRecipesVulgarFractions = JSON.parse(decodeURIComponent(“%7B%22%C2%BC%22%3A%221%2F4%22%2C%22%C2%BD%22%3A%221%2F2%22%2C%22%C2%BE%22%3A%223%2F4%22%2C%22%E2%85%93%22%3A%221%2F3%22%2C%22%E2%85%94%22%3A%222%2F3%22%2C%22%E2%85%95%22%3A%221%2F5%22%2C%22%E2%85%96%22%3A%222%2F5%22%2C%22%E2%85%97%22%3A%223%2F5%22%2C%22%E2%85%98%22%3A%224%2F5%22%2C%22%E2%85%99%22%3A%221%2F6%22%2C%22%E2%85%9A%22%3A%225%2F6%22%2C%22%E2%85%9B%22%3A%221%2F8%22%2C%22%E2%85%9C%22%3A%223%2F8%22%2C%22%E2%85%9D%22%3A%225%2F8%22%2C%22%E2%85%9E%22%3A%227%2F8%22%7D”));

window.tastyRecipesFormatAmount = function(amount, el) {
if ( parseFloat( amount ) === parseInt( amount ) ) {
return amount;
}
var roundType = ‘frac’;
if (typeof el.dataset.amountShouldRound !== ‘undefined’) {
if (‘false’ !== el.dataset.amountShouldRound) {
if ( ‘number’ === el.dataset.amountShouldRound ) {
roundType = ‘number’;
} else if (‘frac’ === el.dataset.amountShouldRound) {
roundType = ‘frac’;
} else if (‘vulgar’ === el.dataset.amountShouldRound) {
roundType = ‘vulgar’;
} else {
roundType = ‘integer’;
}
}
}
if (‘number’ === roundType) {
amount = Number.parseFloat(amount).toPrecision(2);
} else if (‘integer’ === roundType) {
amount = Math.round(amount);
} else if (‘frac’ === roundType || ‘vulgar’ === roundType) {
var denom = 8;
if (typeof el.dataset.unit !== ‘undefined’) {
var unit = el.dataset.unit;
if ([‘cups’,’cup’,’c’].includes(unit)) {
denom = 4;
if (0.125 === amount) {
denom = 8;
}
if (“0.1667″ === Number.parseFloat( amount ).toPrecision(4)) {
denom = 6;
}
}
if ([‘tablespoons’,’tablespoon’,’tbsp’].includes(unit)) {
denom = 2;
}
if ([‘teaspoons’,’teaspoon’,’tsp’].includes(unit)) {
denom = 8;
}
}
var amountArray = frac.cont( amount, denom, true );
var newAmount = ”;
if ( amountArray[1] !== 0 ) {
newAmount = amountArray[1] + ‘/’ + amountArray[2];
if (‘vulgar’ === roundType) {
Object.keys(window.tastyRecipesVulgarFractions).forEach(function(vulgar) {
if (newAmount === window.tastyRecipesVulgarFractions[vulgar]) {
newAmount = vulgar;
}
});
}
}
if ( newAmount ) {
newAmount = ‘ ‘ + newAmount;
}
if ( amountArray[0] ) {
newAmount = amountArray[0] + newAmount;
}
amount = newAmount;
}
return amount;
};

window.tastyRecipesUpdatePrintLink = () => {

const printButton = document.querySelector( ‘.tasty-recipes-print-button’ );

if ( ! printButton ) {
return;
}

const printURL = new URL( printButton.href );
const searchParams = new URLSearchParams( printURL.search );

const unitButton = document.querySelector( ‘.tasty-recipes-convert-button-active’ );
const scaleButton = document.querySelector( ‘.tasty-recipes-scale-button-active’ );

let unit = ”;
let scale = ”;

if ( unitButton ) {
unit = unitButton.dataset.unitType;
searchParams.delete(‘unit’);
searchParams.set( ‘unit’, unit );
}

if ( scaleButton ) {
scale = scaleButton.dataset.amount;
searchParams.set( ‘scale’, scale );
}

const paramString = searchParams.toString();
const newURL = ” === paramString ? printURL.href : printURL.origin + printURL.pathname + ‘?’ + paramString;
const printLinks = document.querySelectorAll( ‘.tasty-recipes-print-link’ );

printLinks.forEach( ( el ) => {
el.href = newURL;
});

const printButtons = document.querySelectorAll( ‘.tasty-recipes-print-button’ );
printButtons.forEach( ( el ) => {
el.href = newURL;
});
};

document.addEventListener( ‘DOMContentLoaded’, () => {

if ( ! window.location.href.includes( ‘/print/’ ) ) {
return;
}

const searchParams = new URLSearchParams( window.location.search );

const unit = searchParams.get( ‘unit’ );
const scale = searchParams.get( ‘scale’ );

if ( unit && ( ‘metric’ === unit || ‘usc’ === unit ) ) {
document.querySelector( ‘.tasty-recipes-convert-button[data-unit-type=”‘ + unit + ‘”]’ ).click();
}

if ( scale && Number(scale) > 0 ) {
document.querySelector( ‘.tasty-recipes-scale-button[data-amount=”‘ + Number(scale) + ‘”]’ ).click();
}
});
}());

(function(){
var buttonClass = ‘tasty-recipes-scale-button’,
buttonActiveClass = ‘tasty-recipes-scale-button-active’,
buttons = document.querySelectorAll(‘.tasty-recipes-scale-button’);
if ( ! buttons ) {
return;
}

buttons.forEach(function(button){
button.addEventListener(‘click’, function(event){
event.preventDefault();
var recipe = event.target.closest(‘.tasty-recipes’);
if ( ! recipe ) {
return;
}
var otherButtons = recipe.querySelectorAll(‘.’ + buttonClass);
otherButtons.forEach(function(bt){
bt.classList.remove(buttonActiveClass);
});
button.classList.add(buttonActiveClass);

var scalables = recipe.querySelectorAll(‘span[data-amount]’);
var buttonAmount = parseFloat( button.dataset.amount );
scalables.forEach(function(scalable){
if (typeof scalable.dataset.amountOriginalType === ‘undefined’
&& typeof scalable.dataset.nfOriginal === ‘undefined’) {
if (-1 !== scalable.innerText.indexOf(‘/’)) {
scalable.dataset.amountOriginalType = ‘frac’;
}
if (-1 !== scalable.innerText.indexOf(‘.’)) {
scalable.dataset.amountOriginalType = ‘number’;
}
Object.keys(window.tastyRecipesVulgarFractions).forEach(function(vulgar) {
if (-1 !== scalable.innerText.indexOf(vulgar)) {
scalable.dataset.amountOriginalType = ‘vulgar’;
}
});
if (typeof scalable.dataset.amountOriginalType !== ‘undefined’) {
scalable.dataset.amountShouldRound = scalable.dataset.amountOriginalType;
}
}
var amount = parseFloat( scalable.dataset.amount ) * buttonAmount;
amount = window.tastyRecipesFormatAmount(amount, scalable);
if ( typeof scalable.dataset.unit !== ‘undefined’ ) {
if ( ! scalable.classList.contains(‘nutrifox-quantity’) ) {
if ( ! scalable.classList.contains(‘nutrifox-second-quantity’) ) {
amount += ‘ ‘ + scalable.dataset.unit;
}
}
}
scalable.innerText = amount;
});

var nonNumerics = recipe.querySelectorAll(‘[data-has-non-numeric-amount]’);
nonNumerics.forEach(function(nonNumeric){
var indicator = nonNumeric.querySelector(‘span[data-non-numeric-label]’);
if ( indicator ) {
nonNumeric.removeChild(indicator);
}
if ( 1 !== buttonAmount ) {
indicator = document.createElement(‘span’);
indicator.setAttribute(‘data-non-numeric-label’, true);
var text = document.createTextNode(‘ (x’ + buttonAmount + ‘)’);
indicator.appendChild(text);
nonNumeric.appendChild(indicator);
}
});

window.tastyRecipesUpdatePrintLink();
});
});
}());

window.TastyRecipes = window.TastyRecipes || {};
window.TastyRecipes.cookMode = {
wakeLockApi: false,
wakeLock: false,
cookModeSelector: ‘.tasty-recipes-cook-mode’,
init() {
if (“wakeLock” in navigator && “request” in navigator.wakeLock) {
this.wakeLockApi = navigator.wakeLock;
}

const cookModes = document.querySelectorAll(this.cookModeSelector);

if (cookModes.length > 0) {
for (const cookMode of cookModes) {
if (this.wakeLockApi) {
cookMode.querySelector(‘input[type=”checkbox”]’).addEventListener(“change”, event => {
this.checkboxChange(event.target);
}, false);
} else {
cookMode.style.display = “none”;
}
}
}
},
checkboxChange(checkbox) {
if (checkbox.checked) {
this.lock();
} else {
this.unlock();
}
},
setCheckboxesState(state) {
const checkboxes = document.querySelectorAll(this.cookModeSelector + ‘ input[type=”checkbox”]’);
for (const checkbox of checkboxes) {
checkbox.checked = state;
}
},
async lock() {
try {
this.wakeLock = await this.wakeLockApi.request(“screen”);
this.wakeLock.addEventListener(“release”, () => {
this.wakeLock = false;
this.setCheckboxesState(false);
});
this.setCheckboxesState(true);
} catch (error) {
this.setCheckboxesState(false);
}
},
unlock() {
if (this.wakeLock) {
this.wakeLock.release();
this.wakeLock = false;
}
this.setCheckboxesState(false);
}
};

(function(callback) {
if (document.readyState !== “loading”) {
callback();
} else {
document.addEventListener(“DOMContentLoaded”, callback);
}
})(() => {
window.TastyRecipes.cookMode.init();
});

window.TastyRecipes = window.TastyRecipes || {};

window.TastyRecipes.staticTooltip = {
element: null,
tooltipElement: null,
deleting: false,
init( element ) {
if ( this.deleting ) {
return;
}
this.element = element;
this.buildElements();
},
destroy() {
if ( ! this.tooltipElement || this.deleting ) {
return;
}

this.deleting = true;
this.tooltipElement.classList.remove( ‘opened’ );

setTimeout( () => {
this.tooltipElement.remove();
this.deleting = false;
}, 500 );
},
buildElements() {
const tooltipElement = document.createElement( ‘div’ );
tooltipElement.classList.add( ‘tasty-recipes-static-tooltip’);
tooltipElement.setAttribute( ‘id’, ‘tasty-recipes-tooltip’ );

const currentTooltipElement = document.getElementById( ‘tasty-recipes-tooltip’ );
if ( currentTooltipElement ) {
document.body.replaceChild( tooltipElement, currentTooltipElement );
} else {
document.body.appendChild( tooltipElement );
}

this.tooltipElement = document.getElementById( ‘tasty-recipes-tooltip’ );
},
show() {
if ( ! this.tooltipElement ) {
return;
}

const tooltipTop = this.element.getBoundingClientRect().top
+ window.scrollY
– 10 // 10px offset.
– this.tooltipElement.getBoundingClientRect().height;
const tooltipLeft = this.element.getBoundingClientRect().left
– ( this.tooltipElement.getBoundingClientRect().width / 2 )
+ ( this.element.getBoundingClientRect().width / 2 ) – 1;
const posLeft = Math.max( 10, tooltipLeft );
this.maybeRemoveTail( posLeft !== tooltipLeft );

this.tooltipElement.setAttribute( ‘style’, ‘top:’ + tooltipTop + ‘px;left:’ + posLeft + ‘px;’ );
this.tooltipElement.classList.add( ‘opened’ );

},
maybeRemoveTail( removeTail ) {
if ( removeTail ) {
this.tooltipElement.classList.add( ‘tr-hide-tail’ );
} else {
this.tooltipElement.classList.remove( ‘tr-hide-tail’ );
}
},
changeMessage( message ) {
if ( ! this.tooltipElement ) {
return;
}
this.tooltipElement.innerHTML = message;
}
};

window.TastyRecipes.ajax = {
sendPostRequest( url, data, success, failure ) {
const xhr = new XMLHttpRequest();
xhr.open( ‘POST’, url, true );
xhr.send( this.preparePostData( data ) );

xhr.onreadystatechange = () => {
if ( 4 !== xhr.readyState ) {
return;
}
if ( xhr.status === 200 ) {
success( JSON.parse( xhr.responseText ) );
return;
}

failure( xhr );
};

xhr.onerror = () => {
failure( xhr );
};
},
preparePostData( data ) {
const formData = new FormData();

for ( const key in data ) {
formData.append( key, data[key] );
}
return formData;
},
};

window.TastyRecipes.ratings = {
defaultRating: 0,
currentRatingPercentage: 100,
savingRating: false,
init( minRating ) {
this.minRating = minRating;

this.formWatchRating();
this.closeTooltipWhenClickOutside();
this.addBodyClassBasedOnSelectedRating();
this.backwardCompFormRatingPosition();
},
formWatchRating() {
const ratings = document.querySelectorAll(‘.tasty-recipes-no-ratings-buttons [data-rating]’);
if ( ratings.length {
event.preventDefault();
this.defaultRating = event.target.closest( ‘.checked’ ).dataset.rating;
this.setCheckedStar( event.target );
this.maybeSendRating( this.defaultRating, event.target );
this.setRatingInForm( this.defaultRating );
} );
}
},
closeTooltipWhenClickOutside() {
window.addEventListener( ‘click’, e => {
// Bailout (don’t remove the tooltip) when the clicked element is a rating star, or it’s the tooltip itself.
if ( e.target.closest( ‘.tasty-recipes-rating’ ) || e.target.classList.contains( ‘tasty-recipes-static-tooltip’ ) ) {
return;
}

window.TastyRecipes.staticTooltip.destroy();
} );
},
setRatingInForm( rating ) {
const ratingInput = document.querySelector( ‘#respond .tasty-recipes-rating[value=”‘ + rating + ‘”]’ );
if ( ! ratingInput ) {
return;
}
ratingInput.click();
},
addBodyClassBasedOnSelectedRating() {
const ratingInputs = document.querySelectorAll( ‘input.tasty-recipes-rating’ );
if ( ! ratingInputs ) {
return;
}
for ( const ratingInput of ratingInputs ) {
ratingInput.addEventListener( ‘click’, currentEvent => {
const selectedRating = currentEvent.target.getAttribute( ‘value’ );
this.handleBodyClassByRating( selectedRating );
this.toggleCommentTextareaRequired( selectedRating );
} );
}
},
handleBodyClassByRating( rating ) {
if ( rating < this.minRating ) {
document.body.classList.remove( 'tasty-recipes-selected-minimum-rating' );
return;
}
document.body.classList.add( 'tasty-recipes-selected-minimum-rating' );
},
toggleCommentTextareaRequired( rating ) {
const commentTextarea = document.getElementById( 'comment' );
if ( ! commentTextarea ) {
return;
}

if ( rating {
window.TastyRecipes.staticTooltip.changeMessage( response.data.message );
window.TastyRecipes.staticTooltip.show();
this.updateAverageText( response.data, recipeCardElement );
this.maybeFillCommentForm( response.data );

// Hide the tooltip after 5 seconds.
setTimeout( () => {
this.maybeResetTooltip( recipeCardElement, response.data, rating );
}, 5000 );
},
() => {
this.resetTooltip( recipeCardElement );
}
);
},
updateAverageText( data, recipeCardElement ) {
if ( ! data.average ) {
return;
}
this.setRatingPercent( data );

if ( ! data.count ) {
return;
}

const quickLink = document.querySelector( ‘.tasty-recipes-rating-link’ );
if ( quickLink ) {
this.setTextInContainer( quickLink, data );
this.setPartialStar( quickLink );
}

const cardStars = recipeCardElement.querySelector( ‘.tasty-recipes-ratings-buttons’ );
cardStars.dataset.trDefaultRating = data.average;
this.setTextInContainer( recipeCardElement.querySelector( ‘.tasty-recipes-rating’ ), data );
},
setTextInContainer( container, data ) {
if ( ! container ) {
return;
}

if ( data.label ) {
const ratingLabelElement = container.querySelector( ‘.rating-label’ );
if ( ratingLabelElement ) {
ratingLabelElement.innerHTML = data.label;
}
return;
}

const averageElement = container.querySelector( ‘.average’ );
if ( averageElement ) {
averageElement.textContent = data.average;
}

const countElement = container.querySelector( ‘.count’ );
if ( countElement ) {
countElement.textContent = data.count;
}
},
setPartialStar( container ) {
const highestStar = container.querySelector( ‘[data-rating=”‘ + Math.ceil( this.defaultRating ) + ‘”]’ );
if ( highestStar ) {
highestStar.dataset.trClip = this.currentRatingPercentage;
}
},
setRatingPercent( data ) {
this.defaultRating = data.average.toFixed( 1 );
const parts = data.average.toFixed( 2 ).toString().split( ‘.’ );
this.currentRatingPercentage = parts[1] ? parts[1] : 100;
if ( this.currentRatingPercentage === ’00’ ) {
this.currentRatingPercentage = 100;
}
},
setCheckedStar( target ) {
const cardRatingContainer = target.closest( ‘.tasty-recipes-ratings-buttons’ );
const selectedRatingElement = cardRatingContainer.querySelector( ‘[data-tr-checked]’ );
if ( selectedRatingElement ) {
delete selectedRatingElement.dataset.trChecked;
}

const thisStar = target.closest( ‘.tasty-recipes-rating’ );
thisStar.dataset.trChecked = 1;
thisStar.querySelector( ‘[data-tr-clip]’ ).dataset.trClip = 100;
},
maybeFillCommentForm( data ) {
if ( ! data.comment || ! data.comment.content ) {
return;
}

const commentForm = document.querySelector( ‘#commentform’ );
if ( ! commentForm ) {
return;
}

const commentBox = commentForm.querySelector( ‘[name=comment]’ );
if ( ! commentBox || commentBox.value ) {
return;
}

// Add comment details for editing.
commentBox.innerHTML = data.comment.content;
if ( data.comment.name ) {
commentForm.querySelector( ‘[name=author]’ ).value = data.comment.name;
commentForm.querySelector( ‘[name=email]’ ).value = data.comment.email;
}
},
maybeResetTooltip( recipeCardElement, data, rating ) {
if ( this.savingRating === rating ) {
this.resetTooltip( recipeCardElement, data );
}
},
resetTooltip( recipeCardElement, data ) {
window.TastyRecipes.staticTooltip.destroy();
this.savingRating = false;

// Reset the default rating.
const cardRatingContainer = recipeCardElement.querySelector( ‘.tasty-recipes-ratings-buttons’ );
if ( cardRatingContainer ) {
this.defaultRating = ( data && data.average ) ? data.average.toFixed(1) : cardRatingContainer.dataset.trDefaultRating;
cardRatingContainer.dataset.trDefaultRating = this.defaultRating;

this.resetSelectedStar( cardRatingContainer, data );
}
},
resetSelectedStar( cardRatingContainer ) {
const selectedRatingElement = cardRatingContainer.querySelector( ‘[data-rating=”‘ + Math.ceil( this.defaultRating ) + ‘”]’ );
if ( selectedRatingElement ) {
selectedRatingElement.querySelector( ‘[data-tr-clip]’ ).dataset.trClip = this.currentRatingPercentage;
selectedRatingElement.parentNode.dataset.trChecked = 1;
}

const previousSelectedElement= cardRatingContainer.querySelector( ‘[data-tr-checked]’ );
if ( previousSelectedElement ) {
const currentSelectedRating = previousSelectedElement.querySelector(‘[data-rating]’);
if ( currentSelectedRating !== selectedRatingElement ) {
delete previousSelectedElement.dataset.trChecked;
}
}
},
backwardCompFormRatingPosition() {
const ratingsButtons = document.querySelector( ‘#respond .tasty-recipes-ratings-buttons, #tasty-recipes-comment-rating .tasty-recipes-ratings-buttons’ );
if ( ! ratingsButtons ) {
return;
}
const ratingsButtonsStyles = window.getComputedStyle(ratingsButtons);
if ( ! ratingsButtonsStyles.display.includes( ‘flex’ ) ) {
ratingsButtons.style.direction = ‘rtl’;
}

if ( typeof tastyRecipesRating !== ‘undefined’ ) {
// Select the rating that was previously selected in admin.
ratingsButtons.querySelector( ‘.tasty-recipes-rating[value=”‘ + tastyRecipesRating + ‘”]’ ).checked = true;
}

const ratingSpans = ratingsButtons.querySelectorAll( ‘.tasty-recipes-rating’ );
for (const ratingSpan of ratingSpans) {
ratingSpan.addEventListener( ‘click’, event => {
if ( ratingSpan === event.target ) {
return;
}
ratingSpan.previousElementSibling.click();
} );
}
}
};

(function(callback) {
if (document.readyState !== “loading”) {
callback();
} else {
window.addEventListener( ‘load’, callback );
}
})(() => {
window.TastyRecipes.ratings.init( window.trCommon ? window.trCommon.minRating : 4 );
});

 

Recipe by Chef David Sellers of Horno
Story and Styling by Julia Platt Leonard
Support from Alex Hanna
Photography by Kate Russell

Subscribe to TABLE Magazine’s print edition.

Chile Pakora with Cilantro-Mint Chutney

0
Crispy Chile Pakora Fritters with Spinach, Onion, and Aromatic Spices, Served with Cilantro-Mint Chutney and Chicken Malai Kabab. Santa Fe Wine & Chile Fiesta

Ask Chef Paddy Rawal what inspires his cooking and he’ll tell you two things. “People eat with their eyes first, and spice is for flavor, not for heat.” His food is indeed eye-catching, colorful and bright, generous with herbs like cilantro and mint. His use of spices is a masterclass with everything from fenugreek leaves, chaat masala, carom seeds, coriander, and cumin making appearances. The result is food that is balanced and spiced impeccably. It’s also a food that’s as generous and welcoming as the chef himself.

Chile Pakora with Cilantro-Mint Chutney Recipe

INGREDIENTS

FOR THE CHILE PAKORA:
4 cups vegetable oil
3 cups baby spinach, lightly packed and coarsely chopped
1 white onion, thinly sliced
¼ cup serrano chile, chopped
1 cup besan (chickpea flour)
2 tbsp rice flour
1 tbsp ginger-garlic paste
1 tbsp dried fenugreek leaves
1 tsp chaat masala
1 tsp garam masala
½ tsp carom seeds*
Kosher salt

FOR THE CILANTRO-MINT CHUTNEY:
2 cups fresh cilantro, tightly packed
2 cups fresh mint, tightly packed
1 or 2 jalapeños
¼ cup fresh lemon juice
Kosher salt

INSTRUCTIONS

  1. For the pakoras, pour the oil into a large, deep pan and place over medium heat.
  2. Meanwhile, combine the spinach, onion, chiles, chickpea flour, rice flour, ginger-garlic paste, fenugreek, chaat masala, garam masala, carom seeds, and salt to taste in a large bowl. Stir the mixture well. Stir in enough water, about half a cup or a little more, to make a thick batter.
  3. When the oil is hot, working in batches, use a spoon to scoop the mixture and drop it into the hot oil. Fry until golden brown, 4-5 minutes. Drain on paper towels, and sprinkle with chaat masala.
  4. For the cilantro-mint chutney, in a food processor combine the cilantro, mint, jalapeño, lemon juice, and salt to taste and blend until smooth. Serve alongside the pakora.

*Note: Carom or ajwain seeds are a special Indian spice that is used very sparingly.

Chicken Malai Kebab with Mango Habanero Chutney Recipe

A delicious chicken kebab recipe made with serrano chiles, white boneless chicken chunks, and a creamy marinade.

INGREDIENTS

FOR THE CHICKEN MALAI KEBAB:
1 cup Greek yogurt
1 cup soft cream cheese
1 tbsp cracked black pepper
Salt to season
1 tsp fresh chopped garlic
1 tsp fresh chopped ginger
1 tbsp oil
¼ cup chopped serrano chiles
1 tsp cumin powder
1 tsp coriander powder
¼ tsp nutmeg powder
½ tsp green cardamom powder
1 ½ lb boneless chicken breast, cut in 2 x 2-inch chunks

INSTRUCTIONS

  1. In a mixing bowl, add all the ingredients except the chicken. Mix well and set aside.
  2. Add the chicken pieces and thoroughly coat each piece. Marinade in the refrigerator for 30 minutes.
  3. Remove from the refrigerator, place the chicken on skewers, and lay on an ovenproof sheet.
  4. Preheat the oven to grill or convention-cook at 425 degrees. Once ready, place the tray in the oven.
  5. The chicken should take about 15 minutes at the most to cook (if using a thermometer, an internal temperature of at least 165 degrees). Flip the skewers halfway through cooking.

FOR THE MANGO HABANERO CHUTNEY:
25 fresh habanero chiles, stems removed
14 oz bottled mango chutney
2 tbsp lemon Juice
2 tsp rice vinegar
1 cup chopped green bell peppers
1 tsp chopped garlic
½ cup thinly sliced onion
1 tbsp salt
1 tbsp sugar
½ cup chopped tomatoes

INSTRUCTIONS

  1. Place all the ingredients in a saucepan big enough to hold the ingredients along with half a gallon of water.
  2. Let the water come to a boil and then reduce the heat to medium and boil for 10 minutes more.
  3. Let the ingredients cool down.
  4. Using a food processor, blend the mixture in batches and place in the refrigerator for 30 minutes before serving.

Recipe by Chef Paddy Rawal of Raaga-Go / Story and Styling by Julia Platt Leonard / Support from Alex Hanna / Photography by Kate Russell

Subscribe to TABLE Magazine’s print edition.

Burrata Caprese

0
Burrata Caprese Recipe with Heirloom Tomatoes, Burrata, Tangerine Juice, and Balsamic Pearls

There is Caprese salad, and then there is Sassella’s Burrata Caprese salad. Chef Cristian Pontiggia starts with house-made burrata, pairs it with local heirloom tomatoes, adds capers for a sharp punch as well as a swirl of walnut basil pesto, and finishes it with a garnish of Hawaiian basil, tangerine Calabrian chile oil (a game-changing ingredient), dehydrated garlic, volcanic black salt, and balsamic pearls that he creates. It’s a dish that speaks to both the eyes and the stomach in equal measure. To drink, he suggests a Brunello di Montalcino: “Strong on flavor, but with the burrata, a perfect pairing.”

Burrata Caprese Recipe

INGREDIENTS

1 tbsp olive oil
1 tsp tangerine juice, freshly squeezed
2 tbsp pesto
1 heirloom tomato, sliced
1 ball of burrata
2 caper berries
4-5 small basil leaves
½ tsp balsamic pearls* or a drizzle of balsamic vinegar
Black volcanic salt
Crispy garlic

INSTRUCTIONS

  1. Combine the olive oil and tangerine juice.
  2. Spread the pesto on a plate, arrange the tomato slices then top with the burrata, and drizzle with infused oil.
  3. Garnish with caper berries, basil leaves, balsamic pearls or balsamic vinegar, a generous sprinkle of volcanic salt, and some crispy garlic.

Recipe by Chef Cristian Pontiggia of Sassella / Story and Styling by Julia Platt Leonard / Support from Alex Hanna / Photography by Kate Russell

Subscribe to TABLE Magazine’s print edition.

Jambo Slow Cooked Oxtail

0
Slow-Cooked Oxtail Dish with Jamaican Jerk Seasoning, Rosemary, Thyme, and Cinnamon

If you’ve always wanted to learn to make oxtail at home but aren’t sure where to start, our Jambo Slow Cooked Oxtail is here to help. You’ll want to begin this dish the day before to give the rub a chance to do its thing. This way the oxtail has time to slowly cook and become tender enough to fall off the bone on its own. To make a fulfilling dinner, serve the oxtails hot with greens and starch of your choice. At Jambo Cafe, where Chef Ahmed Obo works, this Slow Cooked Oxtail is served with collards and mofongo, a dish of mashed green plantains.

Print

clock clock iconcutlery cutlery iconflag flag iconfolder folder iconinstagram instagram iconpinterest pinterest iconfacebook facebook iconprint print iconsquares squares iconheart heart iconheart solid heart solid icon

Slow-Cooked Oxtail Dish with Jamaican Jerk Seasoning, Rosemary, Thyme, and Cinnamon

Jambo Slow Cooked Oxtail


5 Stars 4 Stars 3 Stars 2 Stars 1 Star


  • Author:
    Chef Ahmed Obo

Description

Once you learn to properly cook oxtail, you’ll be hooked on Caribbean-influenced dish.


Ingredients


Scale

For the rub:

  • 23 green onions, chopped
  • 23 cloves of garlic, chopped
  • 12 tbsp jerk seasoning
  • 2 tsp dried thyme
  • 2 tsp ground cinnamon
  • 1 tsp ground allspice
  • 2 tsp ground coriander 1-2 tbsp olive oil (enough to form a rough paste)

For the slow cooked oxtail:

  • 5 lb of oxtails
  • Olive oil
  • 1 medium onion, chopped
  • 12 cloves of garlic, chopped
  • 1 tbsp jerk seasoning
  • 1 tsp dried rosemary
  • 1 tsp dried thyme
  • 1 tsp ground coriander
  • 2 tsp ground cinnamon
  • 1 tbsp tomato paste
  • ¼ cup Worcestershire sauce
  • 4 cups chicken stock
  • 2 tsp beef base (highly concentrated beef stock)
  • 12 cinnamon sticks


Instructions

  1. To make the rub, mix the ingredients with the olive oil to create a paste. Rub over oxtails, cover, and refrigerate overnight.
  2. To cook the oxtails the next day, heat a teaspoon or so of oil in a roasting pan or Dutch oven–enough to keep the oxtails from sticking. Sauté the onions and garlic for a few minutes. Add the spices and cook them for a few minutes so that you can smell their aroma. Stir the tomato paste into the mixture, add the Worcestershire sauce, chicken stock, and beef base.
  3. Add the oxtails, cover, and roast for 30 minutes at 400 degrees. Lower the temperature to 350 degrees and slow roast for 2 ½ -3 hours. The meat should fall off the bone.

window.trCommon={“minRating”:6,”ajaxurl”:”https://www.tablemagazine.com/wp-admin/admin-ajax.php”,”ratingNonce”:”f011bc3481″,”postId”:5727};
window.TastyRecipes = window.TastyRecipes || {};

window.TastyRecipes.smoothScroll = {
init() {
document.addEventListener( ‘click’, ( e ) => {
let anchor = e.target;
if ( anchor.tagName !== ‘A’ ) {
anchor = anchor.closest( ‘a.tasty-recipes-scrollto’ );
}

if ( ! anchor || ! anchor.classList.contains( ‘tasty-recipes-scrollto’ ) ) {
return;
}

const elementHref = anchor.getAttribute( ‘href’ );
if ( ! elementHref ) {
return;
}

e.preventDefault();
this.goToSelector( elementHref );
});
},
goToSelector( selector ) {
const element = document.querySelector( selector );
if ( ! element ) {
return;
}
element.scrollIntoView( { behavior: ‘smooth’ } );
}
};

document.addEventListener(
‘DOMContentLoaded’,
() => window.TastyRecipes.smoothScroll.init()
);

(function(){

var bothEquals = function( d1, d2, D ) {
var ret = 0;
if (d1<=D) {
ret++;
}
if (d2<=D) {
ret++;
}
return ret === 2;
};

var frac =function frac(x,D,mixed){var n1=Math.floor(x),d1=1;var n2=n1+1,d2=1;if(x!==n1)while(bothEquals(d1,d2,D)){var m=(n1+n2)/(d1+d2);if(x===m){if(d1+d2d2)d2=D+1;else d1=D+1;break}else if(xD){d1=d2;n1=n2}if(!mixed)return[0,n1,d1];var q=Math.floor(n1/d1);return[q,n1-q*d1,d1]};frac.cont=function cont(x,D,mixed){var sgn=x<0?-1:1;var B=x*sgn;var P_2=0,P_1=1,P=0;var Q_2=1,Q_1=0,Q=0;var A=Math.floor(B);while(Q_1<D){A=Math.floor(B);P=A*P_1+P_2;Q=A*Q_1+Q_2;if(B-AD){if(Q_1>D){Q=Q_2;P=P_2}else{Q=Q_1;P=P_1}}if(!mixed)return[0,sgn*P,Q];var q=Math.floor(sgn*P/Q);return[q,sgn*P-q*Q,Q]};

window.tastyRecipesVulgarFractions = JSON.parse(decodeURIComponent(“%7B%22%C2%BC%22%3A%221%2F4%22%2C%22%C2%BD%22%3A%221%2F2%22%2C%22%C2%BE%22%3A%223%2F4%22%2C%22%E2%85%93%22%3A%221%2F3%22%2C%22%E2%85%94%22%3A%222%2F3%22%2C%22%E2%85%95%22%3A%221%2F5%22%2C%22%E2%85%96%22%3A%222%2F5%22%2C%22%E2%85%97%22%3A%223%2F5%22%2C%22%E2%85%98%22%3A%224%2F5%22%2C%22%E2%85%99%22%3A%221%2F6%22%2C%22%E2%85%9A%22%3A%225%2F6%22%2C%22%E2%85%9B%22%3A%221%2F8%22%2C%22%E2%85%9C%22%3A%223%2F8%22%2C%22%E2%85%9D%22%3A%225%2F8%22%2C%22%E2%85%9E%22%3A%227%2F8%22%7D”));

window.tastyRecipesFormatAmount = function(amount, el) {
if ( parseFloat( amount ) === parseInt( amount ) ) {
return amount;
}
var roundType = ‘frac’;
if (typeof el.dataset.amountShouldRound !== ‘undefined’) {
if (‘false’ !== el.dataset.amountShouldRound) {
if ( ‘number’ === el.dataset.amountShouldRound ) {
roundType = ‘number’;
} else if (‘frac’ === el.dataset.amountShouldRound) {
roundType = ‘frac’;
} else if (‘vulgar’ === el.dataset.amountShouldRound) {
roundType = ‘vulgar’;
} else {
roundType = ‘integer’;
}
}
}
if (‘number’ === roundType) {
amount = Number.parseFloat(amount).toPrecision(2);
} else if (‘integer’ === roundType) {
amount = Math.round(amount);
} else if (‘frac’ === roundType || ‘vulgar’ === roundType) {
var denom = 8;
if (typeof el.dataset.unit !== ‘undefined’) {
var unit = el.dataset.unit;
if ([‘cups’,’cup’,’c’].includes(unit)) {
denom = 4;
if (0.125 === amount) {
denom = 8;
}
if (“0.1667″ === Number.parseFloat( amount ).toPrecision(4)) {
denom = 6;
}
}
if ([‘tablespoons’,’tablespoon’,’tbsp’].includes(unit)) {
denom = 2;
}
if ([‘teaspoons’,’teaspoon’,’tsp’].includes(unit)) {
denom = 8;
}
}
var amountArray = frac.cont( amount, denom, true );
var newAmount = ”;
if ( amountArray[1] !== 0 ) {
newAmount = amountArray[1] + ‘/’ + amountArray[2];
if (‘vulgar’ === roundType) {
Object.keys(window.tastyRecipesVulgarFractions).forEach(function(vulgar) {
if (newAmount === window.tastyRecipesVulgarFractions[vulgar]) {
newAmount = vulgar;
}
});
}
}
if ( newAmount ) {
newAmount = ‘ ‘ + newAmount;
}
if ( amountArray[0] ) {
newAmount = amountArray[0] + newAmount;
}
amount = newAmount;
}
return amount;
};

window.tastyRecipesUpdatePrintLink = () => {

const printButton = document.querySelector( ‘.tasty-recipes-print-button’ );

if ( ! printButton ) {
return;
}

const printURL = new URL( printButton.href );
const searchParams = new URLSearchParams( printURL.search );

const unitButton = document.querySelector( ‘.tasty-recipes-convert-button-active’ );
const scaleButton = document.querySelector( ‘.tasty-recipes-scale-button-active’ );

let unit = ”;
let scale = ”;

if ( unitButton ) {
unit = unitButton.dataset.unitType;
searchParams.delete(‘unit’);
searchParams.set( ‘unit’, unit );
}

if ( scaleButton ) {
scale = scaleButton.dataset.amount;
searchParams.set( ‘scale’, scale );
}

const paramString = searchParams.toString();
const newURL = ” === paramString ? printURL.href : printURL.origin + printURL.pathname + ‘?’ + paramString;
const printLinks = document.querySelectorAll( ‘.tasty-recipes-print-link’ );

printLinks.forEach( ( el ) => {
el.href = newURL;
});

const printButtons = document.querySelectorAll( ‘.tasty-recipes-print-button’ );
printButtons.forEach( ( el ) => {
el.href = newURL;
});
};

document.addEventListener( ‘DOMContentLoaded’, () => {

if ( ! window.location.href.includes( ‘/print/’ ) ) {
return;
}

const searchParams = new URLSearchParams( window.location.search );

const unit = searchParams.get( ‘unit’ );
const scale = searchParams.get( ‘scale’ );

if ( unit && ( ‘metric’ === unit || ‘usc’ === unit ) ) {
document.querySelector( ‘.tasty-recipes-convert-button[data-unit-type=”‘ + unit + ‘”]’ ).click();
}

if ( scale && Number(scale) > 0 ) {
document.querySelector( ‘.tasty-recipes-scale-button[data-amount=”‘ + Number(scale) + ‘”]’ ).click();
}
});
}());

(function(){
var buttonClass = ‘tasty-recipes-scale-button’,
buttonActiveClass = ‘tasty-recipes-scale-button-active’,
buttons = document.querySelectorAll(‘.tasty-recipes-scale-button’);
if ( ! buttons ) {
return;
}

buttons.forEach(function(button){
button.addEventListener(‘click’, function(event){
event.preventDefault();
var recipe = event.target.closest(‘.tasty-recipes’);
if ( ! recipe ) {
return;
}
var otherButtons = recipe.querySelectorAll(‘.’ + buttonClass);
otherButtons.forEach(function(bt){
bt.classList.remove(buttonActiveClass);
});
button.classList.add(buttonActiveClass);

var scalables = recipe.querySelectorAll(‘span[data-amount]’);
var buttonAmount = parseFloat( button.dataset.amount );
scalables.forEach(function(scalable){
if (typeof scalable.dataset.amountOriginalType === ‘undefined’
&& typeof scalable.dataset.nfOriginal === ‘undefined’) {
if (-1 !== scalable.innerText.indexOf(‘/’)) {
scalable.dataset.amountOriginalType = ‘frac’;
}
if (-1 !== scalable.innerText.indexOf(‘.’)) {
scalable.dataset.amountOriginalType = ‘number’;
}
Object.keys(window.tastyRecipesVulgarFractions).forEach(function(vulgar) {
if (-1 !== scalable.innerText.indexOf(vulgar)) {
scalable.dataset.amountOriginalType = ‘vulgar’;
}
});
if (typeof scalable.dataset.amountOriginalType !== ‘undefined’) {
scalable.dataset.amountShouldRound = scalable.dataset.amountOriginalType;
}
}
var amount = parseFloat( scalable.dataset.amount ) * buttonAmount;
amount = window.tastyRecipesFormatAmount(amount, scalable);
if ( typeof scalable.dataset.unit !== ‘undefined’ ) {
if ( ! scalable.classList.contains(‘nutrifox-quantity’) ) {
if ( ! scalable.classList.contains(‘nutrifox-second-quantity’) ) {
amount += ‘ ‘ + scalable.dataset.unit;
}
}
}
scalable.innerText = amount;
});

var nonNumerics = recipe.querySelectorAll(‘[data-has-non-numeric-amount]’);
nonNumerics.forEach(function(nonNumeric){
var indicator = nonNumeric.querySelector(‘span[data-non-numeric-label]’);
if ( indicator ) {
nonNumeric.removeChild(indicator);
}
if ( 1 !== buttonAmount ) {
indicator = document.createElement(‘span’);
indicator.setAttribute(‘data-non-numeric-label’, true);
var text = document.createTextNode(‘ (x’ + buttonAmount + ‘)’);
indicator.appendChild(text);
nonNumeric.appendChild(indicator);
}
});

window.tastyRecipesUpdatePrintLink();
});
});
}());

window.TastyRecipes = window.TastyRecipes || {};
window.TastyRecipes.cookMode = {
wakeLockApi: false,
wakeLock: false,
cookModeSelector: ‘.tasty-recipes-cook-mode’,
init() {
if (“wakeLock” in navigator && “request” in navigator.wakeLock) {
this.wakeLockApi = navigator.wakeLock;
}

const cookModes = document.querySelectorAll(this.cookModeSelector);

if (cookModes.length > 0) {
for (const cookMode of cookModes) {
if (this.wakeLockApi) {
cookMode.querySelector(‘input[type=”checkbox”]’).addEventListener(“change”, event => {
this.checkboxChange(event.target);
}, false);
} else {
cookMode.style.display = “none”;
}
}
}
},
checkboxChange(checkbox) {
if (checkbox.checked) {
this.lock();
} else {
this.unlock();
}
},
setCheckboxesState(state) {
const checkboxes = document.querySelectorAll(this.cookModeSelector + ‘ input[type=”checkbox”]’);
for (const checkbox of checkboxes) {
checkbox.checked = state;
}
},
async lock() {
try {
this.wakeLock = await this.wakeLockApi.request(“screen”);
this.wakeLock.addEventListener(“release”, () => {
this.wakeLock = false;
this.setCheckboxesState(false);
});
this.setCheckboxesState(true);
} catch (error) {
this.setCheckboxesState(false);
}
},
unlock() {
if (this.wakeLock) {
this.wakeLock.release();
this.wakeLock = false;
}
this.setCheckboxesState(false);
}
};

(function(callback) {
if (document.readyState !== “loading”) {
callback();
} else {
document.addEventListener(“DOMContentLoaded”, callback);
}
})(() => {
window.TastyRecipes.cookMode.init();
});

window.TastyRecipes = window.TastyRecipes || {};

window.TastyRecipes.staticTooltip = {
element: null,
tooltipElement: null,
deleting: false,
init( element ) {
if ( this.deleting ) {
return;
}
this.element = element;
this.buildElements();
},
destroy() {
if ( ! this.tooltipElement || this.deleting ) {
return;
}

this.deleting = true;
this.tooltipElement.classList.remove( ‘opened’ );

setTimeout( () => {
this.tooltipElement.remove();
this.deleting = false;
}, 500 );
},
buildElements() {
const tooltipElement = document.createElement( ‘div’ );
tooltipElement.classList.add( ‘tasty-recipes-static-tooltip’);
tooltipElement.setAttribute( ‘id’, ‘tasty-recipes-tooltip’ );

const currentTooltipElement = document.getElementById( ‘tasty-recipes-tooltip’ );
if ( currentTooltipElement ) {
document.body.replaceChild( tooltipElement, currentTooltipElement );
} else {
document.body.appendChild( tooltipElement );
}

this.tooltipElement = document.getElementById( ‘tasty-recipes-tooltip’ );
},
show() {
if ( ! this.tooltipElement ) {
return;
}

const tooltipTop = this.element.getBoundingClientRect().top
+ window.scrollY
– 10 // 10px offset.
– this.tooltipElement.getBoundingClientRect().height;
const tooltipLeft = this.element.getBoundingClientRect().left
– ( this.tooltipElement.getBoundingClientRect().width / 2 )
+ ( this.element.getBoundingClientRect().width / 2 ) – 1;
const posLeft = Math.max( 10, tooltipLeft );
this.maybeRemoveTail( posLeft !== tooltipLeft );

this.tooltipElement.setAttribute( ‘style’, ‘top:’ + tooltipTop + ‘px;left:’ + posLeft + ‘px;’ );
this.tooltipElement.classList.add( ‘opened’ );

},
maybeRemoveTail( removeTail ) {
if ( removeTail ) {
this.tooltipElement.classList.add( ‘tr-hide-tail’ );
} else {
this.tooltipElement.classList.remove( ‘tr-hide-tail’ );
}
},
changeMessage( message ) {
if ( ! this.tooltipElement ) {
return;
}
this.tooltipElement.innerHTML = message;
}
};

window.TastyRecipes.ajax = {
sendPostRequest( url, data, success, failure ) {
const xhr = new XMLHttpRequest();
xhr.open( ‘POST’, url, true );
xhr.send( this.preparePostData( data ) );

xhr.onreadystatechange = () => {
if ( 4 !== xhr.readyState ) {
return;
}
if ( xhr.status === 200 ) {
success( JSON.parse( xhr.responseText ) );
return;
}

failure( xhr );
};

xhr.onerror = () => {
failure( xhr );
};
},
preparePostData( data ) {
const formData = new FormData();

for ( const key in data ) {
formData.append( key, data[key] );
}
return formData;
},
};

window.TastyRecipes.ratings = {
defaultRating: 0,
currentRatingPercentage: 100,
savingRating: false,
init( minRating ) {
this.minRating = minRating;

this.formWatchRating();
this.closeTooltipWhenClickOutside();
this.addBodyClassBasedOnSelectedRating();
this.backwardCompFormRatingPosition();
},
formWatchRating() {
const ratings = document.querySelectorAll(‘.tasty-recipes-no-ratings-buttons [data-rating]’);
if ( ratings.length {
event.preventDefault();
this.defaultRating = event.target.closest( ‘.checked’ ).dataset.rating;
this.setCheckedStar( event.target );
this.maybeSendRating( this.defaultRating, event.target );
this.setRatingInForm( this.defaultRating );
} );
}
},
closeTooltipWhenClickOutside() {
window.addEventListener( ‘click’, e => {
// Bailout (don’t remove the tooltip) when the clicked element is a rating star, or it’s the tooltip itself.
if ( e.target.closest( ‘.tasty-recipes-rating’ ) || e.target.classList.contains( ‘tasty-recipes-static-tooltip’ ) ) {
return;
}

window.TastyRecipes.staticTooltip.destroy();
} );
},
setRatingInForm( rating ) {
const ratingInput = document.querySelector( ‘#respond .tasty-recipes-rating[value=”‘ + rating + ‘”]’ );
if ( ! ratingInput ) {
return;
}
ratingInput.click();
},
addBodyClassBasedOnSelectedRating() {
const ratingInputs = document.querySelectorAll( ‘input.tasty-recipes-rating’ );
if ( ! ratingInputs ) {
return;
}
for ( const ratingInput of ratingInputs ) {
ratingInput.addEventListener( ‘click’, currentEvent => {
const selectedRating = currentEvent.target.getAttribute( ‘value’ );
this.handleBodyClassByRating( selectedRating );
this.toggleCommentTextareaRequired( selectedRating );
} );
}
},
handleBodyClassByRating( rating ) {
if ( rating < this.minRating ) {
document.body.classList.remove( 'tasty-recipes-selected-minimum-rating' );
return;
}
document.body.classList.add( 'tasty-recipes-selected-minimum-rating' );
},
toggleCommentTextareaRequired( rating ) {
const commentTextarea = document.getElementById( 'comment' );
if ( ! commentTextarea ) {
return;
}

if ( rating {
window.TastyRecipes.staticTooltip.changeMessage( response.data.message );
window.TastyRecipes.staticTooltip.show();
this.updateAverageText( response.data, recipeCardElement );
this.maybeFillCommentForm( response.data );

// Hide the tooltip after 5 seconds.
setTimeout( () => {
this.maybeResetTooltip( recipeCardElement, response.data, rating );
}, 5000 );
},
() => {
this.resetTooltip( recipeCardElement );
}
);
},
updateAverageText( data, recipeCardElement ) {
if ( ! data.average ) {
return;
}
this.setRatingPercent( data );

if ( ! data.count ) {
return;
}

const quickLink = document.querySelector( ‘.tasty-recipes-rating-link’ );
if ( quickLink ) {
this.setTextInContainer( quickLink, data );
this.setPartialStar( quickLink );
}

const cardStars = recipeCardElement.querySelector( ‘.tasty-recipes-ratings-buttons’ );
cardStars.dataset.trDefaultRating = data.average;
this.setTextInContainer( recipeCardElement.querySelector( ‘.tasty-recipes-rating’ ), data );
},
setTextInContainer( container, data ) {
if ( ! container ) {
return;
}

if ( data.label ) {
const ratingLabelElement = container.querySelector( ‘.rating-label’ );
if ( ratingLabelElement ) {
ratingLabelElement.innerHTML = data.label;
}
return;
}

const averageElement = container.querySelector( ‘.average’ );
if ( averageElement ) {
averageElement.textContent = data.average;
}

const countElement = container.querySelector( ‘.count’ );
if ( countElement ) {
countElement.textContent = data.count;
}
},
setPartialStar( container ) {
const highestStar = container.querySelector( ‘[data-rating=”‘ + Math.ceil( this.defaultRating ) + ‘”]’ );
if ( highestStar ) {
highestStar.dataset.trClip = this.currentRatingPercentage;
}
},
setRatingPercent( data ) {
this.defaultRating = data.average.toFixed( 1 );
const parts = data.average.toFixed( 2 ).toString().split( ‘.’ );
this.currentRatingPercentage = parts[1] ? parts[1] : 100;
if ( this.currentRatingPercentage === ’00’ ) {
this.currentRatingPercentage = 100;
}
},
setCheckedStar( target ) {
const cardRatingContainer = target.closest( ‘.tasty-recipes-ratings-buttons’ );
const selectedRatingElement = cardRatingContainer.querySelector( ‘[data-tr-checked]’ );
if ( selectedRatingElement ) {
delete selectedRatingElement.dataset.trChecked;
}

const thisStar = target.closest( ‘.tasty-recipes-rating’ );
thisStar.dataset.trChecked = 1;
thisStar.querySelector( ‘[data-tr-clip]’ ).dataset.trClip = 100;
},
maybeFillCommentForm( data ) {
if ( ! data.comment || ! data.comment.content ) {
return;
}

const commentForm = document.querySelector( ‘#commentform’ );
if ( ! commentForm ) {
return;
}

const commentBox = commentForm.querySelector( ‘[name=comment]’ );
if ( ! commentBox || commentBox.value ) {
return;
}

// Add comment details for editing.
commentBox.innerHTML = data.comment.content;
if ( data.comment.name ) {
commentForm.querySelector( ‘[name=author]’ ).value = data.comment.name;
commentForm.querySelector( ‘[name=email]’ ).value = data.comment.email;
}
},
maybeResetTooltip( recipeCardElement, data, rating ) {
if ( this.savingRating === rating ) {
this.resetTooltip( recipeCardElement, data );
}
},
resetTooltip( recipeCardElement, data ) {
window.TastyRecipes.staticTooltip.destroy();
this.savingRating = false;

// Reset the default rating.
const cardRatingContainer = recipeCardElement.querySelector( ‘.tasty-recipes-ratings-buttons’ );
if ( cardRatingContainer ) {
this.defaultRating = ( data && data.average ) ? data.average.toFixed(1) : cardRatingContainer.dataset.trDefaultRating;
cardRatingContainer.dataset.trDefaultRating = this.defaultRating;

this.resetSelectedStar( cardRatingContainer, data );
}
},
resetSelectedStar( cardRatingContainer ) {
const selectedRatingElement = cardRatingContainer.querySelector( ‘[data-rating=”‘ + Math.ceil( this.defaultRating ) + ‘”]’ );
if ( selectedRatingElement ) {
selectedRatingElement.querySelector( ‘[data-tr-clip]’ ).dataset.trClip = this.currentRatingPercentage;
selectedRatingElement.parentNode.dataset.trChecked = 1;
}

const previousSelectedElement= cardRatingContainer.querySelector( ‘[data-tr-checked]’ );
if ( previousSelectedElement ) {
const currentSelectedRating = previousSelectedElement.querySelector(‘[data-rating]’);
if ( currentSelectedRating !== selectedRatingElement ) {
delete previousSelectedElement.dataset.trChecked;
}
}
},
backwardCompFormRatingPosition() {
const ratingsButtons = document.querySelector( ‘#respond .tasty-recipes-ratings-buttons, #tasty-recipes-comment-rating .tasty-recipes-ratings-buttons’ );
if ( ! ratingsButtons ) {
return;
}
const ratingsButtonsStyles = window.getComputedStyle(ratingsButtons);
if ( ! ratingsButtonsStyles.display.includes( ‘flex’ ) ) {
ratingsButtons.style.direction = ‘rtl’;
}

if ( typeof tastyRecipesRating !== ‘undefined’ ) {
// Select the rating that was previously selected in admin.
ratingsButtons.querySelector( ‘.tasty-recipes-rating[value=”‘ + tastyRecipesRating + ‘”]’ ).checked = true;
}

const ratingSpans = ratingsButtons.querySelectorAll( ‘.tasty-recipes-rating’ );
for (const ratingSpan of ratingSpans) {
ratingSpan.addEventListener( ‘click’, event => {
if ( ratingSpan === event.target ) {
return;
}
ratingSpan.previousElementSibling.click();
} );
}
}
};

(function(callback) {
if (document.readyState !== “loading”) {
callback();
} else {
window.addEventListener( ‘load’, callback );
}
})(() => {
window.TastyRecipes.ratings.init( window.trCommon ? window.trCommon.minRating : 4 );
});

Recipe by Chef Ahmed Obo of Jambo Cafe
Story and Styling by Julia Platt Leonard
Support from Alex Hanna
Photography by Kate Russell

Subscribe to TABLE Magazine’s print edition.

6 Chefs Share Their Dream Dishes for the Santa Fe Wine & Chile Fiesta

0
Crispy Chile Pakora Fritters with Spinach, Onion, and Aromatic Spices, Served with Cilantro-Mint Chutney and Chicken Malai Kabab. Santa Fe Wine & Chile Fiesta

It’s a must on Santa Fe’s culinary calendar. The Wine & Chile Fiesta returns for its 32nd year, September 27 to October 1, 2023. It all started in September 1991 as a one-day food and wine event. Today, it’s five days with over 60 restaurants and 90 wineries. Come hungry (and thirsty), and you’re guaranteed to leave happy and full. We asked six chefs who are taking part to prepare one of their dream dishes.

Slow-Cooked Oxtail Dish with Jamaican Jerk Seasoning, Rosemary, Thyme, and Cinnamon. Santa Fe Wine & Chile Fiesta

Jambo Cafe

Caribbean-Spiced Slow-Cooked Oxtail with Mofongo & Collard Greens

Chef Ahmed Obo’s oxtail dish is comfort food that meets the Caribbean. The oxtail is tender and melting. The collard greens cut through the richness of the meat, while the mofongo–a patty made with green plantains–is the perfect sponge to soak up the juices. What to drink? Chef Obo suggests a Porcupine Ridge Syrah from South Africa. It’s full-bodied with ripe dark fruit flavors and a hint of black pepper and violets–just the thing for this Caribbean comfort classic. Get the recipe here.

Burrata Caprese Recipe with Heirloom Tomatoes, Burrata, Tangerine Juice, and Balsamic Pearls. Santa Fe Wine & Chile Fiesta

Sassella

Burrata Caprese

There is Caprese salad, and then there is Sassella’s Caprese salad. Chef Cristian Pontiggia starts with house-made burrata, pairs it with local heirloom tomatoes, adds capers for a sharp punch as well as a swirl of walnut basil pesto, and finishes it with a garnish of Hawaiian basil, tangerine Calabrian chile oil (a game-changing ingredient), dehydrated garlic, volcanic black salt, and balsamic pearls that he creates. It’s a dish that speaks to both the eyes and the stomach in equal measure. To drink, he suggests a Brunello di Montalcino: “Strong on flavor, but with the burrata, a perfect pairing.” Get the recipe here.

Crispy Chile Pakora Fritters with Spinach, Onion, and Aromatic Spices, Served with Cilantro-Mint Chutney and Chicken Malai Kabab

Raaga-Go

Chile Pakora with Cilantro-Mint Chutney and Chicken Malai Kebab with Mango Habanero Chutney

Ask Chef Paddy Rawal what inspires his cooking and he’ll tell you two things. “People eat with their eyes first, and spice is for flavor, not for heat.” His food is indeed eye-catching, colorful and bright, generous with herbs like cilantro and mint. His use of spices is a masterclass with everything from fenugreek leaves, chaat masala, carom seeds, coriander, and cumin making appearances. The result is food that is balanced and spiced impeccably. It’s also a food that’s as generous and welcoming as the chef himself. Get the recipe here.

Octopus Braised in a Symphony of Flavors with Sticky Rice, Wasabi Emulsion, Teriyaki Glaze, and Yuzu Aioli

Horno

Teriyaki-Glazed Octopus with Sticky Rice, Wasabi Emulsion, Yuzu Aioli & Furitake

Chef David Sellers’s dish, like the food he serves at his restaurant Horno is all about contrasts. Here there is richness from the teriyaki, balanced by the acidity from the yuzu and heat from the wasabi. To drink, Chef Sellers suggests L’Escale, a Sauvignon blanc from the Loire Valley. It’s juicy, fresh and can hold its own with this dish. For Sellers–a seasoned Wine & Chile Fiesta veteran–the annual event never loses its magic. “I love it. I’ll always support Wine & Chile. I think it’s one of the best events in Santa Fe.” Get the recipe here.

Exquisite Salmon Poke Infused with Yuzu, Truffled Yuzu Kosho Sauce, Spicy Avocado Purée, and Crispy Rice Cracker

Catch Santa Fe Poke

Salmon Poke with Yuzu

Chef Dakota Weiss’s Salmon Poke with Yuzu is nothing less than a plate of edible art. The ingredients–from the wafer-thin slices of lotus root and Fresno chile, to the green pops of color from her avocado purée–create a dazzling display of contrasting yet complementary flavors and textures. Artfully arranged gold flake miso sesame cracker shards are the pièce de resistance. To drink? Chef Weiss suggests a dry Riesling or an Albariño as the perfect accompaniment to this work of art. Get the recipe here.

Green Chili Risotto Recipe with Green Chile Purée, Perfect Eggs, and Microgreens

Bishop’s Lodge

Green Risotto

Ask Chef Peñalosa Nájera of Bishop’s Lodge about the ingredients for his signature green risotto and the answer is simple: Hatch green chile, poblano, “perfect egg,” and mushrooms. But probe deeper and you’ll discover a huge amount of technique behind this Southwestern riff on a classic Italian risotto. Chef Nájera is from Mexico City and has worked in Colombia, Spain, and England and this immersion in other cultures and cuisines shows in his food. “I try to bring my own experience of traveling to this dish,” he says, and it shows. Get the recipe here.

TABLE Magazine New Mexico is a proud sponsor of the 32nd Annual Santa Fe Wine and Chile Fiesta.

Story and Styling by Julia Platt Leonard / Support from Alex Hanna / Photography by Kate Russell / Dinnerware Courtesy of Wild Life Santa Fe

Subscribe to TABLE Magazine’s print edition.

Create a free account, or log in.

Gain access to read this content, plus limited free content.

Yes! I would like to receive new content and updates.