Monthly Archives: July 2017

Let’s Encrypt AWS Lightsail with WordPress

SSL all things is a good thing, especially if you allow for user interaction. This includes clicking on links, writing comments or simply navigating your sight.

TL; DR

Let’s Encrypt is a free service that allows you to add Transport Layer Security (TLS) to any website for free. When you see the green padlock, this means that the sight is protecting its users from malicious scripts that inject them selves between the user and the sight. The documentation is well written but does not cover the what is needed to get it working on AWS Lightsail.

The Basics

I found this article that really describes the first half of the problem. It tells you how to enable TLS through the use of a Let’s Encrypt certificate: http://www.alondiamant.com/2016-12-20-using-lets-encrypt-certificates-with-wordpress-on-amazon-lightsail?utm_content=buffer27ff6&utm_medium=social&utm_source=plus.google.com&utm_campaign=buffer

What it doesn’t do is tell you how to ensure that only the encrypted version of your site is used.

Redirect

The rest of this article is assuming you are in an SSH shell.

To force redirection from http to https, there are some settings you need to change and delete.

First thing is to make a backup of your configuration. This way you can recover if you make a mistake.

sudo cp -I /opt/bitnami/apache2/conf/bitnami/bitnami.conf /opt/bitnami/apache2/conf/bitnami/bitnami.conf.bak

Then you are going to edit the config file. I will use ‘Nano’ to do this as it is a reasonably friendly editor for most people.

sudo nano /opt/bitnami/apache2/conf/bitnami/bitnami.conf

Once editing you will delete lines from the file. This can be done by using the arrow keys to move to the line and then pressing Ctrl+k.

You will want to delete everything between the <VirtualHost _default_:80> and the closing </VirtualHost> tags.

You will want to replace them such that the tag now looks like:

<VirtualHost _default_:80>
ServerName [your server name eg: www.mydomain.com]
ServerAlias *.[your root domain eg: mydomain.com]
Redirect / https://[your sever name]
</VirtualHost>

Then you will exit Nano by hitting Ctrl+x. You will be asked “Save modified buffer (ANSWERING “No” WILL DESTROY CHANGES) ?” Type a capital ‘Y’. Then when you are asked “Name of File:” just hit Enter.

Restarting Apache

Lastly you will need to restart Agache.

sudo /opt/bitnami/ctlscript.sh restart apache

Now to test your site.

Note

Your certificate is only valid for 3 months. So you will want to setup a Cron job to renew it.

Employee Feedback without Unicorns

I am talking at #Agile2017 about giving meaningful, helpful, and humane, employee feedback. The secret is that the employee needs to be central.

TL; DR

The only person qualified to give advice to an employee regarding their career is the employee. That means we need to empower the people who work for- and with- us to analyze their career. If we can empower people to better their lives they will do more and do it better.

The only person qualified to give advice to an employee regarding their career is the employee. Click To Tweet

Questing

What if employees looked forward to receiving feedback? What if they found feedback valuable and able to improve their lives? What would that look like? How would we provide that environment? Our department asked these questions and the whole department swarmed to tackle the problem. The solution we came up with worked well in our context, and I also believe the lessons learned while figuring the answer out are valuable to others.

Personal

The first lesson we learned was that if we want to give meaningful feedback to individuals was that it had to be individual. That means we must do things to consider, protect, and appreciate, the single person who is receiving the feedback.

Our solution, currently, is to do a personal retrospective for the person. This retrospective is private, personal, confidential and facilitated by a peer who the person trusts.

Trust

It is important that the retrospective is personal and private. Without this security, there is no safety. Without safety, truth is limited, constrained and lost. The goal is to allow the employee to have real insight into how they can improve their career path, their entire career path, not limited to that within the company.

Facilitation

It is also important that this retrospective is facilitated. Facilitation gives the opportunity for the employee to explain their thoughts to another. The process of explaining leads to insight.

The facilitator is to listen, and ask questions only to gain understanding. They are not to judge or comment. They are not to burden the person whose retro it is with their own opinions. We decided to provide facilitation training for everyone who is interested in being a facilitator.

The facilitator is invited by the employee who is undergoing the retrospective. Invitation is important, as it signifies trust. It is just as important the invited facilitator be allowed to refuse without explanation. Not everyone is comfortable with facilitation.

The last thing to note about facilitation is that the facilitator will make mistakes. After all, these are not professional facilitators. Mistakes are okay. Even if they disregard all their training, just by being there for the retrospective, they will make the retrospective more successful.

Output

The content of the retrospective is private and personal. The things talked about during this meeting need to be protected, unless there is a legal obligation. If not, we again lose trust.

The product derived from this retrospective is a set of possible goals. One or two of these goals will be decided upon and acted on. They will be shared with the director who will help to achieve the goals. He uses this information to understand the ebbs and flows throughout the department.

