<?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:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Imaginary Robots Blog</title>
	<atom:link href="http://imaginaryrobots.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://imaginaryrobots.wordpress.com</link>
	<description>Technical Weblog of Jesse van Herk</description>
	<lastBuildDate>Sat, 31 Dec 2011 20:36:54 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='imaginaryrobots.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://1.gravatar.com/blavatar/31300d0f09c931738e0657d9294c1597?s=96&#038;d=http%3A%2F%2Fs2.wp.com%2Fi%2Fbuttonw-com.png</url>
		<title>Imaginary Robots Blog</title>
		<link>http://imaginaryrobots.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://imaginaryrobots.wordpress.com/osd.xml" title="Imaginary Robots Blog" />
	<atom:link rel='hub' href='http://imaginaryrobots.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Unlocking the Nexus S from Ubuntu</title>
		<link>http://imaginaryrobots.wordpress.com/2011/12/31/unlocking-nexus-s-from-ubuntu/</link>
		<comments>http://imaginaryrobots.wordpress.com/2011/12/31/unlocking-nexus-s-from-ubuntu/#comments</comments>
		<pubDate>Sat, 31 Dec 2011 20:36:51 +0000</pubDate>
		<dc:creator>imaginaryrobots</dc:creator>
				<category><![CDATA[android]]></category>
		<category><![CDATA[linux]]></category>

		<guid isPermaLink="false">http://imaginaryrobots.wordpress.com/?p=130</guid>
		<description><![CDATA[But Why? I&#8217;ve had my Nexus S for a while now, and I&#8217;ve wanted to root it since I got it. Rooting it will give me full control over my device, which will in turn let me save money and protect my privacy (firewall, anyone?). However, since it&#8217;s my primary phone, I&#8217;ve been putting off messing [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=imaginaryrobots.wordpress.com&amp;blog=11465828&amp;post=130&amp;subd=imaginaryrobots&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<h2>But Why?</h2>
<p>I&#8217;ve had my Nexus S for a while now, and I&#8217;ve wanted to root it since I got it. Rooting it will give me full control over my device, which will in turn let me save money and protect my privacy (firewall, anyone?).</p>
<p>However, since it&#8217;s my primary phone, I&#8217;ve been putting off messing with it.   But with the release of Ice Cream Sandwich, and my discovery of the android.stackexchange.com site, I think I&#8217;ve got enough incentive and information to go ahead and root the thing.</p>
<p>There are several different tutorials out there on how to do this, but most of them seem to be out of date, incomplete, or unclear.  These are the specific steps that I had to do for ubuntu 11.10, your mileagle might vary.</p>
<h2>Make backups!</h2>
<p>Unlocking the bootloader on the nexus S (and probably on all other android phones) causes a factory reset.  Most of the settings/etc are synced automatically to google&#8217;s cloud servers, so those aren&#8217;t at risk.  Assuming you&#8217;ve got the &#8216;sync&#8217; settings enabled on your phone, the following will be safe from the factory reset: contacts, gmail, desktop wallpaper, picasa photos, etc.</p>
<ol>
<li>Make a list of all of the free apps that you have installed.  Google doesn&#8217;t sync that list, so you&#8217;ll have to find and reinstall these after the factory reset.  (Paid apps are attached to your account and will be remembered automatically).</li>
<li>Copy the contents of your USB card somewhere.  I did this by plugging it into my laptop&#8217;s USB, then running:
<ul>
<li><code>tar czvf ~/local/backups/nexuss.backup.tgz /media/XXXX-XXXX/*</code></li>
</ul>
</li>
</ol>
<h2>Upgrade (or install) the android SDK</h2>
<p>I had previously installed the android SDK, which was apparently out of date.  I don&#8217;t really think this was necessary either, but it&#8217;s certainly a good idea.</p>
<ol>
<li><code>cd ~/local/opt/android-sdk-linux_x86</code></li>
<li>start the android SDK interface
<ul>
<li><code>./tools/android</code></li>
</ul>
</li>
<li>follow the instructions in the UI to upgrade the various packages.</li>
</ol>
<h2>Install the fastboot executable</h2>
<p>The fastboot executable is necessary for installing new boot images or changing the unlock state.  It doesn&#8217;t come with the compiled android SDK distribution, but it seems like it comes with the source version and/or the windows SDK.   Finding a decent copy was the hard part.</p>
<ol>
<li>Download the file from the replicant project.   They actually seem legitimate, as opposed to downloading random executables from webforums, which sets off every bad-idea-alarm in my head.
<ul>
<li><a href="http://ftp.osuosl.org/pub/replicant/images/replicant-2.3/preview/0001/tools/">http://ftp.osuosl.org/pub/replicant/images/replicant-2.3/preview/0001/tools/</a></li>
</ul>
</li>
<li>Optionally verify that the executable is legitimate.  This is nearly impossible, but I ran strings on it to see if it had anything obviously malicious.
<ul>
<li><code>strings ~/Downloads/fastboot</code></li>
</ul>
</li>
<li>Move that file to your android SDK tools folder
<ul>
<li><code>mv ~/Downloads/fastboot ~/local/opt/android-sdk-linux_x86/tools/</code></li>
</ul>
</li>
<li>Make that file executable
<ul>
<li><code>chmod 755 fastboot</code></li>
</ul>
</li>
</ol>
<h2>Create a udev rules file</h2>
<p>This step is probably not needed.  Ubuntu already automatically detects my nexus when I plug it in normally.  The reason I did this was because I was having trouble finding out how to get the phone to appear when running &#8216;adb devices&#8217; when in fastboot mode, but that probably won&#8217;t ever work.</p>
<ol>
<li>Plug in the device to a USB port</li>
<li>Verify that it&#8217;s detected by the USB system:
<ul>
<li><code>lsusb</code></li>
<li>look for an entry like:
<ul>
<li>Bus 002 Device 004: ID 18d1:4e21 Google Inc. Nexus S</li>
</ul>
</li>
</ul>
</li>
<li>Create a new udev rules file with elevated permissions:
<ul>
<li><code>sudo $EDITOR /etc/udev/rules.d/51-android.rules</code></li>
</ul>
<p>Enter the following as the contents, making sure the idProduct values match the device outputs from lsusb.  These lines are, in order, fastboot mode, normal mode, and recovery/debug mode.  I&#8217;ve left out the &#8216;OWNER&#8217; field because the GROUP field should be sufficient for things to work.</p>
<blockquote><p>SUBSYSTEM==&#8221;usb&#8221;, SYSFS{idVendor}==&#8221;18d1&#8243;, ATTRS{idProduct}==&#8221;4e20&#8243;, MODE=&#8221;0666&#8243;,  GROUP=&#8221;plugdev&#8221;<br />
SUBSYSTEM==&#8221;usb&#8221;, SYSFS{idVendor}==&#8221;18d1&#8243;, ATTRS{idProduct}==&#8221;4e21&#8243;, MODE=&#8221;0666&#8243;, GROUP=&#8221;plugdev&#8221;<br />
SUBSYSTEM==&#8221;usb&#8221;, SYSFS{idVendor}==&#8221;18d1&#8243;, ATTRS{idProduct}==&#8221;4e22&#8243;, MODE=&#8221;0666&#8243;, GROUP=&#8221;plugdev&#8221;</p></blockquote>
</li>
<li>Set that file to be world-readable:
<ul>
<li><code>sudo chmod a+r /etc/udev/rules.d/51-android.rules</code></li>
</ul>
</li>
<li> Restart the udev service (this is an upstart job these days):
<ul>
<li><code>service restart udev</code></li>
</ul>
</li>
</ol>
<h2>Unlock the bootloader!</h2>
<p>Finally, we&#8217;re ready to do the unlocking!</p>
<ol>
<li>Unplug the phone from your computer.</li>
<li>Turn off the phone.</li>
<li>While holding down the &#8216;Volume Up&#8217; button, press and hold the &#8216;Power&#8217; button until the phone bootloader appears</li>
<li>plug the phone back into your computer&#8217;s ng USB port</li>
<li>Check that the device is detected by fastboot:
<ul>
<li><code>cd ~/local/opt/android-sdk-linux_x86</code></li>
<li><code>./tools/fastboot devices</code></li>
<li>Confirm that your device is listed. If not, time to troubleshoot. (Good luck!)</li>
</ul>
</li>
<li>Run the unlock command from your computer:
<ul>
<li><code>./fastboot oem unlock</code></li>
</ul>
</li>
<li>On the phone, follow the instructions to confirm the unlocking and the factory reset</li>
<li>Restart the phone when done</li>
</ol>
<h2>Reinstall/restore files/etc</h2>
<p>Now that everything is unlocked, go through the initial setup procedure again,  reinstall apps, set up accounts again, etc.  A surprising number of things get synced by google.</p>
<h2>Next Steps</h2>
<p>Now that the phone is unlocked, it&#8217;s time to do something with it!   I&#8217;m not completely sure which way I&#8217;ll be going with this, but some of the options are:</p>
<ul>
<li>install sudo without reinstalling a new boot image.  This seems sanest, but may not be doable.</li>
<li>install a new boot image (aka mod) that includes sudo and other tools.</li>
<li>create my own boot image &#8211; this would be lots of work, but would also be  less sketchy than trusting internet forums.</li>
<li>install apps like a firewall, adblockers, etc.  Also known as the useful stuff.</li>
<li>Figure out how to dual-boot Ubuntu or some other pure linux variant.</li>
</ul>
<p>And of course once Android 4.0 (Ice Cream Sandwich) gets pushed to my phone, I&#8217;ll probably have to do this all over again.  But then that&#8217;s why I&#8217;m documenting this in the first place.</p>
<h2>Things that aren&#8217;t needed</h2>
<p>I found several things around the web that didn&#8217;t seem useful or relevant for unlocking/rooting the phone.  They probably serve other purposes, but I haven&#8217;t come across those yet. Those include:</p>
<ol>
<li>creating ~/.android/adb_usb.ini  .  I&#8217;m working with fastboot, not adb, so this wasn&#8217;t needed.</li>
</ol>
<h2>Other References</h2>
<p>These sites/pages were very helpful while sorting this out:</p>
<ul>
<li><a href="http://android.stackexchange.com/questions/1184/how-do-i-root-my-device">http://android.stackexchange.com/questions/1184/how-do-i-root-my-device</a></li>
<li><a href="http://ftp.osuosl.org/pub/replicant/images/replicant-2.3/preview/0001/tools/">http://ftp.osuosl.org/pub/replicant/images/replicant-2.3/preview/0001/tools/</a></li>
<li><a href="http://wiki.cyanogenmod.com/wiki/Udev">http://wiki.cyanogenmod.com/wiki/Udev</a></li>
</ul>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/imaginaryrobots.wordpress.com/130/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/imaginaryrobots.wordpress.com/130/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/imaginaryrobots.wordpress.com/130/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/imaginaryrobots.wordpress.com/130/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/imaginaryrobots.wordpress.com/130/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/imaginaryrobots.wordpress.com/130/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/imaginaryrobots.wordpress.com/130/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/imaginaryrobots.wordpress.com/130/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/imaginaryrobots.wordpress.com/130/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/imaginaryrobots.wordpress.com/130/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/imaginaryrobots.wordpress.com/130/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/imaginaryrobots.wordpress.com/130/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/imaginaryrobots.wordpress.com/130/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/imaginaryrobots.wordpress.com/130/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=imaginaryrobots.wordpress.com&amp;blog=11465828&amp;post=130&amp;subd=imaginaryrobots&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://imaginaryrobots.wordpress.com/2011/12/31/unlocking-nexus-s-from-ubuntu/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3b0ee7ba07ab16142986e5af9ef412f7?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=PG" medium="image">
			<media:title type="html">imaginaryrobots</media:title>
		</media:content>
	</item>
		<item>
		<title>Android stackexchange</title>
		<link>http://imaginaryrobots.wordpress.com/2011/12/31/android-stackexchange/</link>
		<comments>http://imaginaryrobots.wordpress.com/2011/12/31/android-stackexchange/#comments</comments>
		<pubDate>Sat, 31 Dec 2011 07:15:40 +0000</pubDate>
		<dc:creator>imaginaryrobots</dc:creator>
				<category><![CDATA[android]]></category>
		<category><![CDATA[linux]]></category>

		<guid isPermaLink="false">http://imaginaryrobots.wordpress.com/?p=128</guid>
		<description><![CDATA[I can&#8217;t believe I hadn&#8217;t found this stackexchange site before &#8211; finally a source for information about android that isn&#8217;t a webforum! http://android.stackexchange.com<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=imaginaryrobots.wordpress.com&amp;blog=11465828&amp;post=128&amp;subd=imaginaryrobots&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I can&#8217;t believe I hadn&#8217;t found this stackexchange site before &#8211; finally a source for information about android that isn&#8217;t a webforum!</p>
<p><a title="android.stackexchange.com" href="http://android.stackexchange.com">http://android.stackexchange.com </a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/imaginaryrobots.wordpress.com/128/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/imaginaryrobots.wordpress.com/128/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/imaginaryrobots.wordpress.com/128/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/imaginaryrobots.wordpress.com/128/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/imaginaryrobots.wordpress.com/128/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/imaginaryrobots.wordpress.com/128/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/imaginaryrobots.wordpress.com/128/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/imaginaryrobots.wordpress.com/128/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/imaginaryrobots.wordpress.com/128/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/imaginaryrobots.wordpress.com/128/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/imaginaryrobots.wordpress.com/128/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/imaginaryrobots.wordpress.com/128/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/imaginaryrobots.wordpress.com/128/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/imaginaryrobots.wordpress.com/128/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=imaginaryrobots.wordpress.com&amp;blog=11465828&amp;post=128&amp;subd=imaginaryrobots&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://imaginaryrobots.wordpress.com/2011/12/31/android-stackexchange/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3b0ee7ba07ab16142986e5af9ef412f7?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=PG" medium="image">
			<media:title type="html">imaginaryrobots</media:title>
		</media:content>
	</item>
		<item>
		<title>NWN2 in Windows 7</title>
		<link>http://imaginaryrobots.wordpress.com/2011/09/07/nwn2-in-windows-7/</link>
		<comments>http://imaginaryrobots.wordpress.com/2011/09/07/nwn2-in-windows-7/#comments</comments>
		<pubDate>Wed, 07 Sep 2011 01:31:11 +0000</pubDate>
		<dc:creator>imaginaryrobots</dc:creator>
				<category><![CDATA[Games]]></category>
		<category><![CDATA[games bioware nwn nwn2]]></category>

		<guid isPermaLink="false">http://imaginaryrobots.wordpress.com/?p=114</guid>
		<description><![CDATA[The other night I attempted to play some neverwinter nights multiplayer in linux, but ended up with a pile of segfaults and frustration.  Thinking it would somehow be easier, I went online and bought Neverwinter Nights 2.   Foolish me for thinking that a newer game running in Windows would be easier. Problems I encountered: mysterious [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=imaginaryrobots.wordpress.com&amp;blog=11465828&amp;post=114&amp;subd=imaginaryrobots&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>The other night I attempted to play some neverwinter nights multiplayer in linux, but ended up with a pile of segfaults and frustration.  Thinking it would somehow be easier, I went online and bought Neverwinter Nights 2.   Foolish me for thinking that a newer game running in Windows would be easier.</p>
<p>Problems I encountered:</p>
<ul>
<li>mysterious error about DX_INSTALL_ERROR not being in the string table</li>
<li>game not launching at all</li>
<li>updater failing out with &#8220;The patch has been aborted&#8221; messages (especially on nwn2_pc_english_from105912_to106972.zip).  Failing, <strong>a lot.</strong></li>
</ul>
<p>Here are the steps that appear to work:</p>
<ol>
<li>purchase the digital download game from Atari&#8217;s site</li>
<li>wait for downloads to finish (overnight)</li>
<li>install latest version of DirectX 9.0c from Microsoft&#8217;s site</li>
<li>install latest video card drivers</li>
<li>run installer file</li>
<li>it mostly works, but errors out at the end with something about DX_INSTALL_ERROR</li>
<li>go to the folder with the installed files :   c:\Program Files(x86)\Atari\Neverwinter Nights 2\</li>
<li>right click on nwn2.exe and go to the &#8216;compatibility&#8217; tab</li>
<li>set it to run as windows XP SP3, and set it to run as administrator</li>
<li>do the same for nwnmain.exe</li>
<li>run NWLauncher.exe</li>
<li>In the weirdo SecuROM window that comes up, click on &#8220;I bought this game and need to activate it because DRM is retarded&#8221;, then re-enter your NWN2 cdkey (from the email).</li>
<li>click &#8216;update&#8217; in the launcher screen</li>
<li>click &#8216;update&#8217; again</li>
<li>if it fails to download a patch, try again. and again.  and again.  It eventually succeeded for me.</li>
<li>if one patch works then another fails to download, hit &#8216;update&#8217;. again.</li>
<li>feel a vague sense of accomplishment that it got to version 1.06.</li>
<li>feel a greater sense of dread that there are still 2 expansions to install/patch.</li>
<li>wait for it to fail on another patch download. click &#8216;update&#8217;. again.</li>
<li>rinse, lather, repeat.  I had the updater fail on 1.05, 1.05. 1.06, 1.09, 1.11, 1.11, &#8230;</li>
<li>patches above 1.11 seem to be only if you have the expansions installed, so leave those for another day.</li>
<li>quit the updater and try launching NWN2 from the start menu</li>
<li>re-re-enter your CDkey in the bollocking secuROM window.</li>
<li>holy crap the game works!</li>
</ol>
<p>After all that, the game runs well so far in the tutorial zone.  I&#8217;ll update further if there&#8217;s anything else that needs fixing later on in the game, or when I try installing the expansions.  I assume the expansions are a variant of download/install/patchpatchpatchpatch.</p>
<p>It seems that setting compatibility mode means that you don&#8217;t need to manually download patches, though I suspect it might have been quicker to go that route rather than hit &#8216;update&#8217; fifty times.</p>
<p>The NWN2 forums may also be useful, though far less-so since the old BW forums went offline:</p>
<p><a title="NWN2 Tech Support Forum thread" href="http://social.bioware.com/forum/1/topic/158/index/3116296">http://social.bioware.com/forum/1/topic/158/index/3116296</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/imaginaryrobots.wordpress.com/114/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/imaginaryrobots.wordpress.com/114/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/imaginaryrobots.wordpress.com/114/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/imaginaryrobots.wordpress.com/114/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/imaginaryrobots.wordpress.com/114/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/imaginaryrobots.wordpress.com/114/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/imaginaryrobots.wordpress.com/114/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/imaginaryrobots.wordpress.com/114/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/imaginaryrobots.wordpress.com/114/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/imaginaryrobots.wordpress.com/114/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/imaginaryrobots.wordpress.com/114/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/imaginaryrobots.wordpress.com/114/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/imaginaryrobots.wordpress.com/114/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/imaginaryrobots.wordpress.com/114/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=imaginaryrobots.wordpress.com&amp;blog=11465828&amp;post=114&amp;subd=imaginaryrobots&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://imaginaryrobots.wordpress.com/2011/09/07/nwn2-in-windows-7/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3b0ee7ba07ab16142986e5af9ef412f7?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=PG" medium="image">
			<media:title type="html">imaginaryrobots</media:title>
		</media:content>
	</item>
		<item>
		<title>Minecraft in Ubuntu 10.04</title>
		<link>http://imaginaryrobots.wordpress.com/2010/09/27/minecraft-ubunt/</link>
		<comments>http://imaginaryrobots.wordpress.com/2010/09/27/minecraft-ubunt/#comments</comments>
		<pubDate>Mon, 27 Sep 2010 18:42:25 +0000</pubDate>
		<dc:creator>imaginaryrobots</dc:creator>
				<category><![CDATA[Misc]]></category>

		<guid isPermaLink="false">http://imaginaryrobots.wordpress.com/?p=110</guid>
		<description><![CDATA[Minecraft is a great game, and supports a linux client.  Unfortunately, it doesn&#8217;t actually ship with any sort of launcher script, just a .jar file.  Since getting java to run anything is a pain, here&#8217;s my launcher script: #!/bin/bash # from all appearances, this works with ubuntu openjvm packages, and with the Minecraft.jar file located [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=imaginaryrobots.wordpress.com&amp;blog=11465828&amp;post=110&amp;subd=imaginaryrobots&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Minecraft is a great game, and supports a linux client.  Unfortunately, it doesn&#8217;t actually ship with any sort of launcher script, just a .jar file.  Since getting java to run anything is a pain, here&#8217;s my launcher script:</p>
<p><code> #!/bin/bash<br />
# from all appearances, this works with ubuntu openjvm packages, and with the Minecraft.jar file located<br />
# update this to be the directory with the Minecraft.jar file<br />
MINECRAFT_JAR_DIR=~/local/games/minecraft<br />
java -Xms800M -Xmx800M -classpath .:lib/jinput.jar:lib/lwjgl.jar:lib/lwjgl_util.jar:lib/wom.jar:$MINECRAFT_JAR_DIR -Djava.library.path=native/linux -jar $MINECRAFT_JAR_DIR/Minecraft.jar Main</code></p>
<p>I had one issue with keyboard input not working after the login screen, which I resolved by uninstalling the ibus-anthy package (but most people won&#8217;t have that).</p>
<p>Save file directories can be copied over directly from windows.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/imaginaryrobots.wordpress.com/110/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/imaginaryrobots.wordpress.com/110/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/imaginaryrobots.wordpress.com/110/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/imaginaryrobots.wordpress.com/110/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/imaginaryrobots.wordpress.com/110/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/imaginaryrobots.wordpress.com/110/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/imaginaryrobots.wordpress.com/110/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/imaginaryrobots.wordpress.com/110/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/imaginaryrobots.wordpress.com/110/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/imaginaryrobots.wordpress.com/110/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/imaginaryrobots.wordpress.com/110/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/imaginaryrobots.wordpress.com/110/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/imaginaryrobots.wordpress.com/110/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/imaginaryrobots.wordpress.com/110/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=imaginaryrobots.wordpress.com&amp;blog=11465828&amp;post=110&amp;subd=imaginaryrobots&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://imaginaryrobots.wordpress.com/2010/09/27/minecraft-ubunt/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3b0ee7ba07ab16142986e5af9ef412f7?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=PG" medium="image">
			<media:title type="html">imaginaryrobots</media:title>
		</media:content>
	</item>
		<item>
		<title>Checklist for Scaling a Web Application</title>
		<link>http://imaginaryrobots.wordpress.com/2010/08/31/checklist-scaling-a-web-application/</link>
		<comments>http://imaginaryrobots.wordpress.com/2010/08/31/checklist-scaling-a-web-application/#comments</comments>
		<pubDate>Tue, 31 Aug 2010 18:26:11 +0000</pubDate>
		<dc:creator>imaginaryrobots</dc:creator>
				<category><![CDATA[database]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Scalability]]></category>

		<guid isPermaLink="false">http://imaginaryrobots.wordpress.com/?p=107</guid>
		<description><![CDATA[After reading Todd Hoff&#8217;s list of scaling lessons learned, I decided to put together my own list of scaling tricks. These were all learned the hard way as well, and will scale you up to thousands of concurrent users.  It&#8217;s worth noting that many of these don&#8217;t cost anything beyond programmer-time, and take less time [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=imaginaryrobots.wordpress.com&amp;blog=11465828&amp;post=107&amp;subd=imaginaryrobots&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>After reading <a href="http://highscalability.com/blog/2010/8/23/6-ways-to-kill-your-servers-learning-how-to-scale-the-hard-w.html">Todd Hoff&#8217;s list of scaling lessons learned</a>, I decided to put together my own list of scaling tricks.  These were all learned the hard way as well, and will scale you up to thousands of concurrent users.  It&#8217;s worth noting that many of these don&#8217;t cost anything beyond programmer-time, and take less time than ordering/waiting for more hardware.   You may still need to throw more hardware at the problem eventually, but these will make sure you&#8217;re effectively using the hardware you have.</p>
<ol>
<li>make sure you have an abstract data access layer that ALL queries go through &#8211; you can then reroute/cache them as needed without rewriting your entire app every time.  You will have to do this eventually, and it&#8217;s easiest to do FIRST.</li>
<li>make sure your DB servers are separate machines from your webservers.  This seems obvious, but often isn&#8217;t the case.</li>
<li>deploy your code to each webserver&#8217;s local filesystem &#8211; don&#8217;t use NFS or shared drives. This prevents NFS from fucking you, and is worth rewriting your deployment system (you do have a deployment system, right?)</li>
<li>set up file caches (esp. smarty cache) per-machine, NOT on network/share.  This avoids write-conflicts and loading delays.  Write a script that will clear the caches on all machines on command.</li>
<li>set up MySql in a master-slave setup with at least 2 slaves &#8211; this will allows you to scale at all.</li>
<li>put any columns with fulltext indexes in separate tables (basic sharding), and do secondary writes in your code to update them.  This speeds up all queries to the original table, reduces the chances of table corruption, and lets you return less data on many queries.</li>
<li>use InnoDB for pretty much any table that doesn&#8217;t have fulltext indexes.  This speeds up all queries to the tables by using row-level rather than table-level locking (there are exceptions, of course, but those depend on your app)</li>
<li>set up a hot backup server that can be set as the master on short notice. <strong>TEST THIS FAILOVER!</strong></li>
<li>send <strong>all</strong> DB writes to the master.  This allows you to scale reads and leaves the master time to handle all of the writes.</li>
<li>send <strong>some</strong> reads to the master &#8211; specifically read-after-writes to confirm queries/get IDs/etc. This should be an option passed to your data access layer.</li>
<li>set up a shared <a href="http://memcached.org">memcached</a> or a similar technology to cache DB query results and user info &#8211; this avoids redundant read queries and can serve 100x as many queries per second as mysql.  Seriously.</li>
<li>do less DB write queries.  Change your code to write multiple rows to a table at once instead of one at a time.</li>
<li>write changes to the memcached cache as well as to the DB &#8211; this avoids re-reads.</li>
<li>serve static files (images, css, etc) from a separate webserver or CDN &#8211; this leaves more CPU for actual work.</li>
<li>move things to batch scripts/cron jobs. This lets you have single-processes doing heavy lifting instead of having them delaying page loads.</li>
<li>move batch scripts/cron jobs to a separate server and slave database</li>
<li>change batch scripts to use a job queue &#8211; this keeps your servers from overloading and lets you monitor health based on # of waiting jobs rather than on CPU usage.  It also lets you have lots of copies of the script emptying the same queue.</li>
<li>set up a second memcached server, shard your cached data between them &#8211; redundancy is good, and will let you scale memcached.</li>
</ol>
<p>These are obviously not the only ways to scale a website, but they cover 90% of the problems that you&#8217;re likely to run into while scaling.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/imaginaryrobots.wordpress.com/107/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/imaginaryrobots.wordpress.com/107/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/imaginaryrobots.wordpress.com/107/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/imaginaryrobots.wordpress.com/107/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/imaginaryrobots.wordpress.com/107/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/imaginaryrobots.wordpress.com/107/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/imaginaryrobots.wordpress.com/107/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/imaginaryrobots.wordpress.com/107/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/imaginaryrobots.wordpress.com/107/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/imaginaryrobots.wordpress.com/107/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/imaginaryrobots.wordpress.com/107/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/imaginaryrobots.wordpress.com/107/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/imaginaryrobots.wordpress.com/107/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/imaginaryrobots.wordpress.com/107/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=imaginaryrobots.wordpress.com&amp;blog=11465828&amp;post=107&amp;subd=imaginaryrobots&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://imaginaryrobots.wordpress.com/2010/08/31/checklist-scaling-a-web-application/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3b0ee7ba07ab16142986e5af9ef412f7?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=PG" medium="image">
			<media:title type="html">imaginaryrobots</media:title>
		</media:content>
	</item>
		<item>
		<title>Dancer in Shared Hosting</title>
		<link>http://imaginaryrobots.wordpress.com/2010/08/02/dancer-in-shared-hosting/</link>
		<comments>http://imaginaryrobots.wordpress.com/2010/08/02/dancer-in-shared-hosting/#comments</comments>
		<pubDate>Mon, 02 Aug 2010 17:15:57 +0000</pubDate>
		<dc:creator>imaginaryrobots</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://imaginaryrobots.wordpress.com/?p=101</guid>
		<description><![CDATA[The current version of my website runs on a lightweight perl framework called Dancer. It&#8217;s easy to learn and avoids the massive weight of Catalyst, making it ideal for use in shared hosting (paying to get a VM just so you can install thousands of perl modules is not cool). Dancer runs under fastCGI, mod [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=imaginaryrobots.wordpress.com&amp;blog=11465828&amp;post=101&amp;subd=imaginaryrobots&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>The current version of my website runs on a lightweight perl framework called <a href="http://perldancer.org">Dancer</a>.  It&#8217;s easy to learn and avoids the massive weight of <a href="http://catalystframework.org">Catalyst</a>, making it ideal for use in shared hosting (paying to get a VM just so you can install thousands of perl modules is not cool).</p>
<p>Dancer runs under fastCGI, mod perl, and (most importantly for shared hosting) plain old CGI.   Unfortunately, the online docs assume you can edit your apache.conf file and don&#8217;t really cover situations where you only have an htaccess at your disposal.   Here is the config that I have used to make it work with only mod rewrite:</p>
<p>Contents of top-level htaccess:<br />
<code><br />
AddDefaultCharset utf-8</p>
<p>RewriteEngine On<br />
RewriteBase /</p>
<p># explicit rule to make sure our root dir gets handled<br />
RewriteRule ^$ /dispatch.cgi/ [L,QSA]</p>
<p># allow actual files and paths to get through (passthrough)<br />
RewriteCond %{REQUEST_FILENAME} -f [OR]<br />
RewriteCond %{REQUEST_FILENAME} -d<br />
RewriteRule ^.*$ - [L,QSA]</p>
<p># rewrite everything remaining to our main CGI<br />
RewriteRule ^(.*) /dispatch.cgi/$1 [L,QSA]</p>
<p>## END ##<br />
</code></p>
<p>The directory structure to go with this is *almost* the Dancer default layout:</p>
<ul>
<li><b>htdocs/</b>
<ul>
<li>dispatch.cgi</li>
<li>favicon.ico</li>
<li>css/</li>
<li>images/</li>
</ul>
</li>
<li><b>IrDance/</b>    (folder as built by Dancer)
<ul>
<li>app.psgi</li>
<li>config.yml</li>
<li>IrDance.pm</li>
<li>logs/</li>
<li>views/</li>
<li>environments/</li>
<li>IrDance/</li>
</ul>
</li>
<li><b>lib/</b>
<ul>
<li>perl5/       (module dependencies)</li>
</li>
</ul>
<p>I am using <a href="http://github.com/miyagawa/cpanminus/blob/master/README">cpanminus</a> to bring in dependencies, since the shared hosting doesn&#8217;t have most of them.  I&#8217;m also using <a href="http://search.cpan.org/~getty/local-lib-1.006005/lib/local/lib.pm">local::lib</a> to get them installed and managed in the lib/perl5 directory above.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/imaginaryrobots.wordpress.com/101/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/imaginaryrobots.wordpress.com/101/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/imaginaryrobots.wordpress.com/101/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/imaginaryrobots.wordpress.com/101/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/imaginaryrobots.wordpress.com/101/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/imaginaryrobots.wordpress.com/101/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/imaginaryrobots.wordpress.com/101/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/imaginaryrobots.wordpress.com/101/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/imaginaryrobots.wordpress.com/101/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/imaginaryrobots.wordpress.com/101/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/imaginaryrobots.wordpress.com/101/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/imaginaryrobots.wordpress.com/101/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/imaginaryrobots.wordpress.com/101/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/imaginaryrobots.wordpress.com/101/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=imaginaryrobots.wordpress.com&amp;blog=11465828&amp;post=101&amp;subd=imaginaryrobots&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://imaginaryrobots.wordpress.com/2010/08/02/dancer-in-shared-hosting/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3b0ee7ba07ab16142986e5af9ef412f7?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=PG" medium="image">
			<media:title type="html">imaginaryrobots</media:title>
		</media:content>
	</item>
		<item>
		<title>Fixing Wireless After Crash in Lucid</title>
		<link>http://imaginaryrobots.wordpress.com/2010/04/27/fixing-wireless-after-crash-in-lucid/</link>
		<comments>http://imaginaryrobots.wordpress.com/2010/04/27/fixing-wireless-after-crash-in-lucid/#comments</comments>
		<pubDate>Tue, 27 Apr 2010 19:19:05 +0000</pubDate>
		<dc:creator>imaginaryrobots</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[Misc]]></category>
		<category><![CDATA[broadcom]]></category>
		<category><![CDATA[networkmanager]]></category>
		<category><![CDATA[wireless]]></category>

		<guid isPermaLink="false">http://imaginaryrobots.wordpress.com/?p=83</guid>
		<description><![CDATA[In Ubuntu Lucid, there is apparently an infrequent problem with NetworkManager not coming back properly when waking up a laptop from sleep/hibernate. Even though it seemed like the wireless driver was somehow no longer working, it was actually due to an inconsistent state being saved/restored. No amount of stopping/restarting services or reloading modules helped, since [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=imaginaryrobots.wordpress.com&amp;blog=11465828&amp;post=83&amp;subd=imaginaryrobots&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>In Ubuntu Lucid, there is apparently an infrequent problem with NetworkManager not coming back properly when waking up a laptop from sleep/hibernate.  Even though it seemed like the wireless driver was somehow no longer working, it was actually due to an inconsistent state being saved/restored. No amount of stopping/restarting services or reloading modules helped, since the config claimed to be working as expected.</p>
<p>The basic fix:</p>
<ol>
<li>Open this file in your favourite text editor:<br />
 <code>/var/lib/NetworkManager/NetworkManager.state</code>
</li>
<li>Changing The NewrokingEnabled line to be:<br />
<code><br />
 NetworkingEnabled=true<br />
</code>
</li>
<li>Restart networkmanager with:<br />
<code><br />
 sudo service network-manager restart<br />
</code>
</li>
</ol>
<p>It would be very helpful if KNetworkManager provided a GUI way to detect/fix this &#8211; I may have a go at adding it.</p>
<p>The full bug report is here:<br />
<a href="https://bugs.launchpad.net/ubuntu/+bug/555571">https://bugs.launchpad.net/ubuntu/+bug/555571</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/imaginaryrobots.wordpress.com/83/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/imaginaryrobots.wordpress.com/83/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/imaginaryrobots.wordpress.com/83/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/imaginaryrobots.wordpress.com/83/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/imaginaryrobots.wordpress.com/83/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/imaginaryrobots.wordpress.com/83/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/imaginaryrobots.wordpress.com/83/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/imaginaryrobots.wordpress.com/83/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/imaginaryrobots.wordpress.com/83/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/imaginaryrobots.wordpress.com/83/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/imaginaryrobots.wordpress.com/83/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/imaginaryrobots.wordpress.com/83/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/imaginaryrobots.wordpress.com/83/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/imaginaryrobots.wordpress.com/83/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=imaginaryrobots.wordpress.com&amp;blog=11465828&amp;post=83&amp;subd=imaginaryrobots&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://imaginaryrobots.wordpress.com/2010/04/27/fixing-wireless-after-crash-in-lucid/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3b0ee7ba07ab16142986e5af9ef412f7?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=PG" medium="image">
			<media:title type="html">imaginaryrobots</media:title>
		</media:content>
	</item>
		<item>
		<title>Broadcom wireless Network in Kubuntu Lucid</title>
		<link>http://imaginaryrobots.wordpress.com/2010/04/27/broadcom-wireless-network-in-kubuntu-lucid/</link>
		<comments>http://imaginaryrobots.wordpress.com/2010/04/27/broadcom-wireless-network-in-kubuntu-lucid/#comments</comments>
		<pubDate>Tue, 27 Apr 2010 19:07:02 +0000</pubDate>
		<dc:creator>imaginaryrobots</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[broadcom]]></category>
		<category><![CDATA[wireless]]></category>

		<guid isPermaLink="false">http://imaginaryrobots.wordpress.com/?p=81</guid>
		<description><![CDATA[When I set up Kubuntu Lucid on my new laptop a month ago, I promised I would document what was needed to get the broadcom wireless driver working. As it turns out, that was incredibly simple so I never got around to it. However, I just had an issue with my laptop losing wireless after [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=imaginaryrobots.wordpress.com&amp;blog=11465828&amp;post=81&amp;subd=imaginaryrobots&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>When I set up Kubuntu Lucid on my new laptop a month ago, I promised I would document what was needed to get the broadcom wireless driver working.   As it turns out, that was incredibly simple so I never got around to it.  However, I just had an issue with my laptop losing wireless after a crash, and I wasted time fiddling because I couldn&#8217;t remember what I&#8217;d actually set up.  </p>
<p>Steps to get the Broadcom wireless network card working in the first place:</p>
<ol>
<li>Plug the laptop into a wired ethernet port (you need internet to install the wireless driver!)</li>
<li>Open the K Menu -&gt; Applications -&gt; System -&gt; Hardware Drivers</li>
<li>enter your password when prompted</li>
<li>In the window that appears, enable the &#8220;broadcom blah blah blah&#8221; driver</li>
</ol>
<p>This will install the bcmwl-kernel-source package, and will set up/load the &#8220;bcmwl&#8221; driver.  Tada, wireless should now work, without editing a single text file.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/imaginaryrobots.wordpress.com/81/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/imaginaryrobots.wordpress.com/81/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/imaginaryrobots.wordpress.com/81/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/imaginaryrobots.wordpress.com/81/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/imaginaryrobots.wordpress.com/81/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/imaginaryrobots.wordpress.com/81/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/imaginaryrobots.wordpress.com/81/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/imaginaryrobots.wordpress.com/81/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/imaginaryrobots.wordpress.com/81/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/imaginaryrobots.wordpress.com/81/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/imaginaryrobots.wordpress.com/81/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/imaginaryrobots.wordpress.com/81/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/imaginaryrobots.wordpress.com/81/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/imaginaryrobots.wordpress.com/81/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=imaginaryrobots.wordpress.com&amp;blog=11465828&amp;post=81&amp;subd=imaginaryrobots&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://imaginaryrobots.wordpress.com/2010/04/27/broadcom-wireless-network-in-kubuntu-lucid/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3b0ee7ba07ab16142986e5af9ef412f7?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=PG" medium="image">
			<media:title type="html">imaginaryrobots</media:title>
		</media:content>
	</item>
		<item>
		<title>libstdc++5 in ubuntu Lucid</title>
		<link>http://imaginaryrobots.wordpress.com/2010/04/05/libstdc5-in-ubuntu-lucid/</link>
		<comments>http://imaginaryrobots.wordpress.com/2010/04/05/libstdc5-in-ubuntu-lucid/#comments</comments>
		<pubDate>Mon, 05 Apr 2010 18:11:07 +0000</pubDate>
		<dc:creator>imaginaryrobots</dc:creator>
				<category><![CDATA[linux]]></category>

		<guid isPermaLink="false">http://imaginaryrobots.wordpress.com/?p=77</guid>
		<description><![CDATA[Apparently ubuntu removed the rather-old libstdc++5 library in Karmic Koala, and it&#8217;s still missing in Lucid Lynx. This leads to some 32-bit programs throwing errors like this: error while loading shared libraries: libstdc++.so.5: cannot open shared object file: No such file or directory There is a ppa (personal package archive) you can add to re-enable [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=imaginaryrobots.wordpress.com&amp;blog=11465828&amp;post=77&amp;subd=imaginaryrobots&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Apparently ubuntu removed the rather-old libstdc++5 library in Karmic Koala, and it&#8217;s still missing in Lucid Lynx.  This leads to some 32-bit programs throwing errors like this:</p>
<p><code><br />
error while loading shared libraries: libstdc++.so.5: cannot open shared object file: No such file or directory<br />
</code></p>
<p>There is a ppa (personal package archive) you can add to re-enable this.  Note that it has to be &#8220;karmic&#8221; even if you&#8217;re running a later release.  These instructions are taken from the official bug report, and will work for amd64 (not sure about 32-bit architecture).</p>
<p>Add these 2 lines to your /etc/apt/sources.list (or use the package management app):</p>
<p><code><br />
deb http://ppa.launchpad.net/jason-scheunemann/ppa/ubuntu  karmic main<br />
deb-src http://ppa.launchpad.net/jason-scheunemann/ppa/ubuntu karmic main<br />
</code></p>
<p>Then import the key and install the required package:<br />
<code><br />
sudo wget -q 'http://keyserver.ubuntu.com:11371/pks/lookup?op=get&amp;search=0x932062C9CD30EE56'  -O - | sudo apt-key add -<br />
</code><br />
<code><br />
sudo apt-get update<br />
</code><code><br />
sudo apt-get install lib32stdc++5<br />
</code></p>
<p>The full bug as well as several other possible workarounds can be found here:<br />
<a href="https://bugs.launchpad.net/ubuntu/+source/ia32-libs/+bug/431091">https://bugs.launchpad.net/ubuntu/+source/ia32-libs/+bug/431091</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/imaginaryrobots.wordpress.com/77/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/imaginaryrobots.wordpress.com/77/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/imaginaryrobots.wordpress.com/77/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/imaginaryrobots.wordpress.com/77/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/imaginaryrobots.wordpress.com/77/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/imaginaryrobots.wordpress.com/77/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/imaginaryrobots.wordpress.com/77/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/imaginaryrobots.wordpress.com/77/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/imaginaryrobots.wordpress.com/77/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/imaginaryrobots.wordpress.com/77/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/imaginaryrobots.wordpress.com/77/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/imaginaryrobots.wordpress.com/77/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/imaginaryrobots.wordpress.com/77/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/imaginaryrobots.wordpress.com/77/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=imaginaryrobots.wordpress.com&amp;blog=11465828&amp;post=77&amp;subd=imaginaryrobots&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://imaginaryrobots.wordpress.com/2010/04/05/libstdc5-in-ubuntu-lucid/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3b0ee7ba07ab16142986e5af9ef412f7?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=PG" medium="image">
			<media:title type="html">imaginaryrobots</media:title>
		</media:content>
	</item>
		<item>
		<title>Ubuntu Lucid Dual-boot Error</title>
		<link>http://imaginaryrobots.wordpress.com/2010/03/31/ubuntu-lucid-dual-boot-error/</link>
		<comments>http://imaginaryrobots.wordpress.com/2010/03/31/ubuntu-lucid-dual-boot-error/#comments</comments>
		<pubDate>Wed, 31 Mar 2010 14:07:50 +0000</pubDate>
		<dc:creator>imaginaryrobots</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[Misc]]></category>

		<guid isPermaLink="false">http://imaginaryrobots.wordpress.com/?p=73</guid>
		<description><![CDATA[I just set up dual-boot on my new Dell laptop with Windows 7 and Ubuntu Lucid Lynx (10.04 beta1). It worked great (the new ubuntu installer is awesome) up until I rebooted into windows. Technically that worked well too, until I rebooted again and got the error: No module name found. Aborted. Press any key [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=imaginaryrobots.wordpress.com&amp;blog=11465828&amp;post=73&amp;subd=imaginaryrobots&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I just set up dual-boot on my new Dell laptop with Windows 7 and Ubuntu Lucid Lynx (10.04 beta1).  It worked great (the new ubuntu installer is awesome) up until I rebooted into windows.  Technically that worked well too, until I rebooted again and got the error:</p>
<blockquote><p>
No module name found.  Aborted.  Press any key to exit.<br />
[some stuff about pxe devices]<br />
No operating system found
</p></blockquote>
<p>Now, this isn&#8217;t my first rodeo, so I know that&#8217;s not nearly as scary a message as it seems &#8211; this usually means Windows isn&#8217;t playing nice with others, and decided to take its MBR and go home.    The operating systems are still there, we just need to restore the MBR so they can be found.  Luckily we&#8217;ve got a shiny ubuntu install disk, which can be used for<br />
recovery!</p>
<p>The solution:</p>
<ol>
<li>insert the ubuntu cd and select &#8220;Try without installing&#8221;
<li>wait for the ubuntu desktop to have started
<li>determine which partition your ubuntu install is on.  Since my laptop is a dell, it&#8217;s on /dev/sda5 &#8211; yours is probably on /dev/sda2 for standard dual-boot setups.  (I&#8217;ll use sda2 here)
<li><code>sudo mkdir /mnt/sda2</code></li>
<li><code>sudo mount /dev/sda2 /mnt/sda2</code></li>
<li><code>sudo chroot /mnt/sda2 /bin/bash</code></li>
<li><code>sudo mount /proc</code></li>
<li><code>sudo mount /dev</code></li>
<li><code>sudo grub-install /dev/sda</code></li>
<li>now reboot your computer, the grub menu should now show up!
</ol>
<p>Okay, so why does that work?  The theory is that you need to mount your already-installed ubuntu partition somewhere, then chroot (change root) to start using that install&#8217;s files for the ensuing operations.   The real fix is the call to grub-install &#8211; everything else is just setup. </p>
<p>I&#8217;m not sure yet whether windows7 will continue to eat my MBR.  If it does, I will post an update with further instructions.</p>
<p><b>Update:</b> It appears that this is related to the Dell DataSafe Local Backup tool &#8211; it was one of the first things I disabled/uninstalled, which explains why I didn&#8217;t run into this again.  I will re-enable it at some point and blog the results.  Probably related ubuntu bug:<br />
<a href="https://bugs.launchpad.net/ubuntu/+source/grub2/+bug/482757">https://bugs.launchpad.net/ubuntu/+source/grub2/+bug/482757</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/imaginaryrobots.wordpress.com/73/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/imaginaryrobots.wordpress.com/73/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/imaginaryrobots.wordpress.com/73/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/imaginaryrobots.wordpress.com/73/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/imaginaryrobots.wordpress.com/73/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/imaginaryrobots.wordpress.com/73/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/imaginaryrobots.wordpress.com/73/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/imaginaryrobots.wordpress.com/73/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/imaginaryrobots.wordpress.com/73/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/imaginaryrobots.wordpress.com/73/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/imaginaryrobots.wordpress.com/73/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/imaginaryrobots.wordpress.com/73/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/imaginaryrobots.wordpress.com/73/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/imaginaryrobots.wordpress.com/73/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=imaginaryrobots.wordpress.com&amp;blog=11465828&amp;post=73&amp;subd=imaginaryrobots&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://imaginaryrobots.wordpress.com/2010/03/31/ubuntu-lucid-dual-boot-error/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3b0ee7ba07ab16142986e5af9ef412f7?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=PG" medium="image">
			<media:title type="html">imaginaryrobots</media:title>
		</media:content>
	</item>
	</channel>
</rss>
