Who Designs Successful Products?

Morgennebel Picture

This quote from Mark Sigal’s Ruminations on the legacy of Steve Jobs was interesting,

If this seems intuitive, and it should be, consider the modus operandi that preceded it. Before Apple, the hard truth was that the “inmates ran the asylum,” in that products were typically designed by engineers to satisfy their own needs, as opposed to those of the actual consumers of the products.

Moreover, products were designed and marketed according to their “speeds and feeds,” checklists of attributes over well-chiseled, highly-crafted outcomes. And it didn’t really matter if at each step along the value chain the consumer was disrespected and disregarded.

Is this why “the year of the Linux desktop” hasn’t arrived or why after several year of running Linux, I’ve gravitated  towards Apple products (MacBook and iPad) for consumer use–outside of work?

To suggest that engineer led products haven’t turned out well is too broad of a generalization.  This quote could also possibly be misconstrued to say that notion of Open Source folks “scratching their own itch” is misguided and cannot create something great.  The Linux kernel itself refutes that notion, though it is interesting that Linux’s greatest success seems to be at the enterprise infrastructure level and not in the consumer mass-market.

Image by Alexander Stielauvia flickr used under a Creative Commons license.

Running the Latest Thunderbird on RHEL 6

Column picture by Tonton Jaja

Today I ran into a strange problem where messages seemed to be missing from my Inbox. Running “repair folder” from the properties tab automatically moved several messages to the trash. Moving them back to the inbox and repeating the process resulted in the same behavior. I thought maybe it was time to move on from the default version in RHEL 6, presently thunderbird-3.1.15-1.el6_x86_64, and live more on the edge.

I’ve also been using the same Thunderbird settings directory for two or three years so there was also the chance of some cruft build-up there as well.  What better way to rule out all possible issues than to run the latest version of Thunderbird with a fresh profile?

A simple way to do this is to rename ~/.thunderbird. If you change your mind or want it back, it’s simply a matter of closing Thunderbird, changing the name of the directory back, and running Thunderbird again. I believe there is also a way to this with the profile manager, but I like this way best.

I ran into one small problem due to my machine being 64bit and the regular Thunderbird Linux download being 32bit.  The solution was in this helpful forum post.

RhEL 6 Thunderbird Installation Steps

1) Download the latest stable Thunderbird version.

Updated October 27, 2011:  Thanks to the comment from Matej, pre-built 64bit packages are available, I’m not just not sure how regular folks like me would know to find them.  Back track on the link if you want a different language.

2) Un-tar the file that you download.  For simplicity I prefer to put it in my home directory.  With this approach it will not be accessible to other users, however it will not conflict with the existing installed RHEL rpm version.

$ cd Downloads
$ tar -xvf thunderbird-7.0.1.tar.bz2 -C /home/myuser

3) If you are running 64bit RHEL, you may encounter this error message:

thunderbird-bin: error while loading shared libraries: libdbus-glib-1.so.2: cannot open shared object file: No such file or directory

Installing the dbus-glib.i686 package provides the library you need:

$ su -c 'yum install dbus-glib.i686'

4) Run the new version of Thunderbird

$ cd /home/myuser/thunderbird
$ ./thunderbird

5) If you want to modify the launcher to run this version instead of the default installed RHEL version, right click on the launcher icon, select properties, and change the path to point at the Thunderbird binary in your home directory.  Something like: /home/myuser/thunderbird/thunderbird

Nostalgy is the most important add-on

The Nostalgy add-on is the primary reason I can’t bring myself to change email clients.  The ability to file messages with ease into any folder with one or two key strokes is something I cannot live without.  Don’t miss “shift + s” to save a message to the last folder you saved to.

Benefits of the latest version

  • Once you set the column view you like you can apply it recursively to all your folders. This was a huge pain in the past where columns had to be set manually for each folder.
  • Newer themes work and are compatible
  • Everything feels polished, newer and faster

Use at your own risk

The downside of running Thunderbird this way is that you aren’t running the officially supported version provided by Red Hat and you are relying on Mozilla to provide the latest version to you.  This should happen automatically via Thunderbird’s built-in updating service.  Preferences for automatic updates can be changed in the “Advanced” tab.  Naturally the packages built and provided by Fedora and RHEL have this feature disabled.

I’m currently running the latest version of Firefox the same way and have not encountered any issues.

Image by Tonton Jaja used under a Creative Commons license.

Resuming Corrupted Suspended Guests

virt-manager screen shot

