The impact of haberdashery on sustainability; thoughts from 35K feet.

Sitting here in seat 18B on UA 962 from EWR to TXL and listening to Disturbed in preparation for concert attendance on February 18th. My wife Gwen and I made a pact to attend a concert at least every other month, we’re doing it, and it’s fantastic! The setlist looks solid, and I am so looking forward to it. “Music gives a soul to the universe, wings to the mind, flight to the imagination and life to everything.” ? Plato

United’s consistently poor in-flight Wi-Fi always provides ample quiet time for solitary pondering and writing, so here we go. I usually travel with a 20″ piece of luggage, I ALWAYS carry-on, but the haberdashery I needed to pack for my trip to Deutschland required the use of a 24” bag. I can’t adequately express the feeling that overwhelmed me when I realized that I would need to check my bag. 🙁 My mind immediately began thinking about the inefficiency and risk associated with checking a bag. Then I started tabulating the number of miles per year I travel and the potential scale of the inefficiency, then I started thinking about the number of bags within single digits of the 50-pound limit sitting in the belly of the plane and wondering about the increase in fuel consumption and increased emissions in the name of haberdashery. Then I started to think about how the pivot from the three-piece suit to the hoodie is about more than just comfort, it’s about saving our planet. 🙂 Stay with me here because I am about to hit you with some empirical data. I’m on the downslope of my 40s, and I’ve heard all the arguments for haberdashery, often with a foundation in respect or pride, well I am going to make a 21st-century counterargument here, based on respect for mother earth. I will note that this commentary is in the context of travel because I am traveling at the moment and it’s the fuel for this thought process, but now I am thinking about the impact of dry cleaning on the environment, a quick Google search reveals that I will likely have some quality material for the flight home. 🙂

Okay, so after some painfully slow in-flight research I found what I believe is the most straight forward answer to this question, albeit a generalized response which does not consider aircraft specifics, but I think it’s good enough for the purposes of this conversation. A heavier airplane requires more lift which is accompanied by more drag. For example, given a constant airspeed, a 10% increase in weight will translate to 10% more required lift which is achieved by increasing the AoA (Angle of Attack), which proportionately increases drag by 10%, requiring 10% more power and increasing the fuel burn by 10%. I am not an aeronautical engineer and I am sure my distillation of these facts is a little off, but you get the idea.

Let’s take a quick look at how my haberdashery is impacting the efficiency and environmental footprint of this transatlantic flight. My usual 20” carry-on packed with a couple of pairs of jeans, some t-shirts and toiletries probably weights in at ~ 15 to 20 pounds. The 24” checked bag I have with me on this flight weights in at ~ 45 pounds, for simplicity we’ll go with a 200% increase over my usual carry-on. That’s significant!

I won’t restate the impact of the combustion engine, emissions that result from burning fossil fuels and how they contribute to climate change, global dimming, and ocean acidification, just Google it. Why is it when I look at things in life that bug me, vanity is often present? Hmmm… We could get from point A to point B efficiently, reducing our carbon footprint as much as possible, and why not make this choice? Why do I have a 50-pound piece of luggage in the belly of this plane? I should have packed lighter, disappointed in myself!

That was fun. FWIW, my Disturbed playlist is done, and I moved on to Linkin Park and the Foo Fighters. What to do for the next two hours?

Operational Elegance

Those who know me, know I like to write, they also know I like to use the phrase “operational elegance”. Being elegant is not as easy as it may seem, after all, we are human, and our human nature generally does not allow us to persistently conduct ourselves like Claire Underwood. This is a good thing. As I was thinking about the value of being operational elegant, Claire Underwood popped into my head because let’s face it, she is about as mechanical as it gets, but most human beings can’t rely on themselves to function like Claire Underwood. Generally speaking, manual execution is usually accompanied by mistakes.

Last week I had the opportunity and pleasure to present to our sales team at their national sales meeting, and operational elegance was one of the topics I touched on.

Image may contain: one or more people and indoor

Sometimes this concept can be hard to visualize, luckily while on my way home from Phoenix, I received a Slack message from a project manager on our team which provided the fuel for this musing. Her message was to share some operational elegance, operational elegance that I thought was worth writing about and sharing. In addition to liking to write, disliking brute force solutions and obfuscation, I also value DNA over resume and innovation over imitation. What was great about this Slack message was how it spoke to me about how far we have come, how it is now part of our DNA to innovate and elegantly solve problems. Innovation is happening organically, team members are looking at problems and working to address them elegantly, they are not satisfied with just getting things done, they are incubating new solutions and iterating on them until they achieve elegance. If I were the sort of person to ever claim success, it would be because of changes to the organizational genome that look like this.

We are about a month away from our 2019 team kickoff, last year the theme of our kickoff was #PUSH. The idea was to challenge everything and push our boundaries to become more operationally elegant, accept failure as a means to push ourselves further and faster. The output from last years kickoff was inspirational, many team members who had never written a line of code showed up with impressive projects showcasing innovations that combined their mechanical, electrical, computer and software engineering skills to elegantly solve real-world problems, that were meaningful to them, like how to deliver a treat to your puppy while not at home. Engineering an operational elegant solution that addresses empathy, how do you not love this!

This year for our 2019 kickoff challenge we will have two teams building 1/16th scale autonomous vehicles. This project is about teamwork, creativity, and developing technical skills that extend beyond marchitecture in areas that are driving our industry, like AI/ML/DL, Keras, Tensorflow, etc. Everyone from project managers to engineers has to participate because everyone has the ability and desire to develop skills because they possess the DNA that says the more I know the better I can be; knowledge gives way to perspective, perspective and know-how give way to elegance. This is why DNA reigns supreme over resume. As a team, we have a responsibility to push each other and to help each other grow.

Innovation and operational elegance are not things you do; they are a way of life. Looking at a problem, being frustrated by inefficiencies, brute force tactical solutions, and taking ownership of developing a more elegant solution and continuously improving that solution requires a mindset.

When we think about project management we think about organizing a work effort, managing budget, risk, resourcing, stakeholders, expectations, escalations, communication, etc. But I believe there is room for operational elegance here, where the process becomes automated and measurable. Not only do I believe this, but I also have examples that prove when you have someone with a broader perspective, frustrated by a lack of elegance, with the know-how and freedom to innovate they can quickly convert vision to reality and deliver operational elegance.

This brings me to the latest example of operational elegance and the catalyst for this blog, our very own code loving project manager. Two years ago when I interviewed this individual we had a really good conversation. Having spent most of her career in academia she was a bit frustrated by the politics and ready to move into the private sector and take on new challenges. This person would be working remotely so being self-driven was important, and I certainly got that vibe during our conversations. What I really liked about her was that she was a programmer who moved into project management because she had lost her zest for programming, much of this was due to how so many legacy institutions apply rigid constraints on developers, sucking all the fun out of the creative process. The great news was she possessed the skill, and we possessed the environment to reignite something she once loved. Our culture is one that focuses on outcomes, documentation, reuse, and elegance but polyglots are welcome, even those who chose to speak PHP. 🙂 The focus is always on solving problems, maximizing reuse, removing constraints like solve this complex problem inside these fifty parameters. The world has changed and it favors the innovator over the imitator, to innovate effectively the innovator requires creative freedom. Fast forward to today and this individual is thriving on the freedom to innovate, she is looking at problems, innovating and solving them elegantly on her own. She is detailed, she values the process, she is convicted, she is willing to change and adapt, but not without a battle. 🙂 She will expect you to be as committed as she is.

Last year we took on a project that required us to build a process and systems to support a customer with 300 sites in 52 countries in 41 different languages. We had never done anything like this, we identified a call center partner and began to build a process, but the year was filled with challenges, the provider was not executing very well and worse they could not provide is detailed metrics so we could identify where the failures were occurring, this really put us in a bad position. Our approach was to be transparent with our customer, we started a search for a new provider, once we decided on a new provider we worked on a transition plan and focused on addressing some of the issues we could identify using our year of experience. We developed and introduced IVR (Interactive Voice Response) to reduce call abandonment, we focused on CDRs (Call Detail Records) so we could provide detailed reporting to the customer, see where we were having issues with hold times, call abandonment, etc. While our delivery in 2018 was less than stellar due to third-party provider constraints and failures our transparency and desire to invest in building a better service for the customer is what makes us a good partner and created the opportunity for us to improve our quality of service and grow our business 2019. We are not solving problems that have been solved thousands of times before, we are innovating solutions for our customers that provide a competitive advantage; innovation requires a partnership where we plan for failure, where we take the necessary precautions to limit the blast radius, where we iterate and incrementally improve our execution.

So today we have entirely rebuilt the delivery process, we have detailed metrics being provided by our third-party call center and language translation provider, but it doesn’t stop there, we want to ensure that the path to transparency is efficient, automated, consistent, auditable, and elegant. We should not be downloading data, pulling it into Excel, manipulating it, and emailing weekly reports to our customers because that is inefficient and suspect AF! APIs (Application Programming Interfaces) to the rescue! The automation of collection, aggregation, and presentation of information with the right skills and perspective is easy, the line between inefficient and suspect AF, and elegant and transparent AF depends on DNA that compels people to recognize that there has to be a better way to do something, the knowledge to possess this perspective, the desire to challenge yourself and execute, and the wisdom to recognize that Charles Babbage built the difference engine to automate a repetitive task.

We should strive to deliver EaC (Everything as Code), because elegance is rooted in our ability to remove humans from executing repetitive tasks, allowing the human mind to focus on reasoning through complex problems which are not binary and highly repetitive.

The heavy lifting might look something like this:

