Today I had the dubious distinction of accidentally starting a (minor) kerfluffle on Twitter. I love Twitter, and it can be a great way to communicate with friends and meet new people. However, the issues with lack of tone on the internet can oftentimes be magnified given the quick and concise nature of a tweet.
At the Esri Portland R&D Center, we use and love PostGIS, the spatial database extender for PostgreSQL. We’ve happily been using PostGIS 2.0.3 and PostgreSQL 9.2.
We were itching to upgrade to PostgreSQL 9.3 and PostGIS 2.1 in order to take advantage
of the speed improvements, performance improvements, bug fixes, etc. However, as the team worked through the upgrade
this past week, we ran into an issue. Some of our tests weren’t passing! Hat tip to my
teammates Kenichi Nakamura and Jerry Sievert for spending days tracking down a bug with
ST_Intersects() that snuck into PostGIS between 2.0.4 and 2.1. Jerry put together a great
repro and posted it to the PostGIS list.
The gist of the issue is that we were seeing that in some cases
ST_Intersects() was not
returning all the items that intersect – instead only the first intersection was
returned. Unfortunately, this was a pretty big deal for our application, and seems like
something that others would run in to as well.
After looking at our options, we decided that we could move forward with the PostgreSQL upgrade to 9.3 and compile PostGIS 2.0.4 from source, and avoid the bug.
We deploy our application on AWS, as many people are wont to do, and we had been eyeing Amazon RDS’s support of PostgreSQL and PostGIS with much anticipation. Now that we’d determined that the bug existed in PostGIS 2.1, we realized that the PostgreSQL Amazon RDS offering was shipping with this bug. A quick test confirmed that this was the case.
A couple of us in the office decided to tweet out the knowledge of this issue to let others know about the existence of this bug and that Amazon RDS was affected. The plan was to do a more detailed writeup of the bug and what that meant for people using Amazon RDS, as well as documenting our workaround, but we had to finish testing the PostgreSQL 9.3 / PostGIS 2.0.4 combo first. Maybe that should have been the first hint to hold off. Here’s my tweet:
In hindsight, it’s easier to see exactly where I went wrong. I believe I made three main blunders.
Used the word 'ugly'
The statement is not untrue, but words have power. To the people that spend a lot of their time, unpaid, to work on awesome projects like PostGIS, that can feel like I'm calling the entire project ugly. That wasn't very nice of me. I could have easily picked another word like 'tricky', 'subtle', or 'gnarly' that would have better expressed my feelings that the bug was something to pay attention to. Saving a few characters by using a short word isn't worth it when you might accidentally be hurting someone's feelings.
Didn't make it clear that the issue had already been filed
My wording made it seem like I was going to pull the classic jerk move of 'Blog first, ticket later'. In open source, that's just rude behavior, and as a team that works to provide open source tools for others, I should know better than that, and should have made it clear that the issue had already been brought up with the PostGIS list.
Didn't provide a link to said thread
Again, a lot of great information about the issue and the fact that people were already taking a look at the bug was already available within the discussion thread. I knew that the thread existed; I should have taken the time to provide that information up front.
Unsurprisingly, the fine folks at @postgis noticed my tweet, assumed the very things that my poor wording would lead them to assume, and kindly asked me to file an issue on the list.
I replied back with a link to the list. Oftentimes I’m a pretty direct and succinct person, and my reply was meant to simply be a sharing of info, not really realizing yet that my original tweet could be misinterpreted. Luckily for me a teammate called me out and let me know that the single link reply could be reasonably taken as rude. So I followed up with another tweet mentioning how happy I was to already be seeing a response from the PostGIS community, but stating again that I thought this was a big enough deal to warrant additional exposure.
At the same time, the amazing Paul Ramsey let me know that he was already taking a look at that issue!
Here is where I actually start being good at Twitter again, and immediately tweet my happiness. Later on I also retweet so that others that are following me can know that the PostGIS team is already working on a fix.
At this point I’m finally catching on that my tweet could perhaps have been written better.
My mission? Set the record straight, lighten the mood, and try and be at least a bit humble while I do it.
Looking back at my responses, I think I did a few things right, and I also can find some room to improve.
What I did right
Provide the right info
I think I did a good job of setting the record straight by stating that we did in fact ticket first, with a link to the thread. I also continued to spread the word that this issue was being actively looked at. This is about the time that I realized that retweeting Paul Ramsey could be informative to the rest of my followers.
I also outright expressed my own disappointment that I hadn’t been on the ball enough to link to the original discussion thread sooner. It’s never a bad idea to point out when you are learning from your own mistakes.
Emoji to the rescue
I love emoji. Since I’ve started using more emojis in my tweets (sometimes relevant, sometimes not) I feel like my tweets have reflected more directly my mood at the time. The internet can be a cold place. Emojis can help express via a single picture a wider context with which to read your tweet. Something that could have been read as terse suddenly becomes more playful with some stars, sparkles, flowers, animals, etc.
In what could have been an escalating series of replies as each side stays hostile, adding a few emojis to indicate that you are compassionate and better show your intentions can go a long way. In fact, I recently read a great article about how using emoji can help teams work more effectively.
What I could do better
Admit your mistakes
It can be hard to admit your mistakes for the entire world to see. Even right now, as I write up this list of areas where I’d like to improve, this venue seems a lot less scary to me than admitting it in real time on Twitter. On Twitter, I have a whole host of people who are going to see my admissions of guilt right in the middle of their timelines. People have to spend a bit of time looking for my blog. Also, this is kinda my first post. So no one is looking.
Be humble. Even more humble.
Toward the end I got a little bit of humbleness in there, but I probably could have done more. Perhaps I should have apologized directly to @postgis. Perhaps I could have explained the situation more.
I’m not necessarily the type of person to send of dozens of tweets to completely clarify my thoughts, when I can get most of the way there with one or two. It can be a tough thing to gauge, especially if the responses you are getting are themselves terse. Pride can be a hard thing to swallow, and it’s easy to convince yourself it won’t matter.
Tweets tell a story
It can be easy to forget that not everyone has the same timeline view in Twitter. It can be easy for someone to only see half of a story because they aren’t following some of the participants. Selectively using retweets and the . syntax before an @ reply can help provide all of your followers a broader view of what’s going on. I’m definitely still learning how to be effective in this manner while continuing to avoid being spammy.
All in all, this was a great learning experience for me, even if it felt stressful in the middle. I strongly dislike the feeling that I’m upsetting other people, or that I’ve made a mistake. Unfortunately, it is true that we can’t always be perfect.
On a medium like Twitter, it can be even harder to balance the real time nature of the conversation with the reflection needed to really understand a complete stranger’s mind set. Add in less time to write and edit your responses, and it is no surprise that sometimes conversations don’t go as smoothly as you’d like. Luckily, like everything else we get better with practice!
It can be very hard to correctly write a tweet that has even a tinge of a negative message. Even if the audience you are targeting will benefit from your words, it is easy to forget the audience that could be hurt by them.
In the end everything will be ok. Be good to people, and they will be good to you as well. Also, use more emoji.