Jonathan's Blog
name

Jonathan's Blog

Mindful Leadership and Technology


Featured

IPv4 Address Price

IPv4 Address Price - Single Static IP - October 12, 2021

Posted on .

Here are the spot prices today for single static IP addresses (based on a 30 day month):

October 12, 2021

Azure: https://azure.microsoft.com/en-us/pricing/calculator/#
Google: https://cloud.google.com/compute/pricing#ipaddress
Amazon: https://aws.amazon.com/ec2/pricing/on-demand/

Azure - East US

Basic: $2.59/month
Basic ARM: $2.59/month
Standard ARM: $3.60/month

Google - Iowa

In Use (Standard VM):$2.88/month
In Use (Preemptible VM):$1.44/month
Not in Use:$7.20/month

Amazon - US East N. Virginia

First IP while In Use: $0/month
First Not Running or Additional: $3.60/month

Price remains pretty constant so there does not seem to be any demand issues influencing the price of IP addresses. In fact, Azure price seems to have moved down slightly, over and above my mistake in using Azure's default 730 hour month calculation last time (there are no months with 730 hours in them, that I know of).

Perhaps this is the new, metric February we've been hearing so much about. :)

I think it is time to seriously look at the issues with security and factor that into the equation. Will be creating a blog post on this topic in the coming weeks.

Featured

Leadership Mindfulness Great Resignation

As a Leader, Celebrate Every Departure

Posted on .

Once someone has made up their mind to leave for a new job - once it's final and there is no convincing them otherwise - it is time to celebrate.

Yes, every time.

People leave jobs all the time. It is one of the great things about the USA: our freedom to take our talents where we like for the best or most benefit. And that system works best when people feel confident and mobile in their careers.

This doesn't make it any less painful for the company that loses an employee. Often, this is very inconvenient and can feel scary.

Of course, if you are working hard to build trust you will get the opportunity with some people to intervene early, but even then, things are going to happen, people will be headhunted, and you will have instances of the grass looking greener. People will leave.

When they do it is time to celebrate their accomplishments, both individual and team based, and to wish them well. Not just on the surface, not just as lip service, but also honestly and with the joy of seeing people succeed and move on.

My path to this realization has been long. It isn't that I wished people ill or got angry. I always tried to be supportive, but inside I was often full of fear - this person was key to an account or integral to a project, how will we succeed without them.

But really, what else can be done? Holding on to resentment isn't helpful. They're going to leave anyway. This is a thing to celebrate and I believe that regardless of the circumstances celebrating is appropriate.

It was a sales manager that I worked with that really made me see this. He finally had to say to me, "You're hanging on every person who leaves with a lot of stress. What if you celebrated all of them instead? We should be happy that they have grown and can be successful. We need to let them go."

It went against a lot of years of fighting to keep everyone all the time, but I came around. Here are my reasons why:

  1. Show your employees that you care about their long term success. By celebrating each person who leaves you show them, publicly, that you don't harbor any hard feelings toward someone.
  2. Make it easy for people to come back - when someone goes and you celebrate you build up good feelings that make them think of you when they are looking again (it may be sooner than they think).
  3. Build team resilience - if the team sees that you are celebrating the departure because it is a natural part of life, they will move more easily through the change making them and the company more resilient. Being in resistance to the change will not make it easier and it won't stop it from happening.
  4. Move more freely to the solution - once you stop resisting that it is happening you can think about what to do in the short term and long term.

This is challenging. As I've written in the past, you can't expect everyone to move as quickly in their response to change as you can. As a leader you're likely more adaptable and more experienced with change.

This is especially true when people are leaving. Be sure to include time in your celebration for the sadness people feel - let the celebration be part of the process of moving on. But don't let the sadness overwhelm or define the event.

In this case, you may need to push yourself as a leader and a manager - maybe you need to move through the curve even a little faster than you're comfortable with. Use it as an opportunity to grow. Say goodbye and stay in touch with people, they may have opportunities for you in the future.

Build the best work place you can, build culture, work to retain people, work extra hard for the superstars. Do all that. But eventually some will go. Take a deep breath, you did everything you could, time to celebrate as they move on to the next adventure.

Featured

Infrastructure that can Never be Down - The Password Manager

Posted on .

Our password manager (a well-known SaaS product) is down this morning. This is a problem.

Featured

Assuming Positive Intent

Posted on .

I've written a decent amount over time about assuming positive intent. Whether it is employee recognition or finding ways to include gratitude - I think that this these types of tools are very important to battle our inherent bias toward negativity.

