Tuesday, February 24, 2015

Couch DB Getting External Connectivity Running in Windows 8

Getting external connectivity for Windows 8 requires a few configuration changes.  These article describes what's necessary to get CouchDB running so that it will accept connections from remote hosts.

Open a windows terminal as an administrator and run the following commands:

netsh advfirewall firewall add rule name="CouchDB/HTTP"  dir=in action=allow protocol=TCP localport=5984
netsh advfirewall firewall add rule name="CouchDB/HTTPS" dir=out action=allow protocol=TCP localport=6984
netsh advfirewall firewall add rule name="CouchDB/HTTP"  dir=in action=allow protocol=TCP localport=5984
netsh advfirewall firewall add rule name="CouchDB/HTTPS" dir=out action=allow protocol=TCP localport=6984

This will open the necessary ports through the Windows 8 firewall.

Then proceed to the directory where your CouchDB installation was done.  For example for my machine the installation is in:

C:\Program Files (x86)\Apache Software Foundation\CouchDB

Once you have navigated to this directory you will then need to navigate to the following subdirectory:


Edit the default.ini file and modify the following entry from:

port = 5984
bind_address =


port = 5984
bind_address =

This will allow CouchDB to accept incoming connections from any host.

Proceed to the Windows Services console and restart the CouchDB service.  Once the service has restarted you should be able to connect from any remote host.

If you are intending for hosts to connect from the internet make sure you also open your firewall by creating port forwarding rules from your firewall to your host.  These rules should open TCP ports 5984 and 6984.

Cultural Cronyism

After working with many work environments I have noticed that there seems to be an inherent bias for folks to select individuals who are of their same ethnic background.  There have been instances were poorly qualified individuals then to be placed in a position which is beyond their competence or character level and as a result we end up with a more grievous situation than it was originally before the "cultural cronies" arrived.

I can recall a particular situation were we where already late to delivering the final product.  Some help was assigned by a manager to help move things along.  Let me note that the manager was not of the same ethnic background as the helper.  What was interesting in this situation was that the project manager was of the same background.  Not only was the poorly qualified helper given the primary role of what needed to be developed but also the project manager in turn "covered" a multitude of sins.  The result?  Months of delay an unhappy customer but a happy similar cultural crew.

To add insult to injury the cultural cronyism did not end there. What there's more?  Oh yes.  As it turns out the client had a person of the same culture who was tangentially related to the project.  This person too also got "special treatment".  It is as all of a sudden we had to be more concerned about the minor things that this person needed than what the main client was asking for.  As a result delays were further introduced.

As a person of multiple ethnicities it is easy for me to fall into this trap as well.   I understand the cultural pull of the familiar and the comfort that it brings.  However, a person's character and competence should never be traded for the selfishness of feeling comfortable or trying to help your own kind.  In your mind and mine there should be only one kind - those who have character and competence.  Genuinely successful teams navigate through the cultural differences and perceive them as points of weaknesses or strengths that must be navigated and tempered for the success of all people involved.

So if we start gauging people for their character and competence and not for their cultural similarities we will then have the ability to build powerful performing teams which may or may not be culturally similar.

Thursday, January 29, 2015

Distributed Work Teams - They Work, If There's Trust

In a recently published article, Paul Petrone argues that employees who engage in process-driven jobs should work from home and those who are engaged in innovative type of work where collaboration and communications are needed should best work in an office environment.  

Here are some of the quotes utilized as justification for folks not working in a distributed fashion:

To become the absolute best place to work, communication and collaboration will be important, so we need to be working side-by-side. That is why it is critical that we are all present in our offices. Some of the best decisions and insights come from hallway and cafeteria discussions, meeting new people, and impromptu team meetings. Speed and quality are often sacrificed when we work from home. We need to be one Yahoo!, and that starts with physically being together.
I don't completely agree.

Marissa Mayer Yahoo's CEO

The surprising question we get is: ‘how many people telecommute at Google?’ And our answer is: ‘As few as possible’ … There is something magical about sharing meals. There is something magical about spending the time together, about noodling on ideas, about asking at the [office] ‘What do you think of this?’ These are [the] magical moments that we think at Google are immensely important in the development of your company, of your own personal development and [of] building much stronger communities.

Patrick Pinchette, Googles CFO 

As much as I would love to treat Petrone's points in an article I felt Petrone's and these well known folks seemed to have missed what I would consider one of the most important piece for folks to work successfully regardless of how they work together. That piece is trust  

Trust is what allows individuals to work with each other to bring success to a company.  Trust is what allows personal growth through meaningful interactions. Trust is the precondition for great communities to be created.  It is what enables people to listen with attentive care to what the other person has to say and consider it as valuable and worthy.  Once, there is trust it does not matter how folks communicate, in person, by phone, video chat, e-mail, etc.  All these tend to be less important than knowing the source of the message.  The source is what makes us perk up, listen, and try to understand.

I guess the point to be made is that to build anything trust is required.  To build something great even more trust is required.

Our success at Coral Fire will continue to be and is defined by trust.  There is a constant deference to each other's expertise and contributions to the firm(community). Does that mean that in-person communication, as suggested above, is not beneficial if there is trust?  No!  By no means we should get rid of vis–à–vis communications.  There are some benefits to working in the same room like:
  • Speed of dialogue - It's certainly faster.
  • Gauging the other person's demeanor (facial expressions and body language) - Again it's easier to see them.  For this one, though, video conferencing can be a good substitute if the video conference quality is good.
  • Engaging in "breaking-bread" or drinks - Eating a meal or having drinks at times can reduce the level of formality and increase the level of personal human touch.

However, all this face to face must be undergirded with the intent to connect at a personal and caring way so that trust is built rather than eroded.  The more trust there is between the team members the less relevant the form of communications becomes.  It does not matter if they are present in a room or at the other end of phone lines trust is what makes it work.

So then, how then do you build trust?

To build trust we must first understand the trust equation:

Trust = summation of positive or negative actions

there are some incredible ingredients that we must trust understanding, genuineness and care are needed.  
  • Care
  • Genuineness
  • Understanding
  • Giving 
  • Putting others first and me last

What are your thoughts on this?  I would love to hear them.