<?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>Perfected Perspectives &#187; IT</title>
	<atom:link href="http://blog.perfectedperspectives.com/category/infotech/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.perfectedperspectives.com</link>
	<description>Photography by Andrew Rodgers</description>
	<lastBuildDate>Fri, 29 Jan 2010 06:00:51 +0000</lastBuildDate>
	
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>WordPress Function to Style New or Updated Posts</title>
		<link>http://blog.perfectedperspectives.com/2010/wordpress-function-to-style-new-or-updated-posts/</link>
		<comments>http://blog.perfectedperspectives.com/2010/wordpress-function-to-style-new-or-updated-posts/#comments</comments>
		<pubDate>Fri, 29 Jan 2010 06:00:50 +0000</pubDate>
		<dc:creator>Andrew</dc:creator>
				<category><![CDATA[IT]]></category>
		<category><![CDATA[FAQs Help and Tutorials]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Templates]]></category>
		<category><![CDATA[theme]]></category>
		<category><![CDATA[themes]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://blog.perfectedperspectives.com/?p=263</guid>
		<description><![CDATA[Recently I&#8217;ve been doing a lot of WordPress theme customization work, and a client wanted to add those nifty &#8220;new&#8221; or &#8220;updated&#8221; icons to his post. I wrote this simple function to handle it.
Simply add this to your theme&#8217;s functions.php file, or if your theme doesn&#8217;t have a functions.php file, create one, and add the [...]]]></description>
			<content:encoded><![CDATA[<p>Recently I&#8217;ve been doing a lot of <a class="zem_slink freebase/en/wordpress" href="http://wordpress.org" title="WordPress" rel="homepage">WordPress</a> theme customization work, and a client wanted to add those nifty &#8220;new&#8221; or &#8220;updated&#8221; icons to his post. I wrote this simple function to handle it.</p>
<p>Simply add this to your theme&#8217;s functions.php file, or if your theme doesn&#8217;t have a functions.php file, create one, and add the following also available as a zip: <a href="http://blog.perfectedperspectives.com/wp-content/uploads/2010/01/pp_get_post_status.zip">Add Style to New/Updates posts</a>.</p>
<p><code>function pp_get_post_status() {<br />
global $post;<br />
//begin config Vars<br />
$old_days = 2; //set how many days a post is considered "new"<br />
$up_days = 1; //set how many days a post is considered "updated"<br />
$new_class = 'new'; //class you want applied for posts considered "new"<br />
$up_class = 'updated'; //class you want applied for posts considered "updated"<br />
$class_tag = ''; //set default class, if any<br />
//end config</code></p>
<p><code><br />
	$cur_time = time(); //get current system time<br />
	$post_age = $cur_time - get_the_time('U', $post-&gt;ID); //determine posts' age<br />
	$up_age = $cur_time - get_the_modified_time('U', $post-&gt;ID); //determine last update age<br />
		if($post_age &lt; ($old_days * 86400)) {$class_tag = ' ' . $new_class;} //if post is newer than n days, apply "new"<br />
		elseif($up_age &lt; ($up_days * 86400)) {$class_tag = ' ' . $up_class;} //if post older than n days, but updated within n days, apply "updated<br />
	echo $class_tag;<br />
}</code></p>
<p>You can call it from within the loop, here is an example where it&#8217;s adding a class to the div containing the post, you could use it in any CSS class declaration. You will notice that it automatically adds the space between any existing classes and the class it adds.</p>
<p><code>&lt;div class="article&lt;?php pp_get_post_status(); ?&gt;"&gt;</code></p>
<p>You could then use the <a class="zem_slink freebase/en/cascading_style_sheets" href="http://en.wikipedia.org/wiki/Cascading_Style_Sheets" title="Cascading Style Sheets" rel="wikipedia">CSS selector</a>:<br />
 <code>.article .new {style here}</code><br />
for new posts and:<br />
<code>.article .updated {style here}</code><br />
for updated posts.</p>
<div style="margin-top: 10px; height: 15px;" class="zemanta-pixie"><a class="zemanta-pixie-a" href="http://reblog.zemanta.com/zemified/7bf8db07-0861-45ff-96cb-da72edcf6ec9/" title="Reblog this post [with Zemanta]"><img style="border: medium none; float: right;" class="zemanta-pixie-img" src="http://img.zemanta.com/reblog_e.png?x-id=7bf8db07-0861-45ff-96cb-da72edcf6ec9" alt="Reblog this post [with Zemanta]"></a><span class="zem-script more-related more-info pretty-attribution"><script type="text/javascript" src="http://static.zemanta.com/readside/loader.js" defer="defer"></script></span></div>
<a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fblog.perfectedperspectives.com%2F2010%2Fwordpress-function-to-style-new-or-updated-posts%2F&amp;linkname=WordPress%20Function%20to%20Style%20New%20or%20Updated%20Posts"><img src="http://blog.perfectedperspectives.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share/Bookmark"/></a>]]></content:encoded>
			<wfw:commentRss>http://blog.perfectedperspectives.com/2010/wordpress-function-to-style-new-or-updated-posts/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>First image thumbnail, using PhotoBucket</title>
		<link>http://blog.perfectedperspectives.com/2010/first-image-thumbnail-using-photobucket/</link>
		<comments>http://blog.perfectedperspectives.com/2010/first-image-thumbnail-using-photobucket/#comments</comments>
		<pubDate>Mon, 18 Jan 2010 15:04:57 +0000</pubDate>
		<dc:creator>Andrew</dc:creator>
				<category><![CDATA[IT]]></category>
		<category><![CDATA[function]]></category>
		<category><![CDATA[Image Cataloguing]]></category>
		<category><![CDATA[Image Management]]></category>
		<category><![CDATA[photobucket]]></category>
		<category><![CDATA[Thumbnail]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://blog.perfectedperspectives.com/?p=243</guid>
		<description><![CDATA[I doubt there are a whole lot of people out there using WordPress like this, but, just in case, I thought I would put this up.
I created this script to help out @e_anurag, he had a unique situation, a blog with all of the images hosted over at photobucket.com. He wanted to use a thumbnail [...]]]></description>
			<content:encoded><![CDATA[<p>I doubt there are a whole lot of people out there using <a class="zem_slink freebase/en/wordpress" href="http://wordpress.org" title="WordPress" rel="homepage">WordPress</a> like this, but, just in case, I thought I would put this up.<br />
I created this script to help out <a href="http://twitter.com/e_anurag">@e_anurag</a>, he had a unique situation, a blog with all of the images hosted over at <a class="zem_slink freebase/en/photobucket" href="http://www.photobucket.com" title="Photobucket" rel="homepage">photobucket.com</a>. He wanted to use a thumbnail of the first image in each post on the homepage, but since the images weren&#8217;t hosted on the blog, the existing scripts he found wouldn&#8217;t work. I modified the <a href="http://www.wprecipes.com/how-to-get-the-first-image-from-the-post-and-display-it">display-first-image-as-thumbnail-script</a> found at <a href="http://wprecipes.com">wprecipes.com</a></p>
<p>Photobucket automagically generates <a class="zem_slink freebase/en/thumbnail" href="http://en.wikipedia.org/wiki/Thumbnail" title="Thumbnail" rel="wikipedia">thumbnails</a> of images uploaded, stored with the prefix &#8216;th_&#8217; appended to the file name, thus &#8216;my_image.jpg&#8217; becomes &#8216;th_my_image.jpg&#8217; I modified the script so that it found two separate elements, the url path, and the <a class="zem_slink freebase/en/image_file_formats" href="http://en.wikipedia.org/wiki/Image_file_formats" title="Image file formats" rel="wikipedia">image file</a> name, allowing us to concatenate them together, with the &#8216;th_&#8217; prefix stuck between. this script should go in you &#8216;<code>functions.php</code>&#8216; file in the root of your theme.</p>
<div class="code_format">
<code>&lt;?php<br />
function photobucket_thumbnail() {<br />
  global $post, $posts;<br />
  $first_img = '';<br />
  ob_start();<br />
  ob_end_clean();<br />
  $output = preg_match_all('%&lt;img.+src=['"]([^'"]+/+)(.*..*?)['"].*&gt;%i', $post-&gt;post_content, $matches);<br />
  $first_img = $matches [1] [0];<br />
  $first_img .= 'th_';<br />
  $first_img .= $matches [2] [0];<br />
  if(empty($first_img)){ //Defines a default image<br />
    $first_img = "/images/default.jpg";<br />
  }<br />
  return $first_img;<br />
}<br />
?&gt;</code>
</div>
<p>Using <code>&lt;?php photobucket_thumbnail() ?&gt;</code> anywhere within the WP loop, will return the URL for the thumbnail of the first image in the post, so long as it&#8217;s from photobucket.</p>
<div style="margin-top: 10px; height: 15px;" class="zemanta-pixie"><a class="zemanta-pixie-a" href="http://reblog.zemanta.com/zemified/a07ca0f2-d7e7-4825-88ac-b53bc0d8abf5/" title="Reblog this post [with Zemanta]"><img style="border: medium none; float: right;" class="zemanta-pixie-img" src="http://img.zemanta.com/reblog_e.png?x-id=a07ca0f2-d7e7-4825-88ac-b53bc0d8abf5" alt="Reblog this post [with Zemanta]"></a><span class="zem-script more-related more-info pretty-attribution"><script type="text/javascript" src="http://static.zemanta.com/readside/loader.js" defer="defer"></script></span></div>
<a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fblog.perfectedperspectives.com%2F2010%2Ffirst-image-thumbnail-using-photobucket%2F&amp;linkname=First%20image%20thumbnail%2C%20using%20PhotoBucket"><img src="http://blog.perfectedperspectives.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share/Bookmark"/></a>]]></content:encoded>
			<wfw:commentRss>http://blog.perfectedperspectives.com/2010/first-image-thumbnail-using-photobucket/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Tweeps KML/Stream</title>
		<link>http://blog.perfectedperspectives.com/2010/tweeps-kmlstream/</link>
		<comments>http://blog.perfectedperspectives.com/2010/tweeps-kmlstream/#comments</comments>
		<pubDate>Fri, 15 Jan 2010 21:54:24 +0000</pubDate>
		<dc:creator>Andrew</dc:creator>
				<category><![CDATA[IT]]></category>
		<category><![CDATA[Add new tag]]></category>
		<category><![CDATA[Google Earth]]></category>
		<category><![CDATA[Keyhole Markup Language]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[RSS]]></category>
		<category><![CDATA[SimplePie]]></category>
		<category><![CDATA[Twitter]]></category>
		<category><![CDATA[Web development]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://blog.perfectedperspectives.com/?p=225</guid>
		<description><![CDATA[So if you&#8217;ve been over to the &#8220;Stuff&#8221; page, you already know that I&#8217;ve started keeping up with the Tweeps that I&#8217;ve helped using a Google Earth map. I recently added a &#8220;tweetstream&#8221; of the people on the map. I thought of using a list to acquire the tweets, but I didn&#8217;t want to enter [...]]]></description>
			<content:encoded><![CDATA[<p>So if you&#8217;ve been over to the <a href="http://blog.perfectedperspectives.com/stuff">&#8220;Stuff&#8221; page</a>, you already know that I&#8217;ve started keeping up with the Tweeps that I&#8217;ve helped using a <a href="http://maps.google.com/maps?f=q&amp;source=s_q&amp;hl=en&amp;geocode=&amp;q=http:%2F%2Fblog.perfectedperspectives.com%2Fwp-content%2Fuploads%2FTwitterHelped.kml&amp;sll=37.0625,-95.677068&amp;sspn=41.360684,93.076172&amp;ie=UTF8&amp;ll=6.843019,-141.773996&amp;spn=174.04169,360&amp;z=1">Google Earth map</a>. I recently added a &#8220;tweetstream&#8221; of the people on the map. I thought of using a list to acquire the tweets, but I didn&#8217;t want to enter the usernames in 2 places, so I decided to instead parse the names out of the <a class="zem_slink freebase/en/keyhole_markup_language" href="http://en.wikipedia.org/wiki/Keyhole_Markup_Language" title="Keyhole Markup Language" rel="wikipedia">KML</a> file. I used the native PHP extension simplexml to parse the KML file, and then used <a class="zem_slink" href="http://simplepie.org/%20" title="SimplePie" rel="homepage">SimplePie</a> to create a new RSS feed from all the users tweetstreams.</p>
<p>Updated: I have modified the script heavily, and added more comments in the code. Now I only retrieve one tweet from each user, then sort those tweets by date. The WordPress function I wrote now retrieves tweets until a certain number of characters is obtained, attempting to fill an area with tweets, regardless of individual tweet length.</p>
<p> Here is the code that creates the RSS feed:</p>
<div class="code_format">
<code>&lt;?php echo '&lt;?xml version="1.0" encoding="UTF-8"?&gt;'; ?&gt;<br />
&lt;rss xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:georss="http://www.georss.org/georss"&gt;<br />
&lt;channel&gt;<br />
&lt;title&gt;Twitter Helped KML&lt;/title&gt;<br />
&lt;link&gt;http://blog.perfectedperspectives.com/stuff&lt;/link&gt;<br />
&lt;description&gt;<br />
Stream of tweets from tweeps I've helped with web development<br />
&lt;/description&gt;<br />
&lt;atom:link type="application/rss+xml" href="http://twitter.com/statuses/user_timeline/14388935.rss" rel="self"/&gt;<br />
&lt;language&gt;en-us&lt;/language&gt;<br />
&lt;?php<br />
//setup sortbydate<br />
function sortbysub($a, $b) {<br />
   if($a['date'] &gt; $b['date'])<br />
      return 1;<br />
   if($a['date'] &lt; $b['date'])<br />
      return -1;<br />
   return 0;<br />
}<br />
//load existing KML file<br />
$xml = simplexml_load_file('http://blog.perfectedperspectives.com/wp-content/uploads/TwitterHelped.kml');<br />
//<br />
foreach ($xml-&gt;Document-&gt;Folder as $folder) {<br />
//parse each placemark for the TwitterUsername<br />
	foreach ($folder-&gt;Placemark as $placemark) {<br />
		$trimtweepurl  = 'http://twitter.com/statuses/user_timeline/' . (string)trim($placemark-&gt;name, " @") . '.rss';<br />
		$tweepurls[] = $trimtweepurl;<br />
}<br />
}<br />
//include SimplePie<br />
include 'simplepie.inc';<br />
//Setup error Checking<br />
$firstfeed = 0;<br />
//call SimplePie for each Tweeps RSS feed<br />
foreach ($tweepurls as $simpleurl)	{<br />
//SimplePie parameters and setup<br />
$feed = new SimplePie();<br />
$feed-&gt;set_feed_url($simpleurl);<br />
$feed-&gt;set_cache_duration (1000);<br />
$feed-&gt;init();<br />
$feed-&gt;handle_content_type();<br />
//counter so that we only get the latest tweet from each tweep<br />
$itemlimit = 0;<br />
//retrieve the latest tweet from each feed<br />
foreach ($feed-&gt;get_items() as $item) {<br />
//count n tweet(s) from each user<br />
if($itemlimit==1){break;}<br />
//load tweet into array<br />
	$tweet['title'] = $item-&gt;get_title();<br />
	$tweet['link'] = $item-&gt;get_permalink();<br />
	$tweet['date'] = $item-&gt;get_date();<br />
	$tweet['guid'] = $item-&gt;get_id();<br />
	$tweet['description'] = $item-&gt;get_description();<br />
//load each tweet as array element<br />
$tweeptweets[] = $tweet;<br />
//increment counter so we only get n tweets<br />
$itemlimit = $itemlimit + 1;<br />
//end foreach<br />
}<br />
//this if statement prevents the next from running on ALL RSS queries, this prevents having to wait for the entire script to run if the twitter ratelimit is exceeded from just the first RSS query<br />
if($firstfeed &gt; 0){break;}<br />
if(in_array('&lt;error&gt;', $tweeptweets)){<br />
//this is the error message displayed if Twitter denies our RSS query<br />
?&gt;<br />
&lt;item&gt;<br />
&lt;title&gt;Rate Limit Exceeded&lt;/title&gt;<br />
&lt;link&gt;&lt;/link&gt;<br />
&lt;pubDate&gt;&lt;/pubDate&gt;<br />
&lt;guid&gt;&lt;/guid&gt;<br />
&lt;description&gt;Twitter HATES you!&lt;/description&gt;<br />
&lt;/item&gt;<br />
&lt;?php<br />
}<br />
}<br />
//here we sort the tweets by date, using the function declared earlier<br />
usort($tweeptweets, 'sortbysub');<br />
//flip into descending order<br />
$tweeptweets = array_reverse($tweeptweets);<br />
//create each item for the final rss feed<br />
foreach ($tweeptweets as $tweeptweet) {<br />
?&gt;<br />
&lt;item&gt;<br />
&lt;title&gt;&lt;?php echo $tweeptweet['title']; ?&gt;&lt;/title&gt;<br />
&lt;link&gt;&lt;?php echo $tweeptweet['link']; ?&gt;&lt;/link&gt;<br />
&lt;pubDate&gt;&lt;?php echo $tweeptweet['date']; ?&gt;&lt;/pubDate&gt;<br />
&lt;guid&gt;&lt;?php echo $tweeptweet['guid']; ?&gt;&lt;/guid&gt;<br />
&lt;description&gt;&lt;?php echo $tweeptweet['description']; ?&gt;&lt;/description&gt;<br />
&lt;/item&gt;<br />
&lt;?php }<br />
//close the rss file<br />
 ?&gt;<br />
&lt;/channel&gt;<br />
&lt;/rss&gt;</code></div>
<p>I then created a shortcode in my functions.php file in my <a class="zem_slink freebase/en/wordpress" href="http://wordpress.org" title="WordPress" rel="homepage">WordPress</a> theme, using this code:</p>
<div class="code_format"><code>function display_helped_tweets() {<br />
include_once(ABSPATH.WPINC.'/simplepie.inc');<br />
$tweepstream = '&lt;div id="tweepstream"&gt;&lt;ul id="tweepstreamlist"&gt;';<br />
$feed_url = 'http://tools.qtekso.com/pie/kmltwits.php';<br />
$feed = new simplepie($feed_url);<br />
foreach($feed-&gt;get_items() as $item) :<br />
			$tweetparts = explode(':', $item-&gt;get_title(), 2);<br />
$tweepstream .= '&lt;li class="tweepstreamtweet"&gt;';<br />
$tweepstream .= '&lt;a href="http://twitter.com/' . $tweetparts[0] . '" title="' . $item-&gt;get_title() . '"&gt;';<br />
$tweepstream .= '@' . $tweetparts[0];<br />
$tweepstream .= '&lt;/a&gt;"' . $tweetparts[1] . '"&lt;/li&gt;';<br />
endforeach;<br />
$tweepstream .= '&lt;/ul&gt;&lt;/div&gt;';<br />
return $tweepstream;<br />
}<br />
add_shortcode('tweepstream', 'display_helped_tweets')</code></div>
<div style="margin-top: 10px; height: 15px;" class="zemanta-pixie"><a class="zemanta-pixie-a" href="http://reblog.zemanta.com/zemified/ac3d8619-28a7-4b6e-8270-afca65c857f2/" title="Reblog this post [with Zemanta]"><img style="border: medium none; float: right;" class="zemanta-pixie-img" src="http://img.zemanta.com/reblog_e.png?x-id=ac3d8619-28a7-4b6e-8270-afca65c857f2" alt="Reblog this post [with Zemanta]"></a><span class="zem-script more-related more-info pretty-attribution"><script type="text/javascript" src="http://static.zemanta.com/readside/loader.js" defer="defer"></script></span></div>
<a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fblog.perfectedperspectives.com%2F2010%2Ftweeps-kmlstream%2F&amp;linkname=Tweeps%20KML%2FStream"><img src="http://blog.perfectedperspectives.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share/Bookmark"/></a>]]></content:encoded>
			<wfw:commentRss>http://blog.perfectedperspectives.com/2010/tweeps-kmlstream/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>First Byte Response Benchmarking</title>
		<link>http://blog.perfectedperspectives.com/2009/first-byte-response-benchmarking/</link>
		<comments>http://blog.perfectedperspectives.com/2009/first-byte-response-benchmarking/#comments</comments>
		<pubDate>Mon, 28 Dec 2009 18:28:06 +0000</pubDate>
		<dc:creator>Andrew</dc:creator>
				<category><![CDATA[IT]]></category>

		<guid isPermaLink="false">http://blog.perfectedperspectives.com/?p=201</guid>
		<description><![CDATA[I was helping @nicoalaryjr this week, trying to minimize his First Byte Response time for his WordPress site, sexlab.tv First Byte Response (FBR) is a metric used to describe the delay between when a users browser sends a request, and when the server fulfills the first byte of that request. It&#8217;s a great metric for [...]]]></description>
			<content:encoded><![CDATA[<p>I was helping <a id="aptureLink_x3X0yBMyF3" href="http://twitter.com/nicoalaryjr">@nicoalaryjr</a> this week, trying to minimize his First Byte Response time for his <a class="zem_slink freebase/en/wordpress" href="http://wordpress.org" title="WordPress" rel="homepage">WordPress</a> site, <a id="aptureLink_yZ0tOKebhH" href="http://sexlab.tv">sexlab.tv</a> First Byte Response (FBR) is a metric used to describe the delay between when a users browser sends a request, and when the server fulfills the first byte of that request. It&#8217;s a great metric for most WordPress installs, as the first byte is typically indicative of completion of server-side processing. It&#8217;s a great way to test to see the performance impact of a particular plugin, as well as the overall responsiveness of your site. I used the <a class="zem_slink freebase/en/open_source" href="http://en.wikipedia.org/wiki/Open_source" title="Open source" rel="wikipedia">open source</a> httperf tool set to run the test I&#8217;m showing today, it can be installed on ubuntu by simply using this command:</p>
<p> <code>sudo apt-get install httperf</code></p>
<p><a href="http://blog.perfectedperspectives.com/wp-content/uploads/2009/12/HosingBenchmarking.png" rel="lightbox"><img src="http://blog.perfectedperspectives.com/wp-content/uploads/2009/12/HosingBenchmarking.png" alt="Benchmark Comparing Hosting Provider Performance" title="HostingBenchmarking" class="alignnone size-medium wp-image-205" width="450"></a></p>
<p><a id="aptureLink_NqCRWugkLH" href="http://twitter.com/nicoalaryjr">@nicoalaryjr</a> wanted to know what the performance benefits of moving from his current hosting provider to <a class="zem_slink freebase/en/dreamhost" href="http://www.dreamhost.com" title="DreamHost" rel="homepage">Dreamhost</a>, the hosting provider I use for this blog. The results were partly expected, and partly surprising, with the one anomaly being that Dreamhost seems to have one connection out of a thousand that it just drops the ball on. The real performance metric to look at here is the median response time, which, with 50 requests per second (RS), Dreamhost was 30X faster than his existing hosting! Even at 10 RS, Dreamhost was 7.5X faster.</p>
<p>The really surprising results were the Dreamhost VPS tests. With the default RAM value of 2300MB, at 50 RS, it was nearly 50X SLOWER than shared hosting. Even at 10 RS, it was 14X slower. With the minimum RAM of 150MB, performance is completely unnacceptable. What&#8217;s going on here? I can only theorize, but I would like to know the true reason. If anyone has some insight here please comment and let me know. The only theory I can come up with is that CPU throttling is dynamic on the shared hosting, as opposed to being given a static slice of CPU with VPS, therefore, with the short duration of the tests, throttling did not kick in on the shared account.</p>
<p>Let me know what you think!<br />
BTW favorite <a href="http://sexlab.tv">sexlab.tv</a> video? <a href="http://sexlab.tv/video/episode-2-the-spiderman/">The Spiderman</a>, it&#8217;s hilarious!!</p>
<p>Here is the link to the actual test results: <a id="aptureLink_9nJsyN4QBx" href="http://spreadsheets.google.com/pub?key=thnvzPtXYsLEydFquuUlcbg&amp;output=html">Hosting Provider First Byte Response Benchmarking Results</a> </p>
<div style="margin-top: 10px; height: 15px;" class="zemanta-pixie"><a class="zemanta-pixie-a" href="http://reblog.zemanta.com/zemified/e3e04a8d-a4ed-48b4-9f97-48d69507dcd6/" title="Reblog this post [with Zemanta]"><img style="border: medium none; float: right;" class="zemanta-pixie-img" src="http://img.zemanta.com/reblog_e.png?x-id=e3e04a8d-a4ed-48b4-9f97-48d69507dcd6" alt="Reblog this post [with Zemanta]"></a><span class="zem-script more-related more-info pretty-attribution"></span></div>
<a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fblog.perfectedperspectives.com%2F2009%2Ffirst-byte-response-benchmarking%2F&amp;linkname=First%20Byte%20Response%20Benchmarking"><img src="http://blog.perfectedperspectives.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share/Bookmark"/></a>]]></content:encoded>
			<wfw:commentRss>http://blog.perfectedperspectives.com/2009/first-byte-response-benchmarking/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>OSS for your non-profit/civic group/church</title>
		<link>http://blog.perfectedperspectives.com/2009/oss-for-your-non-profitcivic-groupchurch/</link>
		<comments>http://blog.perfectedperspectives.com/2009/oss-for-your-non-profitcivic-groupchurch/#comments</comments>
		<pubDate>Wed, 16 Dec 2009 06:52:42 +0000</pubDate>
		<dc:creator>Andrew</dc:creator>
				<category><![CDATA[IT]]></category>
		<category><![CDATA[church]]></category>
		<category><![CDATA[civic]]></category>
		<category><![CDATA[Customer Relationship Management]]></category>
		<category><![CDATA[group]]></category>
		<category><![CDATA[Human resources]]></category>
		<category><![CDATA[non-profit]]></category>
		<category><![CDATA[Open source]]></category>
		<category><![CDATA[Project management]]></category>
		<category><![CDATA[Sales and Marketing Productivity]]></category>
		<category><![CDATA[Software as a service]]></category>
		<category><![CDATA[volunteer]]></category>

		<guid isPermaLink="false">http://blog.perfectedperspectives.com/?p=184</guid>
		<description><![CDATA[



Image via Wikipedia



One of my newer clients came to me with some interesting needs, they are an all-volunteer organization with multiple project-groups and over 300 volunteers. They needed a solution for collaborative project planning (preferably web-based) and volunteer resource management. It turns out that managing people you pay is not that different from managing people [...]]]></description>
			<content:encoded><![CDATA[<div class="zemanta-img zemanta-action-dragged" style="margin: 1em; display: block;">
<div>
<dl class="wp-caption alignleft" style="width: 181px;">
<dt class="wp-caption-dt"><a href="http://commons.wikipedia.org/wiki/Image:Opensource.svg"><img title="Logo Open Source Initiative" src="http://upload.wikimedia.org/wikipedia/commons/thumb/4/42/Opensource.svg/288px-Opensource.svg.png" alt="Logo Open Source Initiative" width="171" height="153" /></a></dt>
<dd class="wp-caption-dd zemanta-img-attribution" style="font-size: 0.8em;">Image via <a href="http://commons.wikipedia.org/wiki/Image:Opensource.svg">Wikipedia</a></dd>
</dl>
</div>
</div>
<p>One of my newer clients came to me with some interesting needs, they are an all-volunteer organization with multiple project-groups and over 300 volunteers. They needed a solution for collaborative project planning (preferably web-based) and volunteer resource management. It turns out that managing people you pay is not that different from managing people you don&#8217;t.</p>
<div class="zemanta-img zemanta-action-dragged" style="margin: 1em; display: block;">
<div>
<dl class="wp-caption alignright" style="width: 204px;">
<dt class="wp-caption-dt"><a href="http://en.wikipedia.org/wiki/Image:CiviCRM_Logo.png"><img title="CiviCRM" src="http://upload.wikimedia.org/wikipedia/en/4/46/CiviCRM_Logo.png" alt="CiviCRM" width="194" height="189" /></a></dt>
<dd class="wp-caption-dd zemanta-img-attribution" style="font-size: 0.8em;">Image via <a href="http://en.wikipedia.org/wiki/Image:CiviCRM_Logo.png">Wikipedia</a></dd>
</dl>
</div>
</div>
<p>I found the <a class="zem_slink freebase/en/open_source" title="Open source" rel="wikipedia" href="http://en.wikipedia.org/wiki/Open_source">Open-Source</a> project <a class="zem_slink freebase/en/orangehrm" title="OrangeHRM" rel="homepage" href="http://www.orangehrm.com/">OrangeHRM</a> (Human Resources Management) to cover all the requirements we could throw at it. One of the biggest challenges with volunteers, is matching tasks to those with the right experience. OrangeHRM allows us to track individuals&#8217; skill-sets, and match a given task to the available volunteers. This greatly simplifies task delegation, and keeps you from overwhelming a volunteer with tasks outside of their skill set.</p>
<p>For Collaborative Project management, the Open-Source <a class="zem_slink freebase/en/dotproject" title="DotProject" rel="homepage" href="http://www.dotproject.net/">dotProject</a> looks to fit the bill, offering web-based project management with a robust feature-set. While not as polished as some of the commercial <a class="zem_slink freebase/en/software_as_a_service" title="Software as a service" rel="wikipedia" href="http://en.wikipedia.org/wiki/Software_as_a_service">SaaS</a> packages, like <a class="zem_slink" title="Basecamp" rel="homepage" href="http://www.basecamphq.com/">BaseCamp</a>, dotProject has all the functionality you need to facilitate team managed project planning.</p>
<p>I think between these two packages, I will be able to provide a solution that is both Open-Source, as well as best-in-class. If you are here looking for software to help organize your civic group, I would also recommend you check out <a class="zem_slink freebase/en/civicrm" title="CiviCRM" rel="homepage" href="http://civicrm.org/">CiviCRM</a>, a really neat module that integrates with both of the major OSS CMS platforms, Drupal and <a class="zem_slink freebase/en/joomla" title="Joomla!" rel="homepage" href="http://www.joomla.org/">Joomla</a>. Most of us know CRM to mean &#8220;<a class="zem_slink freebase/en/customer_relationship_management" title="Customer relationship management" rel="wikipedia" href="http://en.wikipedia.org/wiki/Customer_relationship_management">Customer Relationship Management</a>,&#8221; CiviCRM touts itself as a &#8220;Constituent Relationship Management&#8221; package. While not offering the functionality I needed in this project, CiviCRM did have some interesting features, donation management not in the least. (Plus their logo is cool)</p>
<div class="zemanta-pixie" style="margin-top: 10px; height: 15px;"><a class="zemanta-pixie-a" title="Reblog this post [with Zemanta]" href="http://reblog.zemanta.com/zemified/234da66f-0f44-408e-bf59-32de64be3451/"><img class="zemanta-pixie-img" style="border: medium none; float: right;" src="http://img.zemanta.com/reblog_e.png?x-id=234da66f-0f44-408e-bf59-32de64be3451" alt="Reblog this post [with Zemanta]" /></a><span class="zem-script more-related more-info pretty-attribution"><script src="http://static.zemanta.com/readside/loader.js" type="text/javascript"></script></span></div>
<a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fblog.perfectedperspectives.com%2F2009%2Foss-for-your-non-profitcivic-groupchurch%2F&amp;linkname=OSS%20for%20your%20non-profit%2Fcivic%20group%2Fchurch"><img src="http://blog.perfectedperspectives.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share/Bookmark"/></a>]]></content:encoded>
			<wfw:commentRss>http://blog.perfectedperspectives.com/2009/oss-for-your-non-profitcivic-groupchurch/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Pixelpost to WordPress Migration</title>
		<link>http://blog.perfectedperspectives.com/2009/pixelpost-to-wordpress-migration/</link>
		<comments>http://blog.perfectedperspectives.com/2009/pixelpost-to-wordpress-migration/#comments</comments>
		<pubDate>Sun, 06 Dec 2009 03:14:59 +0000</pubDate>
		<dc:creator>Andrew</dc:creator>
				<category><![CDATA[IT]]></category>
		<category><![CDATA[Dashboard]]></category>
		<category><![CDATA[Database]]></category>
		<category><![CDATA[Export]]></category>
		<category><![CDATA[import]]></category>
		<category><![CDATA[pixelpost]]></category>
		<category><![CDATA[script]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[Twitter]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://blog.perfectedperspectives.com/?p=172</guid>
		<description><![CDATA[So I made contact on Twitter with @photodreamz who needed to migrate their PixelPost blog to WordPress. The problem is, Pixelpost doesn&#8217;t support any type of export interface. This problem was partially solved by Joe Lencioni, over at ShiftingPixel.com and one of his readers, @kristerella of http://kristerella.com. Between the two of them, I believe they [...]]]></description>
			<content:encoded><![CDATA[<p>So I made contact on <a class="zem_slink freebase/guid/9202a8c04000641f800000000484d119" title="Twitter" rel="homepage" href="http://twitter.com/">Twitter</a> with <a id="aptureLink_cjJghtlriG" href="http://twitter.com/photodreamz">@photodreamz</a> who needed to migrate their PixelPost blog to <a class="zem_slink freebase/guid/9202a8c04000641f80000000002d66b2" title="WordPress" rel="homepage" href="http://wordpress.org">WordPress</a>. The problem is, Pixelpost doesn&#8217;t support any type of export interface. This problem was partially solved by Joe Lencioni, over at <a id="aptureLink_pScbtIpdIp" href="http://shiftingpixel.com">ShiftingPixel.com</a> and one of his readers, <a id="aptureLink_zOW0v0MmM3" href="http://twitter.com/kristerella">@kristerella</a> of <a id="aptureLink_0psqB0QVpR" href="http://kristerella.com">http://kristerella.com</a>. Between the two of them, I believe they have the right solution, yes it could handle a little polish, but it works. I have made my version of the script available here. Below, you will find step by step instructions for installing and using the script.</p>
<p>The features I added to the script were a <a class="zem_slink freebase/guid/9202a8c04000641f8000000000019cb8" title="Graphical user interface" rel="wikipedia" href="http://en.wikipedia.org/wiki/Graphical_user_interface">GUI</a> way to supply the root domain for the WordPress install, and some general debugging. I may end up making this automatically populate from the database, for now I&#8217;ll leave it manual. Functioning manually, you can specify a domain, even while running the script on a test environment, which I recommend.</p>
<p>Remember, I can not be held liable for any negative effects this has on your data! Always use a testing environment when performing actions such as these with your data, backup the backup of the backup! The Categories still do not apply to the posts, but it does import them.</p>
<p>Here are the steps I used to get the <a class="zem_slink freebase/guid/9202a8c04000641f8000000000b3afcd" title="Pixelpost" rel="homepage" href="http://www.pixelpost.org/">Pixelpost</a> to WordPress script to work:</p>
<ol>
<li>Download the script from here: <a href="http://blog.perfectedperspectives.com/wp-content/uploads/2009/12/pixelpost.zip">Pixelpost to WordPress Import Script</a>.</li>
<li>Install the script in the &#8220;wp-admin/import/&#8221; folder.</li>
<li>Copy your images into the root of the &#8220;wp-content/uploads/&#8221; folder.</li>
<li>In the Dashboard, go to the Tools&gt;Import page.</li>
<li>Select &#8220;Pixelpost&#8221; from the list of databases available for import.</li>
<li>Provide the login info for the database your Pixelpost data is in. Also specify the domain name you will be using with WordPress, this will ensure the photos show up in the posts.</li>
<li>Click &#8220;Import Categories&#8221;</li>
<li>Verify the number of Categories imported, then click &#8220;Import Posts&#8221; (This may take a few minutes, don&#8217;t click the button again, and don&#8217;t refresh the browser, it will let you know when it&#8217;s done.)</li>
<li>Verify the number of posts imported, then click &#8220;Import Comments&#8221; (This may take a few minutes, don&#8217;t click the button again, and don&#8217;t  refresh the browser, it will let you know when it&#8217;s done.)</li>
<li>You&#8217;re set! Click &#8220;Visit Site&#8221; at the top of the page to verify the import completed successfully.</li>
</ol>
<p>Here are some tips: From what I read, this works best with an empty WordPress DB, it&#8217;s best to set up a test environment if you have an existing WordPress installation, import the pixel post into your test environment, the use the mature, <a class="zem_slink freebase/guid/9202a8c04000641f8000000000041c85" title="XML" rel="wikipedia" href="http://en.wikipedia.org/wiki/XML">XML</a> based, WordPress import/export to move them into your existing WordPress installation.</p>
<p>@acedrew</p>
<div class="zemanta-pixie" style="margin-top: 10px; height: 15px;"><a class="zemanta-pixie-a" title="Reblog this post [with Zemanta]" href="http://reblog.zemanta.com/zemified/f1031a84-88f8-410f-b2e4-237264cbe26e/"><img class="zemanta-pixie-img" style="border: medium none; float: right;" src="http://img.zemanta.com/reblog_e.png?x-id=f1031a84-88f8-410f-b2e4-237264cbe26e" alt="Reblog this post [with Zemanta]" /></a><span class="zem-script more-related more-info pretty-attribution"><script src="http://static.zemanta.com/readside/loader.js" type="text/javascript"></script></span></div>
<a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fblog.perfectedperspectives.com%2F2009%2Fpixelpost-to-wordpress-migration%2F&amp;linkname=Pixelpost%20to%20WordPress%20Migration"><img src="http://blog.perfectedperspectives.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share/Bookmark"/></a>]]></content:encoded>
			<wfw:commentRss>http://blog.perfectedperspectives.com/2009/pixelpost-to-wordpress-migration/feed/</wfw:commentRss>
		<slash:comments>16</slash:comments>
		</item>
		<item>
		<title>Zemanta, a gift from the Bloggess</title>
		<link>http://blog.perfectedperspectives.com/2009/zemanta-a-gift-from-the-bloggess/</link>
		<comments>http://blog.perfectedperspectives.com/2009/zemanta-a-gift-from-the-bloggess/#comments</comments>
		<pubDate>Mon, 30 Nov 2009 07:00:00 +0000</pubDate>
		<dc:creator>Andrew</dc:creator>
				<category><![CDATA[IT]]></category>

		<guid isPermaLink="false">http://blog.perfectedperspectives.com/?p=98</guid>
		<description><![CDATA[



Image via CrunchBase



I should start by saying this is not in any way endorsed by the twitter user TheBloggess, I simply thought that if bloggers had a deity, it would be a woman. (Just like Christians) If you&#8217;ve never heard of Zemanta, don&#8217;t feel bad, neither had I until this week. I found this great [...]]]></description>
			<content:encoded><![CDATA[<div class="zemanta-img" style="margin: 1em; display: block;">
<div>
<dl style="width: 216px;" class="wp-caption alignright">
<dt class="wp-caption-dt"><a href="http://www.crunchbase.com/company/zemanta"><img src="http://www.crunchbase.com/assets/images/resized/0001/6433/16433v1-max-450x450.png" alt="Image representing Zemanta as depicted in Crun..." title="Image representing Zemanta as depicted in Crun..." width="206" height="73"></a></dt>
<dd class="wp-caption-dd zemanta-img-attribution" style="font-size: 0.8em;">Image via <a href="http://www.crunchbase.com">CrunchBase</a></dd>
</dl>
</div>
</div>
<p>I should start by saying this is not in any way endorsed by the twitter user TheBloggess, I simply thought that if bloggers had a deity, it would be a woman. (Just like Christians) If you&#8217;ve never heard of <a class="zem_slink" href="http://www.zemanta.com" title="Zemanta" rel="homepage">Zemanta</a>, don&#8217;t feel bad, neither had I until this week. I found this great tool while looking for something to find all of the phrases in my post that corresponded to wikipedia articles and create links to the articles, Zemanta does this and a lot more! </p>
<p>Zemanta finds context sensitive links, images, and even other blog entries that relate to the post you&#8217;re working on. It&#8217;s quick, easy, and free! Check it out at <a href="http://zemanta.com">zemanta.com</a></p>
<div style="margin-top: 10px; height: 15px;" class="zemanta-pixie"><a class="zemanta-pixie-a" href="http://reblog.zemanta.com/zemified/f69be57f-1f18-4038-a5a2-5fffba60e7d4/" title="Reblog this post [with Zemanta]"><img style="border: medium none; float: right;" class="zemanta-pixie-img" src="http://img.zemanta.com/reblog_e.png?x-id=f69be57f-1f18-4038-a5a2-5fffba60e7d4" alt="Reblog this post [with Zemanta]"></a><span class="zem-script more-related more-info pretty-attribution"><script type="text/javascript" src="http://static.zemanta.com/readside/loader.js" defer="defer"></script></span></div>
<a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fblog.perfectedperspectives.com%2F2009%2Fzemanta-a-gift-from-the-bloggess%2F&amp;linkname=Zemanta%2C%20a%20gift%20from%20the%20Bloggess"><img src="http://blog.perfectedperspectives.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share/Bookmark"/></a>]]></content:encoded>
			<wfw:commentRss>http://blog.perfectedperspectives.com/2009/zemanta-a-gift-from-the-bloggess/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Firefox Extensions, how to make em&#8217; work when they don&#8217;t wanna.</title>
		<link>http://blog.perfectedperspectives.com/2009/firefox-extensions-make-em-work/</link>
		<comments>http://blog.perfectedperspectives.com/2009/firefox-extensions-make-em-work/#comments</comments>
		<pubDate>Sat, 21 Nov 2009 05:42:20 +0000</pubDate>
		<dc:creator>Andrew</dc:creator>
				<category><![CDATA[IT]]></category>

		<guid isPermaLink="false">http://blog.perfectedperspectives.com/?p=111</guid>
		<description><![CDATA[So if you&#8217;re like me, you run the latest version of beta Firefox, stability be damned. The problem is all those nifty extensions you love suddenly stop working with that little &#8220;not compatible with this version of Firefox&#8221; BS. Here&#8217;s the fix: you know those crazy little .xpi files that Mozilla calls their extensions? well [...]]]></description>
			<content:encoded><![CDATA[<p>So if you&#8217;re like me, you run the latest version of beta Firefox, stability be damned. The problem is all those nifty extensions you love suddenly stop working with that little &#8220;not compatible with this version of Firefox&#8221; BS. Here&#8217;s the fix: you know those crazy little .xpi files that Mozilla calls their extensions? well they&#8217;re actually just disguised zip files, containing a folder with all the stuff that makes the extension work and a file called &#8220;install.rdf&#8221; Open this with your favorite text editor, (I use the excellent Notepad++) inside, you will find a LOT of gobblety gook! Look for something like this: &#8220;&lt;!&#8211; firefox &#8211;&gt;&#8221; under that you will see this: &#8220;&lt;em:maxVersion&gt;3.1b3pre&lt;/em:maxVersion&gt;&#8221; What you want to be concerned about is the little part in between the &gt;&lt;s  something like &#8220;x.xblah&#8221; First remove the &#8220;blah&#8221; letters, leaving only the &#8220;x.x&#8221; part: 3.1 No since I&#8217;m running FF 3.6 Beta 3, I&#8217;m just going to say 4.0, so change your &#8220;x.x&#8221; to a version number in the future. Boom baddy yah, your extension, ready to go.</p>
<p>So here are the steps:</p>
<p>1. Download the offending extension, save it somewhere easy to find, like the desktop.</p>
<p>2. Once downloaded, add a .zip to the end of your .xpi file, then unzip to another folder.</p>
<p>3. In the folder, you will find a file named install.rdf, open it in a text editor.</p>
<p>4. Look for a block titled &#8220;&lt;!&#8211; firefox &#8211;&gt;&#8221; inside is a parameter named &lt;em:maxVersion&gt;</p>
<p>5. This is the maximum version of Firefox that this extension will install on.</p>
<p>6. Change this to a version number in the future.</p>
<p>7. Save the file, then re-zip and change the extension to &#8220;.xpi&#8221;</p>
<p>8.Install the extension, and enjoy (hopefully)</p>
<p>There&#8217;s no guarantee that the extension will work, but every time I&#8217;ve tried it has, most of the times it&#8217;s just that the extension project hasn&#8217;t had a chance to update the maxversion since the latest Firefox update.</p>
<a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fblog.perfectedperspectives.com%2F2009%2Ffirefox-extensions-make-em-work%2F&amp;linkname=Firefox%20Extensions%2C%20how%20to%20make%20em%26%238217%3B%20work%20when%20they%20don%26%238217%3Bt%20wanna."><img src="http://blog.perfectedperspectives.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share/Bookmark"/></a>]]></content:encoded>
			<wfw:commentRss>http://blog.perfectedperspectives.com/2009/firefox-extensions-make-em-work/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Using OSS and Cloud Computing to empower your business</title>
		<link>http://blog.perfectedperspectives.com/2009/oss-smb-tools/</link>
		<comments>http://blog.perfectedperspectives.com/2009/oss-smb-tools/#comments</comments>
		<pubDate>Thu, 12 Nov 2009 03:15:11 +0000</pubDate>
		<dc:creator>Andrew</dc:creator>
				<category><![CDATA[IT]]></category>
		<category><![CDATA[back ups]]></category>
		<category><![CDATA[backup]]></category>
		<category><![CDATA[business]]></category>
		<category><![CDATA[cloud computing]]></category>
		<category><![CDATA[data]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Google Apps]]></category>
		<category><![CDATA[Google Talk]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Microsoft Outlook]]></category>
		<category><![CDATA[open office]]></category>
		<category><![CDATA[Open source]]></category>
		<category><![CDATA[Services]]></category>
		<category><![CDATA[Sun Microsystems]]></category>

		<guid isPermaLink="false">http://blog.perfectedperspectives.com/?p=50</guid>
		<description><![CDATA[I have built most of my business practices using either OSS (Open Source Software) or SaaS (Software as a Service) most of these tools cost little or nothing, and provide functionality as good or greater than the conventional offerings. I&#8217;ve decided to create this list as a resource for other small business owners, to provide [...]]]></description>
			<content:encoded><![CDATA[<p>I have built most of my business practices using either <a title="Open Source Software on Wikipedia" href="http://en.wikipedia.org/wiki/Open_source" target="_blank">OSS (Open Source Software)</a> or <a href="http://en.wikipedia.org/wiki/Software_as_a_Service" target="_blank">SaaS (Software as a Service)</a> most of these tools cost little or nothing, and provide functionality as good or greater than the conventional offerings. I&#8217;ve decided to create this list as a resource for other small business owners, to provide them with at least a starting point for their journey into OSS and SaaS.</p>
<p>1. Data Storage<br />
One thing most small businesses need is a place to store their data, last time I checked a license for Microsoft Small Business Server cost over $1000.00, a <a href="http://www.ubuntu.com/getubuntu/download-server">Ubuntu</a> server disk is a 1 hour download and 20 minute setup to have a Samba File Server set up. Completely FREE. (This same machine can double as your network router as well, faster than 90% of the crap marketed to the SMB sector)</p>
<p>Now that you have your file server setup, you need to keep a backup of your data, Tape Backup is dead, commodity hard drives are so cheap, that buying drives is literally cheaper than purchasing a tape drive and tapes. A hot-swap bay in the front of your machine makes this a painless process, simply swap in the empty drive, and let the server copy the data from your main array.</p>
<p>Now some may not want to deal with the headache of managing their own off-site backups, for them a new cloud-based SaaS called <a href="http://symform.com/">Symform</a> is a great solution. For a small monthly management fee, they&#8217;ll take your data, make a lot of copies of it, encrypt it using military grade encryption, and store it on a distributed network of servers. The catch? You have to provide as much local storage as you use on the &#8220;cloud,&#8221; since hard drives are cheap, this model works very well!</p>
<p>If you really want to know exactly where your data sleeps at night, <a href="http://aws.amazon.com/s3/">Amazon&#8217;s S3 (Simple Storage Service)</a> Cloud Storage System offers affordable secure storage starting at $0.15 GB per month, there are fee involved with storing and retrieving your data, but for backups, the cost is very small. The great part about this technology is the incredible scalability, you can go from a few Gigabytes to 100&#8217;s of Terabytes instantly, and you only pay for what you use.</p>
<p>If you don&#8217;t have a server, and just want to back up your laptop or desktop, <a href="https://www.dropbox.com/gs">Dropbox&#8217;s </a>simple interface offers a bulletproof way to keep things synced, both between devices, and to their secure backup servers.</p>
<p>2. Communication &amp; E-Mail<br />
I use Google&#8217;s SaaS solution for myself and my customers with great success, aptly named <a href="http://www.google.com/apps/intl/en/group/index.html">Apps for your Domain</a>, it was one of Google&#8217;s first big launches in the market that is predominately Microsoft controlled. In the afore-mentioned Microsoft Small Business server, an e-mail solution is included, for 5 users, extra user licenses are available, but you have to pay. Google offers up to 25 users in their free product, Google Apps Standard. Offering the familiar Gmail interface as a web client and still connecting to software clients using standard IMAP and POP3 protocols, it&#8217;s perfect for most small businesses, you get the reliability of off-site hosted solution with no to very low-cost.</p>
<p>For those that do like a desktop client, <a href="http://www.mozillamessaging.com/en-US/thunderbird/">Mozilla&#8217;s Thunderbird</a>, with the <a href="https://addons.mozilla.org/en-US/thunderbird/addon/2313">Lightning plug-in</a>, offers all the functionality of Microsoft Outlook, without the hefty price tag. Also you can use the calendar and contact module to <a href="http://www.zindus.com/">sync</a> to the cloud-hosted Google Apps&#8217; contacts and calendar, allowing you to over-the-air sync with many mobile phones and devices. I&#8217;ve been personally using this system for quite a while and don&#8217;t miss Outlook at all.</p>
<p>Another great feature of Google Apps for your Domain is an included Jabber/Google Talk server, making team communication a breeze. Useful for everything from teleconferencing to inter office communication, <a href="http://www.google.com/talk/">Google Talk</a> is a great resource for the Small Business User.</p>
<p>3. Word Processing / Documents</p>
<p>Google&#8217;s Apps for your Domain does include their online cloud based word processing, spreadsheet, and presentation apps. Some may not like the &#8220;online-only&#8221; model though, for those users, the Sun Microsystems sponsored OSS <a href="http://www.openoffice.org/">OpenOffice.org</a> is a great product, compatible with all major file formats, and capable of exporting universally acceptable PDFs, OpenOffice can save a lot of cash. With modules covering graphics, spreadsheets, documents, and databases, OpenOffice.org has the tools you need to run your business.</p>
<p>4. Mind/Project/Knowledge Management</p>
<p>This is an important task for engineering and development teams, an effective engineering library can do a lot to keep from re-inventing the wheel every time you add a member to the team. Searchable, multi media, and easy are all traits that a good Knowledge management portal should have. If you&#8217;ve ever used Wikipedia, then you know how a <a href="http://www.mediawiki.org/wiki/MediaWiki">mediawiki</a> works, mediawiki is the software that runs wikipedia, and guess what, it&#8217;s OSS! If the software is capable of running the largest crowd sourced repository of knowledge available, it will run your engineering library like a charm. The flexibility of mediawiki is hard to beat, and is also a great tool for collaborative work.</p>
<p>For individual knowledge/mind management, the excellent <a href="http://freemind.sourceforge.net/wiki/index.php/Main_Page">FreeMind</a> is available, useful for organizing tasks, ideas, creative concepts, even document outlines, FreeMind&#8217;s innovative interface is very intuitive and has a natural organizational feel to it.</p>
<p>For big projects for big customers, they really like to see those Gantt charts, the excellent <a href="http://www.openworkbench.org/">OpenWorkbench</a> will save you having to purchase the leviathan Microsoft Project. Built with compatibility and power in mind OpenWorkbench provides all the tools you need to organize the largest of projects, and allows you to meet documentation requirements for development cycles.</p>
<p>There may be more to follow, but this will get you started!</p>
<p>Andrew Rodgers</p>
<div class="zemanta-pixie" style="margin-top: 10px; height: 15px;"><a class="zemanta-pixie-a" title="Reblog this post [with Zemanta]" href="http://reblog.zemanta.com/zemified/61ed3977-99f9-4035-a01a-7240dd4d67b1/"><img class="zemanta-pixie-img" style="border: medium none; float: right;" src="http://img.zemanta.com/reblog_e.png?x-id=61ed3977-99f9-4035-a01a-7240dd4d67b1" alt="Reblog this post [with Zemanta]" /></a><span class="zem-script more-related more-info pretty-attribution"><script src="http://static.zemanta.com/readside/loader.js" type="text/javascript"></script></span></div>
<a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fblog.perfectedperspectives.com%2F2009%2Foss-smb-tools%2F&amp;linkname=Using%20OSS%20and%20Cloud%20Computing%20to%20empower%20your%20business"><img src="http://blog.perfectedperspectives.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share/Bookmark"/></a>]]></content:encoded>
			<wfw:commentRss>http://blog.perfectedperspectives.com/2009/oss-smb-tools/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>
