Jamaican Jerk Chicken

2015-10-29 19.01.57

The other night I had a craving for Jamaican Jerk Chicken.  I’ve made this recipe before and it’s so good, I just had to make it again.  However, this time I decided to share it with you.

Jerk Marinade

This marinade will make enough for 10 to 12 chicken thighs.  I always cook extra because its so good the next day (hot or cold).


1/2 cup Extra Virgin Olive Oil
1 tablespoon Allspice
1 teaspoon Ground cinnamon
1 teaspoon Ground nutmeg
1 whole Yellow (Spanish) or White Onion
1 whole head Garlic, finely chopped
1 (2”) piece Fresh Ginger
6 Scallions (sliced)
4 Limes (juiced)
2 tablespoons Low-sodium Soy Sauce
10 to 12 sprigs Fresh Thyme
1 (or 2) Scotch bonnet pepper (Test the heat!)
1/2 cup Packed light brown sugar


Mix all of the ingredients in your favorite food processor or blender.  Process/blend until a smooth consistency.  Divide the marinade in to 2 large Ziploc bags and place 4 to 5 pieces in each.  Place in the refrigerator for at lease 12 hours.  My preference is 24 hours; giving that delicious marinade a change to penetrate and tenderize the chicken.

I also flip the bags, in the refrigerator, a couple times; making sure the marinade has completely coated the chicken.

About 30 minutes before you wish to cook the chicken, take it out of the refrigerator and let it rest and come closer to room temperature.

2015-10-29 18.04.09

Grill is ready and so is the chicken!

I prefer a charcoal grill, I just love the smoky flavor I get from it.  However, you can grill these on either gas or charcoal.  I keep my grill around 300 degrees.  Place each piece of chicken on the grill, leaving at least 1” between them.  I cook the chicken for 30 to 45 minutes, flipping and rotating every 10 minutes.

2015-10-29 18.44.20

While your chicken is cooking, you can make a delicious Coconut Jasmine Rice!

Jasmine Rice


1 cup Jasmine Rice
1 1/2 cups Coconut Milk
1/2 cup Water
1/2 Yellow (Spanish) or White Onion (diced fine)
3 cloves Fresh Garlic (diced fine)


In a large pan, add a tablespoon of olive oil.  Turn your burner on medium and toss in the onions.  Let them cook for about 5 minutes.

2015-10-29 18.18.49

Add the garlic and cook for another 2 to 3 minutes; until soft and fragrant.

Move the onion and garlic to one side of the pan and pour the 1 cup of rice in the other side.  Stirring constantly, allow the rice to cook and blossom for 5 to 7 minutes.

2015-10-29 18.20.38

Now mix all of the ingredients together and add the coconut milk and water.  Turn the heat up to high and bring to a boil.  Stir constantly.

2015-10-29 18.24.05

Once the rice liquid is boiling, turn your burner to low (simmer), place a lid on the pan and leave it for 20 minutes.  The result will be light and fluffy Coconut Jasmine rice ~yum~.

2015-10-29 18.26.33


This is a simple, but very delicious, dinner.  I love this dish coming off the grill and left-overs the next day.  Now let’s eat.

Stay Hungry!

Kale, Sausage and Potato Soup

Rainy days and soup.  IMHO, that’s comfort food at its best.

Kale?  I always thought Kale was inedible and even rarely used as a garnish.  However, I remember my first experience eating Zuppa Toscana Soup at Olive Garden.  All of my previous thoughts about Kale went away.  That soup was amazing.  And served with their garlic sticks? ~oh my~

Yesterday we had some pretty torrential storms and there are more in our forecast for today.  So I thought I would make this soup with garlic crostini’s.

I hope you love it!


2 bunches fresh kale, torn into bite size pieces
2 pounds Italian sausage
3 pounds red potatoes, sliced thin
1 yellow onion, fine dice
3 cups chicken broth (I prefer low sodium so I can control the amount of salt)
2 cups whole milk
4 cups half-and-half
1/4 cup heavy cream
Sprigs fresh thyme
1 sprig fresh oregano (removed from stems)
1/2 teaspoon red pepper flakes (optional)  If you use a sweet Italian sausage, you may wish to add these.  I use a hot Italian sausage so this isn’t needed.
Salt and fresh ground pepper to taste


Tear the Kale in to bite size pieces and set aside.

Fill a pot with water, liberal amount of coarse kosher salt and sprigs of thyme.  Boil the sliced red potatoes for 10 minutes.  Drain and set aside.

2015-10-19 17.30.44In your favorite soup pot, remove the Italian sausage from the casing, break apart and brown.  If you find there is an excessive amount of fat, drain it off before adding the onion.  Now add the onion and cook for another 3 to 5 minutes.

2015-10-19 18.00.22Add the red pepper flakes (optional), oregano, chicken broth, whole milk and half-and-half.  Simmer, on low to medium, for 30 to 40 minutes.

2015-10-19 18.14.15(Note – while the soup is simmering, you can prepare your crostini’s)