When a goal is not achieved, the director needs to know if the department hindered its progress, and if so, how. If a goal is completed the director wants to know how the employee felt about the goal, if there is more that can be done to improve upon the accomplishment, or if knowledge can be shared.

Rewards

These goals, the retro, and information gained through this process, except where there is legal obligation, is disconnected from compensation. This frees us from the burden of creating an accidental game where the outcomes can become harmful.

The only reward is the ability to take an analytical look at your career and take steps to move it into a direction you want.

Plug

Please come to my talk, where I will talk in depth on this. I hope to see you there.

I will be watching Facilitation Without Unicorns at #Agile2017 Click To Tweet

Onboarding a human into a human system

Onboarding is much more than a meeting with HR, it is the integration of new person.

TL; DR

Onboarding is an important endeavor. If we approach it seriously and conscientiously we can make the new person feel more welcomed and part of a team.

Initial Onboarding Meeting

Human Resources has a job to do with its onboarding process which is important for all kinds of reasons. This onboarding covers legal issues and is often the first, if not only, exposure a new hire has with the company’s culture as defined by its executives. However, this should only be the start of the onboarding process.

Integration

It can take several months to integrate a new person into an existing team, so that they are emotionally and mentally part of that team. During this time, we need to help them, guide them, and be there to support them as they have questions.

Our goal in onboarding should be to help and guide a new hire in becoming a member of a team. Click To Tweet

My department has extended its onboarding process to three months and provided the new hire with a buddy. We choose a buddy from the newest employee who has been at the company at least six months, who are on the same team as the new hire, and is willing to accept the responsibility. The buddy is chosen this way to maximize the empathy for the new hire since buddies have the most recent memory of what it was like to be a new hire.

Buddies

They are a buddy, not a mentor. Buddies are there to answer questions and give support. They are not there to teach. Which is to say buddies are not given any authority over the new hire and are a model of the flat organization structure of the department.

Department and Team

We also extend the onboarding process to the team and the department. When a person is added to a team, that team is no longer the same team. To emphasize this fact, the team, the new hire, and their buddy all undergo training about the Satir Process Change Model by Virginia Satir.

This creates a cycle of repetitive learning for the new hire. The new hire learns about the process as part of their onboarding. They then learn about it again with each new hire brought onto their team. They again learn it when they become a buddy. We do this because we believe understanding of the Satir Process Change Model is important to the successful integration of a new person into an existing system.

The team and department then undergo activities to introduce the new hire to everyone, and to introduce everyone to them. These activities might include a Market of Skills, a Lean Coffee on hobbies, or many other activities. One of the main goals of an onboarding process is to make the new person feel welcomed, wanted, and appreciated. These activities done over a three-month period seem right to me.

Request for Comment

How do you, and your company/department/team approach onboarding in a new way? I would love to hear about it.

Test Driven ?

TDD is a practice that I have found great success with. I have found that I became proficient in it, the name changed its meaning.

TL; DR

TDD like any skill requires time to learn and master. The meaning of the last ‘D’ in the abbreviation changes as does your mastery. As the practice becomes increasingly rote, TDD starts to become less about development and more about design.

Setup

It drives me crazy when I hear someone say “TDD is easy”. For me TDD was anything but easy. In fact, it is still easier for me to revert to coding without tests, even though I have been doing nearly everything test driven for the last 10 years.

It took me 2 years to get the hang of TDD, and 3 more to feel like I started to master it. During this time, I noticed a profound difference in my code. I spent less and less time trying to figure out what my design was. It emerged and coalesced on its own. … Well not exactly on its own.

Development

When I started, I would think about what I wanted the design to be, and write the test to prove out that design. This lead me down quite a few rabbit holes and wrong decisions. The good news was it allowed me to get better at refactoring.

As I started to get proficient in writing tests, my decisions became cleaner. My code never did, but my thought process cleared up. I would stop, and think about my tests. What does the next test highlight. What part of my design is not yet implemented. (And yes, I still got surprised when things turned out never needing to be implemented.) Here the tests were driving the development of my design. I was doing Test Driven Development.

Design

As I became even better at writing tests, I found that the questions I was asking were laborious and time consuming. I simplified them to 2 questions.

  1. Is this the API I want?
  2. What expectation is not met?

I found then that as I wrote the test to satisfy these 2 questions the design would emerge. Now a fundamental change had occurred. I was using the tests to drive my design.

 

Now a fundamental change had occurred. I was using the tests to drive my design. Click To Tweet

Greatness

I have been thinking about great teams and teamwork lately. Greatness is not something easily attained or held, but easily lost.

What does it take to be part of a great team? Click To Tweet

