<?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>My Humble Corner</title>
	<atom:link href="http://myhumblecorner.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://myhumblecorner.wordpress.com</link>
	<description>In this large world, this one place is where I write about my discoveries, activities, and adventures.</description>
	<lastBuildDate>Thu, 22 Oct 2009 15:25:21 +0000</lastBuildDate>
	<generator>http://wordpress.com/</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<cloud domain='myhumblecorner.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://www.gravatar.com/blavatar/0fed7d82bf85c78f48846da27e403f98?s=96&#038;d=http://s.wordpress.com/i/buttonw-com.png</url>
		<title>My Humble Corner</title>
		<link>http://myhumblecorner.wordpress.com</link>
	</image>
			<item>
		<title>Syncing Bash History Between Shells</title>
		<link>http://myhumblecorner.wordpress.com/2009/10/22/syncing-bash-history-between-shells/</link>
		<comments>http://myhumblecorner.wordpress.com/2009/10/22/syncing-bash-history-between-shells/#comments</comments>
		<pubDate>Thu, 22 Oct 2009 15:25:21 +0000</pubDate>
		<dc:creator>javaJake</dc:creator>
				<category><![CDATA[Fixes]]></category>
		<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://myhumblecorner.wordpress.com/?p=247</guid>
		<description><![CDATA[Ever closed and opened a shell because you needed to refresh the history to pull up a command you used before? Nevermore! Read this excellent post on briancarper.net to make your terminal life much easier.
       <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=myhumblecorner.wordpress.com&blog=392604&post=247&subd=myhumblecorner&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Ever closed and opened a shell because you needed to refresh the history to pull up a command you used before? Nevermore! Read <a href="http://briancarper.net/blog/keeping-bash-history-in-sync-on-disk-and-between-multiple-terminals">this excellent post</a> on briancarper.net to make your terminal life much easier.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/myhumblecorner.wordpress.com/247/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/myhumblecorner.wordpress.com/247/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/myhumblecorner.wordpress.com/247/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/myhumblecorner.wordpress.com/247/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/myhumblecorner.wordpress.com/247/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/myhumblecorner.wordpress.com/247/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/myhumblecorner.wordpress.com/247/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/myhumblecorner.wordpress.com/247/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/myhumblecorner.wordpress.com/247/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/myhumblecorner.wordpress.com/247/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=myhumblecorner.wordpress.com&blog=392604&post=247&subd=myhumblecorner&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://myhumblecorner.wordpress.com/2009/10/22/syncing-bash-history-between-shells/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/2a9e099aeea8ec195f3aa2d27cf66112?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">javaJake</media:title>
		</media:content>
	</item>
		<item>
		<title>Backing up with Duplicity, Effortlessly</title>
		<link>http://myhumblecorner.wordpress.com/2009/10/15/backing-up-with-duplicity-effortlessly/</link>
		<comments>http://myhumblecorner.wordpress.com/2009/10/15/backing-up-with-duplicity-effortlessly/#comments</comments>
		<pubDate>Thu, 15 Oct 2009 17:31:58 +0000</pubDate>
		<dc:creator>javaJake</dc:creator>
				<category><![CDATA[Backup]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[duplicity]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[script]]></category>

		<guid isPermaLink="false">http://myhumblecorner.wordpress.com/?p=238</guid>
		<description><![CDATA[Duplicity has a wonderful design feature: it&#8217;s really really simple.
Duplicity has an annoying design flaw: it&#8217;s really really simple.
In case you didn&#8217;t notice, Duplicity&#8217;s simplicity is both helpful and inefficient. It&#8217;s extremely easy to start using Duplicity because its usage is so very simple. Want to back something up? Just write &#8220;duplicity /some/directory ftp://user@host.com/some/other/directory&#8221; for [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=myhumblecorner.wordpress.com&blog=392604&post=238&subd=myhumblecorner&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Duplicity has a wonderful design feature: it&#8217;s really really simple.</p>
<p>Duplicity has an annoying design flaw: it&#8217;s really really simple.</p>
<p>In case you didn&#8217;t notice, <a href="http://duplicity.nongnu.org/">Duplicity</a>&#8217;s simplicity is both helpful and inefficient. It&#8217;s extremely easy to start using Duplicity because its usage is so very simple. Want to back something up? Just write &#8220;duplicity /some/directory ftp://user@host.com/some/other/directory&#8221; for FTP backup, or &#8220;duplicity /some/directory file://some/other/directory&#8221; for local backup, or any other protocol out of the 11+ protocols it supports. All it does is write files to the location of your choosing, and then it can recover and list files (either latest or at a date of your choosing) from the backup directory you give it.</p>
<p>This simplicity is really great for the simple use-cases, like backing up a home directory. It&#8217;s when you get into databases, exclusion and inclusion rules, and other such fine print that you have to plan a little.</p>
<p>I&#8217;ve got three different &#8220;things&#8221; I have to back up: my web development stage, my remote shell (mainly for irssi), and my home directory. Each one presents its own challenges, which I break down below.<span id="more-238"></span></p>
<h2>Backing up a Web Development Stage</h2>
<p>There are two parts to my stage: a database, and a public_html directory. (The configuration of the server is handled by OSX. Otherwise, I&#8217;d be backing up configuration files as well.) Backing up directories is what Duplicity is designed to do, so that&#8217;s no issue. Backing up raw /var/mysql/ files is generally considered to be a bad idea, so what I do instead is generate a mysql dump file (&#8220;mysqldump -uroot -p&#8221;) and stash that into a temporary directory.</p>
<p>Note that the temporary directory is an entirely different place than the public_html directory, so I need to somehow tell Duplicity to back up two different locations at the same time. It&#8217;s actually not too difficult to figure out:</p>
<blockquote><p><code>duplicity / --include /path/to/public_html --include /path/to/temp_directory --exclude '**' file://some/other/directory</code></p></blockquote>
<p>Duplicity decides whether or not to include or exclude files by simply finding the first matching rule on the command-line. In this example, /path/to/temp_directory/mysql.dump matches, because everything in its directory (&#8220;temp_directory&#8221;) is getting backed up. Perfect. Also note that my public_html directory gets matched the same way. Any others that don&#8217;t match the first two inclusion rules will always match that &#8216;**&#8217; exclusion rule, so that the only two things backed up are public_html and temp_directory.</p>
<p>The only bummer here is I have to re-dump the mysql.dump file to a temporary directory. For a long time I did this by hand, but it&#8217;s an extra step I&#8217;d rather be done automatically. Keep that in mind, because I&#8217;ll be coming back to this in a few sections.</p>
<h2>Backing up a Remote Shell</h2>
<p>Problem: Duplicity must back up from a local path. Solution: download the remote location to a local directory, and back <em>that</em> up. So, now backing up becomes a two step process, as the web development stage was:</p>
<blockquote><p><code>rsync -zav user@host:/some/directory /path/to/temp_directory<br />
duplicity /path/to/temp_directory file://some/other/directory</code></p></blockquote>
<p>Again, I&#8217;d much rather send off a simple one-liner, and not have to worry about rsyncing and whatever else.</p>
<h2>Backing up a Home Folder</h2>
<p>Couldn&#8217;t get any simpler, so I&#8217;ll spend just a few lines on this topic:</p>
<blockquote><p><code>duplicity /home/directory file://some/other/directory</code></p></blockquote>
<p>And we&#8217;re done. This is the easiest yet. I personally also use a bunch of &#8211;exclude arguments to keep things like Trash, caches, and large ISO&#8217;s out.</p>
<h2>Doing all the Above, Three Times a Week</h2>
<p>Ugh. What a pain. I count at least five commands, if not more. How can I make this easier?</p>
<p>Easy! Write a bash script! That was the first thing I did. I wrote a script called &#8220;duplicity-home-folder.sh&#8221; and one called &#8220;duplicity-var-www.sh&#8221; and so on. Each one had a few simple copied-and-pasted checks, along with a usually-monstrous duplicity command, complete with verbosity and inclusion/exclusion arguments.</p>
<p>This worked on and off for a while. I was keeping up a reasonable habit of backing up, and it paid off quite a few times. When I moved to a new operating system, I simply backed up, installed, and &#8220;recovered&#8221;. The same applied to my move to OSX, though it was complicated by the fact that OSX is not Linux. The same will apply to <a href="http://forums.macrumors.com/showpost.php?p=8629714&amp;postcount=58">my upgrade to Snow Leopard</a>.</p>
<p>Now that I&#8217;m in OSX, though, I have a completely different set of data to back up. I began tweaking the simple bash scripts, but soon found I was actually rewriting them instead. Having to copy-and-paste code between them was a pain, so I tried to merge them. Then I realized I really ought to store the backup settings separate from this script so I could adjust and add settings without touching the script. That&#8217;s when I decided to use Python instead.</p>
<p>Here&#8217;s how my current configs/home-jacob directory looks, where I stash all my backup configuration: (generated by &#8220;find configs/home-jacob&#8221;)</p>
<blockquote><p><code>configs/home-jacob<br />
configs/home-jacob/args<br />
configs/home-jacob/binary<br />
configs/home-jacob/inclusion-rules.d<br />
configs/home-jacob/inclusion-rules.d/00-always<br />
configs/home-jacob/inclusion-rules.d/00-always/exclude<br />
configs/home-jacob/inclusion-rules.d/05-duplicity<br />
configs/home-jacob/inclusion-rules.d/05-duplicity/exclude<br />
configs/home-jacob/inclusion-rules.d/06-gentoo-embedded-handbook<br />
configs/home-jacob/inclusion-rules.d/06-gentoo-embedded-handbook/exclude<br />
configs/home-jacob/inclusion-rules.d/06-gentoo-embedded-handbook/include<br />
configs/home-jacob/inclusion-rules.d/07-gentoo-docs<br />
configs/home-jacob/inclusion-rules.d/07-gentoo-docs/exclude<br />
configs/home-jacob/inclusion-rules.d/10-documents<br />
configs/home-jacob/inclusion-rules.d/10-documents/exclude<br />
configs/home-jacob/inclusion-rules.d/10-documents/include<br />
configs/home-jacob/inclusion-rules.d/15-chat<br />
configs/home-jacob/inclusion-rules.d/15-chat/include<br />
configs/home-jacob/inclusion-rules.d/40-odds-ends<br />
configs/home-jacob/inclusion-rules.d/40-odds-ends/include<br />
configs/home-jacob/inclusion-rules.d/50-gentoo<br />
configs/home-jacob/inclusion-rules.d/50-gentoo/exclude<br />
configs/home-jacob/inclusion-rules.d/50-gentoo/include<br />
configs/home-jacob/inclusion-rules.d/60-security<br />
configs/home-jacob/inclusion-rules.d/60-security/include<br />
configs/home-jacob/inclusion-rules.d/70-settings<br />
configs/home-jacob/inclusion-rules.d/70-settings/include<br />
configs/home-jacob/inclusion-rules.d/75-gaming<br />
configs/home-jacob/inclusion-rules.d/75-gaming/include<br />
configs/home-jacob/inclusion-rules.d/99-everything<br />
configs/home-jacob/inclusion-rules.d/99-everything/exclude<br />
configs/home-jacob/location<br />
configs/home-jacob/location/local<br />
configs/home-jacob/location/remote<br />
configs/home-jacob/post-run.d<br />
configs/home-jacob/post-run.d/90-generate-checksums<br />
configs/home-jacob/pre-run.d<br />
</code></p></blockquote>
<p>As you can see, there&#8217;s quite a bit of flexibility now. All the include/exclude rules are broken out into separate, organized files. I can have my script run scripts before and after the backup occurs.</p>
<p>I&#8217;ll leave it to your imagination how I made the above three backup scenarios cut down into three simple one-liners.</p>
<p>Actually, I&#8217;ll help your imagination out a little bit by posting my &#8220;dirconfig.py&#8221; and &#8220;duplicity-quickstart.py&#8221; scripts. The first handles loading the above configuration, and the second handles executing duplicity and other scripts based on that configuration. These are my first attempts at Python, so be nice. <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<h3>dirconfig.py</h3>
<blockquote>
<pre>import os

class DirConfiguration:

	def __init__ (self, path, recursive=True, debug=False):
		if not os.path.exists(path):
			raise ValueError ('Path does not exist')
		elif not os.path.isdir(path):
			raise ValueError ('Path is not a directory')

		self.path = path
		self.recursive = recursive
		self.debug = debug
		self.config = self.__read_path(path, recursive=recursive)

	def __read_path (self, rootPath, config={}, recursive=True):
		paths = os.listdir(rootPath)
		for currPath in paths:
			currPath = rootPath + "/" + currPath
			key = os.path.basename(currPath)
			if self.debug: print 'this is for path', currPath

			if os.path.isdir(currPath) and recursive:
				value = self.__read_path(currPath, {}, recursive)
				if self.debug: print 'for key ' + key + ' storing child value:', value
				config[key] = value

			elif os.path.isfile(currPath):
				currFile = open(currPath, 'r')
				key = os.path.basename(currPath)

				if key == 'children':
					if self.debug: print 'Warning: illegal file name in "'+currPath+'":', key
				else:
					for currLine in currFile:
						if key not in config:
							config[key] = []

						if self.debug: print 'for key ' + key + ' storing:', currLine.strip()
						config[key].append(currLine.strip())

			else:
				if self.debug: print 'Notice: odd path exists in configuration directory:', currPath

		if self.debug: print 'returning this for path "' + rootPath + '":', config
		return config
</pre>
</blockquote>
<h3>duplicity-quickstart.py</h3>
<blockquote>
<pre>#!/usr/bin/python

import sys
import subprocess
from optparse import OptionParser
from dirconfig import DirConfiguration

parser = OptionParser(usage='usage: %prog [options] config-dir', version='1.0')
parser.add_option('-v', '--verbose', dest='verbosity', help='verbosity level of duplicity (overrides args file)', type='int')
parser.add_option('-d', '--debug', dest='debug', help='turn on the debugger for the configuration parser', action='store_true', default=False)
parser.add_option('', '--force', dest='force', help='force duplicity to complete an action (most likely cleanup)', action='store_true', default=False)
parser.add_option('-a', '--action', dest='action', help='action duplicity ought to take', default='incremental', type='choice', choices=['full', 'incremental', 'restore', 'verify', 'collection-status', 'list-current-files', 'cleanup', 'remove-older-than', 'remove-all-but-n-full'])
parser.add_option('-f', '--file-to-restore', dest='restore_path', help='if restore is the action, this can determine which file specifically is restored', type='string')
parser.add_option('-r', '--restore-to', dest='restore_to', help='if restore is the action, this can determine where the restored files are stored', type='string')
parser.add_option('', '--allow-source-mismatch', dest='allow_mismatch', help='if the backup source changed, but you still want to use the same backup destination, and duplicity is complaining, use this', action='store_true', default=False)

(options, args) = parser.parse_args()

if len(args) &lt; 1:
	raise ValueError('Error: only one extra argument required, to indicate the path for the backup configuration directory.')

configuration = DirConfiguration(args[0], True, options.debug).config

up_actions = ['full', 'incremental']
down_actions = ['restore', 'verify']
remote_actions = ['collection-status', 'list-current-files', 'cleanup', 'remove-older-than', 'remove-all-but-n-full']

duplicity_opts = []

if not configuration.has_key('binary'):
	raise ValueError('Error: backup directory has no binary file.')

duplicity_opts.extend(configuration.get('binary'))
duplicity_opts.append(options.action)

if configuration.has_key('args'):
	duplicity_opts.extend(configuration.get('args'))

if options.verbosity:
	duplicity_opts.extend(['-v', str(options.verbosity)])

if options.force:
	duplicity_opts.append('--force')

if options.allow_mismatch:
	duplicity_opts.append('--allow-source-mismatch')

if not configuration.has_key('location'):
	raise ValueError('Error: configuration directory has no location directory.')

elif not configuration.get('location').has_key('local'):
	raise ValueError("Error: configuration's location directory has no local file.")

elif not configuration.get('location').has_key('remote'):
	raise ValueError("Error: configuration's location directory has no remote file.")

local_path = configuration.get('location').get('local')[0]
remote_path = configuration.get('location').get('remote')[0]

if options.action == 'restore':
	if options.restore_to:
		local_path = options.restore_to
	if options.restore_path:
		duplicity_opts.extend(['--file-to-restore', options.restore_path])

if configuration.has_key('inclusion-rules.d') and options.action in up_actions or options.action == 'verify':
	for rule_cat, rules in sorted(configuration['inclusion-rules.d'].items()):
		for rule_type, values in sorted(rules.items()): # excludes always comes before includes
			if rule_type != 'include' and rule_type != 'exclude':
				sys.stderr.write('Warning: in category ' + str(rule_cat) + ', unkown rule type: ' + str(rule_type) + '\n')
				continue

			for value in values:
				if not value.startswith('#') and value.strip() != '':
					duplicity_opts.extend(['--'+rule_type, value.replace('%%local%%', local_path)])

if options.action in up_actions:
	duplicity_opts.append(local_path)
	duplicity_opts.append(remote_path)
elif options.action in down_actions:
	duplicity_opts.append(remote_path)
	duplicity_opts.append(local_path)
elif options.action in remote_actions:
	duplicity_opts.append(remote_path)
else:
	raise ValueError('Error: incorrect action. This is a bug: it should have been caught before now!')

if configuration.has_key('pre-run.d'):
	for script, script_contents in sorted(configuration['pre-run.d'].items()):
		print 'Calling pre-run script: ' + args[0]+'/pre-run.d/' + script
		return_code = subprocess.call(['sh', args[0]+'/pre-run.d/' + script, local_path, remote_path, options.action])
		if return_code != 0:
			raise Exception('subprocess returned non-zero code ' + str(return_code))

print 'Calling: ' + ' '.join(map(str, duplicity_opts))
return_code = subprocess.call(duplicity_opts)
if (return_code != 0):
	raise Exception('duplicity exited with a non-zero code: ' + str(return_code))

if configuration.has_key('post-run.d'):
	for script, script_contents in sorted(configuration['post-run.d'].items()):
		print 'Calling post-run script: ' + args[0]+'/post-run.d/' + script
		return_code = subprocess.call(['sh', args[0]+'/post-run.d/' + script, local_path, remote_path, options.action])
		if return_code != 0:
			raise Exception('subprocess returned non-zero code ' + str(return_code))
</pre>
</blockquote>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/myhumblecorner.wordpress.com/238/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/myhumblecorner.wordpress.com/238/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/myhumblecorner.wordpress.com/238/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/myhumblecorner.wordpress.com/238/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/myhumblecorner.wordpress.com/238/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/myhumblecorner.wordpress.com/238/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/myhumblecorner.wordpress.com/238/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/myhumblecorner.wordpress.com/238/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/myhumblecorner.wordpress.com/238/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/myhumblecorner.wordpress.com/238/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=myhumblecorner.wordpress.com&blog=392604&post=238&subd=myhumblecorner&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://myhumblecorner.wordpress.com/2009/10/15/backing-up-with-duplicity-effortlessly/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/2a9e099aeea8ec195f3aa2d27cf66112?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">javaJake</media:title>
		</media:content>
	</item>
		<item>
		<title>Firefox Saved Password Security (Beyond the Master Password)</title>
		<link>http://myhumblecorner.wordpress.com/2009/10/12/firefox-saved-password-security-beyond-the-master-password/</link>
		<comments>http://myhumblecorner.wordpress.com/2009/10/12/firefox-saved-password-security-beyond-the-master-password/#comments</comments>
		<pubDate>Mon, 12 Oct 2009 13:37:36 +0000</pubDate>
		<dc:creator>javaJake</dc:creator>
				<category><![CDATA[Fixes]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[password]]></category>
		<category><![CDATA[security]]></category>

		<guid isPermaLink="false">http://myhumblecorner.wordpress.com/?p=235</guid>
		<description><![CDATA[I don&#8217;t know whether or not Firefox even allows JavaScript access to the passwords automatically filled out when you visit a page, but I sure am not going to wait until some cracker finds a hole in whatever security Firefox provides and gets at my automatically-entered password.
So, this time around I&#8217;ve decided to require Firefox [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=myhumblecorner.wordpress.com&blog=392604&post=235&subd=myhumblecorner&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>I don&#8217;t know whether or not Firefox even allows JavaScript access to the passwords automatically filled out when you visit a page, but I sure am not going to wait until some <a href="http://en.wikipedia.org/wiki/Hacker_%28computer_security%29#Black_hat">cracker</a> finds a hole in whatever security Firefox provides and gets at my automatically-entered password.</p>
<p>So, this time around I&#8217;ve decided to require Firefox to wait until I&#8217;ve entered the username before the password is filled out. If I forget the username, I simply hit the down arrow in the username box and it gives me a selection.</p>
<p>The setting is located at about:config (for those who don&#8217;t know: type that into the address bar) and is called &#8220;signon.autofillForms&#8221;. I set it to false. Long may security prosper!</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/myhumblecorner.wordpress.com/235/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/myhumblecorner.wordpress.com/235/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/myhumblecorner.wordpress.com/235/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/myhumblecorner.wordpress.com/235/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/myhumblecorner.wordpress.com/235/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/myhumblecorner.wordpress.com/235/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/myhumblecorner.wordpress.com/235/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/myhumblecorner.wordpress.com/235/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/myhumblecorner.wordpress.com/235/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/myhumblecorner.wordpress.com/235/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=myhumblecorner.wordpress.com&blog=392604&post=235&subd=myhumblecorner&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://myhumblecorner.wordpress.com/2009/10/12/firefox-saved-password-security-beyond-the-master-password/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/2a9e099aeea8ec195f3aa2d27cf66112?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">javaJake</media:title>
		</media:content>
	</item>
		<item>
		<title>The Last Month</title>
		<link>http://myhumblecorner.wordpress.com/2009/10/01/the-last-month/</link>
		<comments>http://myhumblecorner.wordpress.com/2009/10/01/the-last-month/#comments</comments>
		<pubDate>Fri, 02 Oct 2009 02:45:28 +0000</pubDate>
		<dc:creator>javaJake</dc:creator>
				<category><![CDATA[Random]]></category>
		<category><![CDATA[backlog]]></category>
		<category><![CDATA[busy]]></category>
		<category><![CDATA[college]]></category>

		<guid isPermaLink="false">http://myhumblecorner.wordpress.com/?p=232</guid>
		<description><![CDATA[Hello readers! It&#8217;s been a while, hasn&#8217;t it, since I&#8217;ve made a good post about how to do something or other? That&#8217;s usually a good indication that I&#8217;ve been busy with something or other, and have been using my system as-is without much time for exploration.
Well, I want to let anyone who reads this to [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=myhumblecorner.wordpress.com&blog=392604&post=232&subd=myhumblecorner&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Hello readers! It&#8217;s been a while, hasn&#8217;t it, since I&#8217;ve made a good post about how to do something or other? That&#8217;s usually a good indication that I&#8217;ve been busy with something or other, and have been using my system as-is without much time for exploration.</p>
<p>Well, I want to let anyone who reads this to know I&#8217;m still alive and kicking. I&#8217;ve got two posts planned (one about how to compile Pidgin plugins in Gentoo Prefix properly, and another about how I use duplicity with 12+ options efficiently) so stay tuned.</p>
<p>What&#8217;s been keeping me busy? College, that&#8217;s what. This is my first year, so I&#8217;m still finding my feet. Even now I&#8217;m still experimenting with homework schedules, varying between solid week of work and lazy afternoons. At some point I will find a happy medium, I hope.</p>
<p>The Neuvoo project started out alive and strong, and I haven&#8217;t been able to check my idling IRC client in days, so I hope they&#8217;re doing well and well on their way to producing their first release.</p>
<p>Oh, and thanks for reading. <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/myhumblecorner.wordpress.com/232/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/myhumblecorner.wordpress.com/232/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/myhumblecorner.wordpress.com/232/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/myhumblecorner.wordpress.com/232/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/myhumblecorner.wordpress.com/232/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/myhumblecorner.wordpress.com/232/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/myhumblecorner.wordpress.com/232/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/myhumblecorner.wordpress.com/232/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/myhumblecorner.wordpress.com/232/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/myhumblecorner.wordpress.com/232/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=myhumblecorner.wordpress.com&blog=392604&post=232&subd=myhumblecorner&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://myhumblecorner.wordpress.com/2009/10/01/the-last-month/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/2a9e099aeea8ec195f3aa2d27cf66112?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">javaJake</media:title>
		</media:content>
	</item>
		<item>
		<title>Google Wave: The Revolution in Communication</title>
		<link>http://myhumblecorner.wordpress.com/2009/09/29/google-wave-the-revolution-in-communication/</link>
		<comments>http://myhumblecorner.wordpress.com/2009/09/29/google-wave-the-revolution-in-communication/#comments</comments>
		<pubDate>Tue, 29 Sep 2009 19:47:44 +0000</pubDate>
		<dc:creator>javaJake</dc:creator>
				<category><![CDATA[Web]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[blog]]></category>
		<category><![CDATA[email]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[google wave]]></category>
		<category><![CDATA[im]]></category>
		<category><![CDATA[instant messaging]]></category>
		<category><![CDATA[twitter]]></category>
		<category><![CDATA[wiki]]></category>

		<guid isPermaLink="false">http://myhumblecorner.wordpress.com/?p=229</guid>
		<description><![CDATA[(I was so excited when I watched the Google Wave video that I had to write this while I watched. That&#8217;ll explain the overload of optimism and excitement.)
Google seems to do all the obvious things: make free e-mail with an excellent spam filter, take the existing phone system and digitize it a little, make an [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=myhumblecorner.wordpress.com&blog=392604&post=229&subd=myhumblecorner&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>(I was so excited when I watched the Google Wave video that I had to write this while I watched. That&#8217;ll explain the overload of optimism and excitement.)</p>
<p>Google seems to do all the obvious things: make free e-mail with an excellent spam filter, take the existing phone system and digitize it a little, make an online word processor and collaboration, and provide a really nice search engine.</p>
<p>This year, <strong>Google is doing it again</strong>. Two engineers in Google&#8217;s forces stepped back and examined the world of communication we&#8217;ve built. We all know that e-mail is ancient and inefficient, and they knew that too. So, they decided to completely <strong>reinvent the entire communication system</strong>.</p>
<p>It&#8217;s called <strong>Google Wave</strong>. It&#8217;s really simple.</p>
<p>Instead of thinking of communication as messages that are literally shoved around from place to place, Google Wave thinks of messages as being part of a conversation, which doesn&#8217;t move anywhere. Rather, <strong>a conversation between two (or more!) people occurs in a single, shared location</strong>.</p>
<p>Messages can be very long or very short. You can send long paragraphs of text in an e-mail format, or you can communicate back and forth in a texting-like format. <strong>There is no limits to what you can do with these messages</strong>.<span id="more-229"></span></p>
<p>If two participants of a conversation are online at the same time, they can instantly see when someone&#8217;s sent a new message or started a new conversation. If two participants are viewing the same conversation, they can see messages update instantly on each other&#8217;s screens, the same way instant messaging does. Google Wave goes even further: <strong>if a participant is typing a reply, any other participant can see each character <em>as it&#8217;s being typed</em></strong>.</p>
<p>Google Wave also allows people to reply to specific paragraphs of a message, so that <strong>threading is tracked</strong> very efficiently.</p>
<p>In a conversation with three or more people, but you want to <strong>reply privately</strong> to only one person so that only he/she can see it? Just let Google Wave know. It can change the permissions on any branch of the conversation.</p>
<p>Came late to a conversation, and now the conversation is flooded with messages? Use the <strong>playback feature to see each message come up one at a time in the order they were posted</strong>, so you can see the conversation evolve in real-time, even though you weren&#8217;t present when it happened!</p>
<p>Want to share photos? <strong>Drag and drop photos right into the wave</strong>. Thumbnails appear instantly on everyone&#8217;s screen while the full-sized images upload in the background. Suddenly a shared photo album is constructed. <em>Effortlessly.</em></p>
<p>Now, <strong>embed a conversation on your blog</strong>. Whoa, wait a sec&#8217;! Google Wave is now <em>in your blog</em>! Remember how you can reply to a paragraph, etc., in a conversation? Guess what Wave can do for your blog? You guessed it! The comments system becomes instantly available through Wave&#8217;s interface on your blog. And not only that, but Wave considers this blog &#8220;post&#8221; as simply another conversation, so it appears in Google Wave as a conversation with normal replies as well!</p>
<p>Google Wave is now no longer just an e-mail client and instant messenger rolled into one, but now it&#8217;s your blog too.</p>
<p><strong>Revolution</strong>, folks.</p>
<p>Now, go ahead and dream. Dream that this all runs on your iPhone. Or Google Android. All the above features, now available here. Sheer. Brilliance.</p>
<p>Did we forget something? Oh, yes. Right. We forgot editing. How about we let <strong>everyone edit any message</strong> in a conversation. That&#8217;s right. Any message.</p>
<p>Now Google Wave is all of the above <strong>and a wiki</strong>.</p>
<p>What about history? How do we see what someone originally wrote? Did you forget about the playback feature? Oh yea. Oh yea. That&#8217;s right. You can <em>play back edits too</em>!</p>
<p>Everyone can <strong>edit at the same time</strong> too! Take notes from a class <em>together</em>, have one person go to a meeting, and let others submit comments or questions from the outside, and so on.</p>
<p>Linking between waves. Tagging. Folders. Saved searches. Organization is simple with Google Waves.</p>
<p>Now, throw in <strong>extensions</strong> (like Firefox Add-ons) that can modify <em>anything</em> the internal code can, from characters you type to messages you send to conversations created, and you have yourself a revolution. Games, movies, and all other sorts of things can be done socially, recorded, for playback later, through extended Wave seamlessly.</p>
<p>Do you want to see this in action? Betcha you do. Go here:<br />
<a href="http://wave.google.com/help/wave/about.html"> http://wave.google.com/help/wave/about.html</a></p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/myhumblecorner.wordpress.com/229/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/myhumblecorner.wordpress.com/229/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/myhumblecorner.wordpress.com/229/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/myhumblecorner.wordpress.com/229/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/myhumblecorner.wordpress.com/229/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/myhumblecorner.wordpress.com/229/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/myhumblecorner.wordpress.com/229/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/myhumblecorner.wordpress.com/229/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/myhumblecorner.wordpress.com/229/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/myhumblecorner.wordpress.com/229/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=myhumblecorner.wordpress.com&blog=392604&post=229&subd=myhumblecorner&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://myhumblecorner.wordpress.com/2009/09/29/google-wave-the-revolution-in-communication/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/2a9e099aeea8ec195f3aa2d27cf66112?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">javaJake</media:title>
		</media:content>
	</item>
		<item>
		<title>Tip: Don&#8217;t use HTTPS + Gears + Google Docs</title>
		<link>http://myhumblecorner.wordpress.com/2009/09/02/tip-dont-use-https-gears-google-docs/</link>
		<comments>http://myhumblecorner.wordpress.com/2009/09/02/tip-dont-use-https-gears-google-docs/#comments</comments>
		<pubDate>Wed, 02 Sep 2009 19:20:14 +0000</pubDate>
		<dc:creator>javaJake</dc:creator>
				<category><![CDATA[Fixes]]></category>
		<category><![CDATA[google gears]]></category>
		<category><![CDATA[https]]></category>
		<category><![CDATA[osx]]></category>
		<category><![CDATA[safari]]></category>

		<guid isPermaLink="false">http://myhumblecorner.wordpress.com/?p=226</guid>
		<description><![CDATA[https://docs.google.com, when used with Google Gears turned on and allowed, will result in some kind of unreported error in the Gears backend, leaving its users with a blank page. I have a feeling that Gears cannot handle HTTPS connections, but I&#8217;m not sure. It could be just a Safari and/or OSX issue.
Others have reported endless [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=myhumblecorner.wordpress.com&blog=392604&post=226&subd=myhumblecorner&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p><a href="https://docs.google.com">https://docs.google.com</a>, when used with Google Gears turned on and allowed, will result in some kind of unreported error in the Gears backend, leaving its users with a blank page. I have a feeling that Gears cannot handle HTTPS connections, but I&#8217;m not sure. It could be just a Safari and/or OSX issue.</p>
<p>Others have reported endless authentication redirection, which makes sense if you study the URL that the HTTPS version always gets stuck on. (There&#8217;s a &#8220;redirect&#8221; parameter which points to <a href="https://docs.google.com/?pli=1">https://docs.google.com/?pli=1</a>, which, if followed manually, simply circles back around through the authentication again and sticks back at the same old blank page.) Hopefully Google takes notice and fixes this soon.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/myhumblecorner.wordpress.com/226/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/myhumblecorner.wordpress.com/226/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/myhumblecorner.wordpress.com/226/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/myhumblecorner.wordpress.com/226/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/myhumblecorner.wordpress.com/226/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/myhumblecorner.wordpress.com/226/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/myhumblecorner.wordpress.com/226/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/myhumblecorner.wordpress.com/226/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/myhumblecorner.wordpress.com/226/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/myhumblecorner.wordpress.com/226/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=myhumblecorner.wordpress.com&blog=392604&post=226&subd=myhumblecorner&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://myhumblecorner.wordpress.com/2009/09/02/tip-dont-use-https-gears-google-docs/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/2a9e099aeea8ec195f3aa2d27cf66112?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">javaJake</media:title>
		</media:content>
	</item>
		<item>
		<title>Using Gorg to Preview Gentoo Documentation</title>
		<link>http://myhumblecorner.wordpress.com/2009/08/14/using-gorg-to-preview-gentoo-documentation/</link>
		<comments>http://myhumblecorner.wordpress.com/2009/08/14/using-gorg-to-preview-gentoo-documentation/#comments</comments>
		<pubDate>Fri, 14 Aug 2009 16:16:40 +0000</pubDate>
		<dc:creator>javaJake</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://myhumblecorner.wordpress.com/?p=222</guid>
		<description><![CDATA[This is very handy if you&#8217;re working on Gentoo documentation, which is composed of XML that gets translated into HTML.
Alright, enough with the introductions. I&#8217;m just going to write how I got gorg to work.

Install gorg. If you&#8217;re using Gentoo Prefix, and bug #281335 is not solved yet, use my Gentoo Prefix overlay to get [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=myhumblecorner.wordpress.com&blog=392604&post=222&subd=myhumblecorner&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>This is very handy if you&#8217;re working on Gentoo documentation, which is composed of XML that gets translated into HTML.</p>
<p>Alright, enough with the introductions. I&#8217;m just going to write how I got gorg to work.</p>
<ol>
<li>Install gorg. If you&#8217;re using Gentoo Prefix, and bug #<a href="http://bugs.gentoo.org/281335">281335</a> is not solved yet, use my <a href="https://code.edge.launchpad.net/~fun2program8/+junk/prefix-overlay">Gentoo Prefix overlay</a> to get it installed. (I only tested on OSX, though.)</li>
<li>Copy /etc/gorg/gorg.conf.sample to gorg.conf, and begin editing it.</li>
<li>Change the root variable to point to the directory where your copy of the Gentoo site will reside. I changed mine to:<br />
<code>root = "/Users/jacob/Sites/gentoo"</code></li>
<li>I&#8217;m not sure if this is required, or what this even does, but I changed the two mount variables to match root:<br />
<code>mount = /cgi-bin on /Users/jacob/Sites/gentoo/xml/cgi-bin<br />
mount = /images on /Users/jacob/Sites/gentoo/xml/images</code></li>
<li>I left everything else to defaults. Save, exit. The other sample files should/can be left as samples. It doesn&#8217;t affect gorg in any way negative, at least as far as I can tell.</li>
<li>Now you&#8217;ll need to make a monster of a checkout:<br />
<code>cvs -d :pserver:anonymous@anoncvs.gentoo.org:/var/cvsroot co gentoo/xml/htdocs</code></li>
<li>When that&#8217;s done, either move the htdocs folder to the place indicated by root, or make a symlink. I opted for a symlink. This allows my gorg environment and my programming environment to remain at least organizationally (that&#8217;s a word!) separate.</li>
<li>Run the following, replacing the &#8220;/User/jacob/Sites/gentoo&#8221; part with wherever you told root to point:<br />
<code>xmlcatalog --create /Users/jacob/Sites/gentoo/index.xml &gt;&gt; /etc/xml/catalog</code></li>
<li>You should be viewing Gentoo&#8217;s home page, albeit with images and other things missing. Congrats!</li>
</ol>
<p>Now, to finish off the work on Gentoo Embedded&#8217;s documentation&#8230;</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/myhumblecorner.wordpress.com/222/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/myhumblecorner.wordpress.com/222/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/myhumblecorner.wordpress.com/222/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/myhumblecorner.wordpress.com/222/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/myhumblecorner.wordpress.com/222/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/myhumblecorner.wordpress.com/222/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/myhumblecorner.wordpress.com/222/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/myhumblecorner.wordpress.com/222/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/myhumblecorner.wordpress.com/222/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/myhumblecorner.wordpress.com/222/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=myhumblecorner.wordpress.com&blog=392604&post=222&subd=myhumblecorner&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://myhumblecorner.wordpress.com/2009/08/14/using-gorg-to-preview-gentoo-documentation/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/2a9e099aeea8ec195f3aa2d27cf66112?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">javaJake</media:title>
		</media:content>
	</item>
		<item>
		<title>Cell-Phones: An Easy-to-Use Evil</title>
		<link>http://myhumblecorner.wordpress.com/2009/08/10/cell-phones-an-easy-to-use-evil/</link>
		<comments>http://myhumblecorner.wordpress.com/2009/08/10/cell-phones-an-easy-to-use-evil/#comments</comments>
		<pubDate>Mon, 10 Aug 2009 17:53:40 +0000</pubDate>
		<dc:creator>javaJake</dc:creator>
				<category><![CDATA[Random]]></category>
		<category><![CDATA[cell-phone]]></category>
		<category><![CDATA[phone]]></category>
		<category><![CDATA[skype]]></category>
		<category><![CDATA[voip]]></category>

		<guid isPermaLink="false">http://myhumblecorner.wordpress.com/?p=218</guid>
		<description><![CDATA[I read a blog post recently on Planet Larry, which describes only one facet of how cell-phones are disgusting. It reminded me that I&#8217;ll have to get one soon. All the same, it&#8217;s nice to see I&#8217;m not the only one who hates it.
It feels like the cell-phone world is moving at a snails pace. [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=myhumblecorner.wordpress.com&blog=392604&post=218&subd=myhumblecorner&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>I read a blog post recently on Planet Larry, which describes only one facet of how <a href="http://www.matusiak.eu/numerodix/blog/index.php/2009/08/08/sms-is-a-garbage-protocol/">cell-phones</a> are disgusting. It reminded me that I&#8217;ll have to get one soon. All the same, it&#8217;s nice to see I&#8217;m not the only one who hates it.</p>
<p>It feels like the cell-phone world is moving at a snails pace. Sure, the iPhone stepped it up a notch. It introduced a certain amount of flexibility never before seen in cell-phones. However, the price for it is unbelievable, it&#8217;s still using the ancient idea of calling numbers, which are hardly memorable, it&#8217;s still locked down so that you <a href="http://www.npr.org/templates/story/story.php?storyId=106824841">can&#8217;t do anything creative</a> with it, and the service itself won&#8217;t work with any device except the phones provided.</p>
<p>Why can&#8217;t cell-phone companies open their API&#8217;s so that more hardware can be produced which can log into and use the cell-phone system? Why can&#8217;t the cell-phone system either take on more features, or back off and start over with a better foundation for generic data (like mobile broadband already does) so that more information than just calls can be sent over the network? It seems like a no-brainer, and a way to make your network very, very popular.</p>
<p>I wonder if the iPhone is such a success because people feel the limitations of their phones. I think more can be done to break us free of a locked down system that is rigid and hardly feature-rich anymore. Unfortunately, people find it hard to get out of <a href="http://www.comcast.com/Corporate/Learn/DigitalVoice/digitalvoice.html">certain</a> <a href="http://www22.verizon.com/Residential/HomePhone">ruts</a> when it comes to technology and move on to <a href="http://www.skype.com/allfeatures/subscriptions/">better systems</a>. The current system is easy <em>enough</em> to use and can do just <em>enough</em> to stay useful. That&#8217;s going to make it hard to move on, and harder for companies to see the point.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/myhumblecorner.wordpress.com/218/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/myhumblecorner.wordpress.com/218/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/myhumblecorner.wordpress.com/218/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/myhumblecorner.wordpress.com/218/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/myhumblecorner.wordpress.com/218/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/myhumblecorner.wordpress.com/218/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/myhumblecorner.wordpress.com/218/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/myhumblecorner.wordpress.com/218/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/myhumblecorner.wordpress.com/218/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/myhumblecorner.wordpress.com/218/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=myhumblecorner.wordpress.com&blog=392604&post=218&subd=myhumblecorner&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://myhumblecorner.wordpress.com/2009/08/10/cell-phones-an-easy-to-use-evil/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/2a9e099aeea8ec195f3aa2d27cf66112?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">javaJake</media:title>
		</media:content>
	</item>
		<item>
		<title>When you Can&#8217;t Compile &#8216;Em, Virtualize &#8216;Em (in VirtualBox)</title>
		<link>http://myhumblecorner.wordpress.com/2009/08/10/when-you-cant-compile-em-virtualize-em-in-virtualbox/</link>
		<comments>http://myhumblecorner.wordpress.com/2009/08/10/when-you-cant-compile-em-virtualize-em-in-virtualbox/#comments</comments>
		<pubDate>Mon, 10 Aug 2009 13:12:36 +0000</pubDate>
		<dc:creator>javaJake</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Gentoo]]></category>
		<category><![CDATA[grub]]></category>
		<category><![CDATA[kde4]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[virtualbox]]></category>
		<category><![CDATA[virtualization]]></category>

		<guid isPermaLink="false">http://myhumblecorner.wordpress.com/?p=215</guid>
		<description><![CDATA[That&#8217;s the approach I&#8217;m taking when it comes to Gentoo right now. September, my deadline for all computer projects, is my hard deadline, because that&#8217;s when college starts, and that&#8217;s when I expect my free time will be dramatically shortened, if not entirely consumed, as far as my computer projects are concerned. Because of that, [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=myhumblecorner.wordpress.com&blog=392604&post=215&subd=myhumblecorner&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>That&#8217;s the approach I&#8217;m taking when it comes to Gentoo right now. September, my deadline for all computer projects, is my hard deadline, because that&#8217;s when college starts, and that&#8217;s when I expect my free time will be dramatically shortened, if not entirely consumed, as far as my computer projects are concerned. Because of that, I can&#8217;t waste a lot of time patching and hacking. If <a href="http://gentoo-portage.com/app-office/gnucash">it</a> doesn&#8217;t work in Gentoo Prefix like I want it to, I&#8217;ll throw it into VirtualBox&#8217;s copy of Gentoo and use the Shared Folders feature to keep data synced in and out of the virtual machine.</p>
<p>First off, don&#8217;t even think about doing this if you don&#8217;t have <a href="http://en.wikipedia.org/wiki/X86_virtualization">x86 virtualization</a> extensions. You may survive the experience, but you won&#8217;t be able to stand it for much longer after. On my ol&#8217; 1.8GHz Pentium 4, the speeds were always at least twice as slow. With my new Core 2 Duo processor with VT-x, the virtual machine can let the real processor take on most of the processing needs. If I had a &#8220;Core i7&#8243; Intel processor, or something else with Nehalem, I would also have Nested Paging which can give as much as a <a href="http://www.anandtech.com/weblog/showpost.aspx?i=467">1/3 increase</a> in speeds.</p>
<p>But never-mind, because VT-x gives me near-native performance, which is absolutely necessary for Gentoo. Another good thing to have is a bigger-than-8G hard-drive. (In other words, the default Linux size is not good enough.) I gave the machine 512M out of my 4G total, which is <a href="https://help.ubuntu.com/community/Installation/SystemRequirements">more than enough</a> for a Linux desktop. I turned on 3D acceleration and gave it 64M of VRAM, because I want to try KDE4.3. Everything else are defaults, pretty much.<span id="more-215"></span></p>
<p>The kernel is pretty easy to figure out. AC97 for audio, and Core 2 Duo as my processor works. Most of the info on the kernel can be found <a href="http://en.gentoo-wiki.com/wiki/Virtualbox_Guest">here</a>.</p>
<p>The one snag I hit that I couldn&#8217;t figure out for a while was GRUB. Apparently GRUB v0.97 is extremely old and no longer supported. GRUB2 is a much better idea. I&#8217;m running grub-9999 no problems, but that&#8217;s probably more due to luck than anything. <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Besides that, not a whole lot to talk about. I&#8217;ve got the desktop profile enabled, and am recompiling everything with that before I autounmask what remains of KDE4.3 after I used <a href="http://git.overlays.gentoo.org/gitweb/?p=proj/kde.git;a=summary">kde-testing</a>&#8217;s <a href="http://git.overlays.gentoo.org/gitweb/?p=proj/kde.git;a=blob;f=Documentation/package.unmask/kde-4.3;hb=HEAD">package.unmask</a> and <a href="http://git.overlays.gentoo.org/gitweb/?p=proj/kde.git;a=blob;f=Documentation/package.keywords/kde-4.3.keywords;hb=HEAD">package.keywords</a> files. Things are compiling right now, which is why I had time to write this. <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/myhumblecorner.wordpress.com/215/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/myhumblecorner.wordpress.com/215/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/myhumblecorner.wordpress.com/215/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/myhumblecorner.wordpress.com/215/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/myhumblecorner.wordpress.com/215/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/myhumblecorner.wordpress.com/215/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/myhumblecorner.wordpress.com/215/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/myhumblecorner.wordpress.com/215/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/myhumblecorner.wordpress.com/215/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/myhumblecorner.wordpress.com/215/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=myhumblecorner.wordpress.com&blog=392604&post=215&subd=myhumblecorner&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://myhumblecorner.wordpress.com/2009/08/10/when-you-cant-compile-em-virtualize-em-in-virtualbox/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/2a9e099aeea8ec195f3aa2d27cf66112?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">javaJake</media:title>
		</media:content>
	</item>
		<item>
		<title>[Correcting] The Current State of Gentoo</title>
		<link>http://myhumblecorner.wordpress.com/2009/08/04/correcting-the-current-state-of-gentoo/</link>
		<comments>http://myhumblecorner.wordpress.com/2009/08/04/correcting-the-current-state-of-gentoo/#comments</comments>
		<pubDate>Tue, 04 Aug 2009 14:17:18 +0000</pubDate>
		<dc:creator>javaJake</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[community]]></category>
		<category><![CDATA[documentation]]></category>
		<category><![CDATA[Gentoo]]></category>

		<guid isPermaLink="false">http://myhumblecorner.wordpress.com/?p=210</guid>
		<description><![CDATA[My last blog post was the first one I&#8217;ve really just started writing on a feeling, and expressed it in full. Unfortunately, what came off in the post was all negative, without much hope for resolution, or even without anything positive about the projects mentioned.
So, here is a continuation of the last blog post I&#8217;ve [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=myhumblecorner.wordpress.com&blog=392604&post=210&subd=myhumblecorner&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>My last blog post was the first one I&#8217;ve really just started writing on a feeling, and expressed it in full. Unfortunately, what came off in the post was all negative, without much hope for resolution, or even without anything positive about the projects mentioned.</p>
<p>So, here is a continuation of the last blog post I&#8217;ve written, in which I go over again what was bad, but also what was good, and how the bad can be corrected. Probably what the first post should&#8217;ve been.<span id="more-210"></span></p>
<p>The first thing I discussed was Gentoo Embedded, and its perceived &#8220;unfriendliness&#8221;. A big component of this feeling, I pointed out earlier, was a lack of documentation. This was too strong, and even wrong. The documentation does in fact cover most of the concepts around cross-compiling that&#8217;s important for getting started, and discusses how to build a cross-compiler from scratch. It fails to mention crossdev-wrappers, but it is not required for success. This is where the documentation ends, and leaves the reader to decide where to go from there. Most Gentoo users probably ought to know what to do to get the system they want, but it could be helpful to provide pointers from there. The documentation also doesn&#8217;t exactly flow from page to page, requiring a little bit of experimentation and extra thought.</p>
<p>Beyond documentation, though, there&#8217;s another problem that Gentoo Embedded deals with on a daily basis: cross-compiling, currently, is a huge topic in Linux all to itself that someone could make a career out of. There are so many ins and outs to choosing a cross-compiler, to picking USE flags, versions, and whatever else that it&#8217;s difficult to know it all. And knowledge is what is required to point someone in a particular direction without throwing them into a pit. (If I were to try and help someone, it&#8217;d probably end up being blind leading the blind, and all that). Only a few in #gentoo-embedded, not including me, have that kind of knowledge, and they aren&#8217;t always online or available to assist. (Maybe they&#8217;re all hiding in the mailing lists&#8230; I ought to sign up for those!) Those who are online are likely busy with other things, like work, and can&#8217;t get heavily involved or give heavily involved answers.</p>
<p>So what can be done to fix this? Well, it&#8217;s hard to correct the personnel issue immediately. In reality, it&#8217;s completely out of Gentoo Embedded&#8217;s control. However, the documentation can, and will, be corrected, if not by other volunteers who have already stepped forward, then by me (or, both). By idling on the channel, and paying attention to which questions go unanswered, or the general trend of questions, it should be possible to further customize the documentation in that direction, and further lighten the load on the channel.</p>
<p>To summarize, Gentoo Embedded covers a huge topic that is perhaps too much for the amount of knowledgeable people idling in the channel, but hopefully a change in documentation, which is coming, and a continual evolution to best fit the needs of Gentoo Embedded users, will solve all that. (This is where my discussion of how hard it is to change documentation comes in: compared to a wiki, the procedure required to get changes included is very difficult. <em>That</em> was the primary thrust of my previous discussion of Gentoo Embedded.)</p>
<p>The next part of my blog was about Gentoo Prefix. They discuss a much smaller topic, so their documentation was easier to write, and it was a lot easier to get into. However, it was when I started with Gentoo Prefix that I noticed a redundancy in Gentoo projects as a whole, and not just in Gentoo Embedded or Gentoo Prefix. This is where I dove into the flaws of the project system. Now, it&#8217;s good to note that I really like the way Gentoo sets up projects: if you have an idea for a big new feature or addition to Gentoo, you can make a project and develop it. You get your own CVS, web space, channel, mailing list, and so on, all within the Gentoo umbrella. This is beautiful.</p>
<p>So where does it go wrong? In a very subtle area: integration into official Gentoo. It <em>seems</em> (remember, I speak in opinions, not in facts) that many Gentoo projects are excluded from pushing their ideas back into main Gentoo for everyone who doesn&#8217;t already know about the project to enjoy. The benefits of integrating the mothership with its projects are: the Gentoo projects no longer has to reinvent the wheel, or constantly work around it; the Gentoo projects get recognition from the main Gentoo devs, who can then work with, rather than instead of, the projects.</p>
<p>How can we fix this? Get Gentoo developers to work with each-other more. Get people to meet and discuss how Gentoo can be better consolidated and made more streamlined. Really this is what I&#8217;m pushing for in a sentence: <strong>Streamline Gentoo</strong>.</p>
<p>This problem, perhaps, isn&#8217;t as widespread as I might think. Maybe it&#8217;s really just decisions high up for the betterment of the community. For example, they might&#8217;ve decided that, since 95% of the community doesn&#8217;t use it, we ought to leave it separate. The Gentoo documentation process (and thus the Wiki) could exist for the necessities of Q/A, issues that I&#8217;m not knowledgeable about.</p>
<p>I will continue to look around and see if I&#8217;m right or wrong, and what I can do to solve the issues I do find. I&#8217;ll keep writing.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/myhumblecorner.wordpress.com/210/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/myhumblecorner.wordpress.com/210/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/myhumblecorner.wordpress.com/210/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/myhumblecorner.wordpress.com/210/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/myhumblecorner.wordpress.com/210/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/myhumblecorner.wordpress.com/210/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/myhumblecorner.wordpress.com/210/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/myhumblecorner.wordpress.com/210/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/myhumblecorner.wordpress.com/210/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/myhumblecorner.wordpress.com/210/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=myhumblecorner.wordpress.com&blog=392604&post=210&subd=myhumblecorner&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://myhumblecorner.wordpress.com/2009/08/04/correcting-the-current-state-of-gentoo/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/2a9e099aeea8ec195f3aa2d27cf66112?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">javaJake</media:title>
		</media:content>
	</item>
	</channel>
</rss>