Add sliced red potatoes, heavy cream and kale.  Simmer for another 10 to 15 minutes.  Serve and enjoy!

2015-10-19 18.54.32


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



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


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


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


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
    $logEntries = Get-SPLogEvent | ? {$_.Correlation -eq $CorrelationID} | Select Area, Category, Level, EventID, Message

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


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

    $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))
        Merge-SPLogFile -Path $ulsLogLocation -Correlation $CorrelationID -Overwrite
        Merge-SPLogFile -Path $ulsLogLocation -Correlation $CorrelationID

Other References


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!

Perfect Breakfast Potatoes

I was eating brunch at a restaurant, in Fresno, this last week and breakfast potatoes that were hard and seemed undone.  If you have ever had this problem with your potatoes, here is a guide for making the perfect potatoes.

This technique doesn’t have to be just for breakfast potatoes, I use it for scalloped potatoes, au gratin potatoes and for many other recipes.

The primary key is to boil your potatoes first.  Which leads me to another (related) topic.

Water for Boiling

Many home cooks don’t realize the flavor you can incorporate in to foods when boiling.  There aren’t many vegetables I boil, but when I do, I always season my water.  Yes, that’s right; season the water.  At a minimum, always include salt in your water.

When I am parboiling potatoes, I include Thyme, Rosemary, Garlic and Onion.

I will dice 1/2 a yellow (Spanish) onion and 4 garlic cloves.  For boiling water, I use dry Thyme and Rosemary.

2015-07-25 10.31.18

Remember, you can use any spices and herbs you wish to impart in to the food you are boiling.

2015-07-25 10.31.26


I usually boil potatoes for 15 to 20 minutes allowing them to get soft but still firm.  Remember we are parboiling them.

Once complete, immediately transfer them to a colander and allow them to drain.  Don’t rinse them as this would make them soggy and remove the dry spices/herbs you added to the water.

I prepare my frying pan with about 1 tbsp butter and 2 tbsp peanut oil.  For this application, peanut oil or avocado oil is best because they have a higher smoke point.  If you want a nice crisp on your potatoes, which is my favorite, avoid olive oil as it has a very low smoke/burn point.

Bring the oil to a high heat.  You want to see the oil/butter glisten.  Then toss in the potatoes.

2015-07-25 10.46.05

Notice all of the herbs still on the potatoes?  ~yum~

Add a liberal amount of salt and allow the potatoes to become crispy.  Don’t add pepper yet.  Did you know that pepper will burn and become bitter?

In a saute pan, cook the other half yellow onion and another 2 (finely chopped) garlic cloves.

At this point you can also saute red and green bell peppers if you wish.  In addition, feel free to experiment; cook some fresh chorizo, linguica, bacon, ham, pancetta, or anything else you would like with your potatoes.

Once your potatoes are nice a brown, add the saute onion and garlic, toss to incorporate.

2015-07-25 10.58.52

At this point, your dog(s) may join you in the kitchen, begging for a nibble!

2015-07-25 10.58.59

Potatoes aren’t difficult to cook at all.  The key is a few simple techniques and the result will be crispy on the outside, delicious and tender on the inside morsels of yummy potatoes.

Serve them with an omelet and you have a perfect breakfast.

2015-07-25 11.04.52

Until next time!

AutoSPInstaller: SharePoint 2013 March 10, 2015 CU (KB2956166)

The AutoSPInstaller tool is not something I’ve written about in the past.  I’m not sure why because its a fantastic tool and I use it on a regular basis.  In general, it is a PowerShell based SharePoint installation tool.  If you are unfamiliar with it, I do recommend you take a look at it here.

I use AutoSPInstaller to build SharePoint farms including the creation of web applications, site collections, installation of PU’s and CU’s, etc.  The beauty of using a scripted approach is its consistent.  If your farm ever burns to the ground, its a way to rebuild it just as it was.

I recently used AutoSPInstaller to build a SharePoint 2013 farm for a client.  We then made the decision to install SharePoint 2013 March 10, 2015 CU.  As with all farm-level modifications I make, I added this CU to the AutoSPInstaller updates directory then ran the installer again.  It ran the CU, psconfig and ensured the farm was in an operational state.  It worked flawlessly!

To accomplish this, download the (3) SharePoint 2013 March 10, 2015 CU installation files from the Microsoft site and place them in the SP\AutoSPInstaller\2013\Updates directory.  You then run the launch script again, on all servers, and the cumulative update will be installed for you.  In addition, the script will run psconfig; so you don’t need to do than manually!

Split Pea Soup

There have been a few times in my life when I ask “where have you been all my life?”.  Okay, okay its happened more than once.  But my point is, why do I wait so long before I make this soup?  Sure, I live in Arizona now, and its hot; but who cares?  Peas and ham make a perfect relationship; and I’m always looking for a new relationship…

Today’s relationship is about peas and ham… ~yummm~

So here it is…

When you decide to make this, sit outside, relax and enjoy!


