Check your project for name collisions

In my article about NPM’s Kik fiasco last week, a commenter lead me to realize I left out an important point. The developer of the original Kik NPM module said he wasn’t aware of the messaging platform of the same name. That’s a shame, because the whole kerfuffle could have been avoided if he had done some cursory searching first.

In the era of startups that seem to be named after Scrabble trays, even if you’ve made up a name, there’s a decent chance someone already made it up. That doesn’t mean you can’t use it, but the context matters.

Avoiding collisions is important for two reasons: branding and legal. The branding consideration is less context-dependent, but is all about how users find and distinguish your project. When Opscode, the company behind the Chef configuration management tool, changed their name to Chef, it made searching for errors and documentation harder. “Opscode chef knife” had much more relevant search results than “chef knife”.

The legal issue is and is not context-dependent. It is in the sense that actually violating a trademark requires some likelihood that the public would be confused. For example, Payless Shoes and the PayLess grocery chain can coexist with a minimum of confusion. However, no actual infringement is required in order to threaten someone with a lawsuit. Most open source projects don’t have the resources to fight a lawsuit, so the natural reaction is to give in, even if the claim is baseless.

So what should you check for? A recent article has some suggestions. In addition, I’d look for collisions on social media platforms, especially if your project is related to that platform. Also consider how the name might be made into a logo. You don’t need one right away in many cases, but when it gets huge, you may want it.

Bio-IT World recap

Last week I was in Boston for the annual Bio-IT World Conference and Expo. I spent most of the conference working the company booth. It was a lot of fun talking to people about what our software does. Even the conversations that won’t lead to a sale were interesting because I got to learn more about what other people are doing. Of course, there were some people who lit up when I gave a demo (and let’s be honest, it’s probably not just my charming personality).

My role wasn’t just limited to booth duty, though. On Thursday morning, I chaired a session in the cloud track. I was a little nervous chairing a session at a conference I’ve never attended in a domain that I know next-to-nothing about. Fortunately, it went very well. Perhaps too well, as we got so far ahead of schedule that we had to ad lib 10 minutes of Q&A before the last presentation. But it worked well enough, and the talks were really interesting.

When I was introduced ahead of the conference to the presenters, I asked all of them for guidance on how to pronounce their names in addition to the bio that the conference organizers asked them to send. The next time I chair a conference session, I’m also going to ask for a few questions in case there are none from the audience. Sometimes, the pump just has to be primed a bit, and I’d rather ask a question that the presenter thinks is relevant than whatever I come up with while listening to the talk.


Submit your LISA16 proposal!

I am co-chairing the Invited Talks for this year’s LISA Conference, alongside Patrick Cable. I’ve attended LISA since 2010 (with the exception of 2014) and it’s a great conference for systems administrators and other operationally-minded tech folks. I’ve enjoyed many great talks over the years, and as a co-chair, it’s up to me to help make sure that trend continues.

So here’s where you come in: it’s time for you to submit a proposal. The Call for Participation is open through 11:59 PM PDT on Monday, April 25. You may think “I have nothing worth sharing,” but you may be wrong. Patrick and I are particularly interested in finding talks that address cross-cutting topics, talks from new attendees, and generally interesting talks.

Talks don’t have to be about the cutting edge of technology to be interesting. Some of the best-received talks last year weren’t even technical in nature. So much of the job is cultural: the culture of your team and the larger organization. Alice Goldfuss’s “Scalable Meatfrastructure” talk may have broken the record for the amount of praise on social media channels.

Tell us about a problem you had and how you solved it. Tell us about how you applied technology to improve life for your organization and users. Or propose a tutorial in order to share your deep knowledge.

Go out on a limb and propose a talk. If you get accepted, it’s a great way to attend the conference and expand your professional network. if you don’t get accepted, I promise it it’s okay (I’ve had several proposals to other conferences rejected). If you want some advice on how to make your proposal awesome, both Patrick and I are happy to talk to you.

I hope you’ll submit your proposed talk soon.

March articles

I ended up only writing one article for this month, but it turned out to be pretty popular, garnering well over 10,000 views. However, that’s nothing compared to the over one million views the whole site had in the month of March. The final total is roughly 200,000 more than the previous monthly record. I’d like to congratulate the editorial team, my fellow Community Moderators, and all of the other Red Hat & community contributors who have worked so hard to reach this milestone. I’m honored to be a part of such a great team.

Upgrading Windows in VirtualBox

For work, I have the occasional need to use Windows. I started out with a Windows XP virtual machine, and when that went end-of-life, I upgraded it to Windows 7. The “upgrade” process was really more of a reinstall-but-with-your-old data preserved. I had to reinstall many of the applications (including Python, though I didn’t realize it at the time).

I don’t pay much attention to the Windows ecosystem, but I had heard that a lot of unseen improvements took place in 7 and beyond which should make the upgrade process easier, so when it was time to upgrade because Windows 7 was (past, oops!) end-of-life, I wasn’t too worried.

Windows has a nice nag every time you log in saying “upgrade to Windows 10!” so I did. But it didn’t like the VirtualBox video driver. I tried reinstalling the Guest Additions, but that didn’t work. I tried uninstalling the driver, but Windows helpfully reinstalled it after a reboot. A forum post suggested I should enable 3D acceleration. Still no luck.

