The Daydream Blog

Differencia 1.1.2 Released

December 10th, 2009

Differencia 1.1.2 was released today, primarily for improved support for Mac OS X Snow Leopard. This release also add support for one-click license registration, simplifying the purchasing process:

Differencia 1.1.2 Release Notes

  • Improved compatibility with Mac OS X Snow Leopard
  • Added support for secure automatic updates
  • Added support for one-click license registration
  • Improved handling of non standard file encodings
  • Improved stability and performance

Using Git With FogBugz for Local Repositories

October 22nd, 2009

Note that this article is intended for developers and may not be of interest to a wider audience

If you, like me, have migrated from using Subversion to Git, you may be missing the ability to link commits with FogBugz cases. I have adapted the Subversion integration post commit hook to work with Git.

It should be noted that integration with repositories hosted on GitHub can be found by clicking on this link, to appropriately enough, GitHub (via a blog post on FogBugz). These instructions are for use with local repositories.

I have simply taken the Subverson integration script, that is available at this link on the FogBugz website and adapted it for use with Git.

To use, follow the instructions below:

  • Install Perl in the unlikely situation that it is not already installed on your system
  • Install wget. On Mac OS X, you can install via MacPorts by simply typing sudo port install wget in a Terminal window.
  • Download post-commit and logBugDataGit.pl by clicking on this link to GitFogBugz.zip
  • Unzip the archive and copy the two scripts to your [Path To Project]/.git/hooks directory and make sure they are both executable
  • Edit logBugDataGit.pl as follows:
    • If you are using the free FogBugz version set $BUGZ_URL_FINAL to https://yourdomain.fogbugz.com and set $IS_TRIAL to 1.
    • If you host your own FogBugz installation, set $BUGZ_SERVER to your domain without http:// and set $IS_TRIAL to 0.

That’s it, there is not step 6!

The Customer Is Always Right

May 7th, 2009

In my last post I highlighted, what I felt was, a case of poor customer service by a fellow developer. Even in the most unhelpful customer feedback, there lies the opportunity to glean a valuable lesson.

Rather than pick another whinge from IRC or Twitter from a fellow developer and risk alienating the entire Mac developer community, I am using an example of feedback for my own product, Differencia.

The following information was just submitted via the DayTime Software Internet site Contact form.

First Name: John

Last Name: Dontwantoleavemyname

Telephone Number:

Email Address: fakeemail@yahoo.com

Message:
Your program is difficult to use and confusing. Take a look at standard “diff” programs for text. This program should emulate those, because that is what users are already used to, and the programs work well. Instead, you’ve created a whole different paradigm that just left me scratching my head. Templates? Okay–a great option. But what if I don’t have a template or don’t want to bother with one? Plus, the program crashed several times on me. This needs a lot of work if you’re going to sell it.

There was no way for me to respond as no valid contact information was left. Others might complain that he did not “get” my product, or that his feedback was very unconstructive. In fact that was my first response as well, and tweeted as much.

The main point is that Differencia is not a “standard diff program”. It is intended to work with data files that standard diff programs cannot handle. A new paradigm, as he puts it, was required as other diff programs simply cannot handle the use cases that Differencia was intended for.

However I have gone back to deconstruct the feedbacl, to try and understand how he failed to understand the product.

The lessons I learnt are:

  • I have optimised the site for search terms that include “diff”. This is precisely to attract people looking for diff programs that handle exceptional cases. However I do not stress heavily on the site that Differencia does not (currently) handle non-structured text files such as source code or documents.
  • I have not, perhaps, emphasised enough on the site that Templates are a convenience but not a requirement for Differencia to work well.
  • I have not done enough testing with source code and other file types to ensure that they do not trigger crashes.
  • Not a new lesson, but I know that I need to do a mix of usability improvements and add tutorials to the website / product

Instead of bemoaning hyper-critical feedback and how useless it is, I have taken stock, assumed there is something I can learn and improve on, and worked hard to gather something positive from the feedback.

I’ll have your customers if you don’t want them

April 22nd, 2009

Garrett Murray, developer of Ego, an iPhone web stats aggregator, recently posted a difficult support experience he had. (Via Tim Burks on Twitter):

In summary, Ego’s Google Analytics access stopped working because Google felt too much traffic was coming from Ego’s server and blocked the IP address. Is this the customers’ fault? No.

Several users voiced their problems on a 3rd party support site called Get Satisfaction. Murray responded, on Get Satisfaction, that the problem had been resolved with Google, an update had been submitted to the App Store and was awaiting approval. Crucially Murray marked the issue as “solved”, before the update had been approved by Apple.

Murray initially complains about the length of the approval process, which, given that it’s been over a week since he submitted the update, is probably valid. Is this the customers’ fault? No.

However Murray then goes on to highlight the complaints of one user, who was unsatisfied with his response on Get Satisfaction, and created a negative review on the App Store. The App Store does not allow developers to respond to reviews, which again is a fair criticism. Is this the customers’ fault? No.

The user’s review on the App Store was:

