Export-SPAllSitesForMigration


Function Name

Export-SPAllSitesForMigration


Download Source Code

Export-SPAllSitesForMigration.zip


Description

The code in this module will gather all site collections in your farm and write the details to a CSV file. The CSV file will be formatted to support a migration effort.


Parameters

Parameter Name$CsvFilename
Data Type[System.String]
RequiredYes
DescriptionUse this parameter to specify the output CSV filename.
Parameter Name
$OutGrid
Data Type[Switch]
RequiredNo
DescriptionUse to indicate if you’d like an output grid before returning. Using this during the initial build of your migration to see that all site information is included as expected.

Return Value

This function returns an array of custom PS objects. Each object contains the following properties:

[System.String]Migrate
[System.String]SourceSiteName
[System.String]SourceSiteUrl
[System.String]SourceDatabaseName
[System.String]SourceWebApplicationName
[System.String]SourceSiteTemplate
[System.String]DestinationWebApplicationUrl
[System.String]DestinationSiteUrl
[System.String]DestinationSiteTemplate

Code

<#
# Export-SPAllSitesForMigration
#
# .Synopsis
#    The code in this module will gather all site collections in your farm and write the details
#    to a CSV file.
#
# .Description
#    The code in this module will gather all site collections in your farm and write the details
#    to a CSV file. The CSV file will be formatted to support a migration effort.
#
# .Notes
#    This script must be run on one of the source farm servers. I usually run this on a secondary
#    application server; in most cases where I build the farm, this will be SPAPP02 server.
#
# .Author
#    Written by Bob Mixon
#>
cls

# Load PowerShell cmdlet's for SharePoint
if((Get-PSSnapin -Name Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue) -eq $null)
{
    Add-PSSnapin Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue
}

<#
# Export-SPAllSitesForMigration
#
# .Synopsis
#    The code in this function will gather all site collections in your farm and write the details
#    to a CSV file.
#
# .Description
#    The code in this function will gather all site collections in your farm and write the details
#    to a CSV file. The CSV file will be formatted to support a migration effort.
#
# .Notes
#    This script must be run on one of the source farm servers. I usually run this on a secondary
#    application server; in most cases where I build the farm, this will be SPAPP02 server.
#
# .Parameter $CsvFilename
#    Required - Use this parameter to specify the output CSV filename.
#
# .Parameter $OutGrid
#    Optional - Use to indicate if you'd like an output grid before returning. Using this during
#               the initial build of your migration to see that all site information is included
#               as expected.
#
# .Returns
#    This function returns an array of custom PS objects. Each object contains the following
#    properties:
#
#    String    Migrate
#    String    SourceSiteName
#    String    SourceSiteUrl
#    String    SourceDatabaseName
#    String    SourceWebApplicationName
#    String    SourceSiteTemplate
#    String    DestinationWebApplicationUrl
#    String    DestinationSiteUrl
#    String    DestinationSiteTemplate
#
# .Example
#    Export-SPAllSitesForMigration -CsvFilename "c:\spreports\allsites.csv" -OutGrid
#
# .Author
#    Written by Bob Mixon
#>
function Export-SPAllSitesForMigration
{
    Param(
        [Parameter(Mandatory=$true)]
            [string]$CsvFilename,
        [Parameter(Mandatory=$false)]
            [switch]$OutGrid = $false
    )

    # Retrieve all site collections.
    Write-Host "RETRIEVING ALL SITE COLLECTIONS TO BE MIGRATED" -ForegroundColor Yellow

    # $oSites results in an array of SPSite objects.
    $oSites = Get-SPSite -Limit ALL
    Write-Host "Completed the retrieval of all site collections."

    Write-Host "Building an array of all site collections to be exported and returned: " -NoNewline
    # Array to contain all sites to migrate objects.
    $aSitesToMigrate = @()

    $oSites | ForEach-Object {
        $sSourceSiteTemplateName = ([Microsoft.SharePoint.SPSite]$_).RootWeb.WebTemplate.ToString()
        $sSourceSiteTemplateId = ([Microsoft.SharePoint.SPSite]$_).RootWeb.WebTemplateId.ToString()
        $sSourceSiteTemplate = [String]::Format("{0}#{1}", $sSourceSiteTemplateName, $sSourceSiteTemplateId)
        $oSiteToMigrate = New-Object -TypeName PSObject -Property @{
            Migrate                      = "NO"
            SourceSiteName               = $_.RootWeb.Title
            SourceSiteUrl                = ([Microsoft.SharePoint.SPSite]$_).Url
            SourceDatabaseName           = ([Microsoft.SharePoint.SPSite]$_).ContentDatabase.Name
            SourceWebApplicationName     = ([Microsoft.SharePoint.SPSite]$_).WebApplication.Name
            SourceSiteTemplate           = $sSourceSiteTemplate
            DestinationWebApplicationUrl = ""
            DestinationSiteUrl           = ""
            DestinationSiteTemplate      = $sSourceSiteTemplate 
        }
        $aSitesToMigrate += $oSiteToMigrate
    }
    Write-Host "Success!" -ForegroundColor Green
    
    if($OutGrid)
    {
        $aSitesToMigrate | Select-Object Migrate, SourceSiteName, SourceSiteUrl, SourceDatabaseName, `
            SourceWebApplicationName, SourceSiteTemplate, DestinationWebApplicationUrl, DestinationSiteUrl, `
            DestinationSiteTemplate | Out-Gridview
    }

    Write-Host ([string]::Format("Exporting site collection report to [{0}]: ", $CsvFilename)) -NoNewline
    $aSitesToMigrate | Sort-Object SourceSiteUrl | Select-Object Migrate, SourceSiteName, SourceSiteUrl, SourceDatabaseName, `
        SourceWebApplicationName, SourceSiteTemplate, DestinationWebApplicationUrl, DestinationSiteUrl, `
        DestinationSiteTemplate | Export-CSV $CsvFilename -NoTypeInformation -Encoding UTF8
    Write-Host "Success!" -ForegroundColor Green
    return($aSitesToMigrate)
}

###################################################################################################
# Module Members to be Exported
###################################################################################################
#region Module Members to be Exported

if([System.IO.Path]::GetExtension($MyInvocation.ScriptName) -like ".psm1")
{
	Export-ModuleMember -Function Export-SPAllSitesForMigration -ErrorAction SilentlyContinue
}

#endregion

Chicken and Dumplings Recipe by Ree Drummond

Yesterday we tried Ree Drummond’s Chicken and Dumplings recipe. I made a few small modifications, described below, but other than that it’s one of the best Chicken and Dumplings recipe I’ve ever tried. And it’s so simple to make.

I watch Ree Drummond on Food Network TV quite often and really enjoy the show. I’ve found that the two of us have similar flavor palates. I thoroughly enjoy country style foods, especially during winter!

To see Ree Drummond’s original recipe, click here. There you can see exactly how she makes it and the small variations in the way I made it.

Other ways to see more from Ree Drummond:

Contents for Chicken and Dumplings Recipe by Ree Drummond

Below you will find Ree Drummond’s original recipe with the few small modifications and comments I made – clearly marked.

One great thing about Ree’s version is, you can make it in 1 1/2 hours and eat. Very convenient! One of the changes I made is to simply slow the process down and let all the flavors meld together.

Ingredients

Chicken:
  • 2 tablespoons butter
  • 2 tablespoons olive oil (Bob – I used bacon grease instead of Olive Oil. I feel the bacon grease tastes better in this type of soup)
  • 1 whole chicken, cut into pieces (cut-up fryer) (Bob – I will do this next time. When I made this the only thing I had at the time was 6 boneless/skinless chicken thighs. Worked great but I would like the different types of meats in a whole chicken.)
  • Salt and freshly ground black pepper
  • 1/2 cup finely diced carrots
  • 1/2 cup finely diced celery
  • 1 medium onion, finely diced (Bob – I used a yellow or Spanish onion.)
  • 1/2 teaspoon ground thyme
  • 1/4 teaspoon turmeric (Bob – my favorite addition to the recipe Ree, I haven’t used this in other chicken and dumpling recipes.)
  • 6 cups low-sodium chicken broth
Dumplings:
  • 1 1/2 cups all-purpose flour
  • 1/2 cup yellow cornmeal
  • 1 heaping tablespoon baking powder
  • 1 teaspoon kosher salt
  • 2 cups half-and-half
  • 2 tablespoons all-purpose flour
  • 2 tablespoons minced fresh parsley, optional
  • Salt, as needed

Directions

  1. For the chicken: Melt the butter in a pot over medium-high heat and add the olive oil. Sprinkle the chicken with salt and pepper. In 2 batches, brown the chicken on both sides and remove to a clean plate.
    (Bob – as indicated above, I used bacon grease instead of Olive Oil. This is a personal preference and I’m certain Olive Oil will work perfectly. I also used boneless/skinless chicken thighs; only because that’s what I had on hand.)
  2. In the same pot, add the diced carrots, celery and onions. Stir and cook for 3 to 4 minutes over medium-low heat. Stir in the ground thyme and turmeric, then pour in the chicken broth. Stir to combine, then add the browned chicken. Cover the pot and simmer for 20 minutes.
    (Bob – I started my cooking a few hours before dinner so I slowed this process down. At a lower temperature, I sautéed the veggies added (homemade) chicken broth and let it simmer for two hours – letting all those wonderful flavors mingle.)
  3. For the dumplings: While the chicken is simmering, make the dough for the dumplings. Sift together the flour, cornmeal, baking powder and salt in a bowl, then add 1 1/2 cups of the half-and-half, stirring gently to combine. Set aside.
  4. Remove the chicken from the pot and set aside on a plate. Use 2 forks to remove the chicken from the bones. Shred the chicken, then add it back to the pot. Mix together the remaining 1/2 cup half-and-half and flour, then add it to the pot and stir to combine.
  5. Drop tablespoons of dumpling dough into the simmering pot. Add the minced parsley if using. Cover the pot and continue to simmer for 15 minutes. Check the seasoning; add salt if needed. Allow to sit for 10 minutes before serving.

As you can see, the few changes I made don’t alter Ree Drummond’s recipe, more the process. Anytime I make a soup, I slow the process down so all the flavors have a chance to mingle.  I didn’t make and changes to the dumplings at all, they were perfect.

Give it a try and let me know what you think! Also, I hope you take the time to visit Ree Drummond’s site to see all of the amazing recipes she has posted.

Until then #Foodie

SharePoint 2016 Site Templates and ID’s

I’m constantly needing a list of all the site templates available in SharePoint 2016. I decided to start maintaining this list on my blog so I don’t have to search for it anymore.

Note – I did not come up with this list in a vacuum. I’m making updates here but the original list came from Microsoft and a few other blogs.

 

Below is a list of all the SharePoint 2016 site templates, including their ID’s which are used in development; .NET, PowerShell, etc.

You can use one of these template ID’s to create a new site, in PowerShell.

The following example will create a new site using the Team Site template STS#0.