16oz Pachage Your favorite Dried Split Peas
Whatever you do, don’t use cheap split peas!
4 cups Water
3 Large Russet Potatoes
Peeled and cubed
2 Large Yellow Onions
Small dice
2 Carrots
Fine dice
4 cups Ham
Yes, include the ham bone too!
1/2 cup Diced celery
4 cups Chicken broth
1 teaspoon Dried marjoram
1 teaspoon Poultry seasoning
1 teaspoon Dried sage
1 teaspoon Fresh cracked pepper
1/2 teaspoon Dried basil
1/2 teaspoon Salt


I know, your split pea package says, no soaking necessary.  I don’t buy it.  I soak them for about 4 hours before I do anything with them.  Makes them nice and tender.

Combine all ingredients in a large pot.  Bring to a boil.  Once you have it boiling, turn the heat down to a low simmer.  Let simmer, stirring every now and then, for 2 hours.


Evolution of SharePoint

Interesting article, from Julia White, general manager for the Office Product Management team, about the Evolution of SharePoint.  Exciting times ahead!

Excerpt from Intro:

“In the conversations I have with customers and partners, I’m often asked how SharePoint will evolve in Office 365, and what the future holds for SharePoint on-premises. As we move into 2015, continue to roll out new innovation within Office 365, and get closer to the next on-premises server release, I wanted to take this time to provide full context about the road ahead.

When we started this journey, SharePoint began as a content collaboration solution focused on team sites. As the product evolved, we added new experiences such as portals, search, business intelligence (BI) and enterprise content management (ECM). Across all of these experiences, SharePoint offers a consistent management layer providing control to customers. We also made SharePoint an extensible platform, allowing customers and partners to enhance the out-of-box experiences. Experiences, management and extensibility became the core aspects of what people love about SharePoint. As we move SharePoint forward, these three aspects continue to remain central—both within the server and across Office 365.

The cloud enables us to bring the experiences, management and extensibility together across not just SharePoint, but all of the Office technologies. We can finally break down individual product installations into a cohesive productivity solution, enabling holistic capabilities that provide greater value to customers and partners. The cloud also allows us to rapidly innovate and deliver new experiences faster than ever before. At the same time, we’re building collaboration, mobility and machine learning capabilities right into all of the Office experiences, enabling a generational transformation in the way people work.”

Good read if you are interested in learning more about the future of SharePoint and Office 365.

Lightning Conductor 2013 and Aggregating Form Library Content

I have been working with the new Lightning Conductor 2013 content roll-up web part recently, specifically the new custom column abilities. This web part allows you to add a custom column to a view and it can contain any jscript and CSOM. This opens up a new world of possibilities.

If you are unfamiliar with the Lightning Conductor 2013 roll-up web part, I highly recommend getting familiar with it. Lightning Tools has versions for both on-premise and Office 365 environments.
For more information on The Lightning Conductor 2013 product, please click here.

As I was saying above, you can create a custom column and include any jscript and/or CSOM calls. Today, I ran in to a situation where we were aggregating content from a form library. As you may be aware, there isn’t a Title column present on the Form content type, so you need to include the Name field if you wish the file name displayed. The problem with this is the file name contains the .xml extension; and my client didn’t want that displayed.

This is where the Lightning Conductor 2013 custom field came in to play. I simply created a new custom field, named FormattedTitle, and included the following:

[FileLeafRef].Substring(0,[FileLeafRef].Length – 4)

Worked like a charm!

I’ll be writing more about this web part, especially how the jscript and CSOM custom column can be extended to related data in, etc.

If you are interested in purchasing the Lightning Conductor 2013 web part, please contact CollectiveKnowledge Solutions.

Redirect Users to a New Location Automatically

Recently, while working with a client, I noticed they had purchased a 3rd party web part to redirect users from one location to another.  There are other posts that describe a simple, out of box, solution; however, I wanted to include it here for my readers and clients.

There isn’t any need to write custom code or purchase a 3rd party product to redirect users from one location to another.

To accomplish this, use the following steps:

Let’s say, for example, you are in the process of migrating your SharePoint environment to a newer version.  As you perform the migration, you may wish to have a redirect on the old site sending the user to the new (migrated) site.

1 – On the site you wish to perform the redirect, add a Content Editor Web Part.

Add Content Editor Web Part

I’ve given the web part a title of “Redirect to New HR Site”.

2 – On the ribbon bar, in the Format Text tab, click the Edit Source button.  Then enter the redirect source.



The actual redirect is the <meta …/> tag line, everything else is simply telling the user what will happen.  I feel it is always a good idea to inform the user of what is about to happen and ask them to update their bookmark.

The actual redirect is formatted as follows:

<meta http-equiv=”refresh” content=”{seconds};url={target URL}“/>

Replace {seconds} with the number of seconds to delay before redirecting the user.  10 seconds is a very common delay.

Replace {target URL} with the URL of where you with to redirect the user to.

Example, delay 10 seconds and redirect to HR site:

<meta http-equiv=”refresh” content=”10;url=https://cks.sharepoint.com/sites/contoso/departments/hr/”/>




Senior SharePoint Architect, Author, Trainer, Pilot, Chief and Father