My Top 10 Guiding Principles of Mentoring

 

I have enjoyed mentoring in many companies and types of settings. Whether interns at the workplace, up and coming members at my place of worship or with people 3rd party charitable ministries there have been many great learning opportunities that I have been blessed to learn and grow from as a person. Mentoring is the lifeblood of continuing to provide the most powerful means of training and developing relationships. If you have the time in your company or organization to provide this and make a difference than please do!

My Top 10 Guiding Principles of Mentoring

1) Mentoring is equally just as important to the mentor as it is to the mentee – realize that you are not only providing a chance of growth to the individual but to yourself also. We can always learn and grow from the new personalities and perspectives that we have a chance to be a part of.

2) Mentoring is not telling people what to do; it’s how to guide people to learn how to do it. If people are never equipped with the knowledge and confidence to execute in the problem in front of them then they may be less apt to take those bigger steps in their future. Build their confidence!

3) Mentoring takes time (and it’s time well spent). If you’re not willing to invest an ongoing slot of time to people you are mentoring then both parties suffer in the process. And I can say from experience that you will know the right amount of time to invest in someone when they’re less focused on asking questions and instead feeling confident in execution.

4) Mentoring is to give others the edge you did not have when you started. If we do not raise the bar in where we start our prospective candidates then we in turn are not shifting our talent to be more like the quality candidates we want to hire.

5) Mentoring tests your ability to lead and manage others. Chances are if working with new people and helping them learn new things presents a challenge to tough then you may want to keep focused as an individual contributor and continue enriching your ability to lead and influence.

6) People receiving mentoring should be receiving from you a combination of selflessness, teaching, communication and learning. Any piece of this that is left off will result in teaching without applicability, only doing your things you selfishly do not wish to do, communicating only when obligated to and learning without understanding the purpose.

7) Effective mentoring is not driven by being their “boss”; it is driven by your actions in being their guide. Often times I have seen internships or new candidates turn into cheap labor having only a few purposes of things we do not want to do. These experiences that candidates have are not well received and do hinder the overall company or organization reputation.

8) Mentoring will coach your candidate through their fears and insecurities. Candidates should walk away from your mentoring feeling more confident in prior areas of weakness.

9) Mentoring is an open door, an open ear and an open mind. If you close any of these you will not promote the development of conversation and ideas. Sometimes a new fresh perspective from someone outside of the norm can be the jump-start you need to be excited about mentoring.

10) Mentoring promotes the development of mentors. Over many occasions I have now seen before my eyes candidates I have worked with now mentoring others and developing new employees and candidates.

PDF: Click Here To Download

Solved: odata filter by datetime with greater than (or less than) range

Need to filter your odata query and only have the datetime value to work with?

if your format looks like: 2018-12-31T00:00:00

Then you can query it by wrapping it in a datetime tag with quotes. see example below with it combining with an ID filter to only show a person’s information greater than 1/1/2018

https://yourserver/yourservice/YourData?$filter=(%20ID%20eq%201234%20and%20EXP_DATE%20gt%20datetime%272018-01-01T00:00:00.000%27)

Note: you can also do other options like less than (lt) or others.

Onward!

SOLVED: Redirect a SharePoint page using a meta tag to a new URL

I have a SharePoint tenant where we are working to redirect some existing pages over to landing pages that are providing instructions for migrating. Needed something short and sweet to flip it over without much trouble. It’s easier to manage with a meta rather than fighting the “making your external client side javascript work with SharePoint” fight. This one takes less than 5 minutes.

So via SharePoint Designer:

<meta http-equiv="refresh" content="0;url=http://your-url-goes-here" />

That’s it. Onto the next one!

Remember The Laggard! My Story of Overcoming Fears and Choosing To Learn

Have you ever heard of or heard yourself or others be referred to as a Laggard?

Google defines a laggard as:

noun – “a person who makes slow progress and falls behind others.”