I recently received this article in an email from Trello. It is a good read, and I recommend it. They use a modified form of Hanlon's razor to seek out a more nuanced vision for why people do things. To quote them:

Never attribute to malice or stupidity that which can be explained by moderately rational individuals following incentives in a complex system of interactions.

This really works for me, though I prefer the much simpler maxim from an old boss of mine:

Assume positive intent

I think that it can be very hard to assume positive intent. It may be easier (in fact it may only be possible) to use the version that they came up with. I don't have to extend myself (though I do have to do work) to think about moderately rational individuals following incentives.

I believe you do have to extend yourself a little bit to assume positive intent. By which I mean, I have a desire to see my own motives in a positive light and I have to extend this to others and see me in them (and them in me) in order to assume positive intent.

Let's be straight though, it's hard sometimes. So I appreciate having a fallback position. When I can't see positive intent, I can look for moderately rational individual following incentives. And this much better than some of the alternatives that we sometimes come up with.

Featured

IPv4 Address Price

IPv4 Address Price - Single Static IP - April. 20, 2021

Posted on .

Just because I still think about it sometimes, here are the spot prices today for single static IP addresses (based on a 30 day month):

April 22, 2021

Azure: https://azure.microsoft.com/en-us/pricing/calculator/#
Google: https://cloud.google.com/compute/pricing#ipaddress
Amazon: https://aws.amazon.com/ec2/pricing/on-demand/

Azure - East US

Basic: $2.59/month
Basic ARM: $2.59/month
Standard ARM: $4.38/month

Google - Iowa

In Use (Standard VM):$2.88/month
In Use (Preemptible VM):$1.44/month
Not in Use:$7.20/month

Amazon - US West N. California

First, In Use: $0/month
Not Running/Additional: $3.60/month

That's it. Not a lot of price movement in the last 18 months. Azure has tweaked their Standard ARM up a little, but has removed it's penalties for additional IP addresses above 5 in other categories.

Google now allows you to select by region, but the region prices are the same.

Featured

Firebase Software Development Positive Behavioral Metrics

Firebase Errors for Humans - aka Best Error Ever

Posted on .

I'm working on a system for positive behavioral recognition and metrics using Firebase and React. This is a hobby/side project that I work on usually on nights and weekends.

This weekend I had an issue with Firestore (the newer of the two data solutions inside the Firebase product). I was querying on multiple data attributes in a collection. This is not allowed in Firestore, unless you have created an index that includes those two attributes.

I had no such index, so I got this error:

Does that say, "You can create it here:" ?

Yes, the short answer is that that link says, "You can create it here." And you can click on it and it takes you to the page where you can build the index.

AND...

And it has pre-populated the index for you with the two fields that you need so that you can click, "OK". And the index builds, just like you need it:

OK, thanks, that was easy.

This is really pretty amazing and I have never seen an error like this.

Often, errors are very generic and it takes time to search through forums trying to find someone with the same error who is actually having the same problem as you.

I have seen a number of errors in React that offer suggestions as to where your bug is and they are often correct. This is very helpful and a huge improvement.

The Firestore error takes that level of customer service to a new level: here's your problem, here's how to fix it, and here's a link that will basically fix it for you.

I would very much like to see more of this.


What has happened here is that someone at Google (Firebase is a Google product) has applied the ideas of user experience to the error handling in their product. Developers are the users of the error system, so thank you for that!

Firebase is a web-based product, so there is no reason why it can't know enough to point you in the right direction.

If you are in software development, though, you can appreciate that this is a high bar to jump over:

  1. Someone had to think of this early on, so that it could be woven into the product.
  2. Leadership had to include time and budget to implement it.
  3. Their UX had to be consistent enough to allow it.
  4. The error system handling system had to be built smart enough to make it all work.

All of this to say - a lot had to happen technically, organizationally, and culturally to make this happen.

When you think about the amount of time that often goes into error handling and management, it makes this all the more amazing.


Developers ARE the users of your error system, your API, your toolkits, and your documentation. Doing things like this makes your tool attractive to developers, managers, and business decision makers.

Why managers and business decision makers? Because it makes good developers better and faster, and it makes new developers far more productive than they would be if you didn't have it.

New developers spend a lot of time searching for answers online and asking more senior team members for help. Imagine a world where the platform itself can answer your questions and guide you through solving the problem.

Kudos to Firebase/Google on an amazing innovation.