Thursday, January 12, 2017

Book Review: Strengths Based Leadership

It has been quite some time since I have been in a formal leadership position, but I am still striving to improve my skills in this area.  As a technical lead on many of the projects I interact with, leadership can be key to success and finding ways to work with customers (both nice and difficult) can be challenging at the best of times. 

My first experience with the concepts around strengths based discussion in the workplace happened several years ago when I took the strengthsfinder 2.0 assessment. I remember being floored with how accurate I felt the assessment was to my personality and the fact that the advice that was given was actionable and, more importantly, customized to my unique set of strengths.  Fast forward a few years, and I am still on the strengths based bandwagon, this time more from a leadership focus.

I really hesitate to call this a "book".  It is more of a reference.  The first part (up to additional resources) is essentially selling the idea of strengths based leadership.  It consists of some theory, references to numerous resource projects and Gallup polls, and some case studies on leaders in different areas.  The premise is that strong leaders use their strengths to accomplish what they need, and surround themselves with people whose strengths compliment their own.  The second part goes over the different strengths and discusses in bullet-point form how to harness that strength as a leader, and how to lead someone who has that strength.  I really found this part to be an exceptional reference filled with lots of good ideas and strategies.  Ideally, if you are having your whole team do the personal assessment, you can start to use the ideas presented in this book as a basis for governing how you interact with them.

I think the thing that stood out the most for me was the characteristics of a leader.  This part was found in the section called "Why do people follow".  It is interesting to look back at the leaders in your career or life and try to understand why you followed them.  No doubt, there were certainly people in "leadership positions" who you did not follow.  Sometimes you ask yourself why.  Was it personal?  What it professional?  Could you have made it work?  They claim that there are four basic needs of a follower and they are: trust, compassion, stability, and hope.  What I really liked is that in the additional resources section, when they were providing details about each strength, they focused the advice in these four sections. 

I would recommend this book as a reference for someone wanting to explore more about strengths and how you can draw on your strengths as you try to lead others (at home or at work).  I think the reference is great, but as with the first one, there is probably a ton of additional value in actually taking the leadership assessment that comes with the book. 

Friday, January 6, 2017

Running AzurePS on Linux with Docker

I decided to play around with my linux box a bit today, and needed a project to help me on my way. Previously, I had fooled around with the azure-cli on Linux, but didn't really like the experience at all. Since Microsoft has made a big push into the world of linux, I decided to take a look at how I could install the Azure powershell on my linux box.

In order to further complicate my life, I did not want to "sully" my main operating system.  Docker is a good way for keeping some isolation between the tests that I do, and so, I decided to install Azure PS on a docker container.

First things first, I am running fedora 25 on my desktop.  Installing docker was pretty easy, especially if you use their get script.  I downloaded it first and had a boo, I hate the move these days to encouraging admins to run downloaded files directly from the internet in a root term.

Step 1)  Installing Docker on Fedora

You can find more information on how to install docker on Fedora here.

Be sure to go through the entire install process and add your regular user to the docker group (that you end up creating).  This is a good idea so you don't have to run every terminal as root.

Step 2)  Pulling a base image

Once docker is installed, you will need to pull a base image to work with.  The powershell-core team has released an installer for centos, but nothing for fedora.  Don't get me wrong, I tried installing it on Fedora but ran into dependency hell.  Most of the solutions on the internet were pointing at downloading the icu lib from some 3rd party repos and installing it so you had the correct version.  No thanks.

I decided to backtrack and install the centos build.

 docker pull 

Step 3) Installing Powershell in the docker image

The next step is to run the centos image in interactive mode so you can start to manipulate it.

 docker run -i -t 

You will want to download the powershell rpm.  You can find that here.  I had already previously downloaded it so I used the "docker cp" command to copy it into my running container.

Follow the instructions for installing the powershell rpm, which can be found here.

Step 4)  Test Powershell

Once you have powershell installed, run powershell from the command line to see it pop open.  Quick note, SELinux was complaining to me as soon as I ran this command.  It seems that powershell requires use of the "getsession" object, which it objected to.  I ran the recommend commands (which essentially look at the denials and issue grants for them).

After this, I see powershell, and could run commands!

Pretty neat!

Step 5)  Install Azure Modules

If you were under a rock for the last few months (like me) you would have probably missed that there are now two versions of powershell, desktop and core.  Core is not to be confused with Windows Server Core, which actually runs powershell desktop (sigh!).  The core (argh!) difference is that one is built to run on .NET core and the other requires the full .NET.  You can see more here.

It is important to note at this point that the main Azure modules require powershell desktop, and are not compatible with core.  You need to install a different set of Azure modules that were designed for core.  Spoiler alert, not all the modules are there at time of writing.  You can find the instructions for installing the core version of the Azure modules here.

Step 6) Profit

Well not really.  After you get everything installed and in your path, you should be able to run the AzureRM commands from the powershell prompt from your linux box. (That previous sentence was not even conceivable 5 years ago).

And there you go!  You are ready to rock.  If you want to skip all the pain and download my version, you can by pulling from my docker repo.

Monday, January 2, 2017

Clyfarsolutions runs on AWS

One of my core goals for this year is to diversify the cloud stacks that I have knowledge of.  For the past few years, I have been evangelising  the cloud, but focusing primarily on the Azure stack.  The goal of running my business infrastructure on AWS is to help understand the core differences between AWS and Azure.  I've seen quite a few companies want to deliver application across the public cloud environments.  In order to be able to do this effectively, I need to better understand both sides of the coin. 

Currently, is essentially a static website.  In order to allow for future growth, I have created the website using NodeJS.  Node is supported in a "PaaS" form for both Azure and AWS and this will allow me to start fooling around with cross-cloud architecture and also creating build/release pipelines with cross-cloud targets. 

Here is the current technology stack in use: 
  • Route 53 
I am using route 53 as my DNS setup.  I found it interesting that you can buy and manage the domain all within Route 53.  That is a nice touch.  It is interesting to see the different approaches between Route53 and Azure DNS.  Route53 decided to bundle health monitoring in with the DNS system, while Azure has chosen to use Application Insights from a health monitoring perspective, leaving Azure DNS to do DNS only.  I do use office 365 for my business, and was able to set up all the relevant records with Route 53.   
  • ElasticBeanstalk 
What I really want to do is have a PaaS stack host my website.  In AWS, the closest thing to this is elastic beanstalk  Once again, just cursory looking at things, it is interesting to see the difference in approach.  Whereas Azure "WebApps" runs on a farm hosted by Microsoft, AWS has chosen to bundle automation and VMs with Elastic beanstalk.  I still have to investigate the update process, and see how managed it is (downtime, etc) 
  • CodeCommit 
Originally when I started developing this website, I used VSTS Online.  This was for two reasons.  One, I wanted to use git in a private fashion and two I honestly didn't know that AWS has a competing product in this space.  From a cursory look at features, I don't think CodeCommit is feature complete with VSTS from a build/release perspective.  This is mostly because CodeCommit is a simple git repo vs VSTS which is built on TFS which has a bunch of capability in this space.  That being said, CodeCommit does have integrations to Lambda, and so I look forward to experimenting with that further 

I am looking forward to expanding on the above technology stack over the course of the coming year.  I plan to run all of my "business" infrastructure on AWS.  I hope to document some (or most) of this journey, and might even aim to get certified in AWS later this year.