Chicken Piccata, Jasmati Rice and Peas

Tonight I made Chicken Piccata, Jasmati Rice with Garlic and Shallot and Peas for dinner.  It turned out very good, so I thought I would share it with you.

2015-10-15 19.46.52

Chicken Piccata

Ingredients

3

Skinless and boneless chicken breasts, butterflied and then cut in half

Sea salt and freshly ground black pepper

All-purpose flour, for dredging

6 tablespoons

Unsalted butter

5 tablespoons

Extra-virgin olive oil

1/3 cup

Fresh lemon juice

1/2 cup

Chicken stock

1/4 cup

Brined capers, rinsed (optional)

1/3 cup

Fresh parsley, chopped

 

Directions
Butterfly the chicken breasts.  Cutting them in half will will allow you to pound them, with a meat tenderizer, to the desired 3/8″ thickness.

2015-10-15 18.49.382015-10-15 18.51.35

Now this is the fun part!  Using your meat tenderizer, pound the chicken to approximately 3/8″ thickness.

2015-10-15 18.56.44

Season chicken with salt and pepper and prepare the flour/spices dredge.

For my dredge I include Onion Powder, Garlic Powder and Paprika.  You can include cayenne pepper and season salt if you wish.  I like to keep it a bit simpler so it doesn’t mask the flavor of the chicken.

2015-10-15 19.02.17

Dredge chicken in your flour/spice mixture and shake off the excess.

2015-10-15 19.06.13
In a large skillet over medium high heat, melt 2 tablespoons of butter with 3 tablespoons olive oil.  When butter and oil start to sizzle, add 2 pieces of chicken and cook for 3 minutes.  When chicken is browned, flip and cook other side for 3 minutes.

2015-10-15 19.06.302015-10-15 19.09.44Yum!  It looks delicious just like this.  But, I’ll be patient and wait for the sauce.

Rosie decided to join me in all the wonderful smells.

2015-10-15 19.33.43
Remove and transfer to plate.  Melt 2 more tablespoons butter and add another 2 tablespoons olive oil.  When butter and oil start to sizzle, add the other 2 pieces of chicken and brown both sides in same manner.  Repeat this with the last 2 pieces of chicken.

2015-10-15 19.26.51
Into the pan add the lemon juice, stock and capers.  For this meal, I left out the capers.  I just didn’t have any in my pantry; but I do recommend using them if you can!

2015-10-15 19.29.07Return to stove and bring to boil, scraping up brown bits from the pan for extra flavor.

2015-10-15 19.34.11
Check for seasoning. Return all the chicken to the pan and simmer for 5 minutes.

2015-10-15 19.37.20
Remove chicken to a platter.  Add remaining 2 tablespoons butter to sauce and whisk vigorously.

Plate the chicken, pour sauce over chicken and garnish with parsley.

Jasmati Rice

The Jasmati Rice is super simple.  I kick it up a notch by saute’ a finely diced shallot and 1 garlic clove.  Once your shallot and garlic are ready, add 1 cup of Jasmati Rice.  Allow the rice to cook for 3 to 5 minutes.  This allows the rice to blossom and elevate that nutty flavor.

2015-10-15 19.07.09

Add 2 cups water and a pinch of salt, then bring to a boil.  Turn your burner down to simmer, cover the rice and cook for 20 minutes.  When done, remove from burner and allow the rice to rest for 10 minutes.

2015-10-15 19.37.03

Delicious!

Plate the chicken, rice and peas.  Top the chicken with sauce and enjoy!

2015-10-15 19.46.52

Debugging SharePoint Issues and ULS Log Files

I often see administrators and developers new to SharePoint find debugging difficult and complex.

When working with SharePoint, log files are your friend.  In large on-premise farms, locating issues within large log files can be time consuming and sometimes difficult.

When I am presented with an error that contains a correlation ID, I first resort to PowerShell instead of a ULS Viewer.

Two PowerShell cmdlets that are your friend are: Get-SPLogEvent and Merge-SPLogFile.

Before you can use these cmdlets in your PowerShell scripts, make sure to load the SharePoint PowerShell snapin.

if((Get-PSSnapin -Name Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue) -eq $null)
{
    Add-PSSnapin Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue
}

Get-SPLogEvent

The Get-SPLogEvent cmdlet will retrieve specific events from a ULS Log File.  For example, the following call will retrieve all entries that occurred during a specified time range:

Get-SPLogEvent -StartTime "12/04/2007 17:00" -EndTime "12/04/2007 18:00"

If you wish to retrieve ULS entries associated with a specific correlation ID, you can use the following:

Get-SPLogEvent | ? {$_.Correlation -eq "<Correlation ID>"} | Select Area, Category, Level, EventID, Message

Where <Correlation ID> is the id you wish to filter.

If you wish to display the results in a nicely formatted list, add Format-List:

Get-SPLogEvent | ? {$_.Correlation -eq "<Correlation ID>"} | Select Area, Category, Level, EventID, Message | Format-List

Be patient when running the Get-SPLogEvent cmdlet as it can take quite a long time to traverse through all the ULS log files.

I have a diagnostics PowerShell library that contains many functions that simplify diagnosing issues, writing log files, etc.  One of the functions in this library is my Get-SPLogEventByCorrelationID.  Which simply calls the Get-SPLogEvent cmdlet and filters the results by a specified correlation ID.

function Get-SPLogEventByCorrelationID
{
    [CmdletBinding()]
    Param([Parameter(Mandatory=$true)]
        [string]$CorrelationID
    )
    $logEntries = Get-SPLogEvent | ? {$_.Correlation -eq $CorrelationID} | Select Area, Category, Level, EventID, Message
    return($logEntries)
}

For more information on using the Get-SPLogEvent cmdlet, see the following:

Merge-SPLogFile

The Merge-SPLogFile cmdlet combines ULS log entries, from all servers in a SharePoint farm, to a single (specified) log file.

The following example will merge all ULS log files for the last hour:

Merge-SPLogFile -Path "C:\Logs\FarmMergedLog.log" -Overwrite

If you wish to merge all ULS log events for a specific correlation ID, you can use the following call:

Merge-SPLogFile -Path "C:\Logs\FarmMergedLog.log" -Correlation "<Correlation ID>" -Overwrite

Where <Correlation ID> is the id you wish to filter.

As with the Get-SPLogFile, I have included some common functions in my diagnostics library.  One that I use on a regular basis is Merge-SPLogFileByCorrelationID

function Merge-SPLogFileByCorrelationID
{
    [CmdletBinding()]
    Param(
        [Parameter(Mandatory=$true)]
            [string]$CorrelationID,
        [Parameter(Mandatory=$false)]
            [bool]$Overwrite=$false,
        [Parameter(Mandatory=$false)]
            [int]$LeadingSpaceCount=0
)

    $ls = "".PadRight($LeadingSpaceCount," ")
    $diagConfig = Get-SPDiagnosticConfig
    $ulsLogLocation = $diagConfig.LogLocation + "\MergeLog-Correlation (" + $CorrelationID + ").log"
    Write-Verbose ([string]::Format("$ls- Writing merged logs to file [{0}].", $ulsLogLocation))
    if($Overwrite)
    {
        Merge-SPLogFile -Path $ulsLogLocation -Correlation $CorrelationID -Overwrite
    }
    else
    {
        Merge-SPLogFile -Path $ulsLogLocation -Correlation $CorrelationID
    }
}

Other References

Conclusion

With a little knowledge and tools, you can become efficient at debugging issues in SharePoint.  If you would like a copy of my diagnostic script, please contact me; I will be happy to send it to you.

Happy SharePointing!