<?php
/*
The purpose of this program is to populate the following table in ServiceNow
with data from the IVR Call Log.
Table Name:  Call Center Data (u_call_center_data)
	u_call_center_uuid	String	(empty)	50		
	u_call_incident	Reference	Incident sys_id
	u_call_language	String	50			
	u_call_time	Date/Time	40			
	u_caller_did	String	25		
	u_did_country	Reference	Country	sys_id	
	u_duration_in_seconds	Integer	40		
	u_ivr_path	String	25
	u_source_number String 25 
*/
/*
	config.php contains the access information to the call center and servicenow
	instance
	
	CALL_CENTER = call center url
	CALL_CENTER_KEY = call center key
	SERVICE_NOW = servicenow url
	SERVICE_NOW_USR = servicenow user
	SERVICE_NOW_PWD = servicenow password
*/
$config= (include_once('config.php'));
$records= getCallCenter();
foreach($records['rows'] as $record){		
	$parsedRecord = recordParsing((array)($record));
	$parsed_uuid = ($parsedRecord['u_call_center_uuid']);
	/* 	Going out to Servicenow to verify that the record does not exist already.
		The u_call_center_uuid should be the unique identifier
		 if it does not find any records, we will add it.
	 */
	$verify = verifyUniqueRecord($parsed_uuid);
	var_dump($verify);
	if ($verify == false){
	/*	Unique record was found so processing will continue by
		obtaining the country that matches the DID number.  The country and 
		DID are contained in the cmn_location table.
	*/
		$country = findCountryFromDid($parsedRecord['u_caller_did']);
		if($country > ''){
			$parsedRecord["u_did_country"]= $country;
		}else{
			/*	DID Number without a country.
				will add an email process to have it verified
				as a valid DID in our list.  Continue to add
				the record without it though.
			*/
			postError("Country could not be located for DID.  Data includes:  \n".$parsedRecord['u_caller_did']);
		}
		// Matching call center record not found so one will be created
		if($parsedRecord['u_duration_in_seconds'] > 120){
			/* 
				If the call reached OpsGenie, it creates an incident. 
				We want to attempt to match the call with the incident.
			*/
			$incident = lookForIncident($parsedRecord['u_call_time']);
			if($incident > ' '){
			// if incident was found, attach the incident number to the record.
				$parsedRecord["u_call_incident"] = $incident;
			}
		}
		// post to our ServiceNow
		$post = postToSNow($parsedRecord);
	}
}
 
function getCallCenter(){
 	global $config;
 	
 	// Basic curl call to the call center.  Return's all records.
	$curl = curl_init();
	$url = $config['CALL_CENTER'].'apikey='.$config['CALL_CENTER_KEY'];
	curl_setopt($curl, CURLOPT_HTTPGET, 1);
	curl_setopt_array($curl, array(
	  CURLOPT_URL => $url,
	  CURLOPT_RETURNTRANSFER => true,
	  CURLOPT_ENCODING => "",
	  CURLOPT_FRESH_CONNECT => TRUE,
	  CURLOPT_MAXREDIRS => 10,
	  CURLOPT_TIMEOUT => 30,
	  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
	  CURLOPT_HTTPHEADER => array(
	    "accept: application/json",
	    "authorization: Basic ############################",
	    "content-type: application/json"
	  ),
	)); 
	
	$response = curl_exec($curl);
	$err = curl_error($curl);
	curl_close($curl);
	if (($err) or $response === '')  {
  		echo "cURL Error #:" . $err;
  		postError("Error obtaining data from call center:  \n".$err);
  		return 'Error';
	} else {
		$records = (array)json_decode($response);
		return($records);
	}
}
function recordParsing($record){
	// parse the record from the IVR log to build the ServiceNow record.
	$parsedRecord = array(
		"u_call_center_uuid"=>$record['uniqueid'],
		"u_call_language"=>$record["lang"],
		"u_caller_did"=>$record["did"],
		"u_duration_in_seconds"=>$record["duration"],
		"u_ivr_path"=>$record["path"],
		"u_call_time"=>$record['calldate'],
		"u_source_number"=>$record["src"],
		"u_domain"=>'############################'
		// Getting the country based on the DID Number
		);		
	return $parsedRecord;
}
function verifyUniqueRecord($parsed_uuid){
	/* Verify that the record does not exist in ServiceNow
		by looking for the record's unique id.
	*/
	$query = '?sysparm_limit=1&u_call_center_uuid='.$parsed_uuid;
	$return = service_now_call('u_call_center_data','',$query,'GET');
	
	if($return['Error'] > ''){
		postError("Error verifying duplicates in ServiceNow.  Data includes:  \n".$parsed_uuid.'\n'.$return);
  		return false;	
	}
	$record = (array)$return['result'][0];
	// if there was a return, send in an 'a'
	if($record["sys_id"]){
		return true;
	}
	return false;
}
function findCountryFromDID($did){
	/* 
		$did = string
		We will send in the did number from the call log and find the
		country it is assigned to in ServiceNow.
	*/
	
	$query = '?sysparm_limit=1&u_country.u_msa_country_did_number='.$did;
	$return = service_now_call('cmn_location','',$query,'GET');
	if($return['Error'] > ''){
	  	postError("Error finding country in ServiceNow.  Data includes:  \n".$did.'\n'.$return);
  		return false;	
	}else {
		$result = (array)$return['result'];
		$records = (array)$result;	
		foreach($records as $location){
			$tlocation = (array)$location;
			$country = (array)$tlocation['u_country'];
			return $country['value'];
		}
	}
	return '';
}
function lookForIncident($calldate){
/* 	Attempt to match the call to an incident based on the date/time.
 	Can adjust the number of ours to go back based on when the update last
	occured by modifying $time
*/
	$time = '3600';
	$query = "?sysparm_query=openedRELATIVEGE%40hour%40ago%40".$time."&company=MSA%20-%20FedEx";
	$return = service_now_call('incident','',$query,'GET');
	if($return['Error'] > ''){
	  	postError("Error querying for duplicates.  Data includes:  \n".$calldate.'\n'.$return);
	} else {
	// We found at least one possible record
	
		foreach($return['result'] as $record){	
			$record = (array)($record);
				$record = (array)($record);
				// calldate needs to be greater than the incident record
				$dateTime = new DateTime($record["opened_at"]);
				if($calldate < $dateTime){
					$calldate2 = new DateTime($calldate);
					$dteDiff  = $calldate2->diff($dateTime); 
					$minutes = $dteDiff->days * 24 * 60;
					$minutes += $dteDiff->h * 60;
					$minutes += $dteDiff->i;
					if($minutes <= 3){
					/*	
						Set for 3 minutes because there is a delay from the
						call's start time until it reaches opsgenie/servicenow.
						We are estimating 3 minute delay to find possible records.
						If found, return the incident sys_id to the record.
					*/
						return $record["sys_id"];
					}
				}			
		}
	}
	return '';
}
function postToSNow($data){
	// Post the record ($data) to ServiceNow
	$return = service_now_call('u_call_center_data',$data,'','POST');
	
	if($return['Error'] > ''){
  		postError("Error posting call log item to ServiceNow.  Data includes:  \n".$data.'\n'.$return);
  		return 'Error';
	} else {
	  return $return;
	}
}
function postError($data){
	// If any error is detected, we want to create an incident
	// $data contains the description of the error
	
	// Building the Incident Record
	
	$incident = array(
		"short_description"=>"Error from Call Record procedure",
		"category"=>"ServiceNow",
		"description"=>$data,
		"company"=>"############################",  // us
		"customer"=>"############################", // them
		"caller"=>"api.user",
		"opened_by"=>"api.user"
		);
	$return = service_now_call('incident',$incident,'','POST');
	if($return['Error'] > ''){
  		// if we had an error on the posting of the error, send email to servicenow
  		 $to = "foobar@service-now.com";
         $subject = "Error posting error in call log process";
         
         $message = "Original error: \n";
         $message = $return."\n";
         $message .= $data;
         
         $header = "From:foo@bar.com \r\n";
         $header .= "MIME-Version: 1.0\r\n";
         $header .= "Content-type: text/html\r\n";
         
         $retval = mail($to,$subject,$message,$header);
         
         if( $retval == true ) {
            echo "Message sent successfully...";
         }else {
            echo "Message could not be sent...";
         }  		
  		return 'Error';
	} else {
	  return $return;
	}
}
function service_now_call($table,$data,$query,$type){
	global $config;
	
	$url = $config['SERVICE_NOW'].$table.$query;
	$curl = curl_init();
	curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
	curl_setopt($curl, CURLOPT_USERPWD, $config['SERVICE_NOW_USR'].':'.$config['SERVICE_NOW_PWD']);
	curl_setopt($curl, CURLOPT_URL, $url);
	curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);
	curl_setopt($curl, CURLOPT_HTTPHEADER, array("Content-Type: application/json"));
	if($type === 'POST'){
		curl_setopt($curl, CURLOPT_POST, 1);
		curl_setopt($curl, CURLOPT_POST, true);
		curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($data));
	}		
	$response = curl_exec($curl);
	$return = (array)json_decode($response);
	if ($err) {
  		return array('Error' =>$err);
	} else {
		$return['Error']='';
//		var_dump($return);
		return $return;
	}
}
?>

And deliver an elegant outcome like this:

Bravo to this individual for innovating, even if code is PHP. 🙂 But freedom is the fuel for innovation so great work and keep pushing!

Creating a Narrative

After a week in London, I spent my weekend like I have spent most of my weekends for the past two years, in front of the computer. To stay sane, I often take small breaks from academic research and writing while trying to retain my flow; this usually involves a shift to leisure reading or creative writing. In this case, I visited my notes from the past week, when I say notes I mean not just the ones from daytime working sessions, but all my notes including the ones I made at 3 AM on my nightstand. When I have notes taken over a period I always try to organize the information and my opinions into a narrative that I will use to challenge my views and inform others; I find bullets to be uninspiring, so a narrative is important to me. As I distill these ideas, a macro takeaway almost always emerges and this becomes and fuel for my reflection and the core of my narrative.

