<?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>nickholdren.com</title>
	<atom:link href="http://nickholdren.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://nickholdren.com</link>
	<description></description>
	<lastBuildDate>Tue, 27 Jul 2010 14:09:17 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Writing Arrays to CSV or Other Delimited Files</title>
		<link>http://nickholdren.com/2010/07/26/writing-arrays-to-csv-or-other-delimited-files/</link>
		<comments>http://nickholdren.com/2010/07/26/writing-arrays-to-csv-or-other-delimited-files/#comments</comments>
		<pubDate>Mon, 26 Jul 2010 22:51:14 +0000</pubDate>
		<dc:creator>Nick Holdren</dc:creator>
				<category><![CDATA[Php]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[array]]></category>
		<category><![CDATA[csv]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://nickholdren.com/?p=212</guid>
		<description><![CDATA[Often, in the past when I wanted to write data to a file I would load up and array, iterate over it, and then insert tab and new line breaks so that I could create a CSV. Well, those days are long gone now that PHP5 has included this awesome and useful function fputcsv(). It [...]]]></description>
			<content:encoded><![CDATA[<p>Often, in the past when I wanted to write data to a file I would load up and array, iterate over it, and then insert tab and new line breaks so that I could create a CSV. Well, those days are long gone now that PHP5 has included this awesome and useful function <a href="http://www.php.net/manual/en/function.fputcsv.php">fputcsv()</a>.  It takes an array as an input and then does the iterations an string manipulation and creates a CSV file. One can also specify the delimiter of the file as well as the field enclosure. To see more documentation <a href="http://www.php.net/manual/en/function.fputcsv.php">click here</a>.</p>
<p>This example simply takes the array and writes it to a CSV file:</p>
<pre>
//Example array
$info = array(1, 2, 3, 4, 5); 

//Open a new file
$filehandler = fopen("test.csv", "w");

//Call the fputcsv method
fputcsv($filehandler, $info);</pre>
]]></content:encoded>
			<wfw:commentRss>http://nickholdren.com/2010/07/26/writing-arrays-to-csv-or-other-delimited-files/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A Faster Array Search in php</title>
		<link>http://nickholdren.com/2010/07/26/a-faster-array-search-in-php/</link>
		<comments>http://nickholdren.com/2010/07/26/a-faster-array-search-in-php/#comments</comments>
		<pubDate>Mon, 26 Jul 2010 22:31:20 +0000</pubDate>
		<dc:creator>Nick Holdren</dc:creator>
				<category><![CDATA[Mathematics]]></category>
		<category><![CDATA[Php]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[array]]></category>
		<category><![CDATA[binary search]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[search methods]]></category>

		<guid isPermaLink="false">http://nickholdren.com/?p=210</guid>
		<description><![CDATA[Php does a very good job at creating predefined methods that are optimized by default. However, sometimes with a little extra effort on our parts we can optimize a procedure even more. On the table today: the in_array() method. It is a very useful array allowing the user to search an array for a given [...]]]></description>
			<content:encoded><![CDATA[<p>Php does a very good job at creating predefined methods that are optimized by default. However, sometimes with a little extra effort on our parts we can optimize a procedure even more. On the table today: the in_array() method. It is a very useful array allowing the user to search an array for a given value. The problem arises when this array becomes very large and many values must be searched.</p>
<p>For those not familiar with different search or optimization methods&#8230;there are many out there. No, no I&#8217;m not going to leave it at that. The in_array function is a linear search or sequential search, meaning it starts at the top of the array and goes to the bottom checking for a match. See the issue? If I&#8217;m looking for a value that lives at the bottom of the array then I have to wait a good bit (well for a programmer&#8217;s perspective) for the search to complete. So what is a better solution? The binary search.</p>
<p>The binary search works almost exactly like the &#8220;High, Low&#8221; game. You ask whether the search value is in 2 sets of numbers and it will tell you higher or lower. This seems simple enough, but you must remember this small detail: the set must be in order. Otherwise, the search will get lost because it may hit a smaller number while searching in an upper set. The reality of this is that most over our data comes from SQL queries which means guess what? We can already put our data in order.</p>
<p>Here is the code in PHP:</p>
<pre>
function binarySearch($elem, $array)
{
   $top = sizeof($array) -1;
   $bot = 0;

   while($top >= $bot)
   {
      $p = floor(($top + $bot) / 2);
      if ($array[$p] < $elem) $bot = $p + 1;
      elseif ($array[$p] > $elem) $top = $p - 1;
      else return TRUE;
   }

   return FALSE;
}
</pre>
]]></content:encoded>
			<wfw:commentRss>http://nickholdren.com/2010/07/26/a-faster-array-search-in-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Parsing a CSV File in PHP</title>
		<link>http://nickholdren.com/2010/05/04/parsing-a-csv-file-in-php/</link>
		<comments>http://nickholdren.com/2010/05/04/parsing-a-csv-file-in-php/#comments</comments>
		<pubDate>Tue, 04 May 2010 19:23:03 +0000</pubDate>
		<dc:creator>Nick Holdren</dc:creator>
				<category><![CDATA[Php]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[csv]]></category>
		<category><![CDATA[excel]]></category>
		<category><![CDATA[parse]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://nickholdren.com/?p=194</guid>
		<description><![CDATA[Ok so it is one of the most common data files in the world: the CSV (Comma Separated Values). So here is all you need in PHP to extract the data from the file. The data is exploded into an array ($data) and can be accessed via the array index. It is simple and very [...]]]></description>
			<content:encoded><![CDATA[<p>Ok so it is one of the most common data files in the world: the CSV (Comma Separated Values). So here is all you need in PHP to extract the data from the file. The data is exploded into an array ($data) and can be accessed via the array index. It is simple and very straight forward, no run with it!</p>
<pre>$handle = fopen("test.csv", "r");

while (($data = fgetcsv($handle, 5000, ",")) !== FALSE) {

}
</pre>
]]></content:encoded>
			<wfw:commentRss>http://nickholdren.com/2010/05/04/parsing-a-csv-file-in-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Resetting an Array Index in PHP</title>
		<link>http://nickholdren.com/2010/04/16/resetting-an-array-index-in-php/</link>
		<comments>http://nickholdren.com/2010/04/16/resetting-an-array-index-in-php/#comments</comments>
		<pubDate>Fri, 16 Apr 2010 15:12:24 +0000</pubDate>
		<dc:creator>Nick Holdren</dc:creator>
				<category><![CDATA[Php]]></category>
		<category><![CDATA[array]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://nickholdren.com/?p=155</guid>
		<description><![CDATA[After filtering an array indices are removed from the array resulting in errors while trying to loop over the index. Therefore, one needs to reset then index so that it follows a logical order (1,2,3..) instead of (1,3,6,7&#8230;). Luckily, PHP doesn&#8217;t have a defined method to do this, but it does have another method that [...]]]></description>
			<content:encoded><![CDATA[<p>After filtering an array indices are removed from the array resulting in errors while trying to loop over the index. Therefore, one needs to reset then index so that it follows a logical order (1,2,3..) instead of (1,3,6,7&#8230;). Luckily, PHP doesn&#8217;t have a defined method to do this, but it does have another method that will do this for you although it is intended for another purpose.</p>
<pre>
$myArray = array_merge($myArray);
</pre>
]]></content:encoded>
			<wfw:commentRss>http://nickholdren.com/2010/04/16/resetting-an-array-index-in-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Using the array_filter function within a class</title>
		<link>http://nickholdren.com/2010/04/15/using-the-array_filter-function-within-a-class/</link>
		<comments>http://nickholdren.com/2010/04/15/using-the-array_filter-function-within-a-class/#comments</comments>
		<pubDate>Thu, 15 Apr 2010 18:01:06 +0000</pubDate>
		<dc:creator>Nick Holdren</dc:creator>
				<category><![CDATA[Php]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[array_filter]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://nickholdren.com/?p=147</guid>
		<description><![CDATA[When using the array_filter method in PHP I attempted to make my callback function a private method within my class. Upon trying to execute my script I recieved an error telling my that I had not defined a proper call back method. After searching for several minutes I came across this snippet of code and I hope it works for you as well.]]></description>
			<content:encoded><![CDATA[<p>When using the array_filter method in PHP I attempted to make my callback function a private method within my class. Upon trying to execute my script I recieved an error telling my that I had not defined a proper call back method. After searching for several minutes I came across this snippet of code and I hope it works for you as well.</p>
<pre>
array_filter($myArray, array("myClassName", "myCallbackMethod"));
</pre>
]]></content:encoded>
			<wfw:commentRss>http://nickholdren.com/2010/04/15/using-the-array_filter-function-within-a-class/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Downfalls of the Agile Development Cycle</title>
		<link>http://nickholdren.com/2010/04/15/downfalls-of-the-agile-development-cycle/</link>
		<comments>http://nickholdren.com/2010/04/15/downfalls-of-the-agile-development-cycle/#comments</comments>
		<pubDate>Thu, 15 Apr 2010 17:48:24 +0000</pubDate>
		<dc:creator>Nick Holdren</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[scrum]]></category>

		<guid isPermaLink="false">http://nickholdren.com/2010/04/15/the-agile-development-cycle/</guid>
		<description><![CDATA[The Agile development methodology is supposed to be one of the great new advances in software development. Traditional waterfall techniques provide slower production time and are more restricted to what the initial design plans are. Agile was supposed to allow for quick turn around and delivered results within weeks rather than later. Here I would [...]]]></description>
			<content:encoded><![CDATA[<p>The Agile development methodology is supposed to be one of the great new advances in software development. Traditional waterfall techniques provide slower production time and are more restricted to what the initial design plans are. Agile was supposed to allow for quick turn around and delivered results within weeks rather than later. Here I would like to counter these claims and tell you about my own experiences while using Agile methodologies.</p>
<h3>No Documentation</h3>
<p>One of the key features of the Agile methodologies is that documentation is kept to a minimum in order to produce results quickly.  This can cause a problem in several ways. First, the client who receives the product is left with little to follow when it comes to maintaining or using the product. Secondly, the developers who are placed on the project, say mid-development, have little to go by when being introduced to the code and therefore, have a huge learning curve to overcome.</p>
<h3>No Well Defined Plan</h3>
<p>If the waterfall is a straight free fall then the agile process is a hurricane. Being flexible doesn&#8217;t always mean getting things done correctly or the most efficient. When business plans change it is not always the easiest for a development team. This can mean that something simple bloats into something huge resulting in a massive overhaul requiring untold amount of time. Likewise, not having a well defined plan to start with can lead to the developer not knowing exactly what the client wants and thus, wasting time building something that the client, in the end, may or may not have wanted.</p>
<h3>The Good News</h3>
<p>Using the Agile development process can be a good thing given that the fore-mentioned items are taken care of. Having a decent starting plan and understanding of where you want a project to go greatly mitigates turn around time when small details wished to be changed. Building on that is the creation of documentation. If creation of documentation becomes a story for one of the cycles it will make life easier rather than after the project is complete trying to generate documentation for a 3 or 4 year project. </p>
]]></content:encoded>
			<wfw:commentRss>http://nickholdren.com/2010/04/15/downfalls-of-the-agile-development-cycle/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Simple Search Engine PHP/MySQL</title>
		<link>http://nickholdren.com/2010/04/08/simple-search-engine-phpmysql/</link>
		<comments>http://nickholdren.com/2010/04/08/simple-search-engine-phpmysql/#comments</comments>
		<pubDate>Thu, 08 Apr 2010 18:21:04 +0000</pubDate>
		<dc:creator>Nick Holdren</dc:creator>
				<category><![CDATA[Php]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[mySQL]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[search engine]]></category>

		<guid isPermaLink="false">http://nickholdren.com/?p=121</guid>
		<description><![CDATA[Having a search engine on your site can be a great thing. Many times users prefer searching rather than browsing in order to find something on your site. Google does offer site search that will index your site, but I like many other people prefer to keep things in-house so to speak. Therefore, I created [...]]]></description>
			<content:encoded><![CDATA[<p>Having a search engine on your site can be a great thing. Many times users prefer searching rather than browsing in order to find something on your site. Google does offer site search that will index your site, but I like many other people prefer to keep things in-house so to speak. Therefore, I created a simple search engine that you are free to modify to meet your needs. Currently, there is very little logic incorporated into the search but will due for most sites.</p>
<p>This is a callback function to filter the length of the search criteria to only those terms larger than three characters.</p>
<pre>function criteriaLength($criteria){

	if(strlen($criteria) &gt;= 3){

		return true;

	}else{

		return false;

	}
}</pre>
<p>Below is the search engine itself, that takes a string criteria and a comma separated list for the search fields.</p>
<pre> function search($criterion, $searchFields){

	//Trim the whitespace from the $criteria
	$criterion = trim($criterion);
	$criterion = explode(" ", $criterion);

	//Filter the criteria for specific length
	$criterion = array_filter($criterion, "criteriaLength");

	//Reset the array index after the filter
	$criterion = array_merge($criterion);

	//Check to see if a search criteria exists
	if(count($criterion) &gt; 0){

	//Explode the criterion to get the search terms
	$numCriteria = count($criterion);

	//Generate SQL Query to search base on fields
	$query = "";

	//Check if there are search fields
	if($searchFields = explode(",",$searchFields)){

	//Explode the search fields string based on commas
	$numFields = count($searchFields);

	//Loop over each field to be aliased
	for($i = 0; $i &lt; $numFields; $i++){

		//Alias the searchfields arrays to match the table structure
		switch($searchFields[$i]){
			case "firstname":
			 $searchFields[$i] = "";
			break;
			case "lastname":
				$searchFields[$i] = "";
				break;
			case "email":
				$searchFields[$i] = "";
				break;
			case "dob":
				$searchFields[$i] = "";
				break;
			case "username":
				$searchFields[$i] = "";
				break;
			case "all":
				//Manually set the columns to be searched on if none were defined
				$searchFields[0] = "";
				$searchFields[1] = "";
				$searchFields[2] = "";
				$searchFields[3] = "";
				$searchFields[4] = "";
				$numFields = count($searchFields);
				break;
                       default:
		}
	}

	}else{

	//Create the search fields array if since there were no search fields defined
	$searchFields = array();

	//Manually set the columns to be searched on
	$searchFields[0] = "";
	$searchFields[1] = "";
	$searchFields[2] = "";
	$searchFields[3] = "";
	$searchFields[4] = "";

	//Get the number of elements in the
	$numFields = count($searchFields);
	}

			//Loop over criteria to generate like statements for each search field
			for($a = 0; $a &lt; $numCriteria; $a++){

				for($i = 0; $i &lt; $numFields; $i++){

					$query = $query." $searchFields[$i] LIKE  '$criterion[$a]%' ";

					//Add OR statements to end of each like, except last one
					if($i != $numFields - 1){

						$query = $query." OR ";
					}
				}

				//Add OR statements to end of each like for the criteria, except last one
				if($a != $numCriteria - 1){
					$query = $query." OR ";
				}
			}

		$query = $query." ORDER BY (";

		//Loop over criteria again, this time to generate case statements in order to calculate relevance
		for($a = 0; $a &lt; $numCriteria; $a++){

				for($i = 0; $i &lt; $numFields; $i++){ 					 					$query = $query." ( CASE WHEN $searchFields[$i] LIKE  '$criterion[$a]%' THEN 1 ELSE 0 END ) "; 					 					//Add + statements to end of each like, except last one					 					if($i != $numFields - 1){ 						 						$query = $query." + "; 					} 				} 				 				//Add + statements to end of each like for the criteria, except last one 				if($a != $numCriteria - 1){ 					$query = $query." + "; 				} 			} 		$query = $query.") DESC"; 		print_r($query); 	 		/* 	 		//Open Global mySQLi Connection 		global $conn; 		 		if ($conn-&gt;errno()){

			$returnData = $conn-&gt;error(); 

		}else{

			//Clean the query string
			$query = $conn-&gt;clean($query);

			//Execute the query and return result set
			if($result = $conn-&gt;query($query)){

				//Get an associative array from the result set
				$returnData = $result-&gt;fetch_array(MYSQLI_ASSOC); ;

			}else{

				$returnData = false;

			}
		}
	*/
	}else{

		$returnData = false;

	}

	return $returnData;

}</pre>
]]></content:encoded>
			<wfw:commentRss>http://nickholdren.com/2010/04/08/simple-search-engine-phpmysql/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Simple Search Relevance in mySQL</title>
		<link>http://nickholdren.com/2010/04/08/simple-search-relevance-in-mysql/</link>
		<comments>http://nickholdren.com/2010/04/08/simple-search-relevance-in-mysql/#comments</comments>
		<pubDate>Thu, 08 Apr 2010 17:28:27 +0000</pubDate>
		<dc:creator>Nick Holdren</dc:creator>
				<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[mySQL]]></category>
		<category><![CDATA[relevance]]></category>
		<category><![CDATA[search engine]]></category>

		<guid isPermaLink="false">http://nickholdren.com/?p=115</guid>
		<description><![CDATA[Many times when one wants to build their own search engine, he or she wishes to sort the results by relevancy. MySQL provides some useful syntax to make this possible. Below is a short code snippet to a simple relevance calculation and order by it. ORDER BY ( ( CASE WHEN column_name LIKE 'criteria' THEN [...]]]></description>
			<content:encoded><![CDATA[<p>Many times when one wants to build their own search engine, he or she wishes to sort the results by relevancy. MySQL provides some useful syntax to make this possible. Below is a short code snippet to a simple relevance calculation and order by it.</p>
<pre>
ORDER BY (
( CASE WHEN column_name LIKE  'criteria'
THEN 1
ELSE 0
END )
+
( CASE WHEN column_name2 LIKE  'criteria2'
THEN 1
ELSE 0
END )) DESC
</pre>
]]></content:encoded>
			<wfw:commentRss>http://nickholdren.com/2010/04/08/simple-search-relevance-in-mysql/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Creating a Home Recording Studio</title>
		<link>http://nickholdren.com/2010/04/01/creating-a-home-recording-studio/</link>
		<comments>http://nickholdren.com/2010/04/01/creating-a-home-recording-studio/#comments</comments>
		<pubDate>Thu, 01 Apr 2010 17:07:27 +0000</pubDate>
		<dc:creator>Nick Holdren</dc:creator>
				<category><![CDATA[Audio]]></category>
		<category><![CDATA[drums]]></category>
		<category><![CDATA[guitar]]></category>
		<category><![CDATA[music]]></category>
		<category><![CDATA[recording]]></category>
		<category><![CDATA[studio]]></category>
		<category><![CDATA[vocals]]></category>

		<guid isPermaLink="false">http://nickholdren.com/?p=101</guid>
		<description><![CDATA[Everyone wants to be a rock star, party like one, and of course make money while doing it. The truth is a lot of us will never be able to afford to buy the studio time that will get us there. In recent years though the pains of recording an album have become less due [...]]]></description>
			<content:encoded><![CDATA[<p>Everyone wants to be a rock star, party like one, and of course make money while doing it. The truth is a lot of us will never be able to afford to buy the studio time that will get us there. In recent years though the pains of recording an album have become less due to the advent of new computer processors having the capability to handle the large audio applications and devices. Therefore, I have set out to give some guidelines to those who seek fame on what it takes to have a semi-professional studio.</p>
<h3>Speed</h3>
<p>When it comes to recording on a computer there should be only one word: speed. Speed will be your friend and latency your nemesis. Have you ever tried recording and you throw down a few tracks then go to lay down your amazing solo and then listen back to hear that your shredding skills seem to be milliseconds off the  chord changes? Enter latency. It occurs when the computer tries to take your analog input signals (vocals, guitar, drums) and convert them to a digital signal. The faster the computer can do this process the better your recording experience will be.</p>
<p>Your worries don&#8217;t stop there though. Processing the analog signal is half the battle, well, maybe half. Once the digital signal has been created there are numerous things that occur. First, you need to physically record the signal to the hard drive. Again, latency can creep up again if computer is forced to use a significant about of RAM to buffer the writing of the signal to the hard drive. Second, what about all those crazy effects you have running like you auto vox? They take your audio signal and process it again. So take a guess what you&#8217;ll need to accomplish this? More speed. Finally, if you wish to monitor output/input while recording you are asking the most from your computer. In short you are telling it to do everything previously mention and then output the result at the same time. In the past this would have been catastrophic to most machines, but we live in the 21st century right?</p>
<h3>Firewire</h3>
<p>I know I will get a lot of complaints about this one and many will want to argue this, but Firewire is faster. USB 2.0 is grand and is fine for your mouse, but we&#8217;re not talking mice, we&#8217;re talking elephants. Firewire comes in two flavors 400 and 800. Firewire 800 is what you want if you can get it. It has potential to send data at 800Mb/s compared to 400Mb/s with Firewire 400. Notice the top transfer rate for USB 2.0 is 480Mb/s. This isn&#8217;t the only reason Firewire is faster, a big reason is how Firewire handles the data. Firewire is built on a &#8220;Peer to Peer&#8221; architecture which allows the individual peripherals to manage any conflicts. USB forces the computer to manage conflicts, which forces the use of processor cycles thus hindering the performance of your computer.</p>
<h3>RAM</h3>
<p>Recording is very demanding of a computer and although much of it can be handled by the processor itself there is a high demand for RAM to take care of helping out with plugins and effects. It also contributes greatly to handling live audio data when recording most often when the CPU is under-powered. Needless to say you are going to want to have as much RAM as you can afford. For light demos, running very few tracks and effects, 1 gigabyte of RAM is a minimum. From here I would suggest at least 4 gigabytes to handle most of your needs such as drum machines, live monitoring, and virtual machines. Again, being capable of holding more is simply a bonus to performance.</p>
<h3>Hard Drive</h3>
<p>Go big, fast or go home is the name of the game. Recording high quality audio means using a lot of storage space. Reducing the load on the CPU and RAM means getting the data written to the hard drive as fast as possible. Taking it a step forward, use an external hard drive while recording. The reasoning is quite simple: why try to read and write from the same drive at the same time? It doesn&#8217;t make any sense. The hard drive in your computer is the same drive that is running your audio application, effects, etc. Trying to write to it at the same time is not going to help your performance. Therefore, isolate it in the process of recording by simply writing to the external hard drive. You will notice you need smaller buffers and latency time will decrease. As for specs, try to use , again, a firewire hard drive and something with high RPM&#8217;s (7200+) or solid state (no spinning required.)</p>
<h3>Audio Devices</h3>
<p>On the market today there are many options when it comes to audio recording devices. First, let me say use Firewire. Next, you will want to determine how many tracks you would like to record simultaneously. For simple singer/songwriter just a few tracks 2-4 should do fine. If you plan to record full bands then I would suggest 8-16 tracks to account for mics for drums and the rest of the band. Some devices have mixers built in while others will have simple gain/volume controls, the preference is up to you. Again, the more tracks you wish to record simultaneously the more powerful computer rig you will need.</p>
]]></content:encoded>
			<wfw:commentRss>http://nickholdren.com/2010/04/01/creating-a-home-recording-studio/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Handling mySQL Results From AMFPHP in AS3</title>
		<link>http://nickholdren.com/2010/02/22/handling-mysql-results-from-amfphp-in-as3/</link>
		<comments>http://nickholdren.com/2010/02/22/handling-mysql-results-from-amfphp-in-as3/#comments</comments>
		<pubDate>Mon, 22 Feb 2010 08:49:47 +0000</pubDate>
		<dc:creator>Nick Holdren</dc:creator>
				<category><![CDATA[Php]]></category>
		<category><![CDATA[amfphp]]></category>
		<category><![CDATA[as3]]></category>
		<category><![CDATA[mySQL]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://nickholdren.com/?p=20</guid>
		<description><![CDATA[This tutorial covers how to handle complex data types that are returned from AMFPHP while using AS3.]]></description>
			<content:encoded><![CDATA[<pre>switch(typeof(result)){

	case "boolean":

		//Convert to string and place in text box
		myTextBox.text = result.toString();
		break;

	case "number":

		//Convert to string and place in text box
		myTextBox.text =  result.toString();
		break;

	case "object":

		//Create an array of values
		var values:Array = result.serverInfo.initialData;

		//Create an array of column names
		var category:Array = result.serverInfo.columnNames;

		var aArr:Array = new Array();

			for (var i:Number=0; i &lt; values.length; i++) {

 				aArr[i] = new Object();

 				for (var aIndex:* in category) {

 				 aArr[i][category[aIndex]] = values[i][aIndex];

 				}
 			}

		//Create a new Data Provider
		var dp:DataProvider = new DataProvider(aArr);

		//Assume we have a datagrid we wish to bind to
		myDataGrid.removeAllColumns();

		//Bind the Data Provider to the Data Grid
		myDataGrid.dataProvider = dp;

		//Get the row count
		myDataGrid.rowCount = aDg.length;
		myDataGrid.setSize(500,100);
		break;

	case "string":
		myTextBox.text = result.toString();

	default:
		break;
}</pre>
]]></content:encoded>
			<wfw:commentRss>http://nickholdren.com/2010/02/22/handling-mysql-results-from-amfphp-in-as3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