TL; DR

Greatness slips from our fingers at every moment, we must actively pursue it and not compromise for less. We must strive to ensure all voices are heard, that quality is maintained, and room to experiment is held. Anything less defeats greatness.

Acceptance

To ensure a great team, there must be an agreement of acceptance. All proposals must be met with a “yes and…” mentality. People’s views, emotions, concerns, and ideas need to be welcomed. Without this welcoming safety is destroyed.

Without that safety new ideas are killed before voiced. Trust degrades, and people fall into old habits. Greatness is lost, because innovation stagnates.

Acceptance can be achieved as long a few people are willing to champion it.

Uncomfortableness

The feeling of being uncomfortable signals the greatest chance for improvement. When the team “leans into” uncomfort and addresses the smallest things trust and acceptance grow. It is true that you need a seed of acceptance before this can happen; however, facing the feeling of being uncomfortable grows acceptance beyond its normal bounds.

Facing uncomfort, is very tenuous. Where acceptance can grow with a few champions, the ability to face things that make us uncomfortable can crumble with one criticism. This must be protected, and defended or the things that erode trust will remain hidden.

The most powerful and useful conversations happen when we solve real problems. If we cannot bring up those problems greatness dies.

Excellence

Once we have acceptance and the ability to face what makes us uncomfortable, then we need excellence. Excellence is the constant striving to do better than we are currently. This includes technical excellence, process excellence, teamwork excellence, and communication excellence; along with many other forms of excellence.

Excellence ensures quality of what we do, and constant improvement. It allows for us to make mistakes and learn. It allows us to revisit and revise old decisions. Excellence measures greatness, but by paradox excellence cannot be accomplished without the other things I mention here.

Experimentation

We don’t know how to improve, even if we do, the context will change. We cannot achieve excellence without the ability to experiment. The ability to make a judgement and be wrong.

Experimentation feels natural on the tongue, but we tend to subtly resist it. To be an experiment, four things must be true.

  1. There must be a possibility that the hypothesis is wrong.
  2. There must be a defined end for the experiment.
  3. Success and fail criteria must be known.
  4. The actions of the experiment must be defined.

In Short

Who does not want to be part of a great team? Greatness is simple to achieve but in no way easy. It requires acceptance of all ideas, the ability to face all uncomfortableness, a strive for excellence and continual improvement, and a willingness to experiment.

Greatness is simple to achieve but in no way easy. Click To Tweet

Without all these things, we cannot be great. With them we will always be traveling toward greatness.

A healing work environment

A healthy work environment means a healing work environment. Click To Tweet

TL; DR

To be healthy, a work environment needs to be a place of healing, not only a place where no further harm is done. Healing is not always easy or comfortable, but always rewarding. We should build a place of healing and reap the rewards.

Healthy

What does it mean to have healthy work place?

I think we first must ask what does it mean to be healthy.

Healthy: (Merriam-Webster)

  1. Free from disease or pain
  2. Showing physical, mental, or emotional well-being
  3. Beneficial to one’s physical mental, or emotional state

Healing

Each of these definitions show a common thread. Health is a good state, or the absence of a bad state.

So, what does it mean to have a healthy work environment?

A healthy place promotes health.

On the surface, it means to have a work pace that is in a good state or very least without a bad state. This definition is simple and compact. There is a lot of meaning behind it that is easy to gloss over. I want to unpack it slightly.

To be healthy you must be free of disease or pain. If you have disease or pain you must first heal to be healthy. A healthy environment encourages your healing. That means a healthy job will encourage you to heal.

To be healthy you will show physical, mental, or emotional well-being. A healthy work place will promote those signs of health. It will be a place where a person can grow in one or more of each of these healthy states. The more growth possible the healthier a place is.

To be healthy something must be beneficial to one’s physical, mental, or emotional state. This is really what I have been driving at. Beneficial is not just doing no harm, it is allowing for improvement. It is helpful.

When we think of a “Healthy Work Place” we should think of something bigger than simply a place where no harm is done. We should strive for a place where people can heal from past hurts, and improve the quality of their life.

Uncomfortable

However, healing past injuries is not comfortable. The worse the injury the more invasive healing can feel. People can be sore, and irritable. People can have trust issues that can degrade communication. Fear can cause people to see past wrongs in healthy and helpful actions.

For a work place to be a place of healing, not only does the company need to embrace it, so do the employees that are undergoing healing. This is scary, tiring, sometimes painful, but worth it.

I have worked in these environments. Whenever I do, I learn more about myself, and my work than in any other circumstances.

Thoughts

During our working lives, we will spend 24% of those lives at work (approximately 37% of our waking lives); assuming no overtime. We should strive to make that more then something we do to survive. We should strive to build environments where others heal; where we heal if we need to.