When designing for the web, is the customer always right?

When I began thinking about this friction between clients and designers I tried to find a real life example to best describe how the relationship should work.

First I thought that it was rather like a person who wants to build a house. A person who wants to build a house looks for an architect, but they usually start out with a fairly good idea of what they want. They can show the architect rough sketches, magazine clippings and whatnot. So essentially the architect is just there to give advice, draw the plans and make sure that the house looks like the owners want it.

This works great except that a personal house only needs to fit the need of one person (maybe more if the client has a family but we will assume that they all were part of the planning). So for example if the client is short they may want to have kitchen cupboards that are quite low or floor level, this will be inconvenient for a taller person.

This scenario does not really fit the web because the web is not like a home, rather it is like a public building – a library or museum for example. The web cannot by its nature fit one person, neither can it fit everyone so a compromise needs to be arrived at. This compromise is, by using gathered knowledge, fit the largest group of people possible.

the web is not like a home, rather it is like a public building – a library or museum for example

With this in mind lets explore the process for designing a public building. A public building needs to be designed with the public in mind, this is the huge difference between designing a home. Yes the designs are begun in much the same way, a client with an idea finds a n architect. But in this case the client is usually a government or large company. They would probably start by getting a team of consultants together, these would be architects, designers and other people like that with experience in designing public buildings.

The client will then move to the background white the team puts together a design and then gets feedback from the people that are going to be affected by the building. Once all the required feedback has been gathered the team will then use it to make changes to their initial design. Once they are happy with what they have put together they will go back to their client, discuss it, maybe make one or two minor changes and then get on with the next stage.

The way a web design comes together follows the second scenario I proposed much closer than the first. Let me explain. The client starts out with an idea, they may go to a design company with some preconceived ideas but in most cases they just present their idea. The design company will then mull over the idea and try to build a design around it. This is done by using expertise from prior projects as well as doing usability studies and maybe a few other things as well. The usability testing involves the public in the design process by letting them show the design team how their design works in practice, the public can then also give their opinions. When all the tests and procedures have been completed the web design company will have a design that is both functional and one that works for the biggest possible amount of visitors.

Once the company is happy with what they have put together they will take it to their client and they will then make slight changes here and there. Once everyone is happy then they can procede to the next stage.

Conclusion

In conclusion I think that there are a lot of parallels that can be drawn from the second scenario. First, the client takes a less important role in the design because he trusts the team he has employed that they will give him the results he asked for. Second, the public is involved in the design process in a controlled way that allows them to influence the design but not derail the process with nonsense.

The biggest problem here is trust, clients need to trust that the team they have employed will do the job properly. What we do at Amoebasys is use Redmine (http://redmine.org), which is an online job tracking system, so that the client can see exactly what is going on. They can follow as each job task is signed off and this makes them happy.

Add new files to SVN

This is a fairly common issue and one that I have run into on more than a couple of occasions. How do you add new files to an SVN project without running the add command for every file/directory?

You use this clever one line script that I found at Snipplr:

svn status | grep "^\?" | awk '{print $2}' | xargs svn add

And as long as your file names don’t have spaces in them the script will add them recursively to your SVN project. By the way if you have spaces in your file names then you are being silly. :P

PHP SSH2 on Fedora Core the easy way

Installing the PHP SSH2 extension on Fedora is a pain in the backside unless you know how. There are countless examples for Ubuntu but everyone seems to leave the Red Hat family in the dark.

Here is the easy way to do it:

[theamoeba@amoeba2]# yum install php-pecl-ssh2
[theamoeba@amoeba2]# service httpd restart

Fresh pasta…

And it worked. It took me a while to get that just about 100g flour and 1 egg were going to make a couple of bits of spagetti or whatever shape you want.

I am reading HEAT at the moment and Bill Buford’s making of fresh pasta interested me. Actually I lie, well that is sort of true, actually I was first interested in making my own pasta after watching a short clip of Jamie Oliver explaining how to do it.

Anyway, all that nonsense aside. I gave it a try this morning and it didn’t come out half bad. I don’t have any pasta creating contraptions. So I used a Braun “blender” thing and a rolling pin. Basically to make the version I made you throw an egg per person into a blender and then about 100g of flour per egg. In my case it was 1 egg and about 100g flour as I said at the beginning.

The measurements are sort of immaterial though as you must just add flour until the consistency is right. The mixture will make slightly sticky yellow balls. Once you are happy with the mix you just throw it onto a longish surface that is covered in flour so that the mix doesn’t stick to the table forever.

You then want to either go to the shop and buy a pasta flattening machine or just use a rolling pin like I did. If you are using a rolling pin just keep flattening the sheet of egg/flour until you are happy with it, the flatter the better but not microscopic.

Once it is flat you can cut it into weird shapes or make a kind of spaghetti out of it. You can get a machine to do this or like me do it by hand. So you just sort of fold the sheet up into a long rectangle, making sure to flour between each fold so it doesn’t stick.

Then you just use a sharp knife and cut slices out of it. I made mine pretty thick which was not such a good idea, so probably a max of about 1 cm wide. But it is all up to you. Italian cooking is not about being precise. Hehe.

If you are interested in cooking I would recommend that you read HEAT. It has a lot of insight about good food, how to cook it and also what happens behind the scenes in the kitchen of most decent restaurants.

Moodle / Drupal Single Sign On

It has been a while… I am apparently not dead yet, just terribly busy. The latest project I did with Amoebasys and Perceptum Though Squad was to create a way for Moodle users to automatically login to a Drupal site.

Simple huh? Erm… no ;)

Since both Drupal and Moodle would be using the same database and would also be sitting on subdomain there were not too many complexities in that department. The problem was getting Moodle to create a cookie and then force Drupal to use it. Ideally I would like to have used oAuth or something nicer (I use this in the vaguest sense of the word), but there was no time to create clever solutions.

Basically the solution looks something like this:

  • Clever Drupal module that creates an API callback to sync Moodle Users into the Drupal database. An admin chooses which role you want to sync users from and which role you want to sync the user to.
  • A tiny little Moodle hack that creates and deletes a cookie that will tell Drupal which user to login and also to log a user out when the cookie is not available anymore. This is also only for that specific role that you select to sync to.
  • Then lastly there is a small Drupal hack that checks for the cookie and either logs a user in or logs a user out, depending on the content of the cookie.

Let me just say that I really REALLY hate writing hacks. They disagree with me completely down to my core ;) but in this case I did not have the luxury of time to screw around trying to create a module that could do this. Perhaps the client will be happy to allow future development around the system. I would then definitely look at doing a more elegant solution with perhaps as I have said before, oAuth or LDAP at the very least.

At the moment the module is working well and there don’t appear to be any glaring bugs that we have been able to identify. So even though this is not an optimal solution I am very happy with it so far.

I will most likely write a more technical post at a later stage, but I am not 100% sure on the secrecy policy on the code :P