<?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>GarrettBartley.com &#187; Geek Stuff</title>
	<atom:link href="http://www.garrettbartley.com/category/geek-stuff/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.garrettbartley.com</link>
	<description></description>
	<lastBuildDate>Thu, 03 Dec 2009 14:22:49 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Kevin Smith and I are pretty much best friends now</title>
		<link>http://www.garrettbartley.com/2009/11/20/kevin-smith-and-i-are-pretty-much-best-friends-now/</link>
		<comments>http://www.garrettbartley.com/2009/11/20/kevin-smith-and-i-are-pretty-much-best-friends-now/#comments</comments>
		<pubDate>Fri, 20 Nov 2009 04:24:30 +0000</pubDate>
		<dc:creator>Garrett</dc:creator>
				<category><![CDATA[Geek Stuff]]></category>
		<category><![CDATA[Hockey]]></category>
		<category><![CDATA[devils]]></category>
		<category><![CDATA[kevin smith]]></category>
		<category><![CDATA[nashville predators]]></category>
		<category><![CDATA[new jersey devils]]></category>
		<category><![CDATA[predators]]></category>
		<category><![CDATA[predfans]]></category>
		<category><![CDATA[retweetbot]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://www.garrettbartley.com/?p=599</guid>
		<description><![CDATA[&#8230;he just doesn&#8217;t know it.  But, hey, he responded to a Twitter post by one of the @PredFans participants!  Oh, and if you didn&#8217;t know, he&#8217;s a HUGE New Jersey Devils fan and a pretty active Twitter user.
For those who do not know about @PredFans and ReTweetBot, it&#8217;s my little programming baby and [...]]]></description>
			<content:encoded><![CDATA[<p>&#8230;he just doesn&#8217;t know it.  But, hey, he responded to a Twitter post by one of the <a href="http://twitter.com/PredFans">@PredFans</a> participants!  Oh, and if you didn&#8217;t know, he&#8217;s a HUGE New Jersey Devils fan and a pretty active Twitter user.</p>
<p>For those who do not know about @PredFans and <a href="http://www.retweetbot.com">ReTweetBot</a>, it&#8217;s my little programming baby and the brain-child of fellow Predators fan <a href="http://nicholsonrecords.com/paul/">Paul Nicholson</a> (<a href="http://twitter.com/pwnicholson">@pwnicholson</a> on Twitter).  The concept is pretty simple, it&#8217;s a bot that Paul conceived and I coded into reality that creates a common-interest community on Twitter proxied by a single Twitter account.  I&#8217;ll use @PredFans as an example: Paul, myself, and a few hundred other Predators fans on Twitter follow a single account, @PredFans.  The @PredFans bot looks for any @replies or direct messages sent to it and re-posts the @reply or direct message under the @PredFans account using &#8220;username: their twitter message #plus #some #hashtags&#8221;.  If you go to the @PredFans page on Twitter, you can see it in action.</p>
<p>So, here are some screenshots of the tweets I&#8217;m talking about (clicky for linky):<br />
<a href="http://twitter.com/PredFans/status/5879068636"><img src="http://www.garrettbartley.com/wp-content/uploads/2009/11/Screen-shot-2009-11-19-at-11.11.35-PM-300x115.png" alt="andreamazing: i want to rub this win in the face of @thatkevinsmith #nhl #preds #hockey" title="Screen shot 2009-11-19 at 11.11.35 PM" width="300" height="115" class="size-medium wp-image-598" /></a></p>
<p><a href="http://twitter.com/ThatKevinSmith/status/5879191216"><img src="http://www.garrettbartley.com/wp-content/uploads/2009/11/Screen-shot-2009-11-19-at-11.03.11-PM-300x138.png" alt="Via @PredFans &quot;i want to rub this win in the face of Kev&quot; A shoot-out win isn&#039;t face-rub worthy, son. Still a point for @NHLDevils." title="Screen shot 2009-11-19 at 11.03.11 PM" width="300" height="138" class="size-medium wp-image-597" /></a></p>
<p>There&#8217;s more about our ReTweetBot and how it works from a user perspective <a href="http://www.retweetbot.com/home/userguide">here</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.garrettbartley.com/2009/11/20/kevin-smith-and-i-are-pretty-much-best-friends-now/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Vista Activation Got You Down?  Bypass it!  (Sort of)</title>
		<link>http://www.garrettbartley.com/2009/10/20/vista-activation-got-you-down-bypass-it-sort-of/</link>
		<comments>http://www.garrettbartley.com/2009/10/20/vista-activation-got-you-down-bypass-it-sort-of/#comments</comments>
		<pubDate>Tue, 20 Oct 2009 20:36:35 +0000</pubDate>
		<dc:creator>Garrett</dc:creator>
				<category><![CDATA[Geek Stuff]]></category>

		<guid isPermaLink="false">http://www.garrettbartley.com/?p=592</guid>
		<description><![CDATA[Let&#8217;s just start from the beginning (aka &#8220;the excuse&#8221;).  I had to install Windows XP or Vista on my MacBook Pro for the data architect class I&#8217;ve been taking.  Since this is work-related, I snagged work&#8217;s copy of Vista.  We have a volume license, etc, etc, so it&#8217;s legit.  However, I [...]]]></description>
			<content:encoded><![CDATA[<p>Let&#8217;s just start from the beginning (aka &#8220;the excuse&#8221;).  I had to install Windows XP or Vista on my MacBook Pro for the data architect class I&#8217;ve been taking.  Since this is work-related, I snagged work&#8217;s copy of Vista.  We have a volume license, etc, etc, so it&#8217;s legit.  However, I installed it and did not activate it.  30 days later&#8230; It turns out the installation I used had a limited number of activations.  I was supposed to use the upgrade copy.  Long story short, I was able to just type in the upgrade key and it worked.  However, I did not attempt that at first (it just seemed too simple).</p>
<p>So, there you are.  Vista wants you to activate or it will feed your first born to kobolds.  You may be able to get by without activation.  Tell the activation wizard that you&#8217;d like to continue using your computer with limited functionality.  This will open your default browser (Firefox for me) and take you to a web page about activation.  From the web browser, go to File -> Open (or your browser&#8217;s equivalent).  Now, type in &#8220;C:\Windows\Explorer.exe&#8221;.  It will prompt you to download explorer.exe.  Just save it to your desktop.  Now, either from the Open/Run dialog or the downloads window, execute explorer.exe.  Ah ha!  Now you have a desktop!  The start menu doesn&#8217;t seem to work, but I was able to open My Computer from my desktop.  From there, type &#8220;C:\Windows\system32\taskmgr.exe&#8221; in the address bar of the My Computer window.  This will launch Task Manager which will let you run just about everything else on your computer by using File -> New Task.</p>
<p>It&#8217;s pretty gimpy, but it worked for me.  On the MacBook Pro, it also disabled right-click and some startup programs (such as Dropbox).  If you want to browse hidden or system files, open My Computer and press the Alt key.  This should give you the standard menu bar.  Just go to Tools -> Options and uncheck the appropriate boxes.</p>
<p>Disclaimer: I do not intend to condone piracy or hacking or cracking or whatever negative connotations you may want to associate with this.  It is simply a workaround as a last-ditch effort when activation is not an option for you.  Your mileage may vary.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.garrettbartley.com/2009/10/20/vista-activation-got-you-down-bypass-it-sort-of/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Time Machine Backup to Samba NAS with Mac OS X 10.5.8</title>
		<link>http://www.garrettbartley.com/2009/08/29/time-machine-backup-to-samba-nas-with-mac-os-x-10-5-8/</link>
		<comments>http://www.garrettbartley.com/2009/08/29/time-machine-backup-to-samba-nas-with-mac-os-x-10-5-8/#comments</comments>
		<pubDate>Sat, 29 Aug 2009 19:16:51 +0000</pubDate>
		<dc:creator>Garrett</dc:creator>
				<category><![CDATA[Geek Stuff]]></category>
		<category><![CDATA[10.5.8]]></category>
		<category><![CDATA[backup]]></category>
		<category><![CDATA[cifs]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[mac os x]]></category>
		<category><![CDATA[mac os x 10.5.8]]></category>
		<category><![CDATA[mac osx]]></category>
		<category><![CDATA[mac osx 10.5.8]]></category>
		<category><![CDATA[nas]]></category>
		<category><![CDATA[network]]></category>
		<category><![CDATA[os x]]></category>
		<category><![CDATA[os x 10.5.58]]></category>
		<category><![CDATA[osx]]></category>
		<category><![CDATA[osx 10.5.8]]></category>
		<category><![CDATA[samba]]></category>
		<category><![CDATA[share network share]]></category>
		<category><![CDATA[time machine]]></category>
		<category><![CDATA[timemachine]]></category>

		<guid isPermaLink="false">http://www.garrettbartley.com/?p=559</guid>
		<description><![CDATA[After a couple of days of struggling and Googling, I finally came across a resource that worked to allow Time Machine to back up to my NAS over Samba with Mac OS X 10.5.8.  The resource I found is How to setup your QNAP NAS with Apple Time Machine.  However, it&#8217;s not put [...]]]></description>
			<content:encoded><![CDATA[<p>After a couple of days of struggling and Googling, I finally came across a resource that worked to allow Time Machine to back up to my NAS over Samba with Mac OS X 10.5.8.  The resource I found is <a href="http://wiki.qnap.com/wiki/How_to_setup_your_QNAP_NAS_with_Apple_Time_Machine">How to setup your QNAP NAS with Apple Time Machine</a>.  However, it&#8217;s not put together very well.  So I decided to make my own write-up in my own words and screenshots, borrowing knowledge from other links and the rsync command from the QNAP wiki.  I really wanted to have a good backup before the transition to Snow Leopard (Mac OS X 10.6).</p>
<ol>
<li>Find your computer&#8217;s name.  This is found in System Preferences -> Sharing in the Computer Name field.<br />
<a href="http://www.garrettbartley.com/wp-content/uploads/2009/08/Picture-1.png"><img src="http://www.garrettbartley.com/wp-content/uploads/2009/08/Picture-1-300x251.png" alt="Picture 1" title="Picture 1" width="300" height="251" class="aligncenter size-medium wp-image-563" /></a></li>
<li>Find your ethernet adapter&#8217;s MAC address (not wireless, but the physical ethernet).  This is found in System Preferences -> Network -> Ethernet -> Advanced -> Ethernet and it is the Ethernet ID.<br />
<a href="http://www.garrettbartley.com/wp-content/uploads/2009/08/Picture-2.png"><img src="http://www.garrettbartley.com/wp-content/uploads/2009/08/Picture-2-300x215.png" alt="Picture 2" title="Picture 2" width="300" height="215" class="aligncenter size-medium wp-image-564" /></a></li>
<li>Find your hard drive size.  Right-click on your hard drive on your desktop and select Get Info.  Then look for the capacity line.  This may report something a little funny like 297.77 GB.  In my case, I have a 320GB hard drive.  You may need to look up the specs on your laptop to get this number.<br />
<a href="http://www.garrettbartley.com/wp-content/uploads/2009/08/Picture-3.png"><img src="http://www.garrettbartley.com/wp-content/uploads/2009/08/Picture-3-155x300.png" alt="Picture 3" title="Picture 3" width="155" height="300" class="aligncenter size-medium wp-image-565" /></a></li>
<li>Come up with a good short name for your computer.  Since my computer&#8217;s name is &#8220;Garrett Bartley&#8217;s MacBook Pro&#8221;, I came up with &#8220;GBMBP&#8221;.  Try to keep this as short as possible (5 characters max).</li>
<li>Open the Terminal from Applications -> Utilities -> Terminal.</li>
<li>In the Terminal window, type

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">hdiutil create <span style="color: #660033;">-size</span> <span style="color: #7a0874; font-weight: bold;">&#123;</span>Hard drive <span style="color: #c20cb9; font-weight: bold;">size</span> from step <span style="color: #000000;">3</span><span style="color: #7a0874; font-weight: bold;">&#125;</span>g <span style="color: #660033;">-fs</span> HFS+J <span style="color: #660033;">-volname</span> <span style="color: #ff0000;">&quot;TM_{Name made up from step 4}&quot;</span> <span style="color: #ff0000;">&quot;{Computer name from step 1}_{MAC address minus the colons (:) from step 2}.sparsebundle&quot;</span></pre></div></div>

<p> replacing everything in the curly braces (including the braces themselves) with the proper values.  Do not close Terminal just yet.</li>
<li>Once that has completed, open Finder and browse for the network share you wish to back up to.  Double-click it to open it and enter any authentication to get it to mount.</li>
<li>Now type

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">ls</span> <span style="color: #000000; font-weight: bold;">/</span>Volumes</pre></div></div>

<p> in Terminal to get the name of the place where the network share is mounted.  It should be same name as the share name, but it never hurts to double-check</li>
<li>Type

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">rsync <span style="color: #660033;">-avE</span> <span style="color: #ff0000;">&quot;{Computer name from step 1}_{MAC address minus the colons (:) from step 2}.sparsebundle&quot;</span> <span style="color: #000000; font-weight: bold;">/</span>Volumes<span style="color: #000000; font-weight: bold;">/</span><span style="color: #7a0874; font-weight: bold;">&#123;</span>Share Name from step <span style="color: #000000;">7</span><span style="color: #7a0874; font-weight: bold;">&#125;</span><span style="color: #000000; font-weight: bold;">/</span></pre></div></div>

<p> in Terminal, once again replacing the curly braces with the proper values.</li>
<li>Once the rsync copy has finished, it is safe to delete the file.  Type

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">rm</span> <span style="color: #660033;">-rf</span> <span style="color: #ff0000;">&quot;{Computer name from step 1}_{MAC address minus the colons (:) from step 2}.sparsebundle&quot;</span></pre></div></div>

<li>Now type

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">defaults <span style="color: #c20cb9; font-weight: bold;">write</span> com.apple.systempreferences TMShowUnsupportedNetworkVolumes <span style="color: #000000;">1</span></pre></div></div>

<p> to enable Time Machine to see your share.  After this, it is safe to close Terminal.  You may have to log out and log back in or restart your computer for this to take affect.  If you don&#8217;t see your network share in Time Machine in the steps below, log in/out or restart and try the next steps again.</li>
<li>Now open Time Machine by going to System Preferences -> Time Machine.<br />
<a href="http://www.garrettbartley.com/wp-content/uploads/2009/08/Picture-4.png"><img src="http://www.garrettbartley.com/wp-content/uploads/2009/08/Picture-4-300x210.png" alt="Picture 4" title="Picture 4" width="300" height="210" class="aligncenter size-medium wp-image-566" /></a></li>
<li>Click Choose Backup Disk and select your network share.  Then click Use for Backup.  Enter your username and password to the share if prompted.<br />
<a href="http://www.garrettbartley.com/wp-content/uploads/2009/08/Picture-5.png"><img src="http://www.garrettbartley.com/wp-content/uploads/2009/08/Picture-5-300x174.png" alt="Picture 5" title="Picture 5" width="300" height="174" class="aligncenter size-medium wp-image-567" /></a></li>
<li>Now wait for the 120-second countdown to finish.  It may take a while to prepare, but it will get there eventually.<br />
<a href="http://www.garrettbartley.com/wp-content/uploads/2009/08/Picture-6.png"><img src="http://www.garrettbartley.com/wp-content/uploads/2009/08/Picture-6-300x210.png" alt="Picture 6" title="Picture 6" width="300" height="210" class="aligncenter size-medium wp-image-568" /></a></li>
</ol>
<p>To help speed things up, you may want to tell Spotlight to not index the backup.  You can only do this once the backup has made it past the preparing stage and started copying data.  Otherwise, you will get an error.</p>
<ol>
<li>Open System Preferences -> Spotlight.</li>
<li>Go to Privacy.</li>
<li>Click the + and add the &#8220;TM_{Name made up from step 4}&#8221; under the Devices section.</li>
</ol>
<p>Another thing to consider is if you have any backup solutions such as DropBox or Mozy, you can exclude those from the Time Machine backup as well.  Do this by clicking Options in Time Machine and click the + to add those directories.</p>
<p>This process worked great for me on my Mac Mini and my MacBook Pro.  Both are running Mac OS X 10.5.8 with all software updates to-date (as of the time of posting).  Depending on the amount of data on your hard drive, it could take a while.  If you can, plug your Mac into your ethernet network to help speed things up.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.garrettbartley.com/2009/08/29/time-machine-backup-to-samba-nas-with-mac-os-x-10-5-8/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>That&#8217;s Me on the Griffin Technology Blog!</title>
		<link>http://www.garrettbartley.com/2009/07/28/thats-me-on-the-griffin-technology-blog/</link>
		<comments>http://www.garrettbartley.com/2009/07/28/thats-me-on-the-griffin-technology-blog/#comments</comments>
		<pubDate>Wed, 29 Jul 2009 02:32:23 +0000</pubDate>
		<dc:creator>Garrett</dc:creator>
				<category><![CDATA[Geek Stuff]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[barcamp]]></category>
		<category><![CDATA[barcampchatt]]></category>
		<category><![CDATA[barcampchatt09]]></category>
		<category><![CDATA[griffin]]></category>
		<category><![CDATA[griffin technology]]></category>

		<guid isPermaLink="false">http://www.garrettbartley.com/?p=553</guid>
		<description><![CDATA[I was featured on the Griffin Technology Blog as a prize winner from this past weekend&#8217;s BarCamp!
Here&#8217;s a screenshot just in case they archive the post and it goes away.

]]></description>
			<content:encoded><![CDATA[<p>I was featured on the <a href="http://blog.griffintechnology.com/archives/chattanooga-rocks-it-barcamp-style">Griffin Technology Blog</a> as a prize winner from this past weekend&#8217;s <a href="http://2009.barcampchatt.com">BarCamp</a>!</p>
<p>Here&#8217;s a screenshot just in case they archive the post and it goes away.<br />
<a href="http://www.garrettbartley.com/wp-content/uploads/2009/07/Picture-5.png"><img src="http://www.garrettbartley.com/wp-content/uploads/2009/07/Picture-5-300x243.png" alt="Picture 5" title="Picture 5" width="300" height="243" class="aligncenter size-medium wp-image-554" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.garrettbartley.com/2009/07/28/thats-me-on-the-griffin-technology-blog/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Networking at BarCamp Chattanooga 2009</title>
		<link>http://www.garrettbartley.com/2009/07/27/networking-at-barcamp-chattanooga-2009/</link>
		<comments>http://www.garrettbartley.com/2009/07/27/networking-at-barcamp-chattanooga-2009/#comments</comments>
		<pubDate>Mon, 27 Jul 2009 23:16:27 +0000</pubDate>
		<dc:creator>Garrett</dc:creator>
				<category><![CDATA[Geek Stuff]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[barcamp]]></category>
		<category><![CDATA[barcampchatt]]></category>
		<category><![CDATA[barcampchatt09]]></category>
		<category><![CDATA[networking]]></category>
		<category><![CDATA[wi-fi]]></category>
		<category><![CDATA[wireless]]></category>

		<guid isPermaLink="false">http://www.garrettbartley.com/?p=536</guid>
		<description><![CDATA[We all know BarCamps are about networking.  Typically people networking or social networking.  The kind of networking I&#8217;m talking about is wireless networking.
This past weekend was Chattanooga&#8217;s first ever BarCamp.  The announcement of the BarCamp was made shortly after I got back from my first ever *Camp (PodCamp Nashville 2009).  Upon [...]]]></description>
			<content:encoded><![CDATA[<p>We all know BarCamps are about networking.  Typically people networking or social networking.  The kind of networking I&#8217;m talking about is wireless networking.</p>
<p>This past weekend was <a href="http://www.barcampchatt.com">Chattanooga&#8217;s first ever BarCamp</a>.  The announcement of the BarCamp was made shortly after I got back from my first ever *Camp (<a href="http://www.podcampnashville.com">PodCamp Nashville 2009</a>).  Upon hearing about it, I immediately volunteered the company I work for, <a href="http://www.airnetgroup.com">AirNet Group</a>, to sponsor by supplying a wireless network.  The venue, <a href="http://www.chattanoogastate.edu">Chattanooga State</a>, had a wireless network, but they were not sure if it would handle the load that a conference such as BarCamp might require.  They had good bandwidth to the Internet, but the wireless may have just broken down under stress.  We decided that a different wireless network would be needed.  That&#8217;s where I stepped in.</p>
<p><a href="http://www.garrettbartley.com/wp-content/uploads/2009/07/APs.png"><img src="http://www.garrettbartley.com/wp-content/uploads/2009/07/APs-300x60.png" alt="APs" title="APs" width="300" height="60" class="aligncenter size-medium wp-image-537" /></a><br />
<em>Access points and their usage in the middle of the day.  I&#8217;m not entirely sure why Outside C30 didn&#8217;t report any usage seeing as to how it was the hop to the lobby and two other classrooms.</em></p>
<p>With room numbers and a single ethernet gateway in mind, I set out placing the access points.  I initially brought in 3 access points thinking that such a small area wouldn&#8217;t require too many.  However, the ethernet connection was in a room that sloped down with the ethernet connection being at the lowest point of the room.  From there, I placed the remaining two access points in or close to the two other classrooms were pre-arranged for usage.  Unfortunately, they were about 10 feet above the gateway access point and several walls away from it (despite being maybe 20 yards away).  A 4th access point was needed and fit the bill nicely.  On the day of the event, two more classrooms were added, but I didn&#8217;t have any extra access points on-hand to expand the network in their direction.  Fortunately, there was only one wall between the classrooms and the gateway access point and that proved to be no problem.  Later in the day, my coworker, <a href="http://www.n00tz.net">Rial</a>, came by with a 5th access point (borrowed from our wireless network at work), and I used it to cover those two extra classrooms just a little bit better.  It wasn&#8217;t needed, but we had it and so why not?</p>
<p><a href="http://www.garrettbartley.com/wp-content/uploads/2009/07/AP-Map.png"><img src="http://www.garrettbartley.com/wp-content/uploads/2009/07/AP-Map-300x169.png" alt="AP Map" title="AP Map" width="300" height="169" class="aligncenter size-medium wp-image-538" /></a><br />
<em>A rough map of the access point placement and the hops it took to get from C54 to the gateway in C30.</em></p>
<p>But that&#8217;s all fine and boring.  What&#8217;s really interesting were the usage patterns throughout the day.  As registration opened at 9 AM, you could see a steady growth up until the 10:00 hour.  When everyone dispersed into the first presentations of the day, the spike continued while people were getting settled in and caffeinated to tune into presentations.  Then, once the presentations were in full-swing and people put down Twitter, the usage dropped considerably.  This was a pattern that repeated all day long for each presentation.  As presentations started and people had yet to get their focus fully committed to the presenters, usage went up.  About halfway in, people are interested and the usage drops.  Then the presentation ended and the usage went back up a little.  Lather.  Rinse.  Repeat.  The patterns were much more pronounced in the 2-hour graphs, but I didn&#8217;t think to screenshot any of those until the day was over.</p>
<p><a href="http://www.garrettbartley.com/wp-content/uploads/2009/07/Usage.png"><img src="http://www.garrettbartley.com/wp-content/uploads/2009/07/Usage-300x194.png" alt="Usage" title="Usage" width="300" height="194" class="aligncenter size-medium wp-image-539" /></a><br />
<em>The usage of the entire day at 5:00 PM plus the top 10 heaviest users (are you one of them?).</em></p>
<p>Another interesting pattern, though not as accurate, was watching as wireless devices moved from the lobby to the classrooms and back.  You could get a sense of which classroom had the most participants during a block just by how the wireless clients moved around.  But after every presentation, they moved back to the main lobby.  It was a sort of ebb and flow that I found interesting.</p>
<p>And, one final note of interestingness is that Apple devices seemed to make up about 75-80% of the devices on the wireless network.  I know my iPhone and MacBook Pro account for at least two of those devices.  I&#8217;m sure many other attendees also had a similar Apple laptop plus iPhone combination.</p>
<p>In all, we had a grand total of 75 connected devices throughout the day.  There were no connectivity issues reported and all seemed to go way better than expected.  I think Murphy must have taken the day off.  I definitely look forward to another *Camp in Chattanooga that I can set up with a wireless network.  I&#8217;ll take more notes and screenshots throughout the day to really see how the traffic flows.</p>
<p>You can also check out the pictures I took at BarCamp in my <a href="http://www.flickr.com/photos/phragmunkee/sets/72157621734029377/">Flickr set</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.garrettbartley.com/2009/07/27/networking-at-barcamp-chattanooga-2009/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Structs, Arrays, and Arrays of Structs in WSDL</title>
		<link>http://www.garrettbartley.com/2009/07/23/structs-arrays-and-arrays-of-structs-in-wsdl/</link>
		<comments>http://www.garrettbartley.com/2009/07/23/structs-arrays-and-arrays-of-structs-in-wsdl/#comments</comments>
		<pubDate>Fri, 24 Jul 2009 00:44:45 +0000</pubDate>
		<dc:creator>Garrett</dc:creator>
				<category><![CDATA[Geek Stuff]]></category>
		<category><![CDATA[array]]></category>
		<category><![CDATA[complex type]]></category>
		<category><![CDATA[multidimensional array]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[soap]]></category>
		<category><![CDATA[struct]]></category>
		<category><![CDATA[wsdl]]></category>

		<guid isPermaLink="false">http://www.garrettbartley.com/?p=522</guid>
		<description><![CDATA[I&#8217;ve been getting into creating web services lately for all sorts of tasks.  I started out with XML-RPC and was hammering away pretty well with it until I discovered that .Net didn&#8217;t like to play with XML-RPC.  Since this was for a top-priority project at work, I dove head first into SOAP despite [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been getting into creating web services lately for all sorts of tasks.  I started out with XML-RPC and was hammering away pretty well with it until I discovered that .Net didn&#8217;t like to play with XML-RPC.  Since this was for a top-priority project at work, I dove head first into SOAP despite not wanting to have to deal with WSDLs.  It seemed that I was in luck.  Built-in SOAP support for PHP 5.x seemed to have finally matured and I didn&#8217;t have to rely on sparsely-documented libraries.  Once I got the hang of writing a WSDL (basically, I found a good template), I was well on my way.  The great thing about SOAP and WSDLs are that the server and client both automatically seem to handle a lot of error-checking for you.  For a high priority action item with just a couple of hours to complete it and diving into something I knew little about, this worked out very well.</p>
<p>I chugged along at my various projects and web services until I hit a roadblock.  I wanted to return a multi-dimensional array from PHP.  That&#8217;s when it all came to a screeching halt.  I could not find ANY documentation on this no matter how many different ways I tried to search using Google.  Heck, I even tried Bing!  No luck at all.  So, I decided to put it off for a few days just to give myself time to get over the frustration.  Every time I started to try to think about it, I would feel the onset of a headache and just get irritable with myself.  Headaches and irritations are terrible for programming!</p>
<p>After a few days, I decided that maybe what I needed was to learn a little bit about the basics of SOAP.  Web sites seemed to just assume you knew what you were doing with SOAP and WSDLs from the get-go.  I had a working web service with SOAP and a WSDL, but I didn&#8217;t have a clue what was going on (and, honestly, I still don&#8217;t have a concrete grasp on it all).  However, it turns out that sometime several months ago, the company I work for bought an O&#8217;Reilly book on SOAP and it was collecting dust on my boss&#8217;s bookshelf.  I immediately snagged it and started reading.  A bunch of it was pretty basic but helped clarify some things.  Then, there was about a page that roughly covered structs and arrays.  It wasn&#8217;t much, but it was just enough.  A struct is basically an associative array value (name = &#8216;Garrett&#8217;, age = 27).  And an array is just a bunch of repeating values.  So, what if I declared a struct complex type and then an array complex type that used the struct as the value.  I tested returning arrays and structs individually and they both worked.  Then I put them together&#8230;and they still worked!  In essence, I have finally figured it out.</p>
<p>So, for your geeky pleasure, I have decided to document this experience and hope that Google indexes it for anyone else out there using PHP and SOAP to return the elusive multi-dimensional array.  I won&#8217;t include the whole WSDL, but just the main message and types portions and the PHP functions used to return them.</p>
<p>(I apologize for the horizontal scrolling, but I like to keep my code tabbed and formatted nicely.)</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">&lt;!-- The types declarations --&gt;</span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;types<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;schema</span> <span style="color: #000066;">xmlns</span>=<span style="color: #ff0000;">&quot;http://www.w3.org/2001/XMLSchema&quot;</span></span>
<span style="color: #009900;">		<span style="color: #000066;">targetNamespace</span>=<span style="color: #ff0000;">&quot;http://www.xmltc.com/railco/transform/schema/&quot;</span> <span style="color: #000000; font-weight: bold;">&gt;</span></span>
&nbsp;
		<span style="color: #808080; font-style: italic;">&lt;!-- Here's the struct for name and age --&gt;</span>
		<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;complexType</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;TestStruct&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
			<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;sequence<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
				<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;element</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;name&quot;</span> <span style="color: #000066;">type</span>=<span style="color: #ff0000;">&quot;xsd:string&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
				<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;element</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;age&quot;</span> <span style="color: #000066;">type</span>=<span style="color: #ff0000;">&quot;xsd:string&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
			<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/sequence<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
		<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/complexType<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
&nbsp;
		<span style="color: #808080; font-style: italic;">&lt;!-- Here's an array that just returns a series of simple string repeating values --&gt;</span>
		<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;complexType</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;ArrayOfString&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
			<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;complexContent<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
				<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;restriction</span> <span style="color: #000066;">base</span>=<span style="color: #ff0000;">&quot;SOAP-ENC:Array&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
					<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;sequence<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
						<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;element</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;test&quot;</span> <span style="color: #000066;">type</span>=<span style="color: #ff0000;">&quot;string&quot;</span> <span style="color: #000066;">minOccurs</span>=<span style="color: #ff0000;">&quot;0&quot;</span> <span style="color: #000066;">maxOccurs</span>=<span style="color: #ff0000;">&quot;unbounded&quot;</span> <span style="color: #000066;">nillable</span>=<span style="color: #ff0000;">&quot;true&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
					<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/sequence<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
					<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;attributeGroup</span> <span style="color: #000066;">ref</span>=<span style="color: #ff0000;">&quot;SOAP-ENC:arrayType&quot;</span> <span style="color: #000066;">xsd:arrayType</span>=<span style="color: #ff0000;">&quot;string[]&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
				<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/restriction<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
			<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/complexContent<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
		<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/complexType<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
&nbsp;
		<span style="color: #808080; font-style: italic;">&lt;!-- Combine the two and we return an array of repeating structs! --&gt;</span>
		<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;complexType</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;ArrayOfStruct&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
			<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;complexContent<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
				<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;restriction</span> <span style="color: #000066;">base</span>=<span style="color: #ff0000;">&quot;SOAP-ENC:Array&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
					<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;sequence<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
						<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;element</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;test2&quot;</span> <span style="color: #000066;">type</span>=<span style="color: #ff0000;">&quot;TestStruct&quot;</span> <span style="color: #000066;">minOccurs</span>=<span style="color: #ff0000;">&quot;0&quot;</span> <span style="color: #000066;">maxOccurs</span>=<span style="color: #ff0000;">&quot;unbounded&quot;</span> <span style="color: #000066;">nillable</span>=<span style="color: #ff0000;">&quot;true&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
					<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/sequence<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
					<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;attributeGroup</span> <span style="color: #000066;">ref</span>=<span style="color: #ff0000;">&quot;SOAP-ENC:arrayType&quot;</span> <span style="color: #000066;">xsd:arrayType</span>=<span style="color: #ff0000;">&quot;TestStruct[]&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
				<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/restriction<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
			<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/complexContent<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
		<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/complexType<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
&nbsp;
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/schema<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/types<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
&nbsp;
<span style="color: #808080; font-style: italic;">&lt;!-- And returning the ArrayOfStruct in a method --&gt;</span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;message</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;test_struct&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;message</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;test_struct_resp&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;part</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;test&quot;</span> <span style="color: #000066;">type</span>=<span style="color: #ff0000;">&quot;xsd:ArrayOfStruct&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/message<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></div></div>

<p>Now, for the PHP.</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #666666; font-style: italic;"># Return the array
</span><span style="color: #000000; font-weight: bold;">function</span> test_array<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	<span style="color: #b1b100;">return</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'hi'</span><span style="color: #339933;">,</span><span style="color: #0000ff;">'there'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># Return the struct
</span><span style="color: #000000; font-weight: bold;">function</span> test_struct<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	<span style="color: #000088;">$arr</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span>
		<span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span>
			<span style="color: #0000ff;">'name'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'Garrett'</span><span style="color: #339933;">,</span>
			<span style="color: #0000ff;">'age'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #cc66cc;">27</span>
		<span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
		<span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span>
			<span style="color: #0000ff;">'name'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'Amy'</span><span style="color: #339933;">,</span>
			<span style="color: #0000ff;">'age'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #cc66cc;">28</span>
		<span style="color: #009900;">&#41;</span>
	<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #b1b100;">return</span> <span style="color: #000088;">$arr</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>I didn&#8217;t include the code for returning the struct with a single entry, but I think you get the picture.  Here&#8217;s what the response looks like in <a href="http://ditchnet.org/soapclient/">SOAP Client</a> for the Mac (click image for larger version).<br />
<a href="http://www.garrettbartley.com/wp-content/uploads/2009/07/SOAP-Client-Struct-Array.png"><img src="http://www.garrettbartley.com/wp-content/uploads/2009/07/SOAP-Client-Struct-Array-256x300.png" alt="SOAP Client Struct Array" title="SOAP Client Struct Array" width="256" height="300" class="aligncenter size-medium wp-image-533" /></a></p>
<p>I really hope that helps someone out there because it frustrated me to no end for several days!</p>
<p>Also, if you do have a Mac, I HIGHLY recommend downloading <a href="http://ditchnet.org/soapclient/">SOAP Client</a>.  It is a very excellent piece of software that does one thing and does it very, very well!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.garrettbartley.com/2009/07/23/structs-arrays-and-arrays-of-structs-in-wsdl/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Another shot of the cardboard laptop photo frame</title>
		<link>http://www.garrettbartley.com/2009/05/07/another-shot-of-the-cardboard-laptop-photo-frame/</link>
		<comments>http://www.garrettbartley.com/2009/05/07/another-shot-of-the-cardboard-laptop-photo-frame/#comments</comments>
		<pubDate>Thu, 07 May 2009 21:31:08 +0000</pubDate>
		<dc:creator>Garrett</dc:creator>
				<category><![CDATA[Geek Stuff]]></category>
		<category><![CDATA[Pictures]]></category>

		<guid isPermaLink="false">http://www.garrettbartley.com/2009/05/07/another-shot-of-the-cardboard-laptop-photo-frame/</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.flickr.com/photos/phragmunkee/3412221468/" title="Untitled by PhragMunkee, on Flickr"><img src="http://farm4.static.flickr.com/3637/3412221468_d5ab5c0907.jpg" width="500" height="375" alt="" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.garrettbartley.com/2009/05/07/another-shot-of-the-cardboard-laptop-photo-frame/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Windows XP: Access is denied.</title>
		<link>http://www.garrettbartley.com/2009/04/24/windows-xp-access-is-denied/</link>
		<comments>http://www.garrettbartley.com/2009/04/24/windows-xp-access-is-denied/#comments</comments>
		<pubDate>Fri, 24 Apr 2009 20:09:15 +0000</pubDate>
		<dc:creator>Garrett</dc:creator>
				<category><![CDATA[Geek Stuff]]></category>

		<guid isPermaLink="false">http://www.garrettbartley.com/?p=475</guid>
		<description><![CDATA[
Error Deleting File or Folder
Cannot delete filename: Access is denied.
Make sure the disk is not full or write-protected and that the file is not currently in use.
Sound familiar?
Over the years, I have stumbled into this error more times than I care to count.  And I&#8217;m pretty sure the culprit is doing rsync backups from [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.garrettbartley.com/wp-content/uploads/2009/04/error_deleting_file_or_folder.png" alt="error_deleting_file_or_folder" title="error_deleting_file_or_folder" width="311" height="157" class="aligncenter size-full wp-image-476" /></p>
<div style="width: 311px; margin: auto">
<em><strong>Error Deleting File or Folder</strong><br />
Cannot delete filename: Access is denied.</p>
<p>Make sure the disk is not full or write-protected and that the file is not currently in use.</em></div>
<p>Sound familiar?</p>
<p>Over the years, I have stumbled into this error more times than I care to count.  And I&#8217;m pretty sure the culprit is doing rsync backups from my Linux server to my Windows file server using CygWin.  I finally think I have a fix, though.  This is working in Windows XP and I assume that it will work in Windows Server 2000 and 2003 and maybe even Vista, Windows 7, and Server 2008 (as long as it&#8217;s Windows NT-based and NTFS).</p>
<p>If it&#8217;s a single file:</p>
<ol>
<li>Right-click on the offending file and go to properties.</li>
<li>Go to the Security tab.</li>
<li>Click on the Advanced button in the bottom right (above OK, Cancel).</li>
<li>Go to the Owner tab.</li>
<li>In the &#8220;Change owner to&#8221; frame, highlight your username, and then click Apply in the bottom right.</li>
<li>Click OK a couple of times to get back to your file.</li>
<li>Right-click on the file and go to properties (yes, again)</li>
<li>Go back to the Security tab.</li>
<li>Click on the Advanced button again.</li>
<li>Make sure you are in the Permissions tab.</li>
<li>Click the &#8220;Allow inheritable permissions from the parent to propogate &#8230;&#8221; checkbox.</li>
<li>Click OK a couple of times to get back to your file.  You should be able to delete it!</li>
</ol>
<p>For a directory:</p>
<ol>
<li>Right-click on the directory and go to Properties.</li>
<li>Go to the Security tab.</li>
<li>Click on the Advanced button.</li>
<li>Go to the Owner tab.</li>
<li>Highlight your username.</li>
<li>Click the &#8220;Replace owner on subcontainers and objects&#8221; checkbox.</li>
<li>Click OK a couple of times to get back to the directory.</li>
<li>Right-click on the directory and go to Properties (again).</li>
<li>Go to the Security tab.</li>
<li>Click on the Advanced button.</li>
<li>Make sure you are in the Permissions tab.</li>
<li>Click the &#8220;Allow inheritable permissions from the parent to propogate &#8230;&#8221; checkbox. </li>
<li>Click the &#8220;Replace permission entries on all child objects &#8230;&#8221; checkbox.</li>
<li>Click OK a couple of times.  You may have to tell a pop-up message Yes.</li>
<li>Delete the directory!</li>
</ol>
<p>That&#8217;s been bothering me for years and nobody else seems to have had that problem (that or my Google-fu sucks).  So, I&#8217;m putting this out there so that Google will pick it up and hopefully help out somebody else.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.garrettbartley.com/2009/04/24/windows-xp-access-is-denied/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Laptop Photo Frame &#8211; SketchUp</title>
		<link>http://www.garrettbartley.com/2009/03/29/laptop-photo-frame-sketchup/</link>
		<comments>http://www.garrettbartley.com/2009/03/29/laptop-photo-frame-sketchup/#comments</comments>
		<pubDate>Sun, 29 Mar 2009 23:09:28 +0000</pubDate>
		<dc:creator>Garrett</dc:creator>
				<category><![CDATA[Geek Stuff]]></category>
		<category><![CDATA[emachine]]></category>
		<category><![CDATA[laptop photo frame]]></category>
		<category><![CDATA[m5310]]></category>
		<category><![CDATA[sketchup]]></category>

		<guid isPermaLink="false">http://www.garrettbartley.com/?p=460</guid>
		<description><![CDATA[After assembling the prototype template using cardboard, I started taking external measurements.  Refinements to cutouts were made and all dimensions were converted to millimeters.  I&#8217;m strongly considering using Ponoko for this project.  It&#8217;s a good excuse to try it out.
Here&#8217;s a shot of the external part of the frame in SketchUp.  [...]]]></description>
			<content:encoded><![CDATA[<p>After assembling the prototype template using cardboard, I started taking external measurements.  Refinements to cutouts were made and all dimensions were converted to millimeters.  I&#8217;m strongly considering using <a href="http://www.ponoko.com">Ponoko</a> for this project.  It&#8217;s a good excuse to try it out.</p>
<p>Here&#8217;s a shot of the external part of the frame in SketchUp.  I changed the color to black and set it to 75% transparency.  The final product will be completely transparent.</p>
<p><a href="http://www.garrettbartley.com/wp-content/uploads/2009/03/lcd-photo-frame.jpg"><img src="http://www.garrettbartley.com/wp-content/uploads/2009/03/lcd-photo-frame-300x219.jpg" alt="lcd-photo-frame" title="lcd-photo-frame" width="300" height="219" class="aligncenter size-medium wp-image-461" /></a></p>
<p><b>Update</b><br />
And here&#8217;s the internals.  A couple of pieces for the motherboard and the LCD to mount or rest on.  Some dead space in between.  And some pieces to connect the mounting pieces and provide more rigidity to the whole thing.</p>
<p><a href="http://www.garrettbartley.com/wp-content/uploads/2009/03/lcd-photo-frame-mounts.jpg"><img src="http://www.garrettbartley.com/wp-content/uploads/2009/03/lcd-photo-frame-mounts-300x240.jpg" alt="lcd-photo-frame-mounts" title="lcd-photo-frame-mounts" width="300" height="240" class="aligncenter size-medium wp-image-467" /></a></p>
<p><b>Another Update</b><br />
Ponoko isn&#8217;t cheap.  I&#8217;ll probably be doing this one without Ponoko.<br />
<img src="http://www.garrettbartley.com/wp-content/uploads/2009/03/picture-2.png" alt="picture-2" title="picture-2" width="215" height="272" class="aligncenter size-full wp-image-473" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.garrettbartley.com/2009/03/29/laptop-photo-frame-sketchup/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Laptop Photo Frame &#8211; Cardboard Version</title>
		<link>http://www.garrettbartley.com/2009/03/28/laptop-photo-frame-cardboard-version/</link>
		<comments>http://www.garrettbartley.com/2009/03/28/laptop-photo-frame-cardboard-version/#comments</comments>
		<pubDate>Sat, 28 Mar 2009 17:31:01 +0000</pubDate>
		<dc:creator>Garrett</dc:creator>
				<category><![CDATA[Geek Stuff]]></category>
		<category><![CDATA[cardboard]]></category>
		<category><![CDATA[emachine]]></category>
		<category><![CDATA[laptop photo frame]]></category>
		<category><![CDATA[m5310]]></category>

		<guid isPermaLink="false">http://www.garrettbartley.com/?p=411</guid>
		<description><![CDATA[After stumbling across this site, I decided to dig up my old eMachine M5310 laptop and see what I could fashion out of it.  Fair warning, I was lazy and didn’t feel like getting out a real camera.  All of the pictures were taken with my iPhone 3G.
My old eMachine has been a [...]]]></description>
			<content:encoded><![CDATA[<p>After stumbling across <a href="http://blog.glowview.com/2009/03/20/custom-self-contained-hanging-wall-pc/">this site</a>, I decided to dig up my old eMachine M5310 laptop and see what I could fashion out of it.  Fair warning, I was lazy and didn’t feel like getting out a real camera.  All of the pictures were taken with my iPhone 3G.</p>
<p>My old eMachine has been a pretty trusty old laptop.  The original motherboard in it died about 3 years and 10 months into the 4 year warranty.  The original 40GB hard drive died somewhere in the 3rd year as well and was replaced by warranty with a 60GB hard drive.  Other than the usual stuff dieing over the years due to use and abuse, it has been a very good laptop.  The battery was completely dead, so I recycled it to reduce weight on the thing.  One of the two hinges on the screen also broke, so it was a little flimsy.  Ever since getting my new unibody MacBook Pro in November, I haven’t touched the laptop.  It’s been collecting dust under the end table for a few months now.</p>
<p>So I was bored and stumbling around and came across the page mentioned earlier and I decided to try my own laptop photo frame project of my own.  However, most laptops turned photo frames are typically 13″ or smaller.  My old laptop is a 15.4″ and widescreen, which, I think, might make it a little more difficult.</p>
<p>Step one was to disassemble the laptop.  After about 20-30 carefully removed screws and some carefully pried plastic (due to adhesives), I had the thing apart on my coffee table.  Some parts were kinda tricky, but it was mostly time-consuming and tedious (but easy).  The only problem with screws I had to worry about is how to get the heat pipes re-mounted over the processor.  They originally screwed through the motherboard and into the case.  Without the case being there, I had to come up with something else.  I got out my computer screw box and found 4 long screws that fit through the motherboard and conveniently screwed into standard case mount screws.  This gave me an idea to use a little later on.</p>
<p><a href="http://www.flickr.com/photos/phragmunkee/3390741227/" title="IMG_0191 by PhragMunkee, on Flickr"><img src="http://farm4.static.flickr.com/3577/3390741227_7526f4ee2c_m.jpg" alt="IMG_0191" height="240" width="180"></a><br />
<a href="http://www.flickr.com/photos/phragmunkee/3390741439/" title="IMG_0193 by PhragMunkee, on Flickr"><img src="http://farm4.static.flickr.com/3420/3390741439_9c92155e77_m.jpg" alt="IMG_0193" height="180" width="240"></a><br />
<a href="http://www.flickr.com/photos/phragmunkee/3390741535/" title="IMG_0194 by PhragMunkee, on Flickr"><img src="http://farm4.static.flickr.com/3628/3390741535_70789e8720_m.jpg" alt="IMG_0194" height="180" width="240"></a></p>
<p>The next step was to come up with a template or prototype.  I snagged some big cardboard boxes from work and decided to use them as easy-to-use material for crafting the template.  I knew I needed a mounting board because the motherboard is a little flimsy.  I also needed a way to help secure the CD-ROM drive and hard drive with the case mounts mentioned above.  At this point, I had 6 mount screws already attached, so I put more screws through the holes in the motherboard and secured them with the mount screws.  I also used one of the holes off in the corner to mount the LED “status board” (with the hard drive and power blinky lights) on the board.</p>
<p><a href="http://www.flickr.com/photos/phragmunkee/3390741313/" title="IMG_0192 by PhragMunkee, on Flickr"><img src="http://farm4.static.flickr.com/3470/3390741313_71f6317c7c_m.jpg" alt="IMG_0192" height="240" width="180"></a><br />
<a href="http://www.flickr.com/photos/phragmunkee/3391552944/" title="IMG_0195 by PhragMunkee, on Flickr"><img src="http://farm4.static.flickr.com/3473/3391552944_57e186cc14_m.jpg" alt="IMG_0195" height="240" width="180"></a></p>
<p>Next, I traced an outline of the motherboard on a piece of cardboard and cut it out.  I made sure to trim back a hair to allow the ports on the back to be exposed.  Once I had the cutout, I basically mashed the motherboard on its mounts into the cardboard to make holes for the mounts.  From there, I use more case mount screws to help mount the ones connected to the motherboard to the piece of cardboard.  At that point, things were feeling pretty secure.  All I had to do next was make one more big cardboard cutout to go between the mounting board and the LCD so things didn’t puncture and add a little more rigidity to the whole frame.  Without the extra piece, I think the whole thing would be pretty wobbly and wouldn’t stand up very well.</p>
<p><a href="http://www.flickr.com/photos/phragmunkee/3390741681/" title="IMG_0196 by PhragMunkee, on Flickr"><img src="http://farm4.static.flickr.com/3623/3390741681_0f59c4e6c6_m.jpg" alt="IMG_0196" height="180" width="240"></a><br />
<a href="http://www.flickr.com/photos/phragmunkee/3391553128/" title="IMG_0197 by PhragMunkee, on Flickr"><img src="http://farm4.static.flickr.com/3645/3391553128_fb709c07cc_m.jpg" alt="IMG_0197" height="180" width="240"></a></p>
<p>So far, all is well with construction.  However, as everyone knows, as soon as things start going right, something is bound to go wrong.  I decided I better check and make sure the darn thing still turned on!  I went ahead and stacked it up flat and tried to turn it on.  No go.  For some reason, it would not turn on with the wireless antennae hooked up to the wireless card.  As soon as I unplugged those, it turned on like a champ.  Since it has to be plugged in all the time anyways, I decided wireless wasn’t a very important feature.  If it’s tethered with power, it might as well be tethered with ethernet.  That, or I could try and find a PCMCIA wireless card (with better Linux compatibility) later.</p>
<p><a href="http://www.flickr.com/photos/phragmunkee/3390741839/" title="IMG_0198 by PhragMunkee, on Flickr"><img src="http://farm4.static.flickr.com/3651/3390741839_e8dd1eac33_m.jpg" alt="IMG_0198" height="180" width="240"></a></p>
<p>If you’ll also notice, I had the motherboard facing the wrong direction.  I wanted the exhaust fan to be at the top (heat rises) and to be able to cut some ventilation holes at the bottom to create a bottom-to-top airflow.  This required the LCD to be flipped upside down, which actually turned out to be beneficial.  The original orientation had the LCD cable being wrapped over and around the USB ports on the back.  The new way just required me to cut a slit in the already blank space on the mounting board and all was well.</p>
<p>The final few steps were to cut out the actual box the whole mess would fit into.  I basically took measurements and went and cut them out of cardboard.  Then I lined them up to the sides and made marks and took measurements of the cutouts I would have to do for the ports and whatnot.  I also cut out a frame to go around the LCD and one large back piece to cover the motherboard.  I made the circular cutout for the fan by tracing a tea candle.  After liberal amounts of masking tape, it was all put together!</p>
<p><a href="http://www.flickr.com/photos/phragmunkee/3390743013/" title="IMG_0214 by PhragMunkee, on Flickr"><img src="http://farm4.static.flickr.com/3615/3390743013_9376e9a7dd_m.jpg" alt="IMG_0214" height="180" width="240"></a><br />
<a href="http://www.flickr.com/photos/phragmunkee/3390742895/" title="IMG_0213 by PhragMunkee, on Flickr"><img src="http://farm4.static.flickr.com/3636/3390742895_4c6c2645fc_m.jpg" alt="IMG_0213" height="240" width="180"></a><br />
<a href="http://www.flickr.com/photos/phragmunkee/3390743085/" title="IMG_0215 by PhragMunkee, on Flickr"><img src="http://farm4.static.flickr.com/3054/3390743085_c6b7f81c25_m.jpg" alt="IMG_0215" height="240" width="180"></a><br />
<a href="http://www.flickr.com/photos/phragmunkee/3390743159/" title="IMG_0216 by PhragMunkee, on Flickr"><img src="http://farm4.static.flickr.com/3606/3390743159_fda15398e5_m.jpg" alt="IMG_0216" height="180" width="240"></a></p>
<p>As you can see, it’s not perfect.  Nor was it meant to be.  I wanted to use the cardboard to get the basic construction down.  From there, I will be able to refine the measurements and probably build a final design in <a href="http://sketchup.google.com">Google’s SketchUp</a>.  For the final version, I’m thinking about trying out <a href="http://www.ponoko.com">Ponoko</a> or maybe keep going with the DIY route and buy a Dremel and some Lexan.  I think this would be a good way to test out <a href="http://www.ponoko.com">Ponoko</a> (assuming they’ve got their shipping prices down).  If not, I’ll just make it super-geeky and transparent.  For the final product, I also plan on cutting out the power button panel (with the power button, volume up/down etc) and the status LED panel to make the unmarked buttons and LEDs a little more informative.  The speakers for the laptop are also super-duper-glued into a bar that I can’t seem to get pried apart.  I’ll probably need a Dremel to cut into that and get the speakers out.  I’ll find some empty space in the frame to mount those with rubber cement.  And, finally, when I reconstruct it, I’ll see if I can’t figure out why the thing won’t turn on with the wireless antennae hooked up.  I’m wondering if it’s just having problems creating a closed loop.</p>
<p><a href="http://www.flickr.com/photos/phragmunkee/3391554174/" title="IMG_0212 by PhragMunkee, on Flickr"><img src="http://farm4.static.flickr.com/3149/3391554174_c709a56b0a.jpg" alt="IMG_0212" height="375" width="500"></a></p>
<p>I’ll make another post when I get the final product assembled.</p>
<p>Next up is <a href="http://www.garrettbartley.com/2009/03/29/laptop-photo-frame-sketchup/">my SketchUp Design</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.garrettbartley.com/2009/03/28/laptop-photo-frame-cardboard-version/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