adjective – “slower than desired or expected.”
Do you identify with that? Have you ever referred to anyone like that? First of all, I think that laggard is pretty rough of a term…which is why you also see the reference to the “mainstreamers” as a more friendly word for it.
I believe when we tend to think of a laggard we think of the classic curve in reference of the Rogers version relative to adoption:
Regardless of what we call it I have some things to share today in reference to my real-life “laggard” realization in my career and the decision I made in my life to stop being stuck where I was and choosing to further in my career.

About 10 years ago I graduated from college with a Bachelor’s of Science in IT, focusing in the Information Sciences and Programming backgrounds. During that final year a very wise professor at the time made a statement towards the end of my tenure in school that really shook me then.

“Whatever you have learned up to this point…three years from now will be completely obsolete.”

“Whatever you have learned up to this point…three years from now will be completely obsolete.”

After some confused faces and reactions in the room, the professor continued:

“However, if you have truly paid attention to the concepts that help you to understand the basics then regardless of the language of the day or technology you build your practices will guide you through.”

“However, if you have truly paid attention to the concepts that help you to understand the basics then regardless of the language of the day or technology you build your practices will guide you through.”

At the time, I thought to myself in a moment of confidence, “Wow, that seems a bit forward, I’ll be fine!” Wrong! I have learned through 10 years of experience now that there were no truer words ever spoken to me (about my career) at the time that I heard them.

In today’s ever-moving technical climate of mobile evolution, social media startups and new technologies making it easier than ever to go to the once mysterious cloud I have found that things are moving much faster than my professor may have even understood.

Being in a transition period in my career in the past 2 years I have found that I am in a place that I believe a lot of other folks have been in before or may be in the near future. There was a point where I felt like everything I was confident in understanding had become obsolete and that everything that was in front of me for a new future required me to make a choice to want to evolve my learning. On top of that there was the constant reminder of new people coming in and demonstrating in their learning (sometimes in ways that left me feeling very deflated) what I did not understand as great. Not to mention the ever looming call to responsibility to drive positive results with the best of my ability.

“There was a point where I felt like everything I was confident in understanding had become obsolete and that everything that was in front of me for a new future required me to make a choice to want to evolve my learning.”

What do I do? Well, I knew at the time of my self-evaluation that most everything I ever was taught in language, system or structures ten years ago was definitely in the latter part of the mainstream part of the adoption curve. It was only a matter of time where if I did nothing else I would have to begin taking a long look at the market to see where else I could thrive with my existing skill set. Maybe there is something close by? Then, as that began to feel scary I began to think about what my options could be to grow. After looking at courses I began to feel discouraged as a lot of the topics out there cost time, money and your presence away from your day to day work (that ensures to make you feel behind).

After many months of soul searching, being made to feel ignorant in work settings, left out by others and left on the assumption that I wouldn’t know I finally made a decision. I decided then that I would chose to grow and refused to be stuck anymore.

I would not be bullied by fears of learning or worried of leaving a few tasks behind to make time to grow. Even if I would not be provided moments during the day I chose to grow where I could elsewhere. It was a mindset change, a choice I made, and do not regret it. I would no longer blame my surroundings, commitments or challenges to keep me from making this something I do. I may fail. I may not understand it all. However, I would rather fail fast and grow than to give up! I then recalled being willing to do this before I started my career in college and this encouraged my willingness to want to learn more now.

Today, I am fighting for my relevance in my career and will encourage all that I can to remember to do the same.

“I may fail. I may not understand it all. However, I would rather fail fast and grow than to give up!”

These days I am learning every day. Free resources such as videos and websites out there are the best place to start. Joining social networking groups around topics I am unfamiliar in is another great step. I am voicing my want for more and am investing by making the time for it today. And in just a couple years of time I know for sure I am turning back the meter and heading towards new things! Conferences are great but make time for the learning opportunities and not just the free t-shirts. Training and courses, whether virtual or in-person and a must in today’s evolving tech climate and a must. Whatever you choose to do use these learning moments to fight to stay relevant with your investment into yourself!

So today as I close this open story of my personal career to those still hungry to work and others curious of the meaning of my intent I leave you with these words: Remember the laggard! 

