2008-02-22

How Do You Balance Different Target Audiences With Different Needs

The Problem

Different groups of your users have different ways of handling the same basic tasks and/or data. Names and addresses are just two of the more common types of data that vary from culture to culture. So how do you handle this situation? The immediate impetus for this post is this programming.reddit comment about names. I can see at least 3 different approaches, each of which has drawbacks.

The Strategies

Ignore the needs of the smaller target audience(s)

This is the one I've seen most often in the wild, and I can see it's appeal: if you are only giving up a few potential users/customers, you'll probably offset your losses by increasing your saturation in the supported target audience(s). Still, I always get a vague feeling of unease when I knowingly make it harder/impossible for a group of people to use my work.

Limit your functionality to the common subset

I don't know that I've ever encountered this, and I can see why. When you get right down to it, there's not much about this world that is constant across all places, people, and cultures. That doesn't leave you a lot of functionality to put into your app. Even when there is a common subset, your different target audiences will probably still prefer to use an application/site that supports the nuances they are used to, and nuances are the first thing to go when you start chopping functionality down to a common subset, pretty much by definition.

Hide the functionality that is subject to change until you know which variant to expose

There are a couple of problems here:

  • You may not even need the information for anything else, and users are famously reluctant to give out personal info. If you do ask them for the information, please keep Application Design Mistake No. 9 in mind.
  • It may not be feasible to hide the functionality in question. If your application/site doesn't require users to register, for example, then it might be hard to keep track of the information necessary to know which variant of the functionality to expose.

The "Solution"

In reality, I imagine most developers would prefer some mixture of the strategies listed above, though I could be wrong. What does your solution look like?

Back to flipping out...

2008-02-18

Sneak Attack - Crunch Mode

Sneak Attack: The Crunch Mode Paradox

Back to flipping out...

2008-02-13

Buildix in Anger, part 2 (follow-up)

According to the response on the forum, you basically can't do what I wanted to do (unless you feel like reverse engineering the webapp, which appears to be obfuscated), but Mingle 2 will have an API that should allow it.

Back to flipping out...

2008-02-12

Buildix in Anger, part 2

Something to note: the Buildix project creation logic uses the blank Mingle template. If you want to use a template, such as the Scrum template, you'll have to create a Mingle project manually. Originally, I was going to walk you through the process for modifying Buildix to use the template you told it to use, but I couldn't figure that one out in time for this post. I've posted a question to the Buildix forums, and if I learn anything further, I'll update this post accordingly.

Back to flipping out...

2008-01-16

Using Buildix in Anger

About Buildix

Buildix is an all-in-one solution for most of the essentials of agile software engineering:

Buildix also offers an optional software package for Project Management: Mingle. Mingle is the for-pay PM software created by ThoughtWorks, who also created Buildix. While Mingle isn't free, there is a currently a free 30-day trial (or 1 year if your team contains 5 or fewer members). To tie it all together, the ThoughtWorks team has glued things together to make these tools integrate more seamlessly.

Buildix itself is available in a number of form factors: VMWare image (which I will cover in this post), LiveCD, AMI for Amazon's EC2 service, or .deb package for Debian-based Linux distributions. The VMWare image and LiveCD are both Ubuntu with the Buildix package installed.

Installing Buildix

We'll be discussing the VMWare image of Buildix 2.0.1 in this post, so installation is pretty straight-forward. Just download the bzipped tarball, extract the image to your directory of choice, fire up VMWare, and choose to open the image. Voila! VMWare tells me that the VMWare Tools are out of date, but I'll deal with that later. It is important to note that the VMWare image is not secured in any way. If you plan to allow access to the image from outside your firewall, ThoughtWorks recommends creating your own secure Ubuntu server and then installing the Buildix package via aptitude.

Configuring Buildix

Figuring out how to access Buildix

The first step is to figure out how to access your new Buildix install, since it's hard to configure something when you don't know where it's at. Pop over to the console in VMWare and attempt to log in as ifconfig, no password. This should display the IP address you should use to access Buildix. As an important aside, note that there are two default user/password combos, and that the password is the same as the username for both: root and cruise (see this forum post about default users).

Enabling Mingle

When you first visit your new Buildix install's site, you'll receive a message informing you that "Mingle is installed but not configured." So, click on the handy link to finish the installation (or you could uninstall it, but Mingle is reputed to be cool, so we'll be finishing the installation).

The first step in finishing up the installation is a simple overview page that outlines the steps we'll be taking. Since this is Buildix, the first two steps (1. Connecting Mingle to your database and 2. Setting up the database) have been handled for us. Next up is 3. Configuring the SMTP connection. Just fill in the required fields and click through. Up next is 4. Accepting the ThoughtWorks End User License Agreement. If you agree, click the checkbox to enable the button, and click through. Now we see 5. Setting up the first user account - you'll be prompted to create the first user (who, unsurprisingly, will be an Administrator). Create this user and move on to 6. Importing project templates. All you can do here is continue. Then you'll be informed that Mingle is not registered. Go to the website and register to get a registration key in your email. Copy your key, go back to Mingle and choose to register, then paste in the key. You should be all set.

User configuration

Next up: adding your users. Here is the first time you get to really use that ThoughtWorks glue I mentioned earlier. They've added a very simple User Manager tool that will create users for the various applications making up Buildix so that they are consistent, e.g., hgay can log in to all of the applications with the same credentials (with the possible exception of Mingle - those logins are created with a default password and you must update them separately). Just go to the address indicated in the ifconfig login indicated above. That should get you to the homepage for your Buildix install. From there, click on the User Manager link, provide the username and initial password, and Buildix takes care of the rest.

Project configuration

Project creation

Next up: adding your project. Here again, we get to enjoy some ThoughtWorks magic. You go to your Buildix homepage, provide a project name, and click the Create Project button, and Buildix will create the projects in the member applications, including a project in the subversion repository. Actually, scratch that. What it does is create a new subversion repository at /var/svn/$project_name, which makes things interesting if your pattern before was to have one repository with many subprojects. And that brings us to our next step: getting your existing project into Buildix.

Old project info migration

SVN Import

Once Buildix has created your SVN project, you can use svnadmin dump and svnadmin load to get your previous work into Buildix. If you are unfortunate enough to still be using CVS, you'll first need to get your project info out of CVS. A tool like cvs2svn should do the trick, but it is rather complicated to get it configured exactly as you might want. I recommend testing against a temporary svn repository until you get it exactly the way you want.

Summary

If everything went well above, you should have some users and projects waiting for you. Now it's up to you to use Buildix effectively.

Miscellaneous

Back to flipping out...

2007-08-01

Sneak Attack: Code Katas and Programming Exercises

Back to flipping out...

2007-07-17