Home Blog Page 59

Eva Longoria Inspired Mojito

0
Two mojito cocktails, clear on top and yellow on the bottom, in highball glasses and garnished with lime wedges and mint. Mojito Recipe

A classic Cuban drink that has been enjoyed for centuries, it is believed that the first mojito cocktail was created in the late 16th century by Sir Francis Drake, a British explorer who was visiting Havana at the time. The drink was originally made with lime, sugar, and mint, but over time, variations of the recipe have emerged, including the addition of rum and soda water. Our Eva Longoria inspired mojito recipe features white rum and club soda to top off the cocktail.

The actress’s 2023 CNN show Searching for Mexico showcased the food and culture of six diverse regions in the southern country, with the aim to illustrate Mexico’s multifaceted offerings beyond the cliche tacos and tequila. She inspired us to dive deeper into time-honored Mexican cuisine.

Eva Longoria Inspired Mojito Recipe

INGREDIENTS

2 oz white rum
1 oz fresh lime juice
2 tsp sugar (or simple syrup)
8-10 fresh mint leaves
Club soda (to top off)
Ice cubes
Lime wedges and extra mint leaves for garnish

DIRECTIONS

  1. In a highball glass, gently muddle the mint leaves and sugar (or simple syrup).
  2. Add the lime juice to the glass.
  3. Fill the glass with ice cubes and pour in the white rum.
  4. Use a bar spoon or a long stirring stick to mix the ingredients together.
  5. Top off the glass with club soda and give it a gentle stir.
  6. Garnish the glass with a lime wedge and a sprig of mint.

Recipe by Gabe Gomez / Photography by Dave Bryce / Cocktail by Sarah Cascone / Styling by Anna Calabrese

Check out our other Eva Longoria inspired recipes:

Michelada
Sangria
Huachinango a la Veracruzana
Horchata
Tacos de Lengua

Subscribe to TABLE Magazine’s print edition.

Eva Longoria Inspired Sangria

0
Two deep red sangria cocktails sit in wine glasses and garnished with lemon wedges. Sangria Recipe

Originating in Spain, Sangria is a refreshing and fruity cocktail popular for summer gatherings and perfect for sipping on a hot day. Its name comes from the Spanish word “sangre,” meaning blood, due to the deep red color of the drink. The traditional recipe includes red wine, chopped fruit, brandy, and a sweetener, often served with ice and sparkling water. Our Eva Longoria inspired Sangria uses traditional ingredients but swaps sparkling water for club soda.

The actress’s 2023 CNN show Searching for Mexico showcased the food and culture of six diverse regions in the southern country, with the aim to illustrate Mexico’s multifaceted offerings beyond the cliche tacos and tequila. She inspired us to dive deeper into time-honored Mexican cuisine.

Recipe by Gabe Gomez
Cocktail by Sarah Cascone
Styling by Anna Franklin
Photography by Dave Bryce

Subscribe to TABLE Magazine’s print edition.

Huachinango a la Veracruzana Inspired by Eva Longoria

0
Red Snapper in Spicy Tomato Sauce sits on a white rectangle plate. Huachinango a la Veracruzana Recipe

Originating from Veracruz, Mexico, Huachinango a la Veracruzana is a classic fish dish featuring a red snapper, natively found in the Gulf of Mexico, the western Atlantic Ocean, and the Caribbean Sea. If possible, the fresher the snapper, the better for this savory recipe.

Eva Longoria’s 2023 CNN show Searching for Mexico showcased the food and culture of six diverse regions in the southern country, with the aim to illustrate Mexico’s multifaceted offerings beyond the cliche tacos and tequila. She inspired us to dive deeper into time-honored Mexican cuisine.

What is Huachinango a la Veracruzana? 

Huachinango a la Veracruzana highlights the coastal flavors of the Veracruz region, blending the freshness of the fish with the vibrant, tangy sauce. The term “huachinango” refers specifically to red snapper in Mexico. The name comes from the Nahuatl word huachinanco, which translates to “red” or “reddish,” likely referring to the fish’s distinctive coloration. It’s often served with rice or tortillas, making for a flavorful and satisfying meal that showcases the culinary traditions of Mexico.