Companies, remember that one of the most meaningful means of retention is the means to which you invest in people, especially their ability to evolve their skills and mindset. Laggards are not just people who know old things; laggards are loyal, invested people who simply need the opportunity to grow. Empower people with the freedom to be away in the short-term (for a little while) normal efforts to invest in themselves and you will see growth and trust in the working relationship for building longevity and driving positive results. When we choose short-term results and fail to invest here we begin to see teams that become less apt to adopt new things and challenge themselves, thus leaving key areas of business stuck in the mercy of mainstream and slowly letting our fears slow our progress. Fail fast, take chances on people, and never lose the grip of the importance of investing in continual learning!

“Companies, remember that one of the most meaningful means of retention is the means to which you invest in people, especially their ability to evolve their skills and mindset.”

Individuals out there, remember to choose to grow no matter your obstacles and know that you are able to do it. Remember to prioritize it as much as you want it. And just like every good degree, certification or learning experience any knowledge you gain to help you evolve and move forward in your career is worth the investment. Every time. Make sure you always include learning in your career plans and give voice to making sure others that help you succeed know that it is important to you. Do not get stuck in the mainstream and lose your confidence to try new things! And lastly, remember that if you are in a good place in your career and are in the midst of new learning…take others with you. Mentor and help others to not be afraid of embracing growth!

“Individuals out there, remember to choose to grow no matter your obstacles and know that you are able to do it. Remember to prioritize it as much as you want it. And just like every good degree, certification or learning experience any knowledge you gain to help you evolve and move forward in your career is worth the investment. Every time.”

Need to Export More Than 5000 Rows in Google Analytics?

So I tried some googling around to some solutions and found some plugins or URL updates that did not pan out. So…after a little more digging I came across a link that spoke of a free tool that let’s you pull all your rows out of data with no limitations for your GA accounts. Turns out it’s true!

  • Download the software at the following URL: http://www.analyticsedge.com/simply-free/
  • Open Excel, Click the Analytics Edge Tab and accept the terms of use and supply and email for the free license
  • You’ll need to first add an account to get started, select “Accounts”

  • Name the account that you want to use going forward (you can have more than 1)

  • Sign in with your google analytics account

  • Once signed in you’ll see your account information

  • To get started with a report return back to Free Google Analytics >> Analytics Reporting

  • The default wizard should load up. We’ll get started on pulling a report now!

  • Select the section of Google Analytics you want to report off of:

  • Select the view from Google Analytics you wish to pull data from:

  • Select which fields you want to see in the report:

  • Select the date range to which you want to pull data from:

  • Once the report has completed you should see data from your analytics!

Hope this helps.

Other helpful links:

