
Photo credit: WordRidden
I am really hoping to talk about contracts and agreements at Freelance Camp tomorrow, particularly regarding topics about small clients.
As an attachment for that, here is a gener-ified version of my Functional Spec Template.
I could say a lot about it, but it’s very late and I have to get up very early to get there tomorrow. In short, I fill this out, and it helps me immensely.
Then, I add a slightly amended version of this contract by Andy Clarke, and turn the spec into Appendix A of the contract, and it becomes a complete contract / spec / proposal.
[Added: ] Here is my version of Andy Clarke’s contract–basically, just formatted as an RTF file. Follow the instructions–change the blue highlighting once, to change it from my branding to your branding. Keep that copy, and change the yellow highlighting every time you need to create a new copy (thanks to Eric of Cosmic Design Co. for that idea.): Contract blank, formatted
Note: I claim absolutely no knowledge of whether this legally applies in your zone. The main purpose for me–at this point–is to have a document that formalizes the terms of our agreement.
And of course, another part of this, is to never do work of more than a few hours without such an agreement! (That is, unless you enjoy suffering.)
I added the force majeure part “for fun”, when I found it on a website.
How to Create an Effective Web Design Questionnaire
Let’s Get Real, or Let’s Not Play, by Mahan Khalsa


















A shell scrtipt for changing permissions on files a good way
This is basic for some of you, and greek for others.
Thanks to Chris Miler for the “find” portion.
There are a couple of things I regularly want to do when I upload site files to my staging site.
There is no super-elegant, simple way to do this with one command. That is why the shell script.
If you are more paranoid or whatever, you want to lock down permissions for the group level too, but …
Now, I save the following file as permissions:
#!/bin/bash user=$1 if [ $user ] then find . -type d -exec chmod 775 {} \; find . -type f -exec chmod 664 {} \; chown $user:apache . chown -R $user:apache * else echo "You must provide a user as a parameter." fiTo use it, you would type:
.. where username is the username for the owner of the files, as you want it.
To make this really useful, you’ll want to put it in your path. In my account, I edit the ~/.bash_profile file, and add this line:
.. and then, make yourself said directory,
.. it is a handy place to put scripts you want to run anywhere.
Then, whenever you upload / download new files, you can just type permissions <username>, and it will magically transform all of these files.