What eventually worked was to update to VirtualBox 5.0.12 (I had been on .10) and then install the latest Guest Additions. Instead of using the “upgrade me!” pestering, I had to download the Windows 10 media creation tool and use that to perform the upgrade.

Once I got those steps figured out, the upgrade process was pretty painless (if a little slow). Everything seemed to work fairly well, though I haven’t given it an in-depth trial yet. I do like the return to a more traditional UI, the tiles of Windows 8 work great on a phone, but I don’t like them on a desktop (and even worse on a server).

RIP Matt

Once again, I find myself saying goodbye to a friend. It feels like I should be a few decades away from this, but here we are. Matt McMillin and I had an interesting friendship. We lived in the same city for years, but we never met in person. I knew Matt through Twitter, where he was one of the most funny and friendly people I ever interacted with.

Matt was completely unafraid of being himself. His sincerity helped inspire me to move from tweeting as a public persona to tweeting as Ben Cotton. The most lasting memory may be how he was the pinnacle of risky clicks (you were compelled to click because sometimes the link wasn’t a penis). That’s not to say that Matt was a crude or vulgar person, but he had his own sense of humor.

Twitter is a lesser place without him.

In defense of 140 characters

Re/Code reported Tuesday on rumors that Twitter is planning to change its hallmark 140-character limit. It appears that there are no firm plans, but there are a variety of ways this could change. The rise of the smartphone has diminished the importance of being able to fit a tweet into a single SMS message (at least in developed Western countries).

I’ve certainly been frustrated by the limit  at times. There have been thoughts left untwote because I couldn’t find a way to squeeze them into 140 characters. But I’ve also learned how to make my thoughts more concise. The need to edit forces me to consider what I’m saying and reduces the rash responses that I often give people in my head.

Is 140 characters the magic number? Probably not, but the immediacy that tweets provide probably offsets value that longer tweets would add. At some point, Twitter becomes Tumblr, and there’s already a Tumblr.

The experts say Twitter is looking to improve user and revenue numbers. I’m probably wrong, but I don’t see these changes being all that beneficial to either of those. Curbing abusive behavior and making quality content easier to find would go a lot further.

In the meantime, I’ll keep taking up whatever space Twitter gives me and hope it’s not too much.

Actually, it’s about ethics in book reviews

Bruce Schneier shared a story earlier this month about how Amazon is apparently mining information to flag book reviews when the reviewer has a relationship with the author. I write book reviews (though I don’t post them to Amazon), so this seems relevant to my interests. I can see why Amazon would do something like this. People buy books, in part, based on reviews. If Amazon’s reviews are credible, people will be more likely to buy well-reviewed books. Plus: ethics!

The first few purchases would likely be unaffected until the buyer has a chance to form an evaluation of credibility. And even then, how much stock do people put into online reviews of any product or service? I tend to only look at reviews in aggregate, unless the specific reviewer has established credibility.

I hope that my occasional book reviews have established some sort of credibility with my ones of readers. I certainly try to make it clear when I might have a bias (e.g. disclosing stock ownership or a personal friendship). Mostly, though, I’m motivated to give accurate reviews in order to advance my own thought leadership. I’m very self-serving sometimes.

On the whole, I appreciate that Amazon is trying to keep reviews fully-disclosed. I just don’t think they’re doing it very well. If a reviewer has a relationship with the reviewee and it is properly disclosed, there’s no reason to suppress the review.

Full disclosure: I own a small number of shares in Amazon.

How I shot myself in the foot with pylint

I mentioned this in passing in a recent post, but I thought I deserved to make fun of myself more fully here. One of the things I’ve tried to do as I work on code I’ve inherited from predecessors is to clean it up a bit. I’m not a computer science expert, so by “clean up”, I mostly mean style issues as opposed to improving the data structures or anything truly useful like that.

Most of the development I do is on Python code that gets compiled into Windows executables and run as an actuarial workflow. I discovered early on in the process that if I’m working on code that runs toward the end of the workflow, having to wait 20 minutes just to find out that I made some dumb syntax or variable name error is really annoying. I got in the habit of running pylint before I compiled to help catch at least some of the more obvious problems.

Over time, I decided to start taking action on some of the pylint output. Recently, I declared war on variables named “str”. Since str() is a Python function, pylint rightly complained about it. Since the method that used “str” did string replacement, I opted for the still-not-great-but-at-least-not-terrible “string”. I replaced all of the places “str” appeared as a variable and went about my business.

As I was testing some other changes, I noticed that some of my path replacement was failing (though I didn’t know that’s where it was at first). So I shoved a whole bunch of logger calls into the “prepare” script to see where exactly it was failing. Finally, I found it. Then I shoved more into the module where the failure happened. I had to work down through several method calls before I finally found it.

There was still one instance of “str” there, but now Python thought it was the str() builtin and got really confused. In hindsight, it should have been totally obvious that I had inflicted this pain on myself, but several days had passed and I had forgotten that I had messed around in that function. I should have consulted the revision history sooner.