It is always great to spend time with organizational peers and leadership; don’t have the opportunity to do it enough, but the fact is that when it does happen, it makes me think about and appreciate the people I have in my life and the incredible opportunities I have. Having a natural and agendaless dialog with organizational peers and leadership becomes a significant portion of the fuel that I use to reflect and recalibrate. Believe it or not, I have a takeaway from just about every conversation and interaction I have, these takeaways often become a short note to myself or an idea that I jot down at 3 AM when I awake with something on my mind as a result of a conversation or interaction. Over weeks or months, I use these takeaways, ideas, and thoughts to fuel my reflection and challenge myself. What an incredible luxury and opportunity. Some of these interactions are incredibly trivial, but they occupy precious space in my mind, heart, and soul for long periods of time. For instance, while having lunch at Heathrow airport on Friday, apparently I kept looking at my feet (which were under the table) during a conversation. The person I was talking to asked me if he was kicking me, I said no, he then asked why do you keep looking down, a great question, to which I responded: “there is a bolt holding the table to the floor, and it is under my foot.” For some reason this bolt had consumed a portion of my attention; after all, why was this bolt so protruded from the floor? Why do I tell this story? First off, odd behavior on my part, second without feeling safe I am not sure how this strange dialog takes place. Without the dialog how would I ever have the fuel to reflect on the bizarre behavior of staring at my feet in the middle of a conversation? More on the value of feeling safe in a bit.

I love what I do, so much that my profession, has become a spiritual calling. I recently sent a thank you email, and in the email, I referenced a Simon Sinek quote that reads like this: “When we feel safe inside the organization, we will naturally combine our talents and our strengths and work tirelessly to face the dangers outside and seize the opportunities.” Over the last twelve years, this individual made me and others feel safe when things weren’t so safe, he created stability amid volatility, and this allowed many of us to do remarkable things. It is easy to pick apart details of anything or anyone, but in my mind, there may be no better macro-level representation of leadership. I always appreciated all the latitude this person provided me over the years and the faith he put in me, even though I know my convicted and passionate visions are often overly complicated and unrelatable. I feel these similar sentiments about so many others in my life who have entrusted me and provided me with incredible opportunities throughout my life. I have enough self-awareness to realize that my vision and passion often outrun my ability to execute, but I am OK with this because it keeps me pushing myself and others and working tirelessly to make vision meet execution. As I reflected this weekend on the past week and last thirty days, it got me thinking about the broader scope of feeling safe and achieving remarkable things together. When we feel safe we will challenge each other, we will admit fear, and we will stand together to take it on, feeling safe amongst each other is incredibly powerful. I believe this is what great leadership is about; great leaders don’t rely on organizational hierarchy or specific accomplishments to lead because leadership is an intangible influencer that has nothing to do with ascribed authority and everything to do with achieved influence.

My mind is always racing, so much so that I often wish I could shut it off for the sake of others, my family and myself, but at this point in my life, I’ve come to accept it. While I have come to accept the anxious thought as intrinsically me, progression (personally, professionally, spiritually, etc.) is also inherently me. I’ve begun to focus on reflection and pivoting my mind to focus on listening and how perception and adaptation can significantly impact influence. While I am still frustrated by so many things (it’s a journey), I am working to capture valuable cycles which I traditionally spent thinking about situations where the probability of influence was low. The methods outlined by Tim Ferris in “Tools of Titans” have helped me, I constantly ask myself: “What is the absolute worst that could happen if I did what I am considering? Is it recoverable? Why or why not? What positive impact might there be? Is fear blinding me to the future?” My need for contrarian debate will always exist as a tool that I use to challenge myself with the hope of personal enlightenment. I credit my wife who has figured out how to live with my contrarian personality for twenty-three years with planting the seed of taking the positive contrarian view, digging deeper into the reason of why something is and identifying and defending the positive position. FWIW, I have been trying to use this tactic, and I find it quite effective, proving that being left or right of center is annoying to most regardless of the direction. 🙂 I am committed to a life of progression, and this takes commitment and perseverance, luckily I am passionately curious and looking to and willing to learn from anyone or anything. One of the notes that I have from my nightstand in the UK reads like this: “… thinks I don’t like salespeople. Why is this?” Perception is a reality, and this can’t be the perception because it’s far from the truth, I admire a vast array of skills, and the optimism and perseverance of the salesperson are at the top of my list. FTR, I like salespeople; it’s people that I sometimes struggle with. 🙂

It’s interesting because the sentiments I have shared in this blog started with me revisiting an unpublished email (longer than this blog) that I began composing two weeks ago about organizational structure, focus, growth, etc. FWIW, I often write something, let it sit for weeks or months, come back to it, and find I have a different perspective and often a lot more to say; hence I write some very long emails. The reason for the revisit was a comment made this week during a casual conversation where someone said: “I don’t think anyone knows that.” My first mental reaction (and probably verbal, because there isn’t much I think that I don’t say) was “How is that possible?”, But then I thought, why does it matter? What does matter is perception and time spent asking why is not time well spent, time spent changing the perception is where I need to focus my time.

I was extraordinarily impressed by so many of the people that I met last week. The attention to detail, focus, consistency of messaging, the handle they had on their business was impressive. Nothing is perfect, and sure I walked away with some questions, but the details do not detract from the macro-level story. From a cultural fit perspective, I am not sure how much better the week could have gone. What I think made me happiest were the conversations and the personal time I spent with people I have known forever and people I just met this past week. We are all human, we will make poor decisions, we will make mistakes, but when we feel safe, we can have conversations that help us grow together and avoid poor future choices. As leaders, we have the responsibility to empower others and make them feel safe. I genuinely believe that if we feel safe, setting and executing on clear expectations becomes exponentially easier.

I had set out to write a one paragraph intro to the email I reference above, and this is what I ended up with, more of a spiritual examination of my thoughts in the context of the last thirty days.

VMworld 2018 Goodness and the Purpose Motive

Greetings from VMworld 2018, my first VMworld in many years. To be honest, VMware had become like milk for me, couldn’t afford to not carry it in the convenience store, functioning as the catalyst for nearly every customer visit, but as the proprietor, my hope was that the patron who walked through the door looking for milk would buy some of my homemade Ho-Hos or better yet they showed up to buy milk at my convenience store because they couldn’t resist my homemade Ho-Hos. It’s always been my opinion that the tech business we are in is evolutionary and certainly Darwinian. “The Innovator’s Dilemma” in the context of first-movers and fast-followers has never been more relevant, we live in a world where the duality of cost and capability needs to be carefully managed, the subscription economy makes this delicate balancing act even more complex. Innovations early to market, the wrong balance of capability and cost become good ideas that die only to re-emerge at a time when the market is ready and the capability and cost balance is right. Most have heard the phrase “Imitate to Innovate”, or the idea that there are no original ideas, we live in a world of idea refinement, but there’s a twist called purpose. The paper straw was invented in 1888, we replaced it with the plastic straw because the paper straw sucked (no pun intended); guess what, the paper straw is back and it still sucks. I don’t really know what a paper straw in 1888 was like, the ones in 2018 suck pretty bad, so I wonder how much worse they could have been. While I am not sure when we replaced the paper straw with the plastic straw, I am pretty confident that our ability to thinly extrude a polymer gave us what seemed to be a better answer; the plastic straw was born and the paper straw was gone. So what’s different? We live in a purpose-driven society; this is what’s different. We are now willing to deal with a straw that falls apart in favor of the sustainability of our planet, some might say we are maturing. What does this have to do with VMworld or technology in general? It has everything to do with the consumer condition and the consumer condition creates a certain type of demand which is fulfilled by suppliers, it’s a simple model that impacts every sector. Purpose matters more than ever before and we live in a subscription economy, in enterprise information technology we call this subscription economy “The Cloud”, we measure purpose with things like carbon footprint and philanthropy, and we translate this into outcomes or economic value delivered. Outcomes like lower power consumption = lower power costs = lower carbon emissions; a financial win for the business with purpose. The technology is great stuff, but the velocity of innovation is driven by a purpose and the outcomes have a multifaceted deeper meaning. The purpose is the awesomesauce.

Let’s start with Pel Gelsinger’s (CEO, VMware) “Technology Superpowers” keynote on day one. Gelsinger starts by wishing VMware a happy 20th birthday, paying homage to the VMware community, the passion, loyalty and what he terms almost cult-like behavior. This is followed by a video montage which highlights VMware’s corporate culture showcasing a culture of innovation, passion, and commitment. Gelsinger finishes his opening by displaying his commitment with a VMware tattoo (obviously a temporary tattoo, but you get the idea).

Gelsinger’s close to his “Technology Superpowers” keynote on day one is an “I believe…” monologue that would make Simon Sinek proud.

  • “Together we have the opportunity to build on the things that collectively we have done over the last four decades and truly have a positive global impact.”
  • “I believe together we can successfully extend the lifespan of every human being.”
  • “I believe together we can eradicate chronic diseases that have plagued mankind for centuries.”
  • “I believe we can lift the remaining 10% of humanity out of extreme poverty.”
  • “I believe that we can reskill every worker in the age of the superpowers.”
  • “I believe that we can give modern education to every child on the planet; even in the remotest slums.”
  • “I believe that together we can reverse the impact of climate change.”
  • “I believe that together we have the opportunity to make these a reality.”
  • “I believe that this possibility is only possible together with you.”

Gelsinger starts with why and ends with why, driving home the idea that purpose matters most.

Gelsinger answers the question of “Why VMware” from the “Why” choose VMware perspective and “Why” there is a purpose imperative that is deeper than a hypervisor. Well done!

Let’s move on to the day two and Sanjay Poonen’s (COO, Customer Operations, VMware) “Possible Begins With You” keynote, this is going to blow your purpose-driven mind. Gone are the days of the sports superstar on stage talking about what it takes to win, because we’re trying to win on a totally different level now, a far more complex level, a level with true purpose, a level that brings more than one tear to your eye, a level of bravery and inspiration that you can feel course through your soul. More on this later.

Sanjay Poonen opens with his commitment to the VMware culture by showing his dual tattoos. Sanjay spends time talking about the engines that fuel VMware, innovation and customer obsession. Stating that innovation and customer obsession are what are core to VMware, core to the culture. Sanjay then moves on to the economic value (the outcome) that VMware has delivered, stating that the ~ 50 billion in VMware revenue has delivered ~ 500 billion in economic value.