I bought this because it claimed to support GA. It worked for me one time the day I bought it and hasn’t worked since. I posted to their support forum and was berated for not reading this long and confusing thread about how it is supposed to be working, or it will work again soon, or something. I feel like the software developer did a poor job building and testing this, and now they’re willing to blame the users for their own mistakes.

Which given the Murray’s own blog post and the situation in the Get Satisfaction thread is exactly correct. Pointing users at a separate thread, as if to say “You should have looked first” is rude and obnoxious. If your software is broken, apologise, explain and apologise again.

Murray defends setting the issue as resolved by saying:

Apparently they didn’t understand that “solved” was a relative term. Yes, sure, it’s not solved for you right now, but my resolution was pretty clear—it’s solved in the version Apple is looking at. JUST HOLD TIGHT. I thought this was enough. But no.

This is just plain ridiculous. “Solved is a relative term” is utter rubbish and a completely idiotic stance to take with your paying customers. With software there is only ONE definition of “Solved”; when the issue is solved for the customer who has paid good money for the product. . Until the fix is in the users’ hands, the problem is OPEN.

It highlights the stereotypical blinkered developer attitude that once a problem is “fixed” in code, that is the end of the matter.

I have multiple examples in my support log, where I have sent a user a response, asked them to contact me if it does not solve the problem and never heard anything back. In my support system I often wait months before marking these issues as resolved. Unless I hear from the user that the problem is fixed, then as far as I am concerned, it is not.

Murray goes on to say that:

Apple is creating an ecosystem of the kind of customers I don’t want

Well Garrett, if you don’t want them, I’ll quite happily take them off your hands.

John Gruber describes the user as an “asshole” on his heavily read Daring Fireball blog.

This is completely outrageous. Ego’s users have paid good money for the product and rightly expect the product to work as advertised. The issues with Google are not the customers’ fault. Even if everyone has done the best they can, the customer is the one least at fault, having paid for a product that DOES NOT WORK.

As for Gruber’s incendiary remarks, I personally would sue for defamation if I was described in that way.

So often as developers we fail to put ourselves in our customers’ shoes. The user had a faulty piece of software, went to the support site (many wouldn’t go that far), filed a complaint (fewer still), saw a response that belittled him and told him that the problem was solved, when it clearly was not. What other recourse does the user have other than to write a negative review?

There are several lessons to be had from this:

  1. Program Defensively: the product should respond sensibly when the Google API did not work, rather then report “0 Visitors”
  2. Program Defensively: provide a support link from within the application
  3. Respond to every customer complaint individually. If it is a known issue, state that it is, but do not expect the customer to know that. Apologise, explain, apologise again.
  4. Treat your customers with respect. A customer who has paid you money owes you nothing, whereas you owe him your livelihood.

As I have stated many times before, the customer is always right and there are no stupid users, just stupid developers.

The Accessible Mac-verse

March 18th, 2009

In a recent post, Martin Pilkington of M Cubed Software challenged Mac developers to make their apps accessible by the end of 2009. I think this is an excellent suggestion and I will take up the challenge for Differencia.

In Martin’s post and the comments there are some links to great resources to get going with accessibility:

Apple’s Accessibility Developer Page.

Assistive Technology for the Mac Resources

Assistive Ware Videos

At WWDC ‘06 I went to the Accessibility session and it was the best Hands-On sesssion I’ve been to at WWDC. The 2006 Session video does not seem to be available any more, but the 2008 session can be found from the link below. It requires access to ADC on iTunes, you may need to log into ADC on iTunes first, or simply look for session 326.

WWDC ‘08 – Session 326 – Application Accessibility

The 2006 session had an excellent sample application, Dicey, that takes you through stages of increased accessibility. It can be found here:

Dicey Sample Code

However I would like to extend Martin’s challenge. Most independent Mac software developers sell their products exclusively via the web. Therefore for their software to be fully accessible, Mac developers need to make their websites accessible as well.

Information on this can be found at W3C, the web’s standards body, and elsewhere:

W3C’s Accesibility Initiative

Dive Into Accessibility Guide

I would call on all Mac developers to take up the Mac Accessibility Challenge.

Where did we all go?

March 18th, 2009

I haven’t blogged for a long time and for that I would like to apologise.

I’ve noticed that a lot of bloggers that I follow have not posted much in the last 6 months either.

Wil Shipley has not posted a blog entry since the end of September. Scott Stevenson has had just 5 posts in the same time frame. Morgan Webb and Marc Andreesen have gone off line. And although Daniel Jakult has posted 25 odd posts in that time period, that seems a relatively dry period for him, with 2 week gaps between some posts.

I suspect that iPhone development has had a lot to do with the dry period in Mac blogging, along with podcasts and Twitter as alternative methods of communication.

For me personally the hiatus was due to the passing away of my father last August. In addition, when you have something you should be doing, the longer you leave it, the harder it gets. Of course you need to take the plunge and get on with it.

I have a number of ideas I’ve been considering posting for a while, so hopefully over the next few weeks I should be getting back up to my past output. Hello, again!

The Daydream Blog is powered by WordPress and created using MarsEdit
Entries (RSS) and Comments (RSS).

 
Site by Line