My recent post on fixing terminator was months in the making, partly because I lost the environment I was using to double-check all the steps and partly because other things just kept coming up.  Several months back when I found the original fix it was only available as a patch in bugzilla.  I’d constructed a whole article about how to get the patch, update the spec file, build a new rpm, etc. but in the midst of this I lost the virtual machine I was using twice to a suspend that would not resume.  I also ran into some problems using yum-downloader to get the source rpm I could not reliably reproduce or document.

Time went by and an updated source rpm was available to fix vte so it seemed silly to document all the tedious steps to patch the spec file and rebuild when that work was already done, but then I was thwarted again when I rebooted my laptop and forgot I had a guest running.

It was a frustrating situation from the virt-manager GUI and the command line–my only options were resume (which didn’t work because of the error message below) and shut-down (which did the opposite of what I wanted the virtual machine to do).

On Google I found scant references to this situation so I turned to a company-wide mailing list at work where anyone can post technical questions.  I had the solution in 30 minutes!

This was the cryptic error message I received in virt-manager when trying to resume the guest:

Error restoring domain: Unable to read from monitor: Connection reset by peer
Traceback (most recent call last):
File "/usr/share/virt-manager/virtManager/asyncjob.py", line 44, in cb_wrapper
callback(asyncjob, *args, **kwargs)
File "/usr/share/virt-manager/virtManager/asyncjob.py", line 65, in tmpcb
callback(*args, **kwargs)
File "/usr/share/virt-manager/virtManager/domain.py", line 1050, in startup
self._backend.create()
File "/usr/lib64/python2.6/site-packages/libvirt.py", line 510, in create
if ret == -1: raise libvirtError ('virDomainCreate() failed', dom=self)
libvirtError: Unable to read from monitor: Connection reset by peer

The error message made no sense to me--I can’t resume the domain because the monitor cannot be read?  How about, “Unable to resume domain.  If this persists try ‘virsh mangedsave-remove’ from a command line to remove the suspended session and reboot your machine.” Including the word “suspend” in the command instead of “managedsave” would also be more intuitive.

Here is the command to remove a corrupted suspended virtual machine session so you can boot your machine again–naturally you’ll lose the suspended session you had:

$ su -c 'virsh managedsave-remove <domain name>'

I’ve also confirmed on RHEL 6.2 (beta) that rebooting the hypervisor with a running guests, smoothly suspends and resumes them again when the hypervisor returns.

Bringing the Cursor Back to Terminator

Terminator Screenshot Picture

In my switch from Fedora to Red Hat Enterprise Linux (RHEL) one of the things I lost was Terminator.  Even though it was in EPEL and installed without issue, the cursor wasn’t visible, making it hard to use.  For a while I put up with it.  After a while it drove me crazy so I fell back to Gnome Terminal.  And that was fine for a while until I started doing more command line things again and missed a working in Terminator so badly that I asked Google how to fix it.

It’s a bug in VTE

Wouldn’t you know, other people had the same problem as noted in bug 658774.   It turns out the problem is not with Terminator, but in the VTE package.

I’ve seen the problem on RHEL 6.0 and 6.1 and it looks to be fixed in RHEL 6.2.  It is presently available in the RHEL 6 Fastrack channel (if you have a RHEL subscription) as an update (login required to view).  I’d assume, but haven’t verified, that the same problem exists on CentOS 6.

If you are running CentOS and have the same problem or if you’d like to build a fixed package on RHEL yourself, here’s how.

Building a new VTE package with the fix

To build a new rpm with the fix you’ll need:

  • a non-privileged rpm build environment
  • the updated source rpm for VTE
  • required build tools and libraries

Set up a non-privileged rpm build environment

If you don’t have a local rpm build environment specified, these commands will create it for you in your home directory.  There are several ways to do this, I found this somewhere long ago (maybe it was an RHCE class?) and like it because it is simple. You should always build the rpms as a non-privileged user–not as root.

$ mkdir -p ~/rpmbuild/{BUILD,RPMS,S{OURCE,PEC,RPM}S}
$ echo "%_topdir $HOME/rpmbuild" > ~/.rpmmacros

Get the latest vte source rpm

$ wget http://ftp.redhat.com/pub/redhat/linux/enterprise/6Workstation/en/os/SRPMS/vte-0.25.1-7.el6.src.rpm

Install the tools and libraries you need to build

$ su -c 'yum install rpm-build yum-utils gcc'
$ su -c 'yum-builddep ./vte-0.25.1-7.el6.src.rpm'

Build the new package