The Technology Superpowers of Cloud, Mobile, AI/ML, Edge/IoT are the “What”. IMO “What?” is the easiest question to answer. The difficult question is always “Why?” and the most compelling answer is always the answer to the question “Why?” VMware did a good job of painting the picture of “How”, and asking and answering the question of “Why?” Creating a message with a purpose that is about more than the infrastructure or software, it’s about how the infrastructure will provide a foundation that will allow us to transform our lives.

The fireside chat between Sanjay Poonen and Malala Yousafzai was truly amazing. The talk touched my soul, so much so that it feels irreverent for me to try to summarize this amazing young woman’s journey, her incredible perspective and her impact on the world using my words. We live in a time where purpose can limit our perspective and cloud (no pun intended) our judgment, but Malala has elevated herself to a place filled with love, acceptance and a desire for change, not judgment and hate. To hear her speak about her experiences and her perspectives was truly an honor and perspective-altering experience for me and I imagine it was for the nearly 25,000 in attendance (this is my hope). I am very thankful for having had the opportunity to be present.

Okay, so let me pull this back to a place where I don’t have tears in my eyes. My main reason for being at VMworld this week was to continue to shepherd our relationship with OVHcloud, a partnership that I believe will help our customers (FusionStorm’s, OVHcloud’s and VMware’s) transform their businesses in such a way that they can focus on their core business, increase agility and reduce risk. Pat Gelsinger’s Technology Superpowers of Cloud, Mobile, AI/ML and Edge/IoT all have something in common, they are superpowers which have a clear line of sight to business and economic value.

What’s great about the subscription economy is it provides us (the consumer) with the ability to get what we want when we want it, in an agile and elastic delivery model. We have instant access to the assets, but we don’t have to be the custodian of these assets, we have the elasticity to increase, contract or terminate our subscriptions based on our needs or constraints. The subscription economy is everywhere, it’s a consumer condition, and consumers make up the enterprise. When I think about FusionStorm and OVHcloud I have a clear vision of what we can deliver to the market, together, and it looks something like this:

OVHcloud builds and operates data centers. They deliver Infrastructure-as-a-Service (IaaS) in an agile, elastic and fully automated way. OVHcloud provides a strong foundation for the IT infrastructure subscription economy, this is OVHcloud’s core business, and they do it really well. OVHcloud provides FusionStorm the “Freedom to Build and the Freedom to Innovate” business solutions on behalf of our collective customers on a market leading IaaS platform.

FusionStorm takes cloud-based infrastructure provided by OVHcloud as either HPC (Hybrid-Private Cloud) or bare metal and builds, delivers and operates business Platforms-as-a-Service that deliver the right mix of cost and capability to meet the customer requirements. Delivering the business Platform-as-a-Service extends far beyond lifting and shifting workloads into the cloud or refactoring an application. FusionStorm helps customers build business platforms that focus on the infrastructure and operations in the public, private or hybrid-cloud, while considering all the nuance of a cloud transformation from connectivity, to the mobile workforce, to the edge. We do this by leveraging deep subject matter expertise in each area of the stack that allows us to design, build, deliver and operate a transformative and complete business solution.

Customers are now enabled and free to focus on their core business rather than on the designing, procuring, building, delivering and operating the underlying infrastructure. Customers can focus on solving business problems and changing the world.

This market is not about on-prem vs off-prem, it’s not about the public, private or hybrid cloud. It’s about focus, agility, and elasticity; it’s about enabling the innovation of game-changing technologies; it’s about speeding time to market for technologies that are consumer-facing; it’s about the realization that the number of new market entrants and disruptive technologies is unprecedented; it’s about realizing that the infrastructure barrier has been removed and anyone with a good idea can compete; it’s about creating the room to fail, the ability to expand, contract and pivot on demand to satisfy an evolving consumer condition; it’s about focusing and aligning human capital with the organizational purpose.

To close out my thoughts in the context of why, how and what regarding FusionStorm and OVHcloud.

Why?

  • The “Technology Superpowers” are Cloud, Mobile, AI/ML and Edge/IoT. Calculating kVA and BTUs, racking and stacking components, performing structured cabling, OS loads, patching, waking up at 3 AM to replace a failed component or restart a service, managing RMAs and logistics are not on the superpower list and there is a good reason.
  • If the metal provides the competitive advantage then you will build. E.g. – Cloud providers, these could be SaaS providers, CDN providers, etc… may opt to build their own cloud. These hyperscale customers will have bespoke designs, they will need someone to manage the supply change, perform zero defect builds against a defined specification, manage logistics, etc… While these organization may own and operate their own cloud I would argue they probably will not want to be a cloud builder, at least not at the physical metal and low-level logical level. FusionStorm can help here.
  • If the infrastructure is a commodity on which you run your core business, I believe you will look to the cloud. If you run legacy applications, if you have no plans to refactor applications, no need for auto-scaling, etc… you will still have the need to exit the data center business, maybe not today or tomorrow, but a decision will need to be made on where to focus finite resources, and building and maintaining data centers and infrastructure operations will not likely be the choice. This represents a massive segment of the market, a segment that FusionStorm and OVHcloud have a great solution for.
  • When it comes to virtualized workloads, it is estimated that VMware has a 75% market share regardless of market segment or sector. The quickest path to lift-and-shift is to move workloads without transforming them. Customers can experience the agility and elasticity of the cloud without the risk. Trust a skilled partner like FusionStorm, OVHcloud a VMware Cloud Verified partner with 28 global data centers and VMware the platform you know and trust to simplify, accelerate and de-risk your cloud transformation.
  • FusionStorm and OVHcloud can deliver the right balance of cost and capability.
  • As a FusionStorm and OVHcloud customer, you can focus on your core business and change the world. Knowing that an experienced organization has delivered the right design and is operating your infrastructure so you can focus on what matter most, all this backed by OVHcloud a leader in the IaaS space.

How?

  • FusionStorm will work with your organization to understand requirements and design a public or hybrid cloud infrastructure powered by OVHcloud an industry leading IaaS cloud platform that can accommodate virtualized and bare metal workloads. These workloads can be production workloads, they can be dev/test workloads, they can be disaster recovery workloads. If you can envision it we can help you design, build, deliver and operate it.
  • FusionStorm will help your organization seamlessly migrate workloads to OVHcloud taking into consideration all the aspects of a cloud transformation, not just workload migration. Everything from migrating the workloads, connectivity and user experience.

What?

  • A fully managed private, public or hybrid infrastructure with increased agility and elasticity in a paradigm aimed at accelerating the cloud transformation and de-risking you, the customer.
  • A pivot from CapEx to OpEx and the subscription-based economy.
  • On-demand agile and elastic cloud infrastructure providing the ability to expand or contract based on need.
  • Platform consistency with VMware, a platform that owns ~ 75% of the virtualization market. This means that there is no learning curve, tomorrow feels just like today with much greater agility and elasticity.

I believe that together we can accelerate cloud transformation for countless customers, delivering increased agility and elasticity and allowing them to focus on their core business. I also believe that together we can chart a course that dramatically reduces the risk associated with cloud transformation.

Finally, let me be clear, I am not anti abolishing the plastic straw. Personally, I don’t like straws, but why not just say no more straws? This is a great example of a shift driven by the purpose motive. The conspiracy theorist in me says some nascent paper straw manufacturer has a connection to a politician and there may be a financial win for someone here as well as an ecological win. One thing is for sure, there is plenty to read and debate regarding the move from plastic to paper straws.

Everything-as-a-Service (XaaS)

As I sit here this Tuesday before Thanksgiving, in seat 9C on a United flight flying west to east, I am crowded and agitated by the individual sitting in seat 8C who has been trying to get their seat to lay horizontal for the last two hours (hey buddy it’s a limited recline), but thankful for the time I am afforded to ponder what was, what is and what will be. Fueled by thoughts from a meeting I am returning from and other recent conversations and encounters I’ve had over the past few weeks. This blog post is a digest of some of my thoughts and their genesis. I should note that there are a few thoughts conveyed on various topics in this post, which I tweaked over the last month. I apologize in advance for anything that may seem incoherent or disconnected.

With a National Sales Meeting (NSM) approaching and a short presentation slot to fill, I have been thinking about the best way to convey my thoughts, my vision, and a call to action. I’ve started to crystallize my ideas over the last few weeks, as I have been critically thinking through the business, what once was, what is, what will be, why, and most importantly, my reasoning. I am also thinking about some of the thoughts conveyed in a book I recently read entitled “The Everything Store: Jeff Bezos and the Age of Amazon.”  In the book, the author (Brad Stone) discusses how Amazon (specifically Jeff Bezos) replaced using PowerPoint to convey ideas, instituting what has become known as the six-pager, a four-to-six-page memo/narrative. The reasoning is that PowerPoint-style presentations somehow provide permission to gloss over ideas, flatten out any sense of relative importance, and ignore the interconnectedness of ideas. I am a “narrative” sort of person; I enjoy deep thinking and conveying not only my ideas but my reasoning, my inspirations, my thoughts on potential outcomes, etc… I enjoy context, and I believe context is a critical component when trying to convey intangibles like belief, passion, and motivation. I like and respect how Amazon forces people to think deeply; far too often, we assume people will not read memos, emails, etc… We live in a world where we seem to believe cognition is assisted by attempting to get our point across using pictures and captions of 140 characters or less (lousy spelling and grammar, with the all too familiar excuse of favoring velocity of response over coherency, are a bonus). What a sad state of affairs! I am both insulted and frightened by the trend, and I expect much more. The big question is, are these the people you want to consider leaders within your organization? We need to expect more! The six-pager represents, demands, and tests everything we should expect from leadership. My presentation at this year’s NSM will be delivered via a Jupyter Notebook and will highlight innovation and try to force people to think deeply about what is possible, to take the examples provided, and to visualize what could be rather than what is. I hope this will be an interactive 30 mins, and my goal is to challenge and test the audience’s cognitive skills.