Huachinango a la Veracruzana Inspired by Eva Longoria Recipe (Red Snapper in Spicy Tomato Sauce)

Ingredients

  • 1 whole red snapper
  • 3 cloves of garlic, well chopped
  • 2 large limes, juiced
  • 1 cup chicken stock
  • 1 medium onion, well chopped
  • 1 can crush tomatoes, 28 oz
  • 3 pickled jalapeños, well chopped
  • 5 green olives with pimentos, sliced
  • 1 tbsp capers
  • 1 bunch of parsley, well chopped
  • 2 bay leaves
  • 1 tbsp of vegetable oil
  • Pinch of dried Mexican oregano
  • Pinch of salt
  • Pinch of clove
  • Pinch of pepper

Instructions

  1. Clean and scale the red snapper, leaving the head and tail intact. Use a sharp knife to make shallow cuts in the flesh of the fish.
  2. In a bowl, mix the chopped garlic, lime juice, salt, pepper, and clove. Pour the marinade over the fish and let it marinate for 30 minutes.
  3. Heat vegetable oil in a pan over high heat. Sear the fish for a few minutes on each side until lightly browned.
  4. Add the chicken stock, crushed tomatoes, jalapeños, green olives with pimentos, and capers, onion, bay leaves, oregano, pinch of salt and pepper. Low simmer for 15 minutes.
  5. Serve the entire snapper on a large dish. Garnish with parsley.

Recipe by Gabe Gomez / Photography by Dave Bryce / Food and Styling by Anna Franklin

A footer photo with a grey and white marble background, three TABLE Magazines and subscribe info and button

Subscribe to TABLE Magazine‘s print edition.

Eva Longoria Inspired Tacos de Lengua

0
Three Tacos de Lengua sit on a plate. Red tomatoes, onion, and cilantro are seen on top. Tacos de Lengua Recipe

Tacos de lengua, or beef tongue tacos, are a popular dish in Mexican cuisine. The tender, flavorful meat is slow-cooked with spices and served with fresh toppings on warm tortillas. While some may be hesitant to try tongue, it’s a delicacy in many cultures and is a sustainable way of using the entire animal. Our Eva Longoria inspired tacos de lengua recipe is a delicious and adventurous way to explore new flavors and expand your culinary skills.

The actress’s 2023 CNN show Searching for Mexico showcased the food and culture of six diverse regions in the southern country, with the aim to illustrate Mexico’s multifaceted offerings beyond the cliche tacos and tequila. She inspired us to dive deeper into classic Mexican cuisine.

Eva Longoria Inspired Tacos de Lengua Recipe

INGREDIENTS

1 beef tongue, approximately 3-4 pounds
3 large white onions, chopped
4 garlic cloves, finely chopped
1 bay leaf
A pinch of salt
A pinch of whole peppercorns
2 tbsp of olive oil

INSTRUCTIONS

  1. In a stock pot, fill two-thirds of it with water. Add the beef tongue, two chopped onions, garlic cloves, bay leaf, peppercorns, and salt. Simmer over medium-low heat for 5-6 hours.
  2. Remove the beef tongue from the pot and allow it to cool to room temperature. Peel off the skin and shred the meat.
  3. Heat olive oil in a cast iron skillet. Add the remaining chopped onion and the shredded beef tongue. Sauté until the meat is slightly crispy.
  4. Serve the sautéed tongue on warm corn tortillas, topped with fresh pico de gallo.

Recipe by Gabe Gomez / Photography by Dave Bryce / Food and Styling by Anna Franklin

Check out our other Eva Longoria inspired recipes:

Michelada
Sangria
Mojito
Huachinango a la Veracruzana
Horchata

A footer photo with a black background and subscribe info and button

Subscribe to TABLE Magazine‘s print edition.

Eva Longoria Inspired Horchata

0
Horchata, a frothy beverage light brown in color, sits in a pitcher next to two glasses, one filled with Horchata, one with just ice. Horchata Recipe

Horchata traces its origins back to the sun-soaked terrains of North Africa, rebranded in Spain as “horchata de chufa,” courtesy of the Moors’ conquest that left an indelible mark on the Iberian palate. Eventually, it crossed oceans, landing in Mexico, unleashing its irresistible charm.

