Help Or Perfection

Each of us has our own idea of what is ideal for any given endeavor. That unique perspective also means involving others introduces the risk that the reality won’t exactly match our personal vision. As a recovering perfectionist I often feel getting help and achieving perfection are mutually exclusive. Yet my experience has also been that the results are often fruitful when I step aside and let others do what they do best.

Of course allowing someone with no experience or talent undertake a significant or fundamental part of a project, especially without any supervision, is unwise. Still, any undertaking involving others must find the balance between a learner-friendly environment and encouraging laziness or incompetence.

One key factor is the significance of the project itself. Imagine the construction of a nuclear power plant compared to a painting for a friend as a personal favor. If the power plant were not well constructed it could impact millions of lives for hundreds of years. If the artwork didn’t turn out well then it would only disappoint a friend. I find such comparisons help maintain a healthy perspective when it is tempting to stress over someone’s work.

Remembering my own past work is another tactic that helps overcome an unhealthy obsession with perfection. If I were still working and reworking those same early efforts then I’d never have left preschool. They also demonstrate how far each of us has progressed precisely because we were allowed to make mistakes.

Working alone for long periods is one contributing factor to perfectionism. When making something solely for oneself it can lead to an extreme where the work is never quite good enough.

Sometimes even the learning itself leads to an endless cycle of improvement. In such cases it is helpful to have another, unbiased perspective. Consider the friend who looks over your shoulder to say how good it looks or how great it’s working; despite the flaws that jump out at you. People experienced in mentoring are best for this, assuming they aren’t overly concerned with perfection.

Despite the freedom and independence working solo has brought me over the years perfection is actually closer the more I interact with other skilled professionals. We introverts may be a productive bunch, but there is still much to learn from the more social among us.

‘Easy’ Is Relative

When evaluating someone else’s work I often fall into thinking “it looks so easy”; especially when the concept is simple. Yet when embarking on actually doing something that seems easy myself I’ve found that most often it’s quite a bit more difficult. Occasionally the reverse is true: what appears very challenging turns out to be a breeze.

One deceptively simple example is partially automating pausing and resuming Pandora Radio with a keystroke. While purchasing the Pandora One player/service is a quick and inexpensive solution, I was interested in automating the user-interface myself. (There are also 3rd party clients with hot-keys, but they exclude the advertisements which are how I indirectly support Pandora’s free service.)

Image Search

My first attempt was a Sikuli script to find the Pandora tab in my browser, then the play or pause button, and finally click it. As I tried reusing it on other computers I noticed higher resolutions meant Sikuli needed more time to find the tab. And if the tab was off screen, because I had too many tabs open, then it also failed. Finally the Pandora icon didn’t always appear the same on different browsers and OS’s.

Pandora’s Keyboard Shortcuts

Next I tried using AutoIt to get the Pandora window more reliably. Thankfully Pandora’s player has keyboard shortcuts, so there was no more need for image recognition. Unfortunately I found that using ‘Alt’ in the pause-play shortcut meant that browsers like Internet Explorer thought they should open the file menu. Another problem is that the key Pandora chose (space-bar) is also the default to scroll down; therefore, when the player’s frame is not active my script would only scroll the page instead of resuming or pausing playback.

Blind Mouse

To workaround the space-bar problem I resorted to blindly clicking the mouse where the play/pause button resides. Alt was still opening the file menu, so the mouse position had to carefully aligned to work whether or not the menu was visible.

Since the process was blind I retrained myself to always leave the window at the top. (One could auto-press ‘Home’ to get the browser back to the top.) Even so, the clicking was too quick for the browser to redraw at times. This required adding a small delay before clicking to get the desired result.

Off-screen Trouble

Using virtual desktops meant Pandora wasn’t always on screen. SysInternals Desktops solution was especially troublesome because each desktop was so isolated software didn’t work across them. Switching to VirtuaWin helped; though, after the script was done it left the Pandora window on the current desktop instead of putting it back where I had left it. AutoIt allowed me to minimize the window for the time being. (A better long term solution may be to keep track of the move and put it back on the original ‘desk’.) Minimizing also required it’s own delay or else the automated click may happen after the window is already off screen.

