• I’ve never been a huge animal person, but this cat has grown on me. Him and his sister (RIP) were the perfect cats for our family.

  • Wishing you all the best in your battle! Stay strong but be prepared!

    Wishing you all the best in your battle! Stay strong but be prepared!

  • That's great news Mike! Wishing you a continued and long remission!

    That's great news Mike! Wishing you a continued and long remission!

  • A few photos from my trip to Trekconderoga last year. There’s a Star Trek museum in Ticonderoga that has a replica set of the Original Series Enterprise. It’s quickly becoming one of my favorite conventions.

    A person is sitting in a futuristic-looking chair surrounded by control panels and display screens, with two other people in the background.A person playfully poses in front of a colorful, futuristic-looking backdrop that features purple and orange lights.A futuristic control panel with buttons and screens is set in a room displaying a spaceship image on the wall.A group of people are standing around a futuristic-looking desk, which is decorated with various objects and surrounded by black swivel chairs.A person is standing and smiling in a room with retro-style decor, including a desk with vintage items.Three people are standing on lit circular platforms in a room with overhead cylindrical lights.
  • Not what I was expecting, but still interesting

    Currently reading: The Ten Year War by Jonathan Cohn 📚

    This book has been engaging, despite it not being what I originally thought it would be. I expected more of an examination of the law post-implementation and an examination of its execution. The majority of the book is focused on the conception, creation and passing of the Affordable Care Act. Still quite interesting, but not what I expected.

  • Helping Your Loved Ones Navigate Your Digital Life After You’re Gone

    Helping Your Loved Ones Navigate Your Digital Life After You’re Gone

    Photo by Scott Graham on Unsplash

    I’ve been battling cancer since 2021. First, Multiple Myeloma and then after beating that I developed Acute Lymphoblastic Leukemia caused by my Myeloma treatment. To say the last few years have been a challenge is an understatement. While my prognosis is very good, my mind can’t help but wander down the darkest path. With so much of our lives being online these days it’s surprising how we overlook equipping our less technical inheritors with a digital roadmap.

    With that in mind, I’ve been putting together a strategy for making sure my loved ones have everything they need in the event of my untimely passing. Because it’s not something many people think about, I thought I’d share some of what I’ve been doing. This isn’t legal advice but merely what I’m cobbling together. Your mileage may vary.

    Planning in 1Password

    At the center of my digital estate planning strategy is 1Password, a password manager that my family uses already. We put all of our passwords in the tool and have a shared vault for things that both my wife and I might need access to. Think of things like brokerage account logins, streaming services, login for the kids and their various services, etc. 1Password has a family plan where up to five family members can share a single account. (Each family member gets their own personal vault and you can create shared vaults for the entire family)

    The nice thing about 1Password though is it can store more than just passwords. It can also store documents and generate one-time passwords for use with two-factor authentication. The document storage is the key to my digital estate planning. In our shared vault, I’ve created a simple document (in RTF format) that has a list of instructions on what to do in the event of my death. Because the document is in a secure vault I can be candid with the information I put into it. I can also create links directly to the 1Password entries I’m discussing in the instructions. For example, if I’m explaining the details of our ETrade brokerage account, I can create a link to the ETrade 1Password entry so my wife can easily login and get the information she needs.

    The instructions document isn’t where I put any flowery goodbyes. It’s a manual on what to do when I’m gone. First and foremost I start with a list of all accounts and services that should remain active and why. For example, I have a paragraph explaining not to cancel my cell phone plan until the estate is resolved. Why? Because a lot of services still use text based 2FA. Keeping the line active will make dealing with 2FA a lot easier. I also mention my debit card remaining active. Even though we have a joint account our credit card numbers tied to the account are different. Cancelling the account might cancel key services like 1Password. Again, not an insurmountable task if it happens but just a lot easier if you know and can avoid cancelling those key services until you know you’re ready.

    Next I have instructions on how to recover my 2FA system, Authy. This will help to get setup for many of the other accounts that are protected with 2FA and Authy. An alternative would be to have 1Password be your OTP client, producing the codes right next to the passwords. The only concern there is if your 1Password account gets popped then the 2FA isn’t really helpful. But considering your Authy backup codes are probably in 1Password as well, this might be a distinction without a difference.

    After that I enumerate all of the financial accounts that my wife doesn’t have her own specific login to. For us it’s things like our Treasury Bonds account, my personal brokerage account (where I experiment on the market with limited funds) and my company 401k information. All of these accounts are setup with the appropriate beneficiaries but listing them explicitly helps to remind my loved ones what exists. Worse case, the family trust is the beneficiary and they’ll eventually gain access to the assets. But for planning purposes it’s nice to be able to login quickly and have an idea of what the state of the accounts are.

    Finally, I have instructions on where any digital versions of important documents are. We typically have physical copies but I note where the digital versions are stored in the event there was a fire or something and those documents perished with. me. This is also where I’ll put restore instructions for my laptop. A set of instructions on how to restore my document management system from our cloud backup solution. Again, I don’t want to have to rely on the idea that my wife will have direct access to my laptop.

    Before I move on to a few other services there’s another thing I’d recommend specifically for 1Password. 1Password has the concept of family organizers. They’re basically account administrators and have elevated privileges in the account. If you created the account then you are a family organizer but it’s useful to have more than one. You can find more information about family organizers on 1Passwords website. Having your spouse be a family organizer will help to future proof with any additional functionality that the role may be granted. But most importantly, it will allow your loved one to update the billing information to ensure your 1Password account stays active even after your linked credit card information has been retired. For additional peace of mind you may want to store your 1Password emergency kit somewhere secure. It has all the information necessary to recover your 1Password account. Unfortunately at this time there is no mechanism for you to will or pass down the 1Password account so the emergency kit becomes your best option.

    Legacy Contacts

    A few of the larger services offer what’s known as a legacy contact. The legacy contact is (typically) a designated contact that you specify that will gain access to your data at the time of your death. Each service has a slightly different process for specifying a legacy contact and how that contact must engage to recover your data.

    • Facebook Legacy Contact will allow you to specify a person that will manage and memorialize your main account after you’ve passed away. They also have a similar optionto memorialize an Instagram account.
    • Apple Legacy Contact will allow you to specify a contact that will gain access to the data stored in your Apple account after your death. There are limits to what data you get but things like photos, messages, notes and device backups are just some of the things the legacy contact will gain access to.
    • Google Inactive Account Manager is a little bit different. It acts more like a dead man’s switch, where if your account has been inactive for a specified period of time, Google will send an e-mail to your contact with a message of your choosing. When you set it up, you can also specify to share data with the contact. The e-mail will include links for the user to download the data.

    Wrap up

    This has been a bit of a learning experience for me. The tough part is that you don’t know if it worked the way you hoped because you’ll be gone! But hopefully I’ve sparked some ideas on how to pass down the digital bits of your life to your loved ones and make a difficult time just a little bit easier.

  • I’ve noticed that this is a spectrum in terms of how people want to be engaged.

    I’ve noticed that this is a spectrum in terms of how people want to be engaged. For folks I interact with regularly I’ve begun asking how they like to be engaged on chat and so far it’s a mixed bag. Sometimes it often depends on the message too. So “Hey, we need to talk” sounds way different from a manager and creates anxiety. Some people just want the full message at once. It’s kind of fascinating but also creates a mental burden for tracking the different preferences of people.

  • I really think that’s been the missing link in our strategy.

    I really think that’s been the missing link in our strategy. The idea that if we do nothing, all of that emotional connectedness will bleed away. And what I’ve noticed is it’s different rates for different people. So managing that drainage has to be done at the direct manager level, meaning budgets will most likely need to come down to that level so managers can arrange events on their own with autonomy.

  • Thoughts on Remote Work and Emotional Connectedness

    Thoughts on Remote Work and Emotional Connectedness

    A group of people working together on laptops at a table
    Photo by Annie Spratt on Unsplash

    There is a certain amount of gravity around remote work. Even those of us who like going to the office occasionally, struggle to produce the force necessary to escape the pull of our home office. It feels less of a matter of will power and more the universe conspiring against our innate desires. The commute, the kid’s karate class after work, laundry, a day of meetings that will be all virtual anyways, are all things that take a decent plan of an in-office visit and relegates it to the heap of unfulfilled ambitions for the week.

    But there is a chorus of voices that are espousing the benefits of in-person work. The collaboration is stronger, the sense of connectedness deeper and the speed at which problems can be addressed swifter. For employers, this means the pull of the office must be stronger than the gravity of the home office. It’s not enough to match the incentives of the before times but we have to rethink what the strengths of in-person work is and figure out how to amplify them.

    I don’t have the answer. In fact, I don’t believe it will be a single answer but more of a tapestry of solutions that are tailored to the culture of an organization. There won’t be a one size fits all but a drive to understand the desires for in-office connectedness.

    One piece of this conversation that I’ve found interesting is the idea of emotional connectedness. Much of the discussions around return to office has focused on the concept of physical proximity being the engine for innovation. But emotional connectedness looks at emotional proximity as being the secret sauce. Co-workers feeling connected to not just each other, but to their role, team, department and company as a whole.

    When I was introduced to this concept, I wanted to start thinking about how our emotional connectedness ebbs and flows over time. I started thinking about these emotions as a measurable resource. Imagine every employee had an emotional connectedness score that reflects their level of engagement. What increases someone’s level of connectedness? Since the pandemic, we’ve relied almost exclusively on in-person meetings, and for good reason. For a lot of people that social interaction dumps a huge point value into their connectedness score. Many people have a bit of a buzz about them after a couple days in the office connecting with colleagues. It’s also insanely easy for the employer since it’s leveraging an already sunk cost resource. (The office itself)

    But there are two problems with this as the sole means of addressing the connectedness score. For starters, not everyone gets the same boost from in-office visits. For some people it’s a drain on them to be in person for a myriad of reasons. If in-office visits are the only way your company is boosting the connectedness score, you’re likely leaving a decent percentage of your staff unfulfilled. The second issue is a problem with all boosting methods and it’s what I describe as drainage. Our connectedness scores are boosted by activities, but they also drain at a regular rate. That rate might change per person. You can feel it as the buzz of your in-office visit begins to fade after week one. A month later you might be back in the same connectedness valley. Sue might be able to ride the high of her office visit for an entire quarter, while Jack may need a more frequent top-off of emotional energy. This drainage is something we have to pay close attention to and build rhythms in the organization that are aware of this drainage and are structured to curtail it. I took care to use the word curtail as oppose to eliminate. We can’t eliminate drainage. The best we can do is slow it.

    We can’t rely solely on in-office visits though. The more frequent office activities become the more energy it takes to escape the home office gravity well. (The events quickly get taken for granted) Developing remote activities and rituals that also produce emotional connectivity is key. This is where things will deviate per organization. An organization with a young population might gravitate towards different activities than a company that skewed older. Because of that there’s no playbook for the type of events that could work virtually but here are a few broad categories I can think of.

    • Employee Resource Group events centered around themes of interest
    • Book Clubs
    • Gaming groups/clubs
    • Trivia groups
    • Special interest projects
    • Virtual coffee meetings (people are randomly paired together for 30 minute discussions)

    The secret sauce here is to have a broad array of programs since you have a diverse array of personalities and interests. You also need to take care to create opportunities for smaller sets of connections, even just 1-on-1. There are quite a few people that don’t function well in large groups. Putting those connections into a remote setting just exacerbates that problem. Being able to come up with options of various engagement sizes is key.

    Having a point person for each of these categories is ideal to serve as a coordinator and cheerleader of sorts. When groups are left to self-organize they often die prior to the group reaching a critical mass of attendance and consistency that allows the group to thrive on its own. These groups and activities don’t provide the same bang for your buck as an in-office visit, but the barrier to entry is much lower and they can provide small point boosts to the connectedness score in-between office visits.

    Another source of connectedness points is the relationship an employee has with their work. This is something that leadership must have a strategy for. How does someone relate their job to the overall strategy of the business? How does their department factor into the corporate goals? This requires all levels of leadership to understand the strategy and how they fit in, but it also requires relentless repetition at all levels of the organization. As much as employees see themselves as attentive and engaged, the truth is people need to hear the same message over and over again in various mediums before it really begins to settle in. This means leaders need to have their talking points in-hand that they can say over and over and over and over again, so that employees see how they fit in to the larger plan.

    A central theme that has come up in my thinking is the idea that managing this connection score is work. It’s work that we took for granted in the office because it came so naturally because of the setting. I dare say that we didn’t even respect that connection management as work but as goofing off. Bob is always at the water cooler. Pam spent half an hour chatting with Frank in the kitchen. We didn’t recognize the building blocks of relationships that those moments created. Now that we don’t have it, we’re desperate to recreate it.

    Hybrid work is definitely going to be a tough nut to crack. We’ll need to experiment with a bunch of different options and have honest conversations about what keeps us at home, what gives us energy and what drains us. For some companies the first step will be creating the psychological safety necessary to have open, honest discussions about what works and what doesn’t. If everyone is living in a place of fear where any criticism of remote work leads to a return to office mandate, you’ll never receive honest feedback about the state of remote work. It’s been a huge help to many people but its far from perfect for the company or the individual. Being able to have honest discussions about that is step one.

  • I’m so glad you mentioned the school schedule times.

    I’m so glad you mentioned the school schedule times. I’ve noticed the same! So many requests for volunteers at 1pm or assemblies at 11am. It’s really hard to balance it all. 

    As a leader I try to be as transparent as possible about why I’m taking time off so others feel comfortable. Parents shouldn’t have to miss out on their kid’s milestones because they don’t have the flexibility to miss work. Ugh!

  • It’s never enough in their little minds!

    It’s never enough in their little minds! And as parents we unfairly internalize that sometimes. It’s going to be interesting to see case studies in the future on the decisions we’re making. Especially for those of us who were doing remote schooling during lockdowns. I can already see some of the social impacts it had on my kids.

  • This is a great idea and will be particularly useful as summer break approaches.

    This is a great idea and will be particularly useful as summer break approaches. We make a schedule for them but never thought to share my schedule as well.

  • Absolutely.

    Absolutely. I can do more with him and for him thanks to remote work. Personally I wish there was more of a balance with in-office (for me) but very few people want to be in-person with any regularity, which I can respect.

  • The Impact of Remote Work on My Children

    The Impact of Remote Work on My Children

    My son said something that was a little alarming and troubling which has led me to deep thinking about the impact of remote work. My son had a series of poorly communicated events at school today, which we found out about the night before. I’m completely unavailable to my family at the moment so it falls to my wife. On their way in to the first part of the assembly, my son asked her how long she could stay. Unfortunately my wife had a call she couldn’t miss at 9am. Our son is incredibly empathetic and responded with “It’s OK. Work is more important”, which isn’t what any parent wants to hear. My son is very well loved and he and his mother share a very deep bond. So I’m left wondering, how did we get here?

    Remote work has become a central chord in the harmony of our household rhythms. Remote work allows us to live a lifestyle that was previously impossible due to the scheduling void that our commute generates. The Internet talk a lot about remote work from the perspective of the worker but doesn’t often talk about it from the perspective of the family, but more specifically, the children.

    My son Xander is 9 years old and my daughter Ella just turned 12. I’m going to focus on Xander for the purposes of this story. When my company moved to remote work on March 11th 2019, (thank you Rudy Gobert ) Xander was 5 years old. For a 9 year old, that’s an eternity, accounting for a little over half his life. He has no real memories of my wife and I going into the office on a daily basis. That lack of context seems minimal at first until I began to think about how that structures his mental model of work and how that mental model relates to him and his value.

    When the family all had somewhere to be in the morning, we all woke up, we all did our morning routine together, the kids went somewhere, parents went somewhere and then we all reunited at roughly the same time. There was a shared experience around how our time was used during the day. Even at a young age, our children can relate to the idea that “Mommy and Daddy are doing something like school!”, a shared experience that “required” you to be in a certain place with certain people. Then COVID hits and the memories of those shared experiences fade-to-black as our new reality sets in.

    Now, it appears to be difficult for my kids to associate remote work with commitment. Part of it is because remote work schedules are nebulous in a way. Our hours have changed, my wife and I work later into the evening or make up hours in the evening from missed time during the day. With work not being associated with a place and specific time, work seems more like a choice than a commitment.

    We see this manifest when Xander comes home from school, for any reason, during our working hours. He’ll ask if we can play a board game or that he’s bored and needs something to do. It’s hard for him to consider us “not there”. Every rejection in favor of work, tilts the scales of value in his mind, leading to statements like “work is more important”.

    We’ve never taken the time to discuss with him in detail the nature of remote work because we relied on his memories of a different time. Memories he doesn’t actually have any more. This is less of an issue with my daughter, because she’s older and still has some fleeting memories of the before times. The question now becomes how do we talk to our kids about the nature of remote work and what assumed knowledge do we need to rethink?

    My initial bullet list is to mention:

    1. We work with other people who also have families and commitments. Having a shared, overlapping time frame where we work is important to make sure people can meet those commitments and share time with their family.
    2. Scheduling certain things is very important. This way everyone knows when they need to be available and when other things need to be scheduled around it.
    3. Sometimes we can take time off during the day to do personal things, but it doesn’t change what’s expected from us and when.

    The hard part I’m struggling with is how to explain the value part of the conversation. If I’m choosing work over playing a board game with him, in a sense I am saying that work is more important in that moment. Not more important than him as a person, but more important than what he would like me to do in that specific moment. I’m hoping the nuance will come through.

    I’d be very interested to hear if others have experienced anything like this. We’re raising children in a new world, which is bringing up new questions and obstacles. Obstacles that my parents and in-laws have no experience with, making them just as in the dark as we are.

  • “Yes…but.” —  Saving ideas in their infancy

    “Yes…but.” — Saving ideas in their infancy

    Photo by Mika Baumeister on Unsplash

    Ideas are fragile. In an idea’s infancy, it doesn’t take much to do irreparable damage to it. This is why how we approach new ideas and the language used during an idea’s infancy is so important.

    One of the biggest killers of an idea is the tendency to front load the idea conversation with all the reasons an idea can’t succeed.

    “It won’t work. We wouldn’t be able to know ahead of time all the inputs necessary.”

    “It won’t work. Processing time would take too long.”

    “It won’t work. These two systems can’t talk to each other.”

    All of these are examples of idea killers. But they’re only idea killers because of the wording and the way we deliver the objection. Imagine if instead, we approached the idea from a perspective of curiosity and a commitment to the idea. Let’s add a few simple words to these idea killers and see how they seem afterwards.

    “Yes, but we’ll have to keep processing time to under an hour.”

    “Yes, but we’ll need to figure out how to anticipate all the inputs.”

    “Yes, but we’ll need to figure out how to communicate between these two systems.”

    By just changing the way we speak and challenge the idea we’ve done a couple of things.

    1. We’ve noted the potential problem without killing the idea.
    2. We’ve aligned ourselves with the idea giver as an ally. We’re now working towards a solution together.

    Being able to align yourself with the solution puts you in a completely different mindset in terms of how you approach a problem. It doesn’t mean that the problems presented aren’t real and they very well might be insurmountable. But now you’ve explored the idea, supported the idea giver and most likely have come up with alternative methods that partially solve the problem.

    The “Yes, but” approach is increasingly more important in remote working environments. Text based conversations operate on a different level of social interaction. Text based conversations are devoid of the non-verbal communication we often give, even subconsciously.

    Even though our texts are devoid of these non-verbal cues, our minds haven’t adapted to the fact that we’re not sending them. Text based messages go out devoid of the signals that might soften your communication style. Instead the recipient is stuck, interpreting your message with energy you may or may not have intended. This is particularly true of messages around ideas.

    If a person is already timid about sharing their idea, any critical comments about the idea will be interpreted in the worst light. The simple action of “Yes, but” can help to align yourself and provide support for your team member while still bringing up real world challenges.

    The literal worlds “Yes but,” don’t have to be used. The key is to do the following:

    1. Acknowledge and validate the idea.
    2. Address the problem as a solvable hurdle to the idea.
    3. Word things so that it is clear you plan on collaborating on the solution for the idea.

    Just these three steps can help save a lot of ideas and help them get out of their infancy and into full-fledged solutions to help you and your team.

  • Troubleshooting Computers Made Me a Better Patient

    Troubleshooting Computers Made Me a Better Patient

    Unfortunately, I’ve spent the last few days hospitalized. It doesn’t appear to be serious, the type of mundane virus or bacteria that can wreak havoc on the immunocompromised. But my stay here has given me an opportunity to watch the troubleshooting process in a different field. The art of troubleshooting isn’t an innate skill. It’s one that crafts-people develop over time. They can think about the process, they can articulate how they go about it and their process sets up an easy way to refute bad theories or continue investigating theories with a lead.

    I’ve always had this issue accepting that where I work is a smaller representation of society as a whole. “Not everyone at work is a great troubleshooter, but that’s not the case in medicine!” Unfortunately, I am wrong. But if you can abstract your troubleshooting process, I assure you it can be applied to any field. Anywhere.

    Systems are Complicated, Break Them Up

    If you’ve ever had to troubleshoot a large complex system, I think one of the things you find out is that it’s almost impossible to do. What you don’t consider is that with enough examination, any system is likely large and complex. It’s the distance you’re viewing it from that makes its complexity visible.

    When you come into a problem, the first thing you have to think about is how that problem breaks up into different spaces or components. Where are the hand-off points and at what moment can we determine where the cause lies. Sometimes you do this innately when you’re well-versed with a system, but when you get into systems you don’t know you often ditch this specific skill. For example, when you’re troubleshooting your web browsing what are the things you check for?

    • Am I connected to the Internet? Meaning, can I get anywhere on the web?

    This makes you divide the problem in half. If you can’t get to the Internet at all, you’re now thinking that your focus should be on things that are necessary beforeconnecting to the Internet. You might do ask questions like:

    • Can I connect to other machines on my local network?
    • Can I resolve DNS hostnames?
    • Is my router working?

    Answering these questions not only moves you steps closer to figuring out the answer, but it also helps you eliminate other theories. Your friend says “I can’t get to that website either!” That’s fine. But you can’t get to any website. So obviously you and your friend have two different issues. Once you solve your issue with Internet connectivity, you might be on the same page, but for now you’ve got your own sets of problems.

    It also helps you to gauge how many problems you might be dealing with. In addition to the Internet connectivity problem, let’s say you have an issue launching Power Point. It throws a weird cryptic error.

    • Is it possible that the Internet error is causing this?
    • Have you seen this same error before with Internet connectivity?

    This helps set the stage for future questions about symptoms that are happening at the same time but might have different sources. It might be easy to conclude “Fix the Internet and PowerPoint should start working.” But if you know that PowerPoint isn’t dependent on the Internet, then it could be a bad idea to tie these things together.

    After you break them up solve the individual problems

    Once you break the systems up, you might have a bunch of separate problems. If you’re well-versed in the system, you might be able to separate the problems into contributing and non-contributing issues. For example, our PowerPoint issue isn’t something we need to solve, because we know it isn’t contributing to our core problem.

    You have to order the problems in order to solve them in the correct order. If you don’t have Internet connectivity at all, then it doesn’t make sense confirming that you can resolve server names. If you solve the Internet issues, what are the things you’re expecting to clear up? What does it mean if they don’t clear up? What are the next steps for that?

    Before you begin solving the individual problems, have a theory on what solving that problem should do to the system. What symptoms are you expecting to clear up? What does it mean if specific symptoms don’t go away and how does that alter your troubleshooting plan?

    You can use this in everything

    I used technology in my examples because it’s what I know. But if you think abstractly you can use these same processes to generate questions about your car repair, your home fixes, your medical care.

    “What do we think are causing these symptoms? Can we test for that? If we confirm that’s the cause how do we treat that? How soon do we expect symptoms to subside? If they don’t subside what could that mean?”

    When you can stop being a passenger in these sorts of engagements, it can help you feel more confident about the outcomes, more reasoned in your decision making and more at peace with whatever money you’re shelling out.

  • Decision Rights — Communicating How Choices Get Made

    Decision Rights — Communicating How Choices Get Made

    Advice for leaders

    Photo by Beth Macdonald on Unsplash

    Companies seldom have issues generating ideas and paths forward on problems. In fact, you almost get too many ideas to be able to sift through, evaluate and ultimately implement. But a bigger problem teams have isn’t generating options, but choosing which option to go forward with. (The next issue is aligning resources, but that’s a future topic) The issue of deciding on a course of action is further exacerbated when we have groups of people working on a problem with no clear idea of who the decision owner is.

    At Basis Technologies we follow many of the principles and practices of the Conscious Leadership Group. The trainings we’ve had have been invaluable for me as a leader, but one of the best takeaways so far has been the concept of Decision Rights. In a nut-shell, decision rights are a clear definition of who will make a decision for any given situation. I’ve been using decision rights a lot more now that my team has grown and we’re spread out across three countries. The benefits of easy informal communication have begun to disappear as my organization grows and I needed something more formal to ensure the team is on the same page.

    There are a total of 7 decision rights with each change in decision rights also increasing the amount of time required to reach the decision and the amount of buy-in received from the group. This will make a bit more sense as I walk through the 7 decision rights really quickly.

    Decision Rights

    • Leader — We are all pretty familiar with the leader decision right. It’s just like it sounds, the leader of the group (assuming there’s one clearly defined) will make the decision on his/her own.
    • Leader with Input — The leader will gather input from others before making their decision. The leader usually will be responsible for soliciting the information they feel is necessary for input to their thought process.
    • Subgroup — A small team of people are put together to make a decision. The team is typically made up of Subject Matter Experts (SMEs) that drive all aspects of the decision making process.
    • Subgroup with input — A subgroup with input means that the subgroup still decides, but solicits information from outside the group as well, before making a decision.
    • Majority Vote — A group discussion of some sort ensues, followed by a voting period. Everyone should have an opportunity to voice their thoughts and concerns prior to voting. Think of it like an election, where each candidate (or view point in our scenario) has an opportunity to discuss their feelings on the situation. After that period has finished, voting occurs and majority wins. The leader of the group or organization will decide what type of majority is needed, whether it be just a simple majority, two thirds majority etc.
    • Consensus — Consensus happens when there is nobody that is opposed to the decision being made. It doesn’t mean that they can’t have doubts or reservations, but they’re not actively against it. This is your classic dinner planning scenario. You’re not against steak, even though you’d rather have pasta, but the rest of the group wants steak and you can get behind it. But just like your dinner plans, consensus decisions can be difficult to reach, so it’s wise to have a fall back decision right in the event you can’t reach consensus. Any of the previously mentioned decision rights can work, but I typically fall back to Leader with Input.
    • Alignment — Alignment is when every one is in full support of the decision being made. There is no dissent. This is the hardest of all the decision rights to meet. If you can’t get alignment on dinner, getting alignment on transformational change can be very hard. Like the consensus decision right, it’s important to have a fall back decision right in case alignment cannot be reached.

    With these 7 decision rights laid out, we can talk about buy-in vs time. Depending on the urgency of the decision that has to be made, some decision rights might seem more obvious than others.

    Decision Rights Graph — from the Conscious Leadership Group

    In the above image you can see the various decision rights plotted on a graph, with the axis being buy-in and time. These are typically the two constraints that we’re working with when it comes to decision making. Buy-in can be incredibly important for large transformational change, but time may be of the essence when we’re trying to make a decision about something this quarter. There is no right or wrong answer for choosing a decision right. It all boils down to the situation at-hand and the constraints that you’re working under. If you’ve got more time, achieving more buy-in makes sense which can lead you to decision rights like Alignment or Consensus. Any decision typically benefits from a larger buy-in from the team. The problem is not every decision has the time necessary to get there, which makes some of the other decision rights attractive and appropriate for the situation at hand.

    Communicating Decision Rights

    I don’t use formal communication for every decision right in our team. I typically reserve it for broad impacting decisions that I know many people will have feelings about. I also don’t discuss decision rights when it’s Leader decides, because then it’s usually quite clear. It’s a terrible feeling thinking you’ve got input on a decision when you don’t. If I come to the team with a decision already made, I make that clear with the delivery of the decision. Again, this is a rare occurrence, but it does happen.

    When I am communicating decision rights, it’s usually in this old, antiquated form of communication called a “Meeting Agenda”. Some of you may remember those from back in the day when it was important to know what you were going to be spending 1.5 hours of your life on. In the meeting agenda I try to lay out a few things.

    • What the decision to be made is
    • The timeframe allotted to make the decision (often just the length of the meeting)
    • What the decision right is
    • What the fallback decision right is (if applicable)
    • Any tools being used to generate decision options (Brainstorming, Pros vs Cons, 6 Hats, etc)

    With these points in hand, everyone clearly understands their part in the decision-making process and how decisions gets made. Even if people don’t agree with the final decision, the process to which it came into being is well-understood and transparent. The agenda doesn’t even have to be super-exhaustive. Here’s an example agenda I’ve used in the past.

    Lets get together and discuss namespaces moving forward.
    Problem: We need to decide if we’re going to have a single namespace per environment or if namespaces will be broken down by application. Single namespaces are advantageous in test environments, but can become unruly in production. Multiple name spaces can complicate environment management and will force specific patterns of referencing apps in pods, since you’ll have to use the FQDN. None of these are hard, but we need a specific choice.
    Meeting Outcome: Decide on single name space or multiple name spaces. Decision Model: Group Consensus with a fall back of Leader Decides with input from staff, if we can’t come to a consensus.
    Pros/Cons Idea Boardz

    It’s just enough information to get everyone on the same page without taking tons of times crafting time blocks that probably won’t be honored anyways. (Although if you’ve got the time for a more detailed agenda it’s totally worth it. I’m just saying that there’s still value in a brief agenda if the alternative is no agenda at all)

    Wrap-up

    Decision rights can be a tricky thing once you’ve moved beyond the leader decides tier. Making sure people involved and impacted by the decision are aware of how decisions are made can lead to greater buy-in even after the decision has been made. Communicating these decision rights can be a huge boost to involvement and productivity. It also forces you to make rationale decisions about the two constraints of every decision, time and buy-in. The more time you have the more you can invest in getting larger buy-in. But if time is short, you may have to make due with less buy-in so that you can get the ball rolling on whatever decision you make. These pressures exist whether you acknowledge them or not so its better to go into the situation eyes-wide-open. It can even help you communicate why such a narrow buy-in was chosen. Not every decision has a time-horizon that can afford alignment or even consensus. Does this mean some decisions are sub-optimal? Of course. But a sub-optimal decision is way better than no decision at-all.

    If you’d like to further dive-in or see a visual representation of Decision Rights, I’ve linked a video below and I encourage you to checkout the Conscious Leadership group.

  • Terraform, AWS, and Idempotency

    Terraform, AWS, and Idempotency

    A bug in Terraform? Or a misunderstanding of how a particular stanza works? Or maybe even our own automation around Terraform?

    Photo by James Harrison on Unsplash

    Hopefully, this is only part 1 of this series as it doesn’t really have a satisfying ending so far, but still a story worth sharing. We encountered an error in Terraform that was transient but seemed to go away on its own, most likely some race condition. This post is going to walk through that failure. It’s a bit more technical than some of my other posts so those who come for the leadership thoughts might have their eyes glaze over. Your mileage may vary.

    A bit about our deployment process first. We use a blue/green deployment strategy in our environment (minus the database). Automation around Terraform is responsible for bringing up the second application stack and deploying code to it. During the creation of that second stack, we received an error message we had never encountered before.

    Error: error creating EC2 Launch Template: IdempotentParameterMismatch: Client token already used before. 
    status code: 400, request id: 4c6edce7-7497-4884-ab63-f215f9b82f6e
    on ../terraform-asg/main.tf line 33, in resource "aws_launch_template" "launch_template":
    33: resource "aws_launch_template" "launch_template" {

    There were a few things that needed to be researched here.

    The IdempotentParameterMismatch Error

    When an action is idempotent, it means it can be performed multiple times without changing the result beyond the initial application. I

    n practice what this usually means is if I run command X, the command is aware if it had been run before in this context and may skip the usual application of the command and instead return a status or a result. A simple example is the mkdir command when you use the -p flag (which tells mkdir to create the full path if it doesn’t exist).

    If I run that on my local workstation the following happens.

    mkdir -p /tmp/test
    ls -l /tmp/|grep test
    drwxr-xr-x 2 jeff.smith wheel 64 Jun 9 06:31 test
    mkdir -p /tmp/test

    The mkdir command created the path /tmp/test and we can see it was created successfully. When I run the command again, it completes successfully with no error message.

    That makes this command idempotent. No matter how many times I run this command, I know in the end I’ll get a successful result and that the path /tmp/testwill exist. Now contrast that with just mkdir.

    mkdir /tmp/test2
    ls -l /tmp/|grep test2
    drwxr-xr-x 2 jeff.smith wheel 64 Jun 9 06:35 test2
    mkdir /tmp/test2
    mkdir: /tmp/test2: File exists

    Now with mkdir, on the second execution I get an error message, which is a different end result than my first execution. The directory exists, but the error code I get back is different. That makes this a non-idempotent operation. But why do we care? Well in the second example I need to do a lot more error handling for starters. And this is a basic example.

    When doing something like creating infrastructure, it could result in launching more instances than you intended, which is what this IdempotentParameterMismatch error is designed to prevent.

    When you make an AWS API call to create infrastructure, just about every endpoint (to my knowledge) does this is in an asynchronous fashion. What this means is your API call returns immediately but the work of actually creating the infrastructure you requested is still in progress. Because of this you typically need some sort of polling mechanism to determine when the operation has been completed.

    Several AWS API endpoints support idempotency, which allows you to specify a client token to uniquely identify this request. If you make the same API infrastructure creation call and use the same client token, instead of creating a new instance, it will return the status of the previously requested instance. When creating infrastructure programmatically this can be a big safety net to avoid creating many copies of the same infrastructure. And that’s where our error comes in.

    The error is stating that we have already used the client token. Digging into the documentation a bit, a more specific meaning is that we changed parameters in the request but reused the client token, meaning the API doesn’t know what our intent actually is. Do we want new infrastructure with these parameters? Or are we expecting already existing infrastructure that matches those parameters? To be safe, it throws this error.

    The user is always responsible for generating the client token. But in this case, the user is actually Terraform. That created some surprise and relief on our part since it meant it most likely wasn’t any of our wrapper automation. But we still needed to be sure. The first thing we did was an attempt to find what client token was used and was it actually used twice.

    Luckily the error gave us a RequestId which we used CloudTrail to look up. In the requestParameters field of that request we were able to find the ClientToken used.

    "requestParameters": {
    "CreateLaunchTemplateRequest": {
    "LaunchTemplateName": "sidekiq-worker-green_staging02-launch_template20220510183630312700000005",
    "LaunchTemplateData": {
    "UserData": "",
    "SecurityGroupId": [
    {
    "tag": 1,
    "content": "sg-0743bcbd08cadba1d"
    },
    {
    "tag": 2,
    "content": "sg-6daf421e"
    },
    {
    "tag": 3,
    "content": "sg-0818108e24803a418"
    }
    ],
    "ImageId": "",
    "BlockDeviceMapping": {
    "Ebs": {
    "VolumeSize": 100
    },
    "tag": 1,
    "DeviceName": "/dev/sda1"
    },
    "IamInstanceProfile": {
    "Name": "asg-staging02-20220510183628901400000003"
    },
    "InstanceType": "m4.2xlarge"
    },
    "ClientToken": "terraform-20220510183630312700000006"
    }

    It looks sufficiently random in the same format that Terraform often uses to generate random values.

    It definitely didn’t appear to be something we generated. We then decided to search all requests in that time frame to see if any of them had the same client token.

    Sure enough, there was a second request made that reused the same Terraform module (which we wrote) to generate a second ASG and launch template.

    "requestParameters": {
    "CreateLaunchTemplateRequest": {
    "LaunchTemplateName": "biexport-worker-green_staging02-launch_template20220510183630312700000005",
    "LaunchTemplateData": {
    "UserData": "",
    "SecurityGroupId": [
    {
    "tag": 1,
    "content": "sg-0743bcbd08cadba1d"
    },
    {
    "tag": 2,
    "content": "sg-6daf421e"
    },
    {
    "tag": 3,
    "content": "sg-0818108e24803a418"
    }
    ],
    "ImageId": "",
    "BlockDeviceMapping": {
    "Ebs": {
    "VolumeSize": 200
    },
    "tag": 1,
    "DeviceName": "/dev/sda1"
    },
    "IamInstanceProfile": {
    "Name": "asg-staging02-20220510183629183700000003"
    },
    "InstanceType": "m5.xlarge"
    },
    "ClientToken": "terraform-20220510183630312700000006"
    }

    As you can see, there are differences in the request, but the client token remains the same. Now we’re starting to freak out and think maybe it is our code, but we still couldn’t see how.

    Generating the ClientToken

    As I mentioned previously, generating the client token is the job of the user from AWS’ perspective. From our perspective, that user is Terraform. We’re not GO experts by any stretch of the imagination on our team (although we’re looking for a few good projects to take it for a spin. We have a lot of interest).

    But in order to understand how the client token gets generated, we were going to have to look at the Terraform source code. After a little digging, we came across the code living in the terraform-plugin-sdkas a helper function.

    func PrefixedUniqueId(prefix string) string {
    // Be precise to 4 digits of fractional seconds, but remove the dot before the
    // fractional seconds.
    timestamp := strings.Replace(
    time.Now().UTC().Format("20060102150405.0000"), ".", "", 1)
        idMutex.Lock()
    defer idMutex.Unlock()
    idCounter++
    return fmt.Sprintf("%s%s%08x", prefix, timestamp, idCounter)
    }

    In this function, the author is generating a timestamp accurate to the second. It’s possible that multiple executions could hit in the same second-time span, but the value also gets a counter appended to it.

    The counter is in a mutex so the value of idCounter is shared across executions and the mutex prevents concurrent execution. There should be no way that this function generates the same client token twice. But that doesn’t mean that the function calling for the client token isn’t storing it and possibly reusing it.

    Wrap Up

    This is where our story ends for the moment. We started to look into how and where the client token was getting used, but since we felt strongly that this was going to be related to a Terraform issue of some sort, we had to shift gears for a solution. We weren’t going to run a custom patched version of Terraform. We weren’t going to upgrade on the spot. And we weren’t going to wait until a PR got approved, merged, and released, so that put us on a different remediation path.

    Our current fix was to specify a depends_on argument for the two resources in conflict. Other times when the error happened, we noticed it was always these two resources in conflict, so the hope was that the depends_on flag would prevent these from being created in parallel.

    So far that hope has paid off and we haven’t seen the error in any environment again. But we plan to continue to research the issue out of nothing more than morbid curiosity. It might lead us to a bug in Terraform, a misunderstanding of how a particular stanza works, or maybe even our own automation around Terraform.

    Who knows? If we find it, you’ll be sure to find a Part 2 to this article!

  • I think the meeting and the medium for the meeting can be separated.

    I think the meeting and the medium for the meeting can be separated. Yes, meetings are generally unproductive because people don’t respect the true cost of a meeting. If the hourly rate of a meeting was deducted from the organizer’s pay, they would probably treat it with more respect. But I don’t think meetings are inherently bad. What would be the tool for gathering input, feedback and decision making look like? Back and forth on a confluence document? After 4 exchanges it usually ends up in a meeting. Which is not uncommon for me to use as a benchmark. Try to solve things via email or some other medium, but after X many exchanges, it moves to a meeting with a clear agenda, decision to be made, decision rights (who makes the decision?) and method of getting to that decision. (Brainstorm, Pros/Cons exercise, 6 hats etc)

  • Inbox Zero

    Inbox Zero

    Photo by Krsto Jevtic on Unsplash

    Inbox Zero is another one of those productivity hacks that you hear a lot about in tech circles. For those of us with an unread message count in the thousands, it sounds like a far-off intangible dream like faster than light travel or sensible gun laws.

    But after doing inbox zero for a few years, I’m here to tell you that the dream can be had! Inbox Zero is achievable if you remain focused and disciplined.

    What is Inbox Zero?

    Inbox Zero is an email management strategy dedicated to keeping your mailbox from reaching the levels of insanity where you simply give up on any hope of actually managing it. In your despair, the unread message badge sits on your mailbox as a scarlet letter, informing those around you that you’re as disorganized as you feel. The goal of inbox zero is to get your mailbox to empty at the end of every day.

    That sounds like a heavy lift, but the secret to inbox zero is that you don’t actually have to respond to every email in the same day. It’s about processing your mail down to zero every day.

    The thing about an overflowing inbox is that you never know what might be lurking inside those 1352 messages that you have as unread. It might be an important ask from a senior leader. It might be a change to your kid’s violin schedule. It could be a reminder that your car registration is set to expire. The uncertainty of what’s buried in those messages causes many of us a lot of subconscious stress. A feeling of being out of control begins to invade our psyche and we can never fully relax.

    The goal of inbox zero is to reduce that stress not by responding to all of your email at once but by getting an understanding of what’s in your mailbox so that you can make a conscious decision about what to do with it.

    The nature of email

    When you think about emails that you receive, they really boil down into one of four categories.

    • Something you need to do
    • Something you need to know
    • Something you need to have
    • Garbage

    The “something you need to do” category is probably the one we’re all the most familiar with. Knowledge workers get many of their tasks via email, whether it be an assignment from your direct manager or just the need to respond to the email because a question has been raised that you have the expertise to handle.

    Something you need to know are those informational emails that sometimes turn into things you have to do. It might be a heads up that a particular meeting is occurring, a policy is changing, your kid has a change in soccer practice, etc. You don’t always have to do something in response to this knowledge sharing but there’s often a time constraint to it, which makes processing it in a timely fashion pretty important.

    Something you need to have is really a riff on something you need to know. It’s the transmission of some data you need to have access to in the future. Think of spreadsheets, concert tickets, receipts etc. It’s important that you consider the likelihood of needing to recall this data later. The emailed receipt from your coffee visit probably doesn’t have much value, but the receipt from a shipping order could be useful up until you receive the item. It’s important to be critical about how you evaluate these types of emails or else everything can fall into the category of “something you need to have” and you become the digital equivalent of a hoarder.

    The last category, garbage is pretty self-explanatory. Junk mail, chain letters from Aunt Isabelle, the 500 donation requests from your local political party etc. If it doesn’t fall into one of the categories I listed earlier, then chances are it’s junk.

    Processing Email

    As I mentioned before the trick to inbox zero is processing all of your email. By processing your mail and getting an understanding of what’s in your inbox, you can achieve some level of peace, because at the very least you know there’s not a time bomb waiting for you deep in your unread count.

    When you process your email, identify what type of email it is. If it’s something you need to do, ask yourself if you can accomplish the ask in a short amount of time. My personal limit is 5 minutes or less. Many people use 2 minutes or less as their limit. Whatever limit works for you, set it and take care of all messages that meet that criteria, whether it be performing a task or just responding to the email. If you can’t finish the task within your time limit, move the email to a “To-do” system or folder. I personally love the Getting Things Done methodology and have been using it myself for over a decade now. But no matter what your system is, the key is to move it out of your “Inbox” and somewhere dedicated to work that needs to be done. It might just be a separate folder in your mailbox or a more sophisticated solution like OmniFocus or Todoist. The key is to make sure it’s out of your inbox!

    For things that are “something you need to know” or “something you need to have”, the same rule applies. Get it out of your inbox into something that’s more specifically for those types of things. I personally use DevonThink as a document storage manager. Anything I need to keep or store I put in DevonThink with a set of tags that’ll help me to retrieve it later. But you don’t need anything as robust as DevonThink. You can come up with a standard folder system in your mailbox or on your computer’s filesystem. If you intend to store files or mail on your filesystem, I recommend using a cloud storage option like Dropbox or iCloud Drive to make sure that you have access to your files on all of your devices. (If you’re interested in how I file documents, drop me a note and I’ll write a blog post on it) But again, the theme is to get it out of your inbox! Just the act of handling the message will give you the context necessary to decide if you need to deal with it immediately or not. You might process a note and realize that “I need to deal with this right now and then I can just delete the mail.” Or you might end up converting that “need to know” into “something to do” and transferring it to your to-do list. But if it sits in your inbox, flagged as unread, it will gnaw at your psyche and slowly drive you insane.

    When it comes to garbage mail, I say that you need to be as ruthless as possible. Flag messages as junk so your mail client can learn what’s valuable and what’s not. Unsubscribe from newsletters that you don’t read with a passion. Opt-out of marketing emails that you inevitably get subscribed to when you make a purchase. Lastly, create email rules for those particularly stubborn mail senders that will route those mails directly to the trash bin when all else fails. You’d be amazed how much noise you can cut out when you’re diligent about keeping junk mail from hitting your inbox. You’ll never get all of it, but even a 30% reduction will have a noticeable impact.

    When to process email

    Another trap that many of us fall into is keeping our email client open all day. Don’t do it! I try to limit email processing to 3 times per day. In the morning when I start the day, in the afternoon after lunch and one final time for the end of the day. All other times, I try to keep my mail client closed. There’s one caveat to this approach though. If you use Outlook as your mail client, you might run into an issue where your calendar application and your mail application is one and the same. Closing out your email could also mean locking yourself out of calendar reminders, which is a deal breaker. It’s for this reason that I personally migrated to using the standard Apple Mail app and Busy Cal for email and calendar management. By having two separate clients, it’s easy for me to divorce these two tasks. If you’re stuck in Outlook, you might want to consider changing your fetch frequency to something longer. I avoided this approach, so your mileage may vary.

    Keeping your mailbox open is a distraction as the notification bell continuously pulls your focus away from what you’re doing and sucks you into the drama of the mailbox.

    Wrap-up

    Inbox Zero may sound like a fantasy but I assure you it’s possible. When you decide to give inbox zero a shot, I recommend that you plan to spend an entire evening focused on processing your inbox. (Depending on how many emails you have to go through of course) Getting out of mailbox debt will be more time consuming than you might imagine, but it’s energy and effort well spent. If you have an overwhelming amount of email and you can’t fathom processing it all, there’s always the option of email bankruptcy where you concede to your mailbox, declare to folks that you won’t be responding to anything sent prior to this moment and you do a massive delete on all the mail in your mailbox. It’s a gutsy move but sometimes it’s necessary. But whether you get there through processing your inbox or declaring email bankruptcy, achieving inbox zero will give you the joy necessary to keep up with it.

    Good luck!