Enter Eva Longoria, whose CNN program Searching for Mexico is a love letter to the nation’s diverse culinary and cultural landscape; it is a deep dive into the heart and soul of a country as complex as a finely crafted mole. Inspired by her show, we developed this horchata recipe — our love language for Mexican culture and all its flavors.

Eva Longoria Inspired Horchata Recipe

INGREDIENTS

1 cup of white rice
1 cup of sugar
2 cinnamon sticks
1 cup of sliced almonds
1 can of evaporated milk
2 cups of almond milk
1 tablespoon of vanilla extract

DIRECTIONS

  1. In a bowl, combine the white rice, cinnamon sticks, and sliced almonds. Cover with water and let it soak overnight.
  2. After soaking, strain the water and add the mixture to a blender. Add evaporated milk and blend until smooth.
  3. With a fine strainer, strain the liquid into a pitcher to remove any remaining solids.
  4. Add the sugar, vanilla extract, and almond milk to the pitcher. Stir well until all the ingredients are thoroughly combined.
  5. Add a liter of water to the pitcher and stir. Serve over ice.

Recipe by Gabe Gomez / Photography by Dave Bryce / Food and Styling by Anna Calabrese

Check out our other Eva Longoria inspired recipes:

Michelada
Sangria
Mojito
Huachinango a la Veracruzana
Tacos de Lengua

Subscribe to TABLE Magazine’s print edition.

Eva Longoria Inspired Michelada Recipe

0
Two Michelada cocktails orange red in color sit in tall glasses, garnished with lime and Tajín. Michelada recipe

The Michelada cocktail is a popular Mexican beverage enjoyed by many around the world. What makes this drink stand out is its savory flavor — typically made with beer, lime juice, hot sauce, and other spicy seasonings; the Michelada serves well as a fiery accompaniment to any delicious Mexican meal.

About Eva Longoria’s Journey Through Mexican Cuisine 

Eva Longoria’s 2023 CNN show Searching for Mexico showcased the food and culture of six diverse regions in the southern country, with the aim to illustrate Mexico’s multifaceted offerings beyond the clichés of tacos and tequila. She inspired us to dive deeper into time-honored Mexican cuisine, including trying out a Michelada recipe. Some variations of the Michelada recipe include adding tomato juice, clamato juice, or even a splash of Maggi sauce. Feel free to experiment and customize.

Check out our other Eva Longoria inspired recipes:

Recipe by Gabe Gomez and Sarah Cascone
Styling by Anna Franklin
Photography by Dave Bryce 

Bucatini with Squash Blossoms and Guanciale

0
A plate of bucatini with squash blossom on top of it

We understand the urge to stuff and deep fry your squash blossoms or add them to a quesadilla. Consider for a moment, however, a delightful pasta dish that combines the flavors of tender squash blossoms, salty guanciale (Italian cured pork jowl), and al dente bucatini pasta. We love our Farmer’s Markets in New Mexico and celebrate this week with recipes like the following: Bucatini with Squash Blossoms and Guanciale that will liven up any weekly menu.

What Are Squash Blossoms? 

The squash blossom is an edible flower that comes from the Cucurbita plant, which grows in New Mexico and many other regions of the Southwest. If you don’t live in New Mexico, you can order it online, or swap it out with another kind of edible flower, as there are many different kinds. This bucatini recipe is great on its own, but you can also enhance it by adding a red sauce, as bucatini is one of the major sauce players in the pasta world. It soaks up sauce flavor like no other, and combined with the mouthwatering guanciale and little herbaceous bite from the squash blossom, this dish is a winner.

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

A plate of bucatini with squash blossom on top of it

Bucatini with Squash Blossoms and Guanciale


5 Stars 4 Stars 3 Stars 2 Stars 1 Star


  • Author:
    Gabe Gomez

Description

An unconventional twist on bucatini.


Ingredients


Scale

  • 12 squash blossoms, de-stemmed and chopped
  • 4 ounces guanciale, diced
  • 2 cloves garlic, minced
  • 1 package of dry bucatini pasta
  • 1/4 cup grated Pecorino Romano cheese
  • Pinch of salt and pepper
  • Olive oil