The final, ‘simple’ procedure turned out to be:

  1. Open or raise the Pandora window by title
  2. Wait a moment so the flash player can draw the button
  3. Auto move the mouse to the button’s menu-or-no-menu position
  4. Simulate the click
  5. Wait for the click event to actually play or pause
  6. Minimize the Pandora window

While this won’t work for everyone (AutoIt only works on Windows), and has a lot of room to improve, it does make my life a little easier. The process has also been a lesson in UI automation and the value of seemingly simple things.

Adventures In Self-Hosting: Owncloud Review

After using it as my primary file-sync and backup service for about 10 months I’ve concluded Owncloud still requires an hour or so per month for a tech-oriented person, but it’s worth it. With enough persistence, and tolerance for some lingering quirks, Owncloud could work for you; whether or not you know how to setup a server.

Disclosures by Edward Snowden and limits to Dropbox’s free accounts have made Owncloud an increasingly tempting option. Whether Dropbox, Apple, or any other 3rd-party-cloud claims they cannot read our data the biggest players all still control the software which handles the keys. So if they get curious or a government warrant appears then they can always push an update to read whatever we have not encrypted ourselves. This didn’t particularly concern me as I’ve little to hide from the authorities. But every well-intentioned backdoor has the potential to be exploited by less trustworthy types. Dropbox’s 2G limit (16G with enough referrals) also proved limiting as my collection grew.

So around December last year I began trying to self-host Owncloud with a Raspberry Pi and Owncloud version 5. Since it lacked authentication logging I had to add it manually. Thankfully more recent versions already have this built-in. It worked well enough–if slowly at times–for the first few months.

Once my wife began using the server along with me problems started cropping up: disappearing files, logs complaining about locking, and upgrade trouble. This was around version 6.0.x, and Sqlite seemed to be the culprit as it’s not intended for multiple users. Manually migrating to Postgresql did the trick; things were back to normal. Version 7 should include official support for Sqlite-to-Postgresql migrations.

If you’re working with a lot of different files often then Owncloud feels a bit slower to sync than Dropbox; though, it’s not perfect either. Pauses or network outages also seem slightly more disruptive to Owncloud.

Another caveat is that both Dropbox and Owncloud don’t work very well with Git clones. They’re slow to sync because of the many files involved, conflicts can get messy, and file locking can get in the way. So if you’re working with projects checked out of Git then you’d be wise to keep your clones in a non-synced folder. Checking in often or backup another way should suffice. If not then Gitlab is a popular, self-hosted alternative to keeping local-only clones.

Each major release of Owncloud brings welcome new enhancements, and aside from my Sqlite issues, the upgrades have been relatively painless. I’d definitely recommend it for a business of any size or technical individuals. Perhaps some packaging tools or OS distributions can make the process easy enough for even the most basic user to get their own cloud.

Update: Owncloud’s client now makes selective sync much easier, and it has coped with my careful selection arrangement nicely. Also, there is a alternative known as Seafile which transfers multiple files more quickly than Owncloud while also offering self-hosting.

Dear Designers, Your Background Images Are Inaccessible

Many sites today make themselves inaccessible to low-vision users as they rely upon background images for core functionality. Users who prefer to browse without unnecessary imagery are also left out in the cold unless their willing to abandon high contrast or other accessible modes of browsing. Sadly this impacts not just small shops but even the web giants like Amazon, Apple, Google, and Yahoo.

Website design is an art with ever evolving tools, so it’s understandable that designers want to stay cutting edge. Yet doing so often leaves marginalized communities, such as those physically challenged, in the dust. While I can see just fine, I prefer to browse with high-contrast themes and modes to avoid wasted energy and eye strain. Unfortunately something as simple as searching or checking web-mail often involves reverting to bleached-white screens.

The problem most often manifests as links or buttons depend upon background images or foreground images that lack any alternative text.







Please designers, make your sites accessible without background images.