$ rpmbuild --rebuild ./vte-0.25.1-7.el6.src.rpm

Install your new vte rpm from ~/rpmbuild/RPMS

$ su -c 'yum localinstall /home/nopriv/rpmbuild/RPMS/x86_64/vte-0.25.1-7.el6.x86_64.rpm'

Run Terminator and you should be back in business.

Part of Me is Leaving Fedora Planet

flussnebel picture

It seems like the right time to make this move.  I am not involved in Fedora to the extent I used to be so I’m removing my full blog feed from Fedora Planet. I like all the traffic Fedora Planet provides and yet it doesn’t seem fair since most of my posts are not Fedora focused any more.

I will keep syndicating some content to Fedora Planet, mostly along the lines of anything related to “open source software”–broad enough to capture Red Hat Enterprise Linux, Fedora, open sources communities, etc.

If you want to continue to see everything I post be sure to subscribe to my main feed in your RSS reader.  If you’d like email updates instead, sign-up in the upper right hand corner at JohnPoelstra.com.

Image by Alexander Stielauvia flickr used under a Creative Commons license.

Five Recent Resonations

Alte Süderelbbrücke Harburg Picture

Who’s on Your Fridge by Peter Bregman

In fact, we seem to rarely miss an opportunity to be disappointed. We focus on what people are doing wrong, on their weaknesses and shortcomings. We gossip and complain. We get frustrated and passive aggressive. We find ourselves constantly surprised by the flaws of our colleagues: How could he/she/they do that?

What if, instead — or at least in addition — we chose not to miss an opportunity to be inspired? If we gossiped about things people did that energized us without fixating on the things that disappointed us? If we looked for sparks that ignited our enthusiasm and incited our goodwill? And if we allowed those sparks to light our fires of passion?

Yes, what if?

An Unforgettable Act of Kindness by Tess Marshall–It’s easy for me to come up with reasons why it isn’t my place to help or get involved.  It’s that fear of doing it wrong or looking silly–vulnerability.  I want to change that.

John Mayer 2011 Clinic – “Manage the Temptation to Publish Yourself” by Erice at Berklee Blogs quoting John Mayer

Anybody who tells you to have a fall back plan are people who had a fallback plan, didn’t follow their dreams, and don’t want you to either.

I like the guts behind this thought.   Context also matters.

The Truth About Shipping by Seth Godin

The paradox of our time is that the instincts that kept us safe in the day of the saber tooth tiger and General Motors are precisely the instincts that will turn us into road kill in a faster than fast internet-fueled era.

I’m more and more convinced that companies that do not adopt more agile methods of product development, with more frequent, iterative releases, will be left behind.

Discipline is an illusion; Motivate yourself instead by Leo Babauta

If you think you don’t have discipline, you don’t need it. What you need is to commit to your goal or habit and fully motivate yourself.

I like the thought that discipline isn’t a brute force technique to success.  It’s more about finding small ways to set yourself up for success.  Most forced things don’t turn out very well anyway.

Five Recent Resonations is a periodic post with five pieces of media that resonated with me.

Image by Alexander Stielauvia flickr used under a Creative Commons license.

OpenShift Express Servname not supported for ai_socktype

I came across an interesting situation yesterday with OpenShift Express.  I was trying to register a new domain using rhc-create-app  and received this cryptic error message:

There was a problem communicating with the server.
Response message: getaddrinfo: Servname not supported for ai_socktype
If you were disconnected it is possible the operation finished withoutbeing able to report success.
You can use rhc-user-info and rhc-ctl-app to learn about the statusof your user and application(s).

After a bit of rooting around and troubleshooting with the always helpful people on #openshift on irc.freenode.net, in this case Mike McGrath, we discovered that I had an http proxy set in my shell variables. One way to troubleshoot this error message is to review all the variables set in your session and look for something like this:

$ export | grep -E 'prox|http'

And look what we found:

declare -x HTTP_PROXY="http://localhost:8080/"
declare -x http_proxy="http://localhost:8080/"
declare -x no_proxy="localhost,127.0.0.0/8"

I’m told the rhc tools have difficulty communicating over a proxy, but that a bug has been filed and is scheduled to be fixed.

This appears to be symptomatic of the way that switching web proxies with the ProxySwitchy! plug-in in google-chrome affects all desktop proxy settings.  A quick look at System → Preferences → Network Proxy shows that this setting has been made at a global level for the Gnome Desktop which I know I did not do.  I’m running RHEL 6.1.

Also interesting that this problem is limited to gnome-terminal.  Terminator does not import the global proxy variables the same way gnome-terminal does and in this case that is good.