Instructions

  1. Prepare the squash blossoms by removing the stems from the blossoms and rinse. Fine chop the blossoms to integrate with other ingredients and set aside.
  2. Bring a large pot of salted water to a boil. Once boiling, add the bucatini pasta and cook until al dente. Reserve about 1 cup of pasta cooking water before draining.
  3. Heat a drizzle of olive oil over medium heat in a large skillet. Add the diced guanciale and cook until it becomes crispy and browned, about 4-5 minutes. Use a slotted spoon to transfer the guanciale to a paper towel-lined plate, leaving the rendered fat in the skillet.
  4. Add the minced garlic to the same skillet with the rendered guanciale fat. Sauté for about 1 minute until fragrant.
  5. Add the squash blossoms to the skillet and sauté for another 2-3 minutes.
  6. Toss in the cooked bucatini pasta and crispy guanciale. Stir everything together to combine. Add some reserved cooking water.
  7. Remove the skillet from the heat and sprinkle grated Pecorino Romano cheese over the pasta. Toss again to combine to create a silky sauce. Hit with a bit of salt and freshly ground black pepper.

window.trCommon={“minRating”:6,”ajaxurl”:”https://www.tablemagazine.com/wp-admin/admin-ajax.php”,”ratingNonce”:”d2ca297453″,”postId”:4799};
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 );
});

 

Story by Gabe Gomez
Photo by Sebastian Coman 

Subscribe to TABLE Magazine’s print edition.

The Food Trucks of Santa Fe

0
A black plate holds four tacos topped with green and purple sauce while a pink plate sits in the top left corner holding roasted peppers from a food truck in Santa Fe.

TABLE contributor and revered New Mexico food writer Cheryl Alters Jamison examines the delight-on-wheels of some of Santa Fe’s marvelous food trucks.

Dinner on the Move

Food trucks used to have a reputation as a source of inexpensive fast food, and not much more. You can still find cheap eats at trucks, but the quality has increased wildly over more recent years. Santa Fe was a little late to the food truck revolution, relative to Portland, Austin, and other towns also known for good eating. However, these days, our city is a delight for moveable feasting. You can find everything from Native American to vegan Jamaican. Come along with me on a tour around some of my favorites. To further reinforce the quality of these mobile meals, I took them back to TABLE’s photography studio, where our team gave them the glam turn the dishes deserve.

I think the sense of discovery is part of the fun of food trucks, so be sure to look for your own finds. Good areas for spotting multiple trucks include around Meow Wolf, by Santa Fe Antiques on Marquez Place, across from the State Capitol on Old Santa Fe Trail, and along Airport Road from Cerrillos Road to the Santa Fe Country Club

El Chile Toreado

A burrito coated in red sauce sits on a dark plate accompanied by roasted peppers and flower petals. A bottle of coke sits slanted above the plate and another plate can be seen in the top right corner filled with limes.

If you have any doubts about the quality fare of some food trucks, look no further than my first choice. El Chile Toreado garnered a James Beard Foundation Best Southwest Chef semi-finalist nod earlier this year. Father-daughter team Luis and Berenice Medina shared the honor, but they are quick to credit the rest of their immediate family, as well, for the business’s success. Luis started this granddaddy of Santa Fe food trucks in 2003. Berenice worked in the stand growing up, then went off to Le Cordon Bleu in Los Angeles, and returned. When I asked Berenice whether she changed up any of the dishes after culinary school, she said no, because her dad had already perfected them. She was able to refine their business systems, however.

For many years, the truck sat on Cordova Road near the busy intersection with St. Francis Drive. After an ungainly apartment complex swallowed the lot, the Medina family rebooted and set up shop again in a nearby spot. They’re along Early Street off Cerrillos Road. A second, very recent, outpost sits on Siler Road in the Big Jo Hardware lot. Look for the cute logo of a mustache made of two chiles.

A Burrito for Any Time

