<?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>Devolblog &#187; General</title>
	<atom:link href="http://devolblog.devolfamily.com/category/general/feed/" rel="self" type="application/rss+xml" />
	<link>http://devolblog.devolfamily.com</link>
	<description>The sole purpose for Devolblog is to be a central location for me to record things to help my failing memory.  A lot of this won't be of any interest to anybody else, but if you do find something please leave me a comment so that I know.</description>
	<lastBuildDate>Wed, 01 Feb 2012 05:36:34 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<item>
		<title>My favorite lolz pics</title>
		<link>http://devolblog.devolfamily.com/my-favorite-lolz-pics/</link>
		<comments>http://devolblog.devolfamily.com/my-favorite-lolz-pics/#comments</comments>
		<pubDate>Fri, 26 Aug 2011 18:57:30 +0000</pubDate>
		<dc:creator>Scott</dc:creator>
				<category><![CDATA[Distraction]]></category>
		<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://devolblog.devolfamily.com/?p=1497</guid>
		<description><![CDATA[Gallery of my favorite lolz.]]></description>
			<content:encoded><![CDATA[
<a href='http://devolblog.devolfamily.com/my-favorite-lolz-pics/1-2/' title='Vader&#039;s Girlfriend'><img width="96" height="160" src="http://devolblog.devolfamily.com/wordpress/wp-content/uploads/2011/08/1-96x160.jpg" class="attachment-thumbnail" alt="Vader&#039;s Girlfriend" title="Vader&#039;s Girlfriend" /></a>
<a href='http://devolblog.devolfamily.com/my-favorite-lolz-pics/fyzqt/' title='The Fast and the ...'><img width="77" height="160" src="http://devolblog.devolfamily.com/wordpress/wp-content/uploads/2011/08/FYZqt-77x160.jpg" class="attachment-thumbnail" alt="The Fast and the ..." title="The Fast and the ..." /></a>
<a href='http://devolblog.devolfamily.com/my-favorite-lolz-pics/xpkt6/' title='Serious'><img width="160" height="114" src="http://devolblog.devolfamily.com/wordpress/wp-content/uploads/2011/08/xPKT6-160x114.jpg" class="attachment-thumbnail" alt="Serious" title="Serious" /></a>
<a href='http://devolblog.devolfamily.com/my-favorite-lolz-pics/mgw87/' title='Okay'><img width="160" height="105" src="http://devolblog.devolfamily.com/wordpress/wp-content/uploads/2011/08/mGw87-160x105.jpg" class="attachment-thumbnail" alt="Okay" title="Okay" /></a>
<a href='http://devolblog.devolfamily.com/my-favorite-lolz-pics/e3b9m/' title='Facebook'><img width="160" height="112" src="http://devolblog.devolfamily.com/wordpress/wp-content/uploads/2011/08/e3b9M-160x112.png" class="attachment-thumbnail" alt="Facebook" title="Facebook" /></a>
<a href='http://devolblog.devolfamily.com/my-favorite-lolz-pics/red-foreman-logic/' title='Dumbass'><img width="160" height="120" src="http://devolblog.devolfamily.com/wordpress/wp-content/uploads/2011/08/red-foreman-logic-160x120.jpg" class="attachment-thumbnail" alt="Dumbass" title="Dumbass" /></a>
<a href='http://devolblog.devolfamily.com/my-favorite-lolz-pics/ekcjq/' title='Bear'><img width="160" height="139" src="http://devolblog.devolfamily.com/wordpress/wp-content/uploads/2011/08/EKcjQ-160x139.jpg" class="attachment-thumbnail" alt="Bear" title="Bear" /></a>

]]></content:encoded>
			<wfw:commentRss>http://devolblog.devolfamily.com/my-favorite-lolz-pics/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mercedes-Benz &#8220;Decisions&#8221; Commercial</title>
		<link>http://devolblog.devolfamily.com/mercedes-benz-decisions-commercial/</link>
		<comments>http://devolblog.devolfamily.com/mercedes-benz-decisions-commercial/#comments</comments>
		<pubDate>Mon, 11 Apr 2011 20:05:07 +0000</pubDate>
		<dc:creator>Scott</dc:creator>
				<category><![CDATA[Cars]]></category>
		<category><![CDATA[Featured]]></category>
		<category><![CDATA[Formula 1]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Movies]]></category>

		<guid isPermaLink="false">http://devolblog.devolfamily.com/?p=1467</guid>
		<description><![CDATA[Mercedes-Benz commercial with Nico Rosberg and Michael Schumacher.]]></description>
			<content:encoded><![CDATA[<p>Awesome new Mercedes-Benz commercial with Nico Rosberg, Michael Schumacher and a pregnant woman.<br />
<span id="more-1467"></span><br />
<object classid="clsid:02bf25d5-8c17-4b23-bc80-d3488abddc6b" width="480" height="286" codebase="http://www.apple.com/qtactivex/qtplugin.cab#version=6,0,2,0"><param name="src" value="http://devolblog.devolfamily.com/wordpress/wp-content/uploads/2011/04/Mercedes-Benz-_Decisions_-Commercial.mp4" /><embed type="video/quicktime" width="480" height="286" src="http://devolblog.devolfamily.com/wordpress/wp-content/uploads/2011/04/Mercedes-Benz-_Decisions_-Commercial.mp4" scale="aspect"></embed></object><br />
[ download: <a href="http://devolblog.devolfamily.com/wordpress/wp-content/uploads/2011/04/Mercedes-Benz-_Decisions_-Commercial.mp4">Mercedes-Benz &quot;Decisions&quot; 720p</a> ]</p>
]]></content:encoded>
			<wfw:commentRss>http://devolblog.devolfamily.com/mercedes-benz-decisions-commercial/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="http://devolblog.devolfamily.com/wordpress/wp-content/uploads/2011/04/Mercedes-Benz-_Decisions_-Commercial.mp4" length="12023762" type="video/mp4" />
		</item>
		<item>
		<title>XBMC Live 10 on Acer Revo 1600</title>
		<link>http://devolblog.devolfamily.com/xbmc-live-10-on-acer-revo-1600/</link>
		<comments>http://devolblog.devolfamily.com/xbmc-live-10-on-acer-revo-1600/#comments</comments>
		<pubDate>Sun, 27 Mar 2011 04:02:54 +0000</pubDate>
		<dc:creator>Scott</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Tech]]></category>

		<guid isPermaLink="false">http://devolblog.devolfamily.com/?p=1430</guid>
		<description><![CDATA[Notes for XBMC on an Acer1600; updated with each release.]]></description>
			<content:encoded><![CDATA[<p><img src="http://devolblog.devolfamily.com/wordpress/wp-content/uploads/2011/03/home_screenshot001_large.jpg" alt="" title="home_screenshot001_large" width="450" height="253" class="alignleft size-full wp-image-1454" /></p>
<p>I did a fresh install of Live 10.1 yesterday and ran into some differences between my configuration steps as detailed for 9.11.  Again, this information is well documented in the forums but not collected in a single place.</p>
<p><strong>I. Install XBMC Live to Revo HDD</strong></p>
<ol>
<li>Download <a href="http://xbmc.org/download/">XBMC Live</a>.</li>
<li>Download <a href="http://unetbootin.sourceforge.net/">unetbootin</a>. The Mac version didn&#8217;t work for me so I had to run it under a Windows VM.</li>
<li>Plug in your USB drive and format it FAT32.</li>
<li>Launch unetbootin, select the XMBC Live iso and select the drive letter of your USB key and then let unetbootin do it&#8217;s thing.</li>
<li>Plug the USB key into your Revo, turn it on and hit F12 for the boot menu and select your USB key.<br />
<code>[Note: the guide has you create a file for permanent storage. This is <strong>only</strong> necessary if you want to run XBMC Live directly from the USB key. If you're installing to HDD then it's pointless.]</code></li>
<li>At the XBMC Live boot menu select the Install to HDD option. You&#8217;ll then see the normal ubuntu command line installer and it&#8217;ll walk you through partitioning the drive, etc.</li>
<li>Remove the USB key, reboot per the installer and make sure XMBC loads.</li>
</ol>
<p><strong>II. Audio over HDMI</strong></p>
<ol>
<li><code>[Note: this is very dependent on how and what you're hooking your Revo up to. Both guides fail to mention that the audio config they give you only works when connecting directly to screen and only outputs stereo. Wich should be obvious from 'Downmix multichannel audio to stereo - ON', but still, who wants stereo?!?]</code></li>
<li>Set Audio Output to Digital.</li>
<li>AC3:on</li>
<li>DTS:on</li>
<li>Alt+F2 to bring up a terminal, and login.</li>
<li>aplay -l and note the HDMI device; it should be card 0 device 3.</li>
<li>Set Audio Output Device to Custom and enter plughw:0,3.</li>
<li>Set Passthrough Output Device to Custom and enter plughw:0,3.</li>
<li>[ At this point you still won't have multichannel audio over HDMI on XBMC Live 10; see section III below ]</li>
<li>And of course, if you want menu sounds create /home/xbmc/.asoundrc and put:<br />
pcm.!default {<br />
type plug<br />
slave {<br />
pcm &#8220;hdmi&#8221;<br />
}<br />
}<br />
in it.</li>
</ol>
<p><strong>III. Install Nvidia drivers [solve no AC3/DTS over HDMI]</strong></p>
<ol>
<li>Just like 9.11 the Nivida drivers that ship need to be updated.  Even with the previous settings of &#8216;Custom plughw:0,3&#8242; I wasn&#8217;t able to get any audio over HDMI until I updated the Nvidia drivers.<br />
Original forum post <a href="http://forum.xbmc.org/showthread.php?t=87986">here</a>.</li>
<li>Alt+F2 to get command prompt, or SSH.	</li>
<li>sudo add-apt-repository ppa:ubuntu-x-swat/x-updates</li>
<li>sudo apt-get update</li>
<li>sudo apt-get install nvidia-current nvidia-current-modaliases nvidia-settings</li>
<li>[ The following might be optional, I haven't tested yet. ]</li>
<li>sudo wget http://pastebin.com/download.php?i=f5f9654bb -O /etc/asound.conf</li>
<li>sudo wget http://pastebin.com/download.php?i=f2e38265 -O /usr/share/alsa/cards/HDA-Intel.conf</li>
</ol>
<p><strong>IV. Password protected Samba share to transfer files to XMBC Live</strong></p>
<ol>
<li>sudo apt-get install samba</li>
<li>sudo nano /etc/samba/smb.conf</li>
<li>sudo smbpasswd -a [username]. Unlike in the Windows world where the shares use a local account for authentication, samba maintains it&#8217;s own user db. I&#8217;m sure somebody smarter than me knows how to get samba to look at linux local accounts, but for my purposes simply mirroring the user/pass of the local account in samba works.</li>
<li>The tail of my smb.conf file, sharing out two password protected directories.<br />
<code>[XBMC Aeon Backdrops]<br />
path = "/home/xbmc/Aeon Backdrops"</p>
<p>security = user [shared_folder]<br />
public = no<br />
read only = no<br />
guest ok = no<br />
writeable = yes<br />
printable = no<br />
create mask = 0755<br />
force create mode = 0755<br />
directory mask = 0775<br />
force directory mode = 0775</code></li>
</ol>
<p><strong>V. Wake-on-device (resume via remote)</strong></p>
<ol>
<li><code><a href="http://wiki.xbmc.org/?title=Enable_Wake-On-Device">Original xbmc wiki page</a></code></li>
<li>Alt+F2 to get command prompt, or SSH.	</li>
<li>sudo cat /proc/acpi/wakeup | grep USB</li>
<li>You should see lines:<br />
USB0	  S3	 disabled   pci:0000:00:04.0<br />
USB2	  S3	 disabled  pci:0000:00:04.1
</li>
<li>sudo echo USBx > /proc/acpi/wakeup</li>
<li><code>My IR receiver is plugged into USB0</code></li>
<li>sudo nano /etc/default/grub</li>
<li>Find GRUB_CMDLINE_LINUX_DEFAULT=&#8221;</li>
<li>Add usbcore.autosuspend=-1 acpi_enforce_resources=lax at the end of the line inside the quotes.</li>
<li>e.g. <code>GRUB_CMDLINE_LINUX_DEFAULT="quiet splash xbmc=autostart,nodiskmount loglevel=0 video=vesafb <strong><em>usbcore.autosuspend=-1 acpi_enforce_resources=lax</em></strong>"</code></li>
<li>sudo update-grub</li>
<li>Now if you cat /proc/acpi/wakeup, you should see &#8216;USBx S3 enabled&#8217;.</li>
<li>sudo nano /etc/rc.local</li>
<li>Add &#8216;echo USBx > /proc/acpi/wakeup&#8217; before &#8216;exit 0&#8242; to run at boot.</li>
</ol>
<p><strong>VI. Wake-on-boot for ethernet connection</strong></p>
<ol>
<li><code><a href="http://wiki.xbmc.org/index.php?title=HOW-TO_set_up_Wake-On-Lan_(Ubuntu)">Original xbmc wiki page</a></code></li>
<li>Install ethtool and wol</li>
<li>sudo apt-get install ethtool wakeonlan</li>
<li>Instead of using init.d scripts as per the wiki, I use the following.</li>
<li>sudo nano /etc/network/interfaces</li>
<li>Add the following to eth0:<br />
post-up /usr/sbin/ethtool -s eth0 wol g<br />
post-down /usr/sbin/ethtool -s eth0 wol g</li>
<li>restart networking</li>
<li>sudo ethtool eth0</li>
<li>Find:<br />
	Supports Wake-on: g<br />
	Wake-on: g</li>
<li>&#8216;g&#8217; indicates that eth0 is accepting magic packet for wol.</li>
</ol>
<p><strong>VII. Speed up fanart and thumbnails using DDS</strong></p>
<ol>
<li>XBMC 10 automatically generates the dds files now so no more messing with conversion scripts; what I couldn&#8217;t find was confirmation if it no longer needs to be activated via advancedsettings.</li>
<li>nano /home/xbmc/.xbmc/userdata/advancedsettings.xml</li>
<li>Add &#8216;<useddsfanart>true</useddsfanart>&#8216; between the advancedsettings tags.</li>
<li>The first time you browse your library it will be slow as it converts to dds.  After that scrolling should be smooth and fanart should load noticeably faster.</li>
</ol>
<p><strong>VIII. Install Aeon MQ 2 repo and skin</strong></p>
<ol>
<li>MQ 2 is the continuation of AEON with some new design updates and the ability to enable/disable view types to speed loading times. You can either download the skin and install it, or install the repo and use it to download and install the skin; I believe having the repo allows for automatic updating.</li>
<li>Download Aeon MQ 2 repo from <a href="http://www.marcosqui.com.br/downloads_english.html">MarcosQui&#8217;s site</a></li>
<li>scp the zip file to xbmc home directory:<br />
scp xbmc.repo.aeonmq.2.zip xbmc@<xbmclive hostname>:/home/xbmc/</li>
<li>In XBMC go to Add-Ons and Install From Zip</li>
<li>Choose the xbmc.repo.aeonmq2.zip file and Install</li>
<li>After install go back to Get Add-Ons > Repo Aeon MQ > Skin and select Install</li>
<li><code>Updating manually, Dharma can't install a skin over a skin. If you're currently using MQ 2, switch to a different skin before installing the newer version.</code></li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://devolblog.devolfamily.com/xbmc-live-10-on-acer-revo-1600/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Use MySQL for XBMC library [repost from Lifehacker]</title>
		<link>http://devolblog.devolfamily.com/repost-from-lifehacker-use-mysql-for-xbmc-library/</link>
		<comments>http://devolblog.devolfamily.com/repost-from-lifehacker-use-mysql-for-xbmc-library/#comments</comments>
		<pubDate>Mon, 01 Nov 2010 21:10:35 +0000</pubDate>
		<dc:creator>Scott</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Movies]]></category>
		<category><![CDATA[Tech]]></category>

		<guid isPermaLink="false">http://devolblog.devolfamily.com/?p=1394</guid>
		<description><![CDATA[Use MySQL to sync all your XBMCs.]]></description>
			<content:encoded><![CDATA[<p><img src="http://devolblog.devolfamily.com/wordpress/wp-content/uploads/2010/11/How-to-Synchronize-Your-XBMC-Media-Center-Between-Every-Room-in-the-House-300x189.jpg" alt="" title="How to Synchronize Your XBMC Media Center Between Every Room in the House" width="240" class="alignleft size-medium wp-image-1395" />This is a repost of the article, <a href="http://lifehacker.com/5634515/how-to-synchronize-your-xbmc-media-center-across-every-room-in-the-house">How to Synchronize Your XBMC Media Center Between Every Room in the House</a>, at <a href="http://lifehacker.com">Lifehacker</a>.  The functionality is dead simple, I just wasn&#8217;t aware that it existed.  The advantages of keeping a central library for all of the xbmc boxes in your home should seem obvious; however take a moment to think about the design implications.</p>
<p>So, obviously, for this to work you have to have a central server box in your home network that will be on 24/7.  On that box, you&#8217;ll need to install MySQL.  I&#8217;m not going to replicate any of the details of that from the post because I know that I know how to do that.  And since I&#8217;m my audience &#8230; </p>
<p>Next create a new db for xbmc and create/assign a user.  </p>
<ul>
<li>CREATE USER &#8216;xbmc&#8217; IDENTIFIED BY &#8216;xbmc&#8217;;</li>
<li>CREATE database xbmc_video;</li>
<li>CREATE database xbmc_music;</li>
<li>GRANT ALL ON &#8216;xbmc_%&#8217;.* TO &#8216;xbmc&#8217;;</li>
</ul>
<p>The <a href="http://lifehacker.com">Lifehacker</a> author assumes that you only have MySQL running for this purpose and tells you to use grant all on * to xbmc.  Not the best choice if you also have MySQL for other things.  MySQL has additional security options if you&#8217;re so inclined.  </p>
<p>Now that you&#8217;ve got the db setup, export the current XBMC Video and Music libraries.  Once you&#8217;ve got the export, simply modify advancedsettings.xml ( ~/.xbmc/userdata ) and look for the videodatabase and musicdatabase sections.  Should be pretty obvious from the tags below what you need to do.<br />
<code><br />
  &lt;videodatabase&gt;<br />
 &nbsp;&nbsp;&nbsp;&lt;type&gt;mysql&lt;/type&gt;<br />
 &nbsp;&nbsp;&nbsp;&lt;host&gt;***.***.***.***&lt;/host&gt;<br />
 &nbsp;&nbsp;&nbsp;&lt;port&gt;3306&lt;/port&gt;<br />
 &nbsp;&nbsp;&nbsp;&lt;user&gt;xbmc&lt;/user&gt;<br />
 &nbsp;&nbsp;&nbsp;&lt;pass&gt;xbmc&lt;/pass&gt;<br />
 &nbsp;&nbsp;&nbsp;&lt;name&gt;xbmc_video&lt;/name&gt;<br />
    &lt;/videodatabase&gt; </p>
<p>    &lt;musicdatabase&gt;<br />
&nbsp;&nbsp;&nbsp;&lt;type&gt;mysql&lt;/type&gt;<br />
&nbsp;&nbsp;&nbsp;&lt;host&gt;***.***.***.***&lt;/host&gt;<br />
&nbsp;&nbsp;&nbsp;&lt;port&gt;3306&lt;/port&gt;<br />
&nbsp;&nbsp;&nbsp;&lt;user&gt;xbmc&lt;/user&gt;<br />
&nbsp;&nbsp;&nbsp;&lt;pass&gt;xbmc&lt;/pass&gt;<br />
&nbsp;&nbsp;&nbsp;&lt;name&gt;xbmc_music&lt;/name&gt;<br />
    &lt;/musicdatabase&gt;<br />
</code><br />
The use of IPs is dumb, I didn&#8217;t look too hard, but as long as DNS is working (or a local hosts file) I don&#8217;t see why you can&#8217;t use a hostname instead.  Unfortunately, I&#8217;m pretty sure changes to advancedsettings requires a reboot; after that, import your old library and it should write it to the db.  </p>
<p>I don&#8217;t actually want all xbmc boxes to use the same library.  I envision my downstairs wi-fi connected xbmc to be primarily for kids movies and have challenges streaming HD so it&#8217;ll be using local storage.  But my server running MySQL has three different backup strategies running (I&#8217;m paranoid about my digital pictures) so I plan to use this method to always have a backup of my xbmc libraries.  The video library easily recreates itself, it&#8217;s the music library that&#8217;s a pain if I lose it.</p>
]]></content:encoded>
			<wfw:commentRss>http://devolblog.devolfamily.com/repost-from-lifehacker-use-mysql-for-xbmc-library/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Game review; Mass Effect 2.  (or how bioware turned me into an intergalactic strip miner)</title>
		<link>http://devolblog.devolfamily.com/game-review-mass-effect-2-or-how-bioware-turned-me-into-an-intergalactic-strip-miner/</link>
		<comments>http://devolblog.devolfamily.com/game-review-mass-effect-2-or-how-bioware-turned-me-into-an-intergalactic-strip-miner/#comments</comments>
		<pubDate>Tue, 02 Feb 2010 20:48:57 +0000</pubDate>
		<dc:creator>Scott</dc:creator>
				<category><![CDATA[Featured]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Video Games]]></category>

		<guid isPermaLink="false">http://devolblog.devolfamily.com/?p=1336</guid>
		<description><![CDATA[Review of Mass Effect 2]]></description>
			<content:encoded><![CDATA[<p><img src="http://devolblog.devolfamily.com/wordpress/wp-content/uploads/2010/02/me2-box.jpg" alt="me2-box" title="me2-box" width="240" height="340" class="alignleft size-full wp-image-1341" /><code><strong>There will be spoilers.</strong></code></p>
<p>I&#8217;ll start off by stating I think the game is fairly good.  Great?  No.  Worth $60 (plus tax)?  Err &#8230; possibly.  Game of the year?  If EA and Bioware pony up more toys to game reviewers than Microsoft does when Halo: Reach comes out, probably.  (GT5 would get &#8216;game of the year&#8217; by default for finally releasing &#8230; but it won&#8217;t &#8230; so, no worries there.)</p>
<p>The bulk of my frustration is that I can see where this, could&#8217;ve been a truly <em>great</em> game instead of a mediocre game cloaked in a shroud of game reviewer hype declaring it a great game.  It&#8217;s the same frustration I&#8217;ve had with Bioware games since KOTOR (although I have fond memories of KOTOR that would likely be dashed if I played it now); they focus too much on the voice acting and leave the quest and level design to rot.  I have to say though, for the NPC specific missions they did some work on level design.  But once you&#8217;re in it, just the same one-track corridor with random crates / barriers to hide behind.  It feels, and is, forced.  Same with the enemies.  You get the same basic set of things to shoot at, dressed in different textures.  Some of the side quests are unique, but unfortunately few are epic.  I&#8217;d like to see a lot less go-here-do-this quests and more unique investigate-explore epic sideline quests to keep the game interesting.  I know the idea is to keep the player engaged so that they don&#8217;t notice that the main plot line of the game only lasts four hours, but would it be that difficult to have two or three arching quests, in addition to the main plot, instead of a bunch of &#8216;fedex&#8217; quests? </p>
<p>My next frustration: the mini-game.  Come on, this isn&#8217;t 1997 anymore.  The mini-game-as-in-game-action is the &#8216;Who Let The Dogs Out&#8217; of video games.  The first time you have to pick the matching code sequence to hack a PDA, or match the symbols to bypass a security door, or move the scanner around to find the minerals on the planet isn&#8217;t so bad.  By the fifteenth, sixteenth time, its old and wearying.  By the middle of the game you quit bothering unless you absolutely have to.  This kind of stuff is just crap, and I want to know which experienced game producer decided it was a good idea.  Sure it pads the &#8216;game experience&#8217; but it&#8217;s just awful.  It&#8217;s damn close to ending a story with, &#8216;he woke and it discovered it had all been a dream.&#8217;  I mean really?!?  You couldn&#8217;t have come up with something a little more engaging to the player?    </p>
<p>The only part I found even the least bit satisfying was starting a scan of a planet (a tedious operation where you move the &#8216;scanner&#8217; around on screen via the joystick and watch a line graph move / feel the controller vibrate when it registers minerals for you to then launch a probe &#8230; how a probe is physically able to mine, process, refine and deliver the minerals to your ship I&#8217;m not quite sure.) registering Rich and then leaving it Depleted when I was done.  Intergalactic strip mining FTW!  Is it a clever stab at greenies?  Is it just stupid?  Take your pick I guess.</p>
<p>I&#8217;m glad the little rover (that wasn&#8217;t physically big enough to fit three characters inside) missions are gone.  But did you have to replace them with a shuttle that looks like a retarded dog trying to lay down when it lands?  </p>
<p>Being that I like dungeon crawl loot collecting games I was a bit disappointed that there aren&#8217;t many new items to discover in ME2.  Instead they replaced the inventory system with upgrades.  I appreciate what they were trying to do, adventure games do tend to get tedious when you&#8217;re managing NPC inventories.  Having NPCs manage their own inventories and the player being responsible for their own would&#8217;ve been more satisfying instead of having item collecting ripped out.  Tediously mining resources in a mini-game so that I can afford to upgrade doesn&#8217;t seem like it adds much value, instead trading one time sink for another.</p>
<p>So what <strong>do</strong> I like about ME 2?  I like that the conversation dialog isn&#8217;t as tedious as Dragon Age.  I like the universe they&#8217;ve created.  I like that I have a different game besides Modern Warfare 2 to play.</p>
]]></content:encoded>
			<wfw:commentRss>http://devolblog.devolfamily.com/game-review-mass-effect-2-or-how-bioware-turned-me-into-an-intergalactic-strip-miner/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[archived] GPU accelerated fanart for XBMC (Live/Ubuntu).</title>
		<link>http://devolblog.devolfamily.com/gpu-accelerated-fanart-for-xbmc-liveubuntu/</link>
		<comments>http://devolblog.devolfamily.com/gpu-accelerated-fanart-for-xbmc-liveubuntu/#comments</comments>
		<pubDate>Tue, 26 Jan 2010 21:18:14 +0000</pubDate>
		<dc:creator>Scott</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Tech]]></category>
		<category><![CDATA[xbmc]]></category>

		<guid isPermaLink="false">http://devolblog.devolfamily.com/?p=1304</guid>
		<description><![CDATA[[deprecated] GPU acceleration for fanart ]]></description>
			<content:encoded><![CDATA[<p><a href="http://xbmc.org"><img class="alignleft size-full wp-image-1303" title="xbmc" src="http://devolblog.devolfamily.com/wordpress/wp-content/uploads/2010/01/xbmc.gif" alt="xbmc" width="209" height="85" /></a><strong>[  <code><span style="color: #993300;">Information in this post is completely outdated.  The best thing to do is install Dharma from source or wait for next release.</span></code> ]</strong></p>
<p>Update 2-12 See bottom of post for instructions on how to enabled gpu acceleration of thumbnails as well as fanart.</p>
<p>Replication of this <a href="http://xbmc.org/forum/showpost.php?p=492522&amp;postcount=66">tutorial</a> for having the gpu render fanart images on xmbc live/ubuntu just in case it goes away. This is experimental at the moment and has some drawbacks for every day use, but will show an improvement in scroll speed in the gui as its handing off loading fanart images to the gpu; very handy for low power atom/ion computers.</p>
<p>To enable dds fanart in xbmc, create an advancedsettings.xml file in your userdata directory. If using XBMC Live, this will be ~/.xbmc/userdata. Edit advancedsettings.xml and add:</p>
<p><code>&lt;advancedsettings&gt;<br />
&lt;useddsfanart&gt;true&lt;/useddsfanart&gt;<br />
&lt;/advancedsettings&gt;</code></p>
<p>I believe you&#8217;ll need to reboot/restart xbmc for this to take effect.</p>
<p><strong>Cons:</strong></p>
<ol>
<li>The .dds images are <del datetime="2010-01-27T19:22:50+00:00">much larger than the jpg compressed tbn files, e.g. 10MB vs 1.4MB</del> a bit larger than the jpg.  I went back and looked and most were only about 1/3 bigger than the original. <del datetime="2010-01-27T19:22:50+00:00">So obviously this isn&#8217;t going to work so hot</del> Might be a deal breaker if you&#8217;re running Live on a small-ish usb stick.</li>
<li>Once useddsfanart is enabled, new fanart must be converted before it is displayed, there is no fallback to regular tbn file. (How much overhead in having cron run the conversion script every few minutes or loop the script?)</li>
<li><del datetime="2010-01-27T19:22:50+00:00">Depending on the complexity of the skin, there might not be a huge performance boost. I&#8217;m using Aeon and the performance increase is noticable if you look hard, but not astounding, since Aeon is displaying a bunch of other images at the same time.</del> I discovered, by accident, that even though I had ddsfanart enabled, xbmc was still using the tbn fanart.  I had a few other entries in my advancedsettings.xml file and I think the conflicted with ddsfanart.  I now have it working properly and the speed difference is amazing and totally worth the hassle if you&#8217;re using a nettop.</li>
</ol>
<p><strong>What you&#8217;ll need:</strong></p>
<ul>
<li><a href="http://code.google.com/p/nvidia-texture-tools/">NVIDIA Texture Tools</a></li>
<li><a href="http://www.nvidia.com/object/thankyou.html?url=/compute/cuda/2_3/toolkit/cudatoolkit_2.3_linux_32_ubuntu9.04.run">CUDA Tools</a></li>
<li>g++ and gcc versions 4.4 and 4.3</li>
<li>libjpeg and dev files</li>
<li>cmake</li>
</ul>
<p><strong>Install</strong></p>
<ol>
<li>Install g++, gcc, libjpeg62 and cmake:<code>sudo apt-get install g++ g++-4.3 gcc-4.3 libjpeg62-dev cmake</code>
<p>(the cuda extension for nvcompress won&#8217;t compile on 4.4 for some reason, which is what comes with Ubuntu 9.10 Karmic. If you are running 9.04 you&#8217;re fine.)<br />
CUDA isn&#8217;t strictly needed, nvcompress will still work pretty quickly with the -fast option, but CUDA still seems fastest. If you don&#8217;t want to use CUDA, don&#8217;t install the cuda tools because the texture tools won&#8217;t compile without some extra work with g++ 4.3.</p>
<p><strong>*Note</strong> I went the CUDA route because I&#8217;m doing the conversion directly on my AR1600 and need all the help I can get. Compression time was typically 13-16sec per 1920&#215;1080 jpg with cpu at 100% &#8230; which might make having the conversion script running with xbmc cause some issues.</li>
<li>To install the CUDA tools, in terminal go to the directory where you downloaded the CUDA file I linked and run:<code>sudo sh cudatoolkit_2.3_linux_32_ubuntu9.04.run</code></li>
<li>Now you have to add the cuda libraries to your shared libraries by editing a file. I use nano for my text editor, feel free to use whatever you like.<code>sudo nano /etc/ld.so.conf</code>
<p>and add this line to the end</p>
<p><code>include /usr/local/cuda/lib/</code></li>
<li>After you save the file, run:<code>sudo ldconfig -v</code>
<p>to update the libraries.</li>
<li>Assuming you want CUDA acceleration, after you have installed g++ and ran the CUDA tools installer, move to the nvidia-texture-tools directory (wherever you unzipped it to) and run:<code>./configure</code>
<p>You should see in the list of things that come up that JPEG is found and CUDA is found.</li>
<li>If that works well, and you are on Ubuntu Karmic then you need to set up g++ to compile using version 4.3.<code>sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.4 44 --slave /usr/bin/g++ g++ /usr/bin/g++-4.4 --slave /usr/bin/gcov gcov /usr/bin/gcov-4.4<br />
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.3 43 --slave /usr/bin/g++ g++ /usr/bin/g++-4.3 --slave /usr/bin/gcov gcov /usr/bin/gcov-4.3</code></li>
<li>You can confirm that this finished right by running:<code>sudo update-alternatives --display gcc</code></li>
<li>Now set the system to run version 4.3 instead of 4.4.<span style="color: red;">make sure to change this back when you&#8217;re done</span>
<p><code>sudo update-alternatives --config gcc</code></p>
<p>You should see something like this:</p>
<p><code>There are 2 choices for the alternative gcc (providing /usr/bin/gcc).</code></p>
<p><code>Selection    Path              Priority   Status<br />
------------------------------------------------------------<br />
* 0            /usr/bin/gcc-4.4   44        auto mode<br />
1            /usr/bin/gcc-4.3   43        manual mode<br />
2            /usr/bin/gcc-4.4   44        manual mode</p>
<p></code><code>Press enter to keep the current choice[*], or type selection number:</code></p>
<p>In this case you would type 1 and hit enter. Just put whatever number you have to switch to version 4.3.</li>
<li>After this is done, in the nvidia-texture-tools folder, type:<code>sudo make</code></li>
<li>and, assuming everything compiled ok (I got some warnings in the compile process but it did finish and everything seems to work fine) type:<code>sudo make install</code>
<p>and it should install the files properly.</li>
<li>At this point you can change your default compiler back to version 4.4 by running the same command as above and set back to auto (option 0 in the example).</li>
<li>Try to run nvcompress (you should be able to do this anywhere in the command line now) and if you get the typical list of options than you are good to go. Initially I had some issues with nvcompress not seeing the needed shared libraries. You&#8217;ll know if you have this same problem if, when you try to run nvcompress, you get an error saying it can&#8217;t find some shared library. If this is the case, follow the next instructions.</li>
<li>Move to the /usr/local/bin directory and check if nvcompress is really not seeing libraries.<code>cd /usr/local/bin<br />
ldd nvcompress</code></p>
<p>You should see a list of libraries that nvcompress depends on. If you have any entries that say Not Found at the end than some libraries aren&#8217;t being seen. I was missing one (libcudart.so.2) at the end of all these steps, but I fixed this by copying the file to a library I knew was working.</p>
<p><code>sudo cp /usr/local/cuda/lib/libcudart.so.2 /usr/local/lib/libcudart.so.2<br />
sudo ldconfig -v</code></p>
<p>You only need to do something like this if nvcompress gives an error that it can&#8217;t find a shared library.</p>
<p><strong>*Note</strong> When I checked the first time, there were a bunch of libraries missing.  I then followed the instructions to copy over libcudart.so.2 and re-ran the check and all of them appeared so I proceeded as planned.</li>
</ol>
<p><strong>Compress Scripts</strong><br />
The <a href="http://xbmc.org/forum/showthread.php?t=59115">post</a> currently has two different scripts for automatically converting the fanart directories.  Both only address the video fanart directory and will need to have the music fanart directory added to also convert those.</p>
<ul>
<li><strong>Script #1</strong><br />
<code>#!/bin/sh</p>
<p></code><code>rename 's/tbn$/jpg/' ~/.xbmc/userdata/Thumbnails/Video/Fanart/*.tbn<br />
find ~/.xbmc/userdata/Thumbnails/Video/Fanart -type f -name '*.jpg' -printf '%f\n' | sed 's/.jpg$/\n/' &gt; ~/.xbmc/userdata/Thumbnails/Video/Fanart/found.txt<br />
find ~/.xbmc/userdata/Thumbnails/Video/Fanart -type f -name '*.dds' -printf '%f\n' | sed 's/.dds$/\n/' &gt;&gt; ~/.xbmc/userdata/Thumbnails/Video/Fanart/found.txt<br />
cat ~/.xbmc/userdata/Thumbnails/Video/Fanart/found.txt | sort | uniq -u &gt; ~/.xbmc/userdata/Thumbnails/Video/Fanart/new.txt<br />
cat ~/.xbmc/userdata/Thumbnails/Video/Fanart/new.txt | xargs -I {} nvcompress -bc1 ~/.xbmc/userdata/Thumbnails/Video/Fanart/{}.jpg<br />
rename 's/jpg$/tbn/' ~/.xbmc/userdata/Thumbnails/Video/Fanart/*.jpg<br />
rm ~/.xbmc/userdata/Thumbnails/Video/Fanart/found.txt<br />
rm ~/.xbmc/userdata/Thumbnails/Video/Fanart/new.txt</code></li>
<li><strong>Script #2</strong><br />
<code>#!/bin/sh<br />
cd ~/.xbmc/userdata/Thumbnails/Video/Fanart/ || exit<br />
find . -name '*.tbn' -or -name '*.dds' | cut -c-10 | sort | uniq -u |<br />
while read n; do<br />
mv $n.tbn $n.jpg<br />
nvcompress -bc1 $n.jpg | awk '/taken:/{printf $3}'<br />
mv $n.jpg $n.tbn<br />
echo "s $(ls *.dds | wc -l)/$(ls *.tbn | wc -l)"<br />
done</code></li>
</ul>
<p>Instead of using crontab I would prefer to figure out how to loop the script so that it could remain running and loop every xx seconds.  Will investigate tonight.</p>
<p><strong>Update 1-27</strong> I&#8217;ve modified script #2 by wrapping it in a while -d ; do and controlling the frequency with sleep.  I&#8217;m totally not a bash scripter, but the idea is to keep the script running conditional to the directory existing.  I&#8217;ve also nested a loop through the music fanart directory wrapped in an if statement that checks for the music directory&#8217;s existence; I&#8217;ll post the script tonight.  I still need to test to see if it will actually pick up new files though.  If anybody is reading this and has any bash scripting experience feel free to post a comment with any tips/suggestions.</p>
<p><strong>Update 2-12</strong> Still need to post my hacked up script for converting tbn to dds and have it watch for new additions (still doesn&#8217;t pick up changed tbn).</p>
<p>Currently, the switch in advancedsettings only enables gpu acceleration of dds compressed fanart.  With a small change to source you can also enable dds thumbnails which makes an epic difference in scroll speed on my AR1600.</p>
<p>(copy and paste directly from <a href="http://forum.xbmc.org/showpost.php?p=507476&amp;postcount=164">this</a> forum post)<br />
<code>--- xbmc/GUILargeTextureManager.cpp~<br />
+++ xbmc/GUILargeTextureManager.cpp<br />
@@ -64,8 +64,10 @@ bool CImageLoader::DoWork()<br />
{<br />
CStdString baseFolder1 = g_settings.GetMusicFanartFolder();<br />
CStdString baseFolder2 = g_settings.GetVideoFanartFolder();<br />
+      CStdString baseFolder3 = g_settings.GetVideoThumbFolder();<br />
if (baseFolder1.Equals(m_path.Left(baseFolder1.GetLength())) ||<br />
-          baseFolder2.Equals(m_path.Left(baseFolder2.GetLength())))<br />
+          baseFolder2.Equals(m_path.Left(baseFolder2.GetLength())) ||<br />
+          baseFolder3.Equals(m_path.Left(baseFolder3.GetLength())))<br />
{ // switch to dds<br />
CUtil::ReplaceExtension(m_path, ".dds", loadPath);<br />
}<br />
</code></p>
<ol>
<li>nano xmbc/GUILargeTextureManager.cpp</li>
<li>add the new CStdString baseFolder 3 line</li>
<li>remove the trailing ) for the existing baseFolder2.Equals line and add || to the end</li>
<li>add new baseFolder3.Equals line</li>
<li>compile and install<br />
<span style="font-size: 9px;">Need to add compile and install from source instructions to my other post because I keep forgetting, when I do it, to make sure I&#8217;ve got lib-vdpau and end up having to compile twice.</span></li>
<li>make sure to convert tbn to dds for your root /Thumbnails/Video folder and not just /Fanart</li>
</ol>
<p>From my limited testing, it also appears that my music album cover thumbnails are accelerated?!  Which is baffling, I&#8217;m hoping I&#8217;m just imaging things; I was expecting to need the addition of another baseFolder line.</p>
<ul>
<li><strong><span style="text-decoration: underline;">My Script</span></strong></li>
<li>/etc/rc.local add either <code>/etc/init.d/xbmc-dds-compress start</code> if using an init script or, <code>/home/xbmc/dds-convert.sh &amp;</code> so that the script starts at boot.</li>
<li>Really cheap init script.  Save to /etc/init.d and chmod +x.<br />
<code>#!/bin/sh<br />
#<br />
# Script to start DDS-Compress<br />
#<br />
set -e<br />
. /lib/lsb/init-functions<br />
case "$1" in<br />
start)<br />
/home/xbmc/dds-convert.sh &amp;<br />
;;<br />
stop)<br />
pkill dds-convert.sh<br />
;;<br />
esac<br />
exit 0</code></li>
<li>Script that I&#8217;m using.  It&#8217;s a modification of #2 above.  It&#8217;s monitoring the root Thumbnails/Video directory to convert all thumbnails and fanart; goes along with the source code change above.<br />
<code>#!/bin/sh<br />
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/<br />
video='/home/xbmc/.xbmc/userdata/Thumbnails/Video'<br />
music='/home/xbmc/.xbmc/userdata/Thumbnails/Music'<br />
private='/home/xbmc/.xbmc/userdata/profiles/Private/Thumbnails/Video'</p>
<p># limit cpu usage for nvcompress so it doesn't kill xbmc gui<br />
cpulimit -e nvcompress -l 50 &amp;</p>
<p>while [ -d $video  ]; do</p>
<p>cd $video || exit</p>
<p>find . -name '*.tbn' -or -name '*.dds' | cut -d'.' -f2 | sort | uniq -u |</p>
<p>while read n; do</p>
<p>mv $video$n.tbn $video$n.jpg<br />
nvcompress -bc1 $video$n.jpg | awk '/taken:/{printf $3}'<br />
mv $video$n.jpg $video$n.tbn</p>
<p>done</p>
<p>#music is secondary and only done if video exists<br />
if [ -d $music ]; then</p>
<p>cd $music || exit</p>
<p>find . -name '*.tbn' -or -name '*.dds' | cut -d'.' -f2 | sort | uniq -u |</p>
<p>while read n; do</p>
<p>mv $music$n.tbn $music$n.jpg<br />
nvcompress -bc1 $music$n.jpg | awk '/taken:/{printf $3}'<br />
mv $music$n.jpg $music$n.tbn</p>
<p>done</p>
<p>fi</p>
<p>#doing Private profile Thumbnails here<br />
if [ -d $private ]; then</p>
<p>cd $private || exit</p>
<p>find . -name '*.tbn' -or -name '*.dds' | cut -d'.' -f2 | sort | uniq -u |</p>
<p>while read n; do</p>
<p>mv $private$n.tbn $private$n.jpg<br />
nvcompress -bc1 $private$n.jpg | awk '/taken:/{printf $3}'<br />
mv $private$n.jpg $private$n.tbn</p>
<p>done</p>
<p>fi</p>
<p>sleep 1</p>
<p></code><code>done</code><br />
My scripting skills aren&#8217;t the best, but I&#8217;m at least checking to make sure the directories exist.  I don&#8217;t really remember why I decided that Music should be nested under the main Video wrap, but I guess it works.  I also put in a section labelled &#8216;Private&#8217; for profiles; if you&#8217;re using different profiles just replace Private with your profile&#8217;s name.  Without the sleep command this script will use about 10-15% CPU on the AR1600.  With, you never see it in TOP.</p>
<p>Also, I&#8217;m using cpulimit (<code>sudo apt-get install cpulimit</code>) on nvcompress so that XBMC doesn&#8217;t choke when new content is added.</li>
<li><em>This script fails to convert changed posters or fanart for an existing library item.  I need to take a closer look at the find command to see if I can also watch for file changes.</em></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://devolblog.devolfamily.com/gpu-accelerated-fanart-for-xbmc-liveubuntu/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WordPress IIS 7 tutorial</title>
		<link>http://devolblog.devolfamily.com/wordpress-iis-7-tutorial/</link>
		<comments>http://devolblog.devolfamily.com/wordpress-iis-7-tutorial/#comments</comments>
		<pubDate>Sun, 08 Nov 2009 04:02:00 +0000</pubDate>
		<dc:creator>Scott</dc:creator>
				<category><![CDATA[Featured]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Tech]]></category>

		<guid isPermaLink="false">http://devolblog.devolfamily.com/?p=1058</guid>
		<description><![CDATA[This is all old news, everything I have here is found other places, but I did run into a big bug that I had to sift through forums to find the answer to: 2.8 and above has broken image uploads. And from the forum posts its not just when running on IIS. I hadn&#8217;t run [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://devolblog.devolfamily.com/wordpress/wp-content/uploads/2008/09/wordpress.jpg" alt="wordpress" title="wordpress" width="174" height="114" class="alignleft size-full wp-image-746" /><img src="http://devolblog.devolfamily.com/wordpress/wp-content/uploads/2009/11/plus.png" alt="plus" title="plus" width="48" height="114" class="alignleft size-full wp-image-1077" style="border:0"/><img src="http://devolblog.devolfamily.com/wordpress/wp-content/uploads/2009/11/iis7.jpg" alt="iis7" title="iis7" width="174" height="114" class="alignleft size-full wp-image-1067" />
<div class="clear"></div>
<p>This is all old news, everything I have here is found other places, but I did run into a big bug that I had to sift through forums to find the answer to: 2.8 and above has broken image uploads.  And from the forum posts its not just when running on IIS.  I hadn&#8217;t run into it when I was running 2.8 on Apache, but I was also running a very old version of PHP.</p>
<p>The symptoms are that when trying to upload a picture into a post, the screen will show, &#8216;crunching&#8217; and then, when finished, will be blank where you&#8217;d normally expect to see the uploaded image along with it&#8217;s options.  If you check the server, thinking there might be a permissions issue, you will find the image that you uploaded.  My solution was to downgrade back to 2.7.1.  </p>
<p>Couple of things we&#8217;ll need: </p>
<ul>
<li>Windows 2008 with IIS 7 &#8230; obviously (or 2008R2 IIS 7.5)</li>
<li><a href="http://www.iis.net/extensions/URLRewrite">URL Rewrite</a></li>
<li>PHP <a href="http://us3.php.net/get/php-5.2.11-Win32.zip/from/a/mirror">5.2.11</a> or <a href="http://windows.php.net/download/">5.3 Non Thread Safe</a></li>
<li><a href="http://dev.mysql.com/downloads/mysql/5.1.html#downloads">MySQL 5.1 Community Server</a></li>
<li>[optional] <a href="http://dev.mysql.com/downloads/gui-tools/5.0.html">MySQL GUI Tools</a></li>
<li><a href="http://wordpress.org/download/">WordPress</a> see <a href="http://wordpress.org/download/release-archive/">release archive</a> for 2.7.1 if newest version is still having problems with image upload</li>
</ul>
<p>The focus of this post isn&#8217;t a complete end-to-end WordPress setup since many people have covered that better than I can.  The primary goal is to cover issues when setting up WordPress on IIS; I found all the articles on google lacking a few steps that caused me some headaches.  I&#8217;ll try to put as many steps in as I can recall, but if I gloss over standard stuff I&#8217;ll make sure to mention it and point the reader to other resources.</p>
<p>1. <strong><u>Install MySQL</u></strong></p>
<p>This one is really easy, even if you&#8217;ve never done any db work and there is nothing specific to a Windows / IIS install than there would be on Linux / Apache.  Just run the installer, and then if you don&#8217;t want to mess with the command line, install the GUI Tools.</p>
<p><strong>If you want to install MySQL to somewhere besides the default</strong>, even if you specify another dir during setup, the data directory will still be left at default (c:\programdata\mysql\mysql server 5.1\data).  The installer puts the server bin files in the location you specified, but not the data dir.  You can change this either using GUI Tools under startup variables, or manually in my.ini.  Just make sure you stop MySQL first, then copy the data dir to the new location before you restart MySQL.</p>
<p>Create a new schema for your wordpress install, give it a login and set the password.  WordPress recommends granting all roles to the user; I&#8217;m not real happy with that but haven&#8217;t taken the time to find out exactly what roles a fully functioning WordPress install would need.  At least don&#8217;t give the wordpress user the grant role.</p>
<p>2. <strong><u>Install PHP</u></strong></p>
<p>I went back to 5.2.11 as I was troubleshooting the image upload issue, but 5.3 appeared to work correctly.  5.3 is supposedly much faster, but my install is so small I&#8217;m not going to see a difference.  If using 5.3, you <em>have</em> to configure the timezone in the ini file or you will get errors.</p>
<p><strong>If using 5.2.11 I don&#8217;t recommend using the installer, the IISFastCGI option kept toggling to Isapi</strong>.  I don&#8217;t know if it was a glitch in their installer, but it was just as easy to configure IIS manually anyway.</p>
<ul><em>Prepare IIS for PHP</em></p>
<li><small>note: all of the tutorials I followed for PHP on IIS have you use FastCGI so that&#8217;s what I&#8217;ll use too; some mention that performance is better than Isapi, but there are also forum posts about errors using FastCGI.  For a personal install, I can&#8217;t see the performance difference being that big of an issue, so it&#8217;s up to you which you prefer.</small></li>
<li>Open Server Manager</li>
<li>Under Roles &#8211; Web Server (IIS) &#8211; Role Services click <strong>Add Role Services</strong> from the right side.</li>
<li>Select Application Development &#8211; <strong>CGI</strong> and finish out the wizard.</li>
</ul>
<ul><em>Install PHP</em></p>
<li><strong>Using the PHP installer</strong>: run the installer and <strong>select IISFastCGI</strong> for the server type.  <strong>The installer will configure IIS for you</strong>.  (5.2.11 installer kept trying to configure Isapi instead of FastCGI so I did it manually).</li>
<ul><strong>Using PHP zip package and configuring IIS manually</strong>: unzip the PHP package to the desired directory. </p>
<li>In IIS Manager, select your server and then double click on <strong>Handler Mappings</strong>.</li>
<li>On the right hand side, under Actions, click <strong>Add Module Mapping</strong>.</li>
<li>Request Path: <strong>*.php</strong>; Module: FastCgiModule; Executable: Path: &lt;path to PHP install&gt;&#92;<strong>php-cgi.exe</strong>; Name: <strong>PHP</strong> (or whatever you want to name it).</li>
</ul>
</ul>
<ul><em>Configure PHP / Edit PHP ini</em></p>
<li>Open &lt;path to PHP install&gt;&#92;php.ini</li>
<li>Use Find the following:</li>
<ul>
<li><strong>fastcgi.impersonate</strong>, uncomment and set to <strong>1</strong>.</li>
<li><strong>cgi.fix_pathinfo</strong>, uncomment and set to <strong>1</strong>.</li>
<li><strong>cgi.force_redirect</strong>, uncomment, set to <strong>1</strong>.</li>
<li><strong>open_basedir</strong>, set to your <strong>web root</strong> ( e.g. c:&#92;inetpub ).</li>
<li><strong>PHP 5.3</strong> will require <strong>date.timezone</strong> set.  See <a href="http://us3.php.net/manual/en/timezones.php">http://us3.php.net/manual/en/timezones.php</a> for a list of valid timezones.  Can also be set in wp-config.php using date_default_timezone_set(); but that would only be for the specific site and not server-wide.</li>
<li>Uncomment <strong>extension=php_mysql.dll</strong> and <strong>extension=php_gd2.dll</strong>.  Note: haven&#8217;t verified if GD2 is necessary.</li>
<li><small>most tutorials stop here, but there are a few other things to edit if you actually want file uploads (image uploads / plugin install / theme install) to work in WordPress</small></li>
<li><strong>upload_tmp_dir</strong>, set to any directory you like but <strong>you will need to add write permissions</strong> for the anon authentication account for your websites ( IUSR or App pool identity ).</li>
<ul>(Optional)</p>
<li><strong>upload_max_filesize</strong>.  Default is 2M, might be on the small side if you&#8217;re uploading pictures straight from the camera, video or possibly large plugins/themes.  Also related, <strong>post_max_size</strong>, default 8M, needs to be increased along with upload_max_filesize.</li>
</ul>
</ul>
</ul>
<p>At this point, it&#8217;s probably worth testing the PHP install with a &lt;?php phpinfo(); ?&gt; page.</p>
<p><small>Reminder: If you like to use short tags they&#8217;re turned off by default.  Search for short_open_tag and change to On.</small></p>
<p>3. <strong><u>Install WordPress</u></strong></p>
<p>Just follow WordPress&#8217;s own <a href="http://codex.wordpress.org/Installing_WordPress">Install Guide</a>.  If you&#8217;ve verified PHP is working, created a schema in MySQL and tested logging on with the user you gave schema privileges to, there shouldn&#8217;t be any problems.<br />
<small>Reminder: If you install WordPress to a sub directory ( e.g. &lt;site root&gt;#92;wordpress ) then you will need to configure WordPress Address in Settings &#8211; General to be http://&lt;site url&gt;#92;&lt;sub-directory&gt; the Blog Address to http://&lt;site url&gt; and then copy index.php to the root.  Edit the copy of index.php at the root and replace, require(&#8216;./wp-blog-header.php&#8217;); with require(&#8216;./&lt;sub-dir&gt;/wp-blog-header.php&#8217;);.</small></p>
<p>4. <strong><u>Configure IIS Site</u></strong></p>
<ul>
<li>Open <strong>IIS Manager</strong> and <strong>create your site</strong> if you didn&#8217;t install WordPress under the default website.  Set the directory and bindings etc.</li>
<li>Decide if you&#8217;re going to use the IUSR account or the App Pool Identity for Anonymous Authentication.  Site &#8211; Authentication &#8211; Anonymous Authentication &#8211; Edit.</li>
</ul>
<p>5. <strong><u>Set file permissions</u></strong></p>
<p>This is the big step that the tutorials I found on google neglected to mention.  It must be so obvious to them that it goes without saying?  You&#8217;ll need to set <strong>write permissions</strong> on the <strong>plugins, themes and uploads directories under wp-content</strong> for whatever account you use for anonymous authentication.  I&#8217;m not particularly happy about having write permissions open to that many top level directories, and if you didn&#8217;t want to install plugins or themes via the wordpress admin console you could get away with leaving those out.  But I&#8217;m always paranoid, and wordpress has always bugged me that they don&#8217;t appear to take security a little more seriously in their setup guide.</p>
<p>6. <strong><u>Permalinks</u></strong></p>
<ul>
<li>Open the WordPress <strong>admin console</strong>, go to <strong>Settings &#8211;  Permalinks</strong>.</li>
<li>If you want nice permalinks, set them under <strong>Custom</strong>.  Once you save the changes your site will no longer work.</li>
<li><strong>WordPress 2.8 and above is IIS aware</strong> and will attempt to save the permalink rule to web.config for you if it has write permissions to the root of the wordpress install.  Unfortunately it&#8217;s not sub-directory aware so if you&#8217;ve installed wordpress to a directory under the root you&#8217;ll need to copy the web.config to the root manually.</li>
<li><strong>WordPress 2.7</strong> you&#8217;ll need to set the permalink rule manually.</li>
<ul>
<li>Open <strong>IIS Manager</strong> and select your site.</li>
<li>Select <strong>URL Rewrite</strong> and then <strong>Add Rules</strong> from the right hand side.</li>
<li>Create a <strong>Blank rule</strong>:</li>
<ul>
<li><strong>Name</strong>: whatever you&#8217;d like.</li>
<li><strong>Requested URL: Matches the pattern</strong></li>
<li><strong>Using: Wildcards</strong></li>
<li><strong>Pattern: *</strong></li>
<li><strong>Conditions &#8211; Add New</strong></li>
<ul>1st Condition</p>
<li><strong>Condition input: {REQUEST_FILENAME}</strong></li>
<li><strong>Check if input string: Is not a file</strong></li>
</ul>
<ul>2nd Condition</p>
<li><strong>Condition input: {REQUEST_FILENAME}</strong></li>
<li><strong>Check if input string: Is not a directory</strong></li>
</ul>
<li><strong>Action Type: Rewrite</strong></li>
<li><strong>Rewrite URL: index.php</strong></li>
</ul>
</ul>
</ul>
<p>7. (optional) <strong><u>Hotlinking rule</u></strong></p>
<p>Quick and dirty url rewrite rule to prevent hotlinking resources from your site.</p>
<ul>
<li>Open up <strong>IIS Manager again</strong>, select your site and go to <strong>URL Rewrite</strong> again.</li>
<li>Add a new <strong>Blank rule</strong>.</li>
<ul>
<li><strong>Name: whatever you want</strong></li>
<li><strong>Requested URL: Matches the pattern</strong></li>
<li><strong>Using: Regular Expressions</strong></li>
<li><strong>Pattern: .*</strong></li>
<li><strong>Conditions &#8211; Add New</strong></li>
<ul>1st Condition</p>
<li><strong>Condition input: {HTTP_REFERER}</strong></li>
<li><strong>Check if input string: Does not match the pattern</strong></li>
<li><strong>Pattern: ^$</strong></li>
</ul>
<ul>2nd Condition</p>
<li><strong>Condition input: {HTTP_REFERER}</strong></li>
<li><strong>Check if input string: Does not match the pattern</strong></li>
<li><strong>Pattern: http://&lt;site url&gt;#92;.*</strong></li>
</ul>
<li>You&#8217;ll need to go back and <strong>add more conditions for any other bindings</strong> you have for the site.</li>
<li><strong>Action Type: Rewrite</strong></li>
<li><strong>Rewrite URL: &lt;path to replacement image/resource&#038;gt</strong>; ( e.g. /no_hotlinking.jpg )</li>
</ul>
</ul>
<p>Possible tweaks;  I used a pattern of *, basically denying hotlinking of any resource.  This could be tweaked with just the extensions of resources that you&#8217;re concerned with but I&#8217;m not sure why you would.  </p>
<p>8. <strong>Conclusion</strong></p>
<p>That&#8217;s it.  Everything should be working perfectly including plugin install / upgrade and theme install from the admin console.  Image upload on the post should work, but please keep in mind that many WordPress users, including me, have run into a problem where it stops after &#8216;crunching&#8217;.  Hopefully they&#8217;ll have it resolved in a newer version.</p>
]]></content:encoded>
			<wfw:commentRss>http://devolblog.devolfamily.com/wordpress-iis-7-tutorial/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Making WPtouch work with WP Super Cache</title>
		<link>http://devolblog.devolfamily.com/making-wptouch-work-with-wp-super-cache/</link>
		<comments>http://devolblog.devolfamily.com/making-wptouch-work-with-wp-super-cache/#comments</comments>
		<pubDate>Mon, 16 Mar 2009 21:58:45 +0000</pubDate>
		<dc:creator>Scott</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Tech]]></category>

		<guid isPermaLink="false">http://devolblog.devolfamily.com/?p=934</guid>
		<description><![CDATA[[update 3/26/09: I switched from wp super cache to hyper cache. Works out of the box with wptouch. Still trying to figure out how to get wptouch to not load the slimbox plugin though.] Just wanted to mark this for future reference. The creators of WPtouch posted on their blog how to make it work [...]]]></description>
			<content:encoded><![CDATA[<p>[update 3/26/09: I switched from wp super cache to hyper cache. Works out of the box with wptouch.  Still trying to figure out how to get wptouch to not load the slimbox plugin though.]</p>
<p>Just wanted to mark this for future reference.  The creators of WPtouch posted on their blog <a href="http://www.bravenewcode.com/2009/01/05/wptouch-and-wp-super-cache/">how to make it work with WP Super Cache</a>.  </p>
<p>Make your .htaccess look like this (additions in bold):</p>
<p><code><br />
# BEGIN WPSuperCache</p>
<p>RewriteEngine On<br />
RewriteBase /<br />
AddDefaultCharset UTF-8<br />
RewriteCond %{REQUEST_URI} !^.*[^/]$<br />
RewriteCond %{REQUEST_URI} !^.*//.*$<br />
RewriteCond %{REQUEST_METHOD} !=POST<br />
RewriteCond %{QUERY_STRING} !.*=.*<br />
RewriteCond %{HTTP:Cookie} !^.*(comment_author_|wordpress|wp-postpass_).*$<br />
<strong>RewriteCond %{HTTP_USER_AGENT} !^.+iPhone</strong><br />
RewriteCond %{HTTP:Accept-Encoding} gzip<br />
RewriteCond %{DOCUMENT_ROOT}/wp-content/cache/supercache/%{HTTP_HOST}/$1/index.html.gz -f<br />
RewriteRule ^(.*) /wp-content/cache/supercache/%{HTTP_HOST}/$1/index.html.gz [L]</p>
<p>RewriteCond %{REQUEST_URI} !^.*[^/]$<br />
RewriteCond %{REQUEST_URI} !^.*//.*$<br />
RewriteCond %{REQUEST_METHOD} !=POST<br />
RewriteCond %{QUERY_STRING} !.*=.*<br />
RewriteCond %{HTTP:Cookie} !^.*(comment_author_|wordpress|wp-postpass_).*$<br />
<strong>RewriteCond %{HTTP_USER_AGENT} !^.+iPhone</strong><br />
RewriteCond %{DOCUMENT_ROOT}/wp-content/cache/supercache/%{HTTP_HOST}/$1/index.html -f<br />
RewriteRule ^(.*) /wp-content/cache/supercache/%{HTTP_HOST}/$1/index.html [L]</p>
<p># END WPSuperCache<br />
</code></p>
]]></content:encoded>
			<wfw:commentRss>http://devolblog.devolfamily.com/making-wptouch-work-with-wp-super-cache/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How I sync Outlook/gCal/iCal/iPhone</title>
		<link>http://devolblog.devolfamily.com/how-i-sync-outlookgcalicaliphone/</link>
		<comments>http://devolblog.devolfamily.com/how-i-sync-outlookgcalicaliphone/#comments</comments>
		<pubDate>Sat, 14 Mar 2009 05:02:17 +0000</pubDate>
		<dc:creator>Scott</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Mac]]></category>
		<category><![CDATA[Tech]]></category>

		<guid isPermaLink="false">http://devolblog.devolfamily.com/?p=781</guid>
		<description><![CDATA[[2/13/09 update: As of Feb, you can use Google Sync setup the iPhone to sync contacts or calendars OTA. I still use the below desktop application to also sync iCal instead of waiting for an iPhone sync to update it.] [update: Google now has an app that'll setup the gCal / iCal sync for you. [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignright size-medium wp-image-785" title="google_calendar_buttoncrushed" src="http://devolblog.devolfamily.com/wordpress/wp-content/uploads/2008/09/google_calendar_buttoncrushed.png" alt="" width="140" height="140" /></p>
<p>[2/13/09 update: As of Feb, you can use <a href="http://www.google.com/mobile/apple/sync.html">Google Sync</a> setup the iPhone to sync contacts or calendars OTA.  I still use the below desktop application to also sync iCal instead of waiting for an iPhone sync to update it.]</p>
<p>[update: Google now has an app that'll setup the gCal / iCal sync for you.  Sweetness. <a href="http://www.google.com/support/calendar/bin/answer.py?hl=en&#038;answer=99358#ical">link</a>]  </p>
<p>So first, let me lay down the framework of what I&#8217;m trying to accomplish.  At work I&#8217;m now using google apps (gmail for domains) instead of exchange server.  But I&#8217;m so used to the Outlook interface that I <a href="http://mail.google.com/support/bin/answer.py?hl=en&amp;answer=77689">set up Outlook as an imap client for gmail</a> (don&#8217;t forget to enable imap support in the gmail interface).  So where does that leave me for a calender?  Well luckily google already has a windows desktop app, <a href="http://www.google.com/support/calendar/bin/answer.py?answer=89955">google calendar sync</a>, that sync&#8217;s gcal into the outlook calendar; so I&#8217;m covered there.</p>
<p>But at home, I&#8217;m primarily on the mac which means I&#8217;m using iCal and then syncing that to my iPhone.  Google calendar has <a href="http://www.google.com/support/calendar/bin/answer.py?hl=en&amp;answer=99358">CalDAV support</a>.  Just follow the instructions and gCal and iCal sync.  Which also means that if you set your iPhone to sync all calendars you&#8217;ve now got your gCal on your iPhone.</p>
<p>None of this was more than a google search away so the reason I&#8217;m recording this is to remind myself of one small, undocumented step.  Either that or I just don&#8217;t know how to use iCal &#8230; which could be the case.<br />
<em>Appointments created on other calendars in iCal don&#8217;t sync to gCal.</em><br />
That means any appts on your Home/Work calendar don&#8217;t make it to gCal.  I kept banging my head against the wall trying to figure out why they weren&#8217;t working.  Sounds obvious now right?  Not so much at 11pm last night.</p>
<p>What you have to do is select the gCal calendar in iCal and create the appt there for it to sync.  <em>Duh</em>.  Not the most intuitive though.  And if you put your personal appts on your home calendar they&#8217;re not going to be marked as busy for your gCal (in my case work) which could cause scheduling problems.</p>
]]></content:encoded>
			<wfw:commentRss>http://devolblog.devolfamily.com/how-i-sync-outlookgcalicaliphone/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How I conquered IE6 png alpha.</title>
		<link>http://devolblog.devolfamily.com/how-i-conquered-ie6-png-alpha/</link>
		<comments>http://devolblog.devolfamily.com/how-i-conquered-ie6-png-alpha/#comments</comments>
		<pubDate>Sun, 08 Mar 2009 10:17:00 +0000</pubDate>
		<dc:creator>Scott</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Tech]]></category>

		<guid isPermaLink="false">http://devolblog.devolfamily.com/?p=926</guid>
		<description><![CDATA[This one I have to record, because there&#8217;s no way I&#8217;ll ever remember this one. I figured I&#8217;d take a look at my new landing page that I&#8217;m so proud of (yeah, I know, I&#8217;m never going to put a designer out of work) in IE6. Holy schnike! Oh yeah, forgot IE6 is wack. So, [...]]]></description>
			<content:encoded><![CDATA[<p>This one I have to record, because there&#8217;s no way I&#8217;ll ever remember this one.  I figured I&#8217;d take a look at my new landing page that I&#8217;m so proud of (yeah, I know, I&#8217;m never going to put a designer out of work) in IE6.  Holy schnike!  Oh yeah, forgot IE6 is <em>wack</em>.</p>
<p>So, since I just love to use negative margins for positioning (yeah, I know, I&#8217;ll never put a webdev out of work either) I had to fix <a href="http://www.google.com/search?q=IE6+negative+margin">IE6&#8242;s negative margin bug</a> by using position:relative on all my floats.  Oh crap, what now?  Oh yeah I still have to fix <a href="http://www.google.com/search?q=IE6+double+padding">double padding applied to floats</a> with display:inline.  Great, all done.  <em>Suuuuuuck</em> forgot IE6 can&#8217;t handle PNG alpha.  Why did we all use this browser back in the day?  You know all our parents probably still do so it looks like I&#8217;m going to have to fix this.</p>
<p>Remembering that I&#8217;ve used some javascript hack in the past to deal with this, I went searching.  But none of them will work with png sprites that the world has moved onto.  At least not when :hover is involved.  Actually the jQuery solution is supposed to, but that&#8217;s a little heavy for a stupid landing page (especially when I already have over 1MB in graphics).</p>
<p>And then I tripped over the <a href="http://www.sitepoint.com/blogs/2007/09/18/png8-the-clear-winner/">8bit Fireworks alpha transparency trick</a>.  But now, how do I get the 8bit versions to load only in lte IE6.  I can&#8217;t do a conditional inside the style decleration.  Well, actually, I&#8217;m not smart enough to know if you can or not, but google didn&#8217;t show me anything.  I suppose I could&#8217;ve just linked to an entirely different stylesheet for lte IE6 and left everything else the way it was.  But no, I found something even more devious.</p>
<p>Put a &#8216;_&#8217; in front of the background declaration containing the 8bit png.  How&#8217;s that for ugly hack?  Good thing I could care less if my stuff validates &#8230; whatever that is.</p>
<p>The 8bit version has some nasty jaggies, but at least it doesn&#8217;t have a big gray box around it anymore.</p>
<p><img src="http://devolblog.devolfamily.com/wordpress/wp-content/uploads/2009/03/png8-sample.jpg" alt="png8-sample" title="png8-sample" width="376" height="280" class="aligncenter size-full wp-image-927" /></p>
]]></content:encoded>
			<wfw:commentRss>http://devolblog.devolfamily.com/how-i-conquered-ie6-png-alpha/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