It seems the best work-around if you not need a web proxy is to unset the http proxy variables or use Terminator.

10 Reasons I Don’t Follow You on Twitter

Maschen at night

I’m not a huge twitter user, though I have found it to be an interesting and useful medium.  I don’t automatically follow everyone that follows me and in general I don’t follow back if:

  1. You’ve never tweeted anything or you haven’t tweeted anything in the last 6 months.
  2. You have very few followers.
  3. You use a robo-tweeter that appears to auto-post quotes and other random stuff multiple times a day, usually every hour, every single day of the week.
  4. Your tweet stream is mostly about you, promoting your product or referencing your latest blog post.
  5. You mostly tweet about things about your industry that I don’t follow or am not interested in.
  6. Your tweet stream contains no re-tweets or interesting links to other people’s content.
  7. Your tweet stream feels like a one-way conversation.
  8. Your twitter stream is mostly shout-outs and multiple tweets to everyone you know or that has recently mentioned your name.
  9. You don’t have a picture
  10. Your profile summary is empty

Of course, these are not hard and fast rules for me and isn’t to say that if you are doing these things you are doing it wrong.

Image by Alexander Stielauvia flickr used under a Creative Commons license.

Throw Me Over A Waterfall

Where Good Ideas Come From by Steven Johnson

I’ve been skimming Where Good Ideas Come From: The Natural History of Innovation by Steven Johnson.  It’s fairly dense reading so I’ve been skimming through to sections that catch my interest.

This section about innovative environments from page 148 was striking:

Innovative environments thrive on useful mistakes, and suffer when the demands of quality control overwhelm them.  Big organizations like to follow perfectionist regimes like Six Sigma and Total Quality Management, entire systems devoted to eliminating error from the conference room or the assembly line, but it’s no accident that one of the mantras of the Web startup world is fail faster.  It’s not that mistakes are the goal–they’re still mistakes after all, which is why you want to get through them quickly.  But those mistakes are an inevitable step on the path to true innovation.

This reminds me why I’m totally loving working on OpenShift–the rapid development model and the explicit desire to innovate.  This is contrasted by other projects I’m close to that are either waterfall or attempting to be a combination of agile and waterfall.  My initial impression is that tying to do both is actually worse than picking one or the other.

Recently I’ve begun to wonder if the waterfall method of development is more about managing fear and the illusion that “if you have a detailed plan you will have a corresponding level of success.”  This isn’t to say I didn’t once believe this.  I’ve been through enough projects now to realize that detailed plans are only good for the short term and that something unexpected usually happens requiring you to adjust.

Honestly–the last project you worked on, that one with the “One to Three Year Roadmap”–how much of it came true?  Chances are, the project got canceled, re-directed, or turned into something else after nine months.  All that time planning and predicting the future–was it really worth the time invested?

Detailed project plans and requirement documents are often obsoleted a month or two after they are created–because once you get into the implementation details or you actually release something, you learn something you didn’t know before.  And based on that information, the smartest thing to do is make adjustments. If you’ve planned with a high degree of complexity, making those adjustments is painful.

This is the benefit I’m seeing with agile development–take the weeks and months you would normally spend planning and writing fancy Product Requirement Documents (PRDs) and Marketing Requirement Documents (MRDs), having meetings, and getting feedback from the whole world, and use that time writing some high level requirements and user stories.

Then, start your first sprint, before you are ready, even if the first few sprints are a complete failure.  At least you will have gotten that part over with.  And then, most importantly, ship or release what you’ve created, after each sprint, to a larger audience so they can start using it and give you feedback.

I’m sure there is still a place for waterfall approaches–things like tactical operations or situations where you only have one chance to succeed.  Maybe there are places you can iterate on airplane design and yet the outcome of crashing a plane is much different than a sprint that “crashed and burned.”  Context is important.  Here I’m mostly thinking about online product offerings and web properties, though I think there are probably wider applications.

The book links above are affiliate links to Amazon.

Project Management Tip of the Day

tickets

Riffing on a theme from Rework… I believe the project management structure and process framework of team should be a little less than “just enough.”  Anything more wastes people’s time and becomes more about the process than shipping (thank you Seth). Even though it was frustrating at times, Fedora taught me this lesson well.

There is little joy or satisfaction experienced on projects with oversight that amounts to executing the equivalent of the Space Shuttle’s pre-launch checklist on a toy airplane flight.

Image by keeping it real via flickr used under a Creative Commons license.