With all of the above said, let’s move on. I believe that it is undeniable that the market is shifting in such a way that cognition may be the most critical skill for success. The ability to carry knowledge forward is diminishing; the market is moving too fast. Our ability to convert knowledge to wisdom, which aids cognition, is the difference maker. We all sell widgets of some sort; the key is how we will differentiate our widgets. I believe more than ever that differentiation requires relevant intellectual property, something you possess that no one else possesses. This intellectual property needs to be translated into a dialect our customers can understand. Articulating how our unique value adds value to our customer’s business is critical. We all operate against objectives and within constraints; this next set of thoughts will focus on my perspective on services and required decision-making.

The following attempts to outline my thoughts on service engagement types, markets,  challenges, and required decisions.

Above the line

  • Large-scale enterprises where professional services workflow is programmatic and sustained. These engagements, by default, fall into the as-a-service model. These accounts understand the cost of program management; they understand opportunity cost; they value quality, velocity, and on-time delivery in areas of their business that typically they would classify as context.

The potential sweet spot

  • Customers with enterprise needs, but unlike large-scale enterprises who organize areas of the business as core and context, the sweet spot customer often classifies all areas of the business as core, but there are core areas of the business that are underfunded and underserved. The challenges in this space are as follows:
  1. Massive market segment.
  2. Lots of work to segment the market into those who understand that we run a “Professional Services Practice” and NOT “Professional Services Perfection.”
    • Those who grasp a professional services practice understand and accept failure with the understanding that improvement is continuous and iterative.
    • Those who expect perfection will be disappointed. For this segment, happiness only exists due to obfuscation and being blissfully unaware. Obfuscation is not a good strategy for developing an equitable business relationship and fostering iterative, continuous improvement. The goal should always be continuous improvement. Right?
  3. It is an incredible struggle to align ability with needs, desires, and expectations.

Success is measured by how quickly an engagement sitting in the “potential sweet spot” queue can be assessed and pushed above or below the line. Engagements pushed above the line are often the most successful and value-added engagements.


Below the line

  • Pretty self-explanatory. Our job is to determine if there is a way to move above the line. If not today, maybe tomorrow, but given objectives and constraints, playing below the line is not an option.

Those who know me know that I like anecdotal stories. Simple stories (narratives) that dramatize a situation to create a compelling reason to think deeply. So, in this post, I will share a compelling story that made me think deeply about the idea of Everything-as-a-Service. What I will share in this post is all real, real information, real data, real anecdotes that I have used, and most importantly, a fundamental market shift.

First, let me start by outlining some business objectives:

  1. Linear growth
    • It’s not all that exciting because 1+1=2, which means there is not much efficiency or elegance being injected into the business.
  2. Exponential growth
    • A desirable, more interesting, and likely more efficient outcome, but not the objective.
  3. Combinatorial growth
    • This is where we want to be. Our approach focuses on efficiency and elegance, creating the ability to do far more with far less.

While exponential growth is an acceptable trajectory, combinatorial growth remains the objective. Our desire for combinatorial growth is what will allow exponential growth to persist.

I was engaged in an opportunity a few weeks ago (update: a few months ago). An account executive asked me to have a call with a prospect to talk about a fairly complex consulting engagement. After spending about an hour on the phone with the prospect, explaining our approach, answering questions, etc… the feedback was positive, and the customer was considering moving forward with us on this consulting engagement. As always, my next step was to think about execution; how would we execute? Realizing that placing myself on the project was impossible, I crafted an engagement model, identified the resources, engagement cadence, timeframe, etc… and started the wheels in motion to align these things to reduce risk and increase the probability of a successful engagement. This engagement had a finite scope, a reasonably clear set of requirements, a finite timeframe, etc… Fast forward a few weeks (update: a couple of months), and we are many revisions of a proposal later, and it has become a questionable deal, distracting and probably not worth doing. Why?

  1. Unbalanced engagement model.
    • The carrot is being oversold.
    • While future opportunities should be considered, an engagement must stand on its merits. If not, the probability of success is dramatically lowered, and the quid pro quo is easily escaped due to lack of quality delivery; all the while, this was the system that was created from the onset.
  2. Scope creep.
    • What starts as a well-defined and finite scope shifts to a Maytag repairman model with an open-ended T&M scope.
  3. The facade of a commitment and an expectation is created.
    • A purchase order creates an implied commitment, but in reality, there’s no commitment by any of the parties involved.
  4. Misalignment of expectations is becoming increasingly apparent.
    • A feeling of ownership, a supplier/buyer relationship rather than a partnership, permeates the air.

I believe Everything-as-a-Service (XaaS) has become the trend. When I say trend, I’m implying trending towards the standard, if not already there.

Let me share some anecdotes across a variety of markets (outside tech) that I believe support my belief:

Why Hire a Landscaper?Landscape professionals.  My lawn care company shows up for a mow and leaf cleanup every Friday. They require a contract, they require that the contract is for the entire season, and they are rigid on the day of the week they provide (e.g., I get a coveted Friday mow, which took me years to get). If I want something different, there are no hard feelings; my landscaper is just the wrong guy.

 

 

Pool service.  I have a pool service; they provide chemicals, clean my pool weekly, etc… The pool service requires a contract for the season; they visit each week, and often, the pool is clean, but the billing remains the same.

 

 

 

OK, let’s move up the stack a bit:

About ten years ago, I had pneumonia, I was walking around with it for a year or so, and it was pretty bad and in both my lungs. I was hit so hard that I passed out in Penn Station, made it home on the train, and landed in the hospital for over a week while they figured out what was wrong with me. The internal medicine doctor who finally diagnosed me was excellent and remained my primary care physician for three or four years. One day, I got a letter saying they are shifting the practice to a membership-required practice. For $2,500 a year (that was then), I could buy into the practice; if I did not want to pay the $2,500 a year, that was OK, and they would wish me luck in my search for a new primary care physician. With managed healthcare erosion impacting service quality, this doctor wanted patients who valued high-quality care, and he was not afraid to put faith in his value, to expose what was occurring in the industry and the constraints he needed to work within, he went as far as to hold seminars for patients so they could understand the why.  Sure, he lost some patients, but in the end, he moved upstream to service patients (customers) with a higher quality of service.

Let’s look at another medical example. My wife needed Mohs surgery years ago; she went to a doctor who took no insurance, who was very expensive, who was backlogged for months, yet this doctor is thriving.

Let’s look at a so-called T&M business model. How about the auto repair industry?

Anyone who knows how this industry works will know that auto mechanics use what are known as Chilton rates to quote jobs. E.g., Front breaks on a 1979 Pinto is four hours of labor at N rate. What’s important here is that the average mechanic can perform these jobs in 1/4th the time, but the Chilton guide sets the standard, and efficiency is rewarded.

I went further, racking my brain to think about the viable time and material (T&M) business.

Some might say that software developers work on a T&M basis. In this case, I would say the T&M protects the developer from scope creep and the reality that in an Agile model, the scope will change. The scope and timeframe are understood and defined, dollars are allocated to each sprint/milestone, and yes, this maps back to complexity (story points) and/or required level-of-effort, but the goal is to execute against the milestone and track burndown against the estimations.

As a parent, babysitting popped into my head.

Even my babysitter metrics opportunity cost and expects an equitable supplier and buyer relationship. When paying their babysitter, what sort of person rounds down to the nearest hour?  I remember going out with my wife when my kids were young, being tired and ready to go home, and debating whether we had been out long enough to make the babysitting engagement valuable to the babysitter. The 17-year-old babysitter had an opportunity cost that I needed to consider; a 17-year-old gave up their Friday night, but they expected to work the night.  This dialog only happened because we valued our children and the babysitter; I was sleepy, so we would go home and pay for two hours we didn’t use.

 

Now, how about that Maytag repairman? They are not even T&M any longer. The Maytag repairman is associated with appliance repair. Let’s look at how people do appliance repair:

 

  1. Manufacturer Warranty
    • Fixed cost baked into the price of the new purchase for some period. Highly predictable model.
  2. Extended warranty services, like an American Home Shield (AHS).
    • Large-scale break-fix operations like this require an insurance plan with a premium and a deductible for each service incident.

My point here is you can’t even get the Maytag repairman in the Maytag repairman model anymore.

Finally, let’s explore an anecdote about implied commitment and expectations:

umbrella seller,OFF 69%,kkgroupofcompanies.co.inI live and work in the New York metro area; there is a common practice of street vendors who sell umbrellas when it rains at exponentially higher prices, simple supply and demand economics. Imagine that the cost of these cheap umbrellas on a sunny day is $2, but when it rains, New Yorkers are willing to pay $10. Now imagine walking out to the street vendor with an IOU for $100 bucks and telling the vendor I am committed to them. In this case, I am providing nothing more than an IOU with an expectation that my intent to buy an umbrella from them in the future (at the height of demand, BTW) entitles me to be able to buy the umbrella for $2 (50 umbrellas @ $2). In return, my carrot is I will tell my friends that this vendor has quality umbrellas. What response do you think I would receive? It’s probably very similar to my response to many deals I look at: “WTF are you talking about?”

None of these service models or anecdotes should be challenging to grasp. To deliver quality services, predictability is required; costs are predictable; thus, revenue streams need to be predictable. To provide quality service delivery, you must staff using a predictable revenue stream, harden schedules, resource allocation, etc… If you can’t, service delivery problems, unhappy customers, etc… are a foregone conclusion. Accommodation is not a strategy for quality delivery or survival.

Everything-as-a-Service is real and powered by Humans-as-a-Service (HuaaS).  Given the finite nature of the human species, we’ve begun leveraging automation (call it ML/DL/AI or just old-fashioned automation) to create value beyond viewing HuaaS as just another widget.  To create value, finite resources must be applied to high-yield investments.  This will always mean that decisions will continuously need to be made on where to focus, and these decisions may differ from day to day as conditions change.  Doing things faster, with greater accuracy, with less risk, etc… requires intellect.  The shift from a 100:1 time to value (TtV) ratio to a 1:100 TtV ratio is at the heart of the knowledge economy.  The economic principles of an industrial economy cannot be applied to a knowledge economy.

Stop whining about the changing market…

Image result for whining quotes