How To Use the Box API To Adjust User Properties and Make Read-Only in Bulk (w/example)

  • Get up to date on the APIs you need for users @ https://developer.box.com/v2.0/reference
  • Sign up for your developer account at your enterprise @ https://yourenterprise.app.box.com/developers/console (replace with your enterprise application name in the link above)
  • Create your Box app & API Key – link here and here
  • Pull down the Box Windows SDK @ – https://github.com/box/box-windows-sdk-v2
  • Update the pem file with your actual pem information from the app you created
    • in case you’re wondering it should contain the —–BEGIN ENCRYPTED PRIVATE KEY—– and —–END ENCRYPTED PRIVATE KEY—–
  • Update the properties appropriately in the app.config
  <appSettings>
    <add key="boxClientId" value="uniquestringhere" />
    <add key="boxClientSecret" value="uniquestringheretoo" />
    <add key="boxEnterpriseId" value="1234567" />
    <add key="boxPrivateKeyPassword" value="uniquestringhereforpassword" />
    <add key="boxPublicKeyId" value="uniquepublickeyid" />
    <add key="ClientSettingsProvider.ServiceUri" value="useifneeded" />
  </appSettings>
  • From there you can update your Main runner in the program.cs appropriately. In the case of my sample below I am getting authorized, retrieving my users and looping through everyone but the main admin account and making them read-only. I’m also writing the information out to a file so I’ll have the logs of who was set / not set.
 
            var privateKey = File.ReadAllText("private_key.pem");

            var boxConfig = new BoxConfig(CLIENT_ID, CLIENT_SECRET, ENTERPRISE_ID, privateKey, JWT_PRIVATE_KEY_PASSWORD, JWT_PUBLIC_KEY_ID);
            var boxJWT = new BoxJWTAuth(boxConfig);

            var adminToken = boxJWT.AdminToken();
            Console.WriteLine("Admin Token: " + adminToken);
            Console.WriteLine();

            var adminClient = boxJWT.AdminClient(adminToken);

            var items = await adminClient.UsersManager.GetEnterpriseUsersAsync("", 0, 1000);
            items.Entries.ForEach(async i =>
            {
                if (i.Login != "myspecialadminaccount@domain.com")
                {
                    BoxUserRequest userRequest = new BoxUserRequest()
                    {
                        Id = i.Id,
                        Status = "cannot_delete_edit_upload"
                    };
                    System.Console.WriteLine("\t{0}", i.Name);
                    System.Console.WriteLine("\t{0}", i.Id);
                    System.Console.WriteLine("\t{0}", i.Login);
                    System.Console.WriteLine("\t{0}", i.Type);
                    System.Console.WriteLine(" ");
                    // Turn on for prod
                    BoxUser user = await adminClient.UsersManager.UpdateUserInformationAsync(userRequest);
                    Console.WriteLine(userRequest.Name + "updated to read-only");
                    System.Threading.Thread.Sleep(2000);
                    stringtext = i.Name.ToString() + " - " + i.Id.ToString() + " - " + i.Login.ToString() + " - " + i.Type.ToString() + " - updated to readonly" + Environment.NewLine;
                    System.Console.WriteLine(" ");
                    
                }
                else
                {
                    BoxUserRequest userRequest = new BoxUserRequest()
                    {
                        Id = i.Id
                    };
                    System.Console.WriteLine("\t{0}", i.Name);
                    System.Console.WriteLine("\t{0}", i.Id);
                    System.Console.WriteLine("\t{0}", i.Login);
                    System.Console.WriteLine("\t{0}", i.Type);
                    System.Console.WriteLine(" ");
                    Console.WriteLine(userRequest.Name + " NOT updated to read-only");
                    System.Threading.Thread.Sleep(2000);
                    stringtext = i.Name.ToString() + " - " + i.Id.ToString() + " - " + i.Login.ToString() + " - " + i.Type.ToString() + " - NOT updated to readonly" + Environment.NewLine;
                    System.Console.WriteLine(" ");
                    
                }
            });
            File.AppendAllText("C:\\Temp\\" + "log.txt", stringtext);
  • Enable your box application to your enterprise accounts – link here
  • Run your app (In TEST with test accounts! Then, with approval, prod.)
    • If the app won’t run…check:
      • code syntax errors
      • certificate pem
      • values in the app config
      • authorization status in the admin Console on Box
      • that your app is enabled and still available on the enterprise developer site

Hope this helps! I can send the source out on request if needed (just let me know).

Sitecore Error (SOLVED): An item name cannot contain any of the following characters: \/:?”\-|[] (controlled by the setting InvalidItemNameChars)

You may have ran into an issue during deployments when trying to publish in the past where you have seen this message:

“An item name cannot contain any of the following characters: \/:?”<>\-|[] (controlled by the setting InvalidItemNameChars)”

In order to help move forward on this you need to disable the default ItemNameValidation settings if you are having some deployment issues.

To do that (would only recommend temporarily) you can follow the steps below:

Add a config file to App_Config/Include named z.DisableItemNameValidation.config and put this in it:

<configuration xmlns:patch="http://www.sitecore.net/xmlconfig/">
  <sitecore>
    <settings>
      <setting name="ItemNameValidation">
        <patch:attribute name="value"></patch:attribute>
      </setting>
    </settings>
  </sitecore>
</configuration>

Again, when you are finished I would recommend taking this back out of your files to keep things as standard as possible.