<?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>LuckyDonkey &#187; Software</title>
	<atom:link href="http://www.luckydonkey.com/category/software/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.luckydonkey.com</link>
	<description>Never knowingly knowing narwhals</description>
	<lastBuildDate>Sat, 19 Mar 2011 13:59:14 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	
		<item>
		<title>Beep My Stuff enters public Beta</title>
		<link>http://www.luckydonkey.com/2009/04/02/beep-my-stuff-enters-public-beta/</link>
		<comments>http://www.luckydonkey.com/2009/04/02/beep-my-stuff-enters-public-beta/#comments</comments>
		<pubDate>Thu, 02 Apr 2009 23:00:23 +0000</pubDate>
		<dc:creator>dazza</dc:creator>
				<category><![CDATA[Beep My Stuff]]></category>
		<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[PostgreSQL]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[SQLAlchemy]]></category>
		<category><![CDATA[TurboGears]]></category>

		<guid isPermaLink="false">http://www.luckydonkey.com/?p=226</guid>
		<description><![CDATA[After a rather long period in closed beta I've opened Beep My Stuff to a public beta. Beep My Stuff is a web site that makes it FREE and easy to create an online library of your Books, Movies, Video Games and Music. Check it out, all feedback is much appreciated. It's built with Turbogears, [...]]]></description>
			<content:encoded><![CDATA[<p><div id="attachment_232" class="wp-caption aligncenter" style="width: 310px"><img src="http://www.luckydonkey.com/wp-content/uploads/2009/04/bms_logo-300x147.jpg" alt="Beep My Stuff" title="bms_logo" width="300" height="147" class="size-medium wp-image-232" /><p class="wp-caption-text">Beep My Stuff</p></div><br />
After a rather long period in closed beta I've opened <a href="http://www.beepmystuff.com/">Beep My Stuff</a> to a public beta.</p>
<p><a href="http://www.beepmystuff.com/">Beep My Stuff</a> is a web site that makes it FREE and easy to create an online library of your Books, Movies, Video Games and Music. Check it out, all feedback is much appreciated.</p>
<p>It's built with <a href="http://www.turbogears.org/">Turbogears</a>, <a href="http://www.sqlalchemy.org/">SQLAlchemy</a>, <a href="http://genshi.edgewall.org/">Genshi</a> and countless other python modules. It's all sitting on <a href="http://www.python.org/">Python</a>, <a href="http://www.freebsd.org/">FreeBSD</a> and <a href="http://www.postgresql.org/">PostgreSQL</a>.</p>
<p>Just wanted to say thanks to all the pythonista's out there that helped me get this far <img src='http://www.luckydonkey.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><map name='google_ad_map_226_afea9fcd39d8b84a'>
<area shape='rect' href='http://imageads.googleadservices.com/pagead/imgclick/226?pos=0' coords='1,2,367,28' />
<area shape='rect' href='http://services.google.com/feedback/abg' coords='384,10,453,23'/></map>
<img usemap='#google_ad_map_226_afea9fcd39d8b84a' border='0' src='http://imageads.googleadservices.com/pagead/ads?format=468x30_aff_img&amp;client=&amp;channel=&amp;output=png&amp;cuid=226&amp;url= http%3A%2F%2Fwww.luckydonkey.com%2F2009%2F04%2F02%2Fbeep-my-stuff-enters-public-beta%2F' /></p>]]></content:encoded>
			<wfw:commentRss>http://www.luckydonkey.com/2009/04/02/beep-my-stuff-enters-public-beta/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Mac OSX: starting postgres on boot</title>
		<link>http://www.luckydonkey.com/2008/07/03/mac-osx-starting-postgres-on-boot/</link>
		<comments>http://www.luckydonkey.com/2008/07/03/mac-osx-starting-postgres-on-boot/#comments</comments>
		<pubDate>Thu, 03 Jul 2008 16:57:41 +0000</pubDate>
		<dc:creator>dazza</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://www.luckydonkey.com/?p=208</guid>
		<description><![CDATA[Every bloody operating system has it's own unique way of starting things at boot time. Today I bothered to learn how OS X does it. Here's how I got PostgreSQL to start when my machine is turned on: What gets started is handled by a program called SystemStarter. On boot it looks through /Library/StartupItems for [...]]]></description>
			<content:encoded><![CDATA[<p><script type="text/javascript"><!--
google_ad_client = "pub-9998980871049158";
//468x60, created 11/22/07
google_ad_slot = "6052810016";
google_ad_width = 468;
google_ad_height = 60;
//--></script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>Every bloody operating system has it's own unique way of starting things at boot time. Today I bothered to learn how OS X does it. Here's how I got PostgreSQL to start when my machine is turned on:</p>
<p>What gets started is handled by a program called SystemStarter. On boot it looks through /Library/StartupItems for folders. Inside those folders it looks for a script with the same name as the folder and a plist called StartupParameters.plist.</p>
<p>So as super user:</p>
<pre class="bash"><span style="color: #7a0874; font-weight: bold;">cd</span> /Library/StartupItems/
<span style="color: #c20cb9; font-weight: bold;">mkdir</span> PostgreSQL
<span style="color: #c20cb9; font-weight: bold;">touch</span> PostgreSQL/PostgreSQL
<span style="color: #c20cb9; font-weight: bold;">touch</span> PostgreSQL/StartupParameters.plist
&nbsp;</pre>
<p>Now we need to fill in the details. In PostgreSQL/PostgreSQL enter:</p>
<pre class="bash"><span style="color: #808080; font-style: italic;">#!/bin/sh</span>
&nbsp;
<span style="color: #c20cb9; font-weight: bold;">sudo</span> -u postgres /usr/<span style="color: #7a0874; font-weight: bold;">local</span>/pgsql/bin/pg_ctl -D /usr/<span style="color: #7a0874; font-weight: bold;">local</span>/pgsql/data -l /usr/<span style="color: #7a0874; font-weight: bold;">local</span>/pgsql/data/logfile start</pre>
<p>This is a long line, but it's basically running postgres (via pg_ctl) as the user postgres. You'll need to change this to the whatever user you run postgres as and where ever your install of postgres is. I've used the standard names and directories so it's likely this will work for you too.</p>
<p>Now lets look at the plist. This file contains information for SystemStarter about when to start postgres, what postgres needs and provides and any messages to print to log files:</p>
<pre class="xml">&nbsp;
<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;?xml</span> <span style="color: #000066;">version</span>=<span style="color: #ff0000;">&quot;1.0&quot;</span> <span style="color: #000066;">encoding</span>=<span style="color: #ff0000;">&quot;UTF-8&quot;</span><span style="font-weight: bold; color: black;">?&gt;</span></span>
<span style="color: #00bbdd;">&lt;!DOCTYPE plist SYSTEM &quot;file://localhost/System/Library/DTDs/PropertyList.dtd&quot;&gt;</span>
<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;plist</span> <span style="color: #000066;">version</span>=<span style="color: #ff0000;">&quot;0.9&quot;</span><span style="font-weight: bold; color: black;">&gt;</span></span>
<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;dict<span style="font-weight: bold; color: black;">&gt;</span></span></span>
        <span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;key<span style="font-weight: bold; color: black;">&gt;</span></span></span>Description<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/key<span style="font-weight: bold; color: black;">&gt;</span></span></span>
        <span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;string<span style="font-weight: bold; color: black;">&gt;</span></span></span>PostgreSQL<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/string<span style="font-weight: bold; color: black;">&gt;</span></span></span>
        <span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;key<span style="font-weight: bold; color: black;">&gt;</span></span></span>Messages<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/key<span style="font-weight: bold; color: black;">&gt;</span></span></span>
        <span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;dict<span style="font-weight: bold; color: black;">&gt;</span></span></span>
                <span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;key<span style="font-weight: bold; color: black;">&gt;</span></span></span>start<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/key<span style="font-weight: bold; color: black;">&gt;</span></span></span>
                <span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;string<span style="font-weight: bold; color: black;">&gt;</span></span></span>Starting PostgreSQL<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/string<span style="font-weight: bold; color: black;">&gt;</span></span></span>
                <span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;key<span style="font-weight: bold; color: black;">&gt;</span></span></span>stop<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/key<span style="font-weight: bold; color: black;">&gt;</span></span></span>
                <span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;string<span style="font-weight: bold; color: black;">&gt;</span></span></span>Stopping PostgreSQL<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/string<span style="font-weight: bold; color: black;">&gt;</span></span></span>
        <span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/dict<span style="font-weight: bold; color: black;">&gt;</span></span></span>
        <span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;key<span style="font-weight: bold; color: black;">&gt;</span></span></span>OrderPreference<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/key<span style="font-weight: bold; color: black;">&gt;</span></span></span>
        <span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;string<span style="font-weight: bold; color: black;">&gt;</span></span></span>None<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/string<span style="font-weight: bold; color: black;">&gt;</span></span></span>
        <span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;key<span style="font-weight: bold; color: black;">&gt;</span></span></span>Provides<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/key<span style="font-weight: bold; color: black;">&gt;</span></span></span>
        <span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;array<span style="font-weight: bold; color: black;">&gt;</span></span></span>
                <span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;string<span style="font-weight: bold; color: black;">&gt;</span></span></span>PostgreSQL<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/string<span style="font-weight: bold; color: black;">&gt;</span></span></span>
        <span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/array<span style="font-weight: bold; color: black;">&gt;</span></span></span>
<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/dict<span style="font-weight: bold; color: black;">&gt;</span></span></span>
<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/plist<span style="font-weight: bold; color: black;">&gt;</span></span></span>
&nbsp;</pre>
<p>You can test your new settings by typing sudo SystemStarter -n -D, fix any error messages, reboot and you should have postgres all the time <img src='http://www.luckydonkey.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><map name='google_ad_map_208_afea9fcd39d8b84a'>
<area shape='rect' href='http://imageads.googleadservices.com/pagead/imgclick/208?pos=0' coords='1,2,367,28' />
<area shape='rect' href='http://services.google.com/feedback/abg' coords='384,10,453,23'/></map>
<img usemap='#google_ad_map_208_afea9fcd39d8b84a' border='0' src='http://imageads.googleadservices.com/pagead/ads?format=468x30_aff_img&amp;client=&amp;channel=&amp;output=png&amp;cuid=208&amp;url= http%3A%2F%2Fwww.luckydonkey.com%2F2008%2F07%2F03%2Fmac-osx-starting-postgres-on-boot%2F' /></p>]]></content:encoded>
			<wfw:commentRss>http://www.luckydonkey.com/2008/07/03/mac-osx-starting-postgres-on-boot/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Password, it&#8217;s just not obvious to normal people</title>
		<link>http://www.luckydonkey.com/2008/05/20/password-its-just-not-obvious-to-normal-people/</link>
		<comments>http://www.luckydonkey.com/2008/05/20/password-its-just-not-obvious-to-normal-people/#comments</comments>
		<pubDate>Tue, 20 May 2008 01:18:08 +0000</pubDate>
		<dc:creator>dazza</dc:creator>
				<category><![CDATA[Rant]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://www.luckydonkey.com/?p=206</guid>
		<description><![CDATA[As a programmer and all round geek I spend a lot of my time thinking about user interfaces for normal people. This is probably the hardest aspect to programming. Putting yourself in the place of a normal user is, basically, impossible but every programmer/ui designer attempts to do this EVERY day. Why am I talking [...]]]></description>
			<content:encoded><![CDATA[<p><script type="text/javascript"><!--
google_ad_client = "pub-9998980871049158";
//468x60, created 11/22/07
google_ad_slot = "6052810016";
google_ad_width = 468;
google_ad_height = 60;
//--></script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>As a programmer and all round geek I spend a lot of my time thinking about user interfaces for normal people. This is probably the hardest aspect to programming.</p>
<p>Putting yourself in the place of a normal user is, basically, impossible but every programmer/ui designer attempts to do this EVERY day.</p>
<p>Why am I talking about this? Well my dad's hotmail account was hacked over the weekend and of course I was called to look in to it. Of course my first thought was that he had a weak password. So I ask him  "How good is your password, does it contain numbers and puntuation?". He paused and said "No, it's a word, they asked for a pass WORD".</p>
<p>Now it's easy to think that this is my dad's fault. But when you think about it, he did exactly what was asked of him. He entered a pass WORD a single word. A word from the dictionary, that's where words come from for normal people.</p>
<p>No one programmer or designer has failed him. An entire industry asks to world for passwords. To the industry, this is normal. It knows what it means by password but to normal people it means a word.</p>
<p>With this in mind I've raised a ticket for <a href='http://www.newmetalarmy.com'>New Metal Army</a> to change the word password to pass phrase (after asking my dad what he thought it meant of course).</p>
<p><map name='google_ad_map_206_afea9fcd39d8b84a'>
<area shape='rect' href='http://imageads.googleadservices.com/pagead/imgclick/206?pos=0' coords='1,2,367,28' />
<area shape='rect' href='http://services.google.com/feedback/abg' coords='384,10,453,23'/></map>
<img usemap='#google_ad_map_206_afea9fcd39d8b84a' border='0' src='http://imageads.googleadservices.com/pagead/ads?format=468x30_aff_img&amp;client=&amp;channel=&amp;output=png&amp;cuid=206&amp;url= http%3A%2F%2Fwww.luckydonkey.com%2F2008%2F05%2F20%2Fpassword-its-just-not-obvious-to-normal-people%2F' /></p>]]></content:encoded>
			<wfw:commentRss>http://www.luckydonkey.com/2008/05/20/password-its-just-not-obvious-to-normal-people/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Interesting Take on Breakout</title>
		<link>http://www.luckydonkey.com/2008/04/23/interesting-take-on-breakout/</link>
		<comments>http://www.luckydonkey.com/2008/04/23/interesting-take-on-breakout/#comments</comments>
		<pubDate>Wed, 23 Apr 2008 19:25:39 +0000</pubDate>
		<dc:creator>dazza</dc:creator>
				<category><![CDATA[Rant]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://www.luckydonkey.com/?p=205</guid>
		<description><![CDATA[Some friends of mine have been working on a 'breakout' style game. I put breakout in quotes because it's not just a simple copy of breakout. They've added a lot of cool stuff to the game. It looks stunning and the demo I played about 5 months ago played really well. I've not played the [...]]]></description>
			<content:encoded><![CDATA[<p>Some friends of mine have been working on a 'breakout' style game. I put breakout in quotes because it's not just a simple copy of breakout. They've added a lot of cool stuff to the game. It looks stunning and the demo I played about 5 months ago played really well. I've not played the latest version but I am sure it's only got better.</p>
<p>Check out the video!</p>
<p><object width="425" height="355"><param name="movie" value="http://www.youtube.com/v/TnW0q1iJ8Fo&hl=en"></param><param name="wmode" value="transparent"></param><embed src="http://www.youtube.com/v/TnW0q1iJ8Fo&hl=en" type="application/x-shockwave-flash" wmode="transparent" width="425" height="355"></embed></object></p>
<p>You can read more <a href='http://www.slam-game.com/game.html'>here</a></p>
<p><map name='google_ad_map_205_afea9fcd39d8b84a'>
<area shape='rect' href='http://imageads.googleadservices.com/pagead/imgclick/205?pos=0' coords='1,2,367,28' />
<area shape='rect' href='http://services.google.com/feedback/abg' coords='384,10,453,23'/></map>
<img usemap='#google_ad_map_205_afea9fcd39d8b84a' border='0' src='http://imageads.googleadservices.com/pagead/ads?format=468x30_aff_img&amp;client=&amp;channel=&amp;output=png&amp;cuid=205&amp;url= http%3A%2F%2Fwww.luckydonkey.com%2F2008%2F04%2F23%2Finteresting-take-on-breakout%2F' /></p>]]></content:encoded>
			<wfw:commentRss>http://www.luckydonkey.com/2008/04/23/interesting-take-on-breakout/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Adobe Flash: Not starting off on the correct foot</title>
		<link>http://www.luckydonkey.com/2008/04/23/adobe-flash-not-starting-off-on-the-correct-foot/</link>
		<comments>http://www.luckydonkey.com/2008/04/23/adobe-flash-not-starting-off-on-the-correct-foot/#comments</comments>
		<pubDate>Wed, 23 Apr 2008 10:45:15 +0000</pubDate>
		<dc:creator>dazza</dc:creator>
				<category><![CDATA[Rant]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://www.luckydonkey.com/?p=204</guid>
		<description><![CDATA[I'm about to embark on a learning exercise. I want to get my head around Flash to see if I can enhance New Metal Army. So I go to the Adobe website and click through to product demos... register (why do I have to register for EVERYTHING) and click on the download trial button... firefox [...]]]></description>
			<content:encoded><![CDATA[<p><script type="text/javascript"><!--
google_ad_client = "pub-9998980871049158";
google_ad_slot = "6052810016";
google_ad_width = 468;
google_ad_height = 60;
//--></script>
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
<br clear="all">I'm about to embark on a learning exercise. I want to get my head around Flash to see if I can enhance <a href='http://www.newmetalamry.com'>New Metal Army</a>. So I go to the Adobe website and click through to product demos... register (why do I have to register for EVERYTHING) and click on the download trial button... firefox redirects  all over the place and then nothing happens! So I try it in Safari... nothing happens.... I give up!</p>
<p>The next day (determined to get somewhere) I run VMWare Fusion, go in to IE and after a million click sounds I start downloading the Mac version of Flash CS3. So I need Windows to download the Mac version...grr</p>
<p>Being a good netizen I decide to file a ticket against the problem:</p>
<p><img src="http://www.luckydonkey.com/wp-content/uploads/2008/04/picture-2-2.png" height="304" width="464" border="1" hspace="4" vspace="4" alt="Picture 2-2" /></p>
<p><strong>EUROPEAN ENGLISH</strong>! There is no such thing as European English. There is English and American English. One of them is correct, the other is a phonetically correct abomination.</p>
<p>I didn't realise my 30 day trial would be such a trial.</p>
<p><map name='google_ad_map_204_afea9fcd39d8b84a'>
<area shape='rect' href='http://imageads.googleadservices.com/pagead/imgclick/204?pos=0' coords='1,2,367,28' />
<area shape='rect' href='http://services.google.com/feedback/abg' coords='384,10,453,23'/></map>
<img usemap='#google_ad_map_204_afea9fcd39d8b84a' border='0' src='http://imageads.googleadservices.com/pagead/ads?format=468x30_aff_img&amp;client=&amp;channel=&amp;output=png&amp;cuid=204&amp;url= http%3A%2F%2Fwww.luckydonkey.com%2F2008%2F04%2F23%2Fadobe-flash-not-starting-off-on-the-correct-foot%2F' /></p>]]></content:encoded>
			<wfw:commentRss>http://www.luckydonkey.com/2008/04/23/adobe-flash-not-starting-off-on-the-correct-foot/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Turbogears Development: Enviroment</title>
		<link>http://www.luckydonkey.com/2008/04/19/turbogears-development-enviroment/</link>
		<comments>http://www.luckydonkey.com/2008/04/19/turbogears-development-enviroment/#comments</comments>
		<pubDate>Sat, 19 Apr 2008 10:08:05 +0000</pubDate>
		<dc:creator>dazza</dc:creator>
				<category><![CDATA[NewMetalArmy]]></category>
		<category><![CDATA[PostgreSQL]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Subversion]]></category>
		<category><![CDATA[TurboGears]]></category>

		<guid isPermaLink="false">http://www.luckydonkey.com/?p=201</guid>
		<description><![CDATA[I thought I'd run through a list of tools that I used to make New Metal Army. New Metal Army is my first major website and I learned a lot along the way. Here are the tools in no particular order: Subversion First and foremost, subversion is a source control tool but it's also a [...]]]></description>
			<content:encoded><![CDATA[<p>I thought I'd run through a list of tools that I used to make <a href="http://www.newmetalarmy.com">New Metal Army</a>. New Metal Army is my first major website and I learned a lot along the way. Here are the tools in no particular order:</p>
<h2><a href="http://subversion.tigris.org/">Subversion</a></h2>
<p><img src="http://www.luckydonkey.com/wp-content/uploads/2008/04/200804080112.jpg" height="106" width="123" border="1" hspace="4" vspace="4" alt="200804080112" style="float:left; border:0px;" />First and foremost, subversion is a source control tool but it's also a safety net. I can't see how you can call yourself a developer if you don't have source control. From day one I got myself an account on <a href="http://www.webfaction.com/?affiliate=eunit">Webfaction</a> set up subversion and started versioning everything. They allow https connection so everything is safe and because I don't live in their data center it's off site as well <img src='http://www.luckydonkey.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br />
<br clear="all"/></p>
<h2><a href="http://trac.edgewall.org/">Trac</a></h2>
<p><img src="http://www.luckydonkey.com/wp-content/uploads/2008/04/trac-logo.png" height="61" width="55" border="1" hspace="4" vspace="4" alt="Trac Logo" style="float:left; border:0px" />Again on <a href="http://www.webfaction.com/?affiliate=eunit">Webfaction</a>, I installed Trac. Trac is a project management webtool. It hooks in to svn so you can see repository changes as a timeline and see checkins as colored diffs. It also has a ticket system and wiki. I found the wiki to be invaluable. It allowed me to track my thoughts in a 'low barrier to entry' fashion. It's so easy to add a wiki page, there really isn't any excuse for not doing it! The ticket/task tracking is basic but fine for small teams. There is a simple notion of a milestone and a release but the metrics for measuring progress just aren't there. For me though, this was fine. Web projects are relatively simple and single man projects don't require metrics really.<br />
<br clear="all"/></p>
<h2><a href="http://macromates.com/">TextMate</a></h2>
<p><img src="http://www.luckydonkey.com/wp-content/uploads/2008/04/200804080025.jpg" height="131" width="140" border="1" hspace="4" vspace="4" alt="200804080025" style="float:left; border:0px" />TextMate is a text editor primarily aimed at programmers but useful for anyone who needs to edit structured documents where the content is more important then the layout. I first ran in to TextMate while I was evaluating Ruby. The Ruby community seems to be dominated by macbook pro users sitting in Starbucks, bashing code in to TextMate and buzzing on coffee. Although I decided not to use Ruby I did stick with TextMate. It really is the premier text editor for OS X. It's the first editor that has replaced emacs for me. I didn't use any extensions for TextMate but I did use <a href="http://pychecker.sourceforge.net/">PyChecker</a> and <a href="http://www.jslint.com/">JSLint</a> with it to check my python and Javascript code on save.<br />
<br clear="all"/></p>
<h2><a href="http://macrabbit.com/cssedit/">CSSEdit</a></h2>
<p><img src="http://www.luckydonkey.com/wp-content/uploads/2008/04/200804080026.jpg" height="134" width="158" border="1" hspace="4" vspace="4" alt="200804080026" style="float:left; border:0px" />CSSEdit is an editor devoted to CSS. The cool thing is that it has live editting. So as you edit the CSS file for a site, it changes the preview of the site. This is quite frankly brilliant and very cheap compared to the time it saved me. <br/>Combined with <a href="http://developer.yahoo.com/yui/">YUI</a>'s <a href="http://developer.yahoo.com/yui/reset/">CSSReset</a> I can proudly say I 'ported' New Metal Army from Firefox to Safari, IE and Opera in a few days with minimal difficulty. CSSReset should be the basis for ALL website development and Yahoo should get a fucking medal for creating it. Cheers guys <img src='http://www.luckydonkey.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br />
<br clear="all"/></p>
<h2><a href="http://www.pixelmator.com/">Pixelmator</a></h2>
<p><img src="http://www.luckydonkey.com/wp-content/uploads/2008/04/200804080027.jpg" height="137" width="160" border="1" hspace="4" vspace="4" alt="200804080027" style="float:left; border:0px" />Pixelmator is a nice image editor the supports PSD's and layers. I got it as part of a <a href="http://www.macheist.com/">MacHeist</a> bundle and just started using it rather then paying hundreds of quid for Photoshop. Because it supports PSD's I can still work with artists who quite rightly want to use Photoshop.<br />
<br clear="all"/></p>
<h2><a href="http://www.vmware.com/mac">VMWare Fusion</a></h2>
<p><img src="http://www.luckydonkey.com/wp-content/uploads/2008/04/200804080027-1.jpg" height="138" width="168" border="1" hspace="4" vspace="4" alt="200804080027-1" style="float:left; border:0px" />Working on a mac makes it hard to get Internet Explorer working. I don't want or need a PC so VMWare comes to the rescue. VMWare is an OS virtualisation package that basically allows me to run various versions on Windows, Linux and BSD in a window. So I can run IE 5.5, 6.0 and 7 in separate virtual instances and check compatibility across IE5.5+, Safari, FireFox 2+ and Opera 9+. Since I'm a one man operation time consuming and boring tasks like this need to be made as painless as possible... or they won't get done.<br />
<br clear="all"/></p>
<h2><a href="http://www.getfirebug.com/">Firebug</a></h2>
<p><img src="http://www.luckydonkey.com/wp-content/uploads/2008/04/200804080029.jpg" height="154" width="162" border="1" hspace="4" vspace="4" alt="200804080029" style="float:left; border:0px" />Firebug is an extension for Firefox that allows you to examine pages and page elements to see how their layout has been calculated but it also allows you to debug Javascript inside the browser. It far exceeds IE's rather forced script debugger compatibility or .NET integration. This tool saved me months of debugging and more importantly sped up the learning curve for web development.<br />
<br clear="all"/></p>
<h2><a href="http://www.wingware.com/">Wingware IDE</a></h2>
<p><img src="http://www.luckydonkey.com/wp-content/uploads/2008/04/200804080030.jpg" height="139" width="166" border="1" hspace="4" vspace="4" alt="200804080030" style="float:left; border:0px" />There were times when I needed to debug fiddly python code and the python command line debugger just wasn't cutting it. I turned to Wingware's IDE for debugging and it served me very well. I only used it a few times though.</p>
<p><br clear="all"/></p>
<h2><a href="http://www.neooffice.org/">NeoOffice</a></h2>
<p><img src="http://www.luckydonkey.com/wp-content/uploads/2008/04/200804080031.jpg" height="130" width="144" border="1" hspace="4" vspace="4" alt="200804080031" style="float:left; border:0px" />Neooffice is a Mac port of Open Office. It's a good replacement for Claris or MS Office. I only needed to write a few letters to lawyers and such but it's good to not have to pay Â£500 for the privilege. I did use it a lot for opening up 50Mb csv files and it coped quite well with it.<br />
<br clear="all"/></p>
<h2><a href="http://www.python.org/">Python</a></h2>
<p><img src="http://www.luckydonkey.com/wp-content/uploads/2008/04/200804080031-1.jpg" height="71" width="211" border="1" hspace="4" vspace="4" alt="200804080031-1" style="float:left; border:0px" />Well this is pretty obvious, TurboGears uses Python so I am forced to work with it. Well luckily python is one of the best languages to do anything in. With a vast array of modules it's really quick to create scripts to process data for your website. As an affiliate for many music companies (iTunes, HMV, Play, Amazon, ...) I get access to huge XML and CSV files with their latest prices, stock and shipping information. Because of python's flexibility it is easy to merge this data in to New Metal Army.<br />
<br clear="all"/></p>
<h2><a href="http://turbogears.org/">TurboGears</a></h2>
<p><img src="http://www.luckydonkey.com/wp-content/uploads/2008/04/200804080110.jpg" height="130" width="129" border="1" hspace="4" vspace="4" alt="200804080110" style="float:left; border:0px" /><br />
TurboGears is a no brainer here. It's the web framework New Metal Army sits upon. For me though TG was more then a framework. TG comes with a great community bundled for free. I learned a lot just reading the mailing list. I also learned a lot by reading the code for TurboGears itself. It's well written and cleanly constructed. There is some advanced python on there but I don't think anything is overly complicated. Python is a great language to read and I think more programmers need to learn that they CAN dive in to most code and quickly work out what is going on.</p>
<p><br clear="all"/></p>
<h2><a href="http://www.postgresql.org/">PostgreSQL</a></h2>
<p><img src="http://www.luckydonkey.com/wp-content/uploads/2008/04/200804080118.jpg" height="103" width="130" border="1" hspace="4" vspace="4" alt="200804080118" style="float:left; border:0px" /><br />
Postgres has always been my database of choice. Unfortunately I have no real reason for this other then it's always covered my needs and it is standards compliant so I expect it to cover my needs for the foreseeable future. TurboGears uses an <a href="http://en.wikipedia.org/wiki/Object-relational_mapping">ORM</a> mapper (<a href="http://www.sqlalchemy.org/">SQLAlchemy</a>) between it and the database so I could swap Postgres for MSSQL, MySQL, Firebird, Oracle or a number of others. Postgres serves New Metal Army VERY well.</p>
<p><map name='google_ad_map_201_afea9fcd39d8b84a'>
<area shape='rect' href='http://imageads.googleadservices.com/pagead/imgclick/201?pos=0' coords='1,2,367,28' />
<area shape='rect' href='http://services.google.com/feedback/abg' coords='384,10,453,23'/></map>
<img usemap='#google_ad_map_201_afea9fcd39d8b84a' border='0' src='http://imageads.googleadservices.com/pagead/ads?format=468x30_aff_img&amp;client=&amp;channel=&amp;output=png&amp;cuid=201&amp;url= http%3A%2F%2Fwww.luckydonkey.com%2F2008%2F04%2F19%2Fturbogears-development-enviroment%2F' /></p>]]></content:encoded>
			<wfw:commentRss>http://www.luckydonkey.com/2008/04/19/turbogears-development-enviroment/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Microcontroller Demo Scene</title>
		<link>http://www.luckydonkey.com/2008/04/10/microcontroller-demo-scene/</link>
		<comments>http://www.luckydonkey.com/2008/04/10/microcontroller-demo-scene/#comments</comments>
		<pubDate>Thu, 10 Apr 2008 21:31:29 +0000</pubDate>
		<dc:creator>dazza</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[Hardware]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Video]]></category>

		<guid isPermaLink="false">http://www.luckydonkey.com/2008/04/10/microcontroller-demo-scene/</guid>
		<description><![CDATA[There is something really fucking cool about making demos and there is something even more cool about making the hardware it runs on as well. I should point out that I came across this video when reading Make Magazines RSS Feed.]]></description>
			<content:encoded><![CDATA[<p>There is something really fucking cool about making demos and there is something even more cool about making the hardware it runs on as well.</p>
<p><object width="425" height="355"><param name="movie" value="http://www.youtube.com/v/sNCqrylNY-0&hl=en"></param><param name="wmode" value="transparent"></param><embed src="http://www.youtube.com/v/sNCqrylNY-0&hl=en" type="application/x-shockwave-flash" wmode="transparent" width="425" height="355"></embed></object></p>
<p>I should point out that I came across this video when <a href="http://blog.makezine.com/archive/2008/04/sx48_microcontroller_musi.html?CMP=OTC-0D6B48984890">reading</a> <a href="http://blog.makezine.com/">Make Magazine</a>s RSS Feed.</p>
<p><map name='google_ad_map_185_afea9fcd39d8b84a'>
<area shape='rect' href='http://imageads.googleadservices.com/pagead/imgclick/185?pos=0' coords='1,2,367,28' />
<area shape='rect' href='http://services.google.com/feedback/abg' coords='384,10,453,23'/></map>
<img usemap='#google_ad_map_185_afea9fcd39d8b84a' border='0' src='http://imageads.googleadservices.com/pagead/ads?format=468x30_aff_img&amp;client=&amp;channel=&amp;output=png&amp;cuid=185&amp;url= http%3A%2F%2Fwww.luckydonkey.com%2F2008%2F04%2F10%2Fmicrocontroller-demo-scene%2F' /></p>]]></content:encoded>
			<wfw:commentRss>http://www.luckydonkey.com/2008/04/10/microcontroller-demo-scene/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Buying Photoshop is more expensive then downloading it&#8230; no really</title>
		<link>http://www.luckydonkey.com/2008/01/03/buying-photoshop-is-more-expensive-then-downloading-it-no-really/</link>
		<comments>http://www.luckydonkey.com/2008/01/03/buying-photoshop-is-more-expensive-then-downloading-it-no-really/#comments</comments>
		<pubDate>Thu, 03 Jan 2008 01:27:08 +0000</pubDate>
		<dc:creator>dazza</dc:creator>
				<category><![CDATA[Rant]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://www.luckydonkey.com/2008/01/03/buying-photoshop-is-more-expensive-then-downloading-it-no-really/</guid>
		<description><![CDATA[I've been using GIMP for image editing but to be honest it's just not cutting it especially when it comes to EPS files. I love GIMP and I respect all the hard work people have put in to it. I also respect all the hard work people have put in to Photoshop. I don't need [...]]]></description>
			<content:encoded><![CDATA[<p>I've been using <a href="http://www.gimp.org/">GIMP</a> for image editing but to be honest it's just not cutting it especially when it comes to EPS files. I love GIMP and I respect all the hard work people have put in to it. I also respect all the hard work people have put in to Photoshop. </p>
<p>I don't need the box or manuals and I want photoshop now (I don't want to have to 'think' about the money I'm spending).. <strong>Brilliant!</strong> they have a download option. But hang on..</p>
<p><img src="http://www.luckydonkey.com/wp-content/uploads/2008/01/picture-1.jpg" height="199" width="350" border="1" hspace="4" vspace="4" alt="Picture 1" /><br />
<img src="http://www.luckydonkey.com/wp-content/uploads/2008/01/picture-2.jpg" height="197" width="347" border="1" hspace="4" vspace="4" alt="Picture 2" /><br />
wtf. It's more expensive to <strong>DOWNLOAD</strong> <a href="https://store2.adobe.com/cfusion/store/index.cfm?store=OLS-UK&amp;view=ols_prod&amp;category=/Applications/Photoshop&amp;distributionMethod=FULL&amp;nr=0">Photoshop CS3</a> then it is for someone somewhere to pop photoshop in another cardboard box and post 2Kg of paper and DVD I will NEVER look at. I've been looking at the two screen grabs and I just can't believe it!</p>
<p><map name='google_ad_map_180_afea9fcd39d8b84a'>
<area shape='rect' href='http://imageads.googleadservices.com/pagead/imgclick/180?pos=0' coords='1,2,367,28' />
<area shape='rect' href='http://services.google.com/feedback/abg' coords='384,10,453,23'/></map>
<img usemap='#google_ad_map_180_afea9fcd39d8b84a' border='0' src='http://imageads.googleadservices.com/pagead/ads?format=468x30_aff_img&amp;client=&amp;channel=&amp;output=png&amp;cuid=180&amp;url= http%3A%2F%2Fwww.luckydonkey.com%2F2008%2F01%2F03%2Fbuying-photoshop-is-more-expensive-then-downloading-it-no-really%2F' /></p>]]></content:encoded>
			<wfw:commentRss>http://www.luckydonkey.com/2008/01/03/buying-photoshop-is-more-expensive-then-downloading-it-no-really/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Total Guitar Magazine: Decryption Error</title>
		<link>http://www.luckydonkey.com/2007/12/04/total-guitar-magazine-decryption-error/</link>
		<comments>http://www.luckydonkey.com/2007/12/04/total-guitar-magazine-decryption-error/#comments</comments>
		<pubDate>Tue, 04 Dec 2007 17:47:41 +0000</pubDate>
		<dc:creator>dazza</dc:creator>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[Rant]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://www.luckydonkey.com/2007/12/04/total-guitar-magazine-decryption-error/</guid>
		<description><![CDATA[Like most metalheads I own a guitar I can't play. I also subscribe to Total Guitar Magazine. This month I noticed that I couldn't decrypt the special 'VIP Area' of the CD. Basically If I was using a PPC Mac I would be able to decrypt the data. It seems they have included the PPC [...]]]></description>
			<content:encoded><![CDATA[<p><script type="text/javascript"><!--
google_ad_client = "pub-9998980871049158";
google_ad_slot = "6052810016";
google_ad_width = 468;
google_ad_height = 60;
//--></script>
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
<br clear="all"><br />
Like most metalheads I own a guitar I can't play. I also subscribe to Total Guitar Magazine. This month I noticed that I couldn't decrypt the special 'VIP Area' of the CD.</p>
<p style="text-align:center;"><img src="http://www.luckydonkey.com/wp-content/uploads/2007/12/bugger-1.jpg" height="309" width="430" border="1" hspace="4" vspace="4" alt="Bugger-1" /></p>
<p>Basically If I was using a PPC Mac I would be able to decrypt the data. It seems they have included the PPC only shared library for blowfish. Hmm. Well as it happens I have a copy of the x86 library that I can use to decrypt the data.</p>
<p>If you are suffering from this problem:</p>
<ol>
<li>Download the library <a href="http://www.luckydonkey.com/Blowfish.so">here</a>.
</li>
<li>Look inside any OSX app by right clicking (or CTRL clicking) on the application icon and selecting 'Show Package Contents'<br />
<img src="http://www.luckydonkey.com/wp-content/uploads/2007/12/showcontent.jpg" height="314" width="246" border="1" hspace="4" vspace="4" alt="Showcontent" />
</li>
<li>Now navigate down to
<pre>Contents/Resources/lib/python2.5/lib-dynload/Crypto/Cipher/</pre>
</li>
<li>Copy the Blowfish.so into the Cipher Folder, there should be one there already so you'll be asked if you want to replace the existing one</li>
</ol>
<p>You should be able to run the decryptor.app now and get access to your MP3s.<br />
Whoever makes this application should be able to make the decryption library Universal so lets hope they do that in the future.</p>
<p><map name='google_ad_map_176_afea9fcd39d8b84a'>
<area shape='rect' href='http://imageads.googleadservices.com/pagead/imgclick/176?pos=0' coords='1,2,367,28' />
<area shape='rect' href='http://services.google.com/feedback/abg' coords='384,10,453,23'/></map>
<img usemap='#google_ad_map_176_afea9fcd39d8b84a' border='0' src='http://imageads.googleadservices.com/pagead/ads?format=468x30_aff_img&amp;client=&amp;channel=&amp;output=png&amp;cuid=176&amp;url= http%3A%2F%2Fwww.luckydonkey.com%2F2007%2F12%2F04%2Ftotal-guitar-magazine-decryption-error%2F' /></p>]]></content:encoded>
			<wfw:commentRss>http://www.luckydonkey.com/2007/12/04/total-guitar-magazine-decryption-error/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PostgreSQL, SQLAlchemy, Dropping all tables and sequences</title>
		<link>http://www.luckydonkey.com/2007/11/23/postgresql-sqlalchemy-dropping-all-tables-and-sequences/</link>
		<comments>http://www.luckydonkey.com/2007/11/23/postgresql-sqlalchemy-dropping-all-tables-and-sequences/#comments</comments>
		<pubDate>Fri, 23 Nov 2007 21:10:50 +0000</pubDate>
		<dc:creator>dazza</dc:creator>
				<category><![CDATA[PostgreSQL]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[SQLAlchemy]]></category>

		<guid isPermaLink="false">http://www.luckydonkey.com/2007/11/23/postgresql-sqlalchemy-dropping-all-tables-and-sequences/</guid>
		<description><![CDATA[I've been working in deployment scripts for my current project and sometimes I need to drop all the tables and sequences from the database so I can create everything from scratch. I had been doing a &#160; DROP SCHEMA public CASCADE; CREATE SCHEMA public AUTHORIZATION bob; GRANT ALL ON SCHEMA public TO bob; &#160; This [...]]]></description>
			<content:encoded><![CDATA[<p><script type="text/javascript"><!--
google_ad_client = "pub-9998980871049158";
google_ad_slot = "6052810016";
google_ad_width = 468;
google_ad_height = 60;
//--></script>
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
<br clear="all"><br />
I've been working in deployment scripts for my current project and sometimes I need to drop all the tables and sequences from the database so I can create everything from scratch. I had been doing a</p>
<pre class="sql">&nbsp;
<span style="color: #993333; font-weight: bold;">DROP</span> SCHEMA public CASCADE;
<span style="color: #993333; font-weight: bold;">CREATE</span> SCHEMA public AUTHORIZATION bob;
<span style="color: #993333; font-weight: bold;">GRANT</span> <span style="color: #993333; font-weight: bold;">ALL</span> <span style="color: #993333; font-weight: bold;">ON</span> SCHEMA public <span style="color: #993333; font-weight: bold;">TO</span> bob;
&nbsp;</pre>
<p>This was great but a little destructive and over the top. It removes stored procedures and triggers as well which isn't what I want. So I looked at the SQLAlchemy docs and there is a metadata command drop_all()</p>
<pre class="python">&nbsp;
<span style="color: #ff7700;font-weight:bold;">def</span> drop_tables<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>:
    metadata.<span style="color: black;">drop_tables</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
&nbsp;</pre>
<p>Unfortunately this doesn't CASCADE so this isn't going to work in cases where tables have foreign keys (which is most of the time). It also leaves sequences in place.</p>
<p>So I looked at dropping each table in turn with a cascade. So how do you get a list of tables and sequences in the database? I could hard code the names of the tables and sequences but that seemed a little poor.</p>
<p>It turns out that PostgreSQL has a set of views that expose the inner workings of your database and a few queries can give you all the information you need.</p>
<pre class="python">&nbsp;
<span style="color: #ff7700;font-weight:bold;">def</span> get_table_list_from_db<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>:
    <span style="color: #483d8b;">&quot;&quot;</span><span style="color: #483d8b;">&quot;
    return a list of table names from the current
    databases public schema
    &quot;</span><span style="color: #483d8b;">&quot;&quot;</span>
    sql=<span style="color: #483d8b;">&quot;select table_name from information_schema.tables&quot;</span>\
        <span style="color: #483d8b;">&quot;where table_schema='public'&quot;</span>
    execute = metadata.<span style="color: black;">execute</span>
    <span style="color: #ff7700;font-weight:bold;">return</span> <span style="color: black;">&#91;</span>name <span style="color: #ff7700;font-weight:bold;">for</span> <span style="color: black;">&#40;</span>name, <span style="color: black;">&#41;</span> <span style="color: #ff7700;font-weight:bold;">in</span> execute<span style="color: black;">&#40;</span>text<span style="color: black;">&#40;</span>sql<span style="color: black;">&#41;</span><span style="color: black;">&#41;</span><span style="color: black;">&#93;</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">def</span> get_seq_list_from_db<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>:
    <span style="color: #483d8b;">&quot;&quot;</span><span style="color: #483d8b;">&quot;return a list of the sequence names from the current
       databases public schema
    &quot;</span><span style="color: #483d8b;">&quot;&quot;</span>
    sql=<span style="color: #483d8b;">&quot;select sequence_name from information_schema.sequences&quot;</span>\
        <span style="color: #483d8b;">&quot;where sequence_schema='public'&quot;</span>
    execute = metadata.<span style="color: black;">execute</span>
    <span style="color: #ff7700;font-weight:bold;">return</span> <span style="color: black;">&#91;</span>name <span style="color: #ff7700;font-weight:bold;">for</span> <span style="color: black;">&#40;</span>name, <span style="color: black;">&#41;</span> <span style="color: #ff7700;font-weight:bold;">in</span> execute<span style="color: black;">&#40;</span>text<span style="color: black;">&#40;</span>sql<span style="color: black;">&#41;</span><span style="color: black;">&#41;</span><span style="color: black;">&#93;</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">def</span> drop_all_tables_and_sequences<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>:
    execute = metadata.<span style="color: black;">execute</span>
    <span style="color: #ff7700;font-weight:bold;">for</span> table <span style="color: #ff7700;font-weight:bold;">in</span> get_table_list_from_db<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>:
        <span style="color: #ff7700;font-weight:bold;">try</span>:
            execute<span style="color: black;">&#40;</span>text<span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;DROP TABLE %s CASCADE&quot;</span> % table<span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>
        <span style="color: #ff7700;font-weight:bold;">except</span> SQLError, e:
            <span style="color: #ff7700;font-weight:bold;">print</span> e
&nbsp;
    <span style="color: #ff7700;font-weight:bold;">for</span> seq <span style="color: #ff7700;font-weight:bold;">in</span> get_seq_list_from_db<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>:
        <span style="color: #ff7700;font-weight:bold;">try</span>:
            execute<span style="color: black;">&#40;</span>text<span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;DROP SEQUENCE %s CASCADE&quot;</span> % table<span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>
        <span style="color: #ff7700;font-weight:bold;">except</span> SQLError, e:
            <span style="color: #ff7700;font-weight:bold;">print</span> e
&nbsp;</pre>
<p>The information_schema is full of interesting information. It's actually a 'view' of lower level database tables. You can find all sorts of performance and configuration information in there. Quite handy <img src='http://www.luckydonkey.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  <a href="http://www.postgresql.org/docs/8.2/interactive/information-schema.html">Here are some docs</a>.</p>
<p>Good luck.</p>
<p><map name='google_ad_map_172_afea9fcd39d8b84a'>
<area shape='rect' href='http://imageads.googleadservices.com/pagead/imgclick/172?pos=0' coords='1,2,367,28' />
<area shape='rect' href='http://services.google.com/feedback/abg' coords='384,10,453,23'/></map>
<img usemap='#google_ad_map_172_afea9fcd39d8b84a' border='0' src='http://imageads.googleadservices.com/pagead/ads?format=468x30_aff_img&amp;client=&amp;channel=&amp;output=png&amp;cuid=172&amp;url= http%3A%2F%2Fwww.luckydonkey.com%2F2007%2F11%2F23%2Fpostgresql-sqlalchemy-dropping-all-tables-and-sequences%2F' /></p>]]></content:encoded>
			<wfw:commentRss>http://www.luckydonkey.com/2007/11/23/postgresql-sqlalchemy-dropping-all-tables-and-sequences/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
	</channel>
</rss>