In recent weeks I have been thinking a lot about value creation and how it has changed over the past few years.  As I thought about this topic more deeply, I came to realize that value creation hasn’t changed at all, what’s changed is the willingness, almost eagerness of those who participate in the value chain to blame market conditions rather than themselves.   Here is what I believe, there are only two ways to create value (as an engineer) in today’s market:

  1. Be a first mover (an innovator)
  2. Be a fast follower (an optimizer)

Neither of the above means you need to be “splitting the atom” what it does mean is you need to be innovating.  Think about DevOps, why developers have become “The New Kingmakers” and why the Ops guy is getting increasingly difficult to find, the answer lies in innovation.  Good Ops engineers innovated, they automated, and they pushed into the developer space, while frustrated developers watching infrastructure Maytag repair men point-and-click over and over again pushed into the Ops space and DevOps was born.  The value is in the developer’s ability to deliver Ops elegantly.  I am so happy to see a robust API get more attention than a slick GUI; this is the way it should be and should have always been.

To be successful a first mover (innovator) you have to identify the problem, develop (innovate) the solution, evangelize (create and sell) to the market often defining both the problem and the solution, etc…

“Fast followers” enter defined markets, they still need to innovate, but their innovations focus on optimizing the delivery model, reducing COGS, lowering cost of sales, etc…

Innovators and “fast followers” have always existed, these are the two entrants discussed in “The Innovators Dilemma”, no other viable market entrant has ever really existed, so I started thinking about what feels so different?  Why are so many people, today, comfortable blaming market conditions for failure?  I arrived at this conclusion; the market for “followers”, who are not “fast followers” looking to innovate differently is contracting fast, nearing extinction.  These followers are the paint-by-number crowd, the crowd who thinks executing the best practice as defined by the innovator can deliver value.  They have convinced themselves of this; thus they are working hard and not understanding why it’s not yielding results, the only rationalization is to blame that which you have no control over aka “a changing market”.

Image result for fast follower examples

I started crystalizing these thoughts in the context of my everyday.  It’s common to watch businesses seemingly do all the right things, at least from a going through the motions perspective but continue to fail and contract.  Why is this?  Running a business, an entire company (aka the corporation) or a piece of the business (aka a division of a company) requires decision making.  Required decisions are increasing in complexity, frequency, and velocity.  Decision-makers need to be able to quickly identify all the constants, variables, constraints (these are vast, objective and subjective and often not obvious), then render a decision and move on.  Traits, like the ability to maintain focus on macro-level objectives and not trade off strategic initiatives for tactical wins, the ability to quickly assess risk and calculate opportunity cost, act decisively and expediently are a few traits that separate those who are accepting and capitalizing on market change from those who are whining about it.

It’s incredibly important to have a business plan, to understand your cost structure, your team objectives, and how each team member will contribute to the macro-level goals.  Personally, I always expect exponential returns and strive for combinatorial explosion; I don’t like linear ROI models.

The challenge is obvious; it’s easier to find people who can paint the Mona Lisa using a paint-by-number model vs. finding the next Leonardo Da Vinci.  Enter the value of apprenticeship, a long-term strategic vision and a culture focused on exponential returns.

Image result for mona lisaImage result for versusImage result for mona lisa paint by number

The same but very different!!

The Mona Lisa paint-by-number kit sold at Walmart sells for $44.99, and I’d be willing to bet that there is a depreciation of that $44.99 expenditure once the kit is opened, and even further depreciation once the painting is complete.  The Mona Lisa painted by Leonardo Da Vinci has an estimated value of $790 million dollars.  Now the Mona Lisa painted by Da Vinci is an example of an innovator, the paint-by-number vs. innovator idea is here is pretty easy to follow.

There is a great blog that outlines five reasons why the Mona Lisa matters in the context of business and value creation.

  • Originality:  Doing something new and different requires a belief in a vision and a willingness to take risks to get there.
  • Uniqueness:  The way you execute creates uniqueness, if your not unique your painting-by-numbers, even if the lines and numbers aren’t on the canvas.
  • Time:  Perseverance, personal investment, the desire to deliver a masterpiece, etc…
  • Reputation:  Self-explanatory.  Subjective and objective reality are critical aspects of building a reputation.
  • Mystery:  There has to be mystery.  Ever hear the saying “when there’s mystery, there’s margin”.  If you in a business where all the mystery has been removed you need to find a new business, and fast.

There is a thriving “fast follower” ecosystem, where innovation is happening it’s just happening differently, with a different purpose,  admittedly “fast followers” are often viewed as “bad actors” within their communities.  These communities range from art to technology.

An example of a “fast follower” in the art community might be Mr. Brainwash, for those who have seen “Exit Through the Gift Shop” you’ll know what I am talking about, for those who haven’t watch the documentary or do some reading on Mr. Brainwash.  The tech sector is full of “fast followers” but they are also innovators in their own right.  Amazon is an innovator and a “fast follower”, their use of Open Source and lack of contribution back to the community has them labeled as an Open Source “bad actor”.

The success of any organization today requires a mix of traits that are not easy to find, develop or maintain but thriving organizations possess these traits.

  1. A shared vision and goals.
  2. A mature culture that trusts in and puts the organizations goals above individual goals.  Realizing that individuals win when the organization wins.  Superstar over achievers possessing OCD welcome, heroes need not apply.
    Quick litmus test is to rank the following motivators in order of personal fulfillment:  Praise, Money, and Accomplishment
  3. Laser focus.  Only entertain tactical diversions which contribute to strategic objectives.
  4. The existence of a concise and transparent measurement system that can be leveraged at all levels of the organization to metric and drive individual impact in the context of macro goals.
  5. An expectation that the organization should be self-directed, self-healing and self-managing.
  6. Grit, hustle, drive, relentlessness, belief, etc…, etc… wrapped in humility rather than hubris.
  7. An insatiable thirst for differentiation through collective intellect.
  8. Results-oriented. (results are empirical and defined but the concise and transparent measurement system mentioned above)

The bottom line is without a strategy all that is left is excuses.

I’m a skeptic, satiated by large raw data sets, analysis & inference

Speak to anyone who knows me, and they will likely characterize me as a skeptical, pessimistic, anxious, intense, and persistent individual.

If someone sends me a spreadsheet and then calls me to walk me through the numbers my immediate assumption is that the purpose of the follow-up call is to shape my perception. If someone provides me a composite of the figures without the raw data, visible formulas and documented data sources, I also assume manipulation. With this said I am a realist, and I am willing to accept manipulation, but I am honest about acceptance rather than convincing myself otherwise. I am just wired to be vigilant.

For me the glass being half-full represents a lack of fear of it being half-empty, I am motivated to refill the glass by the reality that it is half-empty and what is likely an unhealthy fear of dying from dehydration, but it works for me. From my perspective, the half-empty glass is not depressing or a demotivator it is a potential reality. Now don’t get me wrong, I know there is water in the glass and death is not imminent, but I am incredibly aware and grateful for the opportunity to find a water source to refill my glass.

I spend my days listening to dozens of pitches, where I need to focus, why I need to do x or y, what I am missing out on by not doing x or y, etc… The pitches almost always start with a half-full perspective, selling the positive but it’s amazing how when it doesn’t go the way the pitchman expects the approach shifts to the half-empty perspective, relying on FOMO (fear of missing out) as a last ditch attempt at motivation.

Now let’s face it, no one likes to miss out, but as a realist, I recognize that I can’t do everything, so decisions are required. Forks in the road appear every minute of every hour of every day, and I am greeted at each fork by a host espousing the merits of their righteous path. For someone like me, these decisions need to be my own, driven by raw data (as raw as it can be), analysis and inference. I try to check the near-term outcomes at the door and focus on and visualizing the long-term strategic outcomes, the vision. In my mind tactical activities require little to no thought, they just happen. For example, a visionary looking for a more sustainable model for garbage disposal doesn’t stop taking their garbage to the curb every Monday and Thursday. Accepting what is and executing without much thought IMO avoids paralyzation and makes room in your life and brain for what will be.

So now we arrive at the origin of this blog. I have to make personal and professional bets on where the market is going, what is most relevant and where I should focus my time. Of course, I have a subjective opinion on where I believe the market is going but I like to validate my opinions with some data and with so many people, organizations and news outlets selling their version of the future the question becomes, how do I validate my opinions objectively. Social chatter is meaningful to me as is sentiment analysis. The great news is with a little Python, the use of some APIs and the ELK stack it’s pretty easy to collect data from social media platforms, store it, analyze it and draw some conclusions. One such question that is very relevant to me is what technologies and what OEMs (original equipment manufacturers) have mindshare? I’ve been pulling social media data for a few weeks using #hashtags to see what techs and OEMs have the most buzz; I have also been doing sentiment analysis to see if the buzz is good or bad.

Here is my view of the market using social media buzz to determine mindshare (it actually feels pretty on the money):

The world has changed, are you paying attention?

This blog is the result of a restless night where I pondered a recent event where the idea (or existence) of NOC (Network Operations Center) was conveyed as a key component of the ITSM (Information Technology Service Management) paradigm. I find this to be an uber interesting topic and position given that the world has moved (and continues to move) in every way from a centralized to a disaggregated and distributed model. I believe this is true in computing (think cloud, microservices, twelve-factor apps, etc…) and it’s true in the area of human capital management and service delivery.

I thought I would share some of my opinions on the topic, my position as well as some anecdotes that I believe support my thoughts.

First, let me start by saying that we are engaged in a war, a war for human capital, a war where the best knowledge workers don’t look anything like what they looked like twenty years ago, they live in the shadows, digital nomads inhabiting a digital universe.

When I think NOC, here is what I envision:

Image result for wargames pic

The above is a picture of the NOC from the movie WarGames which was released in 1983, this was cool and impressed the audience, but it was 35 years ago! It’s probably obvious from looking at my blog header that I am a big WarGames fan. Let’s stay with the Hollywood portrayal of tech for a moment because I think it’s relevant.

Fast forward from 1983 to 2001, 18 years later, and the NOC has given way to the lone hacker, with umteen monitors (quite a setup) working alone to High Voltage by The Frank Popp Ensemble.

