Skip to main content

Posts

Showing posts from 2019

Password Management

The need to create, store and manage passwords is a huge responsibility in modern day life. So why is it that so many people do it so poorly? This is a loaded questions with answers ranging from people being uneducated, to lazy, to educated but not affective in their methods and many more. This blog is to help those (in some way even myself) around me strengthen their online security.
Why does it matter? To answer this let's look at a few numbers. According to the US Department of Justice (DOJ)’s most recent study, 17.6 million people in the US experience some form of identity theft each year. Ok fine but that is identity theft that has nothing to do with password management. What is one way someone can start getting information about who you are? How do they get access to steal your money?

From Cyber Security Ventures 2019 report:
"Cybersecurity Ventures predicts that healthcare will suffer 2-3X more cyberattacks in 2019 than the average amount for other industries. Woefully …

Sitecore Sidekick

One of the struggles with any CMS is how to move content from one enviornment to another. Each CMS tends to have its own flavor of how to do this. With Tridion you have the content porter for better or worse, often worse. With Sitecore you have a few options between Unicorn and Team Development for Sitecore (TDS) and a few others. Both Unicorn and TDS are focused on moving content out to production. What I mean by that is they are really good and moving content item from development out to production. They don't really support the use case of bring content items from production or other higher level enviornments down to lower level environments. So what do we do with that content authors create in production that we would like to seem in all enviornments and make standard in our deployments? This is where Sidekick comes in.

Jeff Darchuk has created a great little plugin to Sitecore called Sidekick. This plugin makes it really easy, and fast, to copy anything from one environment t…

Using Feydra with Sitecore and a custom ViewEngine

When working with Sitecore and Front End Developers (FED) you can use a tool called Feydra from Hedgehog. Feydra is a great framework that makes life a bit easier for the FED team. If your solution uses a custom view engine processor you can't use Feydra though. As of this writting Feydra does not support working with a solution that is using a custom view engine (because a custom view engine is how Feydra does it's magic). With the power of Sitecore rule based configuration maybe there is a way.

The benefits of using Feydra were pretty big so we began to wonder if there might still be a way to do this. As we looked into the Feydra code we realized it was using VirtualPathViewEngine as the view engine which inherited RazorViewEngine. Since we know the interface for this class we know it works just like any other view engine. So what if we had our view engine inherit from VirtualPathViewEngine? Could we add the same logic Feydra execute to decide if we needed to pass processing…

How to find Givers when Hiring

How do you hire the best talent into your organization? If you believe your people are your best asset how do you make sure you are hiring in a way that will protect and lift those assets? I believe employees can be a company's biggest asset, but that is not to say anyone you hire immediately becomes a huge asset. Too many companies during the interview process focus on understanding the person's skill level. While this is important I believe it is the soft skills and the personality type that is most important. However, most interviews spend very little time trying to flush these traits out. The personality traits of a person are hard to flush out in a 60 minute interview, which is probably why most people don't try.


A while back I watched a talk from Adam Grant on TED about giver's and taker's. This talk really rang true for me and my experience at different companies. I really believe that if a company can fill their ranks with Givers (or at least Matchers) they…

Sitecore Experience Forms Validation

Recently I was adding Sitecore Experience Forms (NOT WFFM) to some existing views I had. Sitecore provides a walk-through on how to set this up, however, when I set the page up as they noted when I clicked submit I was always sent to a URL like this:

http://<domain>/formbuilder?osa_did=C0020166&fxb.FormItemId=b41b7d6a-592c-415f-bb56-a9d7c803c148&fxb.HtmlPrefix=fxb.37b94ac0-596b-4b2d-999e-c9814ee8ff98

To try and resolve this I took a step back and approached this like I did not already have an existing view. So I created the base view like they call out in the walk-through. Then I created the layout view and set its base to the base I just created (the one that holds the references to the Sitecore script commands). When I did this the form worked! So I moved the same script commands to my existing view again, and the form stopped working and on click sent me to the "formbuilder". What!? I decided it was time to talk with Sitecore supported.

After talking it thro…

Variables for pipelines

I recently stumbled on a post about adding configuration variables to Sitecore pipelines. This is one of the coolest hidden features of Sitecore and its pipelines! As you build custom pipelines one thing you will probably encounter pretty quickly is the need to pass in a parameter that changed based on the environment the code is deployed into. This is where pipeline variables save the day.

The first thing you need to do is create a variable that will hold the data you want to pass into your pipeline processor. This variable can be udpated by your deployment process to hold the value you want in each environment.

<sc.variablename="mySites"value="mySitesValue"/>
Important: You of course want to create this variable in a patch file and not directly in any of the default Sitecore configuration files.

Next, you want to setup your pipeline configuration. This, of course, is also done by using a patch file.

1 2 3 4 5<processorsites="$(mySites)"patch:after…

Backing up your computer files with OneDrive

I have had a lot of people ask how to back files from their computer so they can get rid of it or replace it or rebuild it with a new operating system (OS). There are a lot of options out there that can do this in different ways. I tend to bucket all these into two main categories. Cloud-based back and physical back-ups.

Cloud-based backups are services that sync files into an online service run by some other company. Your files are synced to servers they run and manage and provide some level of guarantee about reliability, security, and availability.

Here is some popular option:

CarboniteiCloudOnedriveDropboxGoogle Drive Physical back-ups are backups you make of the files with some type of physical storage you have alongside the computer you are backing up. Normally these are point-in-time backups. Meaning your data is only backed from that last time you remembered to do a copy of the files yourself (I know there are physical devices that will do scheduled backups but we are not going…

Setting a Sitecore Business Rule Operator Programatically

Normally when you create a Sitecore business rule you would define an operator configuration and let the user define the type of operator they want to use. An example of this is the "StringConditionOpertator" (found here /sitecore/system/Settings/Rules/Definitions/String Operators). In a lot of cases, the user would select what type of operation to perform on the value they set. By type I mean things like "equals" or "contains" etc. Below is a list of operators you can use for a string condition.


What if you wanted to create a custom rule that did a string operation but you always wanted it to be the same type of operator? You did not want to, for whatever reason, allow the user to specify how the string should be compared. You can do this by setting the OperatorId to the GUID from the item above. A word a warning here though. Make sure the string stays in the proper casing. If you create a constant for this and/or a GUID and do something like "ToStr…