<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>p3docs</title>
	<atom:link href="http://p3docs.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://p3docs.wordpress.com</link>
	<description>developing p3docs</description>
	<lastBuildDate>Sun, 16 Oct 2011 10:49:27 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='p3docs.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>p3docs</title>
		<link>http://p3docs.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://p3docs.wordpress.com/osd.xml" title="p3docs" />
	<atom:link rel='hub' href='http://p3docs.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Testing and checking: Testing.</title>
		<link>http://p3docs.wordpress.com/2011/10/16/testing-and-checking-testing-2/</link>
		<comments>http://p3docs.wordpress.com/2011/10/16/testing-and-checking-testing-2/#comments</comments>
		<pubDate>Sun, 16 Oct 2011 10:49:24 +0000</pubDate>
		<dc:creator>p3docs</dc:creator>
				<category><![CDATA[django]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[software development]]></category>
		<category><![CDATA[testing]]></category>

		<guid isPermaLink="false">http://p3docs.wordpress.com/?p=179</guid>
		<description><![CDATA[In a previous post I wrote about checking (or static testing) of code. This post addresses the testing of p3docs. Developing web applications in python is a pleasure because there are so many tools available, similarly testing in django is also a pleasure because it takes and builds upon standard python testing libraries. Unit Testing [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=p3docs.wordpress.com&amp;blog=26847333&amp;post=179&amp;subd=p3docs&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>In a previous post I wrote about checking (or static testing) of code.<br />
This post addresses the testing of p3docs.</p>
<p>Developing web applications in python is a pleasure because there are so many tools available, similarly testing in django is also a pleasure because it takes and builds upon standard python testing libraries.</p>
<h2>Unit Testing</h2>
<h3>Choices</h3>
<p>At the start there are two real choices in python unit testing; <a title="doctest" href="http://docs.python.org/library/doctest.html">doctest </a>or <a title="unit test" href="http://docs.python.org/library/unittest.html">unittest</a>.</p>
<p>I am not sure why but doctests always seem a little disorganised for me. I have seen them used successfully in the real world and even used them in smaller scripts but unittest is the direction chosen for p3docs.</p>
<p>I find them easier to maintain and I also find it useful to have a good separation between the test code and the module code, it stops me from &#8216;peeking&#8217; at the code and swaying my decisions on the test code &#8211; mental blackboxing.</p>
<h4>Getting nosey</h4>
<p><a title="Nose" href="http://readthedocs.org/docs/nose/en/latest/" target="_blank">Nose</a> is a great way to extend unittest as projects grow, it offers several extra tricks and a few shortcuts, in my opinion it is hard to go back once you have used it.</p>
<h4>Django testing</h4>
<p>Django has great support for testing out of the box,but in my experience it quickly starts to fall short as projects get larger.</p>
<p>I already noted how much I like Nose and it is simple to integrate nose with django thanks to <a title="django-nose" href="https://github.com/jbalogh/django-nose" target="_blank">django-nose</a>.  After a very short setup you can run nosetests inside or outside django.</p>
<h2>Load Testing</h2>
<blockquote><p>Whilst p3docs is never intended to have extremely heavy loads it is always good to be aware of its&#8217; capacity.  I recently met with a friend who suffered an accidental javascript DOS attack on his servers and had to restrict and scale accordingly.  The most interesting thing for me was how this company did not have even a basic baseline for the load they could handle. If you don&#8217;t know where you are today how can you plan for tomorrow?</p></blockquote>
<p>P3docs does not need the complexity of a fine tool like Mechanize due to the niche market it is in at the current moment, so a great benchmarking tool is <a title="pylot" href="http://www.pylot.org/" target="_blank">pylot</a>.</p>
<p>Using this you can get a feel for how much load the default configuration can take and create a baseline for improvement.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/p3docs.wordpress.com/179/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/p3docs.wordpress.com/179/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/p3docs.wordpress.com/179/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/p3docs.wordpress.com/179/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/p3docs.wordpress.com/179/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/p3docs.wordpress.com/179/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/p3docs.wordpress.com/179/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/p3docs.wordpress.com/179/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/p3docs.wordpress.com/179/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/p3docs.wordpress.com/179/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/p3docs.wordpress.com/179/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/p3docs.wordpress.com/179/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/p3docs.wordpress.com/179/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/p3docs.wordpress.com/179/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=p3docs.wordpress.com&amp;blog=26847333&amp;post=179&amp;subd=p3docs&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://p3docs.wordpress.com/2011/10/16/testing-and-checking-testing-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/1e244d72eb29f28e49915508d8bf6a82?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">p3docs</media:title>
		</media:content>
	</item>
		<item>
		<title>Choose your tool: Vector images</title>
		<link>http://p3docs.wordpress.com/2011/09/29/choose-your-tool-vector-images/</link>
		<comments>http://p3docs.wordpress.com/2011/09/29/choose-your-tool-vector-images/#comments</comments>
		<pubDate>Thu, 29 Sep 2011 17:51:18 +0000</pubDate>
		<dc:creator>p3docs</dc:creator>
				<category><![CDATA[graphics]]></category>

		<guid isPermaLink="false">http://p3docs.wordpress.com/?p=172</guid>
		<description><![CDATA[For those of you that can remember it I spent many years using Corel Draw, in fact, it was second nature to me to just open it and do a lot of things.  Then it went away on the mac, leaving the very expensive Adobe Illustrator or the very cheap (Free) INKSCAPE, neither of which [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=p3docs.wordpress.com&amp;blog=26847333&amp;post=172&amp;subd=p3docs&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>For those of you that can remember it I spent many years using Corel Draw, in fact, it was second nature to me to just open it and do a lot of things.  Then it went away on the mac, leaving the very expensive <a href="http://www.adobe.com/products/illustrator.html" title="Adobe Illustrator" target="_blank">Adobe Illustrator</a> or the very cheap (Free) <a href="http://inkscape.org/">INKSCAPE</a>, neither of which I quite get along with.</p>
<p>So, when trying to do a fast image for a page on the p3docs website I always find myself reaching for the mac-only <a href="http://www.omnigroup.com/products/omnigraffle/" title="OmniGraffle" target="_blank">OmniGraffle</a>.  It is not perfect and it is rather expensive for what it does, but it is the fastest way that I have found to produce a good looking vector image and render it to a PNG that I have found.</p>
<p>If you only need a few images you can probably get away with the 14-day trial, then if you choose to use it, purchase it when the app is making money.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/p3docs.wordpress.com/172/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/p3docs.wordpress.com/172/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/p3docs.wordpress.com/172/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/p3docs.wordpress.com/172/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/p3docs.wordpress.com/172/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/p3docs.wordpress.com/172/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/p3docs.wordpress.com/172/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/p3docs.wordpress.com/172/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/p3docs.wordpress.com/172/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/p3docs.wordpress.com/172/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/p3docs.wordpress.com/172/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/p3docs.wordpress.com/172/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/p3docs.wordpress.com/172/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/p3docs.wordpress.com/172/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=p3docs.wordpress.com&amp;blog=26847333&amp;post=172&amp;subd=p3docs&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://p3docs.wordpress.com/2011/09/29/choose-your-tool-vector-images/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/1e244d72eb29f28e49915508d8bf6a82?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">p3docs</media:title>
		</media:content>
	</item>
		<item>
		<title>Testing and checking: Checking.</title>
		<link>http://p3docs.wordpress.com/2011/09/21/testing-and-checking-checking/</link>
		<comments>http://p3docs.wordpress.com/2011/09/21/testing-and-checking-checking/#comments</comments>
		<pubDate>Wed, 21 Sep 2011 20:52:58 +0000</pubDate>
		<dc:creator>p3docs</dc:creator>
				<category><![CDATA[django]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[software development]]></category>
		<category><![CDATA[testing]]></category>

		<guid isPermaLink="false">http://p3docs.wordpress.com/?p=113</guid>
		<description><![CDATA[Checking my code is something I do all of the time, in fact it is a central part of my build process(more on that in the future). Some people dislike static testing (or checking as I prefer to call it). The key point is that you do not have to act on the advice these [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=p3docs.wordpress.com&amp;blog=26847333&amp;post=113&amp;subd=p3docs&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Checking my code is something I do all of the time, in fact it is a central part of my build process(more on that in the future).</p>
<p>Some people dislike static testing (or checking as I prefer to call it). The key point is that you do not have to act on the advice these tools give you, it is enough to be aware of the output and to be sure that you have made an informed decision when you ignore it.</p>
<p>Developing <strong>web applications</strong> in <a href="http://python .org">python</a> and <a href="http://djangoproject.com">django</a> there are some obvious tools some less obvious ones, remember most of them are opinionated and they are not always right.</p>
<p>Below is a list of tools I use for checking.</p>
<ul>
<li>HTML
<ul>
<li><a href="http:/validator.w3.org/" target="_blank">W3C validator</a></li>
</ul>
</li>
<li>Javascript
<ul>
<li><a href="http://www.jshint.com" target="_blank">JSHint</a></li>
</ul>
</li>
<li>CSS
<ul>
<li><a href="http://csslint.net/" target="_blank">CSS Lint</a></li>
</ul>
</li>
<li>python
<ul>
<li><a href="http://pypi.python.org/pypi/pep8" target="_blank">pep8</a></li>
<li><a href="http://pypi.python.org/pypi/pylint" target="_blank">pylint</a></li>
<li><a href="http://clonedigger.sourceforge.net/" target="_blank">Clonedigger</a></li>
</ul>
</li>
<li>django
<ul>
<li><a href="https://github.com/lamby/django-lint" target="_blank">django-lint</a></li>
</ul>
</li>
<li>Other
<ul>
<li><a href="http://www.dwheeler.com/sloccount/" target="_blank">SLOCCount</a></li>
</ul>
</li>
</ul>
<p>I wrap most of these in <a title="fabric" href="http://docs.fabfile.org">fabric</a> tasks and use them in my build process.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/p3docs.wordpress.com/113/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/p3docs.wordpress.com/113/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/p3docs.wordpress.com/113/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/p3docs.wordpress.com/113/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/p3docs.wordpress.com/113/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/p3docs.wordpress.com/113/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/p3docs.wordpress.com/113/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/p3docs.wordpress.com/113/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/p3docs.wordpress.com/113/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/p3docs.wordpress.com/113/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/p3docs.wordpress.com/113/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/p3docs.wordpress.com/113/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/p3docs.wordpress.com/113/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/p3docs.wordpress.com/113/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=p3docs.wordpress.com&amp;blog=26847333&amp;post=113&amp;subd=p3docs&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://p3docs.wordpress.com/2011/09/21/testing-and-checking-checking/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/1e244d72eb29f28e49915508d8bf6a82?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">p3docs</media:title>
		</media:content>
	</item>
		<item>
		<title>Design decision: Internationalisation always in mind, i18n</title>
		<link>http://p3docs.wordpress.com/2011/09/16/design-decision-internationalisation-always-in-mind-i18n/</link>
		<comments>http://p3docs.wordpress.com/2011/09/16/design-decision-internationalisation-always-in-mind-i18n/#comments</comments>
		<pubDate>Fri, 16 Sep 2011 10:06:44 +0000</pubDate>
		<dc:creator>p3docs</dc:creator>
				<category><![CDATA[software development]]></category>
		<category><![CDATA[startup]]></category>

		<guid isPermaLink="false">http://p3docs.wordpress.com/?p=107</guid>
		<description><![CDATA[Having been caught out by this a few times I made a decision about 7 years ago always to design with internationalisation in mind. At that time and working in PHP, the tools were a bit poor and so I had to &#8220;roll my own&#8221; database version; it was a bit hackish but it did [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=p3docs.wordpress.com&amp;blog=26847333&amp;post=107&amp;subd=p3docs&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Having been caught out by this a few times I made a decision about 7 years ago always to design with internationalisation in mind.<br />
<br />
At that time and working in PHP, the tools were a bit poor and so I had to &#8220;roll my own&#8221; database version; it was a bit hackish but it did the job and enabled me to syndicate a customer&#8217;s content to other sites.
</p>
<p>Thankfully, the tools are much better now, but, it still amazes me how few businesses do it.  In the past 5 years I have not worked for a company that have internationalisation already in-place in their code.
</p>
<p>One of the things that p3docs has done is focus on internationalisation from the start, with all possible strings marked for it.<br />
<br />
It takes a few extra lines of code but I believe it is worth it (it also becomes a habit very fast and one stops thinking about the process).
</p>
<p><strong>To bring this message home, I was visiting an old friend yesterday who has a successful and rapidly growing software business:</strong><br />
<br />
Upon arrival at his office he was working on retrofitting his applicaion with Japanese, a market he had not foreseen.  Instead of just passing the language files off to a translator he was having to search the entire codebase for translation strings.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/p3docs.wordpress.com/107/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/p3docs.wordpress.com/107/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/p3docs.wordpress.com/107/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/p3docs.wordpress.com/107/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/p3docs.wordpress.com/107/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/p3docs.wordpress.com/107/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/p3docs.wordpress.com/107/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/p3docs.wordpress.com/107/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/p3docs.wordpress.com/107/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/p3docs.wordpress.com/107/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/p3docs.wordpress.com/107/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/p3docs.wordpress.com/107/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/p3docs.wordpress.com/107/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/p3docs.wordpress.com/107/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=p3docs.wordpress.com&amp;blog=26847333&amp;post=107&amp;subd=p3docs&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://p3docs.wordpress.com/2011/09/16/design-decision-internationalisation-always-in-mind-i18n/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/1e244d72eb29f28e49915508d8bf6a82?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">p3docs</media:title>
		</media:content>
	</item>
		<item>
		<title>Choose your tool: Version Control</title>
		<link>http://p3docs.wordpress.com/2011/09/13/choose-your-tool-version-control/</link>
		<comments>http://p3docs.wordpress.com/2011/09/13/choose-your-tool-version-control/#comments</comments>
		<pubDate>Tue, 13 Sep 2011 16:12:23 +0000</pubDate>
		<dc:creator>p3docs</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://p3docs.wordpress.com/?p=84</guid>
		<description><![CDATA[There is really no excuse not to use version control.Combined with a good backup strategy this should be done right at the start of your project. For p3docs I selected bazaar because: I am used to it and comfortable with it It is written in python so it is relatively portable and I can inspect [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=p3docs.wordpress.com&amp;blog=26847333&amp;post=84&amp;subd=p3docs&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>There is really no excuse not to use version control.<br />Combined with a good backup strategy this should be done right at the start of your project.</p>
<p>For p3docs I selected <a href="http://bazaar.canonical.com/" title="bazaar" target="_blank">bazaar</a> because:</p>
<ul>
<li>I am used to it and comfortable with it</li>
<li>It is written in <a href="http://python.org/" title="python" target="_blank">python</a> so it is relatively portable and I can inspect the code if necessary</li>
<li>Unlike many VCS systems it allows me to save empty directories</li>
</ul>
<h2>Setting up the development directory</h2>
<p>
   Based on the <a href="http://wp.me/P1OEdv-1x" title="assumptions">assumptions</a>.
</p>
<pre>
    bzr init-repo --trees ~/Development/p3docs
    cd ~/Development/p3docs
    bzr init
    bzr ignore .DS_Store
    bzr ignore .project
    bzr ignore *.pyc
    bzr ignore *.pyo
</pre>
<p>There are many version control systems out there and most of them are <em>free</em>.<br />It does not really matter which one you choose, just choose and use one.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/p3docs.wordpress.com/84/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/p3docs.wordpress.com/84/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/p3docs.wordpress.com/84/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/p3docs.wordpress.com/84/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/p3docs.wordpress.com/84/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/p3docs.wordpress.com/84/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/p3docs.wordpress.com/84/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/p3docs.wordpress.com/84/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/p3docs.wordpress.com/84/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/p3docs.wordpress.com/84/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/p3docs.wordpress.com/84/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/p3docs.wordpress.com/84/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/p3docs.wordpress.com/84/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/p3docs.wordpress.com/84/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=p3docs.wordpress.com&amp;blog=26847333&amp;post=84&amp;subd=p3docs&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://p3docs.wordpress.com/2011/09/13/choose-your-tool-version-control/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/1e244d72eb29f28e49915508d8bf6a82?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">p3docs</media:title>
		</media:content>
	</item>
		<item>
		<title>Looking after your Intellectual Property</title>
		<link>http://p3docs.wordpress.com/2011/09/12/looking-after-your-intellectual-property/</link>
		<comments>http://p3docs.wordpress.com/2011/09/12/looking-after-your-intellectual-property/#comments</comments>
		<pubDate>Mon, 12 Sep 2011 18:49:07 +0000</pubDate>
		<dc:creator>p3docs</dc:creator>
				<category><![CDATA[bazaar]]></category>
		<category><![CDATA[fabric]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[software development]]></category>
		<category><![CDATA[startup]]></category>
		<category><![CDATA[VCS]]></category>

		<guid isPermaLink="false">http://p3docs.wordpress.com/?p=41</guid>
		<description><![CDATA[A quick diversion here, I will jump back to the setup stages (including version control). It occurred to me how important it is to look after your IP. Looking after it tends to be expensive, however as a startup if we just think about evidencing it we can take a few very cost-effective steps. Here [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=p3docs.wordpress.com&amp;blog=26847333&amp;post=41&amp;subd=p3docs&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>A quick diversion here, I will jump back to the setup stages (including version control).</p>
<p>It occurred to me how important it is to look after your IP.<br />
Looking after it tends to be expensive, however as a startup if we just think about evidencing it we can take a few very cost-effective steps.</p>
<p>Here is how I do it:</p>
<h2>The short version:</h2>
<ol>
<li>Make a backup on a DVD/CD of a checkout from your version control</li>
<li>Mail it to yourself</li>
</ol>
<h2>The long version:</h2>
<ol>
<li>Create a backup of the development sources
<ul>
<li>Perform a clean checkout from your VCS of the current version.</li>
<li>Make a note of the version identifier</li>
<li>Compress and encrypt the version to save space and protect it from prying eyes</li>
</ul>
</li>
<li>Create a CD/DVD
<ul>
<li>Copy the compressed backup to a blank CD/DVD</li>
<li>Name the CD/DVD &#8220;p3docs_backup&#8221;</li>
<li>Label the disk in permanent marker with &#8220;p3docs Backup&#8221; at the top</li>
<li>Label the disk in permanent marker with the date &#8220;yyyy/mm/dd&#8221; and version identifier&#8221;V.xxx.&#8221; at the bottom</li>
</ul>
</li>
<li>Mail the CD/DVD
<ul>
<li>Address a padded envelope to your home/office/backup address and insert the disk</li>
<li>Write the date &#8220;yyyy/mm/dd&#8221;, the version identifier &#8220;Rev.xxx.&#8221;and your signature across the seal of the envelope</li>
<li>Apply a piece of clear tape over the seal of the envelope and the writing</li>
<li>Add a stamp.</li>
<li>Mail the package</li>
</ul>
</li>
</ol>
<h2>Automating the process</h2>
<h3>Fabric Task</h3>
<p>I use <a title="fabric" href="http://fabfile.org/">fabric</a> to automate most of my <a title="fabric" href="http://python.org/">python</a> tasks, so a simple task in my fabfile carries out most of the steps.</p>
<pre>env.repo_dir = '/path/to/repository/'
env.bak_dir = '/path/to/backup/'
env.pwd = 'password'
env.version = 0

@task
def ip_backup():
import os

with settings(warn_only=True):
    os.mkdir(env.bak_dir)
    local('bzr checkout {0} {1}'.format(env.repo_dir, env.bak_dir))
    with lcd(env.bak_dir):
        env.revno = local('bzr revno', capture=True)
        local('zip -r -p "{0}" {1}p3docs_backup_rev{2}.zip p3docs'.format(env.pwd,
        env.bak_dir,env.revno, capture=True)</pre>
<h2>Reminding Yourself</h2>
<p>I like to do this once a month, so I set a reminder in my calendar to mail it, my mac sends me  mail and nags me to do it.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/p3docs.wordpress.com/41/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/p3docs.wordpress.com/41/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/p3docs.wordpress.com/41/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/p3docs.wordpress.com/41/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/p3docs.wordpress.com/41/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/p3docs.wordpress.com/41/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/p3docs.wordpress.com/41/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/p3docs.wordpress.com/41/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/p3docs.wordpress.com/41/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/p3docs.wordpress.com/41/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/p3docs.wordpress.com/41/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/p3docs.wordpress.com/41/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/p3docs.wordpress.com/41/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/p3docs.wordpress.com/41/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=p3docs.wordpress.com&amp;blog=26847333&amp;post=41&amp;subd=p3docs&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://p3docs.wordpress.com/2011/09/12/looking-after-your-intellectual-property/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/1e244d72eb29f28e49915508d8bf6a82?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">p3docs</media:title>
		</media:content>
	</item>
		<item>
		<title>Naming the product and securing that name</title>
		<link>http://p3docs.wordpress.com/2011/09/10/naming-the-product-and-securing-that-name/</link>
		<comments>http://p3docs.wordpress.com/2011/09/10/naming-the-product-and-securing-that-name/#comments</comments>
		<pubDate>Sat, 10 Sep 2011 18:14:11 +0000</pubDate>
		<dc:creator>p3docs</dc:creator>
				<category><![CDATA[startup]]></category>

		<guid isPermaLink="false">http://p3docs.wordpress.com/?p=28</guid>
		<description><![CDATA[Selecting a working name for the product right at the start helps me in all stages of setup. It fixes an identity for the product in my mind and it helps with structuring the development environment. It does not have to be the &#8220;final&#8221; name, a simple &#8220;working&#8221; name is good enough and the final [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=p3docs.wordpress.com&amp;blog=26847333&amp;post=28&amp;subd=p3docs&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Selecting a working name for the product right at the start helps me in all stages of setup. It fixes an identity for the product in my mind and it helps with structuring the development environment.</p>
<p>It does not have to be the &#8220;final&#8221; name, a simple &#8220;working&#8221; name is good enough and the final name will often come out in the process.</p>
<p>My technique was to come up with a handful of ideas and then research them on the web to make sure that they:</p>
<ul>
<li>are not already in use</li>
<li>are not already trademarked</li>
<li>do not have bad connotations</li>
<li>do not have a bad reputation now or in the past</li>
<li>are available for registering</li>
</ul>
<p>At the end of this &#8220;p3docs&#8221; stood out as a name that fulfilled the above criteria.  The next stage was to register the name as a domain and to tie it to several services.</p>
<p>Spending the minimum amount of money was an important factor, so I made a couple of decisions:</p>
<ul>
<li>register the &#8220;p3docs.com&#8221; domain to secure it. My first and only investment so far, (10 Euros)</li>
<li>use a free blogging site rather than setting up a dedicated server</li>
<li>use a free email service rather than a dedicated email address</li>
</ul>
<p>With this done, the final stage was to secure the identity with prominent services, setting up accounts with the username &#8220;p3docs&#8221;:</p>
<ul>
<li>Twitter</li>
<li>Facebook</li>
<li>Google</li>
<li>WordPress.com (for this blog)</li>
<li>Skype</li>
</ul>
<p>The services that you register with depend on the resources you will use, or plan to use. You should grab them all now.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/p3docs.wordpress.com/28/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/p3docs.wordpress.com/28/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/p3docs.wordpress.com/28/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/p3docs.wordpress.com/28/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/p3docs.wordpress.com/28/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/p3docs.wordpress.com/28/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/p3docs.wordpress.com/28/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/p3docs.wordpress.com/28/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/p3docs.wordpress.com/28/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/p3docs.wordpress.com/28/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/p3docs.wordpress.com/28/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/p3docs.wordpress.com/28/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/p3docs.wordpress.com/28/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/p3docs.wordpress.com/28/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=p3docs.wordpress.com&amp;blog=26847333&amp;post=28&amp;subd=p3docs&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://p3docs.wordpress.com/2011/09/10/naming-the-product-and-securing-that-name/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/1e244d72eb29f28e49915508d8bf6a82?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">p3docs</media:title>
		</media:content>
	</item>
		<item>
		<title>What is this?</title>
		<link>http://p3docs.wordpress.com/2011/09/01/hello-world/</link>
		<comments>http://p3docs.wordpress.com/2011/09/01/hello-world/#comments</comments>
		<pubDate>Thu, 01 Sep 2011 19:17:52 +0000</pubDate>
		<dc:creator>p3docs</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://p3docs.wordpress.com/?p=1</guid>
		<description><![CDATA[p3docs is an experiment in starting a small software business with a simple but useful product from scratch, documenting the process as it matures. In the process I hope to document: decisions made (and eventually the outcomes) procedures employed (and eventually the outcomes) tools used useful snippets of code general thoughts on anything related to [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=p3docs.wordpress.com&amp;blog=26847333&amp;post=1&amp;subd=p3docs&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>p3docs is an experiment in starting a small software business with a simple but useful product from scratch, documenting the process as it matures.</p>
<p>In the process I hope to document:</p>
<ul>
<li>decisions made (and eventually the outcomes)</li>
<li>procedures employed (and eventually the outcomes)</li>
<li>tools used</li>
<li>useful snippets of code</li>
<li>general thoughts on anything related to the development process</li>
</ul>
<p><em>Note:</em></p>
<p><em>It is possible that you are reading this after the experiment has been concluded, either successfully or unsuccessfully and this site may no longer be being updated.</em></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/p3docs.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/p3docs.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/p3docs.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/p3docs.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/p3docs.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/p3docs.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/p3docs.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/p3docs.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/p3docs.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/p3docs.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/p3docs.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/p3docs.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/p3docs.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/p3docs.wordpress.com/1/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=p3docs.wordpress.com&amp;blog=26847333&amp;post=1&amp;subd=p3docs&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://p3docs.wordpress.com/2011/09/01/hello-world/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/1e244d72eb29f28e49915508d8bf6a82?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">p3docs</media:title>
		</media:content>
	</item>
	</channel>
</rss>
