<?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>Flailing Wildly &#187; Tutorials</title>
	<atom:link href="http://blog.ryanparman.com/tags/tutorials/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.ryanparman.com</link>
	<description>Too much straw, not enough camel</description>
	<lastBuildDate>Thu, 19 Jan 2012 01:03:09 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Remove Comcast/Xfinity start page from Firefox (Mac)</title>
		<link>http://blog.ryanparman.com/2011/07/07/remove-comcastxfinity-start-page-from-firefox-mac/</link>
		<comments>http://blog.ryanparman.com/2011/07/07/remove-comcastxfinity-start-page-from-firefox-mac/#comments</comments>
		<pubDate>Thu, 07 Jul 2011 09:18:35 +0000</pubDate>
		<dc:creator>Ryan Parman</dc:creator>
				<category><![CDATA[Tutorials]]></category>

		<guid isPermaLink="false">http://blog.ryanparman.com/?p=2093</guid>
		<description><![CDATA[The Comcast/Xfinity installer adds crap to your Mac, including forcibly setting an Xfinity portal as the homepage. It&#8217;s a really douchey thing to do. I set up my new Comcast Xfinity internet service today using the self-install kit. After walking through the necessary questions, it then forced me to download and install their crap-ware onto [...]]]></description>
			<content:encoded><![CDATA[<p class="intro">The Comcast/Xfinity installer adds crap to your Mac, including forcibly setting an Xfinity portal as the homepage. It&#8217;s a really douchey thing to do.</p>
<div class="blogphoto norotate" style="width: 460px;"><img style="width: 460px;" src="http://s3.ryanparman.com/images/comcast-xfinity/comcast-xfinity.png" alt="" /></div>
<p>I set up my new Comcast Xfinity internet service today using the self-install kit. After walking through the necessary questions, it then <em>forced</em> me to download and install their crap-ware onto my Mac before it would register the flow as &#8220;completed&#8221;. Being given no choice, I begrudgingly ran the installer. Afterwards, I ended up with extra Comcast/Xfinity bookmarks in multiple browsers (Firefox &amp; Safari), and the homepages for both browsers were set to an Xfinity portal page.</p>
<p>Fixing the homepage in Safari was easy — you just change it how you always change it. Unfortunately, fixing Firefox&#8217;s homepage was trickier. <strong>The installer disabled my ability to change my homepage back to whatever I wanted it to be.</strong> BAD COMCAST! BAD!</p>
<p>I did some Googling around, but nobody seemed to know WTF was going on or how to fix it. I ended up dropping into Terminal and running <code>cd /; grep -ri comcast .</code> in order to find the solution. Here it is: they add a custom user.js file to your Firefox profile which overrides certain settings from the <code>about:config</code> panel (including the browser homepage). Ass-hats! This is how I fixed it:</p>
<h3>Fixing the issue</h3>
<ol>
<li>In your address bar, go to <code>about:support</code>.
<div class="blogphoto norotate" style="width: 694px;"><img style="width: 694px;" src="http://s3.ryanparman.com/images/comcast-xfinity/support.png" alt="" /></div>
</li>
<li>Click the button that says <em>&#8220;Show In Finder&#8221;</em> (Mac) or <em>&#8220;Open Containing Folder&#8221;</em> (Windows). This should show you your profile folder.
<div class="blogphoto norotate" style="width: 577px;"><img style="width: 577px;" src="http://s3.ryanparman.com/images/comcast-xfinity/profile.png" alt="" /></div>
</li>
<li>Go inside of that folder, and look for a file called <code>user.js</code>. Delete it.
<div class="blogphoto norotate" style="width: 577px;"><img style="width: 577px;" src="http://s3.ryanparman.com/images/comcast-xfinity/userjs.png" alt="" /></div>
</li>
<li>Go into the preferences, and reset your homepage.</li>
<li>Restart Firefox, and your preferred homepage should be back.</li>
</ol>
<h3>Update (2011-11-09):</h3>
<p>When I originally posted this, it was after I had hunted across the Comcast FAQ, forums and Google as a whole to try to find a solution. Nothing was written about this issue when I came up with my workaround.</p>
<p>After I posted the solution to this problem and it caught the attention of some bloggers (Brian Krebs from <a href="http://krebsonsecurity.com/2011/07/comcast-hijacks-firefox-homepage-well-fix/">Krebs on Security</a> and Tim Cushing of <a href="http://www.techdirt.com/articles/20110722/02383515203/comcast-hijacks-mac-firefox-users-homepage-offers-blame-game-faux-apology-return.shtml">Techdirt</a>), Comcast wrote up the same set of instructions (although with a less anti-Comcast tone) and added them to the <a href="http://customer.comcast.com/Pages/FAQViewer.aspx?Guid=9dac6569-c2d3-467d-b747-1cc67fe61284">Comcast FAQ</a>. While they didn&#8217;t directly rip me off, they didn&#8217;t even give me a hat tip for bringing the solution to light.</p>
<p>Stay classy, Comcast.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.ryanparman.com/2011/07/07/remove-comcastxfinity-start-page-from-firefox-mac/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Searching through the AWS SDK for PHP documentation</title>
		<link>http://blog.ryanparman.com/2011/02/27/searching-through-the-aws-sdk-for-php-documentation/</link>
		<comments>http://blog.ryanparman.com/2011/02/27/searching-through-the-aws-sdk-for-php-documentation/#comments</comments>
		<pubDate>Mon, 28 Feb 2011 02:15:20 +0000</pubDate>
		<dc:creator>Ryan Parman</dc:creator>
				<category><![CDATA[Projects]]></category>
		<category><![CDATA[Tutorials]]></category>

		<guid isPermaLink="false">http://blog.ryanparman.com/?p=2012</guid>
		<description><![CDATA[Although the AWS SDK for PHP is growing as fast as Amazon&#8217;s breadth of web services, it should still be easy to find the information that you need in order to develop. This is a goal that I take very seriously. Back in 2005, I took a job with Stryker Endoscopy as a member of [...]]]></description>
			<content:encoded><![CDATA[<p class="intro">Although the AWS SDK for PHP is growing as fast as Amazon&#8217;s breadth of web services, it should still be easy to find the information that you need in order to develop. This is a goal that I take very seriously.</p>
<p>Back in 2005, I took a job with <a href="http://stryker.com/endoscopy/">Stryker Endoscopy</a> as a member of their Internal User Experience team, where our focus was on Usability and User-Centered Design (UCD). (I take no responsibility for how bad their public website is!) I gained some invaluable insight into the usability process and the principles behind UCD that I&#8217;ve carried with me over the years as I&#8217;ve migrated from UX and Front-End Development toward building Software Development Kits (SDKs) for infrastructure services. The most valuable of these is this:</p>
<blockquote><p>You can have all of the greatest functionality in the world. But if nobody can use it, what&#8217;s the point?</p></blockquote>
<p>I&#8217;m tempted to launch into a tirade against the stunning ignorance of software engineers who think we UX people &#8220;make it look pretty.&#8221; <em>A Photoshop mockup does not a user experience make.</em> Those same <em>woefully</em> uneducated people don&#8217;t understand how much science is involved in producing high-quality user interfaces — nor do they understand that if a person can&#8217;t figure out how to use the software, it&#8217;s not a problem with the person&hellip; it&#8217;s a problem with the software. As I&#8217;ve shifted toward producing developer-facing software, I&#8217;ve always maintained the notion that &#8220;developers are people too.&#8221; The administration and developer tools of <a href="http://reardencommerce.com">some web applications</a> are a <em>crime against humanity</em>. Of course, that&#8217;s what happens when you make the mistake of thinking that corporate stakeholders are your customers instead of <em>Real Human Beings™</em>. [I'm starting to rant. Let me switch gears.]</p>
<h3>I &hearts; Quality</h3>
<p>I believe that documentation is equally — if not more — important as the code itself. It&#8217;s a critical part of the user (i.e., developer) experience right up there with API design and SDK design. When I was building <em>CloudFusion</em> (the pre-cursor to the AWS SDK for PHP), I spent quite a bit of time trying to find a high-quality documentation tool that delivered what I believed my users deserved. After searching for a good tool over the course of 2-3 years, I finally broke down and wrote my own tool that produced the kind of high-quality documentation that my users deserve. (That project is called “Vanity”, and is currently incubating).</p>
<h3>Making It Better</h3>
<p>With the release of the <a href="http://aws.amazon.com/releasenotes/PHP/0721416574824769">AWS SDK for PHP 1.2.4</a>, we really tried to raise the bar for our documentation. Here are some of the features that we now provide:</p>
<ul>
<li>Rewrote the in-file documentation blocks to use the more common and better supported <a href="http://manual.phpdoc.org/HTMLSmartyConverter/HandS/phpDocumentor/tutorial_phpDocumentor.quickstart.pkg.html#coding.phpcomments">PHPDoc</a> format instead of the <a href="http://naturaldocs.org/documenting.html">NaturalDocs</a> format we used previously.</li>
<li>Complete API reference documentation for all methods and classes.</li>
<li>One or more usage examples for nearly every single method.</li>
<li>Usage examples are generated from real <a href="http://qa.php.net/write-test.php">PHPT</a> tests, ensuring that the sample code actually works.</li>
<li>A breakdown of all complex parameters so that you can see what all of the possible options are.</li>
<li>The API reference documentation is available in HTML, raw XML, raw JSON and Serialized PHP formats.</li>
<li>Offline documentation can be downloaded as <code>.zip</code>, <code>.gz</code> and <code>.bz2</code> archives.</li>
<li>Intelligent search along with a class browser.</li>
<li>View the source code of any method in the SDK.</li>
<li>The file that a given method is defined in.</li>
<li>Links out to the <a href="https://github.com/amazonwebservices/aws-sdk-for-php">GitHub repository</a>.</li>
<li>Complete inheritance chains and interface conformity.</li>
<li>Methods that are related to the one you&#8217;re looking at.</li>
<li>Links out to <a href="http://php.net">PHP.net</a>, where appropriate.</li>
<li>Instant feedback, as in the ability to point out an error or some other issue directly on a page itself, instead of needing to hunt for a feedback link somewhere else in the site.</li>
<li>The ability to link directly to a search query.</li>
</ul>
<p>It&#8217;s this last feature that I&#8217;ve come to talk about today — the ability to easily search the docs from tools you already use.</p>
<h3>Searching the AWS SDK for PHP documentation from Google Chrome</h3>
<p>For this, we need to tell Chrome to use the following pattern when searching the API reference.</p>
<pre>http://docs.amazonwebservices.com/AWSSDKforPHP/latest/?q=%s</pre>
<ol>
<li>
<p>Open the Google Chrome preferences panel.</p>
<p><div class="blogphoto norotate" style="width: 650px;"><img src="http://s3.ryanparman.com/images/search-sdk/chrome1.png" style="width: 650px;" /></div>
</p>
</li>
<li>
<p>In the <em>Search</em> section, click <em>Manage Search Engines&#8230;</em>. This will show the <em>Search Engines</em> panel.</p>
<p><div class="blogphoto norotate" style="width: 650px;"><img src="http://s3.ryanparman.com/images/search-sdk/chrome2.png" style="width: 650px;" /></div>
</p>
</li>
<li>
<p>In the <em>Other search engines</em> section, fill out the fields as shown below. The URL in the last field is the one I posted above.</p>
<p><div class="blogphoto norotate" style="width: 650px;"><img src="http://s3.ryanparman.com/images/search-sdk/chrome3.png" style="width: 650px;" /></div>
</p>
</li>
<li>
<p>Open a new tab. Typing &#8220;<em>aws[space]</em>&#8221; will trigger the AWS SDK for PHP search. Search for whichever keywords you&#8217;d like. At the time of this writing, classes, methods, properties and constants are supported.</p>
<p><div class="blogphoto norotate" style="width: 650px;"><img src="http://s3.ryanparman.com/images/search-sdk/chrome4.png" style="width: 650px;" /></div>
</p>
</li>
<li>
<p>This will open the SDK API reference documentation. Your search terms will be pre-filled in the search field on the left. You can navigate through the documentation from there!</p>
<p><div class="blogphoto norotate" style="width: 650px;"><img src="http://s3.ryanparman.com/images/search-sdk/chrome5.png" style="width: 650px;" /></div>
</p>
</li>
</ol>
<h3>Searching the AWS SDK for PHP documentation from Mozilla Firefox</h3>
<p>This process is very similar to Google Chrome. For this, we need to tell Firefox to use the following pattern when searching the API reference.</p>
<pre>http://docs.amazonwebservices.com/AWSSDKforPHP/latest/?q=%s</pre>
<ol>
<li>
<p>Open the Firefox Bookmarks Manager by choosing <em>Bookmarks > Show All Bookmarks</em> from the menubar. Once that&#8217;s open, click the gear icon and create a new bookmark.</p>
<p><div class="blogphoto norotate" style="width: 650px;"><img src="http://s3.ryanparman.com/images/search-sdk/firefox1.png" style="width: 650px;" /></div>
</p>
</li>
<li>
<p>Firefox will present a <em>New Bookmark</em> dialog.</p>
<p><div class="blogphoto norotate" style="width: 650px;"><img src="http://s3.ryanparman.com/images/search-sdk/firefox2.png" style="width: 650px;" /></div>
</p>
</li>
<li>
<p>Fill out the fields as shown below. The URL in the <em>Location</em> field is the one I posted above. Firefox calls this a <em>Keyword Search</em>.</p>
<p><div class="blogphoto norotate" style="width: 650px;"><img src="http://s3.ryanparman.com/images/search-sdk/firefox3.png" style="width: 650px;" /></div>
</p>
</li>
<li>
<p>Open a new tab. Typing &#8220;<em>aws[space]</em>&#8221; will trigger the AWS SDK for PHP search. Search for whichever keywords you&#8217;d like. At the time of this writing, classes, methods, properties and constants are supported.</p>
<p><div class="blogphoto norotate" style="width: 650px;"><img src="http://s3.ryanparman.com/images/search-sdk/firefox4.png" style="width: 650px;" /></div>
</p>
</li>
<li>
<p>This will open the SDK API reference documentation. Your search terms will be pre-filled in the search field on the left. You can navigate through the documentation from there!</p>
<p><div class="blogphoto norotate" style="width: 650px;"><img src="http://s3.ryanparman.com/images/search-sdk/firefox5.png" style="width: 650px;" /></div>
</p>
</li>
</ol>
<h3>Searching the AWS SDK for PHP documentation from Alfred</h3>
<p>This approach is my personal favorite, but is specific to <a href="http://alfredapp.com">Alfred</a>, an app launcher for Mac OS X. For this, we need to tell Alfred to use the following pattern when searching the API reference.</p>
<pre>http://docs.amazonwebservices.com/AWSSDKforPHP/latest/?q={query}</pre>
<p>Alternatively, you can use the <a href="alfredapp://customsearch/AWS%20SDK%20for%20PHP/sdk/utf8/url=http://docs.amazonwebservices.com/AWSSDKforPHP/latest/?q={query}">following URL</a> to accomplish what we&#8217;re going to do here:</p>
<pre>alfredapp://customsearch/AWS%20SDK%20for%20PHP/aws/utf8/url=http://docs.amazonwebservices.com/AWSSDKforPHP/latest/?q={query}</pre>
<ol>
<li>
<p>Open the Alfred preferences, and choose <em>Custom Searches</em> from the sidebar. Once there, click the plus symbol at the bottom to add a new custom search.</p>
<p><div class="blogphoto norotate" style="width: 650px;"><img src="http://s3.ryanparman.com/images/search-sdk/alfred1.png" style="width: 650px;" /></div>
</p>
</li>
<li>
<p>Fill out the fields as shown below. The URL in the <em>Search URL</em> field is the one I posted above. Click <em>Add</em> when you&#8217;re done.</p>
<p><div class="blogphoto norotate" style="width: 650px;"><img src="http://s3.ryanparman.com/images/search-sdk/alfred2.png" style="width: 650px;" /></div>
</p>
</li>
<li>
<p>Close the preferences, and bring up Alfred! Typing &#8220;<em>aws[space]</em>&#8221; will trigger the AWS SDK for PHP search. Search for whichever keywords you&#8217;d like. At the time of this writing, classes, methods, properties and constants are supported.</p>
<p><div class="blogphoto norotate" style="width: 600px;"><img src="http://s3.ryanparman.com/images/search-sdk/alfred3.png" style="width: 600px;" /></div>
</p>
</li>
</ol>
<h3>The End</h3>
<p>I hope that this tutorial helps make your use of the AWS SDK for PHP even easier! Are there some other cool uses for the SDK docs that I might not be aware of? Let me know in the comments!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.ryanparman.com/2011/02/27/searching-through-the-aws-sdk-for-php-documentation/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Creating iPhone ringtones with iTunes and QuickTime</title>
		<link>http://blog.ryanparman.com/2011/01/08/creating-iphone-ringtones-with-itunes-and-quicktime/</link>
		<comments>http://blog.ryanparman.com/2011/01/08/creating-iphone-ringtones-with-itunes-and-quicktime/#comments</comments>
		<pubDate>Sun, 09 Jan 2011 04:12:36 +0000</pubDate>
		<dc:creator>Ryan Parman</dc:creator>
				<category><![CDATA[Tutorials]]></category>

		<guid isPermaLink="false">http://blog.ryanparman.com/?p=1994</guid>
		<description><![CDATA[You can either spend money on iPhone ringtones on the iTunes Store, purchase an application that makes them for you, or you can make your own for free. I make all of my own ringtones from music that I already own. There are a few steps involved here, but overall, the process is pretty straightforward. [...]]]></description>
			<content:encoded><![CDATA[<p class="intro">You can either spend money on iPhone ringtones on the iTunes Store, purchase an application that makes them for you, or you can make your own for free.</p>
<p>I make all of my own ringtones from music that I already own. There are a few steps involved here, but overall, the process is pretty straightforward.</p>
<h3>Getting Started</h3>
<ol>
<li>
<p>The first thing you&#8217;ll need to do is find a song that you want to convert into a ringtone.</p>
<p>iPhone ringtones can only be 30 seconds long, so if you find something you like that&#8217;s 30 seconds or shorter, skip directly to <em>step 9</em>. Otherwise, I&#8217;ll walk you through the process of editing down a longer song into a 30-second ringtone.</p>
<div class="blogphoto norotate" style="width: 607px;"><img src="http://s3.ryanparman.com/images/itunes-ringtones/1.png" style="width: 607px;" /></div>
</li>
<li>
<p>Once you&#8217;ve selected the song you want to use, right-click (or control-click if you have a one-button mouse), and choose the option that will allow you to see the file itself. On Mac OS X, this is <em>Show in Finder</em>. On Windows, this is <em>Show in Explorer</em>.</p>
<div class="blogphoto norotate" style="width: 650px;"><img src="http://s3.ryanparman.com/images/itunes-ringtones/2.png" style="width: 650px;" /></div>
</li>
<li>
<p>Once the window opens containing the song, make a copy of it somewhere &mdash; preferably your desktop.</p>
<div class="blogphoto norotate" style="width: 666px;"><img src="http://s3.ryanparman.com/images/itunes-ringtones/3.png" style="width: 666px;" /></div>
</li>
<li>
<p>Open the file using the latest version of QuickTime 7, which is <a href="http://support.apple.com/kb/DL923">QuickTime 7.6.6 for Mac OS X</a> or <a href="http://support.apple.com/kb/dl837">QuickTime 7.6.9 for Windows</a>.</p>
<div class="blogphoto norotate" style="width: 668px;"><img src="http://s3.ryanparman.com/images/itunes-ringtones/4.png" style="width: 668px;" /></div>
<p><strong>Note:</strong> If you&#8217;re running Mac OS X 10.6 &#8220;Snow Leopard&#8221;, it&#8217;s possible that you have the newer <a href="http://www.apple.com/macosx/what-is-macosx/quicktime.html">QuickTime X</a> installed, but not the older QuickTime 7. Unfortunately, because QuickTime X was completely re-written from scratch, its player does not yet editing and exporting in other formats. If you&#8217;re not sure whether or not you have QuickTime 7 installed, you can use Spotlight to search for <em>quicktime 7</em>.</p>
<div class="blogphoto norotate" style="width: 362px;"><img src="http://s3.ryanparman.com/images/itunes-ringtones/19.png" style="width: 362px;" /></div>
</li>
<li>
<p>Using the small arrows at the bottom of the timeline, decide which 30 seconds of the song you want to use for your ringtone.</p>
<div class="blogphoto norotate" style="width: 410px;"><img src="http://s3.ryanparman.com/images/itunes-ringtones/5.png" style="width: 410px;" /></div>
</li>
<li>
<p>From the menubar, choose <em>Edit > Trim to Selection</em>.</p>
<div class="blogphoto norotate" style="width: 600px;"><img src="http://s3.ryanparman.com/images/itunes-ringtones/6.png" style="width: 600px;" /></div>
<p>This will shorten the length of the entire song to just the 30 second clip you created.</p>
<div class="blogphoto norotate" style="width: 382px;"><img src="http://s3.ryanparman.com/images/itunes-ringtones/7.png" style="width: 382px;" /></div>
</li>
<li>
<p>From the menubar, choose <em>File > Export</em>.</p>
<div class="blogphoto norotate" style="width: 600px;"><img src="http://s3.ryanparman.com/images/itunes-ringtones/8.png" style="width: 600px;" /></div>
<p>When the dialog box comes up, choose where you want to save the file to (I would recommend your Desktop), and change the <em>Export</em> selection at the bottom to <em>Sound to Wave</em>. Choose <em>Save</em>.</p>
<div class="blogphoto norotate" style="width: 651px;"><img src="http://s3.ryanparman.com/images/itunes-ringtones/9.png" style="width: 651px;" /></div>
</li>
<li>
<p>Once you&#8217;ve saved the 30-second clip as a <code>.wav</code> file, drag it into iTunes.</p>
<div class="blogphoto norotate" style="width: 600px;"><img src="http://s3.ryanparman.com/images/itunes-ringtones/10.png" style="width: 600px;" /></div>
</li>
<li>
<p>From the menubar, choose <em>Advanced > Create AAC Version</em>.</p>
<div class="blogphoto norotate" style="width: 544px;"><img src="http://s3.ryanparman.com/images/itunes-ringtones/11.png" style="width: 544px;" /></div>
</li>
<li>
<p>You should now have the original <code>.wav</code> version, and a new <code>.m4a</code> version. (If you&#8217;re interested in learning about why AAC files have an <code>.m4a</code> file extension, read the <em>Audio Codecs</em> section of <a href="http://diveintohtml5.org/video.html">Dive Into HTML5</a>.)</p>
<p>Right-click (or control-click if you have a one-button mouse) on the new file, and choose the option that will allow you to see the file itself. On Mac OS X, this is <em>Show in Finder</em>. On Windows, this is <em>Show in Explorer</em>.</p>
<div class="blogphoto norotate" style="width: 670px;"><img src="http://s3.ryanparman.com/images/itunes-ringtones/12.png" style="width: 670px;" /></div>
</li>
<li>
<p>Select the <code>.m4a</code> file, and change its file extension to <code>.m4r</code> instead.</p>
<div class="blogphoto norotate" style="width: 681px;"><img src="http://s3.ryanparman.com/images/itunes-ringtones/13.png" style="width: 681px;" /></div>
<p>Mac OS X will ask you if you&#8217;re sure you want to change the file extension to <code>.m4r</code>. Choose <em>Use .m4r</em>.</p>
<div class="blogphoto norotate" style="width: 420px;"><img src="http://s3.ryanparman.com/images/itunes-ringtones/14.png" style="width: 420px;" /></div>
</li>
<li>
<p>Back in iTunes, you can delete the <code>.wav</code> and <code>.m4a</code> files from your library. You won&#8217;t need them anymore.</p>
<div class="blogphoto norotate" style="width: 700px;"><img src="http://s3.ryanparman.com/images/itunes-ringtones/15.png" style="width: 700px;" /></div>
</li>
<li>
<p>Drag the new <code>.m4r</code> ringtone we created into iTunes. Unless you removed it in your Preference, you should see an option for <em>Ringtones</em> in the sidebar.</p>
<div class="blogphoto norotate" style="width: 700px;"><img src="http://s3.ryanparman.com/images/itunes-ringtones/16.png" style="width: 700px;" /></div>
</li>
<li>
<p>If you haven&#8217;t done it already, connect your iPhone to iTunes. Select your iPhone in the sidebar, then choose Ringtones from the bar along the top. From there, you can either sync all ringtones, or selected ringtones. If you prefer to do the latter, make sure that the checkbox next to your new ringtone is checked.</p>
<div class="blogphoto norotate" style="width: 587px;"><img src="http://s3.ryanparman.com/images/itunes-ringtones/17.png" style="width: 587px;" /></div>
</li>
<li>
<p>Sync your iPhone. Once it completes, pick up your iPhone and launch the <em>Settings</em> app. Next, go to the <em>Sounds</em> option. From there, you can change your various sound settings.</p>
<div class="blogphoto norotate" style="width: 320px;"><img src="http://s3.ryanparman.com/images/itunes-ringtones/18.png" style="width: 320px;" /></div>
</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://blog.ryanparman.com/2011/01/08/creating-iphone-ringtones-with-itunes-and-quicktime/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Installing PHP 5.3 with mysqlnd on Mac OS X with MacPorts</title>
		<link>http://blog.ryanparman.com/2009/07/11/installing-php-5-3-with-mysqlnd-on-mac-os-x-with-macports/</link>
		<comments>http://blog.ryanparman.com/2009/07/11/installing-php-5-3-with-mysqlnd-on-mac-os-x-with-macports/#comments</comments>
		<pubDate>Sat, 11 Jul 2009 20:33:44 +0000</pubDate>
		<dc:creator>Ryan Parman</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Tutorials]]></category>

		<guid isPermaLink="false">http://blog.ryanparman.com/?p=1703</guid>
		<description><![CDATA[Historically, I've always preferred to use Apple's built-in Apache 2.2 and PHP 5.x that comes with Leopard. However, after trying to compile PHP 5.3 from scratch and connect it with Apache, I decided to just use the <a href="http://www.macports.org/install.php">MacPorts</a> installer instead. That did mean giving up control of a finely-tuned Apache installation, but in the end, I think I've ended up with a better localhost system.]]></description>
			<content:encoded><![CDATA[<p class="intro">Historically, I&#8217;ve always preferred to use Apple&#8217;s built-in Apache 2.2 and PHP 5.x that comes with Leopard. However, after trying to compile PHP 5.3 from scratch and connect it with Apache, I decided to just use the <a href="http://www.macports.org/install.php">MacPorts</a> installer instead. That did mean giving up control of a finely-tuned Apache installation, but in the end, I think I&#8217;ve ended up with a better localhost system.</p>
<h3>Prerequisites</h3>
<ul>
<li>Install <a href="http://www.macports.org/install.php">MacPorts</a></li>
</ul>
<p>Also, make sure that your MacPorts install is completely up-to-date with:</p>
<pre>sudo port -d selfupdate</pre>
<h3>Installation</h3>
<p>Now, I&#8217;ve never used MacPorts to install PHP or Apache before, so I&#8217;m starting with a clean slate. If you&#8217;ve already installed PHP or Apache with MacPorts, your steps may be different. As always, your mileage may vary. For me, I develop several open-source projects, so I need things that others may not. Adjust these steps as necessary.</p>
<ol>
<li>Using &#8220;Web Sharing&#8221; in your Sharing Preferences should be turned off. Currently this points to the (old) Apple Apache installation, although we&#8217;ll change that later.</li>
<li>From Terminal, install PHP 5.3 + Apache, and some other stuff. This will likely take quite a while. I&#8217;m installing SQLite, MySQL, and PostgreSQL because of my work on <a href="http://cachecore.googlecode.com">CacheCore</a>, so you may or may not need those. <code>mysqlnd</code> is the new PHP Native Driver for MySQL and is supposed to be better, so we&#8217;ll use that. We also need to enable non-default settings for cURL.
<pre>sudo port install curl +ssl+ipv6+ares+idn+gss+openldap+sftp_scp \
php5 +apache2+fastcgi+pear</pre>
<p>You can see all available options by running <code>port variants php5</code></li>
<li>The new Apache configuration file is stored at <code>/opt/local/apache2/conf/httpd.conf</code> while the old one was at <code>/etc/apache2/conf/httpd.conf</code>. Take a moment to copy over any settings you&#8217;ll want to maintain into the new Apache installation.</li>
<li>You&#8217;ll also want to include your <em>extra</em> settings. Toward the bottom of your <code>httpd.conf</code> file, add the following line:
<pre># All settings
Include conf/extra/*.conf</pre>
</li>
<li>If you <strong>don&#8217;t</strong> have an SSL certificate, rename your SSL configuration:
<pre>cd /opt/local/apache2;
sudo mv conf/extra/httpd-ssl.conf conf/extra/httpd-ssl.conf-disabled</pre>
</li>
<li>You&#8217;ll also want to enable PHP in Apache:
<pre>sudo mv conf/extras-conf/mod_php.conf conf/extra/mod_php.conf</pre>
</li>
<li>The new PHP configuration file is stored at <code>/opt/local/etc/php5/php.ini</code> while the old one was at <code>/etc/php.ini</code>. Take a moment to copy over any settings you&#8217;ll want to maintain into the new PHP installation.</li>
<li>You&#8217;ll need to tell Apache to enable PHP support. Open your new <code>httpd.conf</code> file, find where the extensions are loaded (with <code>LoadModule</code>), and add this to the end of the line:
<pre>LoadModule php5_module modules/libphp5.so</pre>
</li>
<li>Restart Apache. If you were using <code>apachectl</code> before, it still points to the old Apache, so we&#8217;ll want to point specifically to the new one.
<pre>sudo /opt/local/apache2/bin/apachectl restart</pre>
</li>
</ol>
<p>At this point, PHP 5.3 with Apache 2.2 and the new <code>mysqlnd</code> extension are all installed.</p>
<h3>Extra stuff</h3>
<ol>
<li>I generally prefer to have lots more stuff installed locally so that I can worry more about developing and less about installing. Because of this, I also install a few other things.
<pre>sudo port install memcached \
    php5-apc \
    php5-curl \
    php5-gd \
    php5-http \
    php5-iconv \
    php5-imagick \
    php5-mbstring \
    php5-memcache \
    php5-mysql \
    php5-openssl \
    php5-postgresql \
    php5-sockets \
    php5-sqlite \
    php5-tidy \
    php5-xdebug</pre>
</li>
<li>Restart Apache with:
<pre>sudo /opt/local/apache2/bin/apachectl restart</pre>
</li>
</ol>
<h3>Replacing older versions</h3>
<p>Now, we want to continue using our command-line PHP scripts and the &#8220;Web Sharing&#8221; checkbox in the Sharing Preference Pane, so let&#8217;s make sure that those are all pointing to the new locations instead. We&#8217;ll be backing up and redirecting <code>php</code>, <code>apachectl</code>, and <code>httpd</code>.</p>
<ol>
<li>Open up your Sharing Preference Pane, and disable Web Sharing</li>
<li>Run the following command on the Terminal:
<pre>sudo mv /usr/bin/php /usr/bin/php.bak &amp;&amp; sudo ln -s /opt/local/bin/php /usr/bin/php; \
sudo mv /usr/sbin/apachectl /usr/sbin/apachectl.bak &amp;&amp; sudo ln -s /opt/local/apache2/bin/apachectl /usr/sbin/apachectl; \
sudo mv /usr/sbin/httpd /usr/sbin/httpd.bak &amp;&amp; sudo ln -s /opt/local/apache2/bin/httpd /usr/sbin/httpd; \</pre>
</li>
<li>Re-enable Web Sharing in the preference pane.</li>
</ol>
<h3>Shortcuts</h3>
<p>Lastly, I like to set up some shortcuts so that I can access all of my important localhost stuff from one place. I&#8217;ll create a new directory called <code>www-config</code> and then I&#8217;ll place symlinks into it for quick access to Apache and PHP configuration files.</p>
<pre>sudo mkdir /www-config &amp;&amp; \
cd /www-config &amp;&amp; \
sudo ln -s /opt/local/apache2/bin/apachectl /www-config/apachectl &amp;&amp; \
sudo ln -s /opt/local/apache2/conf/ /www-config/httpd-conf &amp;&amp; \
sudo ln -s /opt/local/apache2/logs/ /www-config/logs &amp;&amp; \
sudo ln -s /opt/local/var/db/php5/ /www-config/php-ini &amp;&amp; \
sudo ln -s /opt/local/etc/php5/php.ini /www-config/php.ini</pre>
]]></content:encoded>
			<wfw:commentRss>http://blog.ryanparman.com/2009/07/11/installing-php-5-3-with-mysqlnd-on-mac-os-x-with-macports/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Run Internet Explorer 6 (or IE7, or IE8) images in VirtualBox on Mac OS X</title>
		<link>http://blog.ryanparman.com/2009/06/30/run-ie6-ie7-ie8-images-virtualbox-macosx/</link>
		<comments>http://blog.ryanparman.com/2009/06/30/run-ie6-ie7-ie8-images-virtualbox-macosx/#comments</comments>
		<pubDate>Wed, 01 Jul 2009 04:33:14 +0000</pubDate>
		<dc:creator>Ryan Parman</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[Tutorials]]></category>

		<guid isPermaLink="false">http://blog.ryanparman.com/?p=1692</guid>
		<description><![CDATA[These days I'm looking to save money anywhere I can. How about you? Whereas VMWare Fusion (as awesome as it is) runs around $80 USD per copy, Sun's VirtualBox is a free, open-source product for virtualization that runs on Mac OS X, Linux, and Windows.

If you've not yet read the related post, "<a href="http://blog.ryanparman.com/2009/01/07/run-ie6-ie7-ie8-images-vmware-fusion-macosx/">Run Internet Explorer 6 (or IE7, or IE8) images in VMWare Fusion on Mac OS X</a>," you should. This is a follow up on how to take those virtual machines (which we've already done a lot of work on), and convert them for use VirtualBox.]]></description>
			<content:encoded><![CDATA[<p class="intro">These days I&#8217;m looking to save money anywhere I can. How about you? Whereas VMWare Fusion (as awesome as it is) runs around $80 USD per copy, Sun&#8217;s VirtualBox is a free, open-source product for virtualization that runs on Mac OS X, Linux, and Windows.</p>
<p><em><strong>Update:</strong> Microsoft&#8217;s images are broken, and don&#8217;t work on anything except VirtualPC now. Mac and Linux users are out of luck for the time being. More information on the subject can be found at <a href="http://blogs.msdn.com/petel/archive/2009/09/09/running-the-ie-vpc-s-on-other-vpc-hosts.aspx">http://blogs.msdn.com/petel/archive/2009/09/09/running-the-ie-vpc-s-on-other-vpc-hosts.aspx</a>.</em></p>
<p>If you&#8217;ve not yet read the related post, &#8220;<a href="http://blog.ryanparman.com/2009/01/07/run-ie6-ie7-ie8-images-vmware-fusion-macosx/">Run Internet Explorer 6 (or IE7, or IE8) images in VMWare Fusion on Mac OS X</a>,&#8221; you should. This is a follow up on how to take those virtual machines (which we&#8217;ve already done a lot of work on), and convert them for use VirtualBox.</p>
<h3>Prerequisites</h3>
<ul>
<li>You need to have access to a Mac OS X machine.</li>
<li>A broadband connection would be quite helpful.</li>
<li>A USB flash drive (or some other way to copy files to the VM before you have network access enabled).</li>
</ul>
<p>VMWare Fusion uses the <code>.vmdk</code> disk format for its virtual drives. VirtualBox uses the <code>.vdi</code> format. Although VirtualBox can use the existing <code>.vmdk</code> images, you get better performance if you convert them to <code>.vdi</code>.</p>
<h3>Downloading and Preparing stuff</h3>
<ol>
<li>Download and install <a href="http://www.virtualbox.org/wiki/Downloads">VirtualBox</a>. It should live in the <code>/Applications</code> directory.</li>
<li>Download and install <a href="http://www.kju-app.org">Q</a> (a Mac version of <a href="http://qemu.org">Qemu</a>). It should live in the <code>/Applications</code> directory.</li>
<li>Download and decompress an <a href="http://cdn.ryanparman.com/ie6-xpsp3.tar.gz">IE6</a>, <a href="http://cdn.ryanparman.com/ie7-xpsp3.tar.gz">IE7</a>, or <a href="http://cdn.ryanparman.com/ie8-xpsp3.tar.gz">IE8</a> VMWare Fusion image that I&#8217;ve posted previously. If you need ALL of them, you can save yourself the bandwidth by downloading the IE6 image, making a copy of the file, and upgrading that copy to IE7 or IE8.</li>
</ol>
<h3>Extracting the disk image</h3>
<ol>
<li>When you decompress the VMWare Fusion image, you should end up with a folder containing 3 files: Two text files, and a <code>.vmware</code> file.</li>
<li>Right-click (or command-click) the <code>.vmware</code> file and choose &#8220;Show package contents.&#8221; This will open up a new window.</li>
<li>Find the <code>.vmdk</code> file and drag it some place that&#8217;s easy to find. In this tutorial, we&#8217;ll use the desktop.</li>
</ol>
<h3>Converting the VMWare image to a VirtualBox image (Optional)</h3>
<p>This step is optional. VirtualBox can read the VMWare Fusion disk image format if you&#8217;re short on time. However, you get better performance if you convert to the native VirtualBox format.</p>
<ol>
<li>Fire up <code>Terminal.app</code>. It lives inside your <code>/Applications/Utilities</code> directory.</li>
<li>Move to your desktop directory:
<pre>cd ~/Desktop</pre>
</li>
<li>We&#8217;ll convert the <code>.vmdk</code> file into a raw hard drive file, then convert that raw file into the native <code>.vdi</code> format:
<pre>/Applications/Q.app/Contents/MacOS/qemu-img convert -O raw IE6-XP.vmdk IE6-XP.raw &#038;&#038; /Applications/VirtualBox.app/Contents/MacOS/VBoxManage convertdd IE6-XP.raw IE6-XP.vdi &#038;&#038; rm IE6-XP.raw</pre>
</li>
<li>Wait. Depending on your computer, this will probably take 20-45 minutes.</li>
<li>Once it&#8217;s done, you can delete the <code>IE6-XP.vmdk</code> file.</li>
</ol>
<h3>Configuring the VM</h3>
<ol>
<li>Move the new <code>.vdi</code> file to wherever you&#8217;ll want your virtual machines to live.</li>
<li>Launch VirtualBox. You&#8217;ll be presented with the &#8220;Welcome to VirtualBox&#8221; dialog.</li>
<li>Click &#8220;New.&#8221; A &#8220;Create new virtual machine&#8221; dialog box will pop up. Click &#8220;Next.&#8221;</li>
<li>Name your virtual machine. I named mine &#8220;IE6-XP.&#8221;</li>
<li>Operating system is &#8220;Microsoft Windows.&#8221; Version is &#8220;Windows XP.&#8221; Click &#8220;Next.&#8221;</li>
<li>Determine the amount of RAM you want to allow the virtual machine to use. I have 4 GB of RAM, so I allow 512 MB. Adjust as necessary, but I wouldn&#8217;t go below 192 MB. Click &#8220;Next.&#8221;</li>
<li>Here, you select the disk image to use. Choose &#8220;Use existing hard disk.&#8221; There is a pull-down menu that says &#8220;&lt;no media&gt;&#8221;. Click the icon to the right of it.</li>
<li>The &#8220;Virtual Media Manager&#8221; dialog should pop up. Click &#8220;Add.&#8221;</li>
<li>Find where you saved the <code>.vdi</code> file to, and select it. Once that&#8217;s done, click the &#8220;Select&#8221; button. This will close the Virtual Media Manager&#8221; dialog.</li>
<li>Back on the &#8220;Create new virtual machine&#8221; dialog, the pull-down menu that used to say &#8220;&lt;no media&gt;&#8221; should now say something along the lines of &#8220;IE6-XP.vdi (Normal, 16.00 GB).&#8221; Click &#8220;Next,&#8221; then &#8220;Finish.&#8221;</li>
<li>From there, click &#8220;Settings&#8221; along the top of the application.</li>
<li>Click the &#8220;Audio&#8221; tab, and deselect &#8220;Enable audio.&#8221; We don&#8217;t have the drivers for this, so we&#8217;ll save ourselves the nag-ware.</li>
<li>Click the &#8220;Network&#8221; tab, and choose &#8220;Intel PRO/1000 MT Desktop&#8221; from the Adapter Type pull-down.</li>
<li>Leave everything else as default, and click OK.</li>
<li>Click &#8220;Start&#8221; along the top of the application to start the virtual machine.</li>
</ol>
<h3>Installing the drivers and Guest Additions</h3>
<ol>
<li>When the virtual machine starts, the viewport will be very small. Windows also may be asking you to find drivers. Make it go away for now.</li>
<li>In the &#8220;Devices&#8221; menu, choose &#8220;Install Guest Additions.&#8221; This will load a virtual CD-ROM.</li>
<li>The setup should begin automatically. If it doesn&#8217;t, go to the Start Menu, choose &#8220;My Computer,&#8221; then double-click on &#8220;VirtualBox Guest Additions.&#8221;</li>
<li>Go through the process and install the software, then restart your VM.</li>
<li>While that restarts, switch back to Mac OS X and download the driver for the <a href="http://downloadcenter.intel.com/Detail_Desc.aspx?agr=N&amp;DwnldId=8659&amp;lang=eng">Intel PRO/1000 MT</a> ethernet card. Download the version for Windows XP (32-bit). Copy it to your USB flash drive.</li>
<li>When the virtual machine comes back up, you&#8217;ll need to connect your USB flash drive to your virtual machine. To do this, you&#8217;ll need to drag the flash drive icon to the trash from Mac OS X (but leave it physically connected). In VirtualBox, go to the menubar and choose <code>Devices &gt; USB Devices &gt; USB Flash Drive</code>.</li>
<li>Navigate to the installer on your flash drive, and install the Intel drivers.</li>
<li>Lastly, go to <code>Start Menu &gt; Run</code>, then in the dialog type the following so that you can keep the additional drivers on your VM:
<pre>D:\VBoxWindowsAdditions-x86.exe /extract /D=C:\Drivers</pre>
</li>
</ol>
<h3>Done!</h3>
<p>You should be all set! If you want to get all super-hacky, you can check out &#8220;<a href="http://www.peculier.com/blog/create-ie-vbox.html">Create IE VBox</a>&#8221; for geekier details.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.ryanparman.com/2009/06/30/run-ie6-ie7-ie8-images-virtualbox-macosx/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Run Internet Explorer 6 (or IE7, or IE8) images in VMware Fusion on Mac OS X</title>
		<link>http://blog.ryanparman.com/2009/01/07/run-ie6-ie7-ie8-images-vmware-fusion-macosx/</link>
		<comments>http://blog.ryanparman.com/2009/01/07/run-ie6-ie7-ie8-images-vmware-fusion-macosx/#comments</comments>
		<pubDate>Wed, 07 Jan 2009 20:33:34 +0000</pubDate>
		<dc:creator>Ryan Parman</dc:creator>
				<category><![CDATA[Browsers]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Tutorials]]></category>

		<guid isPermaLink="false">http://blog.ryanparman.com/?p=1660</guid>
		<description><![CDATA[By now, most front-end web developers have heard of the <a href="http://blog.ryanparman.com/2003/11/06/multiple-versions-of-internet-explorer/">Standalone Internet Explorers</a> (<a href="http://en.wikipedia.org/wiki/Internet_Explorer#.22Standalone.22_Internet_Explorer">Wikipedia article</a>). Although these are incredibly useful, they've always been hacky at best.

Because of that, we need to go the long way. We'll download the "officially sanctioned" VirtualPC images containing a time-limited version of Windows XP SP3 and Internet Explorer 6.0, and then we'll convert these images to the kind that work with VMware Fusion (which works on Mac OS X). This should only need to be done every 3 or 4 months when the images expire.]]></description>
			<content:encoded><![CDATA[<p class="intro">By now, most front-end web developers have heard of the <a href="http://blog.ryanparman.com/2003/11/06/multiple-versions-of-internet-explorer/">Standalone Internet Explorers</a> (<a href="http://en.wikipedia.org/wiki/Internet_Explorer#.22Standalone.22_Internet_Explorer">Wikipedia article</a>). Although these are incredibly useful, they&#8217;ve always been hacky at best.</p>
<p>Because of that, we need to go the long way. We&#8217;ll download the &#8220;officially sanctioned&#8221; VirtualPC images containing a time-limited version of Windows XP SP3 and Internet Explorer 6.0, and then we&#8217;ll convert these images to the kind that work with VMware Fusion (which works on Mac OS X). This should only need to be done every 3 or 4 months when the images expire.</p>
<p>These instructions are loosely based on the ones found at <a href="http://blog.mozmonkey.com/2008/vpc-ie6-ie7-ie8-on-mac-os-x/">Running IE6, IE7 and IE8 on your Mac</a>.</p>
<p><em><strong>Update:</strong> Microsoft&#8217;s images are broken, and don&#8217;t work on anything except VirtualPC now. Mac and Linux users are out of luck for the time being. More information on the subject can be found at <a href="http://petelepage.com/blog/2009/09/running-the-ie-vpcs-on-other-vpc-hosts/">http://petelepage.com/blog/2009/09/running-the-ie-vpcs-on-other-vpc-hosts/</a>.</em></p>
<h3>Prerequisites</h3>
<ul>
<li>You need to have <a href="http://vmware.com/products/fusion/">VMware Fusion</a> installed on your Mac.</li>
<li>You need to have access to a Windows XP machine, as this is where the converting will happen.</li>
</ul>
<h3>Installing Qemu (FIRST-TIME ONLY)</h3>
<ol>
<li>Download a small application to our Windows machine called <a href="http://lassauge.free.fr/qemu/">Qemu</a>. At the time of this writing, you want to download the <a href="http://lassauge.free.fr/qemu/release/Qemu-0.9.1-windows.zip">regular version 0.9.1</a>. Once it&#8217;s done, unzip it someplace that&#8217;s easy to get to via the command line (e.g. <code>c:\qemu</code>).</li>
<li>Go into the Qemu folder, then into the <code>bin</code> folder and copy all of the files in the <code>bin</code> folder back to the original Qemu folder (you can simply copy-paste).</li>
</ol>
<h3>Downloading and Preparing stuff</h3>
<ol>
<li>On Microsoft&#8217;s website, they have a page entitled <a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=21EABB90-958F-4B64-B5F1-73D0A413C8EF&amp;displaylang=en">Internet Explorer Application Compatibility VPC Image</a> where you can download various time-limited images that allow you to test combinations of Windows XP SP3 or Vista, along with Internet Explorer 6.0, 7.0, and the 8.0 betas. In this example, we&#8217;re going to install the IE6/XP image but you can do whatever you need to do.</li>
<li>We&#8217;ll need to unpack this download in Windows, so if you haven&#8217;t already, make sure you&#8217;re doing this part in Windows.</li>
<li>Double-click it (in Windows) to begin unpacking it. It will warn you that it has an expiration date. On that date, we&#8217;ll have to download a fresh VPC image from Microsoft and do this all over again.</li>
</ol>
<h3>Converting the image</h3>
<ol>
<li>You&#8217;ll want to copy the <code>XP SP3 with IE6.vhd</code> file into the Qemu folder. This will allow us to use simpler, more consistent commands to convert the image.</li>
<li>In your Windows VM go to <code>Start Menu &gt; Run</code>, type the <code>cmd</code> command, and click OK.</li>
<li>Using your deftly intimate knowledge of MS-DOS, use commands like <code>cd</code> to navigate to where you unpacked Qemu.</li>
<li>If you don&#8217;t know MS-DOS commands from a hole in the wall, you can download <a href="http://download.microsoft.com/download/whistler/Install/2/WXP/EN-US/CmdHerePowertoySetup.exe">Open Command Window Here</a> from Microsoft, install it, find the Qemu folder in the normal Windows Explorer, right-click, and choose &#8220;Open Command Window Here&#8221;. One method is shorter and harder, while the other is easier and slower. Take your pick.</li>
<li>Type the following command in your MS-DOS window:
<pre>qemu-img.exe convert -f vpc "XP SP3 with IE6.vhd" -O vmdk IE6-XP.vmdk</pre>
<p>Note that &#8220;XP SP3 with IE6.vhd&#8221; is the path to the IE6 VPC file you downloaded, while &#8220;IE6-XP.vmdk&#8221; is the new file that VMWare Fusion will use.</li>
<li>Wait. This will probably take 5-10 minutes.</li>
</ol>
<h3>Configuring the VM</h3>
<ol>
<li>Move the new <code>.vmdk</code> file to your Mac.</li>
<li>Open VMWare Fusion (or shutdown the Windows VM you may already have running) and click <code>File &gt; New</code>.</li>
<li>Go through the wizard and when you get to the &#8220;Virtual Hard Disk&#8221; page, expand &#8220;Advanced disk options&#8221;, check &#8220;Use an existing virtual disk&#8221; and use the dropdown to find the new <code>.vmdk</code> image you just copied back to your Mac.</li>
<li>Finish the wizard and start it! If prompted to upgrade the virtual hard drive, click &#8220;Yes.&#8221;</li>
</ol>
<h3>Installing the drivers and VMWare Tools</h3>
<ol>
<li>With VMWare Fusion running, download and decompress <a href="http://cdn.ryanparman.com/vmware_xpsp3_drivers.tar.gz">vmware_xpsp3_drivers.tar.gz</a>. Copy all of the resulting files to <code>c:\windows\system32\drivers</code>. <em>Make sure you install these BEFORE the VMware tools!</em></li>
<li>Download <a href="http://cdn.ryanparman.com/vmware_mouse.reg">vmware_mouse.reg</a> and double-click it to load its settings into the Windows registry. <em>VMware doesn&#8217;t correctly overwrite these setting upon install of the VMware tools, and the mouse can start doing wonky things. These registry settings fix it.</em></li>
<li>In VMware, click <code>Virtual Machine &gt; Install VMWare Tools</code>.</li>
<li>Follow the instructions. If Windows asks for additional drivers, point it to <code>c:\windows\system32\drivers</code>.</li>
<li>Make sure that you shutdown the VM and configure your memory (etc.) settings appropriately.</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://blog.ryanparman.com/2009/01/07/run-ie6-ie7-ie8-images-vmware-fusion-macosx/feed/</wfw:commentRss>
		<slash:comments>23</slash:comments>
		</item>
		<item>
		<title>Installing FFMPEG and FFMPEG-PHP in Fedora 8 running on Amazon EC2</title>
		<link>http://blog.ryanparman.com/2008/06/28/installing-ffmpeg-php-fedora-amazon-aws/</link>
		<comments>http://blog.ryanparman.com/2008/06/28/installing-ffmpeg-php-fedora-amazon-aws/#comments</comments>
		<pubDate>Sat, 28 Jun 2008 23:56:05 +0000</pubDate>
		<dc:creator>Ryan Parman</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Tutorials]]></category>

		<guid isPermaLink="false">http://blog.ryanparman.com/?p=1633</guid>
		<description><![CDATA[I&#8217;ve spent a bit of time working with Amazon EC2 recently. One of the things I&#8217;ve been working on is getting a stable build of FFMPEG and FFMPEG-PHP running on a Fedora 8 image in Amazon EC2. This is essentially going to be a tutorial to get things up and running. Of course, your milage [...]]]></description>
			<content:encoded><![CDATA[<p class="intro">I&#8217;ve spent a bit of time working with Amazon EC2 recently. One of the things I&#8217;ve been working on is getting a stable build of FFMPEG and FFMPEG-PHP running on a Fedora 8 image in Amazon EC2. This is essentially going to be a tutorial to get things up and running. Of course, your milage may vary.</p>
<p>These instructions apply to a 32-bit Fedora 8 installation. The hardware I primarily use happens to be on EC2, but these instructions aren&#8217;t specific to EC2. You may need to tweak things a smidge for an x64 system.</p>
<h3>Preparing the LAMP stack (and a few other things)</h3>
<p>For FFMPEG-PHP to work, you need to have a web server with PHP support up and running. You&#8217;ll definitely need GD for image processing and mbstring is helpful in conjunction with PHP5&#8242;s built-in iconv support for managing multiple character sets in ID3 tags.</p>
<ol>
<li>Install PHP, necessary extensions and supporting software.
<pre>yum -y install php-devel php-gd php-mbstring gcc gcc-c++ libtool svn git yasm gsm-devel libogg-devel libvorbis-devel libtheora-devel;</pre>
</li>
<li>Also, I like to create a directory with symlinks to important files so that I can access everything more efficiently. These will be used throughout this tutorial.
<pre>mkdir /www-config; \
ln -s /etc/init.d/httpd /www-config/httpd; \
ln -s /etc/httpd/conf/httpd.conf /www-config/httpd.conf; \
ln -s /var/log/httpd/ /www-config/logs; \
ln -s /usr/lib/php/modules/ /www-config/php5-extensions; \
ln -s /etc/httpd/conf.d/php.conf /www-config/php.conf; \
ln -s /etc/httpd/conf.d/ /www-config/apache-conf; \
ln -s /etc/php.ini /www-config/php.ini; \
ln -s /etc/php.d/ /www-config/php-ini; \
ln -s /var/www/html/ /www-config/public-html; \
/www-config/httpd restart;</pre>
</li>
</ol>
<p>PHP 5.x should now be installed and you should have a directory prepared that lets you easily access important files for managing your configuration.</p>
<h3>Installing FFMPEG</h3>
<p>FFMPEG can be fairly complicated to get running properly, so here&#8217;s what I&#8217;ve gotten working thus far.</p>
<ol>
<li><strong>Download FFMPEG source.</strong> Export the latest FFMPEG trunk from Subversion, then change to the source directory.
<pre>svn export svn://svn.mplayerhq.hu/ffmpeg/trunk /ffmpeg-trunk-source; \
cd /ffmpeg-trunk-source;</pre>
</li>
<li><strong>Install <a href="http://www.videolan.org/developers/x264.html">x264</a>.</strong> Export the latest x264 trunk from Git. Enter the directory, make, install, and go back to the parent directory.
<pre>git clone git://git.videolan.org/x264.git; \
cd x264; \
./configure --prefix=/usr --enable-shared --enable-pthread; \
make; \
make install; \
cd ..;</pre>
</li>
<li><strong>Install <a href="http://liba52.sourceforge.net/">liba52</a>.</strong> Download the latest version of liba52 (Currently 0.7.4). Decompress the package, enter the directory, run configure, make, install, and go back to the parent directory.
<pre>wget http://liba52.sourceforge.net/files/a52dec-0.7.4.tar.gz; \
tar -zxvf a52dec-0.7.4.tar.gz; \
cd a52dec-0.7.4; \
./configure --prefix=/usr --enable-double; \
make; \
make install; \
cd ..;</pre>
</li>
<li><strong>Install <a href="http://www.audiocoding.com/">FAAC</a>.</strong> Download the latest version of FAAC (Currently 1.26). Decompress the package, enter the directory, create the configure file, run configure, make, install, and go back to the parent directory.
<pre>wget http://downloads.sourceforge.net/faac/faac-1.26.tar.gz; \
tar -zxvf faac-1.26.tar.gz; \
cd faac; \
autoreconf -vif; \
./configure --prefix=/usr; \
make; \
make install; \
cd ..;</pre>
</li>
<li><strong>Install <a href="http://www.audiocoding.com/">FAAD</a>.</strong> Download the latest version of FAAD (Currently 2.6.1). Decompress the package, enter the directory, create the configure file, run configure, make, install, and go back to the parent directory.
<pre>wget http://downloads.sourceforge.net/faac/faad2-2.6.1.tar.gz; \
tar -zxvf faad2-2.6.1.tar.gz; \
cd faad2; \
autoreconf -vif; \
./configure --prefix=/usr; \
make; \
make install; \
cd ..;</pre>
</li>
<li><strong>Install <a href="http://lame.sourceforge.net/">LAME</a>.</strong> Download the latest version of LAME (Currently 3.98b8). Decompress the package, enter the directory, run configure, make, install, and go back to the parent directory.
<pre>wget http://downloads.sourceforge.net/lame/lame-3.98b8.tar.gz; \
tar -zxvf lame-3.98b8.tar.gz; \
cd lame-3.98b8; \
./configure --prefix=/usr; \
make; \
make install; \
cd ..;</pre>
</li>
<li><strong>Install <a href="http://libmpeg2.sourceforge.net/">libmpeg2</a>.</strong> Download the latest version of libmpeg2 (Currently 0.4.1). Decompress the package, enter the directory, run configure, make, install, and go back to the parent directory.
<pre>wget http://libmpeg2.sourceforge.net/files/mpeg2dec-0.4.1.tar.gz; \
tar -zxvf mpeg2dec-0.4.1.tar.gz; \
cd mpeg2dec-0.4.1; \
./configure --prefix=/usr; \
make; \
make install; \
cd ..;</pre>
</li>
<li><strong>Install <a href="http://xvid.org/">Xvid</a>.</strong> Download the latest version of Xvid (Currently 1.1.3). Decompress the package, enter the directory, run configure, make, install, and go back to the parent directory.
<pre>wget http://downloads.xvid.org/downloads/xvidcore-1.1.3.tar.gz; \
tar -zxvf xvidcore-1.1.3.tar.gz; \
cd xvidcore-1.1.3/build/generic; \
./configure --prefix=/usr; \
make; \
make install; \
cd ../../../;</pre>
</li>
<li><strong>Install <a href="http://www.penguin.cz/~utx/amr">AMR/3GPP</a>.</strong> Download the latest version of AMR (Currently 7.0.0.1). Decompress the package, enter the directory, run configure, make, install, and go back to the parent directory.
<pre>wget http://ftp.penguin.cz/pub/users/utx/amr/amrnb-7.0.0.1.tar.bz2; \
tar -jxvf amrnb-7.0.0.1.tar.bz2; \
cd amrnb-7.0.0.1; \
./configure --prefix=/usr; \
make; \
make install; \
cd ../;</pre>
</li>
<li><strong>Compile FFMPEG.</strong> Configure, make, and install the software, including all options that enable enhanced functionality.
<pre>./configure --prefix=/usr --enable-static --enable-shared --enable-gpl --enable-nonfree --enable-postproc --enable-avfilter --enable-avfilter-lavf --enable-liba52 --enable-liba52bin --enable-libamr-nb --enable-libfaac --enable-libfaad --enable-libfaadbin --enable-libgsm --enable-libmp3lame --enable-libtheora --enable-libvorbis --enable-libx264 --enable-libxvid; \
make; make install;</pre>
</li>
</ol>
<h3>Installing FFMPEG-PHP</h3>
<p>Once you have FFMPEG functioning properly, you can install the FFMPEG-PHP extension.</p>
<ol>
<li>Download and install FFMPEG-PHP source. Enter the directory, download the source, run phpize, configure, make, install, and go back to the parent directory.
<pre>cd /ffmpeg-trunk-source; \
wget http://downloads.sourceforge.net/ffmpeg-php/ffmpeg-php-0.5.3.1.tbz2; \
tar -jxvf ffmpeg-php-0.5.3.1.tbz2; \
cd ffmpeg-php-0.5.3.1; \
phpize; \
./configure --prefix=/usr; \
make; \
make install; \
cd ..;</pre>
</li>
<li>Add FFMPEG-PHP to the PHP configuration.
<pre>echo "extension=ffmpeg.so" > /www-config/php-ini/ffmpeg.ini</pre>
</li>
<li>Restart Apache.
<pre>/www-config/httpd restart</pre>
</li>
</ol>
<h3>All done!</h3>
<p>FFMPEG and FFMPEG-PHP should now be installed and ready to go. Make sure to check your error log if something isn&#8217;t working properly.
<pre>cat /www-config/logs/error_log</pre>
]]></content:encoded>
			<wfw:commentRss>http://blog.ryanparman.com/2008/06/28/installing-ffmpeg-php-fedora-amazon-aws/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>The proper way to blow your nose</title>
		<link>http://blog.ryanparman.com/2006/04/22/the-proper-way-to-blow-your-nose/</link>
		<comments>http://blog.ryanparman.com/2006/04/22/the-proper-way-to-blow-your-nose/#comments</comments>
		<pubDate>Sun, 23 Apr 2006 00:34:42 +0000</pubDate>
		<dc:creator>Ryan Parman</dc:creator>
				<category><![CDATA[Tutorials]]></category>

		<guid isPermaLink="false">http://blog.skyzyx.com/2006/04/22/the-proper-way-to-blow-your-nose/</guid>
		<description><![CDATA[I&#8217;ve had a head cold for the last 3 days (which is why some of you haven&#8217;t seen me online), and in that time I&#8217;ve gone through 5 rolls of toilet paper due to blowing my nose. I&#8217;ve tried various medicines, and although Sudafed was able to slow the drip, I&#8217;ve been blowing my nose [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve had a head cold for the last 3 days (which is why some of you haven&#8217;t seen me online), and in that time I&#8217;ve gone through 5 rolls of toilet paper due to blowing my nose.  I&#8217;ve tried various medicines, and although Sudafed was able to slow the drip, I&#8217;ve been blowing my nose almost constantly.</p>
<p>For those who are concerned about efficiency in all things (as I am), I believe I&#8217;ve found the most efficient way to get the snot as far away from your sinuses as possible.</p>
<ol>
<li>Take the roll of toilet paper and wrap it around your hand 2 or 3 times.  This is really all you need per blow.</li>
<li>As you cover your nose with the toilet paper, plug one of your nostrils to ensure that maximum airflow is being forced through the other nostril, ensuring that the greatest amount of snot is removed.</li>
<li>Do the same to the other nostril.  Repeat as necessary.</li>
<li>Once you&#8217;re through blowing, you still have bits of snot that cling to your nose hair.   We&#8217;ll want to clean these out as well.</li>
<li>Take one perforated square of the toilet paper and cram the whole thing into your nostril.  Make sure that there is enough sticking out for you to grab.  Once it&#8217;s in there, twist the toilet paper in a circular fashion.  Give it a minimum of 4-5 rotations before pulling it back out.</li>
<li>Do the same to the other nostril.  Repeat as necessary.</li>
<li>You&#8217;re done!</li>
</ol>
<p>In my experience, this is the most effective way to get all of your snot out.  It&#8217;s also safe to use this method without following up with a mirror to make sure that there is no snot clinging to your nose hair because the follow-up twisting is nice and tidy.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.ryanparman.com/2006/04/22/the-proper-way-to-blow-your-nose/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using disk: basic
Page Caching using disk: enhanced
Database Caching 1/58 queries in 1.206 seconds using disk: basic
Object Caching 553/667 objects using disk: basic
Content Delivery Network via Amazon Web Services: S3: blog.ryanparman.com.s3.amazonaws.com

Served from: blog.ryanparman.com @ 2012-02-04 17:44:24 -->