New-SPSite "https://NewSharePointSiteURLs" -OwnerAlias "domain\bob" -Language 1033 -Template "STS#0"
Template ID Title Description
ACCSRV#0 Access Services Site Microsoft Access Server
ACCSVC#0 Access Services Site Internal Microsoft Access Server Internal
ACCSVC#1 Access Services Site Microsoft Access Server
APP#0 App Template A base template for app development. It provides the minimal set of features needed for an app.
APPCATALOG#0 App Catalog Site A site for sharing apps for SharePoint and Office
BDR#0 Document Center A site to centrally manage documents in your enterprise
BICenterSite#0 Business Intelligence Center A site for presenting Business Intelligence content in SharePoint.
BLANKINTERNET#0 Publishing Site This template creates a site for publishing Web pages on a schedule, with workflow features enabled. By default, only Publishing subsites can be created under this site. A Document and Picture Library are included for storing Web publishing assets.
BLANKINTERNET#1 Press Releases Site This template creates the Press Releases subsite for an Internet-facing corporate presence website.
BLANKINTERNET#2 Publishing Site with Workflow A site for publishing Web pages on a schedule by using approval workflows. It includes document and image libraries for storing Web publishing assets. By default, only sites with this template can be created under this site.
BLANKINTERNETCONTAINER#0 Publishing Portal A starter site hierarchy for an Internet-facing site or a large intranet portal. This site can be customized easily with distinctive branding. It includes a home page, a sample press releases subsite, a Search Center, and a login page. Typically, this site has many more readers than contributors, and it is used to publish Web pages with approval workflows.
BLOG#0 Blog A site for a person or team to post ideas, observations, and expertise that site visitors can comment on.
CENTRALADMIN#0 Central Admin Site A site for central administration. It provides Web pages and links for application and operations management.
CMSPUBLISHING#0 Publishing Site A blank site for expanding your Web site and quickly publishing Web pages. Contributors can work on draft versions of pages and publish them to make them visible to readers. The site includes document and image libraries for storing Web publishing assets.
COMMUNITY#0 Community Site A place where community members discuss topics of common interest. Members can browse and discover relevant content by exploring categories, sorting discussions by popularity or by viewing only posts that have a best reply. Members gain reputation points by participating in the community, such as starting discussions and replying to them, liking posts and specifying best replies.
COMMUNITYPORTAL#0 Community Portal A site for discovering communities.
DEV#0 Developer Site A site for developers to build, test and publish apps for Office
EDISC#0 eDiscovery Center A site to manage the preservation, search, and export of content for legal matters and investigations.
EDISC#1 eDiscovery Case This template creates an eDiscovery case. Users create locations where they can preserve or export data.
ENTERWIKI#0 Enterprise Wiki A site for publishing knowledge that you capture and want to share across the enterprise. It provides an easy content editing experience in a single location for co-authoring content, discussions, and project management.
GLOBAL#0 Global template This template is used for initializing a new site.
GROUP#0 Group A site template used to create a Group.
MPS#0 Basic Meeting Workspace A site to plan, organize, and capture the results of a meeting. It provides lists for managing the agenda, meeting attendees, and documents.
MPS#1 Blank Meeting Workspace A blank meeting site for you to customize based on your requirements.
MPS#2 Decision Meeting Workspace A site for meetings that track status or make decisions. It provides lists for creating tasks, storing documents, and recording decisions.
MPS#3 Social Meeting Workspace A site to plan social occasions. It provides lists for tracking attendees, providing directions, and storing pictures of the event.
MPS#4 Multipage Meeting Workspace A site to plan, organize, and capture the results of a meeting. It provides lists for managing the agenda and meeting attendees in addition to two blank pages for you to customize based on your requirements.
OFFILE#0 (obsolete) Records Center (obsolete) This template creates a site designed for records management. Records managers can configure the routing table to direct incoming files to specific locations. The site also lets you manage whether records can be deleted or modified after they are added to the repository.
OFFILE#1 Records Center This template creates a site designed for records management. Records managers can configure the routing table to direct incoming files to specific locations. The site also lets you manage whether records can be deleted or modified after they are added to the repository.
OSRV#0 Shared Services Administration Site This template creates a site for administering shared services
POINTPUBLISHINGHUB#0 PointPublishing Hub A site template used to create a PointPublishing hub site.
POINTPUBLISHINGPERSONAL#0 PointPublishing Personal A site template used to create a PointPublishing personal site.
POINTPUBLISHINGTOPIC#0 PointPublishing Topic A site template used to create a PointPublishing topic site.
POLICYCTR#0 Compliance Policy Center
PPSMASite#0 PerformancePoint
PRODUCTCATALOG#0 Product Catalog A site for managing product catalog data which can be published to an internet-facing site through search. The product catalog can be configured to support product variants and multilingual product properties. The site includes admin pages for managing faceted navigation for products.
PROFILES#0 Profiles This template creates a profile site that includes page layout with zones
PROJECTSITE#0 Project Site A site for managing and collaborating on a project. This site template brings all status, communication, and artifacts relevant to the project into one place.
PWA#0 Project Web App Site Microsoft Project Web App
PWS#0 Microsoft Project Site A site that supports team collaboration on projects. This site includes documents, issues, risks, and deliverables which may be linked to tasks in Project Web App.
SGS#0 Group Work Site This template provides a groupware solution that enables teams to create, organize, and share information quickly and easily. It includes Group Calendar, Circulation, Phone-Call Memo, the Document Library and the other basic lists.
SPS#0 SharePoint Portal Server Site This template is obsolete.
SPSCOMMU#0 Community area template This template is obsolete.
SPSMSITE#0 Personalization Site A site used for hosting personal sites (My Sites) and the public People Profile page. This template needs to be provisioned only once per User Profile Service Application, please consult the documentation for details.
SPSMSITEHOST#0 My Site Host A site used for hosting personal sites (My Sites) and the public People Profile page. This template needs to be provisioned only once per User Profile Service Application, please consult the documentation for details.
SPSNEWS#0 News Site This template is obsolete.
SPSNHOME#0 News Site A site for publishing news articles and links to news articles. It includes a sample news page and an archive for storing older news items.
SPSPERS#0 SharePoint Portal Server Personal Space This web template defines a Personal Space for an individual participating on a SharePoint Portal.
SPSPERS#10 Storage And Social SharePoint Portal Server Personal Space This web template defines a minimal Personal Space with Storage, on-demand Social and Multilingual User Interface with document parser disabled at web level features for an individual participating on a SharePoint Portal.
SPSPERS#2 Storage And Social SharePoint Portal Server Personal Space This web template defines a minimal Personal Space with both Social and Storage features for an individual participating on a SharePoint Portal.
SPSPERS#3 Storage Only SharePoint Portal Server Personal Space This web template defines a minimal Personal Space with Storage features for an individual participating on a SharePoint Portal.
SPSPERS#4 Social Only SharePoint Portal Server Personal Space This web template defines a minimal Personal Space with Social features for an individual participating on a SharePoint Portal.
SPSPERS#5 Empty SharePoint Portal Server Personal Space This web template defines a empty Personal Space.
SPSPERS#6 Storage And Social SharePoint Portal Server Personal Space This web template defines a minimal Personal Space with Storage and on-demand Social features for an individual participating on a SharePoint Portal.
SPSPERS#7 Storage And Social SharePoint Portal Server Personal Space This web template defines a minimal Personal Space with Storage, Social and Multilingual User Interface features for an individual participating on a SharePoint Portal.
SPSPERS#8 Storage And Social SharePoint Portal Server Personal Space This web template defines a minimal Personal Space with Storage, on-demand Social and Multilingual User Interface features for an individual participating on a SharePoint Portal.
SPSPERS#9 Storage And Social SharePoint Portal Server Personal Space This web template defines a minimal Personal Space with Storage, on-demand Social with document parser disabled at web level features for an individual participating on a SharePoint Portal.
SPSPORTAL#0 Collaboration Portal A starter site hierarchy for an intranet divisional portal. It includes a home page, a News site, a Site Directory, a Document Center, and a Search Center with Tabs. Typically, this site has nearly as many contributors as readers and is used to host team sites.
SPSREPORTCENTER#0 Report Center A site for creating, managing, and delivering Web pages, dashboards, and key performance indicators that communicate metrics, goals, and business intelligence information.
SPSSITES#0 Site Directory A site for listing and categorizing important sites in your organization. It includes different views for categorized sites, top sites, and a site map.
SPSTOC#0 Contents area Template This template is obsolete.
SPSTOPIC#0 Topic area template This template is obsolete.
SRCHCEN#0 Enterprise Search Center A site focused on delivering an enterprise-wide search experience. Includes a welcome page with a search box that connects users to four search results page experiences: one for general searches, one for people searches, one for conversation searches, and one for video searches. You can add and customize new results pages to focus on other types of search queries.
SRCHCENTERLITE#0 Basic Search Center A site focused on delivering a basic search experience. Includes a welcome page with a search box that connects users to a search results page, and an advanced search page. This Search Center will not appear in navigation.
SRCHCENTERLITE#1 Basic Search Center The Search Center template creates pages dedicated to search. The main welcome page features a simple search box in the center of the page. The template includes a search results and an advanced search page. This Search Center will not appear in navigation.
STS#0 Team Site A place to work together with a group of people.
STS#1 Blank Site A blank site for you to customize based on your requirements.
STS#2 Document Workspace A site for colleagues to work together on a document. It provides a document library for storing the primary document and supporting files, a tasks list for assigning to-do items, and a links list for resources related to the document.
TBH#0 In-Place Hold Policy Center A site to manage policies to preserve content for a fixed period of time.
TENANTADMIN#0 Tenant Admin Site A site for tenant administration. It provides Web pages and links for self-serve administration.
visprus#0 Visio Process Repository A site for viewing, sharing, and storing Visio process diagrams. It includes a versioned document library and templates for Basic Flowcharts, Cross-functional Flowcharts, and BPMN diagrams.
WIKI#0 Wiki Site A site for a community to brainstorm and share ideas. It provides Web pages that can be quickly edited to record information and then linked together through keywords

SharePoint Sites versus Webs

SharePoint Sites versus Webs

This is a post I wrote long ago for my previous blog. I’ve been asked what the difference is between Site and Web; here I’m going to tackle that question head on!

First and foremost, Microsoft didn’t make the differentiation of these two easy to follow as they use the terms interchangeably. In this article I’ll be describing the technical naming conventions and how to simplify this for non-technical business users.

For reference, I’m using the term Site (SPSite) to indicate a Site Collection and Web (SPWeb) to reference an actual web site. These are the technical internal terms used.

The first thing to remember about a SharePoint Site, for both on-premise and Office 365, is it’s just a site. Same for a Web, it is just a website. What makes each of these unique are the features enabled for that specific template and the content types to display pages on those Webs.

Site Collection

A Site Collection is a container of Webs. Every Site Collection has a single top-level Web. The top-level Web can have zero to many sub-webs.

From a development perspective, a Site Collection can be created or accessed via the SPSite class.

Web

A Web is the actual web site.

From a development perspective, a Web can be created or accessed via the SPWeb class.

Below is an image that describes the Site Collection and Web relationships.

Working with End Users

When working with non-technical end users, you may just wish to use the terms Site Collection and Site. There’s no need to confuse them with the internal class/object names.

Conclusion

In SharePoint, a site is just a site and a web is just a web; they are all fundamentally the same with different features enabled. For example, a Publishing site is just a site collection with the Publishing feature enabled.

Don’t hesitate to ask questions if you need additional information!

SharePoint on!

PowerShell and SharePoint Modules

There are a lot of posts about creating modules, for SharePoint, in PowerShell. I decided to write this post so everything I’ve learned is in one place. I’m hoping you learn something from this (as I did).

I have tested the code in this article in SharePoint On-premise  2010, 2013 and 2016.

Modules do have the advantage of, once created and loaded, the functions in your module will be available in every PowerShell session.

Loading the Microsoft.SharePoint.Powershell Snapin

Making sure the Microsoft.SharePoint.PowerShell snapin is always loaded first. This way you are always certain the snapin is available and its not necessary to add it to every script file you create.

Note: this only has to be done once and will be available for all future PowerShell sessions.

Open the PowerShell ISE and run the following, at the command line.  This will create a new profile script (profile.ps1) or open if it already exists.

PS C:> if (!(test-path $profile.AllUsersAllHosts)) {new-item -type file -path $profile.AllUsersAllHosts –force}
powershell_ise $profile.AllUsersAllHosts

Now that the profile.ps1 file is open in the PowerShell ISE, add the following code.  If there is already code in the profile.ps1 file, make sure the following doesn’t already exist and, if not, add it.

$ver = $host | select version
if ($ver.Version.Major -gt 1) {$host.Runspace.ThreadOptions = "ReuseThread"} 
if ((Get-PSSnapin "Microsoft.SharePoint.PowerShell" -ErrorAction SilentlyContinue) -eq $null) 
{
Add-PSSnapin "Microsoft.SharePoint.PowerShell"
}

Here is what the above looks like in my PowerShell session.

profile.ps1 – click on the image to open, full size, in another browser tab.

Make sure to close this PowerShell instance and load a new instance. Test that the Microsoft.SharePoint.PowerShell module has been loaded into your new PowerShell instance, type
Get-SPFarm at the command line and it should now execute without any issues.

Now that we have the Microsoft.SharePoint.PowerShell module loading with every instance of PowerShell, lets move on to creating our first module.

Creating a Script/Module Template

A PowerShell module is fundamentally the same as any other script file with the addition of a few elements.  Let’s start by showing you the fundamental header, body and footer that is in every one of my script files.  In fact, I have this as a template file and use it each time I wish to create a new module.

<#
	.SYNOPSIS
	.DESCRIPTION
	.NOTES
#>
function Verb-YourFunctionName
{
    <#
    .SYNOPSIS

    .DESCRIPTION

    .PARAMETER Web

    .PARAMETER LeadingSpaceCount
        Used to control verbose output. If -1 (default) no verbose output will be rendered. Any value of zero or greater, will generate verbose output to the host. The value of this parameter is used to indent the verbose output. For example, a value of 2 will put two spaces before the output.

    .EXAMPLE
    .EXAMPLE
    #>
    [CmdletBinding()]
    Param(
        [Parameter(Mandatory=$true)][Microsoft.SharePoint.PowerShell.SPWebPipeBind]$Web,
        [Parameter(Mandatory=$false)]
            [System.Int32]$LeadingSpaceCount=-1
    )

    # Setup the leading space for verbose output.
    # If -1 (default) no verbose output will be rendered.  Any value of zero or greater, will generate verbose output to the host.
    # The value of this parameter is used to indent the verbose output.  For example, a value of 2 will put two spaces before the output.
    $ls = ""
    if($LeadingSpaceCount -ge 0){$ls = "".PadRight($LeadingSpaceCount," "); $LeadingSpaceCount++}
    if($LeadingSpaceCount -ge 0)
    {
        Write-Host "$ls- WHAT THIS FUNCTION DOES" -ForegroundColor Yellow
        $ls = "".PadRight($LeadingSpaceCount," ")
        $LeadingSpaceCount++
    }
    try
    {
        [Microsoft.SharePoint.SPWeb]$oWeb = Get-SPWeb $Web
    }
    catch
    {
        Write-Host ([System.String]::Format("$ls- EXCEPTION: [{0}] [{1}]", $sScriptName, $_.Exception.Message)) -ForegroundColor Red
        Write-Host
        throw $_.Exception
    }
    finally
    {
        if($oWeb -ne $null){$oWeb.Dispose()}
    }
    return($SomeReturnVar)
    }