Disaggregation and decentralization have become a pervasive theme, message and a way of life. Nowhere is this more evident in than in the Open Source community. Disaggregation and decentralization coupled with a shifting culture that has shifted the motivation of the knowledge worker has given way to an unprecedented pace of innovation which would otherwise be impossible.

The Open Source statistics are truly staggering: https://octoverse.github.com/

Couple what the Open Source movement has taught us about the power of disaggregated and decentralized teams with “the surprising truth about what motivates us” and you’ll realize that the disaggregated and decentralized cultures being built are unlike anything we could have dreamed. The passion, commitment, engagement, communication, execution, and velocity are astounding.

Ask yourself where people (yourself included) go for help, how they build communities, what are trusted sources of information, etc…
Where do developers look for help? StackOverflow, Slack, IRC, Quora, etc…?
Where does the average person look for help? Facebook, YouTube, Twitter, etc…?

These are all platforms which enable the construction of disaggregated and decentralized communities which create cultures, subcultures, increase engagement, provide better time to value, etc… Are there no lessons to be learned here? There are lessons to be learned, and many are learning these lessons and adapting their engagement models.

I am a techie, and I believe that substance will always prevail over style and the question I continually ask myself as I adjust to keep up with a market which is innovating and changing at an unprecedented pace is how to define the culture? Is what we are doing relevant today and does it put us on a trajectory to where we’ll need to be in 24 months?

And now we have arrived at my thoughts regarding the NOC.

JetBlue made a bold move (which others followed) shifting from reservation call centers to hiring booking agents who work virtually, and their customer service is consistently rated the highest in the industry.

Relevant business models do NOT focus on resource colocation; they focus on resource capability, availability, and collaboration. I would go as far as to say that colocation favors style over substance.

The cultures we build need to focus on leveraging technology to deliver a great total customer experience (TCE). I believe that a 5.3” screen in the hands of hundreds of engineers, elegant engagement processes, procedures, and tools deliver a better TCE than a 60” monitors on the wall in a room with ten engineers with landline phones. Cultural agility over environmental rigidity.

The focus and value here is NOT a finite set of L1, L2 and L3 shift workers in a NOC. Big screen TV’s on the wall, the Bat Phone and people sitting at a desk are style decisions which have no direct correlation to the ability to deliver substance. Our focus needs to be on how to engage and nurture the best knowledge workers the market can offer. Our mission needs to be the creation and cultivation of a culture which fosters engagement. Our ability to engage and escalate to a subject-matter expert (SME) at any time, to improve the TCE by building equitable partnerships which deliver distinct value, with a meaningful escalation path that focuses on MTTW (Mean-Time-to-Workaround) while in parallel determining a root cause and resolution lies in our culture.

We must understand that the world has changed.  We live in a world where seemingly forward-thinking paradigms are obsolete before they are implemented.  The path to success relies on agility and accountability, not rigidity and responsibility.

POTUS Sentiment Analysis

Just finishing up a class where I have been doing a lot of social media mining and analytics and I thought it would be a fun given all the banter about #fakenews to do my own POTUS sentiment analysis.

Note:  The above processes are running and the visualizations below are live.  Refresh page to refresh data.

Potus Sentiment

Disclaimer:  This is real data pulled from the twitter API.  I can assure you there is zero motivation or interest here beyond the raw data, the sheer volume of data given the topic, and of course I realize this is relevant to many others which is what makes it interesting.

Garage Door Automation w/ Rev 1 Analytics

My inspiration

My family and I use our garage as the primary method of ingress and egress from our home.  Almost daily I open the garage door using the standard wall mount garage door button, I also drive away and 30 seconds later I think to myself “did I close the garage door”.  The thought of “did I close the garage door” results in one of two outcomes.

  1. I am close enough that I can strain my neck and look back over my left shoulder to see if I closed the door.
  2. I went in a direction that does not allow me to look back over my left shoulder to see the state of the door or I am too far to see the state of the door, this results in me turning around and heading home to appease my curiosity.

My Goal(s)

Initial goal:  To implement a device that allowed me to remotely check the state of my garage door and change the state of the door remotely (over the internet).  Pretty simple.

Implemented analytics add-on:  Given the intelligence of the device I was building and deploying to gather door state and facilitate state changes (open | closed) I thought wouldn’t it be cool if I captured this data and did some analytics.  E.g. – When is the door opened and closed, how long is it kept in this state and started to infer some behavioral patters.  I implemented Rev 1 of this which I will talk about below.

