Home Blog Page 178

Summer Squash Roll-Ups

0
Zucchini and yellow summer squash fill two cast iron pans.
Peak summer squash season is coming — here’s a delicious way to enjoy the bounty.

That overabundant, peak-harvest moment of summer always brings zucchini and summer squash into the limelight. What do we do with it all!? Here’s a lovely, elegant idea that takes no time or trouble once you slice Shenot Farm‘s produce and sprinkle the dish with Blackberry Meadows Farm bacon. It’s downright delicious.

SUMMER SQUASH ROLL-UPS RECIPE

INGREDIENTS

1 zucchini
1 yellow squash
1 tsp salt
1 cup ricotta cheese
½ cup grated Parmesan
1 egg
1 tbsp freshly chopped parsley
1 tsp black pepper
1 tsp garlic powder
3-4 strips of bacon, fried crisp and crumbled, optional

INSTRUCTIONS

  1. Using a mandolin, thinly slice zucchini and squash lengthwise into long ribbons. Place into a Ziplock back with 1 teaspoon salt and let sit for 20 minutes (this will allow the squash to become pliable and will keep the pieces from breaking while rolling up).
  2. In a bowl, evenly mix the remaining ingredients. Line up each ribbon of squash flat on a plate, spread 1 tablespoon of filling evenly over each ribbon, roll up, and place in a baking pan. Sprinkle with extra Parmesan.
  3. Broil for 10-12 minutes until the filling is cooked through and the tops start to brown, then serve.

STORY BY KEITH RECKER / PHOTOGRAPHY BY DAVE BRYCE / RECIPE AND STYLING BY ANNA CALABRESE

With the support of Buy Fresh, Buy Local of Western Pennsylvania and PA Preferred

Lamb Sloppy Joes

0
Lamb Sloppy Joes deconstructed on a white plate.

Lamb Fest 2021 was a delicious day for lamb lovers and connoisseurs of good flavor, including dishes of these special Lamb Sloppy Joes. Seven of our nine teams shared their recipes to try at home for TABLE readers.

The chef teams who competed for the top prize at TABLE Magazine’s Lamb Fest 2021 brought their experience, imagination, and talents to SouthSide Works in October. The results were the nine fantastic variations on deliciousness. Each entry was unique in its flavor profile, in its textures, and in its presentation. It was a tough choice, but hundreds of attendees voted for their taste buds. Guest Judge Hal B. Klein supervised the count and announced the verdict. And the rest is lamb history.

Team Average Joes at Our Lamb Fest

Speckled Egg founders Jacqueline and Nathan Schoedel met up with R.C. Carter and free agent Patrick Duffy to create a luscious mouthful of savory lamb sloppy joes finished perfectly with luxurious creme fraiche and served on a tiny bun from Mediterra. The team rounded out this delicious picture with the sharpness of homemade pickled vegetables. This is a dish anyone can try, and succeed with, at home.

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

Lamb Sloppy Joes deconstructed on a white plate.

Lamb Sloppy Joes


5 Stars 4 Stars 3 Stars 2 Stars 1 Star


  • Author:
    Kylie Thomas

Description

A more decadent sloppy joe that you won’t mind getting messy for.


Ingredients


Scale

For the creme fraiche:

  • 1 pt heavy cream
  • 2 tbsp buttermilk

For the lamb mixture:

  • 1 lb ground lamb
  • Salt and pepper
  • 1 yellow onion, diced
  • 1 red bell pepper, diced
  • 3 garlic cloves, minced
  • 1 tbsp tomato paste
  • 1/2 cup white wine
  • 1 cup Heinz ketchup
  • 1/2 cup Worcestershire sauce
  • 1/4 cup yellow mustard
  • 5 dashes Tabasco
  • 2 tbsp brown sugar
  • 2 tbsp smoked paprika
  • 1 tbsp cumin
  • 2 tbsp chili powder
  • 1 tbsp coriander
  • 1 tsp allspice
  • 1/2 tsp cinnamon