#region Module Members to be Exported
if([System.IO.Path]::GetExtension($MyInvocation.ScriptName) -like ".psm1")
{
    Export-ModuleMember -Function Verb-YourFunctionName -ErrorAction SilentlyContinue
}
#endregion

The header section of the module is simply a set of comments describing the functionality contained within the script/module file.  I tend to breakup my functions into separate files so maintenance is simplified.

The body section of the module is the function or code we are writing.  In the case of my template, the function is named Verb-YourFunctionName.  When being used, the function name will be modified to match the need.

The footer section is where we tell the Add-PSModule code (in the next section) what functions are to be included in our module.

#region Module Members to be Exported
if([System.IO.Path]::GetExtension($MyInvocation.ScriptName) -like ".psm1")
{
    Export-ModuleMember -Function Verb-YourFunctionName -ErrorAction SilentlyContinue
}
#endregion

You will change the Verb-YourFunctionName to the actual name of your function in this module.

Using Add-PSModule to Add Your Module

The last step in this process is to use the Add-PSModule to add the module to your PowerShell session.

Personally I so this in a PowerShell function; one for each different module I wish to create.  For example, I have BMCommon, BMActiveDirectory, BMSharePoint2013, etc. modules.  In most of my client environments, I install these modules so all of my extended functions and variables are available to all instances of PowerShell.

