August 07, 2023
Young Kwak
A NOTE FROM CHEF CALLAHAN:
Carnitas, or 'little meats,' are a staple in Mexican cuisine. There are various cooking techniques, depending on where you're eating them. For the most part, carnitas are braised, slow roasted, or stewed in lard. At Dos Gordos we do them a little bit differently. We use two types of fat to cook ours — pork fat and the difference maker, rendered duck fat. (Hence the name, "Dos Gordos," which literally means "two fats.") Duck fat can be found at most grocery stores.
This is a super easy recipe, and carnitas can be eaten in tacos, burritos, on nachos, or with eggs. All they need is your favorite hot sauce and some good cherry tomato pico de gallo. I like to cure the pork overnight, but in a pinch it can just be generously seasoned.
INGREDIENTS:
- 5 pounds pork butt or shoulder, cut into 3 inch cubes
- 1 cup kosher salt
- 1 cup sugar
- ¼ cup ground black pepper
- 1 cinnamon stick
- 1 bay leaf
- 1 orange, halved
- 1 white onion, halved
- 4 cups duck fat, pork fat, bacon fat, or whatever fat you want to cover the pork
- Cheese cloth
Young Kwak
DIRECTIONS:
- Combine the salt, sugar, and pepper in a medium mixing bowl.
- Toss the cubed pork into the bowl and mix around just enough to have the cure stick to the pork. Place in a pan and refrigerate overnight.
- Melt fat in a large pot. Cut your orange in half and squeeze the juice into the fat. Place cinnamon, bay leaf, orange and onion in cheesecloth and wrap up into a sachet.
- Add cured pork to the fat, along with your flavorful sachet.
- Bring fat and pork to a little roll and turn down to a gentle simmer. Simmer for 2½ hours.
- After 2½ hours, increase the heat slightly to brown the pork a little and finish cooking for another 1½ hours or until the pork is completely tender.
- Remove the pork from the fat and serve how you wish.
Young Kwak
CHEF'S NOTE: "I recommend a hot sauce — as spicy as you can handle — to cut into the fattiness of the pork and the brightness of the pico. We use a salsa de arbol."
— RECIPE COURTESY OF DOS GORDOS CHEF CJ CALLAHAN
') let lineHeight = jQuery('[line-height-check]').get(0).clientHeight; jQuery('[line-height-check]').remove() if (jQuery(element).prop('tagName').match(/HIDDEN/i) !== null) { jQuery(element).children('div').last().css({ marginBottom: `${lineHeight*2}px` }); } else { jQuery(element).css({ marginTop: `${lineHeight*2}px`, marginBottom: `${lineHeight}px` }); } // const insertionBlockClass = `fdn-paragraph-insertion-block`; const styleElementHook = `fdn-paragraph-insertion-styles`; jQuery(element).addClass(insertionBlockClass); if (jQuery(`[${styleElementHook}]`).length === 0) { jQuery('div.fdn-content-body, div #storyBody').append('
') const paragraphLineHeight = jQuery('[line-height-check]').get(0).clientHeight; jQuery('[line-height-check]').remove() const styleElement = jQuery(`
`); const styleText = ` div.fdn-content-body br+.${insertionBlockClass}:not([hidden]), div #storyBody br+.${insertionBlockClass}:not([hidden]) { margin-top: ${paragraphLineHeight*2}px; margin-bottom: ${paragraphLineHeight}px; } div.fdn-content-body br+.${insertionBlockClass}[hidden] > div:last-of-type, div #storyBody br+.${insertionBlockClass}[hidden] > div:last-of-type { margin-bottom: ${paragraphLineHeight*2}px; } ` styleElement.text(styleText); jQuery('head').append(styleElement); } // } } jQuery(element).insertBefore(this.paragraphEndNodes[index]); } else { console.warn('Foundation.ParagraphTool.insertElemenAt: invalid insertion index', index); } } this.insertElemenAtEnd = function (element) { if (this.paragraphEndNodes.length) { let lastNode = this.getNodeAtIndex(this.paragraphEndNodes.length -1); if (this.isDoubleBrParagraphBreak(lastNode) || this.isBrParagraphBreakBeforeBlockElement(lastNode)) { if (jQuery(element).get(0).tagName.match(/SCRIPT/i) !== null) { jQuery('
').insertAfter(this.paragraphEndNodes[index]); jQuery('
').insertAfter(this.paragraphEndNodes[index]); } else { jQuery('div.fdn-content-body, div #storyBody').append('
') let lineHeight = jQuery('[line-height-check]').get(0).clientHeight; jQuery('[line-height-check]').remove() if (jQuery(element).prop('tagName').match(/HIDDEN/i) !== null) { jQuery(element).children('div').last().css({ marginBottom: `${lineHeight*2}px` }); } else { jQuery(element).css({ marginTop: `${lineHeight*2}px`, marginBottom: `${lineHeight}px` }); } } } } this.bodyContainer.append(element); } this.getNodeAtIndex = function (index) { return this.paragraphEndNodes[index]; } }
`); } var paragraphCount = myParagraphTool.getParagraphEndNodeCount(); // No need to insert if there aren't enough paragaphs if (paragraphCount >= parseInt(item.requiredCountToDisplay)) { // Matches specific paragraph insertion indexes if (item.insertPoint.match(/^\d+$/) !== null) { var insertIndex = parseInt(item.insertPoint) - 1; // Insert within content if (insertIndex < paragraphCount) { myParagraphTool.insertElemenAtIndex(componentElement, insertIndex); } // Append to the end if the insert point is beyond the paragraph count else { myParagraphTool.insertElemenAtEnd(componentElement) } } // Matches for 1/2, 1/4, 2/3, 5/6, etc else if (item.insertPoint.match(/^[1223456]\/[23456]$/) !== null) { var fractionMatch = new RegExp(/^([123456])(?:\/)([23456]$)/); var fractionPart = parseInt(item.insertPoint.match(fractionMatch)[1]); var fractionWhole = parseInt(item.insertPoint.match(fractionMatch)[2]); var fractionValue = fractionPart / fractionWhole; var fractionIndex = Math.floor(myParagraphTool.paragraphEndNodes.length * fractionValue) - 1; myParagraphTool.insertElemenAtIndex(componentElement, fractionIndex); } // Matches for every Nth insertion point else if (item.insertPoint.match(/^\d*th$/i) !== null) { var intervalIndex = parseInt(item.insertPoint.match(/^(\d*)th$/i)[1]); var startingIndex = parseInt(item.startingPoint) - 1; var insertionMax = parseInt(item.maxInsertions) || 100; var insertionCount = 0; for (var i = startingIndex; i < myParagraphTool.paragraphEndNodes.length && insertionCount < insertionMax; i++) { if ((i - startingIndex) % intervalIndex === 0) { let currentNode = myParagraphTool.getNodeAtIndex(i); const clonedComponent = componentElement.clone(); myParagraphTool.insertElemenAtIndex(clonedComponent, i); insertionCount++; } } } } }); Foundation.Content['26560118'].setupInlineComponents = function () { return true; }; if (typeof callback === 'function') { callback(); } }, 200); } Foundation.Content['26560118'].previewInsertionPoints = function () { var myParagraphTool = Foundation.Content['26560118'].paragraphTool myParagraphTool.paragraphEndNodes.each((index, item) => { const insertionPointPlaceholder = jQuery(`
Insertion point ${index+1}
`) myParagraphTool.insertElemenAtIndex(insertionPointPlaceholder, index); }); return 'Paragraph insertion placeholders applied.'; }