Hefty hand-held burritos are a specialty any time of day, from 7:30 a.m. until mid-afternoon. Breakfast burritos stuffed with eggs and other goodies are hustled out the truck’s window by the dozens every morning. My favorites are from the lunch menu, though available all the hours the truck is open. I eat plenty of meat, but I especially like the veggie burrito here. It’s a well-balanced toss-up of sauteed potatoes, pico de gallo, beans, green chile, and more. The accompanying red salsa, fired up by chiles de arbol and Colorado, offers a particularly piquant counterpoint to the rich mixture. All of the fillings can be ordered in soft tacos, too. I switch back and forth most often among the carne asada, ground beef picadillo, pork carnitas, and chicken in adobo.

One of the treats here is the condiment bar. After you order, you’re given a plastic bag to spoon out your choices among a classic pico de gallo, a cabbage-and-cilantro mix, pickled red onions, and the grilled jalapeños that inspired the truck’s fiery name. If you’re a fan of Mexican Coke, it’s available by the bottle here.

Bang Bite Filling Station  

You might never find this truck on your own, in spite of it being New Mexico sunset orange in color. It sits behind the Brakeroom — one of Santa Fe Brewing’s tap rooms — totally hidden by the small brick building, which was once the sleeping quarters for the nearby railroad’s brakemen. Owner Enrique Guerrero came to Santa Fe to be executive chef at La Casa Sena many years back. He went on to work for other high-end properties around town before deciding to be his own boss with this food truck. In addition to the Bang Bite on Galisteo, he has other trucks that cater movie sets.

Bang Bite serves one of Santa Fe’s best burgers, an extravaganza of Certified Angus, combining brisket, chuck, and short ribs. It can be topped in myriad ways. I like the classic green chile cheeseburger, which comes with cheddar cheese, shredded lettuce, chopped New Mexican green chile, and more green chile mixed into the mayo. About the most elaborate that I get here, sometimes, is to add a side of the bacon jam, but the burger doesn’t need it for flavor. Top-quality french fries accompany the burger and other sandwiches, like the Cubano or pulled pork. On Fridays, the truck serves first-rate fish and chips, with more of those great fries and seared green beans accompanying a hefty portion of crisply fried fish. Seating is available on the terrace of The Brakeroom or inside the charming space. Of course, you should accompany the meal with one of the Santa Fe Brewing Company beers. I opt for the Nutty Brown Ale. While there, be sure to find the fabulous Frank Zappa quote about beer in the front room. 

Fusion Tacos

Birria tacos from a food truck in santa fe sit on a dark plate on a dark wood counter with a little bowl of Birria broth nearby and a spoon beneath the plate.

Multiple Santa Fe trucks, two Albuquerque locations, and expanding! You can find a bright red Fusion truck in almost every part of town now. To me, Fusion’s all about birria, a juicy stewed Mexican meat mixture. I discovered the dish some dozen years ago while eating my way through Tijuana, and was thrilled to have it show up later in Santa Fe. The stew is typically goat on its home turf in Jalisco, cooked down to shreds in an adobo sauce of chiles, vinegar, garlic, and spices. Here though, it’s made with tender beef. When stuffed into tacos, the tortillas are typically dipped into the soupy liquid before frying up crisp. Then the tacos are served with a cup of the consommé for dunking, bite by bite. At Fusion, the tacos — called quesabirria — also have a thick layer of melted cheese inside, to add yet more delectable texture.

True to its name, Fusion creates a world of other dishes with the birria, too. Check out the ramen bowl made with the savory meat, or maybe the quesa pizza. Fusion offers some nice-looking salads and entrées of seared tilapia, chicken, salmon, and more, but honestly, I’ve never gotten to any of those or to the breakfast pancakes or waffles. Yes, it’s all about the birria to me. With a glass of the rice beverage, horchata, I’m totally content. 

Jesusushi

Raw fish, rice, and sushi from a food truck in Santa Fe is arranged on three different dark plates with sprigs of herbs in between the plates.

Jesus Mendoza’s cleverly named sushi truck sits near bustling Cerrillos Road, but you have to look a little to find it. Jesusushi is tucked into the parking lot surrounding Eclipse Car Wash. Apparently, it’s gotten pretty popular, because someone has painted some of the surrounding parking spots with “car wash” or “sushi.” Jesus used to work at both Kai Sushi and the late Osaka before starting his own business. 