function Add-BMSharePoint2013PSModule
{
    Param(
        [Parameter(Mandatory=$false
            [string]$ModuleInstallPath = "C:\Windows\System32\WindowsPowerShell\v1.0\Modules",
        [Parameter(Mandatory=$false)]
            [int]$LeadingSpaceCount=-1
    )

    $ls = ""
    if($LeadingSpaceCount -ge 0){$ls0 `
        "".PadRight($LeadingSpaceCount," ");
        $LeadingSpaceCount++}

    $sScriptSourcePath = Split-Path -parent `
        $PSCommandPath
    $sModuleName = "BMSharePoint2013"
    $sManifestDescription = "Contains SharePoint 2013 management extended functions."

    $aScriptFiles = "Add-ADUserToSPGroup.ps1",
        "Add-SPAppTile.ps1",
        "Add-SPSitePermissionLevel.ps1"

    $bSuccess = Add-PSModule `
        -ScriptSourcePath $sScriptSourcePath `
        -ModuleName $sModuleName `
        -ScriptFiles $aScriptFiles `
        -ManifestAuthor "Bob Mixon" `
        -ManifestCompanyName "Bob Mixon" `
        -ManifestDescription $sManifestDescription `
        -ModuleInstallPath $ModuleInstallPath `
        -LeadingSpaceCount $LeadingSpaceCount

    return($bSuccess)
}

Add-BMSharePoint2013PSModule -LeadingSpaceCount 0

 

This is all you really need to do!  The high-level steps for accomplishing this are:

  1. Make sure the PowerShell snapin “Microsoft.SharePoint.PowerShell” has been loaded in the PowerShell profile.ps1 file.
  2. Create your new function script file/module; include the Export-ModuleMember at the bottom of the script file/module.
  3. Create and run your module to create and install the module.

Once these steps are complete, you can close your PowerShell instance, open another and your functions will be available.

 

Document Libraries and Folders

I am asked on a regular basis how I feel about the use of Document Library folders. To be honest, I always tell people “avoid them” unless you thoroughly understand the consequences of using folders or have a controlled means of promoting consistent use. This response always stirs up controversy so I thought I’d write this article to help you better understand my thinking.

Before I dive too deep in to this article, I need to first say; there is no right or wrong way of implementing your document management solution. There are simply better ways of surfacing information and improving the user experience. If you are concerned about findability and user adoption, then read-on! Another prerequisite to reading this article is to understand, this is not a black and white topic; meaning, it’s not an all or nothing issue. I believe document library folders have a place and can be used as long as the consequences are thoroughly understood.

Do I use them in my implementations? Absolutely… However, I do so in a very limited manner and very specific ways. With all that said, let’s move on…

First, let’s take a look at why you would use document library folders. The only reason that immediately comes to mind is; because that is what we are used to doing! I personally don’t think this is a great reason, but it does hold some truth. We have pushed users to using file share and local drives all of which have folder and nested folders.

Now lets take a look at why we shouldn’t use document library folders; or ways of improving the users experience.

Navigating document library folders is not the same as what users experienced when storing/managing files on file shares and other drives. The tree view, with +/- to expand/collapse branches, doesn’t exist in the out-of-box Document Library Web Part. Navigating down a folder branch requires the simple click of a link. However, navigating back up the branch requires the user to click the browser back button (1). This is a cumbersome user experience at best.

(1) UPDATE: The above has been improved in SharePoint 2016 and SharePoint Online. Now you can click a parent folder from the folder breadcrumb at the top of the list or library. However, if you are many levels deep into a folder structure, you will need to continue to click the parent folder to walk back up the folder tree!

Just so you are aware, there are options to help solve some of the navigation issues described above. You could write a custom Web Part, find publicly available code or purchase a 3rd party product. There is code and products available. However, I would first recommend you continue reading because these products won’t solve all of the problems you will have.

In addition to the navigation issues described above, folders hide the content contained within; especially when you use sub-folders. For example, when a user arrives at a site and they see a library named Shared Documents (which I also don’t recommend using), first off the name of that library doesn’t tell them anything about what it contains. Also, if the user clicks on the library, all they see is the first layer of folders. This may begin to indicate what files are contained within those folders but doesn’t suggest anything about what might be contained within sub-folders. Again, hiding content and detail from users; forcing them to traverse folders until they find what they are looking for. Not very efficient at all.

Remember, if it takes a long time for a user to find an important document, quite often they will make a local copy for future reference; so they don’t have to go through the pains of finding it again on your Intranet. Findability is extremely important!

I also have to make a comment about manually managing folder-level security; avoid it at all costs! The use of it can and will become confusing for your user-base. I have seen structures become so complex, contributors loose comfort knowing where to store and manage their content. And what happens when contributors loose comfort and security with the solutions we implement? They stop using them and go back to what they feel secure and comfortable with… Something else to remember, security is one of the most complex features to teach a non-technical user. If you are expecting your non-technical user-base to manage item and folder-level security, it will eventually be done so incorrectly; this brings up a whole different set of issues (good topic for another article). And, if you aren’t expecting the general non-technical user to manage their own security (which is good, I don’t recommend it) then you are placing the burden of that management on Site Collection Administrators, IT or whomever you have it assigned to.

Lastly, let’s talk about content duplication and single source of truth. Content duplication occurs in an organization in many different ways; so many that we don’t want to add to the problem. Folders hide content. As such, if it takes a long time for a user to find an important document, they are more likely to make a local copy of that document so they don’t have to find it again in the future. Another way duplication occurs by using folders, is by simply needing a document to be present in multiple folders. For example, let’s say you have a document that is related to 2 of 3 areas of Human Resources Benefits; related to Medical and Dental Benefits but not Vision Benefits. If you have benefit documents broken down in folders by benefit type (which is common), you may have to duplicate this common document in 2 places. Again, we have to avoid the duplication of content on our document management system at all costs. It’s called managing the single source of truth!

So… what can be done to solve these problems, improving the user experience and overall findability?

First and foremost, consider using metadata! Whether you choose to continue using a Document Library named Shared Documents or not, I would recommend you start applying Content Types and metadata to your documents. As a simplified example, move all of your documents in a library to the root folder and apply metadata that can be used to filter the view. Still not the greatest user experience; however, a user will at least be able to see all of the files contained within a library simply by clicking the library link. They can then filter the view down using the metadata column filtering abilities built in to SharePoint.

Using more Document Libraries is an even better approach to solving the overuse of folders issue. Let me demonstrate; a user arrives at a Human Resources site and is presented with a Document Library named Shared Documents, with folders and sub-folders. Well, you already know how I feel about this user experience. Now improve the experience for the user by creating multiple Document Libraries; one named Medical Benefit Documents, another named Dental Benefit Documents and another named Vision Benefit Documents. Using this approach alone will significantly improve the user experience from a findability perspective. The Medical Benefit Documents library has a Content Type associated with it named Medical Benefit Document; which forces the contributor to store and manage only documents of type Medical Benefit. This also helps with your overall IA too; but that’s a whole different article series! Just be certain to not have your Document Libraries so generic that you have to manage too many Content Types with it; this can also be confusing for contributors.

Another approach, and one I use all the time, is to build your hierarchy with sub-sites. Take Human Resources Benefits for example. You may be better suited having a Benefits sub-site then sub-sites below that, one for each specific type of benefit (Medical, Dental and Vision). There are many, many advantages to using sub-sites in this manner. Sub-sites, used in this manner are really nothing more than what is called “a point of aggregation and association”. Let me provide you with another example. On a Medical Benefits sub-site you can store and manage related announcements, policies, procedures, forms, FAQ’s, glossary terms, links to external references and so on. You are basically bringing the user to a new level of experience when you aggregate all information associated with Medical Benefits on a single sub-site.

Another advantage to using sub-sites as a point of aggregation and association, is realized when you begin to aggregate content to a higher level on your Intranet. For example, if you choose to aggregate all Policy Document (documents of type Policy) to an aggregate view using the Content Query Web Part, those policies can be grouped by site/sub-site. This is a very useful view and cannot be produced automatically using folders.

So how do you handle the folder-level security confusion issue described above Bob? Great question, and I’m glad you asked! Remember, my implementations utilize sub-sites and multiple document libraries. I simply place a Content Editor Web Part above the Document Library Web Part and use it to describe the libraries intended use and security. I target this Web Part to the contributor audience so it is only displayed for those who are contributors on that specific site or page.

The document management/Intranet solutions I have implemented, contain a wide rage of the techniques described above. The actual implementation techniques used all depends on the size of organization, amount of content, contributors, consumers, security and a myriad of other requirements. It is my hope that some of these techniques help with your next implementation or give you ideas of how to improve your current implementation.

Please leave questions and comments below as it tends to help me understand what other articles I need to write!

Until next time…

Red Wine Braised Short Ribs

This is one of my favorite meals; so flavorful, moist and tender!  Served with potatoes, rice or grits makes for a relaxing dinner.

Ingredients

Contents for Red Wine Braised Short Ribs

  • 5 pounds bone-in beef short ribs, cut crosswise into 2-inch pieces
  • Kosher salt and freshly ground black pepper
  • 3 tablespoons vegetable oil
  • 3 medium onions, chopped
  • 3 medium carrots, peeled, chopped
  • 2 celery stalks, chopped
  • 3 tablespoons all-purpose flour
  • 1 tablespoon tomato, can, paste
  • 1 750 ml bottle dry red wine
  • 10 sprigs flat-leaf parsley
  • 8 sprigs thyme
  • 4 sprigs oregano
  • 2 sprigs rosemary, dry
  • 2 fresh or dried bay leaves
  • 1 head of garlic, halved crosswise
  • 4 cups low-salt beef stock

Notes / Directions

  1. Preheat oven to 350°. Season short ribs with salt and pepper. Heat oil in a large Dutch oven over medium-high. Working in 2 batches, brown short ribs on all sides, about 8 minutes per batch. Transfer short ribs to a plate. Pour off all but 3 Tbsp. drippings from pot.
  2. Add onions, carrots, and celery to pot and cook over medium-high heat, stirring often, until onions are browned, about 5 minutes. Add flour and tomato paste; cook, stirring constantly, until well combined and deep red, 2-3 minutes. Stir in wine, then add short ribs with any accumulated juices. Bring to a boil; lower heat to medium and simmer until wine is reduced by half, about 25 minutes. Add all herbs to pot along with garlic. Stir in stock. Bring to a boil, cover, and transfer to oven.
  3. Cook until short ribs are tender, 2–2½ hours. Transfer short ribs to a platter. Strain sauce from pot into a measuring cup. Spoon fat from surface of sauce and discard; season sauce to taste with salt and pepper. Serve in shallow bowls over mashed potatoes with sauce spooned over.

Enjoy!

Legacy Aviation 72″ Muscle Coupe – Build Day 1

Last week I saw that Extreme Flight/Legacy Aviation released a new 72″ Muscle Coupe and it looked really cool, so I had to have one.  The red and white scheme really caught my eye so its the one I selected.

I opened the box when it arrived earlier this week and immediately noticed the build quality.  Every aspect of this aircraft was built using care and thought in mind.  I really like how the canopy hatch provides access to the electronics and batteries.  This is an approach I wish they used on the Turbo Bush Master.

My plan is to build this with the following equipment:

  • Torque 4016T/500KV electric motor
  • Airboss 80A ESC
  • Hitec 7245 servos
  • Futaba 8 channel receiver

The first step in my build process is to go over all covering with an iron and glue all joints with CA.

I then located all of the control horns, cleaned them up and started the painting process.  This isn’t really a necessary step but something I like to do; makes the end result look a bit more polished.  Make sure to not paint the end that is glued into the plane.

I’ll paint the other side in the morning.

Next I glued the elevator into the horizontal stab and prepared it for assembly into the fuselage.  I use a laser for alignment on my planes.  Its an easy way to find where adjustments are needed.  I found the horizontal stab required a little adjustment before I glued it in place.

Once everything is aligned the way I want, I glued it in with thin CA.

I’ll let all this setup, including the paint on the control horns and get back to it in the morning!

 

Grandma’s Perfect Caramels

Soft, chewy, and melt in your mouth caramel is the perfect candy to set out for guests or gift giving. With only a few staple ingredients and a little bit of time, homemade candy has never been easier.

Seriously amazing homemade caramels!

Ingredients
1 cup granulated sugar
¾ cup corn syrup
½ cup unsalted butter
1 cup heavy cream
½ teaspoon vanilla extract

Instructions

  1. Grease an 8×8-inch baking pan.
  2. In a medium saucepan over medium-high heat, add the sugar, corn syrup, butter, and ¼ cup of cream. Bring to a boil, stirring continuously.
  3. While continuing to stir, add the remaining cream. Insert a candy thermometer and while constantly stirring, bring to the soft ball stage. Around 250°F, the sugar syrup will turn transparent and boil rapidly. Around 320°F, the syrup will darken slightly and smell caramel-like. You can proceed to the next step any time after the syrup reaches 250°F and before it reaches 325°F.
    Remove caramel from the heat and stir in the vanilla. Pour into the prepared baking pan.
  4. While still warm, use a toothpick to pop any air bubbles that rise to the top. Allow cooling overnight.
  5. Use a thin knife or small offset spatula to loosen the caramel block from the pan. Transfer the block to a cutting board and cut into desired size and shape. Wrap individually in wax paper if desired.

Original recipe from I am Baker

Support Your Local Organic Farmer

Looking for fresh, organic herbs from a farm near you? The following directory is a list of recommended certified organic local herb growers with fewer than 40 acres in cultivation, sorted by region. I’ve always encouraged folks to buy fresh and to buy local, support your local economy. Take a look at the directory here and see if there is a local farm you can buy your herbs at.

Directory of Local Herb Farms

 

PowerShell: Retrieve All Sites With or Without Personal Sites (MySites)

I love using the pipeline in PowerShell.  Recently I was in a situation where, if a PS script what a one-liner I didn’t have to submit it through the review/approval/change management process.  Its amazing what you can do in PowerShell in a single line of code!

Retrieve all site collections, for all web applications in the current farm.

$oSites = Get-SPWebApplication | Get-SPSite -Limit All

That one is pretty simple and I’m sure you’ve done it a bazillion times.  Lets add a little more and return all site collections, for all web applications except personal sites!

$oSites = Get-SPWebApplication | Get-SPSite -Limit All | where {($_.RootWeb.WebTemplateId -ne 54) -and ($_.RootWeb.WebTemplateId -ne 21)}

The only thing I’ve added here is a where clause that excludes sites with a template ID of 54 (personal site host) and 21 (personal sites).

Mom’s Shortbread Cookies

I was very lucky to have a mom who was not only a great mom, but a great cook too!  I always enjoyed the holiday season because mom and the other wonderful cooks in our family tree broke out their mixers, cookie sheets and delicious recipes.

One of my all-time favorites was (and still is) my moms shortbread cookies.  The key to these 3-ingredient cookies being so delicious is, once cooked, layer them between napkins in a storage container for two weeks.  I know, that’s the hardest part; smelling them cook, looking at them when on the cooling rack then having to wait two weeks before you can eat one.  I must admit, my mom had to hide these from me but I did still find them and sneak a few!

The night before you decide to make these, make sure and take 2 sticks of butter out of the fridge and leave on the counter.  This recipe requires soft butter!

Ingredients

Contents for Mom&#8217;s Shortbread Cookies

1 cup Butter (softened)
1/2 cup Brown Sugar
2 cups Flour

Directions

  1. Preheat oven to 275 degrees.
  2. Mix softened butter and brown sugar.
  3. Slowly sift in flour.
  4. Kneed for 15 minutes on a floured board.
  5. Roll out to 1/4″ thick.  If you find the dough sticking, either use a bit more flour or roll out between wax paper.
  6. Cut with cookie cutter.
    1. You can also cut into strips then into diamonds; this was Mom Mixon’s favorite way of making these.
  7. Sprinkle with colored sugar.
  8. Place on cookie sheet and cook for 30 minutes.

It is best to store these cookies for at least a week before eating them.  Store in a container in layers, separating each layer with a paper towel or napkin.

Wait, don’t sneak em!  I promise, the wait will be worth it!

And remember; Food is Love so Stay Hungry!

Country Style Pork Ribs

CountryStylePorkRibs

Found a great buy on Country Style Pork Ribs and its hard for to pass that up.  A great Country Style Pork Ribs is about 1 pount per rib with fat marbled throughout.  Its that fat that makes them taste so good.  I’ve always said, fat makes everything taste delicious.  So, if you were hoping for a light, low fat, meal; this one is not for you.  These are moist, fall off the bone tender, fatty morsels of deliciousness.

Country Style Short Ribs are big.  Often you will find them to be close to a pound each.  So you can plan on one (at the most two) ribs per person.  I usually account for one per person since I like to serve mine with roasted potatoes and homemade creamed corn.  Whats more country than that?  Makin’ me hungry!

So whats the key to making moist and tender Country Style Pork Ribs?  I’m glad you asked.  It’s actually quite simple.  Theres really only one thing to remember; Low and Slow!  Yep, that’s it; Low and Slow.  For the most part, I cooked my ribs today at 250 degrees for 5 hours.  Theres a little more to it than that but not much.

Just remember, if you try and cook Country Style Pork Ribs fast, it won’t work.  So cook them on a day you will be home all day.  I take mine out of the fridge around 9:30 to 10:00am in the morning, let them rest for an hour or so, prep them then cook them.  No baby sitting is necessary but I don’t like leaving the house when I have the oven on.

As I said above, take your ribs out in the morning; between 9:30 and 10:00am.  Let them rest for an hour before starting to work with them.  While you’re waiting, you can prep 2 yellow onions by cleaning and cutting in ti 3/8″ to 1/2″ thick slices.  This would also be a good time to clean and slice 4 large cloves of garlic.  This prepwork will come handly shortly.  Go ahead and finish your coffee now.

Preheat your oven to 250 degrees.

Grab your favorite cookie sheet and lay out a sheet of aluminum foil double the length of all those ribs.  The end result will be to completely wrap them.  I’m sure you can figure the rest out.

Skrinkle a little olive oil (not too much) on the foil then lay the sliced onion and garlic down.  This will be the bed for your ribs.  This will keep them from sitting in the rendered fat.  Use a liberal amount of salt and pepper on those ribs.  Remember, Country Style Pork Ribs are fatty so much of the salt and pepper will render off while cooking.  The next step is to pull that foil up and over the ribs.  Completely cover the ribs and seal the edges.

Popem’ in the oven and set your timer for 5 hours.  Pat yourself on the back for a job well done and get ready to savor the smell all day.

5 hours later (about 4:00 to 4:30pm, depending on when you put them in) pull the ribs from the oven.  I open the foil, release the steam.  Let them rest for a good 30 to 45 minutes.  If you still have a couple hours before you wish to serve dinner, that’s even better.  Carefully place your ribs on a plate cover with plastic wrap and store in the fridge.  Leaving the ribs in the fridge for an hour or two actually allows some of the fat to harden and will make it easier when you get to the grill with em.  And, in between all that removing from the oven and getting them in the fridge, don’t do it; slap your hand if you are tempted to take a little bite.  Just don’t do it.  Trust me, these will be so much better when we have finished.

It only going to take about 30 minutes on the grill.  So, when you are ready, get your grill prepared.  I prefer apple wood and charcoal for grilling these, but feel free to use whatever works best for you.

Grab your favorite BBQ Sauce, your ribs and head to the grill.  One word of caution, the rib meat will most likely start falling off the bone, so I use a stainless grill basket.  I place the ribs on the grill and immediately start slathering on the BBQ Sauce.  Turn them after 5 to 7 minutes and slather on more sauce.  Continue this process until that sauce has carmelized on all sides.  Try not to pass out with excitement while doing this; its happened to me and its no fun.

Server these with your favorite country sides.

Ingredients

1 to 2 per person Country Style Pork Ribs, about one pound each
2 large Yellow (or while) Onions
4 large Gloves Garlic
Salt and Pepper
Your Favorite BBQ Sauce

Let me know your thoughts!

Stay Hungry,

Bob

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).

Ingredients

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

Directions

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

Ingredients

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)

Directions

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

Conclusion

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!

Ingredients

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

Directions

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

Contents for Chicken Piccata, Jasmati Rice and Peas

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!

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

Potatoes

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!

Ingredients

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

Directions

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.

Enjoy!

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.

RedirectUsers02

 

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/”/>

 

 

 

Country Sausage and Gravy, Grits and Poached Eggs

I was in the mood for brunch today so I decided to make Country Sausage and Gravy, Grits and Poached Eggs.  It’s quick, simple and, oh so, delicious!

I absolutely love grits.  However, by themselves, they can be bland and boring.  The next time you make grits, consider spicing them up; the possibilities are endless.  When I make shrimp and grits, most often I will add sharp white cheddar cheese, havarti cheese, garlic, chipotle peppers in adobo sauce and onion.  This gives them a nice kick and really complements the shrimp.

For brunch today, I had already made up my mind that I wanted country sausage and gravy, so I decided to try something a bit different with the grits.  In this grits dish I added garlic, onion, chili powder and sharp pepper jack cheese.  They were delicious!

20140816 - Brunch

Get creative with those grits; there is so much you can do with them.  If you want to add a wonderful twist on texture, add hominy and/or whole kernel corn.

For the breakfast sausage, you can use any good quality “coarse ground” pork breakfast sausage, Jimmy Dean Breakfast Sausage, or your own blend.  I like making them in to patties and frying them.  This gives me a nice base for the sausage gravy.

If you would like to make fresh ground, homemade breakfast sausage, there are a lot of great recipes on the Internet.  I have made this one, from Alton Brown, and its fantastic.  Another nice twist is chorizo instead of breakfast sausage; however, if I want gravy, I think breakfast sausage is better!

And poached eggs, how can you go wrong?  If you’ve never tried or don’t know how to make poached eggs, check out this article.  They are super easy, fun to make and taste wonderful.

Keep cookin’ and let me hear about your successes!

10 Key Elements of Enterprise Information Architecture (#IA) – #3 Presentation

This article is the third in a series of ten that will help you better understand the 10 key elements of Enterprise Information Architecture.  To read the previous articles and the complete table of contents in this series, please click here.

Presenting Information
The manner in which information is presented can dramatically improve its value. Applying Information Architecture principals and techniques can afford us the ability to query and present information in many different formats thus supporting many different business contextual needs.

During the Subject Matter Expert (SME) interview process, used in the Understanding phase, formulate questions that inspire individuals to describe how they use and view information. Some information is best displayed as simple, linear lists. Other information is best displayed as charts, graphs in a dashboard and points of aggregation. During these same interviews and other assessment techniques, you can learn more about security requirements through the understanding of persona-based information access needs. Specific personas will have different visibility of information.

Note:
It has been my experience that applying techniques that simplify the storage and management of content be your initial focus. You can then aggregate that information, through specific queries, and present it in a manner that best suits the consumer persona and contextual needs.

Multiple presentation models to support varying contextual needs

  • Lists
  • Dashboards
  • Printed reports
  • Charts
  • Search
  • Content aggregation, Scoping and Faceted Filtering

Persona-based Presentation

  • Senior Management
  • Departmental, Line-of-Business Management, Business Unit Management
  • Employees
  • Customers
  • Vendors
  • Partners

05.03.03 - Presetation

As mentioned before, the interview process will provide you with a wealth of information about the consumers of information and the best manner in which to present it. Other techniques you can employ to understand presentation requirements include usability studies, wire-frame design diagrams, screen mockup’s and proof of concept or pilot projects.

Techniques for understanding how information is to be presented include:

  • Interview information SME’s and consumers
    • Understand how they use the information in their day-to-day business operations leads to the best approach for presenting information
  • “Day in the life of” scenarios
  • Usability studies
  • Wire-frame diagrams
  • Screen mockup’s
  • Proof of Concept’s (POC’s)

In SharePoint, information is stored and managed in sites, pages, lists and libraries. Other information can be incorporated using various tools, such as Business Connectivity Services (BCS), Excel Services, custom development, etc. To gain the most value presenting this information, you then need to first apply Information Architecture techniques; categorization, grouping, metadata, etc. Once you have architected your information, it simplifies the presentation of that information.

Create content scopes (result sources) to group information for aggregate presentation and ad-hoc search. You can then utilize the new faceted filtering (refinement) features of SharePoint 2013 to refine the scoped content and produce highly relevant set of results; to support various business contextual needs.

More on this in later articles!

 

10 Key Elements of Enterprise Information Architecture (#IA) – #2 Understanding

This article is the second in a series of ten that will help you better understand the 10 key elements of Enterprise Information Architecture.  To read the first article and the complete table of contents in this series, please click here.

Understanding Information
Understanding information is the most important aspect of Information Architecture. Before we can create solutions around information, we must thoroughly understand how people use, think about and value it. This understanding of information can then drive solution implementation prioritization, trust in its accuracy/use and ability to aid with and improve day-to-day business operations.

Understanding information leads to:

  • How people think about and value information
  • How information is used by people and processes
  • How information is stored and managed
  • Identification of information ownership, responsibility and accountability
  • Standard naming conventions
  • Reduction in term ambiguity

05.03.02 - Contract Term
Most people use terms and names that have meaning to them. For example, when an employee in IT uses the term Contract, they could be referring specifically to a Service Level Agreement (SLA) Contract. As humans, we may be able to automatically derive the understanding of a topic by applying scope and context.

Using the previous example; I am talking to an IT employee about server down time, I understand the term Contract means SLA. If I am unclear, I ask!

Unfortunately, technology doesn’t have the ability to automatically derive this level of scope and context. For technology to support the various contextual needs, we must categorize and label information; i.e. the basis and need for Information Architecture.

As Information Architects, there are many techniques that can be used to better understand how information is used. Having a thorough understanding of how information is used in day to day business operations is critical to designing and building a SharePoint solution that ultimately adds value.

Unfortunately, we cannot be experts in all areas of business within our organization. As such, the best approach to understanding information is to ask the experts. You will gain a wealth of knowledge by interviewing business domain SME’s, users (consumers), vendors and customers.

Most individuals in an organization are busy and may not have ample time describing what they do and how they do it. In many cases, you can better prepare yourself for these conversations through self-education. A wealth of information and knowledge can be derived by inventorying existing file structures, file naming conventions and supporting systems.

If your organization has search tools, review and assess logs; many times this can provide you with insight in to what consumers are search for.

Techniques for understanding information include:

  • Interview domain subject matter experts (SME’s)
    • Business domain SME’s, Users, Vendors, Customers, etc.
  • “Day in the life of” scenarios
  • Card sorting sessions
  • Inventory content
    • Assess, audit, refine, prioritize, label and categorize
  • Often file structure hierarchies and existing website navigation taxonomies aid in understanding how users currently categorize and think about their content
  • Review search logs

Often, as IT personnel, we fall in to the “build it and they will follow” trap. This is a recipe for failure with these types of solutions. Remember, our user base has had free access to all their content when stored on file shares, local drives and other repositories. To simply pickup their content from those repositories and drop it in to SharePoint adds no business value at all. In fact, doing so makes managing their documents more complex. For our user base to see value in using a more complex approach to managing their documents, we must add business value. The only way to add business value is to understand their information and how it is used. Only then can we transform the way information is used and improve/streamline day-to-day business operations.

SharePoint 2013 Intranet Management, Design and Architecture Training

These ten elements are defined, in detail, in my SharePoint 2013 Management, Design and Architecture Training Course.  For those of you who recall my Information Architecture (#IA) course for #SharePoint 2010, this new course expands on all the new features of both on-premise and Office 365 environments.

If you are interested in learning more about how to implement a #SharePoint 2013 Intranet solution, please register for our next class.

Content Categorization – Common Categorization and Grouping Mistake

Staying in alignment with my 10 Key Elements of Enterprise Information Architecture, this article will describe a common categorization and grouping mistake I see on a regular basis.

With regards to content categorization and grouping, a common mistake I see is storing and managing all documents of similar type, across ownership boundaries, in to a single site or library. This type of content grouping considers the consumer only, not the content owners or contributors. For example, I often see a site with a single library to store and manage all corporate policy documents. Using this approach causes many issues; including:

  • All policy document content owners, across department boundaries, must navigate to the policy site/library to add, edit or delete their owned policy documents. Doing this requires them to leave their departmental content domain.
  • Because all policy documents are stored in a single location, typically custom development efforts must be applied to ensure a consistent security model. Meaning, policy document owners can add, edit and delete only their own policy documents. Such custom development efforts can be very time consuming, dip deep in to your implementation budget and require on-going maintenance.
  • Again, because all policy documents are stored in a single location, typically custom new document provisioning, document edit, document delete, review and approval workflow must be developed.

05.03.01.01 - Aggregation for Consumers
It is important to consider the consumer of content. However, long before this, you must consider the content owner and contributor. One of the top factors for implementing successful Intranets is to consider the storage and management of content first. If we don’t simplify the storage and management of content, adoption and use will be minimized.

Duplicating the approach above, now your users will need to navigate to many different locations to manage their content.  Often, I see these business owners need to maintain many bookmarks to all the various sites where they manage content. This can, and will, become difficult to manage and can reduce solution adoption.

An optional approach is to store and manage the content as close to the point of ownership as possible. In the example above, policy documents should be stored and managed in the owning departments site. This eliminates many of the issues related to a central point used to store all related documents. Storing content as close to the point of ownership as possible has the following benefits:

  • Content owners and contributors don’t need to remember where content is stored.
    • They simply go to their department site (or sub-site) and manage the policy documents they own.
    • Security can be configured such that all departmental content owners and contributors can manage the policy documents as needed. These departmental content owners and contributors cannot change any other departments policy documents; and vice versa.
  • No custom coding is necessary to support a complex item-level security model.
  • Others changing content they don’t own is greatly reduced.
  • Single source of truth is maintained.
  • Higher degree of confidence and adoption will be improved.
  • There is no need for complex review and approval workflows. Most of these can be created using out-of-box workflows or SharePoint Designer.
  • Maintenance is significantly lower.

05.03.01.01 - Storage for Contributors
I would imagine your next question will be; How do I create a aggregate view of all corporate policies for the consumers of our organization? That would be a great question and it involves simple Information Architecture techniques.

Create a Policy Document content type and assign it to each departmental document library named Policy Documents. The only type of document that can be stored in the Policy Documents library are those of Policy Document. Once complete, it is a simple process to aggregate all documents, of type Policy Document, to a consumer site or page. The consumer site or page doesn’t have any content stored at all, it’s simply a dashboard displaying an aggregate view of all policy documents.

Using the content search or search web parts, the consumer aggregate view can be grouped by department and faceted filtering can be applied.

Using this approach, considering the content owner and contributor, should be the first on your list. Implement your solution using sound Information Architecture techniques, such as the one described above, and you do so much more with your corporate content.

Consider hiring a solid Information Architect next time. I promise the overall implementation time and costs will be lower and the value of your information use improved…

SharePoint 2013 Intranet Management, Design and Architecture Training

These ten elements are defined, in detail, in my SharePoint 2013 Management, Design and Architecture Training Course.  For those of you who recall my Information Architecture course for SharePoint 2010, this new course expands on all the new features of both on-premise and Office 365 environments.

If you are interested in learning more about how to implement a SharePoint 2013 Intranet solution, please register for our next class.

 

10 Key Elements of Enterprise Information Architecture (#IA) – #1 Content Categorization

This article is the first in a series of ten that will help you better understand the 10 key elements of Enterprise Information Architecture (#IA).

Information Architecture consists of many techniques and principals that are required to ultimately add value to day-to-day business operations. When we look at everything involved with Information Architecture, it can be overwhelming and complex. For these reasons, I have broken down Information Architecture in to the following 10 Key Elements. These are by no means all inclusive but what can be considered the most important.

  1. Content Categorization (this article)
    Content Categorization – Common Categorization and Grouping Mistake
  2. Understanding
  3. Presentation
  4. Evolution
  5. Responsibility
  6. Process
  7. Metadata
  8. Search
  9. Security
  10. Governance

Content Categorization

Contents for 10 Key Elements of Enterprise Information Architecture (#IA) &#8211; #1 Content Categorization

In this first article, we will focus on Content Categorization.  It is the first of the 10 Key Elements of Enterprise Information Architecture and , surprisingly, the one that is most often overlooked.

If you currently have SharePoint installed in your environment and are encountering issues, such as little organization, users unable to find their content, low adoption rate, etc., then you have most likely implemented your solution with little to no Information Architecture.

Content Categorization and classification is the process by which we identify and group content.  One key success factor for all SharePoint implementations is to reduce, if not eliminate, the question “where do I store and manage my content”.  Content Categorization and classification aids with this by providing a specific location and manner by which users store and manage their content.

Content Categorization and classification is one of the primary ways we query content for improved search relevancy and aggregation.

Content Classification
Content Classification consists of labeling types of content using labels that precisely describe what the content is. For example instead of all documents being labeled as merely a Document type, we classify our documents with more precise labels; such as Policy Document, Client Contract Document, Vendor Contract Document, Project Plan Document, Medical Benefit Document, etc.

Content Classification in SharePoint is accomplished by using content types. A content type defines a single data type, such as Policy Document, and supports associating metadata, a template document, workflow and policies.

05.03.01 - Policy Document Content Type

Once your content has been classified, it becomes a relatively simple process to create search scopes (result sources) and points of aggregation. For example, it is quite easy to create a result source containing all documents of type Policy Document. We can then search all documents of type Policy Document and/or aggregate all Policy Documents to a policy book.

Content Grouping
Grouping consists of grouping content of similar type. For example a document library, in SharePoint, named Documents really doesn’t have much meaning and certainly doesn’t tell a user what is stored in it. However, a document library named Policy Documents or Benefit Documents clearly defines what is contained within.

05.03.01 - Policy Documents Library

Another example would be a Meeting Documents library, on a project site. The Meeting Documents library might contain meeting agenda, meeting minutes and meeting action items documents. In this example, the Meeting Documents is the document grouping principal and is a container for managing all documents related to project meetings.

Content Grouping isn’t limited to lists and libraries. Each container level in SharePoint can be used to apply grouping principals. Each of the following is a grouping container in SharePoint.

  • SharePoint Farm – The top-most grouping level in SharePoint.       A corporate solution will have 1 to many SharePoint farms.
    • Web Application – Each SharePoint farm will include 1 to many web applications.
      • Site Collection – Each web application will contain 1 to many site collections.
        • Top-level Site – Each site collection will have a single top-level site.
          • List – Each top-level site can have 0 to many lists.
          • Document Library – Each top-level site can have 0 to many document libraries.
            • Folder – Each library can have 0 to many folders. (See Note Below)
          • Sub-sites – Each top-level site can have 0 to many sub-sites.
            • List – Each sub-site will have 0 to many lists.
            • Document Library – Each sub-site can have 0 to many document libraries.
              • Folder – Each library can have 0 to many folders. (See Note Below)

 

As you can see there are many grouping levels that can be applied to your SharePoint implementation. Each of these grouping levels has a very specific purpose and is used for many different reasons.

The goal is to reduce the use of folders and expand them to document libraries instead. It is also very common to group similar information, by topic, by site. For example, you may wish to have a sub-site, below the top-level site for each department, titled Policies & Procedures. This site would contain many lists and libraries all related to human resources policies & procedures; i.e. policy documents, procedure documents, FAQ’s, glossary terms, etc.

Note About Library Folders

The regular use of folders in libraries is not considered a best practice. There are very specific cases when folders do make sense and are used; however, these cases are limited.

SharePoint 2013 Intranet Management, Design and Architecture Training

These ten elements are defined, in detail, in my SharePoint 2013 Management, Design and Architecture Training Course.  For those of you who recall my Information Architecture course for SharePoint 2010, this new course expands on all the new features of both on-premise and Office 365 environments.

If you are interested in learning more about how to implement a SharePoint 2013 Intranet solution, please register for our next class.

WordX Add-in for Mindjet 14

wordx250x250Olympic Unlimited has released a new version of their Microsoft Word export add-in for Mindjet 14, MindManager map files.

Named WordX, this add-in allows you to assign a specific Word template, mark topics for export then export your map.

As many of you already know, I use Mindjet 14 (MindManager) extensively to document SharePoint designs. The built-in export tools, found in Mindjet 14, do work but they provide limited functionality. I need the ability to specifically mark topics for export and assign specific export attributes.

I have exercised WordX extensively, with maps containing more than 5000 topics, and it works like a charm!

If you are a Mindjet user, this is a must have add-in.

I will write more on this topic in the near future. In the meantime, download a trial copy and give it a shot. I think you’ll be hooked…

 

June 19, 2014 – SharePoint 2013 Collaboration in the Cloud – Office 365

svspuglogo

The Silicon Valley SharePoint User Group (SVSPUG) would like to invite you to our next meeting:

Meetings are held on the 3rd Thursday of every month starting at 5:30 pm and ending at 8:00 pm.

Date Thursday June 19th, 2014
Time 5:30 p.m. – 8:00 p.m.
Location Santa Clara Valley Transportation Authority
3331 North First Street, Building “A” Auditorium
San Jose, CA 95134
(Parking in the back of the building)

SharePoint 2013 Collaboration in the Cloud – Office 365

Contents for June 19, 2014 – SharePoint 2013 Collaboration in the Cloud – Office 365

Agenda:

  • 5:30 – 6: 00 p.m. – Arrive and socialize
  • 6:00 – 7:30 p.m. – Session
  • 7:30 – 8:00 p.m. – Q&A, Wrap-up

In this session, – Ulysses Lugwig, will discuss the following topics:

Office 365 has come out strong in 2013 with many organizations choosing to add Office 365 in their enterprise agreements with Microsoft. Where SharePoint 2010 and 2013 on premise both have promising features for external collaboration, many companies instead use box or dropbox due to firewall limitations, security, and complex forms based authentication that simply make SharePoint too complex. However, with this surge in Office 365 subscriptions, now pushing 100 million users’, there’s an incredible opportunity to start using SharePoint as an external collaborative tool. In this presentation we will show you real world examples of how organizations are using Office 365 for external collaboration including items such as branding, automatic document uploading, external sharing caveats, and, of course, custom application development.

RegisterNowButton

Food and Beverage Sponsor

learnit421x42

We would like to thank Learn iT! for sponsoring food and beverage at this meeting. Please take a moment to learn more about our sponsor.

Learn iT! has provided SharePoint training to businesses globally since SharePoint’s beginning. Working closely with SharePoint developers internally, we custom programs that can better focus on the needs of each identified group.

  • Classes taught at your location in your Environment
  • Classes at our office in Santa Clara, San Francisco , New York or Live Online
  • Audience: IT Pro-Developer-Site Admins-End Users

Common Scenarios which Initiate a SharePoint Learning Program

  • Migration to a newer version of SharePoint
  • Introducing SharePoint new to your organization
  • When re-releasing or the second introduction of SharePoint because of lower adoption
  • Using SharePoint to help improve current process
  • Document Management Solutions; Records Management, Intranet

Why Choose Learn iT!

  • Training Experts & SharePoint Experts
  • Experienced in helping other organizations with similar situations
  • Train in your own environment
  • Flexible in delivery style whether you learn hands on or need to just attend a few seminars
  • Customizing content to target specific to your goals

Learn more about Learn iT! SharePoint training at www.learnit.com/sharepoint

As a Microsoft Gold Partner, Learn iT! understands the robust and dynamic nature of the IT world. We consistently offer the most in-demand certification courses to help your network infrastructure operate efficiently and migrate seamlessly.

RegisterNowButton

SharePoint Saturday Sacramento 2014 – Slide Deck

The SharePoint Saturday Sacramento 2014 event was a great success this year.  I’m not sure what the final head-count was, but there were a lot of attendees, great sessions and vendors.

Thank you, again, to everyone who made this such a great event…

My session was on the topic of Records Management and SharePoint 2013.  Here is the deck I delivered.

SPMDA – Records Management and SharePoint 2013

SMPDA - Records Management and SharePoint 2013 - Slide 1

100cc Extra 260 KS Canister Install

I have had an issue with my AeroWorks 100cc Extra 260 being very loud.  The 3W 110cc CS engine, on stock exhaust, runs about 120db.  Which is not AMA legal and most flying fields won’t let you fly there; as there are noise restrictions.

With that said, I decided to install KS canisters.  This airplane is designed for installing canisters which makes the installation process easier.

The first step in this process was to work with Gerhard, at Aircraft International, to make sure I was getting the right parts for this airplane and engine.  Gerhard spent quite a bit of time with me and I was able to order and receive everything I needed.  On a side note, I highly recommend working with Aircraft International for all of your 3W needs.  I have always received great service and, when ordering anything, very prompt shipping.

The install went very smooth.  All in all it took me about 10 hours total.  The most significant amount of time was spent encapsulating all of the bays.  I used 1/16″ plywood and blocked the bulkhead behind the canisters and all bays that hold electronics.  This is absolutely necessary so the fuselage doesn’t become pressurized and blow off your covering and to keep your electronics cool.

WP_20140513_001

 

 

 

 

 

 

 

I measured and cut plywood to cover the bulkhead behind the canisters.  I then cut a 1/4″ plywood canister mount.  You can see this in the image above.  This made it easy for me to epoxy the canister mounts.

WP_20140513_002

 

 

 

 

 

 

 

WP_20140513_006

 

 

 

 

 

 

 

Once the canister were installed the way I wanted, I created a bolt-on cover so I would have easy access for canister maintenance.

WP_20140514_003

 

 

 

 

 

 

 

I used flex-headers so I could get the correct drop and positioning I wanted.

WP_20140515_016

 

 

 

 

 

 

 

Lastly, I relocated the throttle servo and modified the canister tunnel cover to give it a clean look.

WP_20140515_018

 

 

 

 

 

 

 

Yesterday I took the plane out for a few flights.  I had to make a few minor low and high carb adjustments as the canisters produce more back-pressure then the stock exhaust.

These new KS canisters brought the noise level down to 96db, a very big difference.  The plane sounds great!

Thank you Gerhard, at Aircraft International, for your help with the parts.  And thank you Morris and Phil, at the field, for helping me get this thing dialed in!

Speaking at SharePoint Saturday Sacramento – May 31, 2014

I am honored to be chosen to speak at the SharePoint Saturday Sacramento (#SPSSAC) event, on May 31 of this year; just a couple weeks away.

I will be speaking on the topic of Records Management and how to accomplish Records Management tasks using Microsoft SharePoint 2013 technologies.  I will describe what records management is, and demonstrate a number of features that can be used, in SharePoint 2013, to meet your organizations records management initiatives.

There is a great line-up of speakers at this free event.  Take a look here for a list of all the fantastic sessions that will be delivered.

I would like to thank all of those who have given their time to organize this event.  I know what it takes to do so and it is a lot of work.

I would also like to thank the sponsors; without them, this wouldn’t be possible!

If you haven’t already done so, PLEASE REGISTER!

 

SharePoint Saturday Sacramento – May 31, 2014

 

spsevents250x250SHAREPOINT SATURDAY

Contents for SharePoint Saturday Sacramento &#8211; May 31, 2014

May 31, 2014

Sacramento

 

The Northern California SharePoint Community is proud to host the 3rd SharePoint Saturday Sacramento

Join fellow SharePoint colleagues in attending over 25 sessions presented by MVPs, MCMs and other SharePoint leaders. Topics include:

  • SharePoint 2013/2010
  • Office 365 / SPO
  • Business Intelligence
  • Case Studies
  • Search
  • Social & Mobile with SharePoint Reporting
  • And more …

This event is FREE and open to the public. Network, learn and immerse yourself in tips, tricks and ideas from leading SharePoint Experts from around the country.

WHERE & WHEN
Patrick Hayes Learning Center
2700 Gateway Oaks Drive
Sacramento, CA 95833

Saturday, May 31, 2014
8:00 AM to 5:00 PM (PST)

REGISTRATION
Registration is required to attend.
http://spssac2014.eventbrite.com

Admission: Free

Continental breakfast, snacks and lunch are included. Parking is free, but space is limited.

Register now at http://spssac2014.eventbrite.com

AeroWorks 30cc Extra 260 Conversion to Electric – Motor Mounted

This is the second article in my AeroWorks 30cc Extra 260 electric conversion project.  In the first article, I listed all of the electric parts I am using in the build.  In this article I show how the electric motor is installed.

I mounted the electric motor in my AeroWorks 30cc Extra 260 yesterday.

30cc Freestyle Extra 260 - 09Here is what the airplane looked like with the DLE 35cc RA engine.

 

 

 

 

 

WP_20140328_001

 

And here is what the airplane looks like now, with the electric motor.

I used the same DLE standoffs and fabricated a simple motor mount.

 

 

WP_20140328_002

 

It is simple, light and rock solid.

 

 

 

 

WP_20140328_003

 

I was a little concerned about how this would come together, but all in all, I am very pleased with the end result.

 

 

 

 

 

WP_20140328_004

The ESC is mounted below to get as much air cooling as possible.

 

 

 

 

 

 

Tomorrow I plan to complete the installation and go flying!

AeroWorks 30cc Extra 260 Conversion to Electric

I have been flying my AeroWorks 30cc Extra 260, 76″ wingspan, for over a year now.  I have more then 200 flights on it and absolutely love it.  Its a wonderful aircraft and can do any aerobatic maneuver you ask of it.  The only issue I have had with the airplane is the DLE 35cc RA gas engine.  I have done just about everything I know of to resolve the “load up” issues, I have finally given up on it.

Electric power is so advanced now that I thought this would be a good airplane to convert.  I have been flying smaller electric airplanes for ever but this is the first of this size.

After many conversations and questions on RC Groups, asking friends and other experts, I finally settled on the following configuration:

Electric Motor MOTROLFLY DM-4330-298
298Kv, 2700 watts
ESC ZTW Gecko OPTO 120amp HV ESC
Arming Switch MPI Spark-eliminating, High Voltage Arming Switch
Connectors EC5
Motor/ESC Connectors 5.5mm Bullet
Batteries 8S 6600mAh, (2) 4S batteries in series

Here is the new motor, ESC, arming switch and series battery connector all wired together.
WP_20140326_006

WP_20140326_004

WP_20140326_003

WP_20140326_002

WP_20140326_001

Next, I need to get it mounted in to the airplane. I am currently waiting for some additional parts. As soon as its all mounted, I will take some pictures!

Cheesy Fresh Corn Grits

Grits are a fantastic side and can be cooked and used in so many ways.  In a short few months, we will be coming up on fresh corn season.  Use the recipe, below, to kick-up your next grits dish.

cheesycorngrits

Ingredients

Contents for Cheesy Fresh Corn Grits

2 tablespoons Unsalted Butter
1 tablespoon Canola Oil
3 ears Fresh Corn, kernels removed
Kosher salt and freshly ground black pepper
2 cups Whole Milk
1 1/2 cups Stone-ground Grits
1 1/2 cups Grated Aged White Cheddar
1/4 cup Grated Parmesan
Fresh Parsley Leaves, for Garnish

Directions

  1. Heat the butter and canola oil in a large saucepan over medium-high heat.
  2. Add the corn, season with salt and pepper and cook for a few minutes.
  3. Add the milk and 3 cups water and bring to a boil.
  4. Slowly whisk in the grits until well combined and continue whisking until smooth.
  5. Reduce the heat to low and cook, stirring occasionally, until thickened and smooth, about 45 minutes; add more water as needed to keep the mixture creamy.
  6. Remove from the heat, and whisk in the cheddar and Parmesan.

Stay Hungry!

T-6A Texan II – Motor Selection

To continue on with my T-6A Texan II Build Log, I am in the process of determining the appropriate electric brushless motor.  There is a lot of science around selecting the best electric motor for specific applications and, I must admit, I am still learning.

This aircraft is designed for a .75 to .91 cu in 2-stoke engine or.91 to 1.00 cu in 4-stroke engine.  I am estimating the flying weight to be 9.5 pounds.

A good starting point for sizing electric brushless motors is to use the following:

150 watts per pound Scale Flying
200 watts per pound Aerobatic/3D Flying

Since this is a military aircraft, I am basing my initial calculations on 150 watts per pound. With that said, 150w X 9.5 = 1425 total watts.

There are many electric brushless motor, battery and prop combinations that can be used.  So many that it can be confusing.  So any input is greatly appreciated.

UPDATE – I’ve made my decision.  I’m going with the E-flite Power 90, 8S 5000mAh batteries and 16×8 prop.  This will produce 1800 watts max. which is plenty of power for this aircraft.

Options I am looking at right now are:

MOTOR/PRICE RPM/Volt (Kv) WATTS CURRENT CELLS RECOMMENDED PROP
E-flite Power 90
$129.99
325Kv 1800 50amp
65amp max.
6S to 8S LiPo 16×8 to 18×8
E-flite Power 110
$139.99
295Kv 2000 55amp
65amp max.
8S to 9S LiPo 17×8 to 19×10
Hacker A50-16L-V3
$169.00
265Kv 1862 80amps
100amps max.
8S 16×8

I feel any of these motors would work well in this aircraft.  If you have any comments or recommendations, please leave them!

T-6A Texan II – Build Log

About two weeks ago, I started building a T-6A Texan II.  This is the Beechcraft version built by Raytheon Aircraft Company.

In the image above, the fuselage is about complete.  I am fitting the cockpit items; dahs and pilots.  None of this is glued in place yet; I still have some trimming of the front dash to do.

This should be a very cool airplane!

Specifications

Contents for T-6A Texan II &#8211; Build Log

Wing Span 63.0″
Wing Area 647.9 square inches
Flying Weight 8 to 9 pounds
Length 58.3″
Motor Working on power configuration.
E-flite Power 90 or Power 110?
Hacker A50-16L?
UPDATE – I’ve made my decision.  I’m going with the E-flite Power 90, 8S 5000mAh batteries and 16×8 prop.  This will produce 1800 watts max. which is plenty of power for this aircraft.
Retracts 60-120 Tricycle Electric Retracts by E-flite

Here you can read the other articles about this build process.

About the Beechcraft T-6A Texan II

The Beechcraft T-6 Texan II is a single-engined turboprop aircraft built by the Raytheon Aircraft Company (which became Hawker Beechcraft and is now Beechcraft Corporation).  Based on the Pilatus PC-9, the T-6A is used by the United States Air Force for basic pilot training and by the United States Navy for Primary and Intermediate Joint Naval Flight Officer (NFO) and Air Force Combat Systems Officer (CSO) training.  It has replaced the Air Force’s Cessna T-37B Tweet and is replacing the Navy’s T-34C Turbo Mentor.  The T-6A is also used as a basic trainer by the Royal Canadian Air Force (CT-156 Harvard II), the German Air Force, the Greek Air Force, the Israeli Air Force (Efroni), and the Iraqi Air Force.  The T-6C is used for training by the Royal Moroccan Air Force and the Mexican Air Force.  The Royal New Zealand Air Force will also begin operating the type in 2015.

Northern California ARMA Seminar Panel Member

On March 6, 2014, I will be a panel member at the Northern California ARMA Seminar.  I am honored the Northern California ARMA would invite me to be a panel member and am looking forward to it.

At this seminar, we will be focusing on Records Management and I have been asked to attend and share my experiences with Records Management in SharePoint.

This should be very informative and I hope to see you there!

Register for this Event Here

Who is ARMA?
ARMA International is a not-for-profit professional association and the authority on governing information as a strategic asset.

The association was established in 1955. Its approximately 27,000+ members include information managers, information governance professionals, archivists, corporate librarians, imaging specialists, legal professionals, IT managers, consultants, and educators, all of whom work in a wide variety of industries, including government, legal, healthcare, financial services, and petroleum in the United States, Canada, and more than 30 other countries around the globe.
ARMA International offers invaluable resources such as: •Legislative and regulatory updates
•Standards and best practices
•Technology trends and applications
•Live and Web-based education
•Marketplace news and analysis
•Books & videos on managing records and information
•Global network of 27,000+ information management professionals and more than 10,000 professional members

ARMA International publishes Information Management magazine, the only professional journal specifically for professionals who manage information as part of their job description. The award-winning IM magazine is published bi-monthly and features articles on the hottest topics in information governance today, as well as marketplace news and analysis.

The association also develops and publishes standards and guidelines related to records management. It was a key contributor to the international records management standard, ISO-15489.

First Cilantro Harvest and Process

I harvested and processed fresh cilantro from the garden today.  Once your cilantro is ready for harvesting, cut from the plant, discard and brown leaves and wash.  I then let it dry on a paper towel overnight.  Lastly, I dry my cilantro for later use.  Using this type of drying approach, the cilantro will stay for up to 24 months.

2014-02-26-CilantroDry672x502

Stay Hungry!

100cc Extra 260 IMAC Competition Aerobatics Build

One of my favorite airplanes is the Extra 260.  I have many in various sizes.  This is my AeroWorks 100cc Extra 260; which I use in IMAC International Competition Aerobatics events.

Wing Span 104 inches (8.6 feet)
Wing Area 1867
Weight 27 pounds
Engine 3W 110cc CS Gas, 12.8 HP
Servos (9) Hitec Digital (Programmable)
Power Distribution Smart-Fly Power Expander Pro

3W 110cc Competition Series (Twin Cylinder) Gas Engine

I decided to power this aircraft with the 3W 110cc Competition Series Engine instead of the DA-100 because of the horsepower it produces.  The 3W 110cc engine produces 12.8 horsepower; which provides unlimited vertical for hovering and punching out of any maneuver.

100ccExtra260Engine600x760

Electronics and Flight Controls

The electronics and flight controls have become very sophisticated.  Programmable servos, multiple servos on all flight surfaces, remote receivers, optical engine cut-off, backup and fail-over systems and more…

Each of the (9) servos are connected to a dedicated receiver channel.  This provides the ability to fine tune each servo.

100ccExtra260Electronics600x1065

Smart-Fly Power Distribution

The Smart-Fly Power Expander Pro provides power distribution, regulated voltage to all servos and fail-over power (battery) management.

100ccExtra260Smartfly600x338

Cockpit

Cockpit detail is required to for IMAC competition; both pilot and dash details.  Besides, it looks cool…

100ccExtra260Cockpit600x800

Flying

This aircraft is a blast to fly. It has unlimited vertical performance and easily executes any aerobatic maneuver!

100ccExtra260Flying600x500

Team Hammerhead!

Fly Safe and Enjoy…

Planted More Beefsteak Tomatoes Today

It is a beautiful day out today so I thought I would do more thinning and transplanting.

Today I planted 2 more Beefsteak Tomato plants. These should be ready to harvest in late May to mid April.

2014-02-24-BeefsteakTomatoes2_268x200

More on Tomatoes…

I also planted more Rosemary and Greek Basil.  These should both be ready for use in about a month as they are already very mature pants.

This is the advantage of sowing seeds, indoors, early in the season!

Alfredo Sauce

Alfredo Sauce

Author: Bob Mixon

Alfredo sauce is very versatile and wonderful over fettuccini and other pasta. Use this basic Alfredo sauce over pasta and add broccoli or shrimp. ~yum~

Servings: 4

Ingredients

2 cups (1 pint carton) Heavy Cream
12 tablespoons Unsalted Butter
1/2 tablespoon Fresh Garlic, Minced
2 cups Parmesan Cheese, Grated
2 cups Asiago Cheese, Grated
Salt and Fresh Ground (white) Pepper

Directions

1. Add heavy cream and butter to a large sauce pan and cook, over medium heat, until butter melts; about 3 minutes. The key is to heat this slowly as to not scorch the mixture.

2. Add the fresh minced garlic.

3. Slowly stir in small amounts of the Parmesan and Asiago cheese. Stir sauce continuously as the cheese melts.

4. Once all cheese has melted, remove from heat.

5. Let the sauce stand for 5 minutes before serving.

6. Salt and pepper to taste.

Notes

Fettuccini Alfredo – Add this Alfredo Sauce to cooked Fettuccini and mix. After the butter has melted, step 1 above, add 1/2 cup fresh lemon juice. Once you have combined the Alfredo Sauce and Fettuccini, incorporate 2 teaspoons grated lemon zest and a small pinch of nutmeg. Top with steamed broccoli, asparagus or shrimp.

Factors that Drive the Success of Information Use

There are many factors that comprise the successful implementation of a SharePoint solution.  Regardless of what it is you are building, the following key success factors apply.

  1. Ease the Pains Associated with Storing and Managing Information
  2. Provide Meaningful and Accurate Information to Consumers
  3. Promote the Agile Evolution of Information Use
  4. Governance
  5. Education

Each of these Key Success Factors is described in more detail below.

First and foremost, your information must be stored in a manner that is consistent, easy to understand and easy to maintain.  Without information, you wouldn’t have the need for a content management solution and without easing the pains associated with storing and managing this information, Contributors will be less likely to use the solution.

There are specific techniques that can be used when implementing SharePoint that can simplify the contribution and maintenance of information.

Content Categorization – We use content categorization to understand the types of content being stored which aids with:

  • Reducing the question “where do I store and manage this content”,
  • Provides a means to preset metadata with default values; reducing the metadata values that must be manually entered by a user, and
  • Search scoping, information aggregation and metadata filtering.

Without adding some level of structure to your content, you will accomplish little.  Storing and managing your content using the same approach as what was found on file shares adds zero value.  You will eventually end up with hundreds, if not thousands, of sites.  Many of those sites will have document libraries with many folders and sub-folders.  Users will quickly be uncertain to where content should be stored.  Managing unstructured content without any level of categorization will always lead to diminishing adoption, frustration and distrust in the technology.

Take the time to categorize your content, apply grouping principals and governing rules for appropriate use and you will be working towards a solution users adopt and become more efficient executing day to day business operations.

Understanding – The implementation team must have a thorough understanding of the content to be managed; thus implementing a solution that is consistent and eliminates ambiguity.

For example, the term Contract can have many definitions in an organization; Employee Contract, Customer Contract, Vendor Contract, etc.  These contract examples have entirely different meanings, uses and associated processes.  By thoroughly understanding the information, a solution can be appropriately architected to eliminate this type of ambiguity.

Responsibility – The responsibility of information belongs in the hands of the information owners.  When we implement solutions that aid in the ownership and responsibility of managing information, that information is more likely to be fresh, up to date and accurate.

Process – Information only has real value when it is used in actions and to facilitate decisions:

  • Improved decision-making
  • Simplify work and information flows
  • Achieving action plans and change initiatives
  • Developing information value chains
  • Maximizing use of information

Making process an integral part of architecture is a great way of adding value to your business.

Metadata – Metadata allows you to store and manage instance specific information for your content.  For example, having the ability to store the date of a meeting with the meeting minutes document will allow you to quickly locate that meeting document by meeting date.  And, storing the value of a contract with each customer contract document would allow you to filter all customers that have executed a contract greater than $100,000; which might aid with a marketing effort.

Many fear the use of metadata as there is a belief it is too much work for the user when uploading a new document or adding a new item to a list.  Various techniques can be utilized to overcome these fears.  These techniques include (but are not limited to):

  • Using appropriate information architecture, categorization and grouping principals, will allow you to configure default metadata values.  This eliminates the need for a user to input the metadata value but allows it to be present for search, faceted filtering, aggregation, workflow decision and triggers, etc.

An example of this would be a Project Number metadata column associated with a project document.  If you have all documents, associated with a specific project, managed in a site, you already know the project number and can configure a default value; i.e. the Project Number.

  • User education is also a very important technique.  The more your users understand the value of metadata, the more likely they will be to ensure metadata values are accurate.

Demonstrate the value of metadata to your users by setting up a POC and show them search results with and without the use of metadata.  Demonstrate faceted filtering and advanced search with and without the use of metadata.  It is a powerful message.

Metadata is also the primary means by which users can filter aggregate views of content; this is known as faceted filtering.

Provide Meaningful and Accurate Information to Consumers

Virtually all employees in your organization will consume information to support their specific day to day business needs.

The consumption of information will be determined by a specific contextual need.  For example, an employee may wish to search your Intranet for the latest parking policy or a project team member may wish to find notes for a meeting that occurred two months ago.

When considering the consumption of information, we also must consider how it will be presented to those consumers; search results and aggregate views are but only a few that will be required.  Other means of presenting information will include dashboards, printed reports, charts, etc.

The only means by which we can query information and produce accurate search results, faceted filtering, aggregate views, dashboards, printed reports, charts, etc. is by first architecting the information; so we know what it is we are querying.  Without this, none of this will be possible!

Promote the Agile Evolution of Information Use

There are many factors that drive the adoption and evolution of information use.  Of these, the most critical include:

Managing the Change of Information – Information is changing on a regular basis; project documents change and evolve, employee handbook and corporate policies are in a constant state of evolution.  Architecting your content management solution to facilitate the evolution of information is critical.

Work-in-Progress versus Published Information – During the process of information creation and collaboration, the state of that information is considered work-in-progress.  The solution must provide the means to determine work-in-progress versus published.  In some cases this is delivered using content versioning or security.  In other cases it requires a more complex means of disseminating the information.

Keeping Information Fresh and Up to Date – It is the responsibility of information owners to keep information fresh and up to date.  If the information in your content management solution is allowed to become stagnant and out of date, consumers are less likely to visit your Intranet and information consumption.

Versioning – An advanced content management solution provides the ability to version your content, view and roll-back to previous versions.  The lifecycle of content management requires this functionality.

Archival and Destruction – When information has reached the end of its lifecycle, often it is archived and/or destroyed.  This applies to all information in your environment, not just corporate records.  Thoroughly understanding the lifecycle (creation, evolution and eventual destruction) of information is a critical element of information architecture.

Governance

Governance of your information management solution comes in many forms; policies, procedures, processes, guidelines and education.  Without governance all of your hard work architecting a solid solution will eventually crumble.  The negative consequences are too many to list in this article.

The primary elements of information and solution governance falls in the following categories:

Infrastructure Governance – In most organizations, there is sufficient infrastructure governance; server builds, patches and update schedules, SLA’s and so on.  The infrastructure to support your SharePoint installation will mostly fall within this existing governance.

Solution Configuration and Customization Governance – Configuration and customization governance is equally important as the infrastructure governance.  Implementing processes and controls to appropriately manage change, meeting up-time SLA’s, is critical.

Solution Use Governance – It is here where most implementation teams fall short.  Governing the use of your SharePoint implementation is a means to keep configuration consistent.

Often I hear a department director or manager demand they have administrative rights to their department site.  In most cases, giving a non-technical user administrative rights to anything in SharePoint, is a huge mistake.  There are so many things that can, and will, go wrong in this scenario.  Here are a couple examples:

  • Because the non-technical user doesn’t understand the security model, they inadvertently give access to the wrong users.  I have see employee salary information exposed in this exact situation.
  • Consider a non-technical user creating a new document library and not using the data types (content types) your implementation team configured.  Now that same non-technical user uploads policy documents to this new library.  These policy document won’t be aggregated to your corporate policy book nor could they be searched (and filtered) as other corporate policy documents are.

These are but a couple examples of insufficient use governance; there are many more negative consequences.

My recommendation is to lock your implementation down tight as can be; only allowing the implementation team to make modifications at first.  Implement a federated use governance model as you educate users with the appropriate skills to make modifications that meet your best practices, policies, procedures and guidelines.

Without governing the implementation, customization and use of your information management solution, it will evolve in an inconsistent and out of control manner and quick become of little use to the business.

Education

Education at all levels is of paramount importance.  In most business environments your users have been driven to use file shares, local drives, email systems, etc. to store and manage their information.  Moving your culture from “the way we have always done it” to a completely new environment is a very large chasm to cross.  Users must be appropriately educated to trust and use the new system.

Conclusion

As you can see, there are many factors that contribute to the successful implementation, adoption and use of a SharePoint content management solution.  Installing SharePoint, configuring a few sites and throwing the keys to the kingdom over the wall will fail every time.  On the other hand, implement sound information architecture techniques, governance and education will lead you down a path of success!

If you are in need of help with your SharePoint implementation, Information Architecture, education or training, please don’t hesitate to contact me; this is what I specialize in!

 

Time to Plant Tomatoes

It’s that Tomato time of year!  Late February, early March have all of your tomatoes planted and growing.  Sow your seeds (indoors) in early February so you are ready to thin and transplant outside.  Today I planted Big Beef and Red Beefsteak Tomatoes.  Planting now should give me my first harvest in late May to early June.

I stagger my planting of tomatoes every two weeks and will harvest through August.  In two weeks I will start Roma Tomatoes; which are great for canning marinara sauce.

As I have time, I will post recipes on how to make tomato sauce, marinara sauce, spaghetti sauce, etc. and how to can them for long term storage.

Last year I processed and canned about 100 pounds of tomatoes and just finished the last jar of marinara sauce last week.  This means I am going 3 to 4 months without my canned tomato sauces.  This year I’m looking to can about 150 pounds and see if it gets me through an entire season.  I also have to account for gifts; I enjoy giving some away to family and friends.

I have more general Tomato sowing, planting and harvesting information here.

Happy Planting!

 

Chorizo Sausage

I love Chorizo Sausage but found most it you can purchase at the grocery store is very greasy and made from some pork products that aren’t too appetizing!  I won’t get in to the details but you can look it up on the Internet.  Once you learn what it is made of, you may be more likely to use this (or similar) recipe too…

Yields 2 Pounds

NOTES:

Contents for Chorizo Sausage

  1. It is common for me to double, even triple, this recipe.  I will leave it in the refrigerator for 24 hours then divide it in to 1/2 pound packages and vacuum seal it.  It will keep for 9 months when vacuum sealed and frozen.  However, it never lasts that long in my house!
  2. I always purchase a large pork butt and grind it myself.  It is less expensive and you have more control over the fat content.  During the grind process, I add the herbs and spices.  This makes for a very well blended meat.  Use a KitchenAid Food Grinder Attachment!

Ingredients

2 lbs Ground Pork
3 large Dried New Mexico Chiles (Chile Colorin) or 3 Large Mild Red Chilies (about 3.5-inches)
4 small Dried Chile de Arbol (Chile deArbol) or 4 small Chilies, according to how hot spicy you want your chorizo
1/4 cup Boiling Water
8 cloves Garlic, minced
2 tablespoons Dry Oregano Leaves
2 teaspoons Ground Cumin
1 teaspoon Fresh Ground Black Pepper
1 teaspoon Dark Brown Sugar
4 tablespoons Cider Vinegar
2 tablespoons Tequila (and a shot-glass for the chief)
3 1/2 teaspoons Salt

 

Directions:

  1. Break the colorin chiles into 3 pieces, and put them and the deArbol peppers in a bowl.
  2. Pour the boiling water over them and let them sit until they’re re-hydrated and soft.
  3. Place the re-hydrated chiles together with the liquid into a food processor and add the garlic, oregano, cumin, black pepper, sugar, vinegar, tequila, and salt, and process until the mixture is smooth.
  4. Place ground pork and the liquid mixture into a sturdy electric mixer (such as a KitchenAid) and mix well.
  5. When secured in a sealed container, this chorizo keeps well in the refrigerator for a couple of weeks. I usually let it sit in the fridge for a couple of days to let the flavors meld, then divide it into smaller portions of 3 to 4 ounces (that’s about two servings) and freeze it.  If you have casings, you can also stuff it into those and smoke it – very tasty!

SharePoint 2013 Task Management

Task Management

The task management functionality available in SharePoint 2013 has many new and improved features. Features such as the ability to create sub-tasks, a new timeline view, more robust management of tasks using Microsoft Project 2013 and so on. In this article I will take a deeper look in to these new and enhanced features of SharePoint 2013 Task Management.

For the purposes of this topic, I have created an “out-of-box” site using the Project Site template. No customizations have been made to the site, libraries or lists. The figure below is our demonstration site, using the standard Project Site template.

clip_image001

The figure below shows the standard Tasks list that is included with the Project Site template. The list itself is very similar to what we found in earlier versions of SharePoint. However, you will notice a timeline view is now available. More about the timeline view later.

clip_image002

Task Assignment

An improvement in SharePoint 2013 task management is the ability to assign multiple resources to a task. In previous versions, you could only assign a single resource which made using the “out-of-box” task management cumbersome when managing more complex projects.

clip_image003

Subtasks

You now have the ability to create subtasks which is another new feature found in SharePoint 2013. I believe this was primarily implemented to support Microsoft Project integration. More on Microsoft Project integration below.

To create a subtask, click the parent item context menu and select the Create Subtask option.

clip_image004

The figure below shows our task list after adding 2 subtasks.

clip_image005

Timeline View

The timeline view provides you with the ability to display specified tasks in a timeline, or Gantt, style view. The timeline view can be enabled or disabled for any task list in SharePoint. This is accomplished by editing the web part properties and checking/unchecking the Show timeline option.

clip_image006

You can add and remove tasks from a timeline by clicking the task item context menu and selecting Add to Timeline or Remove from Timeline option.

clip_image007

In the figure below, you can see that I have added the Human Resources Intranet Requirements task to the timeline. You will find the timeline view is best suited to display high-level tasks and milestones. If you add too many tasks it will become cluttered and difficult to read.

clip_image008

Aggregating Tasks to Your Personal Site

One of the best new features available in SharePoint 2013 is the aggregation of tasks, assigned to you, in your personal site. This provides you with a view of all tasks, across the entire farm, aggregated in one place. This means, regardless of where a task resides (a department site, project site, team site, etc.) they will all be aggregated to your personal site.

To accomplish this in the past, we had to customize a solution using search web parts, create a custom developed solution or purchase a 3rd party tool.

Note: The personal site task aggregation feature utilizes the SharePoint FAST search engine to index task information and make it available for querying. This means, tasks will not be aggregated to your personal site until the search indexer has processed the tasks.

To see an aggregate view of all your assigned tasks, simply go to your personal site and click the Tasks link in the left vertical navigation area.

In the figure below, you can see the tasks assigned to myself.

clip_image009

You might have also noticed, when you click a task item context menu, you have the ability to edit the task and go directly to the containing site or list. The is very convenient for managing tasks that reside in many locations of your Intranet.

Managing Tasks with Microsoft Project

Microsoft has made the management of SharePoint tasks, in Microsoft Project very convenient. To open a task list in Microsoft Project, simply navigate to the task list and click the Open with Project option on the ribbon bar.

clip_image010

Now that your SharePoint task list is open in Microsoft Project, you can use all of the features available in Microsoft Project.

clip_image011

After you make updates, in Microsoft Project, and save them, all of those updates are posted to the SharePoint task list.

Note: You may be asking yourself, Microsoft Project has many more features and fields then a SharePoint task list; is this information lost when you close Microsoft Project? The answer is no! Microsoft Project and SharePoint are tightly integrated and the actual project file is also saved to the site; in the Site Assets library.

clip_image012

Extending Microsoft Project Fields to a Task List

There may be situations when you wish to publish additional information from Microsoft Project to your task list in SharePoint. This can be easily accomplished by mapping fields using the following steps.

For the purposes of our demonstration, I will map the Duration field from Microsoft Project to our task list in SharePoint.

  1. In Microsoft Project, click the File tab in the ribbon bar.
  2. In the Info section, click the Map Fields button.

clip_image013

  1. In the Map Fields dialog, click the Add Field button.
  2. In the Add Field dialog, for the Existing Project Field, select Duration from the drop-down list.
  3. For the New SharePoint Column, leave the default as Duration.
  4. Click the OK button when you have completed these steps.
  5. Click the OK button in the Map Fields dialog when you have mapped all the desired fields.

Now the Duration field in Microsoft Project is mapped to a new Duration field in the SharePoint task list. Save your project and the SharePoint task fields will be updated, containing the mapped field values.

As you can see in the figure below, the Duration field now contains the duration information from Microsoft Project.

clip_image014

Once you start editing and managing your project tasks in Microsoft Project, I have learned that it is easier to continue using Microsoft Project; instead of switching from editing tasks in SharePoint some of the time and in Microsoft Project other times.

Conclusion

As you can see there are many new and improved task management features found in SharePoint 2013. The ability to assign more than one resource to a task and the timeline view are of my personal favorites. In addition, I use the Microsoft Project integration on virtually all project management scenarios I am involved with.

It is important to note; all of the features described in this article are available in Office 365. I use Office 365 to run my business and manage all client projects and these task management features and Office integration I use on a daily basis.

If you are interested in discussing these features, obtaining a demonstration of how they may improve your task management needs in your environment, please Contact Me. If you have any questions or comments, please leave a comment below; I will answer as I have availability.

SVSPUG: Leveraging SaaS Applications Using the SharePoint 2013 App Model, 2/20/2014

Join us at the Silicon Valley SharePoint User Group, on February 20, to learn more about SharePoint 2013 App Model development techniques.  Brian Prigge, from Ramp, will be delivering our session, discussing how to leverage SaaS applications using the SharePoint 2013 app model.

This should be an interesting and informative discussion; we hope to see you there!

Sponsored by
RAMP Logo
We would like to thank Ramp for sponsoring our meeting food and drink.  If you were fortunate enough to append our panel meeting, last year in July, Ramp was the food/drink sponsor and it was fantastic.  I’m sure the food and drink at this meeting will also be wonderful.
Register Now
registernow96x96[1]

 

SESSION INFORMATION
Speaker: Brian Prigge (Ramp)
Topic: Leveraging SaaS Applications Using the SharePoint App Model
Description: Historically, SaaS applications have been disparate causing end user confusion and leading to poor user acceptance.  With that advent of SharePoint 2013 and the new App Model, developers can bring those applications under one roof in either SharePoint Online or SharePoint Server without disenchanting end-users or frightening the IT pros.  As with any new development model, there are significant benefits, but also significant challenges.  I’ll review experiences from real-world projects and how to integrate SAAS services with SharePoint 2013.  Attendees will learn important tips and best practices for how to leverage the App Model to augment a SharePoint Server 2013 or SharePoint Online environment, while maintaining a consistent look and feel, emphasizing searchability, and ensuring security.
About Brian Prigge: Brian Prigge is a SharePoint Architect with RAMP, where he leads the implementation of SaaS-based architectures into custom SharePoint integrations. He has been working with SharePoint for over five years and has a deep knowledge of both the solutions model and the app model for custom SharePoint development. He has worked in many major verticals ranging from pharmaceuticals to financial services. He specializes in designing and developing custom solutions to complex business problems.’’Prior to his position at RAMP, Brian worked as a SharePoint Consultant and Trainer for a Chicago-based consultancy and as an engineer at a prominent automotive security company. He has worked with a wide range of farm sizes and throughout the entire project lifecycle, allowing him to provide a well-rounded perspective on the complex nature of SharePoint.

 

MEETING LOCATION
Meeting Location: Valley Transit Authority (VTA)
3331 North First Street
Building “A”
San Jose, CA 95134
United States of America

Click to View a Bing Map

Meeting Date: February 20, 2014
Meeting Time: 5:30pm to 6:00pm – Arrive
6:00pm to 7:00pm – Session
7:00pm to 7:30pm – Q&A
7:30pm to 8:00pm – Raffle and Wrap-up

 

ABOUT RAMP
RAMP LogoRAMP has developed the next generation of search & video experiences to make video more valuable.  Using RAMP, clients are able to fully leverage the value of all of their video content by driving increased discovery across search and social sites, enhancing user engagement through dynamic search and publishing solutions across web, mobile, and connected devices, and maximizing revenue through sophisticated advertising capabilities.
Leading media companies and enterprises using RAMP include Thomson Reuters, FOXNews, ABCNews, NBC, Dow Jones, Meredith, Citibank, and others. For more information visit RAMP.com, or contact us at info@RAMP.com.  Engage with RAMP on Twitter (@RAMPInc), Facebook (/RAMPInc), LinkedIn (/company/RAMP-Holdings-Inc) and YouTube (/user/RAMPIncVideo)

Father, Friend, Senior SharePoint Architect, Author, Trainer, Pilot and Home Chef