<?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>Unleash the Tech Freak Inside</title>
	<atom:link href="http://freeyourtech.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://freeyourtech.wordpress.com</link>
	<description>-- use open source</description>
	<lastBuildDate>Tue, 03 Nov 2009 22:07:15 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='freeyourtech.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Unleash the Tech Freak Inside</title>
		<link>http://freeyourtech.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://freeyourtech.wordpress.com/osd.xml" title="Unleash the Tech Freak Inside" />
	<atom:link rel='hub' href='http://freeyourtech.wordpress.com/?pushpress=hub'/>
		<item>
		<title>pgdba.net/blog</title>
		<link>http://freeyourtech.wordpress.com/2009/11/03/pgdba-netblog/</link>
		<comments>http://freeyourtech.wordpress.com/2009/11/03/pgdba-netblog/#comments</comments>
		<pubDate>Tue, 03 Nov 2009 22:06:26 +0000</pubDate>
		<dc:creator>freeyourtech</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://freeyourtech.wordpress.com/?p=166</guid>
		<description><![CDATA[I have stopped posting stuff to this blog for a long time now. Please update your links and follow http://pgdba.net/blog instead. Thanks, Michael<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=freeyourtech.wordpress.com&amp;blog=2914923&amp;post=166&amp;subd=freeyourtech&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I have stopped posting stuff to this blog for a long time now. Please update your links and follow <a href="http://pgdba.net/blog">http://pgdba.net/blog</a> instead. Thanks, Michael</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/freeyourtech.wordpress.com/166/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/freeyourtech.wordpress.com/166/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/freeyourtech.wordpress.com/166/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/freeyourtech.wordpress.com/166/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/freeyourtech.wordpress.com/166/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/freeyourtech.wordpress.com/166/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/freeyourtech.wordpress.com/166/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/freeyourtech.wordpress.com/166/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/freeyourtech.wordpress.com/166/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/freeyourtech.wordpress.com/166/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/freeyourtech.wordpress.com/166/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/freeyourtech.wordpress.com/166/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/freeyourtech.wordpress.com/166/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/freeyourtech.wordpress.com/166/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=freeyourtech.wordpress.com&amp;blog=2914923&amp;post=166&amp;subd=freeyourtech&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://freeyourtech.wordpress.com/2009/11/03/pgdba-netblog/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/4a95b91781ea713fe1ca5bd1b5de6960?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">freeyourtech</media:title>
		</media:content>
	</item>
		<item>
		<title>Reading about interfaces</title>
		<link>http://freeyourtech.wordpress.com/2009/01/13/reading-about-interfaces/</link>
		<comments>http://freeyourtech.wordpress.com/2009/01/13/reading-about-interfaces/#comments</comments>
		<pubDate>Tue, 13 Jan 2009 20:57:48 +0000</pubDate>
		<dc:creator>freeyourtech</dc:creator>
				<category><![CDATA[Books]]></category>
		<category><![CDATA[Software Development]]></category>

		<guid isPermaLink="false">http://freeyourtech.wordpress.com/?p=148</guid>
		<description><![CDATA[Two books I am currently reading are the following: The IOD book is a bit more abstract, but the information within may be applied in a variety of contexts. The RESTful book, naturally, is about web services. Both are great, I highly recommend them. Please click on the covers to find out more or buy.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=freeyourtech.wordpress.com&amp;blog=2914923&amp;post=148&amp;subd=freeyourtech&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Two books I am currently reading are the following:</p>
<p><a href="http://oreilly.com/catalog/9780596529260/"><img class="alignright size-full wp-image-151" title="RESTful Web Services book" src="http://freeyourtech.files.wordpress.com/2009/01/rest-book-cover1.jpg?w=510" alt="RESTful Web Services book"   /></a>The IOD book is a bit more abstract, but the information within may be applied in a variety of contexts. The RESTful book, naturally, is about web services. Both are great, I highly recommend them. Please click on the covers to find out more or buy.</p>
<p><a href="http://oreilly.com/catalog/9780596529260/"></a><a href="http://www.pragprog.com/titles/kpiod/interface-oriented-design"><img class="size-full wp-image-149 alignleft" style="border:1px solid black;" title="Interface Oriented Design book" src="http://freeyourtech.files.wordpress.com/2009/01/iod-book-cover.jpg?w=510" alt="Interface Oriented Design book"   /></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/freeyourtech.wordpress.com/148/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/freeyourtech.wordpress.com/148/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/freeyourtech.wordpress.com/148/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/freeyourtech.wordpress.com/148/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/freeyourtech.wordpress.com/148/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/freeyourtech.wordpress.com/148/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/freeyourtech.wordpress.com/148/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/freeyourtech.wordpress.com/148/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/freeyourtech.wordpress.com/148/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/freeyourtech.wordpress.com/148/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/freeyourtech.wordpress.com/148/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/freeyourtech.wordpress.com/148/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/freeyourtech.wordpress.com/148/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/freeyourtech.wordpress.com/148/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=freeyourtech.wordpress.com&amp;blog=2914923&amp;post=148&amp;subd=freeyourtech&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://freeyourtech.wordpress.com/2009/01/13/reading-about-interfaces/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/4a95b91781ea713fe1ca5bd1b5de6960?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">freeyourtech</media:title>
		</media:content>

		<media:content url="http://freeyourtech.files.wordpress.com/2009/01/rest-book-cover1.jpg" medium="image">
			<media:title type="html">RESTful Web Services book</media:title>
		</media:content>

		<media:content url="http://freeyourtech.files.wordpress.com/2009/01/iod-book-cover.jpg" medium="image">
			<media:title type="html">Interface Oriented Design book</media:title>
		</media:content>
	</item>
		<item>
		<title>Sharing the love</title>
		<link>http://freeyourtech.wordpress.com/2009/01/01/sharing-the-love/</link>
		<comments>http://freeyourtech.wordpress.com/2009/01/01/sharing-the-love/#comments</comments>
		<pubDate>Thu, 01 Jan 2009 20:13:11 +0000</pubDate>
		<dc:creator>freeyourtech</dc:creator>
				<category><![CDATA[Philosophy]]></category>
		<category><![CDATA[Real Life]]></category>
		<category><![CDATA[free software]]></category>
		<category><![CDATA[FSF]]></category>
		<category><![CDATA[Gnu]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[open source]]></category>

		<guid isPermaLink="false">http://freeyourtech.wordpress.com/?p=143</guid>
		<description><![CDATA[I was reading an essay the other day about the conceptual differences between &#8220;open source&#8221; and &#8220;free&#8221; software, in the FSF meaning of the word (you may read this essay here). I have been a GNU/Linux user for many many years now, and I owe a great deal to all these people who have contributed [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=freeyourtech.wordpress.com&amp;blog=2914923&amp;post=143&amp;subd=freeyourtech&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I was reading an essay the other day about the conceptual differences between &#8220;open source&#8221; and &#8220;free&#8221; software, in the FSF meaning of the word (you may read this essay <a title="Free Software for Freedom" href="http://www.fsf.org/licensing/essays/free-software-for-freedom.html">here</a>).</p>
<p>I have been a GNU/Linux user for many many years now, and I owe a great deal to all these people who have contributed through the years. Because of &#8220;free&#8221; and &#8220;open source&#8221; software, I have a learned so much I now have a career and job satisfaction. For a lot of software packages out there, you could probably freely exchange the terms, but, to me, it was &#8220;free&#8221; software that taught me and &#8220;open source&#8221; software that gave me some good jobs.</p>
<p>Reading about the subtle but important differences in these approaches, I have suddenly remembered how my early GNU years felt like (I like to think I&#8217;m in my GNU teens, now &#8212; there are GNU grand-daddies out there <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  It was &#8220;open source&#8221; that penetrated the market, but it was &#8220;free&#8221; software that gave us the tools and got me to start reading. Motivation sometimes is paramount.</p>
<p>Nowadays, everyone&#8217;s at least heard of &#8220;open source&#8221; and a lot of companies are actually using it. So, the outlook&#8217;s peachy. What&#8217;s all this fuss about &#8220;freedom&#8221;? Are these FSF people irrelevant, at last? Could we simply dismiss them as ramblers from a bygone era and focus on practicalities instead?</p>
<p>I am getting all philosophical here, but it&#8217;s a holiday and people have more time to stop and think and get abstract on holidays, after a nice, relaxed meal &#8212; so please forgive these musings.</p>
<p>&#8220;Open source&#8221; is cultural product, be it a methodology or sets of computer instructions. &#8220;Open source&#8221; has been written by people from many different backgrounds, sharing some ideas &#8212; it&#8217;s not just technical, it&#8217;s also a cultural thing made possible by technology, globalization, economy, our times in general.</p>
<p>In that sense, all this libre software out there is the result of a culture, in the same way that the Parthenon is the result of the dominant technological and philosophical ideas in ancient Athens, the Pyramids the result of such ideas in ancient Egypt, and so on&#8230; You cannot understand the monuments if you don&#8217;t study the culture. And you cannot build this stuff unless you live the culture.</p>
<p>So, does the &#8220;freedom&#8221; approach belong to history books? I think this will be decided by the number of people writing and using &#8220;free&#8221;, as opposed to &#8220;open souce&#8221; software. Let&#8217;s keep the culture alive.</p>
<p>Happy New Year, everyone!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/freeyourtech.wordpress.com/143/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/freeyourtech.wordpress.com/143/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/freeyourtech.wordpress.com/143/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/freeyourtech.wordpress.com/143/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/freeyourtech.wordpress.com/143/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/freeyourtech.wordpress.com/143/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/freeyourtech.wordpress.com/143/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/freeyourtech.wordpress.com/143/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/freeyourtech.wordpress.com/143/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/freeyourtech.wordpress.com/143/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/freeyourtech.wordpress.com/143/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/freeyourtech.wordpress.com/143/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/freeyourtech.wordpress.com/143/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/freeyourtech.wordpress.com/143/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=freeyourtech.wordpress.com&amp;blog=2914923&amp;post=143&amp;subd=freeyourtech&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://freeyourtech.wordpress.com/2009/01/01/sharing-the-love/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/4a95b91781ea713fe1ca5bd1b5de6960?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">freeyourtech</media:title>
		</media:content>
	</item>
		<item>
		<title>TiddlyWiki</title>
		<link>http://freeyourtech.wordpress.com/2008/12/10/tiddlywiki/</link>
		<comments>http://freeyourtech.wordpress.com/2008/12/10/tiddlywiki/#comments</comments>
		<pubDate>Wed, 10 Dec 2008 13:16:42 +0000</pubDate>
		<dc:creator>freeyourtech</dc:creator>
				<category><![CDATA[n800]]></category>
		<category><![CDATA[Productivity]]></category>
		<category><![CDATA[TiddlyWiki]]></category>
		<category><![CDATA[wiki]]></category>
		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://freeyourtech.wordpress.com/?p=128</guid>
		<description><![CDATA[What a great idea/implementation! A single html file with some Javascript code and you&#8217;ve got a self-contained wiki system (data + code) you may carry with you on a USB stick, post online or send via email &#8212; your choice! No server or software requirements, except maybe for a modern Javascript-enabled browser (preferrably Firefox). Thank [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=freeyourtech.wordpress.com&amp;blog=2914923&amp;post=128&amp;subd=freeyourtech&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>What a great idea/implementation! A single html file with some Javascript code and you&#8217;ve got a self-contained wiki system (data + code) you may carry with you on a USB stick, post online or send via email &#8212; your choice! No server or software requirements, except maybe for a modern Javascript-enabled browser (preferrably Firefox). Thank you Jeremy!</p>
<p><strong>TiddlyWiki</strong> &#8211; <a title="TiddlyWiki" href="http://www.tiddlywiki.com/">http://www.tiddlywiki.com/</a></p>
<p>TiddlyWiki Markup &#8211; <a href="http://tiddlywiki.org/wiki/TiddlyWiki_Markup">http://tiddlywiki.org/wiki/TiddlyWiki_Markup</a></p>
<p>TiddlyWiki (wikipedia) &#8211; <a title="TiddlyWiki (wikipedia)" href="http://en.wikipedia.org/wiki/TiddlyWiki">http://en.wikipedia.org/wiki/TiddlyWiki</a></p>
<p>You may also be interested in <strong>Wiki on a Stick</strong> &#8211; <a title="Wiki on a Stick" href="http://stickwiki.sourceforge.net/">http://stickwiki.sourceforge.net/</a></p>
<p>By the way, TiddlyWiki <span style="text-decoration:line-through;">almost</span> works on my Nokia n800. <span style="text-decoration:line-through;">I may read and edit files properly through the built-in Opera browser, but I cannot save them. There is an Opera work-around, TiddlySaver, but it relies on a .jar file and the n800 has no Java support. Pity!</span></p>
<p><img class="alignnone size-full wp-image-130" title="tiddlywiki-n800" src="http://freeyourtech.files.wordpress.com/2008/12/tiddlywiki-n800.jpg?w=510" alt="tiddlywiki-n800"   /></p>
<p><span style="color:#ffff99;">UPDATE</span>: The <a title="GTD TiddlyWiki" href="http://www.checkettsweb.com/tw/gtd_tiddlywiki.htm">http://www.checkettsweb.com/tw/gtd_tiddlywiki.htm</a> + n800 temptation made me fiddle a bit more, and saving now works! (after confirming the unsafe operation 4 times <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  All it takes is commenting out or deleting line 549 of the <strong>gtd_tiddlywiki.htm</strong> file &#8212; the one with <strong>saveTest()</strong> &#8212; before your first use. And if you have basic Unix command line skills, here is a quick and dirty script for launching your little agenda from the command line, showing the day&#8217;s entries (if you copy-paste you shall see the entire lines):</p>
<pre>#!/bin/sh
sed -i '/&lt;div tiddler\="DefaultTiddlers"/s/\[\[.*\]\]/\[\['$(date +%d\\\/%m\\\/%Y)'\]\]/' /media/mmc1/gtd/gtd_tiddlywiki.htm
dbus-send --session --print-reply /com/nokia/osso_browser \
--dest=com.nokia.osso_browser com.nokia.osso_browser.open_new_window \
string:file:///media/mmc1/gtd/gtd_tiddlywiki.htm</pre>
<p>&#8230; assuming the file resides in <strong>/media/mmc1/gtd</strong>. Backups will be placed in <strong>/media/mmc1/gtd/twBackups</strong>.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/freeyourtech.wordpress.com/128/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/freeyourtech.wordpress.com/128/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/freeyourtech.wordpress.com/128/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/freeyourtech.wordpress.com/128/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/freeyourtech.wordpress.com/128/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/freeyourtech.wordpress.com/128/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/freeyourtech.wordpress.com/128/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/freeyourtech.wordpress.com/128/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/freeyourtech.wordpress.com/128/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/freeyourtech.wordpress.com/128/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/freeyourtech.wordpress.com/128/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/freeyourtech.wordpress.com/128/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/freeyourtech.wordpress.com/128/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/freeyourtech.wordpress.com/128/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=freeyourtech.wordpress.com&amp;blog=2914923&amp;post=128&amp;subd=freeyourtech&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://freeyourtech.wordpress.com/2008/12/10/tiddlywiki/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/4a95b91781ea713fe1ca5bd1b5de6960?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">freeyourtech</media:title>
		</media:content>

		<media:content url="http://freeyourtech.files.wordpress.com/2008/12/tiddlywiki-n800.jpg" medium="image">
			<media:title type="html">tiddlywiki-n800</media:title>
		</media:content>
	</item>
		<item>
		<title>December of software releases</title>
		<link>http://freeyourtech.wordpress.com/2008/12/05/december-of-software-releases/</link>
		<comments>http://freeyourtech.wordpress.com/2008/12/05/december-of-software-releases/#comments</comments>
		<pubDate>Fri, 05 Dec 2008 15:12:03 +0000</pubDate>
		<dc:creator>freeyourtech</dc:creator>
				<category><![CDATA[Events]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://freeyourtech.wordpress.com/?p=117</guid>
		<description><![CDATA[Ok, here&#8217;s a quick game! Let&#8217;s spot software releases which happened in the first days of December, 2008. 1. WordPress 2.7 -http://en.blog.wordpress.com/2008/12/05/new-dashboard-design/ 2. Python 3.0 &#8211; http://www.python.org/download/releases/3.0/ 3. JavaFX 1.0 &#8211; http://www.sun.com/aboutsun/pr/2008-12/sunflash.20081204.1.xml<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=freeyourtech.wordpress.com&amp;blog=2914923&amp;post=117&amp;subd=freeyourtech&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Ok, here&#8217;s a quick game! Let&#8217;s spot software releases which happened in the first days of December, 2008.</p>
<p>1. WordPress 2.7 -<a title="Wordpress 2.7" href="http://en.blog.wordpress.com/2008/12/05/new-dashboard-design/">http://en.blog.wordpress.com/2008/12/05/new-dashboard-design/</a></p>
<p>2. Python 3.0 &#8211; <a title="Python 3.0" href="http://www.python.org/download/releases/3.0/">http://www.python.org/download/releases/3.0/</a></p>
<p>3. JavaFX 1.0 &#8211; <a title="JavaFX 1.0" href="http://www.sun.com/aboutsun/pr/2008-12/sunflash.20081204.1.xml">http://www.sun.com/aboutsun/pr/2008-12/sunflash.20081204.1.xml</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/freeyourtech.wordpress.com/117/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/freeyourtech.wordpress.com/117/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/freeyourtech.wordpress.com/117/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/freeyourtech.wordpress.com/117/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/freeyourtech.wordpress.com/117/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/freeyourtech.wordpress.com/117/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/freeyourtech.wordpress.com/117/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/freeyourtech.wordpress.com/117/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/freeyourtech.wordpress.com/117/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/freeyourtech.wordpress.com/117/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/freeyourtech.wordpress.com/117/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/freeyourtech.wordpress.com/117/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/freeyourtech.wordpress.com/117/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/freeyourtech.wordpress.com/117/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=freeyourtech.wordpress.com&amp;blog=2914923&amp;post=117&amp;subd=freeyourtech&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://freeyourtech.wordpress.com/2008/12/05/december-of-software-releases/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/4a95b91781ea713fe1ca5bd1b5de6960?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">freeyourtech</media:title>
		</media:content>
	</item>
		<item>
		<title>pgTsung: stage 2</title>
		<link>http://freeyourtech.wordpress.com/2008/11/30/pgtsung-stage-2/</link>
		<comments>http://freeyourtech.wordpress.com/2008/11/30/pgtsung-stage-2/#comments</comments>
		<pubDate>Sun, 30 Nov 2008 23:03:46 +0000</pubDate>
		<dc:creator>freeyourtech</dc:creator>
				<category><![CDATA[Postgresql]]></category>
		<category><![CDATA[System Administration]]></category>
		<category><![CDATA[system engineering]]></category>
		<category><![CDATA[testing]]></category>
		<category><![CDATA[tsung]]></category>

		<guid isPermaLink="false">http://freeyourtech.wordpress.com/?p=104</guid>
		<description><![CDATA[The biggest hurdle I have had to overcome in order to use Tsung for load-testing Postgresql servers has been a conceptual mismatch between Tsung and what I wanted to do. Tsung&#8217;s model probably originates in the load-testing of web servers: everything is described in terms of user arrival rate, hits, pages, transactions, thinktimes. Database usage [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=freeyourtech.wordpress.com&amp;blog=2914923&amp;post=104&amp;subd=freeyourtech&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>The biggest hurdle I have had to overcome in order to use Tsung for load-testing Postgresql servers has been a conceptual mismatch between Tsung and what I wanted to do. Tsung&#8217;s model probably originates in the load-testing of web servers: everything is described in terms of user arrival rate, hits, pages, transactions, thinktimes. Database usage may not be readily described in these terms.</p>
<p>Before going any further, I should probably make clear I didn&#8217;t need Tsung to do <strong>performance testing</strong>. Performance testing may be easily done by throwing a specific set of SQL queries to the database server (in controlled conditions) and checking/timing the results (this could be a separate tutorial <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> . Tsung gives you the tools to model proper user interaction and real-life usage and I have been trying to determine a server&#8217;s <strong>load capacity</strong>.</p>
<p>In other words, <span style="text-decoration:underline;">how many times our typical or target load could a particular server/set-up handle</span>?</p>
<p>And this load had to be expressed in a Tsung-compatible xml file describing mainly:</p>
<ul>
<li>alternative user sessions (with associated probabilities)</li>
<li>user arrival rate</li>
</ul>
<p>Here&#8217;s a quick reminder of what Tsung transactions mean:</p>
<p style="padding-left:30px;">Different parts of a session may be grouped into <span style="color:#ffff00;"><strong>transactions</strong></span> (Tsung-speak — nothing to do with your normal database transactions) for statistical monitoring of SQL groups. Transactions are characterised by their name, and names may be shared across sessions. This way, there are tremendous reporting possibilities, as all sessions may have a “connection” transaction offering global connection statistics, while transactions with unique names produce statistics on a specific use-case basis (e.g. complex data search, typical page load etc.).</p>
<p>For simplicity, I have opted to include only two &#8220;transactions&#8221; in each alternative user &#8220;session&#8221; (use-case):</p>
<ul>
<li>a connection transaction (identified as &#8220;connection&#8221; in all &#8220;sessions&#8221;)</li>
<li>a SQL block transaction (with a unique, &#8220;session&#8221;-specific name)</li>
</ul>
<h3>Know your (target) usage</h3>
<p>Here comes the obvious but imporant bit: you need to know your real-life or your target usage to proceed! Expressing your (target) usage into Tsung values is the only thing that binds your experiment to real-life and allows some conclusions to be drawn from the tests.</p>
<p>The defined &#8220;sessions&#8221;, should, of course, reflect your usage profile. This boils down to including a representative variety of use-cases, with the right probability factor assigned to each case.</p>
<p>But you also need to express the number of new &#8220;sessions&#8221; per second Tsung initiates against your system, i.e. the Tsung user arrival rate.</p>
<h3>Adapting the scenario file</h3>
<p>This is a quick summary of what you should edit in your Tsung scenario file to specify the desired load:</p>
<ul>
<li>allocate different probabilities to your alternative &#8220;sessions&#8221; (do they add up to 100?)</li>
<li>make sure you wrap the important bits of each session into unique &#8220;transactions&#8221;</li>
<li>define appropriate user arrival rates in your &#8220;load phases&#8221;</li>
</ul>
<p>Load phases are defined in this section of the Tsung scenario file:</p>
<pre>   &lt;load&gt;
      &lt;arrivalphase phase="1" duration="1800" unit="second"&gt;
         &lt;users interarrival="10" unit="second"&gt;&lt;/users&gt;
      &lt;/arrivalphase&gt;
<del></del>      &lt;arrivalphase phase="2" duration="1800" unit="second"&gt;
         &lt;users interarrival="6" unit="second"&gt;&lt;/users&gt;
      &lt;/arrivalphase&gt;
      ... and so on...
    &lt;/load&gt;</pre>
<h3>Analyzing the results</h3>
<p>Assuming have managed to run your tests, now comes the tricky part of interpreting your results. The Tsung helper perl script generates a multitude of graphs, but here&#8217;s a quick shortcut. The files which have been most useful to me are the following:</p>
<ul>
<li>report.html</li>
<li>images/graphes-Transactions-max_sample.png</li>
<li>images/graphes-Transactions-mean.png</li>
<li>images/graphes-Users-simultaneous.png</li>
</ul>
<p>When looking at these graphs, the two most important things to remember are the length (in seconds) of each load phase and what each phase represents. For example, the following graph (manually colored for convenience), may be divided into four sections, each representing a particular load phase (each phase lasted 1800 seconds, i.e. half an hour). This graph basically tells us things start to fall apart at 8x our target load.</p>
<p><a href="http://freeyourtech.files.wordpress.com/2008/12/results.png"><img class="alignnone wp-image-105" title="simultaneous DB users" src="http://freeyourtech.files.wordpress.com/2008/12/results.png?w=440" alt="simultaneous DB users" width="440" /></a></p>
<p>The reason the interpretation of this graph is easy is that we are not using any loops in each user &#8220;session&#8221;. Each Tsung &#8220;user&#8221; simply connects, sends a particular SQL block to the server, receives some results and exits. The user arrival rate stays constant throughout a particular load phase. Statistically speaking, if the server is responding properly, the number of new users in the system is always matched by the number of users exiting. Therefore, you only get simultaneous Tsung users if things start going wrong, when the server&#8217;s response times are increasing. And when you see the green and red lines splitting, things have gotten out of hand: Tsung is introducing new users which are not even able to connect!</p>
<p>We should always, of course, check, if the server&#8217;s performance was acceptable while it was &#8220;coping&#8221; with our load. In addition to the numbers in <strong>report.html</strong>, you could get the big picture by simply looking at <strong>images/graphes-Transactions-max_sample.png</strong>. The horizontal line for each &#8220;session&#8221; corresponds to the longest response time ever recorded for a particular use-case.</p>
<p><a href="http://freeyourtech.files.wordpress.com/2008/12/graphes-transactions-max_sample.png"><img class="alignnone size-full wp-image-106" title="max-elapsed-time-per-transaction" src="http://freeyourtech.files.wordpress.com/2008/12/graphes-transactions-max_sample.png?w=510" alt="max-elapsed-time-per-transaction"   /></a></p>
<p>Armed with this knowledge, you may start experimenting further. Does your server recover from brief spikes of activity (e.g. long 4x phase, brief 16x phase, 4x phase etc.)? What effect do particular server configuration changes have on load capacity? And so on&#8230; This could easily turn into a full-time job <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/freeyourtech.wordpress.com/104/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/freeyourtech.wordpress.com/104/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/freeyourtech.wordpress.com/104/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/freeyourtech.wordpress.com/104/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/freeyourtech.wordpress.com/104/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/freeyourtech.wordpress.com/104/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/freeyourtech.wordpress.com/104/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/freeyourtech.wordpress.com/104/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/freeyourtech.wordpress.com/104/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/freeyourtech.wordpress.com/104/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/freeyourtech.wordpress.com/104/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/freeyourtech.wordpress.com/104/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/freeyourtech.wordpress.com/104/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/freeyourtech.wordpress.com/104/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=freeyourtech.wordpress.com&amp;blog=2914923&amp;post=104&amp;subd=freeyourtech&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://freeyourtech.wordpress.com/2008/11/30/pgtsung-stage-2/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/4a95b91781ea713fe1ca5bd1b5de6960?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">freeyourtech</media:title>
		</media:content>

		<media:content url="http://freeyourtech.files.wordpress.com/2008/12/results.png?w=440" medium="image">
			<media:title type="html">simultaneous DB users</media:title>
		</media:content>

		<media:content url="http://freeyourtech.files.wordpress.com/2008/12/graphes-transactions-max_sample.png" medium="image">
			<media:title type="html">max-elapsed-time-per-transaction</media:title>
		</media:content>
	</item>
		<item>
		<title>Python is to Vim&#8230;</title>
		<link>http://freeyourtech.wordpress.com/2008/11/07/python-is-to-vim/</link>
		<comments>http://freeyourtech.wordpress.com/2008/11/07/python-is-to-vim/#comments</comments>
		<pubDate>Fri, 07 Nov 2008 15:55:13 +0000</pubDate>
		<dc:creator>freeyourtech</dc:creator>
				<category><![CDATA[Editors]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[perl]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[scheme]]></category>
		<category><![CDATA[tcl]]></category>
		<category><![CDATA[vim]]></category>

		<guid isPermaLink="false">http://freeyourtech.wordpress.com/?p=92</guid>
		<description><![CDATA[&#8230;what Lisp is to Emacs. Or so it seems! http://www.tummy.com/Community/Presentations/vimpython-20070225/vim.html This is SO not documented outside vim. General purpose programming language instead of vim script! Your best source of documentation may be running the command :help python in Vim Update: OMG, quick vim research revealed it also supports macros in tcl, perl, ruby, mzscheme! Now, [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=freeyourtech.wordpress.com&amp;blog=2914923&amp;post=92&amp;subd=freeyourtech&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>&#8230;what Lisp is to Emacs. Or so it seems!</p>
<p><a title="Vim macros in Python" href="http://www.tummy.com/Community/Presentations/vimpython-20070225/vim.html">http://www.tummy.com/Community/Presentations/vimpython-20070225/vim.html</a></p>
<p>This is SO not documented outside vim. General purpose programming language instead of vim script!</p>
<p>Your best source of documentation may be running the command</p>
<pre style="padding-left:30px;">:help python</pre>
<p>in Vim</p>
<p><span style="color:#ffff00;">Update:</span></p>
<p>OMG, quick vim research revealed it also supports macros in <strong>tcl</strong>, <strong>perl</strong>, <strong>ruby</strong>, <strong>mzscheme</strong>! Now, I&#8217;m spoiled for choice <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/freeyourtech.wordpress.com/92/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/freeyourtech.wordpress.com/92/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/freeyourtech.wordpress.com/92/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/freeyourtech.wordpress.com/92/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/freeyourtech.wordpress.com/92/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/freeyourtech.wordpress.com/92/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/freeyourtech.wordpress.com/92/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/freeyourtech.wordpress.com/92/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/freeyourtech.wordpress.com/92/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/freeyourtech.wordpress.com/92/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/freeyourtech.wordpress.com/92/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/freeyourtech.wordpress.com/92/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/freeyourtech.wordpress.com/92/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/freeyourtech.wordpress.com/92/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=freeyourtech.wordpress.com&amp;blog=2914923&amp;post=92&amp;subd=freeyourtech&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://freeyourtech.wordpress.com/2008/11/07/python-is-to-vim/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/4a95b91781ea713fe1ca5bd1b5de6960?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">freeyourtech</media:title>
		</media:content>
	</item>
		<item>
		<title>Attention 64-bit JVM Users</title>
		<link>http://freeyourtech.wordpress.com/2008/11/06/attention-64-bit-jvm-users/</link>
		<comments>http://freeyourtech.wordpress.com/2008/11/06/attention-64-bit-jvm-users/#comments</comments>
		<pubDate>Thu, 06 Nov 2008 15:46:26 +0000</pubDate>
		<dc:creator>freeyourtech</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[System Administration]]></category>
		<category><![CDATA[64-bit]]></category>
		<category><![CDATA[JVM]]></category>

		<guid isPermaLink="false">http://freeyourtech.wordpress.com/?p=89</guid>
		<description><![CDATA[With modern servers, a lot of people are migrating to 64-bit architectures. Apparently, there are performance considerations in regards to using a 64-bit JVM. If you are using/considering installing a 64-bit JVM, you might want to read up on compressed oops (ordinary object pointers) &#8212; don&#8217;t worry, we are only talking about JVM command line [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=freeyourtech.wordpress.com&amp;blog=2914923&amp;post=89&amp;subd=freeyourtech&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>With modern servers, a lot of people are migrating to 64-bit architectures. Apparently, there are performance considerations in regards to using a 64-bit JVM. If you are using/considering installing a 64-bit JVM, you might want to read up on compressed oops (ordinary object pointers) &#8212; don&#8217;t worry, we are only talking about JVM command line options which affect performance. Please visit the links below:</p>
<p><a title="64-bit JVM 1" href="http://www.lowtek.ca/roo/2008/java-performance-in-64bit-land/">http://www.lowtek.ca/roo/2008/java-performance-in-64bit-land/</a><br />
<a title="64-bit JVM 2" href="http://blog.juma.me.uk/2008/10/14/32-bit-or-64-bit-jvm-how-about-a-hybrid/">http://blog.juma.me.uk/2008/10/14/32-bit-or-64-bit-jvm-how-about-a-hybrid/</a><br />
<a title="64-bit JVM 3" href="http://publib.boulder.ibm.com/infocenter/javasdk/v6r0/index.jsp?topic=/com.ibm.java.doc.user.lnx.60/user/garbage_compressed_refs.html" target="_blank">http://publib.boulder.ibm.com/infocenter/javasdk/v6r0/index.jsp?topic=/com.ibm.java.doc.user.lnx.60/user/garbage_compressed_refs.html</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/freeyourtech.wordpress.com/89/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/freeyourtech.wordpress.com/89/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/freeyourtech.wordpress.com/89/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/freeyourtech.wordpress.com/89/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/freeyourtech.wordpress.com/89/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/freeyourtech.wordpress.com/89/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/freeyourtech.wordpress.com/89/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/freeyourtech.wordpress.com/89/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/freeyourtech.wordpress.com/89/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/freeyourtech.wordpress.com/89/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/freeyourtech.wordpress.com/89/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/freeyourtech.wordpress.com/89/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/freeyourtech.wordpress.com/89/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/freeyourtech.wordpress.com/89/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=freeyourtech.wordpress.com&amp;blog=2914923&amp;post=89&amp;subd=freeyourtech&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://freeyourtech.wordpress.com/2008/11/06/attention-64-bit-jvm-users/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/4a95b91781ea713fe1ca5bd1b5de6960?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">freeyourtech</media:title>
		</media:content>
	</item>
		<item>
		<title>Attention Fedora users!</title>
		<link>http://freeyourtech.wordpress.com/2008/11/06/attention-fedora-users/</link>
		<comments>http://freeyourtech.wordpress.com/2008/11/06/attention-fedora-users/#comments</comments>
		<pubDate>Thu, 06 Nov 2008 10:44:44 +0000</pubDate>
		<dc:creator>freeyourtech</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[System Administration]]></category>
		<category><![CDATA[fedora]]></category>
		<category><![CDATA[fedora core]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[yum]]></category>

		<guid isPermaLink="false">http://freeyourtech.wordpress.com/?p=85</guid>
		<description><![CDATA[Apparently, there has been a severe security breach at Fedora. They had to rebuild their repositories and change their signing keys, and it might just be they have only rebuilt repositories for Fedora 8 and 9. Which might just explain why I have been unable to use yum to install software on a Fedora Core [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=freeyourtech.wordpress.com&amp;blog=2914923&amp;post=85&amp;subd=freeyourtech&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Apparently, there has been a severe  security breach at Fedora. They had to rebuild their repositories and change  their signing keys, and it might just be they have only rebuilt  repositories for Fedora 8 and 9. Which might just explain why I have been unable to use yum to install software on a Fedora Core 5 box for several weeks now! And, yes, people, I know FC5 is no longer officially supported, but the mirrors were there and I was still using them not long ago. So, attention Fedora users! If you are using a Fedora release below 8, you should probably consider re-installing a recent release or risk staying stuck with a system with no software updates and no packages.</p>
<p>Please have a look at this: <a title="Fedora security breach" href="http://www.redhat.com/archives/fedora-announce-list/2008-September/msg00007.html">http://www.redhat.com/archives/fedora-announce-list/2008-September/msg00007.html</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/freeyourtech.wordpress.com/85/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/freeyourtech.wordpress.com/85/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/freeyourtech.wordpress.com/85/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/freeyourtech.wordpress.com/85/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/freeyourtech.wordpress.com/85/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/freeyourtech.wordpress.com/85/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/freeyourtech.wordpress.com/85/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/freeyourtech.wordpress.com/85/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/freeyourtech.wordpress.com/85/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/freeyourtech.wordpress.com/85/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/freeyourtech.wordpress.com/85/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/freeyourtech.wordpress.com/85/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/freeyourtech.wordpress.com/85/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/freeyourtech.wordpress.com/85/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=freeyourtech.wordpress.com&amp;blog=2914923&amp;post=85&amp;subd=freeyourtech&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://freeyourtech.wordpress.com/2008/11/06/attention-fedora-users/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/4a95b91781ea713fe1ca5bd1b5de6960?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">freeyourtech</media:title>
		</media:content>
	</item>
		<item>
		<title>pgTsung: stage 1</title>
		<link>http://freeyourtech.wordpress.com/2008/10/29/pgtsung-stage-1/</link>
		<comments>http://freeyourtech.wordpress.com/2008/10/29/pgtsung-stage-1/#comments</comments>
		<pubDate>Wed, 29 Oct 2008 12:21:44 +0000</pubDate>
		<dc:creator>freeyourtech</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Postgresql]]></category>
		<category><![CDATA[tsung]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://freeyourtech.wordpress.com/?p=76</guid>
		<description><![CDATA[Tsung has a &#8220;proxy mode&#8221; which records SQL statements and produces an appropriate Tsung scenario file. What could be simpler? I shall just point my web application to speak to the Tsung proxy instead of the database and I will use it to generate &#8220;typical usage&#8221; cases. Unfortunately, this is not an option if, say, [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=freeyourtech.wordpress.com&amp;blog=2914923&amp;post=76&amp;subd=freeyourtech&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Tsung has a &#8220;proxy mode&#8221; which records SQL statements and produces an appropriate Tsung scenario file. What could be simpler? I shall just point my web application to speak to the Tsung proxy instead of the database and I will use it to generate &#8220;typical usage&#8221; cases.</p>
<p>Unfortunately, this is not an option if, say, your application uses a web framework which maintains several open connections to the database server. The Tsung proxy can only handle one connection at a time. So your application does not function properly and you are not able to use it to generate the &#8220;typical usage&#8221; scenaria.</p>
<p>Then there is <span class="nobr"><a rel="nofollow" href="http://pgfouine.projects.postgresql.org/index.html">pgFouine</a></span>, a PostgreSQL log analyzer, which shows some promise, which produces Tsung compatible output on demand. But pgFouine principally analyzes log files to group and rank statements according to how well they perform in the database, and this approach has spilled over to Tsung scenario file generation: the order of the SQL statements is not preserved! This, by itself, perhaps would not be a problem, but I often record multiple use-cases in one go and pgFouine mixes them up.</p>
<p>The best way to create our test cases, therefore, is to use the log files from an idle Postgresql server, after enabling the logging of all SQL statements in the server. I have written a few scripts which help with the process, but this was after already changing the logging format of our Postgresql server to pgFouine&#8217;s requirements (syslog). Thus, the Postgresql server needs to log in this particular style:</p>
<div class="code">
<div class="codeContent">
<pre class="code-java" style="padding-left:30px;">Sep  1 16:21:19 pgtest postgres[4359]: [136-1] LOG:  statement: SELECT rolname FROM pg_roles ORDER BY 1
Sep  1 16:21:19 pgtest postgres[4359]: [137-1] LOG:  duration: 0.178 ms</pre>
</div>
</div>
<p>To make sure this is the case, you probably need to edit your <strong>postgresql.conf</strong> file and set the following values:</p>
<div class="code">
<div class="codeContent">
<pre class="code-java" style="padding-left:30px;">log_destination = 'syslog'
redirect_stderr = off
silent_mode = on
log_min_duration_statement = 0
log_duration = off
log_statement = 'none'
log_line_prefix = 'user=%u,db=%d,host=%h '
syslog_facility = 'LOCAL0'
syslog_ident = 'postgres'</pre>
</div>
</div>
<p>Then, you need to edit <strong>/etc/syslog.conf</strong> to set up a PostgreSQL facility and exclude it from the default log file:</p>
<div class="code">
<div class="codeContent">
<pre class="code-java" style="padding-left:30px;">local0.*   -/home/postgres/logs/postgresql.log
*.info;mail.none;authpriv.none;cron.none;local0.none</pre>
</div>
</div>
<p>For the changes to have effect, you need to restart the syslog service (<strong>/etd/init.d/syslog restart</strong>) and Postgresql.</p>
<p>You are now ready to start capturing SQL statements in the Postgresql log file. To make sure you shall be able to filter the log file into separate use-cases, you should choose a unique string identifier (e.g. &#8216;complex search 001&#8242;) to throw at the database server at the beginning and end of a particular use-case. You may do this by connecting to the server via ssh and typing:</p>
<div class="panel">
<div class="panelContent">
<pre style="padding-left:30px;">echo "SELECT 'complex search 001';" | psql -U postgres</pre>
</div>
</div>
<p>&#8230; before using your web application (which must be configured to talk to this particular Postgresql server). At the end of this use-case (&#8216;complex search 001&#8242;) all you need to do is repeat the line above.</p>
<p>When you have finished recording all batches (use-cases) of SQL statements, you need to locate the postgresql log file (e.g. <strong>/var/log/postgresql/postgresql.log</strong>) and use it as input for the perl script below:</p>
<p>I have created <strong>syslog-filter</strong>, a simple perl script you may run from the command line, like so:</p>
<div class="panel">
<div class="panelContent">
<pre style="padding-left:30px;">./syslog-filter postgresql.log  'complex search 001' &gt; complex-search-001.log</pre>
</div>
</div>
<p>&#8230; assuming the script has permission to be executed and is located in the same directory as the <strong>postgresql.log</strong> file. This command creates <strong>complex-search-001.log</strong>, which contains only those SQL statement that belong to this use-case.</p>
<p>Here is the code for syslog-filter:</p>
<pre style="padding-left:30px;">#!/usr/bin/perl -w
if(scalar(@ARGV) &lt; 2) {
   print "Usage: ./syslog-filter &lt;file&gt; &lt;token&gt;\ne.g. ./syslog-filter scenario.log 'Quoted companies'\n"; exit(1);
}
open(MYFILE, '&lt;'.$ARGV[0]) or die "Can't open ".$ARGV[0]." for reading...\n";
my $switch = 0; my $line = "";
while($line = &lt;MYFILE&gt;) {
    if($line =~ /$ARGV[1]/) { &amp;toggle_switch(); }
    print $line if $switch;
}
close(MYFILE);

sub toggle_switch { if($switch) { $switch=0; } else { $switch=1; } }</pre>
<p>For the next step, you may want to use the following script, <strong>syslog-to-tsung-xml</strong>:</p>
<pre style="padding-left:30px;">#!/usr/bin/perl -w</pre>
<pre style="padding-left:30px;">use Parse::Syslog;</pre>
<pre style="padding-left:30px;">if(scalar(@ARGV) &lt; 1) {</pre>
<pre style="padding-left:30px;">   print "Usage: ./syslog-to-tsung-xml &lt;logfile&gt;\ne.g. ./syslog-to-tsung-xml my-scenario.log\n"; exit(1);</pre>
<pre style="padding-left:30px;">}</pre>
<pre style="padding-left:30px;">my $parser = Parse::Syslog-&gt;new( $ARGV[0] ); $s = 0; # $s is just a switch whether we should record/not</pre>
<pre style="padding-left:30px;">READINGLOOP: while(my $sl = $parser-&gt;next) {</pre>
<pre style="padding-left:30px;">   $line = $sl-&gt;{text}; # i don't want to write $sl-&gt;{text} all the time <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </pre>
<pre style="padding-left:30px;">   if ($line =~ /LOG:  execute/ or $line =~ /LOG:  statement/) { # if we see 'LOG:  execute' we know we should start recording...</pre>
<pre style="padding-left:30px;">      # but if the recording switch is already on, we need to save recorded statement into @selects</pre>
<pre style="padding-left:30px;">      if($s and $st ne "") { push @selects, $st; $s = 0; $st = ""; $g = undef; }</pre>
<pre style="padding-left:30px;">      # in other wordsd, a 'LOG:  execute' also means previous recording should end</pre>
<pre style="padding-left:30px;">      if($line =~ /\[(.+)-.+(SELECT .+)$/) { $s = 1; $g = $1; $st = $2; } # regular expression heaven - wish</pre>
<pre style="padding-left:30px;">      # if this is a SELECT statement it is put in $st, $s is set to 1, $g contains id filtering next lines</pre>
<pre style="padding-left:30px;">      next READINGLOOP; # ok, let's proceed with the next line - don't execute the rest...</pre>
<pre style="padding-left:30px;">   }</pre>
<pre style="padding-left:30px;">   if ($s and $line =~ /\[(.+)-.+\] (.+)$/ and $g == $1) { $st .= $2; } # recording subsequent lines - concat</pre>
<pre style="padding-left:30px;">}</pre>
<pre style="padding-left:30px;"># just to be sure, we save whatever is inside $st once we reach the end of the file - no more 'LOG:  execute's</pre>
<pre style="padding-left:30px;">if($st ne "") { push @selects, $st; $s = 0; $st = ""; $g = undef; }</pre>
<pre style="padding-left:30px;"># now, we should scan the results for 'DETAIL:  parameters:' and perform all the described substitutions</pre>
<pre style="padding-left:30px;">my $array; my $hash; my $key; my $val; my $var; my $target; my $subs;</pre>
<pre style="padding-left:30px;">for($i=0;$i&lt;scalar(@selects);$i++) {</pre>
<pre style="padding-left:30px;">   if ($selects[$i] =~ /^(.+)DETAIL:  parameters: (.+)$/) {</pre>
<pre style="padding-left:30px;">      # reading parameters, splitting them into key,val pairs for subsequent search and replace</pre>
<pre style="padding-left:30px;">      $array = (); $hash = {}; $subs = "";</pre>
<pre style="padding-left:30px;">      $target = $1;</pre>
<pre style="padding-left:30px;">      @$array = split ',' , $2;</pre>
<pre style="padding-left:30px;">      # print "\nBefore: ----------------------------------------------------------------------------------\n";</pre>
<pre style="padding-left:30px;">      # print $target, "\n";</pre>
<pre style="padding-left:30px;">      # print "------------------------------------------------------------------------------------------\n";</pre>
<pre style="padding-left:30px;">      foreach $var (@$array) {</pre>
<pre style="padding-left:30px;">         ($key,$val) = split '=', $var;</pre>
<pre style="padding-left:30px;">         $key =~ s/^ *(.+) +$/$1/;</pre>
<pre style="padding-left:30px;">         $val =~ s/^ *'(.+)' *$/$1/;</pre>
<pre style="padding-left:30px;">         $hash-&gt;{$key} = $val;</pre>
<pre style="padding-left:30px;">         # print $key, "\t", $val, "\n";</pre>
<pre style="padding-left:30px;">         $subs = "\\".$key;</pre>
<pre style="padding-left:30px;">         $target =~ s/$subs\:\:/\'$val\'::/g;</pre>
<pre style="padding-left:30px;">      }</pre>
<pre style="padding-left:30px;">      # print "After: ----------------------------------------------------------------------------------\n";</pre>
<pre style="padding-left:30px;">      # print $target, "\n";</pre>
<pre style="padding-left:30px;">      # print "------------------------------------------------------------------------------------------\n";</pre>
<pre style="padding-left:30px;">      $selects[$i] = $target;</pre>
<pre style="padding-left:30px;">   }</pre>
<pre style="padding-left:30px;">}</pre>
<pre style="padding-left:30px;"># and on to outputting our results...</pre>
<pre style="padding-left:30px;"># pure sql output if there is a second argument in the command line</pre>
<pre style="padding-left:30px;">if($ARGV[1]) { for($i=0;$i&lt;scalar(@selects);$i++) { print $selects[$i],";\n"; } }</pre>
<pre style="padding-left:30px;">else {</pre>
<pre style="padding-left:30px;"># tsung compatible output</pre>
<pre style="padding-left:30px;">print &lt;&lt;STARTOFSESSION;</pre>
<pre style="padding-left:30px;">    &lt;session name="$ARGV[0]" probability="100" type="ts_pgsql"&gt;</pre>
<pre style="padding-left:30px;">        &lt;transaction name="connection"&gt;</pre>
<pre style="padding-left:30px;">            &lt;request&gt;</pre>
<pre style="padding-left:30px;">                &lt;pgsql type="connect" database="mydatabase" username="myusername" /&gt;</pre>
<pre style="padding-left:30px;">            &lt;/request&gt;</pre>
<pre style="padding-left:30px;">            &lt;request&gt;</pre>
<pre style="padding-left:30px;">                &lt;pgsql type="authenticate" password="mypassword"/&gt;</pre>
<pre style="padding-left:30px;">            &lt;/request&gt;</pre>
<pre style="padding-left:30px;">        &lt;/transaction&gt;</pre>
<pre style="padding-left:30px;">        &lt;thinktime value="5"/&gt;</pre>
<pre style="padding-left:30px;">            &lt;transaction name="requests"&gt; &lt;!-- start of requests --&gt;</pre>
<pre style="padding-left:30px;">STARTOFSESSION</pre>
<pre style="padding-left:30px;">for($i=0;$i&lt;scalar(@selects);$i++) {</pre>
<pre style="padding-left:30px;">   print "\t\t\t\t&lt;request&gt;&lt;pgsql type=\"sql\"&gt;&lt;![CDATA["; print $selects[$i],"\n"; print "]]&gt;&lt;/pgsql&gt;&lt;/request&gt;\n"</pre>
<pre style="padding-left:30px;">}</pre>
<pre style="padding-left:30px;">print &lt;&lt;ENDOFSESSION;</pre>
<pre style="padding-left:30px;">            &lt;/transaction&gt; &lt;!-- end of requests --&gt;</pre>
<pre style="padding-left:30px;">            &lt;thinktime value="5"/&gt; &lt;!-- delay between scenario re-play --&gt;</pre>
<pre style="padding-left:30px;">        &lt;request&gt;&lt;pgsql type="close"&gt;&lt;/pgsql&gt;&lt;/request&gt;</pre>
<pre style="padding-left:30px;">    &lt;/session&gt;</pre>
<pre style="padding-left:30px;">ENDOFSESSION</pre>
<pre style="padding-left:30px;">}</pre>
<p>This is how you would run the above script:</p>
<div class="panel">
<div class="panelContent">
<pre style="padding-left:30px;">./syslog-to-tsung-xml complex-search-001.log &gt; complex-search-001.xml</pre>
</div>
</div>
<p>This generates a partial Tsung file in the proper format. This process need to be repeated for every different use-case we would like to include. The resulting xml files may be concatenated into a single file, like so:</p>
<div class="panel">
<div class="panelContent">
<pre style="padding-left:30px;">cat *.xml &gt; my-tsung-scenario.xml</pre>
</div>
</div>
<p>The resulting file (<strong>my-tsung-scenario.xml</strong>) will be completed into a full valid Tsung scenario file in section 2.4 In order to run the above scripts, you obviously need a working Perl environment and the Parse::Syslog perl module, which may be installed by typing (as root):</p>
<div class="panelContent">
<pre style="padding-left:30px;">cpan Parse::Syslog</pre>
<p>Before proceeding any further, you may want to manually edit all occurences of</p>
<div class="code">
<div class="codeContent">
<pre class="code-java" style="padding-left:30px;">&lt;transaction name=<span class="code-quote">"requests"</span>&gt;</pre>
</div>
</div>
<p>&#8230;in my-tsung-scenario.xml, changing the name each time to reflect the use-case which follows. E.g.</p>
<div class="code">
<div class="codeContent">
<pre class="code-java" style="padding-left:30px;">&lt;transaction name=<span class="code-quote">"complexSearch1"</span>&gt;</pre>
</div>
</div>
<p>Another required manual edit concerns the probability factors assigned to each use-case (session). Therefore, you need to adjust the probability settings of all such occurences:</p>
<div class="code">
<div class="codeContent">
<pre class="code-java" style="padding-left:30px;"> &lt;session name=<span class="code-quote">"complex-search-001.log"</span> probability=<span class="code-quote">"100"</span> type=<span class="code-quote">"ts_pgsql"</span>&gt;</pre>
</div>
</div>
<p>&#8230; to reflect the desired frequency of each use-case in the tests. Changing 100 to 25 in the above line will force 1 in 4 users during the Tsung tests to replay the &#8216;complex-search-001&#8242; scenario.</p>
<p>To turn a series of sessions described in the file my-tsung-scenario.xml into a full, valid scenario we need to type:</p>
<div class="panel">
<pre class="panelContent" style="padding-left:30px;">echo '&lt;!DOCTYPE tsung SYSTEM "/usr/local/share/tsung/tsung-1.0.dtd" [] &gt;

&lt;tsung&gt;
&lt;!- &lt;tsung loglevel="debug" dumptraffic="true"&gt; -&gt; &lt;!- useful sometimes -&gt;
   &lt;clients&gt;
      &lt;client host="myclient" weight="1" cpu="2"&gt;&lt;/client&gt;
   &lt;/clients&gt;

   &lt;servers&gt;
      &lt;server host="myserver" port="5432" type="tcp"/&gt;
   &lt;/servers&gt;

   &lt;monitoring&gt;
      &lt;monitor host="myserver" type="erlang"&gt;&lt;/monitor&gt; &lt;!- postgresql server -&gt;
      &lt;monitor host="myclient" type="erlang"&gt;&lt;/monitor&gt;
   &lt;/monitoring&gt;

   &lt;load&gt;
      &lt;arrivalphase phase="1" duration="1800" unit="second"&gt;
         &lt;users interarrival="4" unit="second"&gt;&lt;/users&gt;
      &lt;/arrivalphase&gt;
      &lt;arrivalphase phase="2" duration="1800" unit="second"&gt;
         &lt;users interarrival="2" unit="second"&gt;&lt;/users&gt;
      &lt;/arrivalphase&gt;
   &lt;/load&gt;

   &lt;sessions&gt;

' &gt;  head-tsung-scenario.xml</pre>
</div>
<p>&#8230; to get a <strong>head-tsung-scenario.xml</strong> file which we can then edit accoring to our needs. If we keep the existing settings, Tsung will attempt to load-test a server called <ins>myserver</ins> (the names needs to be resolvable, please check your DNS service and/or your <strong>/etc/hosts</strong> file) from a single client, <ins>myclient</ins>, while trying to monitor hardware load on both machines. In the load section, two load phases have been defined, starting at &#8220;new user every 4 seconds&#8221; and then doubling the rate. Each of these phases is meant to last half an hour (1800s), but once the server reaches its breaking point, user sessions do not terminate properly and the duration of the load phase we are in is expanded, as Tsung waits for all users to finish before proceeding to the next one. Once you have changed head-tsung-scenario.xml according to your needs, you may complete the generation of a new scenario file by typing:</p>
<div class="panel">
<div class="panelContent">
<pre style="padding-left:30px;"> cat head-tsung-scenario.xml my-tsung-scenario.xml &gt; full-tsung-scenario.xml; echo '
    &lt;/sessions&gt;
&lt;/tsung&gt;
' &gt;&gt; temp-tsung-scenario.xml</pre>
</div>
</div>
<p>This file (<strong>temp-tsung-scenario.xml</strong>) is actually a full valid scenario file which may be used for testing. But you probably want to tweak one or two things to make this testing relevant to your system, which is what we shall discuss in the next installment of this tutorial.</div>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/freeyourtech.wordpress.com/76/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/freeyourtech.wordpress.com/76/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/freeyourtech.wordpress.com/76/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/freeyourtech.wordpress.com/76/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/freeyourtech.wordpress.com/76/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/freeyourtech.wordpress.com/76/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/freeyourtech.wordpress.com/76/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/freeyourtech.wordpress.com/76/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/freeyourtech.wordpress.com/76/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/freeyourtech.wordpress.com/76/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/freeyourtech.wordpress.com/76/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/freeyourtech.wordpress.com/76/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/freeyourtech.wordpress.com/76/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/freeyourtech.wordpress.com/76/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=freeyourtech.wordpress.com&amp;blog=2914923&amp;post=76&amp;subd=freeyourtech&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://freeyourtech.wordpress.com/2008/10/29/pgtsung-stage-1/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/4a95b91781ea713fe1ca5bd1b5de6960?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">freeyourtech</media:title>
		</media:content>
	</item>
	</channel>
</rss>
