<?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/"
	xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"
	xmlns:media="http://search.yahoo.com/mrss/"
>

<channel>
	<title>crashsystems.net &#187; Technology</title>
	<atom:link href="http://crashsystems.net/tag/technology/feed/" rel="self" type="application/rss+xml" />
	<link>http://crashsystems.net</link>
	<description>Home of Crashsystems LLC, and a blog about miscellaneous things</description>
	<lastBuildDate>Sun, 20 Jun 2010 19:28:37 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=abc</generator>
	<!-- podcast_generator="podPress/8.8" - maintenance_release="8.8.5.3" -->
	<copyright>2006-2007 </copyright>
	<managingEditor>crashsystems@gmail.com (Douglass Clem)</managingEditor>
	<webMaster>crashsystems@gmail.com (Douglass Clem)</webMaster>
	<category>posts</category>
	<ttl>1440</ttl>
	<image>
		<url>http://crashsystems.net/wp-content/plugins/podpress/images/powered_by_podpress.jpg</url>
		<title>crashsystems.net &#187; Technology</title>
		<link>http://crashsystems.net</link>
		<width>144</width>
		<height>144</height>
	</image>
	<itunes:subtitle></itunes:subtitle>
	<itunes:summary>A blog about technology, world travel, spirituality, and random combinations of these themes.</itunes:summary>
	<itunes:keywords></itunes:keywords>
	<itunes:category text="Society &amp; Culture" />
	<itunes:author>Douglass Clem</itunes:author>
	<itunes:owner>
		<itunes:name>Douglass Clem</itunes:name>
		<itunes:email>crashsystems@gmail.com</itunes:email>
	</itunes:owner>
	<itunes:block>no</itunes:block>
	<itunes:explicit>no</itunes:explicit>
	<itunes:image href="http://crashsystems.net/wp-content/plugins/podpress/images/powered_by_podpress.jpg" />
		<item>
		<title>Telling Students Linux != Windows with pyinotify and pynotify</title>
		<link>http://crashsystems.net/2010/05/pyinotify_and_pynotify/</link>
		<comments>http://crashsystems.net/2010/05/pyinotify_and_pynotify/#comments</comments>
		<pubDate>Thu, 13 May 2010 19:44:04 +0000</pubDate>
		<dc:creator>Douglass Clem</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://crashsystems.net/?p=348</guid>
		<description><![CDATA[While doing pro bono Ubuntu system administration for a local private school, something that has always annoyed me is that students frequently download installer files for Windows programs (games, iTunes etc). The computers obviously don&#8217;t look like they run Windows, and they&#8217;ve been told on many occasions that Linux != Windows. So today, I decided [...]]]></description>
			<content:encoded><![CDATA[<p>While doing pro bono Ubuntu system administration for a local private school, something that has always annoyed me is that students frequently download installer files for Windows programs (games, iTunes etc). The computers obviously don&#8217;t <em>look</em> like they run Windows, and they&#8217;ve been told on many occasions that Linux != Windows. So today, I decided to automate this explanation:</p>

<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">#!/usr/bin/python</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">import</span> pyinotify, pynotify
<span style="color: #ff7700;font-weight:bold;">from</span> <span style="color: #dc143c;">subprocess</span> <span style="color: #ff7700;font-weight:bold;">import</span> Popen
<span style="color: #ff7700;font-weight:bold;">from</span> <span style="color: #dc143c;">os</span>.<span style="color: black;">path</span> <span style="color: #ff7700;font-weight:bold;">import</span> expanduser
&nbsp;
pynotify.<span style="color: black;">init</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'Windows program notifier'</span><span style="color: black;">&#41;</span> <span style="color: #808080; font-style: italic;"># Not sure what this does</span>
&nbsp;
PATH = expanduser<span style="color: black;">&#40;</span><span style="color: #483d8b;">'~'</span><span style="color: black;">&#41;</span>
NAUGHTY_EXTENSIONS = <span style="color: black;">&#91;</span><span style="color: #483d8b;">'exe'</span>,<span style="color: #483d8b;">'bat'</span>, <span style="color: #483d8b;">'com'</span>, <span style="color: #483d8b;">'dll'</span>, <span style="color: #483d8b;">'msi'</span>, <span style="color: #483d8b;">'ocx'</span>, <span style="color: #483d8b;">'reg'</span>, <span style="color: #483d8b;">'scr'</span><span style="color: black;">&#93;</span>
MESSAGE = <span style="color: #483d8b;">&quot;You just tried to download a Windows program. This is Linux. Bugger off!&quot;</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">def</span> notifyAndDelete<span style="color: black;">&#40;</span>path, showNotification<span style="color: black;">&#41;</span>:
    <span style="color: #483d8b;">&quot;&quot;&quot;Delete any file with the forbben extensions.&quot;&quot;&quot;</span>
    <span style="color: #ff7700;font-weight:bold;">if</span> path.<span style="color: black;">split</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'.'</span><span style="color: black;">&#41;</span><span style="color: black;">&#91;</span>-<span style="color: #ff4500;">1</span><span style="color: black;">&#93;</span>.<span style="color: black;">lower</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span> <span style="color: #ff7700;font-weight:bold;">in</span> NAUGHTY_EXTENSIONS:
        <span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">'Deleting '</span> + path
        Popen<span style="color: black;">&#40;</span><span style="color: black;">&#91;</span><span style="color: #483d8b;">'rm'</span>, path<span style="color: black;">&#93;</span><span style="color: black;">&#41;</span>
        <span style="color: #ff7700;font-weight:bold;">if</span> showNotification == <span style="color: #008000;">True</span>:
            n = pynotify.<span style="color: black;">Notification</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;Windows Program Fail&quot;</span>, MESSAGE<span style="color: black;">&#41;</span>
            n.<span style="color: black;">show</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">class</span> HandleEvents<span style="color: black;">&#40;</span>pyinotify.<span style="color: black;">ProcessEvent</span><span style="color: black;">&#41;</span>:
    <span style="color: #ff7700;font-weight:bold;">def</span> process_IN_CREATE<span style="color: black;">&#40;</span><span style="color: #008000;">self</span>, event<span style="color: black;">&#41;</span>:
        notifyAndDelete<span style="color: black;">&#40;</span>event.<span style="color: black;">pathname</span>, <span style="color: #008000;">True</span><span style="color: black;">&#41;</span>
    <span style="color: #ff7700;font-weight:bold;">def</span> process_IN_MOVED_TO<span style="color: black;">&#40;</span><span style="color: #008000;">self</span>, event<span style="color: black;">&#41;</span>:
        notifyAndDelete<span style="color: black;">&#40;</span>event.<span style="color: black;">pathname</span>, <span style="color: #008000;">False</span><span style="color: black;">&#41;</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">if</span> __name__ == <span style="color: #483d8b;">'__main__'</span>:
    wm = pyinotify.<span style="color: black;">WatchManager</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>  <span style="color: #808080; font-style: italic;"># Watch Manager</span>
    mask = pyinotify.<span style="color: black;">IN_CREATE</span> | pyinotify.<span style="color: black;">IN_MOVED_TO</span>  <span style="color: #808080; font-style: italic;"># watched events</span>
&nbsp;
    p = HandleEvents<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
    notifier = pyinotify.<span style="color: black;">Notifier</span><span style="color: black;">&#40;</span>wm, p<span style="color: black;">&#41;</span>
    wdd = wm.<span style="color: black;">add_watch</span><span style="color: black;">&#40;</span>PATH, mask, rec=<span style="color: #008000;">True</span><span style="color: black;">&#41;</span>
&nbsp;
    notifier.<span style="color: black;">loop</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span></pre></div></div>

<p>When a user tries to download a program with an extension found in NAUGHTY_EXTENSIONS, They will get a Notify OSD popup informing them that they are not using Windows, and Windows programs won&#8217;t work on school computers. Of course, when I go to deploy this code, MESSAGE will be a little more appropriately worded.</p>
<p>This program is a combination of code I found from <a href="http://trac.dbzteam.org/pyinotify/wiki/Tutorial" target="_blank">this pyinotify tutorial</a> and a Notify OSD snippet I found in <a href="http://aciresnippets.wordpress.com" target="_blank">Acire</a>.</p>
<p><strong>Edit June 8 2010</strong></p>
<p><em>Thanks to the anonymous commenter that pointed out the bug that allowed arbitrary code execution, and to </em><a href="https://wiki.ubuntu.com/mhall119" target="_blank"><em>Michael Hall</em></a><em> for explaining it in more detail. The problem has been fixed.</em></p>
]]></content:encoded>
			<wfw:commentRss>http://crashsystems.net/2010/05/pyinotify_and_pynotify/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Changing Plymouth Themes In Ubuntu 10.04</title>
		<link>http://crashsystems.net/2010/04/changing-plymouth-themes/</link>
		<comments>http://crashsystems.net/2010/04/changing-plymouth-themes/#comments</comments>
		<pubDate>Sun, 25 Apr 2010 00:28:04 +0000</pubDate>
		<dc:creator>Douglass Clem</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://crashsystems.net/?p=332</guid>
		<description><![CDATA[One of the major changes in Ubuntu 10.04 is that Plymouth is now managing the fancy boot graphics, instead of xsplash. While the default Plymouth theme is decent, I wanted something different. Fortunately, changing the Plymouth theme only takes a few lines on the CLI. If you run apt-cache search plymouth-theme, you&#8217;ll see which themes [...]]]></description>
			<content:encoded><![CDATA[<p>One of the major changes in Ubuntu 10.04 is that Plymouth is now managing the fancy boot graphics, instead of xsplash. While the default Plymouth theme is decent, I wanted something different. Fortunately, changing the Plymouth theme only takes a few lines on the CLI.</p>
<p>If you run <em>apt-cache search plymouth-theme</em>, you&#8217;ll see which themes are available in the default repositories. This <a href="http://www.youtube.com/results?search_query=ubuntu+plymouth&amp;aq=0" target="_blank">Youtube search</a> has some videos of what is available. I chose the <em>plymouth-theme-solar</em> package, which has a nice solar flare animation. Next, run the following code, which I found <a href="http://ubuntuforums.org/showpost.php?p=9034192&amp;postcount=510" target="_blank">here</a>. Keep in mind that you need to change it to point to the plymouth theme you want to use.</p>
<pre>sudo update-alternatives --install \
/lib/plymouth/themes/default.plymouth default.plymouth \
/lib/plymouth/themes/solar/solar.plymouth 100</pre>
<p>(note: Line warping was only used to make it look pretty on a blog post.)</p>
<p>Next run <em>sudo update-alternatives &#8211;config default.plymouth</em>. You&#8217;ll see a numbered menu of the themes currently installed. Type the number for the one you want and hit enter. Finally, use <em>sudo update-initramfs -u</em> to apply your changes.</p>
<p>Here is the result:</p>
<p><a href="http://www.youtube.com/watch?v=GUY_wvpBtHY"><img src="http://img.youtube.com/vi/GUY_wvpBtHY/default.jpg" width="130" height="97" border=0></a></p>
<p>There are not many themes available currently. However, once 10.04 is released and has been out for a little while, I think there will be many more options.</p>
]]></content:encoded>
			<wfw:commentRss>http://crashsystems.net/2010/04/changing-plymouth-themes/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Creating DIY mobile reception with Google Voice and VOIP</title>
		<link>http://crashsystems.net/2010/04/google-voice-gizmo5-sipdroid/</link>
		<comments>http://crashsystems.net/2010/04/google-voice-gizmo5-sipdroid/#comments</comments>
		<pubDate>Mon, 12 Apr 2010 19:03:33 +0000</pubDate>
		<dc:creator>Douglass Clem</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[Gizmo5]]></category>
		<category><![CDATA[Google Voice]]></category>
		<category><![CDATA[Nexus One]]></category>
		<category><![CDATA[SIP]]></category>
		<category><![CDATA[VOIP]]></category>

		<guid isPermaLink="false">http://crashsystems.net/?p=323</guid>
		<description><![CDATA[Like many people in the USA who live in rural communities, I have no cellular reception at home. My mobile provider, T-Mobile, does not have enough economic incentive to build a tower close to my home. Also, they have not yet seen fit to give me the privilege of paying to compensate for their lack [...]]]></description>
			<content:encoded><![CDATA[<p>Like many people in the USA who live in rural communities, I have no cellular reception at home. My mobile provider, T-Mobile, does not have enough economic incentive to build a tower close to my home. Also, they have not yet seen fit to give me the privilege of paying to compensate for their lack of service via a <a href="http://en.wikipedia.org/wiki/Femtocell" target="_blank">Femtocell</a>.</p>
<p>Fortunately I have found a solution: <a href="http://google.com/voice">Google Voice</a> + <a href="http://www.google.com/gizmo5/" target="_blank">Gizmo5</a> + <a href="http://sipdroid.org/" target="_blank">Sipdroid</a>. Google Voice is a free service which lets it&#8217;s users unify all their phones under one number. Simply give friends, family and coworkers that one number, and calls will ring through to whatever phones the user chooses, based upon rules they define. Gizmo5 is a <a href="http://en.wikipedia.org/wiki/Session_Initiation_Protocol" target="_blank">SIP</a> provider that can connect to Google Voice and allow users to make phone calls over the Internet. Gizmo5 has been bought by Google, so registration is currently closed. However, everyone expects that it will eventually be integrated with Google Voice. Finally, Sipdroid is a nice, Open Source SIP client for <a href="http://www.android.com/">Android</a> that can connect to services like Gizmo5.</p>
<p>I&#8217;ve played with this combination before, when I was using a G1 Android phone from <a href="http://www.htc.com/us/" target="_blank">HTC</a>. The reasons I did not stick with it then were because the G1&#8242;s battery life was pretty bad, and the G1 struggled enough with performance that it was not feasible to keep Sipdroid running in the background.</p>
<p>Now that I have the amazing <a href="http://www.google.com/phone" target="_blank">Nexus One</a> though, all this has changed. The battery life on the N1 is pretty good by smart phone standards, and it&#8217;s performance is high enough that I can easily run Sipdroid in the background all the time without any noticeable performance impact.</p>
<p>I&#8217;m using my home WiFi for Sipdroid. I have always been told that WiFi eats battery life rather quickly. However, I&#8217;ve been surprised at how much this has not been the case. After a full day of being connected to wireless almost all the time, WiFi only used up about 2% of my phone&#8217;s battery (this is with moderate use of the connection). I&#8217;ve come to the conclusion that simply having wireless connected does not use much power, but actually transferring data does.</p>
<p>This solution has been working great, but has not been completely without problems. When I receive calls, both parties (the person I talk with and I) have excellent sound quality. However, when I initiate the call via my phone, the person on the receiving end gets tons of latency and a lot of static. I have worked around this issue by initiating the calls via the Google Voice web interface. This hack is slightly annoying, but it is not too bad since I almost always have my laptop on.</p>
<p>After a few days of use, I am quite happy with this solution, and am looking forward to hopefully seeing <a href="http://en.wikipedia.org/wiki/VOIP" target="_blank">VOIP</a> kill off traditional telephone providers in the future. AT&amp;T, T-Mobile and others should be very afraid, especially if municipal WiFi becomes more common.</p>
]]></content:encoded>
			<wfw:commentRss>http://crashsystems.net/2010/04/google-voice-gizmo5-sipdroid/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WordPress for Android</title>
		<link>http://crashsystems.net/2010/02/wordpress-for-android/</link>
		<comments>http://crashsystems.net/2010/02/wordpress-for-android/#comments</comments>
		<pubDate>Tue, 02 Feb 2010 19:58:19 +0000</pubDate>
		<dc:creator>Douglass Clem</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://crashsystems.net/2010/02/wordpress-for-android/</guid>
		<description><![CDATA[WordPress for Android just released 1.0. This is a test post, but so far it is quite nice! You can download it here.]]></description>
			<content:encoded><![CDATA[<p>WordPress for Android just released 1.0. This is a test post, but so far it is quite nice! You can download it <a href="http://android.wordpress.org/2010/02/02/wordpress-for-android-1-0/">here</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://crashsystems.net/2010/02/wordpress-for-android/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Using x2x on Linux for KVM like goodness</title>
		<link>http://crashsystems.net/2010/01/x2x/</link>
		<comments>http://crashsystems.net/2010/01/x2x/#comments</comments>
		<pubDate>Tue, 05 Jan 2010 00:57:00 +0000</pubDate>
		<dc:creator>Douglass Clem</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://crashsystems.net/?p=303</guid>
		<description><![CDATA[Recently I purchased one of those little &#8220;nettop&#8221; computers to plug into my HDTV and act as my multimedia center (more on that when it arrives). I also purchased a IR remote, but I wanted a way to be able to use a keyboard and mouse on it as well, as it is more than [...]]]></description>
			<content:encoded><![CDATA[<p>Recently I purchased one of those little &#8220;nettop&#8221; computers to plug into my HDTV and act as my multimedia center (more on that when it arrives). I also purchased a IR remote, but I wanted a way to be able to use a keyboard and mouse on it as well, as it is more than just a movie player. However, I didn&#8217;t want a physical keyboard/mouse, as that would look out of place.</p>
<p>After reading up on the subject, I decided to give <a href="http://synergy2.sourceforge.net/" target="_blank">Synergy</a> a try. Synergy lets you use use your keyboard and mouse on another computer over a network, just as if it was a second screen attached. Synergy looked promising, but several things about it did not work out for me.</p>
<p>Being a network application, Synergy consists of both a client app and a server app. It turns out that with Synergy the &#8220;server&#8221; is the computer with the keyboard and mouse you want to use on multiple machines. I&#8217;m sure this works fine for most people, but it does not make sense for my multimedia system. This computer will be on most of the time, being controlled by several different machines For my setup, the logical place for the &#8220;server&#8221; would be the multimedia system. I probably could have hacked it to make the client (running on my server) act more like a server, except each time the client app fails to connect to the server (running on my laptops), the time it waits for another connection increments.</p>
<p>When looking for Synergy alternatives, I found <a href="http://x2x.dottedmag.net/" target="_blank">x2x</a>. x2x is only designed for Linux, so it would not be usable for someone who needs to use a keyboard and mouse on multiple operating systems. I only use Ubuntu Linux at home, so this was not a problem for me. An advantage of x2x is that setup is very simple. First, install the x2x package (&#8220;x2x&#8221; in Ubuntu) on both machines, and openssh-server on the computer you want to control remotely. Then, from the computer with the keyboard and mouse you want to use on another system, run:</p>
<pre>ssh -X user@server x2x -south -to :0</pre>
<p>With this, you can now move your cursor beyond the bottom of your screen, onto the remote system. If you want to use a different edge of your screen, replace -south with -north, -east or -west. If you have key based authentication set up for ssh, you could stick this into the applications menu.</p>
<h3>Updated 08 January 2010</h3>
<p>It seems there is a bit of an <a href="https://bugs.edge.launchpad.net/ubuntu/+bug/471726" target="_blank">issue</a> with x2x in Ubuntu 9.10. Some people are seeing the following error when they try to run x2x:</p>
<pre>No protocol specified</pre>
<pre>x2x - error: can not open display :0</pre>
<p>To work around this issue until it is fixed, SSH into the box you want to remotely control, then run the following command:</p>
<pre>xauth merge /var/run/gdm/auth-for-$USER-*/database</pre>
]]></content:encoded>
			<wfw:commentRss>http://crashsystems.net/2010/01/x2x/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Android Screenshots</title>
		<link>http://crashsystems.net/2009/07/android-screenshots/</link>
		<comments>http://crashsystems.net/2009/07/android-screenshots/#comments</comments>
		<pubDate>Mon, 13 Jul 2009 01:07:29 +0000</pubDate>
		<dc:creator>Douglass Clem</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[multmedia]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://crashsystems.net/?p=267</guid>
		<description><![CDATA[I just got done taking some screenshots of my snazzy Android phone. I ran into a bit of difficulty getting the DDMS (Dalvik Debug Monitor Service) tool running in Ubuntu 9.04 64 bit, but post #2 on this thread helped. To summarize: Use the package manager of your choice to install ia32-sun-java6-bin. Download the Android [...]]]></description>
			<content:encoded><![CDATA[<p>I just got done taking some screenshots of my snazzy Android phone. I ran into a bit of difficulty getting the DDMS (Dalvik Debug Monitor Service) tool running in Ubuntu 9.04 64 bit, but post #2 on <a href="http://groups.google.com/group/android-developers/browse_thread/thread/2077f2d8b385f54b/c855391abf432aee?pli=1" target="_blank">this thread</a> helped. To summarize:</p>
<ol>
<li>Use the package manager of your choice to install ia32-sun-java6-bin.</li>
<li><a href="http://developer.android.com/index.html" target="_blank">Download</a> the Android SDK for Linux, then extract the zip file.</li>
<li>In the SDK tools folder, open up the ddms file in your favorite text editor.</li>
<li>Modify line #72 to the following: java_cmd=&#8221;/usr/lib/jvm/ia32-java-6-sun/bin/java&#8221;</li>
</ol>
<p>Here are the screenshots I took:</p>

<div class="ngg-galleryoverview" id="ngg-gallery-10-267">


	
	<!-- Thumbnails -->
		
	<div id="ngg-image-158" class="ngg-gallery-thumbnail-box"  >
		<div class="ngg-gallery-thumbnail" >
			<a href="http://crashsystems.net/wp-content/gallery/android-screenshots/1.png" title=" " class="thickbox" rel="set_10" >
								<img title="Home screen - Portrait" alt="Home screen - Portrait" src="http://crashsystems.net/wp-content/gallery/android-screenshots/thumbs/thumbs_1.png" width="100" height="75" />
							</a>
		</div>
	</div>
	
		
 		
	<div id="ngg-image-159" class="ngg-gallery-thumbnail-box"  >
		<div class="ngg-gallery-thumbnail" >
			<a href="http://crashsystems.net/wp-content/gallery/android-screenshots/2.png" title=" " class="thickbox" rel="set_10" >
								<img title="Home screen- Landscape" alt="Home screen- Landscape" src="http://crashsystems.net/wp-content/gallery/android-screenshots/thumbs/thumbs_2.png" width="100" height="75" />
							</a>
		</div>
	</div>
	
		
 		
	<div id="ngg-image-160" class="ngg-gallery-thumbnail-box"  >
		<div class="ngg-gallery-thumbnail" >
			<a href="http://crashsystems.net/wp-content/gallery/android-screenshots/3.png" title=" " class="thickbox" rel="set_10" >
								<img title="Application list on the move" alt="Application list on the move" src="http://crashsystems.net/wp-content/gallery/android-screenshots/thumbs/thumbs_3.png" width="100" height="75" />
							</a>
		</div>
	</div>
	
		
 		
	<div id="ngg-image-161" class="ngg-gallery-thumbnail-box"  >
		<div class="ngg-gallery-thumbnail" >
			<a href="http://crashsystems.net/wp-content/gallery/android-screenshots/4.png" title=" " class="thickbox" rel="set_10" >
								<img title="Application list. Gmote is awesome!" alt="Application list. Gmote is awesome!" src="http://crashsystems.net/wp-content/gallery/android-screenshots/thumbs/thumbs_4.png" width="100" height="75" />
							</a>
		</div>
	</div>
	
		
 		
	<div id="ngg-image-162" class="ngg-gallery-thumbnail-box"  >
		<div class="ngg-gallery-thumbnail" >
			<a href="http://crashsystems.net/wp-content/gallery/android-screenshots/5.png" title=" " class="thickbox" rel="set_10" >
								<img title="usic app. Unlike iPhone, I can use whatever music app I want." alt="usic app. Unlike iPhone, I can use whatever music app I want." src="http://crashsystems.net/wp-content/gallery/android-screenshots/thumbs/thumbs_5.png" width="100" height="75" />
							</a>
		</div>
	</div>
	
		
 		
	<div id="ngg-image-163" class="ngg-gallery-thumbnail-box"  >
		<div class="ngg-gallery-thumbnail" >
			<a href="http://crashsystems.net/wp-content/gallery/android-screenshots/6.png" title=" " class="thickbox" rel="set_10" >
								<img title="Full web browser." alt="Full web browser." src="http://crashsystems.net/wp-content/gallery/android-screenshots/thumbs/thumbs_6.png" width="100" height="75" />
							</a>
		</div>
	</div>
	
		
 	 	
	<!-- Pagination -->
 	<div class='ngg-clear'></div>
 	
</div>


<p>As you can see, I&#8217;m running a clone of the theme on <a href="http://www.htc.com/www/product/hero/overview.html" target="_blank">HTC&#8217;s Hero</a> Android phone. This theme can be downloaded <a href="http://forum.xda-developers.com/showthread.php?t=520629">here</a>. All the install took was downloading the theme, putting it on my phone&#8217;s SD card as update.zip, booting into recovery mode and flashing the update. Of course, you&#8217;ll need a rooted G1 for this to work. I&#8217;m running JesusFreke&#8217;s wonderful 1.5 build. Read <a href="http://androidandme.com/2009/05/guides/beginners-guide-for-rooting-your-android-g1-to-install-cupcake/" target="_blank">this guide</a> for instructions for rooting your G1.</p>
]]></content:encoded>
			<wfw:commentRss>http://crashsystems.net/2009/07/android-screenshots/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Fighting Juno&#8217;s address book lock-in with Python</title>
		<link>http://crashsystems.net/2009/06/juno-address-book-converter/</link>
		<comments>http://crashsystems.net/2009/06/juno-address-book-converter/#comments</comments>
		<pubDate>Mon, 22 Jun 2009 01:23:25 +0000</pubDate>
		<dc:creator>Douglass Clem</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://crashsystems.net/?p=254</guid>
		<description><![CDATA[This week I helped a friend with an OS re-install (XP unfortunately). He used Juno for his email service, which refused to work properly when re-installed. I helped him switch to Gmail, but it turns out that Juno refused to implement an export feature for their contacts. After a little hunting around, I discovered the [...]]]></description>
			<content:encoded><![CDATA[<p>This week I helped a friend with an OS re-install (XP unfortunately). He used Juno for his email service, which refused to work properly when re-installed. I helped him switch to Gmail, but it turns out that Juno refused to implement an export feature for their contacts. After a little hunting around, I discovered the text file the software used to store contacts, somewhere in it&#8217;s Program Files folder. What follows is a quick bit of code I wrote to convert the contacts into a CSV file. Hopefully it will be useful to someone else in their efforts to fight lock-in.</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
</pre></td><td class="code"><pre class="python" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">#!/usr/bin/python</span>
&nbsp;
<span style="color: #808080; font-style: italic;"># import libraries</span>
<span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">csv</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">class</span> entry<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>:
    <span style="color: #483d8b;">&quot;&quot;&quot;A simple data structure for each contact.&quot;&quot;&quot;</span>
    Name = <span style="color: #483d8b;">''</span>
    Phone = <span style="color: #483d8b;">''</span>
    Birthday = <span style="color: #483d8b;">''</span>
    Address = <span style="color: #483d8b;">''</span>
&nbsp;
&nbsp;
<span style="color: #ff7700;font-weight:bold;">class</span> contacts<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>:
    <span style="color: #483d8b;">&quot;&quot;&quot;This class will contain pure input from the Juno contacts file.&quot;&quot;&quot;</span>
&nbsp;
    <span style="color: #ff7700;font-weight:bold;">def</span> <span style="color: #0000cd;">__init__</span><span style="color: black;">&#40;</span><span style="color: #008000;">self</span>, <span style="color: #008000;">input</span><span style="color: black;">&#41;</span>:
        <span style="color: #808080; font-style: italic;"># Open the input file</span>
        readFile = <span style="color: #008000;">open</span><span style="color: black;">&#40;</span><span style="color: #008000;">input</span>, <span style="color: #483d8b;">'r'</span><span style="color: black;">&#41;</span>
&nbsp;
        <span style="color: #808080; font-style: italic;"># Put the header into list</span>
        header = entry<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
        header.<span style="color: black;">Name</span> = <span style="color: #483d8b;">&quot;Name&quot;</span>
        header.<span style="color: black;">Email</span> = <span style="color: #483d8b;">'Email'</span>
        header.<span style="color: black;">Phone</span> = <span style="color: #483d8b;">&quot;Phone Number&quot;</span>
        header.<span style="color: black;">Address</span> = <span style="color: #483d8b;">&quot;Address&quot;</span>
&nbsp;
        <span style="color: #008000;">self</span>.<span style="color: #008000;">list</span> = <span style="color: black;">&#91;</span>header<span style="color: black;">&#93;</span>
&nbsp;
        <span style="color: #808080; font-style: italic;"># Put the input file into a list and close file</span>
        <span style="color: #008000;">self</span>.<span style="color: black;">rawContent</span> = readFile.<span style="color: black;">readlines</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
        readFile.<span style="color: black;">close</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
&nbsp;
    <span style="color: #ff7700;font-weight:bold;">def</span> parse<span style="color: black;">&#40;</span><span style="color: #008000;">self</span><span style="color: black;">&#41;</span>:
        <span style="color: #483d8b;">&quot;&quot;&quot;Parse everything and put it in the list&quot;&quot;&quot;</span>
&nbsp;
        count = <span style="color: #ff4500;">0</span>
        <span style="color: #ff7700;font-weight:bold;">while</span><span style="color: black;">&#40;</span>count <span style="color: #66cc66;">&lt;</span> = <span style="color: #008000;">len</span><span style="color: black;">&#40;</span><span style="color: #008000;">self</span>.<span style="color: black;">rawContent</span><span style="color: black;">&#41;</span> -<span style="color: #ff4500;">1</span><span style="color: black;">&#41;</span>:
            person = entry<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
            count += <span style="color: #ff4500;">1</span> <span style="color: #808080; font-style: italic;"># Skips over the field specifying the contact as an entry            </span>
&nbsp;
            <span style="color: #808080; font-style: italic;"># Get email address</span>
            item = <span style="color: #008000;">self</span>.<span style="color: black;">rawContent</span><span style="color: black;">&#91;</span>count<span style="color: black;">&#93;</span><span style="color: black;">&#91;</span><span style="color: #ff4500;">6</span>:-<span style="color: #ff4500;">2</span><span style="color: black;">&#93;</span>
            <span style="color: #ff7700;font-weight:bold;">if</span> <span style="color: black;">&#40;</span>item == <span style="color: #483d8b;">''</span><span style="color: black;">&#41;</span>:
                person.<span style="color: black;">Email</span> = <span style="color: #483d8b;">''</span>
            <span style="color: #ff7700;font-weight:bold;">else</span>:
                person.<span style="color: black;">Email</span> = item
            count += <span style="color: #ff4500;">1</span>
&nbsp;
            <span style="color: #808080; font-style: italic;"># Throw alias into bit-bucket</span>
            count += <span style="color: #ff4500;">1</span>
&nbsp;
            <span style="color: #808080; font-style: italic;"># Get first and last name</span>
            item = <span style="color: #008000;">self</span>.<span style="color: black;">rawContent</span><span style="color: black;">&#91;</span>count<span style="color: black;">&#93;</span><span style="color: black;">&#91;</span><span style="color: #ff4500;">5</span>:-<span style="color: #ff4500;">2</span><span style="color: black;">&#93;</span>
            <span style="color: #ff7700;font-weight:bold;">if</span> <span style="color: black;">&#40;</span>item == <span style="color: #483d8b;">''</span><span style="color: black;">&#41;</span>:
                person.<span style="color: black;">Name</span> = <span style="color: #483d8b;">''</span>
            <span style="color: #ff7700;font-weight:bold;">else</span>:
                person.<span style="color: black;">Name</span> = item
            count += <span style="color: #ff4500;">1</span>
&nbsp;
            <span style="color: #808080; font-style: italic;"># Get the phone number</span>
            item = <span style="color: #008000;">self</span>.<span style="color: black;">rawContent</span><span style="color: black;">&#91;</span>count<span style="color: black;">&#93;</span><span style="color: black;">&#91;</span><span style="color: #ff4500;">14</span>:-<span style="color: #ff4500;">2</span><span style="color: black;">&#93;</span>
            <span style="color: #ff7700;font-weight:bold;">if</span> <span style="color: black;">&#40;</span>item == <span style="color: #483d8b;">''</span><span style="color: black;">&#41;</span>:
                person.<span style="color: black;">Phone</span> = <span style="color: #483d8b;">''</span>
            <span style="color: #ff7700;font-weight:bold;">else</span>:
                person.<span style="color: black;">Phone</span> = item
            count += <span style="color: #ff4500;">1</span>
&nbsp;
            <span style="color: #808080; font-style: italic;"># Throw birthday into bit-bucket</span>
            count += <span style="color: #ff4500;">1</span>
&nbsp;
            <span style="color: #808080; font-style: italic;"># Get the address</span>
            item = <span style="color: #008000;">self</span>.<span style="color: black;">rawContent</span><span style="color: black;">&#91;</span>count<span style="color: black;">&#93;</span><span style="color: black;">&#91;</span><span style="color: #ff4500;">8</span>:-<span style="color: #ff4500;">2</span><span style="color: black;">&#93;</span>
            <span style="color: #ff7700;font-weight:bold;">if</span> <span style="color: black;">&#40;</span>item == <span style="color: #483d8b;">''</span><span style="color: black;">&#41;</span>:
                person.<span style="color: black;">Address</span> = <span style="color: #483d8b;">''</span>
            <span style="color: #ff7700;font-weight:bold;">else</span>:
                person.<span style="color: black;">Address</span> = item
&nbsp;
            <span style="color: #808080; font-style: italic;"># incriment count by four to get to the beginning of next entry</span>
            count += <span style="color: #ff4500;">4</span>
&nbsp;
            <span style="color: #808080; font-style: italic;"># add person to the list</span>
            <span style="color: #008000;">self</span>.<span style="color: #008000;">list</span> += <span style="color: black;">&#91;</span>person<span style="color: black;">&#93;</span>
&nbsp;
    <span style="color: #ff7700;font-weight:bold;">def</span> output<span style="color: black;">&#40;</span><span style="color: #008000;">self</span><span style="color: black;">&#41;</span>:
        <span style="color: #483d8b;">&quot;&quot;&quot;Make a CSV file&quot;&quot;&quot;</span>
&nbsp;
        <span style="color: #808080; font-style: italic;"># Set up the output file</span>
        outFile = <span style="color: #008000;">open</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'output.txt'</span>, <span style="color: #483d8b;">'w'</span><span style="color: black;">&#41;</span>
        output = <span style="color: #dc143c;">csv</span>.<span style="color: black;">writer</span><span style="color: black;">&#40;</span>outFile, delimiter=<span style="color: #483d8b;">','</span><span style="color: black;">&#41;</span>
&nbsp;
        <span style="color: #808080; font-style: italic;"># Iterate through self.list and write stuff</span>
        <span style="color: #ff7700;font-weight:bold;">for</span> person <span style="color: #ff7700;font-weight:bold;">in</span> <span style="color: #008000;">self</span>.<span style="color: #008000;">list</span>:
            output.<span style="color: black;">writerow</span><span style="color: black;">&#40;</span><span style="color: black;">&#91;</span>person.<span style="color: black;">Name</span>, person.<span style="color: black;">Email</span>, person.<span style="color: black;">Phone</span>, person.<span style="color: black;">Address</span><span style="color: black;">&#93;</span><span style="color: black;">&#41;</span>
&nbsp;
        <span style="color: #808080; font-style: italic;"># Close the file</span>
        outFile.<span style="color: black;">close</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span></pre></td></tr></table></div>

</pre>
]]></content:encoded>
			<wfw:commentRss>http://crashsystems.net/2009/06/juno-address-book-converter/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SHA1 is epic fail (aka new keys)</title>
		<link>http://crashsystems.net/2009/05/sha1-is-epic-fail-aka-new-keys/</link>
		<comments>http://crashsystems.net/2009/05/sha1-is-epic-fail-aka-new-keys/#comments</comments>
		<pubDate>Thu, 21 May 2009 20:00:59 +0000</pubDate>
		<dc:creator>Douglass Clem</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[encryption]]></category>
		<category><![CDATA[security]]></category>

		<guid isPermaLink="false">http://crashsystems.net/?p=244</guid>
		<description><![CDATA[I seem to have the worst of luck, in that shortly after I created new GPG keys and published them, someone found a new attack on the SHA1 hash algorithm. This attack is such that someone could probably pull it off if they had the financial resources of a government or large organization. Therefore, I&#8217;ve [...]]]></description>
			<content:encoded><![CDATA[<p>I seem to have the worst of luck, in that shortly after I created new GPG keys and published them, someone found a new attack on the SHA1 hash algorithm. This attack is such that someone could probably pull it off if they had the financial resources of a government or large organization. Therefore, I&#8217;ve made a new key, 4096 RSA. The key is on the public internets, and is signed by my old key. I will be keeping my old key active until my purchase of 250 business cards runs out, at which point that key will expire. Please make sure to send all emails with my new key.</p>
<p>Also, it is a good idea to use better hash algorithms than SHA1. To do this automatically, simply put the following lines at the end of your .gnupg/gpg.conf file:<br />
personal-digest-preferences SHA256<br />
cert-digest-algo SHA256</p>
<p>Old key fingerprint: E1F6 ADF3 88B4 E5C4 E3B1<br />
New key fingerprint: 37F9 E685 576A CFD3 B08C</p>
<p>P.S.</p>
<p>I had planned on having an inline signature with this blog post, but GPG and/or WordPress and/or Firefox and FireGPG have foiled my plans. <a href="http://crashsystems.net/newkey_05-09.txt" target="_blank">Click here</a> to see a text document containing this post plus valid signatures from my old new key and my new new key.</p>
]]></content:encoded>
			<wfw:commentRss>http://crashsystems.net/2009/05/sha1-is-epic-fail-aka-new-keys/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Does High Price Attract Mac Users?</title>
		<link>http://crashsystems.net/2009/05/mac-high-price/</link>
		<comments>http://crashsystems.net/2009/05/mac-high-price/#comments</comments>
		<pubDate>Sun, 10 May 2009 20:49:31 +0000</pubDate>
		<dc:creator>Douglass Clem</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[apple]]></category>
		<category><![CDATA[hardware]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[microsoft]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://crashsystems.net/?p=234</guid>
		<description><![CDATA[I was on the #ubuntu-us-fl IRC channel recently, when one of my fellow geeks put forward an interesting theory: People are attracted to Apple products by a high price. The theory assumes that in our society people usually equate price with quality, and not always accurately. Today I decided to do a little price comparison. [...]]]></description>
			<content:encoded><![CDATA[<p>I was on the <a href="http://www.mibbit.com/?server=irc.freenode.net&amp;channel=%23ubuntu-us-fl" target="_blank">#ubuntu-us-fl</a> IRC channel recently, when one of my fellow geeks put forward an interesting theory: People are attracted to Apple products by a high price. The theory assumes that in our society people usually equate price with quality, and not always accurately. Today I decided to do a little price comparison. I gladly admit that I have a bias towards the Linux operating system, specifically the <a href="http://ubuntu.com" target="_blank">Ubuntu</a> distribution. However, in this post I will try to let hopefully unbiased numbers speak for themselves, with the exception of my summary at the end.</p>
<p>Below I have the configurations and prices for four machines: an <a href="http://apple.com" target="_blank">Apple</a> Mac Pro, a <a href="http://dell.com" target="_blank">Dell</a> XPS 630, The Wild Dog performance desktop from <a href="http://system76.com/" target="_blank">System76</a>, and finally a custom built machine with parts from <a href="http://newegg.com" target="_blank">Newegg</a> (thanks to <a href="http://excid3.com/" target="_blank">excid3</a> for the build specs). Though the machines are from four different <a href="http://en.wikipedia.org/wiki/Original_equipment_manufacturer" target="_blank">OEM</a>s (aka companies that build computers), I configured each to be as close as possible in specifications and performance.</p>
<h2><a href="http://store.apple.com/us_smb_78313/configure/MB871LL/A?mco=NDE4NDIwNA" target="_blank">Apple Mac Pro</a>, $2,849.00</h2>
<ul>
<li>Processor: One 2.66GHz Quad-Core Intel Xeon</li>
<li>RAM: 8GB (4x2GB)</li>
<li>Hard drive: 1TB 7200-rpm Serial ATA 3Gb</li>
<li>Graphics card: NVIDIA GeForce GT 120 512MB</li>
<li>DVD burner: One 18x SuperDrive</li>
</ul>
<h2><a href="http://configure.us.dell.com/dellstore/config.aspx?oc=dxcw64c&amp;c=us&amp;l=en&amp;s=dhs&amp;cs=19&amp;kc=productdetails~xpsdt_630" target="_blank">Dell XPS 630</a>, $1,679</h2>
<ul>
<li>Processor: Intel® Core™2 Q9550 (12MB,2.83GHz, 1333FSB) (Also a quad core)</li>
<li>RAM: 8GB Dual Channel DDR2 SDRAM at 800MHz (4 DIMM)</li>
<li>Hard drive: 1TB Performance RAID 0 (2 x 500GB SATA 3Gb/s 7200 RPM HDDs)</li>
<li>Graphics card: SLi, Dual nVidia GeForce 9800GT 512MB</li>
<li>DVD burner: 16X CD/DVD burner (DVD+/-RW) w/double layer write capability</li>
</ul>
<h2>System76 <a href="http://system76.com/product_info.php?cPath=27&amp;products_id=82" target="_blank">Wild Dog Performance Desktop</a>, $1,089.00</h2>
<ul>
<li>Processor: Quad Core Q6600 2.40 GHz FSB 1066 MHz L2 8 MB</li>
<li>RAM: 8 GB &#8211; 4 x 2 GB &#8211; DDR3 &#8211; 1333 MHz</li>
<li>Hard Drive:  1 TB SATA II 300Mbps &#8211; 7200 rpm 32 MB Buffer</li>
<li>Graphics card: 512 MB ATI Radeon 4550 PCI-Express x16 GDDR3 (DVI, VGA, S-Video, DVI to HDMI, DVI to VGA)</li>
<li>DVD burner: CD-RW / DVD-RW</li>
</ul>
<h2>Custom built machine, $608.90</h2>
<p>Note: If you wanted Windows Vista on this machine (not recommended), just <a href="http://www.newegg.com/Product/Product.aspx?Item=N82E16832116493" target="_blank">add $179.99</a> to the price. Also, the links to all the parts are listed below, seeing as there is a lot more customization that goes into a custom build.</p>
<ul>
<li><span><a href="http://www.newegg.com/Product/Product.aspx?item=N82E16819103244" target="_blank">AMD Phenom 9600 Agena 2.3GHz Socket AM2+ 95W Quad-Core Processor Model HD960ZWCGDBOX &#8211; Retail</a> </span></li>
<li><a href="http://www.newegg.com/Product/Product.aspx?Item=N82E16820104072" target="_blank"><span>Kingston HyperX 2GB 240-Pin DDR2 SDRAM DDR2 1066 Desktop Memory Model KHX8500D2/2G &#8211; Retail</span></a> (x4)</li>
<li><a href="http://www.newegg.com/Product/Product.aspx?Item=N82E16817371007" target="_blank"></a><a href="http://www.newegg.com/Product/Product.aspx?item=N82E16817371007" target="_blank">Antec earthwatts EA500 500W Continuous Power ATX12V v2.0 SLI Certified CrossFire Ready 80 PLUS Certified Active PFC Power &#8230; &#8211; Retail</a></li>
<li><a href="http://www.newegg.com/Product/Product.aspx?Item=N82E16813131382" target="_blank"><span> ASUS M4N78 Pro AM3/AM2+/AM2 NVIDIA GeForce 8300 HDMI ATX AMD Motherboard &#8211; Retail </span></a></li>
<li><a href="http://www.newegg.com/Product/Product.aspx?Item=N82E16822136284" target="_blank"><span>Western Digital Caviar Black WD1001FALS 1TB 7200 RPM SATA 3.0Gb/s 3.5&#8243; Hard Drive &#8211; OEM </span></a></li>
<li><a href="http://www.newegg.com/Product/Product.aspx?Item=N82E16811146035" target="_blank"><span>NZXT HUSH Black SECC Steel/ Aluminum/ Plastic ATX Mid Tower Computer Case &#8211; Retail </span></a></li>
<li><a href="http://www.newegg.com/Product/Product.aspx?Item=N82E16827249037" target="_blank"><span>PLEXTOR 20X DVD Super Multi Qflix Drive Black SATA Model PX-806SA SW &#8211; Retail</span></a></li>
</ul>
<h1>Biased Summary</h1>
<p>I&#8217;ll start off with the most obvious and least controversial conclusion: you&#8217;d be crazy not to get a custom built machine. Due to the geeky tendencies of this blog, most people reading this are likely to be fellow geeks. Any geek worth their weight in <a href="http://en.wikipedia.org/wiki/Cathode_ray_tube" target="_blank">old CRT monitors</a> can put that machine together. If however you are not a geek, surely you know someone who is. For $200 and a few hours to play with all the shiny parts, any geek would be glad to put this machine together for you, and you&#8217;d still be saving a huge amount of money.</p>
<p>Now for the slightly more controversial conclusions. I believe that a higher price does play a role in a person&#8217;s decision to buy a Mac. It is certainly not the only factor, since as far as OEM equipment goes, Apple is fairly nice. I agree that Apple has some very high quality hardware. However, the hardware in each of these machines is very similar, and all high quality, and yet the Apple machine is $1,170 more expensive than the second most expensive and yet very similar machine. You could even get any one of these machines and put OSX on it yourself if Apple would let you (or you felt like using <a href="https://thepiratebay.org" target="_blank">The Pirate Bay</a>).</p>
<p>Given the fact that all four machines are very similar, lets assume for a moment that the custom built machine represents the price each manufacturer pays to build their computer (not quite accurate, as the OEM&#8217;s save money by buying parts in bulk). This would mean that what you are really buying from an OEM is the convenience of having someone else put a computer together for you. That convenience costs you $2,240 if Apple builds it and $1,070 if Dell builds it. The lowest OEM service price is from System76, at $480, which is just over twice my recommended build price from the friendly neighborhood geek.</p>
<p>My numbers are certianly not perfect, especially since it is impossible to get an exactly identical machine from two OEMs. However, even after doing tweaking for any innacuracies in my calculations or configurations, I think your findings will be the same: all OEMs are expensive, but Apple is by far the most expensive.</p>
]]></content:encoded>
			<wfw:commentRss>http://crashsystems.net/2009/05/mac-high-price/feed/</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
		<item>
		<title>New Web Host</title>
		<link>http://crashsystems.net/2009/03/new-web-host/</link>
		<comments>http://crashsystems.net/2009/03/new-web-host/#comments</comments>
		<pubDate>Fri, 27 Mar 2009 00:11:29 +0000</pubDate>
		<dc:creator>Douglass Clem</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[django]]></category>
		<category><![CDATA[internet]]></category>
		<category><![CDATA[web development]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://crashsystems.net/?p=220</guid>
		<description><![CDATA[This afternoon I took the plunge and transfered my website from BlueHost to Webfaction. There are two main reasons for this switch. First of all, I&#8217;ve been learning website programming with Python and the Django framework. My previous host does not support Django, and it seems Webfaction is the most popular host among Django geeks. [...]]]></description>
			<content:encoded><![CDATA[<p>This afternoon I took the plunge and transfered my website from BlueHost to Webfaction. There are two main reasons for this switch. First of all, I&#8217;ve been learning website programming with Python and the Django framework. My previous host does not support Django, and it seems Webfaction is the most popular host among Django geeks. Also, BlueHost does seem to oversell a litle too much, while I&#8217;ve heard good things about Webfaction in that regard. There is one good thing that I&#8217;ll say about Bluehost though, which is that their tech support is friendly and very fast.</p>
<p>This afternoon I purchased my Webfaction account, then made a dump of my MySql DB for WordPress, created a tarball of the WordPress site files, then downloaded both to my laptop. Webfaction supports full shell/SSH goodness, so I then SCP&#8217;d both files to the server. I had a bit of trouble with importing my MySql dump into a new database, so within minutes of submitting a support ticket, I recieved a responce containing two SED lines to fix the problem. A few minutes latter I was up and running.</p>
<p>30 minutes ago I pointed my domain name to the new servers, and I am waiting for the settings to propagate to DNS servers world wide. Meanwhile, Webfaction does not provide DNS hosting, so I purchased a Network Solutions account, and am waiting for crashsystems.net to transfer there. Once that happens, I&#8217;ll finally be able to create my own bloody cname records (DNS tunnel FTW!).</p>
]]></content:encoded>
			<wfw:commentRss>http://crashsystems.net/2009/03/new-web-host/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