His menu is quite sizable for coming out of a mobile kitchen with a single chef. You can get simple pieces of nigiri or opt for elaborate rolls, including the namesake Jesusushi roll. It’s a tour de force, with shrimp tempura, avocado, cream cheese, spicy mayo, eel sauce, and a topping of torched salmon. I often opt for the salmon skin handrolls, which have the signature crispy skin in small crunchy pieces. The chirashi sushi bowl makes a colorful mix with its raw fish, cooked shrimp, seaweed salad, and tiny tobiko fish roe over rice. In some moods, I order the sashimi or the baked scallop roll, which also includes a couple of tempura shrimp in the mix. Jesus makes rice balls, and a variety of salads, and loads of other specialties. After a dozen trips, I still haven’t made it through them all, but I’m sure having fun trying. 

Craft Donuts & Coffee

A variety of donuts sit on two black plates on a dark wood counter with a bitten donut and coffee cup sitting on the counter.

I’ve gone most of my life without being a big fan of donuts or coffee. The Craft truck, parked across from the State Capitol, helped change all of that. Unlike most traditional donut shops, the donuts are fried fresh for every order before the finishing touches added. You can get a simple cake or raised glazed donut here. I started with those, and then went through a cinnamon roll donut phase. I since have worked up to some of the fancier — and fanciful — combos like cookies and cream with vanilla glaze and chocolate cookie crumbles, and the s’more, with chocolate glaze, graham cracker crumbs, and a torched marshmallow sitting jauntily on top. Sometimes I just get plain silly, with the Homer, topped with strawberry glaze and generous rainbow sprinkles. You can choose to build your own donut extravaganza too, picking from among glazes, drizzles, sprinkles, and more.

Proprietors Craig and Michelle McGregor came to Santa Fe some dozen years ago. They had briefly operated a mini-donut mall franchise in Albuquerque, which wasn’t a great business experience for them. The silver lining, however, was that they became super-proficient at making donuts. Michelle dreams up the many specials they run from month to month. I’m especially partial to the biscochito donut offered in December. Upcoming spring flavors will likely include key lime and strawberry shortcake, among other fun offerings. Red Rock Roasters from Albuquerque supplies the coffee for the truck. I’m always game for the latte. In warmer weather, the many choices of Italian sodas can cool me down. The combination’s a good snack, or a fine finish for any meal. 

Story by Cheryl Alters Jamison / Styling by Keith Recker / Photography by Tira Howard

A footer photo with a grey and white marble background, three TABLE Magazines and subscribe info and button

Subscribe to TABLE Magazine‘s print edition.

Más o Menos Poblano Memelas

0
plated memela with salsa and avocado
This recipe for poblano salsa memelas dives into the heart of Puebla, Mexico.

Travel to the heart of Puebla, Mexico — a culinary center where traditions dance with the modern world — with this recipe that dives into the heart of Puebla and their beloved Memelas. Not quite a tortilla, sope, or huarache, the memela is like so much of Mexico’s beautiful cuisine. This recipe for Más o Menos Poblano Memelas outlines some basics for Mexican cuisine, including a poblano salsa, but is ready to be customized for your own tastes.

Más o Menos Poblano Memelas

Yields 16 Memelas

Memelas Ingredients:

2 pounds of freshly prepared masa (preferably from a local tortilleria)
1/4 cup of butter
1/2 cup of mashed black beans
10 ounces of crumbled queso fresco
Fresh slices of avocado

Poblano Salsa Ingredients:

2 poblano peppers
1 small onion, finely diced
2 cloves of garlic, minced
1 tablespoon of vegetable oil
1 cup (240 ml) of chicken broth
Salt and pepper to taste

Poblano Salsa Directions:

  1. Char the poblano peppers over an open flame or under a broiler until the skins are blistered and blackened. Place them in a bowl, cover, and let them steam for about 10 minutes. Peel off the charred skins, remove the seeds, and roughly chop the flesh.
  2. In a saucepan, heat the vegetable oil over medium heat. Add the diced onion and minced garlic, sauté until soft and translucent.
  3. Add the chopped poblano peppers to the saucepan and stir for a minute. Pour in the broth and let it simmer for about 5 minutes until the peppers are tender.
  4. Transfer the mixture to a blender and blend until smooth. Season with salt and pepper according to your taste. Set aside.

