<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>ZoooJ Know How</title>
	<atom:link href="http://zoooj.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://zoooj.com</link>
	<description>The little I know is yours to accept, dismiss or rail against</description>
	<lastBuildDate>Wed, 15 Feb 2012 23:38:01 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>New counterfeiting and copyright agreement with ACTA</title>
		<link>http://zoooj.com/blog/new-counterfeiting-and-copyright-agreement-with-acta-187/</link>
		<comments>http://zoooj.com/blog/new-counterfeiting-and-copyright-agreement-with-acta-187/#comments</comments>
		<pubDate>Sun, 29 Jan 2012 09:32:56 +0000</pubDate>
		<dc:creator>zoooj</dc:creator>
				<category><![CDATA[Open Rights]]></category>
		<category><![CDATA[acta]]></category>
		<category><![CDATA[copyright]]></category>
		<category><![CDATA[creative commons]]></category>
		<category><![CDATA[open rights]]></category>

		<guid isPermaLink="false">http://zoooj.com/?p=187</guid>
		<description><![CDATA[ACTA stands for Anti-Counterfeiting Trade Agreement. Before reading on please read it. You can find it at http://register.consilium.europa.eu/pdf/en/11/st12/st12196.en11.pdf. There&#8217;s no point talking about something unless you&#8217;ve read the original document. So what do you make of it. Simply put, it&#8217;s defined &#8230; <a href="http://zoooj.com/blog/new-counterfeiting-and-copyright-agreement-with-acta-187/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>ACTA stands for Anti-Counterfeiting Trade Agreement. Before reading on please read it. You can find it at <a title="Anti-Counterfeiting Trade Agreement between the European Union and its Member States, Australia, Canada, Japan, the Republic of Korea, the United Mexican States, the Kingdom of Morocco, New Zealand, the Republic of Singapore, the Swiss Confederation and the United States of America" href="http://register.consilium.europa.eu/pdf/en/11/st12/st12196.en11.pdf">http://register.consilium.europa.eu/pdf/en/11/st12/st12196.en11.pdf</a>. There&#8217;s no point talking about something unless you&#8217;ve read the original document.</p>
<p>So what do you make of it. Simply put, it&#8217;s defined as a trade agreement between many countries to bring about the prosecution of any person or organisation who sells  counterfeit products or infringes intellectual property rights through the reuse of digital content, thereby offering an international legal framework to deal with counterfeit trading and intellectual property infringement. The powers stated in the articles within this agreement can be exceeded by participating countries through their own legal systems.</p>
<p>I don&#8217;t disagree that there is a need to redefine our copyright laws, nationally and internationally but what I don&#8217;t agree with is embedding what appears to be a new international copyright law within a trade agreement. Digital content must be treated differently to physical products beacause we endanger the distribution of knowledge unless care is taken to define the framework within which content can be provided and used.</p>
<p>Countries who have signed up are: UK, Austria, Belgium, <del>Bulgaria</del>, Czech Republic, Denmark, Finland, France, <del>Germany</del>, Greece, Hungary, Ireland, Italy, Latvia, Lithuania, Luxemburg, Malta, <del>Netherlands</del>, <del>Poland</del>, Portugal, Romania, Slovenia, Spain and Sweden, US, Australia, Canada, Japan, Morocco, New Zealand, Singapore and South Korea.</p>
<p>I&#8217;ve long despised the trade in counterfeit physical goods having seen people lulled into buying knock-off goods just because the things being sold were listed at heavily discounted prices. We&#8217;ve all seen them at markets in major cities around the world. I have no objection to providing a way for the rights holder to bring about legal proceedings against someone selling fake versions. The seller of the fake products is making money out of someone else&#8217;s time and investment.</p>
<p>But that&#8217;s for physical products.</p>
<p>The part that has become a talking point is Section 5 entitled the &#8220;ENFORCEMENT OF INTELLECTUAL PROPERTY RIGHTS IN THE DIGITAL  ENVIRONMENT&#8221; (Anti-Counterfeiting Trade Agreement; p33. <a title="http://register.consilium.europa.eu/pdf/en/11/st12/st12196.en11.pdf" href="http://register.consilium.europa.eu/pdf/en/11/st12/st12196.en11.pdf">http://register.consilium.europa.eu/pdf/en/11/st12/st12196.en11.pdf</a>.</p>
<p>At the start it outlines how anyone infringing another&#8217;s intellectual property rights in a digital environment can be prosecuted in accordance with this trade agreement. It goes on to state that any enforcement of the prosecution must not affect anyone who is not infringing the agreement, thereby protecting law-abiding bodies. The thought that is running through my head is whether there is a grey area that will come about due to the difference in interpretation of what is and what isn&#8217;t an infringement.What constitutes an infringement? Is paraphrasing a paragraph an infringement? Is copying a sentence or two an infringement? Is using a 2-3 second clip from someone else&#8217;s video an infringement?</p>
<p>Going on to Section 5 (4), the rights holder will be able to go to an ISP and request they provide information that identifies the account that was used for the infringement. In addition, (5) states that the &#8216;Party&#8217;, ie country that has signed up to the agreement, must work out ways to prevent the use of technology to deliver copyrighted works in a way that gets round security and other digital rights management processes put into place by the rights holder.</p>
<p>All this seems pretty sensible, be able to identify the person who has reused original content as their own and share this with the authorities and person in a different country, as well as being able to break down the means by which content can be distributed illegally. The key word though is that the account used to infringe the rights should knowingly have done so.</p>
<p>I see no issue with this if the rights holder clearly states that their work is copyright and they do not wish their work to be reused in any way by anyone who has not received their permission to do so. An author who wants their work to be shared, and not in its entirety, should publish it under a Creative Commons licence, which can give others the right to reuse it without express permission.</p>
<p>One perspective on this is to place the responsibility with the owner of the intellectual property. They must explicitly state how they will allow their work to be made available to the public. If they want their work to be shared and distributed then they should choose the appropriate copyright licence and state it clearly. If you don&#8217;t have permission then pay for it. If you don&#8217;t want to pay for it then don&#8217;t use it. Is this a bit harsh? What are the arguments against this?</p>
<p>The one area that worries me is how authorities will go about identifying and monitoring infringements of intellectual property and counterfeiting. ACTA appears to give carte blanche to authorities to do so as long as they can prove their techniques are in place to catch those who break copyright and counterfeit law. There are already highly sophisticated plagiarism checkers in operation and much content has been digitised and available for use within these. Will anything, including film and audio, published via iTunes, Amazon, etc be subject to processing into an immense data library that is used to monitor activity? A small body of people will have the right to limit the online rights of various people as a result of their having permitted intellectual property to be shared in such a way the author did not intend, or did not explicitly state on publication.The net they will need to cast is a wide one indeed.</p>
<p>I agree in principle with not making money out of someone else&#8217;s work when they expressly do not wish you to. However, if they aren&#8217;t concerned about you doing this then it shouldn&#8217;t be outlawed. Additionally, there are currently civil sanctions against this so the author has the option to sue. What happens if the &#8216;perpetrator&#8217; has not made any commercial gain out of reusing content,  but instead wants to simple spread information?</p>
<p>As you can probably tell, I&#8217;m no lawyer and could really do with understanding copyright law better. But, and it&#8217;s a big but, creating a new international copyright law and embedding it within a trade agreement does not seem right, and it is this that I&#8217;m opposed to. It&#8217;s important to not combine the two and allocate more time to the discussion of how intellectual property can be protected where it needs to be. Providing the stick with which to beat people operating in the grey area without adequately defining what that grey area is makes little sense as the final outcome is more than likely to be stricter laws that actually infringe the rights of those who want to share information.</p>
]]></content:encoded>
			<wfw:commentRss>http://zoooj.com/blog/new-counterfeiting-and-copyright-agreement-with-acta-187/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Install a Local PHP Manual with MAMP</title>
		<link>http://zoooj.com/blog/install-a-local-php-manual-with-mamp-86/</link>
		<comments>http://zoooj.com/blog/install-a-local-php-manual-with-mamp-86/#comments</comments>
		<pubDate>Sun, 01 Jan 2012 13:48:54 +0000</pubDate>
		<dc:creator>zoooj</dc:creator>
				<category><![CDATA[Mac]]></category>
		<category><![CDATA[docref_root]]></category>
		<category><![CDATA[MAMP]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[php manual]]></category>
		<category><![CDATA[php.ini]]></category>

		<guid isPermaLink="false">http://localhost/ROOT/Websites/S-Z/zoooj/Local/ZoooJKnowHow/?p=86</guid>
		<description><![CDATA[I sometimes find myself offline and needing to do web development. As I work mostly with php getting access to the PHP manual can be critical. Without being online the only way to do this is to store a local &#8230; <a href="http://zoooj.com/blog/install-a-local-php-manual-with-mamp-86/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I sometimes find myself offline and needing to do web development. As I work mostly with php getting access to the PHP manual can be critical. Without being online the only way to do this is to store a local copy.</p>
<p>Now, I had a few problems getting this to work. Little documentation and a fuzzy head were the main causes. Anyway, I got there in the end so here&#8217;s what I did. Pre-requisites are that you have a copy of MAMP (non-pro version) installed and have downloaded and unzipped the manual file.</p>
<p>Copy the manual file somewhere sensible in your localhost root folder. I put mine into /Sites/root/phpmanual/ giving the localhost url of http://localhost/root/phpmanual/php-chunked-xhtml/.</p>
<p>Next, work out which php.ini file you&#8217;re using. To do this create and open a phpinfo.php file. A phpinfo.php file just needs the following:</p>
<pre>&lt;?php
    phpinfo();
?&gt;</pre>
<p>Search for php.ini and you&#8217;ll see a line in the row with a heading of Loaded Configuration File. You&#8217;ll have a url of something like: /Applications/MAMP/conf/php5.3/php.ini. Open this file in TextWrangler and make the edits below. Make sure you make a copy of the php.ini file before doing this or have some way to restore the original version.</p>
<ol>
<li>Change display_errors to On.</li>
<li>Change html_errors to On.</li>
<li>Add base url to docref_root and uncomment (delete the semi-colon). In my case the base url is /root/phpmanual/php-chunked-xhtml/.</li>
<li>Uncomment error_prepend_string.</li>
<li>Uncomment error_append_string.</li>
</ol>
<div>Here&#8217;s what they look like in the php.ini file. I&#8217;ve added line numbers I get. This is using MAMP Version 2.0.5 and PHP 5.3.2.</div>
<pre>277 display_errors = On
311 html_errors = On
319 docref_root = "/ROOT/phpmanual/php-chunked-xhtml/"
320 docref_ext = .html
323 error_prepend_string = "&lt;font color=ff0000&gt;"
326 error_append_string = "&lt;/font&gt;"</pre>
<p>The final thing to do is save the file and then restart your servers. To test it create a basic php file like the one below.</p>
<pre>&lt;?php
include ('file.php');
?&gt;</pre>
<p>Launch it and you should see this</p>
<pre><span style="color: #ff0000;"><strong>Warning</strong>: include(file.php) [<a href="http://localhost/root/phpmanual/php-chunked-xhtml/function.include.html">function.include.html</a>]: failed to open stream: No such file or directory in <strong>/Users/zoooj/Sites/root/mailout.php</strong> on line <strong>2</strong> </span><span style="color: #ff0000;"> </span>
<span style="color: #ff0000;"><strong>Warning</strong>: include() [<a href="http://localhost/ROOT/phpmanual/php-chunked-xhtml/function.include.html">function.include.html</a>]: Failed opening 'file.php' for inclusion (include_path='.:/Applications/MAMP/bin/php5.3/lib/php') in <strong>/Users/zoooj/Sites/root/mailout.php</strong> on line <strong>2</strong></span></pre>
<p>Click on the links (in blue) and you&#8217;ll be taken to your local copy of the PHP Manual. These links point to my local copy so probably won&#8217;t work for you, unless you&#8217;ve set it up and used the same location as I have. Simply by regularly updating the manual you can now work offline whenever you want on your php development.</p>
]]></content:encoded>
			<wfw:commentRss>http://zoooj.com/blog/install-a-local-php-manual-with-mamp-86/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Create MySQL Backup</title>
		<link>http://zoooj.com/blog/create-mysql-backup-84/</link>
		<comments>http://zoooj.com/blog/create-mysql-backup-84/#comments</comments>
		<pubDate>Wed, 28 Dec 2011 16:27:33 +0000</pubDate>
		<dc:creator>zoooj</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[applescript]]></category>
		<category><![CDATA[application]]></category>
		<category><![CDATA[backup]]></category>
		<category><![CDATA[macosx]]></category>
		<category><![CDATA[MAMP]]></category>
		<category><![CDATA[script]]></category>
		<category><![CDATA[shell]]></category>
		<category><![CDATA[Terminal]]></category>

		<guid isPermaLink="false">http://localhost/ROOT/Websites/S-Z/zoooj/Local/ZoooJKnowHow/?p=84</guid>
		<description><![CDATA[There are a number of ways to backup a MySQL database. For my local environment I like a quick way to take a backup before trying something new. Rather than go through the cumbersome process of logging into Terminal, navigating &#8230; <a href="http://zoooj.com/blog/create-mysql-backup-84/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>There are a number of ways to <a href="http://dev.mysql.com/doc/refman/5.1/en/backup-and-recovery.html">backup a MySQL database</a>. For my local environment I like a quick way to take a backup before trying something new. Rather than go through the cumbersome process of logging into Terminal, navigating to the <em>MAMP /bin</em> directory and then entering a very long command, which I would easily forget, it&#8217;s simpler to create a shell script and then invoke it as an Application by using AppleScript.</p>
<p>First, create your shell script by opening a text editor, eg TextWrangler (and not an RTF editor), and type:</p>
<pre>#!/bin/bash</pre>
<p>On the next line type in the commands you would normally do in Terminal. In my case, I wanted to navigate to the <em>MAMP /bin</em> where <em>mysqldump</em> lives. Then, I wanted to use this to dump a sql file of a specific database within my sites directory.</p>
<pre>cd /Applications/MAMP/Library/bin/
./mysqldump -a -uroot -pPASSWORD mydb1 &gt; ../../../../Users/[username]/Sites/Backups/db1.sql;</pre>
<p>Finally, close it with</p>
<pre>exit</pre>
<p>You then save this in a logical place (ie somewhere you can find it!), in my case <em>/Users/[username]/Sites/Backups/scripts/</em>. Next go to <em>Application</em> &gt; <em>Utilities</em> and launch <em>AppeScript Editor</em>. Type the following into the edit pane.</p>
<pre>do shell script "/Users/[username]/Sites/Backups/scripts/backup_nsdaukcom_263323_db1.sh"</pre>
<p>Save this to either <em>Applications</em> or a sub-directory within <em>Applications</em>. When you change the <em>File Format</em> to <em>Applications</em> before saving.</p>
<p>Once done, all you need to do to take a backup is double-click the new application you&#8217;ve created and your previous backup is overwritten with a new one.</p>
]]></content:encoded>
			<wfw:commentRss>http://zoooj.com/blog/create-mysql-backup-84/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Remove System Mail</title>
		<link>http://zoooj.com/blog/remove-system-mail-79/</link>
		<comments>http://zoooj.com/blog/remove-system-mail-79/#comments</comments>
		<pubDate>Wed, 28 Dec 2011 15:10:17 +0000</pubDate>
		<dc:creator>zoooj</dc:creator>
				<category><![CDATA[Mac]]></category>
		<category><![CDATA[command line]]></category>
		<category><![CDATA[mail]]></category>
		<category><![CDATA[Terminal]]></category>

		<guid isPermaLink="false">http://localhost/ROOT/Websites/S-Z/zoooj/Local/ZoooJKnowHow/?p=79</guid>
		<description><![CDATA[The other day I was in Terminal when I noticed for the first time it said You&#8217;ve got mail. at the top. Knowing I didn&#8217;t have any new mail I typed mail to see a whole load of system mail &#8230; <a href="http://zoooj.com/blog/remove-system-mail-79/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>The other day I was in Terminal when I noticed for the first time it said You&#8217;ve got mail. at the top. Knowing I didn&#8217;t have any new mail I typed mail to see a whole load of system mail from previous web development work.  I&#8217;m no command line expert so I checked on macrumors.com and quickly found out what to do. Here&#8217;s <a href=" http://forums.macrumors.com/showthread.php?t=229927  ">the original post.</a></p>
<blockquote><p>Go to the directory (=folder) where the system level email files for all users are stored, and list them:</p>
<pre>cd /private/var/mail/; ls -l</pre>
<p>Display the email(s) for the user which you fill into &lt;username&gt;. Either use your username (without the angle brackets) or use the character * (asterisk) if you want all emails from users listed:</p>
<pre>cat &lt;username&gt; | less</pre>
<p>Finally erase your mail file, in case you do not need it anymore.</p>
<pre>sudo rm /private/var/mail/&lt;username&gt;</pre>
</blockquote>
<p>Obviously, seeing as you&#8217;re deleting mail from your mac make sure you&#8217;re certain before doing so. Also, the <em>sudo rm</em> command has no safety net. Once something&#8217;s gone it&#8217;s gone so if you&#8217;re unsure, don&#8217;t do it.</p>
]]></content:encoded>
			<wfw:commentRss>http://zoooj.com/blog/remove-system-mail-79/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Resetting Root Password in MAMP</title>
		<link>http://zoooj.com/blog/resetting-root-password-in-mamp-75/</link>
		<comments>http://zoooj.com/blog/resetting-root-password-in-mamp-75/#comments</comments>
		<pubDate>Wed, 28 Dec 2011 15:02:43 +0000</pubDate>
		<dc:creator>zoooj</dc:creator>
				<category><![CDATA[Mac]]></category>
		<category><![CDATA[MAMP]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[password]]></category>
		<category><![CDATA[Terminal]]></category>

		<guid isPermaLink="false">http://localhost/ROOT/Websites/S-Z/zoooj/Local/ZoooJKnowHow/?p=75</guid>
		<description><![CDATA[I struggled for a while to do this as I expected MAMP to automatically update the root password after I&#8217;d changed it in the mysql.user table. To be clear, it does not. And so, here&#8217;s a brief guide to sorting &#8230; <a href="http://zoooj.com/blog/resetting-root-password-in-mamp-75/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I struggled for a while to do this as I expected MAMP to automatically update the root password after I&#8217;d changed it in the mysql.user table. To be clear, it does not. And so, here&#8217;s a brief guide to sorting out you MAMP woes.</p>
<p><span class="Apple-style-span" style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;">First, connect to mysql using Terminal. MAMP is automatically set to use root as the user account to connect to mysql. Funnily enough, root is also the password!</span></p>
<div>
<pre>/Applications/MAMP/Library/bin/mysql --host=localhost -uroot -proot</pre>
</div>
<div>You&#8217;ll be logged into mysql and will see the following.</div>
<div>
<pre>Last login: Wed Dec 28 14:48:04 on ttys001
ZoooJs-MacBook-Pro:~ zoooj$ /Applications/MAMP/Library/bin/mysql --host=localhost -uroot -proot
Welcome to the MySQL monitor.  Commands end with ; or g.
Your MySQL connection id is 38
Server version: 5.1.44 Source distribution

Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.</pre>
</div>
<div> The next thing to do is reset your password. Type the following replacing <em>your-new-password</em> with your new password. You should see the <em>Query OK</em> message.</div>
<div>
<pre>mysql&gt; SET PASSWORD FOR 'root'@'localhost' = PASSWORD('your-new-password');
Query OK, 0 rows affected (0.00 sec)</pre>
</div>
<div>Once that&#8217;s done you need to edit a number of files in the /Applications/MAMP/ directory. I still can&#8217;t quite believe that you have to do this in so many places. You&#8217;d think they would have a single file that has the master password set. Hey ho, maybe not.</div>
<div>So, find and edit these files using a plain text editor, not TextEdit, Word, OpenOffice, etc. Use TextWrangler or another decent Mac IDE. TextWrangler is free. You&#8217;ll need to find the line that has <em>-proot</em> and change it to read <em>-pyour-new-password</em>. Note that there is no space between -p (stands for password) and the password itself.</div>
<p><span class="Apple-style-span" style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;">/Applications/MAMP/bin/phpMyAdmin/config.inc.php</span><br />
<span class="Apple-style-span" style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;">/Applications/MAMP/bin/checkMysql.sh</span><br />
<span class="Apple-style-span" style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;">/Applications/MAMP/bin/quickCheckMysqlUpgrade.sh</span><br />
<span class="Apple-style-span" style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;">/Applications/MAMP/bin/repairMysql.sh</span><br />
<span class="Apple-style-span" style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;">/Applications/MAMP/bin/stopMysql.sh</span><br />
<span class="Apple-style-span" style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;">/Applications/MAMP/bin/upgradeMysql.sh</span><br />
<span class="Apple-style-span" style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;">/Applications/MAMP/bin/MAMP/index.php</span></p>
<p>Restart MAMP and all should be well.</p>
]]></content:encoded>
			<wfw:commentRss>http://zoooj.com/blog/resetting-root-password-in-mamp-75/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Need a Website? Read this.</title>
		<link>http://zoooj.com/blog/need-a-website-read-this-72/</link>
		<comments>http://zoooj.com/blog/need-a-website-read-this-72/#comments</comments>
		<pubDate>Tue, 01 Nov 2011 10:58:06 +0000</pubDate>
		<dc:creator>zoooj</dc:creator>
				<category><![CDATA[Projects]]></category>
		<category><![CDATA[agreement]]></category>
		<category><![CDATA[build]]></category>
		<category><![CDATA[clients]]></category>
		<category><![CDATA[quoting]]></category>

		<guid isPermaLink="false">http://localhost/ROOT/Websites/S-Z/zoooj/Local/ZoooJKnowHow/?p=72</guid>
		<description><![CDATA[Meeting client expectations is the key to running a successful web development business. How those expectations are set is therefore something the web developer has to consider very carefully. Set them too high and you risk annoying the client. Set &#8230; <a href="http://zoooj.com/blog/need-a-website-read-this-72/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Meeting client expectations is the key to running a successful web development business. How those expectations are set is therefore something the web developer has to consider very carefully. Set them too high and you risk annoying the client. Set them too low and you won&#8217;t get the business.</p>
<p>A number of freelancers on freelancers.net have compared quoting for a project akin to buying a car. One in particular wrote:</p>
<blockquote><p>1) do you want a Ferrari<br />
2) does it need to be 4&#215;4<br />
3) do you want diesel or petrol<br />
4) do you want a maintenance plan<br />
5) do you want extras<br />
6) do you want free MOT<br />
7) do you want continuous improvements (this would equate to a lease hire<br />
where you replace the car for the newer model at the end of each year) <img src='http://zoooj.com/blog/wp-includes/images/smilies/icon_cool.gif' alt='8)' class='wp-smiley' /> do you want free upgrades (top of the range breaks and accessories each time the car is serviced) &#8211; £5000 upfront,</p>
<p>Are you a Trader or are you Private Seller or are you an Independent Dealer<br />
or are you an Authorised Dealer.</p>
<p>£125 &#8211; £750 per day AND full Professional days. Quote by day and if it<br />
takes you 10 more days than quoted, you can&#8217;t ask for extra money. so don&#8217;t promise more than you can deliver and agree a continous review to make sure you&#8217;re on track.</p>
<p>You need to charge for project initiation (establishing your Business,<br />
Functional and Non-Functional Requirements) this isn&#8217;t included in the<br />
Design, Develop and Deploy phases.</p>
<p>Or do you want to go to a trader and buy a car from him in the ASDA parking lot and not know where he comes from, hope the the HPI check is legitimate and hope that he hasn&#8217;t thrown saw dust in the gear box as well as 1 or 2 banana skins. £10000 and make sure your buyer can&#8217;t find you or review your work and make sure you can&#8217;t build a reputation to sell so the same buyer again.</p></blockquote>
<p>Getting the quote right means treating the project in its entirety. There&#8217;s one thing I don&#8217;t like about this comparison, though, and that&#8217;s likening web developers to car dealers. In my experience, and I use those words carefully, web developers are somewhat more honest. I&#8217;m sure there are bad ones around &#8211; I&#8217;ve obviously been fortunate to meet the honest ones. The same cannot be said for car dealers!!</p>
]]></content:encoded>
			<wfw:commentRss>http://zoooj.com/blog/need-a-website-read-this-72/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Creating a Configurable Product</title>
		<link>http://zoooj.com/blog/creating-a-configurable-product-70/</link>
		<comments>http://zoooj.com/blog/creating-a-configurable-product-70/#comments</comments>
		<pubDate>Mon, 31 Oct 2011 12:10:34 +0000</pubDate>
		<dc:creator>zoooj</dc:creator>
				<category><![CDATA[Magento]]></category>
		<category><![CDATA[attribute sets]]></category>
		<category><![CDATA[attributes]]></category>
		<category><![CDATA[products]]></category>

		<guid isPermaLink="false">http://localhost/ROOT/Websites/S-Z/zoooj/Local/ZoooJKnowHow/?p=70</guid>
		<description><![CDATA[Customers can select options when they see a configurable product, e.g. colour or size. This is useful when you want them to click on a generic product name and then tailor the product to suit their needs. The first thing &#8230; <a href="http://zoooj.com/blog/creating-a-configurable-product-70/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Customers can select options when they see a configurable product, e.g. colour or size. This is useful when you want them to click on a generic product name and then tailor the product to suit their needs.</p>
<p>The first thing you have to do is create any new attributes you require. After specifying the values for these, you then create a new attribute set. Drag the new attributes into a new group called <em>Selectable Options</em>.</p>
<p>Next, you create the configurable product. Select the new attribute set and then select only the options you wish to include for this product. You can see by doing this that you could have one attribute set per configurable product type, or you could have one configurable product for all products in the shop.</p>
<p>After doing this you can assign simple products to the configurable product by clicking on<em> Associated Products</em> and selecting them. If the simple products don&#8217;t appear in the list as expected, then it&#8217;s most probable you either haven&#8217;t set the attribute scope to <em>Global</em> (required for all configurable product attributes) or you have assigned a different attribute set to the product.</p>
<p>Rule #1: Attributes used in configurable products need to have a global scope.<br />
Rule #2: Simple products assigned to configurable products need to be assigned the same attribute set.</p>
]]></content:encoded>
			<wfw:commentRss>http://zoooj.com/blog/creating-a-configurable-product-70/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Top Menu (Category) Page Links</title>
		<link>http://zoooj.com/blog/top-menu-category-page-links-53/</link>
		<comments>http://zoooj.com/blog/top-menu-category-page-links-53/#comments</comments>
		<pubDate>Fri, 28 Oct 2011 11:47:16 +0000</pubDate>
		<dc:creator>zoooj</dc:creator>
				<category><![CDATA[Magento]]></category>
		<category><![CDATA[category page]]></category>
		<category><![CDATA[cms]]></category>

		<guid isPermaLink="false">http://localhost/ROOT/Websites/S-Z/zoooj/Local/ZoooJKnowHow/?p=53</guid>
		<description><![CDATA[At some point you might need to add a link to a page on the top menu bar, the menu bar where the category anchor links appear. The steps are as follows. Create a new category named after the name &#8230; <a href="http://zoooj.com/blog/top-menu-category-page-links-53/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>At some point you might need to add a link to a page on the top menu bar, the menu bar where the category anchor links appear. The steps are as follows.</p>
<ol>
<li>Create a new category named after the name of the link.</li>
<li>Go to Url Rewrite Management. Select the newly created category and note down the target path. During setup this was catalog/category/view/id/21. Set Redirect to Permanent (301). Then save.</li>
<li>Next click Add URL Rewrite. Select Custom. Type the name of the page link in the ID Path field. Type the target path copied in (b) to Request Path. Type the URL for the page in the Target Path field. This must be different to the name entered in the category to prevent a circular reference. Last, select Permanent (301) in the Redirect list. Then save.</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://zoooj.com/blog/top-menu-category-page-links-53/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Adding a Language Pack</title>
		<link>http://zoooj.com/blog/adding-a-language-pack-50/</link>
		<comments>http://zoooj.com/blog/adding-a-language-pack-50/#comments</comments>
		<pubDate>Thu, 27 Oct 2011 14:22:17 +0000</pubDate>
		<dc:creator>zoooj</dc:creator>
				<category><![CDATA[Magento]]></category>
		<category><![CDATA[extensions]]></category>
		<category><![CDATA[locale]]></category>
		<category><![CDATA[magento connect]]></category>
		<category><![CDATA[packages]]></category>
		<category><![CDATA[translation]]></category>

		<guid isPermaLink="false">http://localhost/ROOT/Websites/S-Z/zoooj/Local/ZoooJKnowHow/?p=50</guid>
		<description><![CDATA[The default Magento build comes with the en-US language pack. To install a local language pack you can either use Magento Connect or do it manually. As Magento Connect doesn&#8217;t always work it&#8217;s often simpler and quicker to do it &#8230; <a href="http://zoooj.com/blog/adding-a-language-pack-50/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>The default Magento build comes with the en-US language pack. To install a local language pack you can either use Magento Connect or do it manually. As Magento Connect doesn&#8217;t always work it&#8217;s often simpler and quicker to do it manually.</p>
<p>A good tutorial is here: <a href="http://www.geekieblog.com/2011/10/adding-a-new-language-to-magento/">http://www.geekieblog.com/2011/10/adding-a-new-language-to-magento/</a> but the basic steps are:</p>
<ul>
<li>Grab the translation files</li>
<li>Upload them to the appropriate directories as they appear in the download</li>
<li>Change you store view locale</li>
<li>Delete the cache</li>
<li>Refresh the page</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://zoooj.com/blog/adding-a-language-pack-50/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Magento Connect Invalid Server Response</title>
		<link>http://zoooj.com/blog/magento-connect-invalid-server-response-46/</link>
		<comments>http://zoooj.com/blog/magento-connect-invalid-server-response-46/#comments</comments>
		<pubDate>Thu, 27 Oct 2011 13:45:28 +0000</pubDate>
		<dc:creator>zoooj</dc:creator>
				<category><![CDATA[Magento]]></category>
		<category><![CDATA[extensions]]></category>
		<category><![CDATA[magento connect]]></category>
		<category><![CDATA[packages]]></category>

		<guid isPermaLink="false">http://localhost/ROOT/Websites/S-Z/zoooj/Local/ZoooJKnowHow/?p=46</guid>
		<description><![CDATA[The reason for the following error message being shown during an attempt to install an extension in Magento version 1.5 or 1.6 is that the Magento Connect 2.0 extension key needs to be used. Invalid server response for http://magento-community When &#8230; <a href="http://zoooj.com/blog/magento-connect-invalid-server-response-46/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>The reason for the following error message being shown during an attempt to install an extension in Magento version 1.5 or 1.6 is that the Magento Connect 2.0 extension key needs to be used.</p>
<pre>Invalid server response for http://magento-community</pre>
<p>When searching for the extension make sure you select the correct version using the dropdown before agreeing to the terms and conditions.</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://zoooj.com/blog/magento-connect-invalid-server-response-46/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