Instructions

  1. Mix heavy cream and buttermilk in a non-reactive container (Tupperware works well).
  2. Cover and let sit overnight at room temperature for at least 12 hours. Refrigerate.
  3. Heat a large sauté pan over medium-high heat. Add ground lamb and season with salt and pepper. While the lamb is cooking, break up the lamb into smaller pieces.
  4. When fully cooked, remove the lamb from the pan and set aside.
  5. Return pan to heat; add onions and peppers. Season with salt and pepper. Saute for a few minutes until fragrant. Add garlic and when the garlic becomes fragrant, add tomato paste, and stir frequently. Cook until tomato paste starts to darken, about 3 minutes.
  6. Deglaze the pan with white wine scraping the bottom of the pan. Reduce the white wine by half.
  7. Return the lamb to the pan and add the remaining ingredients and salt and pepper to taste.
  8. Stir often, bring to a boil, and then down to a simmer. Cook on the lowest setting for a half hour. Taste and re-season if necessary.
  9. Assemble sandwiches by adding sloppy joe mix to a bun and top with creme fraiche.

window.trCommon={“minRating”:6,”ajaxurl”:”https://www.tablemagazine.com/wp-admin/admin-ajax.php”,”ratingNonce”:”c8586ad661″,”postId”:3592};
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 Jacqueline Schoedel, Nathan Schoedel, R.C. Carter, and Patrick Duffy
Story by Keith Recker
Photography by Laura Petrilla
Styling by Ana Kelly

Subscribe to TABLE Magazine’s print edition.

Granola and Coconut Chia Pudding

0
A hand on the left digs into coconut chai pudding and granola. Next to that bowl sits plates of fruit and salad. Here we share the granola recipe and the recipe for the chia pudding.

Consider time in the kitchen an opportunity to connect with yourself, and to infuse the day with mindfulness and good feeling. Savor a healthy snack and recommit to the goals you’ve set. Fairmont Pittsburgh Sous Chef Caleb Allen shares his recipes for Coconut Chia Pudding and Fl.2 Granola as one way to enjoy your quiet time.

Fl. 2 Granola Recipe

INGREDIENTS

1 vanilla bean
8 cups rolled oats
2 cups sliced almonds
2 cups pine nuts
3 cups coconut
1 cup brown sugar
1 cup maple syrup
3/4 cup vegetable oil
Pinch of sea salt
2 cups raisins

DIRECTIONS

Cut the vanilla beans and scrape out seeds into a bowl. Add dry ingredients. Add wet ingredients. Combine. Bake at 325° until golden brown. Add raisins to mix once cooled.

Coconut Chia Pudding Recipe

INGREDIENTS

2 cups coconut milk
2 tablespoons maple syrup
¼ cup water
½ cup chia seeds

DIRECTIONS

Combine wet ingredients, then whisk in chia seeds. Transfer to airtight container and refrigerate overnight. Once set, layer it, starting with the pudding, then granola, then diced mango or any fruit you like!

Don’t miss a single delicious thing: Subscribe to TABLE Magazine here!

Forging Forward: Food from the Heart

0
Tom Berna, Fishes and Loaves Cooperative Ministries’ operations manager, says that the organization serves 60 to 70 households five days a week. Photo by Jeff Swensen

Forging Forward 2022 is a series of six articles about organizations helping our region make progress on the significant issues challenging our friends and neighbors. The series is presented with the generous support of The Pittsburgh Foundation.  

The #ONEDAY Critical Needs Campaign, a day of online giving to organizations doing vital work, is on August 9: mark your calendars and plan to be part of something great!

One of the most famous parables of the Bible has Jesus, through faith and love, feeding five thousand people with five loaves and two fishes. This metaphor for multiplying goodness in the service of others is the backbone of Fishes & Loaves Cooperative Ministries. Based in the Hazelwood community of Pittsburgh, this nonprofit organization offers Meals on Wheels, congregate lunch, emergency food, and a buying club for residents of Hazelwood, Glenwood, Glen Hazel and most of Greenfield.

After the last grocery store closed in the Hazelwood community more than a decade ago, the community decided to start a buying club and shopping service to serve their neighbors and friends. “This was before Instacart,” said Tom Berna, operations manager. “We started shopping twice a month for about 15 to 20 families. When the pandemic hit, those numbers doubled. And we continue to serve 60 to 70 clients a day, five days a week,” he added.

The organization operates out of St. Stephen Catholic Church Pastoral Center and utilizes a commercial kitchen and pantry storage in the Spartan Community Center of Hazelwood.

While Meals on Wheels is the noprofit’s primary focus, serving more than 100 people a week, it also created a grab-and-go program where people have the option to dine and congregate with other community members. It also offers an emergency food program, which originated during the pandemic.

“In 2018, people would call and say, “I don’t have any food in my house.” We started to think about this: ‘Why don’t we deliver emergency food?’ We began giving out food and by 2021, we gave out 12,000 pounds of food to 100 families. We are one of the few food pantries that deliver. We get calls from people who can’t get to us, providing food once-a-month within a seven-mile radius,” said Tom, a former engineer-turned-deacon who, prior to coming to Pittsburgh worked around the country in hospitals and prisons.

Through this work, Tom and his team have also provided wellness checks, connecting community members to other resources and support systems. He and his team are often the first people who connect with those in need of help.

“I was bringing food to one home and the woman answered the door in a bedsheet. Her boyfriend had taken all of her clothes, and her children’s clothing, too. We were able to find her support so that she could send her children back to school, properly clothed, and so that she could get back to work, as well,” he said.

Never knowing what he may encounter, leading with compassion and an open heart has served him well over the years. Not only does Fishes & Loaves feed the body, but the work nourishes peoples’ souls, too.

“It gives people hope that there is help available and there are people doing it out of the kindness of their hearts,” said Tom. The organization currently has two part-time employees and 20 volunteers. During the pandemic all have worn masks and gloves and implemented contactless delivery service and grab-and-go lunches.

“When the government checks went out during Covid, we saw a decrease in need for emergency food. But once those checks ran out, the demand went right back up again,” he noted. Working with The Greater Pittsburgh Food Bank and 412 Food Rescue, the nonprofit has been able to provide fresh and shelf-stable foods that are nutritious and delicious. “Once in a while we get pastries from Giant Eagle, which is always a nice treat,” he said.

Groups like The Pittsburgh Foundation help provide Fishes & Loaveswith the funds it needs to continue its mission. “This work is why I get out of bed in the morning,” said Tom. “When we help our neighbors, we uplift everyone.”

Join The Pittsburgh Foundation’s ONE DAY campaign to provide support to Fishes & Loaves Community Ministry on Aug. 9. Together, we can create a healthy, more equitable world.

Get to know Fishes & Loaves Cooperative Ministries here, and support its work to address our neighbors in need.

Read about other organizations doing vital work to help our neighbors in Western Pennsylvania by reading more in our Forging Forward series, presented with the support of The Pittsburgh Foundation:

Tech 25: The Future is Now

Outreach Teen and Family Services

Neighborhood Legal Services

Fishes and Loaves

Build the Community Center

Healthy Start

Easing the food insecurity of our neighbors is the mission of Fishes and Loaves. Photo by Jeff Swensen

Tom Berna, operations manager for Fishes and Loaves, loads up supplies. Photo by Jeff Swensen

Fishes and Loaves delivers to residents of Hazelwood, Glenwood, Glen Hazel and most of Greenfield. Photo by Jeff Swensen

STORY BY NATALIE BENCIVENGAPHOTOGRAPHY BY JUSTIN MERRIMAN

Don’t miss a single fascinating thing!

Subscribe to TABLE Magazine.

Chicken Bruschetta

0
This quick and easy appetizer for a summertime party can be made with pesto, arugula and figs for vegetarian guests.

The first ingredient of a great summer party is people! That’s why TABLE was so excited when Marvista Design + Build decided to invite their favorite clients to a summer soiree at their Squirrel Hill showroom, alongside sponsors Cambria Stone, Tisdel Sub Zero Wolf, Don’s Appliances, and TABLE Magazine.

Chef Brandie Lamb journeyed to Pittsburgh from her Cincinnati home, bringing her expertise as a Tisdel SubZero Wolf chef to the proceedings. She joined forces with Pittsburgh caterer Elegant Edge’s owner Judah Cowen to develop a light, bright Kosher menu.

Just before the guests gathered, Chef Brandie showed us how each dish was made. Photographer Dave Bryce and our publisher Justin Matase captured the deliciousness…and the party came alive just after.

Enjoy these dishes at a summer gathering of your own design!

CHICKEN BRUSCHETTA RECIPE

 Note: If you have vegetarian guests, grill extra bread, spread it with pesto, sprinkle fresh arugula and sprouts on top… and maybe a slice of ripe fig!

For the crostini

Sliced French baguette

Olive oil

Salt

Pepper

1/2 tsp Garlic power

1/2 tsp Onion powder

For the chicken

1 lb chicken breast

1 tbsp olive oil

1 tbsp balsamic vinegar

½ tsp oregano

½ tsp salt

½ tsp pepper

For the tomatoes

1 cup diced tomatoes

¼ cup fresh chopped basil

1 tbsp olive oil

Salt

Pepper

1/4 tsp Dijon mustard (set aside for plating)

Slice baguette, drizzle with olive oil, and season with salt, pepper, garlic and onion powers. Bake for roughly 10 minutes or until lightly crunchy. If you grill them, put the flame on low and watch them carefully!

Mix chicken with oil, vinegar, and seasoning. Grill till ready. Dice chicken into ½-inch squares.

Dice tomatoes and mix with basil, olive oil, salt, and pepper. Mix tomatoes and diced chicken.

Spread crostini with Dijon mustard.

Top crostini with tomatoes, then chicken, and serve.

Photography by Dave Bryce / Styling by Justin Matase / Venue by Marvista Design + Build

Try more great summer dishes from our party at Marvista Design + Build:

Grilled Sweet Corn Salad

Strawberry Pecan Salad

Green Beans with Shallots and Almonds

Salmon with Pineapple Mango Salsa

Skirt Steak with Scallion Salsa

Don’t miss a single delicious thing:

Subscribe to TABLE Magazine here!

Pupusas for All from Café Agnes

0
Pupusas on a blue plate on a striped tablecloth.

By now, you’ve probably heard of Café Agnes, the local pupuseria that serves up delicious Salvadoran fare to Pittsburghers across town at various popups. You might wonder how in the heck did this place come to be and what exactly goes into making a pupusa? When owner Marcella Ogrodnik first opened Cafe Agnes, many people were not familiar with the typical Salvadoran staple known as the pupusa. One taste of Marcella’s interpretation of El Salvador’s national dish will quickly help you understand why they are so popular. 

For folks new to this type of cuisine, pupusas consist of masa, a nixtamilized corn dough that is stuffed with cheese, beans and any other ingredients that might suit your fancy. The masa and its accompaniments are carefully pressed to form a savory pancake of sorts, and then placed on a flat-top griddle to cook through. Once griddled to perfection, the pupusa is topped with homemade red salsa and curtido, a pickled green cabbage slaw. Make no mistake, this dish is not greater than the sum of its parts; it is sublime because of the contribution of each player. The crispy exterior of the pupusa welcomes the smoky spice of the salsa, with a balance from the bright crunch of the curtido’s veggies. Its flavor hits every high note that you need it to, and if you haven’t tried one yet, consider this your benediction into guaranteed palate bliss.

Pupusas for All from Café Agnes

When I first moved to Pittsburgh, I must admit that I did not have the highest of hopes in finding Latin American fare. Stumbling upon Cafe Agnes’ stand at the farmer’s market felt like the discovery of one of my dearest cravings in the most unlikely of places. More time exploring the culinary nooks and crannies of this city has shown me that this is a common occurrence.

While steeped in robust traditions of Eastern European cuisine, Pittsburgh surprisingly has pockets of other culinary heritages that are springing up all over. Ogrodnik, a native of the South Hills neighborhood, combines her mixed heritage of Salvadoran and Pittsburgher to share her cooking with the community. She found her calling to cook at a very young age. “I watched the Food Network so much as a kid and I just loved going to the grocery store. I knew in middle school that I wanted to be a chef. That or Britney Spears. I knew one of them was going to be easier than the other.”

Pop Star Dreams to Pupusas

Those dreams of pop stardom gave way to an early beginning of a successful career in food. “When I was a teenager, I remember [that] no place would hire me, because I was under 18 and it was a higher risk for them to put a child in the kitchen,” shares Ogrodnik. Eventually, restaurant chain Houlihan’s gave Marcella a chance and fostered her transition into a career in the food industry. “That was my first kitchen job when I was 17 and ever since then I’ve been in restaurants,” says Marcella. “I’m not in a restaurant now, technically, but you know I’ve been cooking in restaurants since then.”

After attending the Culinary Institute of America and cooking in famous kitchens like The French Laundry and Pittsburgh’s once-loved Cure, Ogrodnik has established a highly successful food business without having a restaurant space of her own. I learned that this comes with a unique set of challenges. Marcella shares, “Because I cook out of a commissary kitchen and not my own brick and mortar, most purveyors won’t deliver to me. I usually spend about 3 days each week in the commissary kitchen prepping ingredients, grinding masa, and making frozen tamales/pupusas.” If it sounds like Marcella has a lot to juggle to keep her food stall afloat, it is because she does. Thankfully, she gets by with a community of support. 

A Delicious Tribute

When I visit her station at the Squirrel Hill Farmer’s Market, I walk past the snaking line of people patiently awaiting their orders to find Marcella working with her mother and sister-in-law. With lavender locks, a tall frame and calm smile, her sister-in-law takes the orders of patrons while her mother, a petite woman with kind eyes and a warm disposition, prepares the aguas frescas and calls orders out to Marcella. They work together seamlessly, so attuned to their roles that the line of customers moves at a steady pace while it continues to grow. Mom spoons out portions of the large container of masa to make it easier for Marcella to form the pupusa.

After flattening the masa in between her palms, Marcella stuffs it with what seems like an unconscionable amount of beans, meat and cheese. I marvel at how deftly she manages to form the patty with her hands. Her fingers rhythmically work over the masa as if in time to a beat that orchestrates the placement of each pupusa crackling on the cooktop.

After tasting one of the more popular options on her menu, the chicharron pupusa, I immediately felt like I was back Central America, where these flat rounds of stuffed masa are everywhere. It felt as if I had tasted authenticity. However, Marcella is interested in no such title. “By using and supporting local producers here in Pittsburgh, my food is not authentic or traditional. I would never claim either of those labels. I think my food is a tribute to Salvadoran and Latin American culture.” What a delicious tribute indeed. 

Where to Find Café Agnes’s Pupusas

In 2025, you can stay in touch with Cafe Agnes on social media for popups at Duo’s Taqueria or farmer’s markets across Pittsburgh. A word to the wise: pre-order the frozen pupusa before you plan your next trip. While you can find Marcella preparing them fresh at the market, they often sell out before the day is over. Plus, you’ll be craving another one as soon as you finish the first. Trust me.

Story by Jasmine Williams
Photography by Michael Swensen

Subscribe to TABLE Magazine‘s print edition.