Planned add-ons:

  • Camera with motion capture and real-time streaming.
    Note:  Parts for this project on order and I will detail my implementation as an update to this post once I have it completed.
  • Amazon Alexa (Echo) (http://goo.gl/P3uNY6) voice control.
  • 3D printed mounting bracket (bottom of priority list)

My First Approach
Note:  This only addressed my initial design goal above.  Another reason I am glad I bagged the off-the-shelf approach and went with the maker approach.

I have automated most of my home with an ISY99i (https://goo.gl/YOklKH) and my thought was I could easily leverage the INSTEON 74551 Garage Door Control and Status Kit (http://goo.gl/Soo31V).  To make a long story short this device is a PoS so it became an AMZN return.  After doing more research on what was available off-the-shelf and aligning it with my goals I decided that I should build rather than buy.

The Build

Parts list:
Note:  Many of these parts can be changed out for similar versions.

Various tools required / used:

  • Wire cutter / stripper
  • Various screwdrivers
    • Whatever you need to make connections on you garage door opener.
    • Tiny slotted screwdriver (required to tighten terminals on relay board).
  • Soldering iron
  • Heat gun (required for heat shrink)
    • Substitute a good hair dryer or lighter (be careful with lighter not to melt wires).

Planned camera add-on:
Note:  Parts ordered but have not yet arrived and this is not yet implemented.

  • 1 x Arducam 5 Megapixels 1080p Sensor OV5647 Mini Camera Video Module for Raspberry Pi Model A/B/B+ and Raspberry Pi 2 (http://goo.gl/XhCy5L)
  • 1 x White ScorPi B+, Camera Mount for your Raspberry Pi Model B+ and white Camlot, Camera leather cover (http://goo.gl/nRHvED)
    Note:  Nice to have, certainly not required.

Although below you will see my breadboard design I actually soldered and protected all final connections with heat shrink (you will see this in my post installation photos below).

Required Software
Note:  This is not a Raspberry Pi tutorial so I am going to try to keep the installation and configuration of Raspbian and other software dependencies limited to the essentials but with enough details and reference material to make getting up and running possible.

Gather requisite software and preparing to boot:

  • Download Respbian Jessie OS (https://goo.gl/BYkhLp)
  • Download Win32 Disk Imager (http://goo.gl/hz9BD)
    Note:  This is how you will write the Raspbian Image to your 8 GB microSDHC Class 4 Flash Memory Card.
    Note:  If you are not using Windows then Win32 Disk Imager is not an option.

  • Unzip the Raspbian Jessie Image and Write Image (,img file) to 8 GB microSDHC Class 4 Flash Memory Card.image
  • Insert 8 GB microSDHC Class 4 Flash Memory Card into computer open Win32 Disk Imager and write Raspbian image to microSD card (in this case drive G:)image
  • Once complete eject the microSD card from your computer and insert it into your Raspberry Pi.
  • At this time also insert your USB wireless dongle.

We are now ready to boot our Raspberry Pi for the first time bur prior to doing so we need to determine how we will connect to the console.  There are two options here.

  1. Using a HDMI connected monitor with a USB wired or wireless keyboard.
  2. Using a Serial Console (http://elinux.org/RPi_Serial_Connection)

Pick your preferred console access method from the above two options and connect and then power on the the Raspberry Pi by providing power to the the micro USB port.

Booting the raspberry Pi for the first time:

  • Default Username / Password:  pi / raspberry
  • Once the system is booted login via the console using the default Username and Password above.
  • Perform the first time configuration by executing “sudo raspi-config”
    image

    • At this point you are going to run options 1,2,3 and 9 then reboot.
    • Option 1 and 2 are self explanatory.
      • Option 1 expands the root file system to make use of your entire SD card.
      • Option 2 allows you to change the default password for the “pi” user
    • Using option 3 we will tell the Raspberry Pi to boot to the console (init level 3).
      image

      • Select option B1 and then OK.
  • Next select option 9, then A4 and enable SSH.
    image
  • Select Finish and Reboot

Once the system reboots it is time to configure the wireless networking.
Note:  I will used nano for editing, little easier for those not familiar with vi but vi can also be used.

  • Once the system is booted login via the console using the “pi” user and whatever you set the password to.
  • Enter:  “sudo –s” (this will elevate us to root so we don’t have to preface every command with “sudo”)
    image
  • To setup wireless networking we will need to edit the following files:
    • /etc/wpa_supplicant/wpa_supplicant.conf
    • /etc/network/interfaces
    • /etc/hostname
  • nano /etc/wpa_supplicant/wpa_supplicant.conf
    image
    You will likely have to add the following section:network={
    ssid=”YOURSSID”
    psk=”YOURWIRELESSKEY”
    id_str=”wireless”
    }
  • nano /etc/network/interfaces
    image
    You will likely have to edit/add the following section:
    allow-hotplug wlan0
    iface wlan0 inet manual
    wpa-roam /etc/wpa_supplicant/wpa_supplicant.confiface wireless inet static
    address [YOURIPADDRESS]
    netmask [YOUSUBNET]
    gateway [YOURDEFAULTGW]
  • nano /etc/hostname
    • Set your hostname to whatever you like, you will see I call mine “garagepi”
  • reboot
    • Once the reboot is complete the wireless networking should be working, you should be able to ping your static IP and ssh to your Raspberry Pi as user “pi”.

Raspberry Pi updates and software installs
Now that our Raspberry Pi is booted and on the network let start installing the required software.

  • ssh to the Rasberry Pi using your static IP or DNS resolvable hostname.
  • Login as “pi”
  • Check that networking looks good by executing “ifconfig”
    Note:  It’s going to look good otherwise you would not have been able to ssh to the host but if you need to check from console issuing a “ifconfig” would be a good starting place.  If you are having issues consult Google on Raspberry Pi wireless networking.
    image
  • Update Raspbian
    • sudo apt-get update
    • sudo apt-get upgrade
  • Additional software installs
    • sudo apt-get –y install git
    • sudo gem install gist
    • sudo apt-get –y install python-dev
    • sudo apt-get –y install python-rpi.gpio
    • sudo apt-get –y install curl
    • sudo apt-get –y install dos2unix
    • sudo apt-get –y install daemon
    • sudo apt-get –y install htop
    • sudo apt-get –y install vim
  • Install WebIOPi (http://webiopi.trouch.com/)
    • wget http://sourceforge.net/projects/webiopi/files/WebIOPi-0.7.1.tar.gz/download
    • tar zxvf WebIOPi-0.7.1.tar.gz
    • cd WebIOPi-0.7.1
      image
      Note:  You may need to chmod –R 755 ./WebIOPi-0.7.1
    • sudo ./setup.sh
      • Follow prompts
        Note:  Setting up a Weaved account not required.  I suggest doing it just to play with Weaved (https://www.weaved.com/) but I just use dynamic DNS and port forwarding for remote access to the device.  I will explain this more later in the post.
    • sudo update-rc.d webiopi defaults
    • sudo reboot

Once the system reports WebIOPi should be successfully installed and running.  To test WebIOPi open your browser and open the following URL:  http://YOURIPADDRESS:8000

  • You should get a HTTP login prompt.
  • Login with the default username / password:  webiopi / raspberry
  • If everything is working you should see the following:
    image

We now have all the software installed that will enable us to get status and control our garage door.  We are not going to prep for the system for the analytics aspect of the project.

  • Create an Initial State account.
  • Once your account is created, login in and navigate to “my account” by clicking your account name in the upper right hand corner of the screen and selecting “my account”
  • Scroll to the bottom of the page and make note of or create a “Streaming Access Key”
  • As “pi” user from Raspberry Pi ssh session run the following command:  \curl -sSL https://get.initialstate.com/python -o – | sudo bash
    Note:  Be sure to include the leading “\”

    • Follow the prompts – if you say “Y” to the “Create an example script?” prompt, then you can designate where you’d like the script and what you’d like to name it.  Your Initial State username and password will also be requested so that it can autofill your Access Key.  If you say “n” then a script won’t be created, but the streamer will be ready for use.

OK all of of software prerequisites are done, let’s get our hardware built!

Shutdown and unplug the Raspberry Pi

The Hardware Build
Note:  I used fritzing (http://fritzing.org/home/) to prototype my wiring and design.  This is not required but as you can see below it does a nice job with documenting your project and also allowing you to visualize circuits prior to doing the physical soldering.  I did not physically breadboard the design, I used fritzing instead.

Breadboard Prototype

Garage_Door_bb

Connections are as follow:

  • Pin 2 (5v) to VCC on 2 Channel 5v Relay
  • Pin 6 (ground) to GND on 2 Channel 5v Relay
  • Pin 26 (GPIO 7) tom IN1 on 2 Channel 5v Relay
  • Pin 1 (3.3v) to 10k Ohm resistor to Common on Magnetic Contact Switch / Door Sensor
  • Pin 12 (GPIO 18) to 10k Ohm resistor to Common on Magnetic Contact Switch / Door Sensor
    Note:  Make sure you include the 10k Ohm resistors otherwise there will be a floating GPIO status.
  • Pin 14 (ground) to Normally Open on Magnetic Contact Switch / Door Sensor

Schematic

Garage_Door_schem

Before mounting the device and connecting the device to our garage door (our final step) let’s do some preliminary testing.

  • Power on the Raspberry Pi
  • ssh to the Rasberry Pi using your static IP or DNS resolvable hostname.
  • Lognin as “pi”
  • Open your browser and open the following URL:  http://YOURIPADDRESS:8000
    image
  • Click on “GPIO Header”
  • Click on the “IN” button next to Pin 26 (GPIO 7) (big red box around it below)
    image
  • You should hear the relay click and the LED on the relay should illuminate.
    • If this works you are in GREAT shape, if not you need to troubleshoot before proceeding.

Connect the relay to proper terminal on your garage door opener.
Note:  Garage door openers can be a little different so my connection may not exactly match your connections.  The relay is just closing the circuit just like your traditional garage door opener button.

As I mentioned above I soldered all my connections and protected them with heat shrink but there are lots of other ways to accomplish this which I talked about earlier.

Finished Product (post installation photos)Image

Above you can see the wires coming from the relay (gold colored speaker wire on the right, good gauge for this application and what I had laying around)

Below you can see the connections to the two leftmost terminals on the garage door opener (I’m a fan of sta-kons to keep things neat)

Image

Image

OK, now that our hardware device is ready to go and connected to our garage door opener let’s power it up.

Once the system is powered up let’s login as pi and download the source code to make everything work.

  • ssh to your Raspberry Pi
  • login as “pi”
  • wget https://gist.github.com/rbocchinfuso/89d406b4f83e44b2a92c/archive/cb1ccf7cb73e36502a6c3e9b4df1e1f07a70e2c6.zip
  • unzip cb1ccf7cb73e36502a6c3e9b4df1e1f07a70e2c6.zip
  • cd 89d406b4f83e44b2a92c-cb1ccf7cb73e36502a6c3e9b4df1e1f07a70e2c6
    image

Next we need to put the files in their appropriate locations.  There are no rules here but you may need to modify the source a bit if you make changes to the locations.

  • mkdir /usr/share/webiopi/htdocs/garage
  • cp ./garage.html /usr/share/webiopi/htdocs/garage
    Note:  garage.hrtml can also be places in /usr/share/webiopi/htdocs and you will not need to include /garage/ in the URL.  I use directories because I am serving multiple apps for this Raspberry Pi.
  • mkdir ~pi/daemon
  • cp garagedoor_analytics.py ~/pi/daemon
    Note:  You will need to edit this file to enter your Initial State Access Key which we made note of earlier.
  • cp garagedoor_analytics.sh ~/pi/daemon
  • cp garagedoor_analytics_keepalive.sh ~/pi/daemon

Make required crontab entries:

  • sudo crontab –e
    Note:  This edits the root crontab
  • You should see a line that looks like the following:
    #@reboot /usr/bin/startweaved.sh
    This is required to use Weaved.  If you remember earlier I said I just use port forwarding so I don’t need Weaved so I commented this out in my final crontab file.
  • Here is what my root crontab entries look like:
    #@reboot /usr/bin/startweaved.sh
    @reboot /home/pi/daemon/garagedoor_analytics_keepalive.sh
    */5 * * * * /home/pi/daemon/garagedoor_analytics_keepalive.sh

*** IMPORTANT ***  Change the WebIOPi server password.

  • sudo webiopi-passwd

Reboot the Raspberry Pi (sudo reboot)

Let’s login to the Raspberry Pi and do some testing

  • Check to see if the garagedoor_analytics.py script is running
    • ps -ef | grep garage
      image
      Looks good!
  • Open the following URL on desktop (or mobile):  http://YOURIPADDRESS/garage/garage.html
  • Login with the WebIOPi username and password which you set above.
    image
    This is what we want to see.
  • Click “Garage Door”
    image
    Confirm you want to open the door by clicking “Yes”
  • Garage door should open and status should change to “Opened”
    image
    Repeat the process to close the door.

Pretty cool and very useful.  Now for the analytics.

  • Go to the following URL: https://www.initialstate.com/app#/login
  • Login using your credentials from the account we created earlier.
  • When you login you should see something similar to the following:
    image
    Note:  “Garage Door” on the left represents the bucket where all of our raw data is being streamed to.
  • Click on “Garage Door”
    • There are number of views we can explore here.
    • First lest check the raw data stream:
      image
      Here we see the raw data being streamed from the Raspberry Pi to our Initial State Bucket.
    • Next lets look at some stats from the last 24 hours.
      image
      Here I can see the state of the door my time of day, the % of the day the door was opened or closed, the number of times the doo was opened, etc…

I haven’t really started mining the data yet but I am gong to place an AMP meter on the garage door and start to use this data to determine the cost associated with use of the garage door, etc…  I am thinking maybe I can do some facial recognition using the Raspberry Pi camera and OpenCV to see who is opening the door and get more precise with my analytics.

Two more item before I close out this post.

The first one being how to access the your Raspberry Pi over the internet so you can remotely check the status of your garage door and change it’s state from your mobile device.  There is really nothing special about this it’s just using dynamic DNS and port forwarding.

  • Find a good (possibly free but free usually comes with limitations and/or aggravation) dynamic DNS service.  I use a paid noip (http://www.noip.com/) account because it integrates nicely with my router, it’s reliable and I got tired of the free version expiration every 30 days.
    • This will allow you to setup a DNS name (e.g. – myhouse.ddnds.net) to reference your public IP address which assuming you have residential internet service is typically a dynamic address (meaning it can change).
  • Next setup port forwarding on your internet router to forward an External Port to an Internal IP and Port
    • This procedure will vary based on your router.
    • Remember that WebIOPi is running on port 8000 (unless you changed it) so your forwarding rule would look something like this:
      • myhouse.ddns.net:8000 >>> RPi_IP_ADDRESS:8000
      • Good article on port forwarding for reference:  http://goo.gl/apr8L

The last thing is a video walk-through of the system (as it exists today):

[youtube]https://youtu.be/Q5uizfiPBy4[/youtube]

I really enjoyed this project.  Everything from the research, building and documentation was really fun.  There were two great things for me.  The first being the ability to engage my kids in something I love, they like the hands on aspect and thought it was really cool that daddy could take a bunch of parts and make something so useful.  The second was actually having a device deployed which is extensible at a price point lower that what I have purchased an off-the-shelf solution for (understood that I didn’t calculate my personal time but the I would have paid to do the project).

My apologies if I left anything out, this was a long post an I am sure I missed something.

Looking forward to getting the camera implemented, it just arrived today so this will be a holiday project.