Memela Directions:

  1. Divide the masa into 16 equal portions and shape each one into a three-inch ball.
    Heat a nonstick griddle or cast-iron skillet over medium heat.
  2. Individually press each masa ball between plastic sheets using a tortilla press. If you don’t have a press, use a rolling pin to flatten them into ovals or “huarache” style.
    Transfer the flattened masa onto the preheated skillet and cook each side for about 2 minutes.
  3. As the memelas cook, spread butter on each side and add a layer of mashed black beans to one side.
  4. Remove from heat and top each memela with the prepared poblano salsa, crumbled queso fresco, and slices of fresh avocado.

Recipe and Story by Gabe Gomez

Don’t miss a delicious thing: Subscribe to TABLE Magazine’s print edition.

Timeless Chocolate Chip Cookies

0
Chocolate Chips cookies on a baking sheet

Indulge in the classic delight of Timeless Chocolate Chip Cookies with this easy-to-follow recipe. These delectable treats feature a perfect balance of softness and chewiness, studded with decadent semi-sweet chocolate chips that melt in your mouth with every bite. With a simple list of ingredients and straightforward instructions, you’ll have a batch of freshly baked cookies ready to enjoy in no time. Whether you’re a seasoned baker or a novice in the kitchen, this recipe guarantees a crowd-pleasing result.

What Are the Best Chocolate Chips to Use in Cookies?

When it comes to baking the perfect chocolate chip cookie, the type of chocolate chip you choose can significantly impact the final result. Semi-sweet chocolate chips are a classic choice for chocolate chip cookies. They offer a balanced flavor of sweet and slightly bitter, which complements the other ingredients in the cookie dough without overpowering them. Dark chocolate chips will add a richer, more intense flavor with depth and complexity. Though, if you do happen to prefer a sweeter cookie, milk chocolate chips are a good choice. They provide a creamy, indulgent flavor that’ll create a rich result. You’ll also want to look for high-quality brands that use real cocoa butter once you decide which type of chocolate chips to buy. You want to avoid brands with hydrogenated oils since they can affect the taste and even the texture of your cookies.

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

Chocolate Chips cookies on a baking sheet

Timeless Chocolate Chip Cookies


5 Stars 4 Stars 3 Stars 2 Stars 1 Star


  • Author:
    Gabe Gomez

Description

Timeless, classic, who doesn’t love a chocolate chip cookie?


Ingredients


Scale

  • 1 cup (2 sticks) unsalted butter, softened
  • 3/4 cup granulated sugar
  • 3/4 cup packed brown sugar
  • 1 tsp vanilla extract
  • 2 large eggs
  • 2 1/4 cups all-purpose flour
  • 1 tsp baking soda
  • 1/2 tsp salt
  • 2 cups Guittard Semi-Sweet Chocolate Chips


Instructions

  1. Preheat your oven to 375°F and line baking sheets with parchment paper or silicone mats.
  2. In a large mixing bowl, cream the softened butter, granulated sugar, and brown sugar until smooth and fluffy.
  3. Add the vanilla extract and eggs to the butter mixture, one at a time, beating well after each addition.
  4. Whisk together the all-purpose flour, baking soda, and salt in a separate bowl.
    Gradually add the dry and wet ingredients, mixing until just combined. Be cautious not to over-mix the dough.
  5. Stir in the chocolate chips and, if desired, the chopped nuts.
    Drop rounded tablespoons of dough onto the prepared baking sheets, leaving enough space between each cookie.
  6. Bake in the oven for 9 to 11 minutes or until the cookies are lightly golden around the edges. The centers may appear slightly soft but will firm up as the cookies cool.
  7. Allow the cookies to cool on the baking sheets for a few minutes before transferring them to wire racks to cool completely.

window.trCommon={“minRating”:6,”ajaxurl”:”https://www.tablemagazine.com/wp-admin/admin-ajax.php”,”ratingNonce”:”c158876db5″,”postId”:4743};
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 Gabe Gomez

Don’t miss a delicious thing: Subscribe to TABLE Magazine’s print edition.