<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-1610193993349278139</id><updated>2011-11-07T08:31:31.939-08:00</updated><category term='iPhone4'/><category term='virtualization'/><category term='jwm'/><category term='iPhone4g'/><category term='cluster'/><category term='strip'/><category term='dynamic'/><category term='SPARC'/><category term='box'/><category term='perl'/><category term='how to'/><category term='x86'/><category term='iOS4'/><category term='date'/><category term='how'/><category term='Quicken'/><category term='password gorilla'/><category term='portable'/><category term='Stowaway'/><category term='shell'/><category term='32-bit'/><category term='veritas'/><category term='sun'/><category term='iGo'/><category term='keyboard'/><category term='script'/><category term='range'/><category term='windows'/><category term='virtual'/><category term='solaris'/><category term='ksh'/><category term='linux'/><category term='virtualbox'/><category term='variable'/><category term='to'/><category term='64-bit'/><category term='vmware'/><category term='howto'/><category term='korn'/><category term='qfx'/><category term='target'/><category term='USB'/><category term='password management'/><category term='bluetooth'/><category term='iPhone'/><category term='xVM'/><category term='intel'/><category term='vbox'/><category term='iPhone 4'/><category term='password manager'/><category term='unix'/><category term='iscsi'/><category term='dates'/><category term='GnuCash'/><category term='ubuntu'/><category term='iPad'/><category term='vcs'/><category term='password'/><title type='text'>Spoonfighter Geeks Out</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://spoonfightergeeksout.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1610193993349278139/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://spoonfightergeeksout.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Just A. Guy</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>10</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-1610193993349278139.post-6065600318305575439</id><published>2010-07-01T13:32:00.000-07:00</published><updated>2010-07-01T14:21:44.446-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='iOS4'/><category scheme='http://www.blogger.com/atom/ns#' term='bluetooth'/><category scheme='http://www.blogger.com/atom/ns#' term='keyboard'/><category scheme='http://www.blogger.com/atom/ns#' term='iPhone'/><category scheme='http://www.blogger.com/atom/ns#' term='iPad'/><category scheme='http://www.blogger.com/atom/ns#' term='iGo'/><category scheme='http://www.blogger.com/atom/ns#' term='iPhone4g'/><category scheme='http://www.blogger.com/atom/ns#' term='iPhone4'/><category scheme='http://www.blogger.com/atom/ns#' term='Stowaway'/><category scheme='http://www.blogger.com/atom/ns#' term='iPhone 4'/><title type='text'>Folding bluetooth keyboard works with new iPhone 4</title><content type='html'>My wife got me the new iPhone 4 for Father's Day. One of the reasons I wanted it, over an Android phone, is that Apple's iOS 4 supports bluetooth keyboards. I always thought it would be very cool to be able to use a full keyboard with a smart phone.&lt;br /&gt;&lt;br /&gt;I read on a forum that someone was able to pair their iPad with the "iGo Stowaway  Ultra-Slim Bluetooth Keyboard." This keyboard is no longer made, but it usually gets good reviews, and appears to still be for sale on Amazon and other on-line venues. Essentially, it's a full-size keyboard that folds in half.&lt;br /&gt;&lt;br /&gt;I found a slightly-used iGo Stowaway for sale on Craigslist for $60.00, and purchased it today. I'm pleased to report that it does in fact pair up with my new iPhone 4, and works great. The Stowaway was not designed with the iPhone in mind, so there are some special function and character keys that don't do anything. But it looks like all the standard letters, numbers, symbols, navigation, and editing keys present on the average computer keyboard, work. (That being said, I haven't done a thorough test of all the keys, yet.) I am very happy to find that the arrow keys work, since moving the cursor around on the iPhone's touch screen is a bit challenging.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1610193993349278139-6065600318305575439?l=spoonfightergeeksout.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spoonfightergeeksout.blogspot.com/feeds/6065600318305575439/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1610193993349278139&amp;postID=6065600318305575439' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1610193993349278139/posts/default/6065600318305575439'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1610193993349278139/posts/default/6065600318305575439'/><link rel='alternate' type='text/html' href='http://spoonfightergeeksout.blogspot.com/2010/07/folding-bluetooth-keyboard-works-with.html' title='Folding bluetooth keyboard works with new iPhone 4'/><author><name>Just A. Guy</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1610193993349278139.post-968568472864936054</id><published>2010-04-19T15:24:00.000-07:00</published><updated>2010-04-19T15:41:43.468-07:00</updated><title type='text'>Korn (ksh) and Bash shell script for determining leap year</title><content type='html'>Based on the &lt;a href="http://en.wikipedia.org/wiki/Leap_year#Algorithm"&gt;algorithm &lt;/a&gt;in Wikipedia, this script takes a four-digit year as an argument, and determines whether or not it is a leap year. Obviously not super-useful in itself, the "if" line could be incorporated into a larger script. Appears to work in ksh and bash, but not sh. &lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;&lt;br /&gt;&lt;br /&gt;year=$1&lt;br /&gt;&lt;br /&gt;if [ $((year%400)) -eq 0 ] || \&lt;br /&gt;( [ $((year%4)) -eq 0 ] &amp;&amp; [ $((year%100)) -ne 0 ] )&lt;br /&gt;then&lt;br /&gt;    echo "leap"&lt;br /&gt;else&lt;br /&gt;    echo "not leap"&lt;br /&gt;fi&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1610193993349278139-968568472864936054?l=spoonfightergeeksout.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spoonfightergeeksout.blogspot.com/feeds/968568472864936054/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1610193993349278139&amp;postID=968568472864936054' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1610193993349278139/posts/default/968568472864936054'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1610193993349278139/posts/default/968568472864936054'/><link rel='alternate' type='text/html' href='http://spoonfightergeeksout.blogspot.com/2010/04/korn-ksh-and-bash-shell-script-for.html' title='Korn (ksh) and Bash shell script for determining leap year'/><author><name>Just A. Guy</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1610193993349278139.post-1196318787521986379</id><published>2010-04-06T13:42:00.000-07:00</published><updated>2010-04-06T15:08:48.002-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='dynamic'/><category scheme='http://www.blogger.com/atom/ns#' term='ksh'/><category scheme='http://www.blogger.com/atom/ns#' term='variable'/><category scheme='http://www.blogger.com/atom/ns#' term='korn'/><category scheme='http://www.blogger.com/atom/ns#' term='shell'/><title type='text'>Dynamic korn shell (ksh) variable assignments</title><content type='html'>This might seem like a strange thing to want to do, but imagine you read in a list of user names, and for each one you want to store some info, such as the assigned shell.&lt;br /&gt;&lt;br /&gt;Now, you could just put user names in one array, and the info in another array, and rely on the fact that both arrays will have the same index order.&lt;br /&gt;&lt;br /&gt;But, you can also use "eval":&lt;br /&gt;&lt;br /&gt;$ name=bob&lt;br /&gt;$ data=/bin/bash &lt;br /&gt;$ eval "$name=$data"&lt;br /&gt;&lt;br /&gt;And to "de-reference" your dynamic variable:&lt;br /&gt;&lt;br /&gt;$ eval "echo \$$name"&lt;br /&gt;/bin/bash&lt;br /&gt;&lt;br /&gt;This also works:&lt;br /&gt;&lt;br /&gt;$ eval echo "$"$name&lt;br /&gt;/bin/bash&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1610193993349278139-1196318787521986379?l=spoonfightergeeksout.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spoonfightergeeksout.blogspot.com/feeds/1196318787521986379/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1610193993349278139&amp;postID=1196318787521986379' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1610193993349278139/posts/default/1196318787521986379'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1610193993349278139/posts/default/1196318787521986379'/><link rel='alternate' type='text/html' href='http://spoonfightergeeksout.blogspot.com/2010/04/dynamic-korn-shell-ksh-variable.html' title='Dynamic korn shell (ksh) variable assignments'/><author><name>Just A. Guy</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1610193993349278139.post-9215873055198286189</id><published>2009-01-26T10:11:00.000-08:00</published><updated>2009-01-26T10:43:54.105-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='strip'/><category scheme='http://www.blogger.com/atom/ns#' term='Quicken'/><category scheme='http://www.blogger.com/atom/ns#' term='dates'/><category scheme='http://www.blogger.com/atom/ns#' term='GnuCash'/><category scheme='http://www.blogger.com/atom/ns#' term='perl'/><category scheme='http://www.blogger.com/atom/ns#' term='date'/><category scheme='http://www.blogger.com/atom/ns#' term='script'/><category scheme='http://www.blogger.com/atom/ns#' term='range'/><category scheme='http://www.blogger.com/atom/ns#' term='qfx'/><title type='text'>Strip unwanted dates from QFX files</title><content type='html'>I can't imagine there are many people out there who are going to find this interesting, let alone useful, but here goes.&lt;br /&gt;&lt;br /&gt;I use a software program to manage my finances. Once a month I download a list of transactions for the previous month from my bank and my credit cards. The websites for these institutions allow me to specify a date range, and then download a QFX file that contains all the transactions within that range.&lt;br /&gt;&lt;br /&gt;Except for&lt;a href="http://americanexpress.com/"&gt; americanexpress.com&lt;/a&gt;. Their website only lets me specify a one month range that corresponds to my account's billing cycle.&lt;br /&gt;&lt;br /&gt;So, for my half-dozen bank accounts, and my Visa credit card, I can download a QFX file that contains transactions from the beginning of the month to the end of the month. But for Amex I have to download two months of data, from the 9th of the month before, to the 8th of the month after. Or thereabouts.&lt;br /&gt;&lt;br /&gt;Big pain in the ass when you're trying to import transactions quickly, because you have to go in and either match transactions or delete duplicates. Yes, I could make all the QFX files correspond to the Amex card's billing cycle, but will only work as long as all the other websites are flexible, and makes keeping a month to month budget more difficult.&lt;br /&gt;&lt;br /&gt;So, I wrote a Perl script that will take a QFX file, remove transactions that fall outside a specified range, and then output the remaining transactions to a new file.&lt;br /&gt;&lt;br /&gt;(I added a feature that will preserve transactions that fall too far outside of the specified range, in case something weird is going on with the institution's billing. This tolerance can be tuned.)&lt;br /&gt;&lt;br /&gt;This script is barely tested, isn't annotated, and probably isn't the most efficient way to do the job. So I don't make any guarantees. If you are actually reading this, and actually want to use the script -- which is about as likely Paris Hilton becoming a nun, or Oprah getting down to a size 2 -- you do so at your own risk.&lt;br /&gt;&lt;br /&gt;That said, thar  she blows ...      (the script, not Oprah) ...&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;#! /usr/bin/perl&lt;br /&gt;&lt;br /&gt;use Time::Local;&lt;br /&gt;&lt;br /&gt;$usage = "&lt;br /&gt;USAGE: qfix.pl filename lowdate highdate&lt;br /&gt;DATE FORMAT: MMDDYY&lt;br /&gt;EXAMPLE: qfix file.qfx 010109 013109&lt;br /&gt;";&lt;br /&gt;&lt;br /&gt;$infile = $ARGV[0];&lt;br /&gt;$lowdate = $ARGV[1];&lt;br /&gt;$highdate = $ARGV[2];&lt;br /&gt;$lowtol = 31 * 24 * 60 * 60; # days * hr/day * mins/hr * secs/min&lt;br /&gt;$hightol = 30 * 24 * 60 * 60;&lt;br /&gt;$outfile = "$infile.$lowdate-$highdate";&lt;br /&gt;&lt;br /&gt;unless ($#ARGV == 2) { die "$usage\n"; };&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;$ARGV[1] =~ m|\A(\d{2})(\d{2})(\d{2})|;&lt;br /&gt;$lowdate = timelocal(0,0,0,$2,${1}-1,"20$3");&lt;br /&gt;&lt;br /&gt;$ARGV[2] =~ m|\A(\d{2})(\d{2})(\d{2})|;&lt;br /&gt;$highdate = timelocal(0,0,0,$2,${1}-1,"20$3");&lt;br /&gt;&lt;br /&gt;if ($lowdate &gt; $highdate) { die "$usage\n"; };&lt;br /&gt;&lt;br /&gt;open (IFH, "&lt;$infile") or die "Could not open input file $infile\n";&lt;br /&gt;open (OFH, "&gt;$outfile") or die "Could not open output file $outfile\n";&lt;br /&gt;&lt;br /&gt;$intag = 0;&lt;br /&gt;$inTHEtag = 0;&lt;br /&gt;$tag = "";&lt;br /&gt;&lt;br /&gt;while (read (IFH, $newchar, 1)){&lt;br /&gt;&lt;br /&gt; if ($newchar =~ m|\&lt;|) { $brack = 1 }&lt;br /&gt; elsif ($newchar =~ m|\&gt;|) { $brack = 2 }&lt;br /&gt; else { $brack = 0 };&lt;br /&gt;&lt;br /&gt; unless ($intag == 1) {&lt;br /&gt;&lt;br /&gt;  unless ($brack == 1) {&lt;br /&gt;&lt;br /&gt;   print OFH $newchar;&lt;br /&gt;&lt;br /&gt;  } else {&lt;br /&gt;&lt;br /&gt;   $intag = 1;&lt;br /&gt;   $tag .= $newchar;&lt;br /&gt;&lt;br /&gt;  };&lt;br /&gt;&lt;br /&gt; } else {&lt;br /&gt;&lt;br /&gt;  $tag .= $newchar; &lt;br /&gt;&lt;br /&gt;  unless ($inTHEtag == 1) {&lt;br /&gt;  &lt;br /&gt;   if ($brack == 2) {&lt;br /&gt;  &lt;br /&gt;    unless ($tag =~ m|^\&lt;STMTTRN\&gt;$|) {&lt;br /&gt;    &lt;br /&gt;     print OFH "$tag";&lt;br /&gt;     $tag = "";&lt;br /&gt;     $intag = 0;&lt;br /&gt;    &lt;br /&gt;    } else {&lt;br /&gt;&lt;br /&gt;     $inTHEtag = 1;&lt;br /&gt;&lt;br /&gt;    };&lt;br /&gt;   };&lt;br /&gt;  &lt;br /&gt;  } else {&lt;br /&gt;&lt;br /&gt;   if ($brack == 2) {&lt;br /&gt;&lt;br /&gt;    if ($tag =~ m|\&lt;/STMTTRN\&gt;$|) {&lt;br /&gt;     &lt;br /&gt;     if ($tag =~ m|\&lt;DTPOSTED\&gt;(\d{4})(\d{2})(\d{2})|) {&lt;br /&gt;&lt;br /&gt;      $transdate = timelocal(0,0,0,$3,${2}-1,$1);     &lt;br /&gt;      #print OFH "$tag " . scalar(localtime($transdate)) . " XXX";&lt;br /&gt;&lt;br /&gt;     };&lt;br /&gt;&lt;br /&gt;     $lowdif = $transdate - $lowdate;&lt;br /&gt;     $highdif = $highdate - $transdate;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;     if (&lt;br /&gt;      (($transdate &gt;= $lowdate) &amp;&amp; &lt;br /&gt;      ($transdate &lt;= $highdate)) ||&lt;br /&gt;      ($transdate &lt; ($lowdate - $lowtol)) ||&lt;br /&gt;      ($transdate &gt; ($highdate + $hightol))&lt;br /&gt;     ) {&lt;br /&gt;      print OFH $tag;&lt;br /&gt;     };&lt;br /&gt;&lt;br /&gt;     $tag = "";&lt;br /&gt;     $intag = 0;&lt;br /&gt;     $inTHEtag = 0;&lt;br /&gt;&lt;br /&gt;    };&lt;br /&gt;   &lt;br /&gt;   }; &lt;br /&gt;   &lt;br /&gt;&lt;br /&gt;  };&lt;br /&gt;   &lt;br /&gt; }; &lt;br /&gt;&lt;br /&gt;};&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;close IFH;&lt;br /&gt;close OFH;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;dtposted\&gt;&lt;/dtposted\&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1610193993349278139-9215873055198286189?l=spoonfightergeeksout.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spoonfightergeeksout.blogspot.com/feeds/9215873055198286189/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1610193993349278139&amp;postID=9215873055198286189' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1610193993349278139/posts/default/9215873055198286189'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1610193993349278139/posts/default/9215873055198286189'/><link rel='alternate' type='text/html' href='http://spoonfightergeeksout.blogspot.com/2009/01/strip-unwanted-dates-from-qfx-files.html' title='Strip unwanted dates from QFX files'/><author><name>Just A. Guy</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1610193993349278139.post-530607528214310150</id><published>2009-01-08T13:48:00.001-08:00</published><updated>2009-01-09T13:25:28.661-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='how'/><category scheme='http://www.blogger.com/atom/ns#' term='password gorilla'/><category scheme='http://www.blogger.com/atom/ns#' term='password management'/><category scheme='http://www.blogger.com/atom/ns#' term='password'/><category scheme='http://www.blogger.com/atom/ns#' term='howto'/><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><category scheme='http://www.blogger.com/atom/ns#' term='unix'/><category scheme='http://www.blogger.com/atom/ns#' term='portable'/><category scheme='http://www.blogger.com/atom/ns#' term='password manager'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='to'/><category scheme='http://www.blogger.com/atom/ns#' term='how to'/><category scheme='http://www.blogger.com/atom/ns#' term='USB'/><category scheme='http://www.blogger.com/atom/ns#' term='solaris'/><title type='text'>HOWTO: Keep your passwords on a USB drive. Access them from different platforms.</title><content type='html'>I have a lot of online accounts and passwords, and it's becoming impossible to remember them all. So, I have been looking for an open-source, password-management tool to keep track of them.&lt;br /&gt;&lt;br /&gt;The problem is that I use multiple computers, and multiple operating systems (Windows, Linux) on a regular basis, so ideally I need something that ...&lt;br /&gt;&lt;br /&gt;(a) can be run from a USB device, and&lt;br /&gt;(b) has a front-end GUI for multiple platforms / operating systems.&lt;br /&gt;&lt;br /&gt;It appears that this can be done with &lt;span style="font-weight: bold;"&gt;Password Gorilla&lt;/span&gt; (&lt;a href="http://fpx.de/fp/Software/Gorilla/"&gt;http://fpx.de/fp/Software/Gorilla/&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;Password Gorilla is a GUI application that stores passwords in a separate psafe3 database file that is encrypted with the Twofish algorithm.&lt;br /&gt;&lt;br /&gt;Password Gorrilla provides an executable file for Windows. For a number of other operating systems, such as Linux, Mac, BSD, and Solaris, Password Gorilla comes in the form of a platform-independent "Starkit" file that will run once you have downloaded the platform-appropriate "Tclkit" from &lt;a href="http://www.equi4.com/tclkit/download.html"&gt;http://www.equi4.com/tclkit/download.html&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Instructions&lt;/span&gt;:&lt;br /&gt;&lt;br /&gt;These instructions assume you already have a USB drive with a file system that can be read by Windows, Linux, or whatever other OS you're using. I used fat32, but you might be able to use ntfs, as well.&lt;br /&gt;&lt;br /&gt;0. Create a folder/directory on the USB device. I called mine "gorilla".&lt;br /&gt;&lt;br /&gt;1. Go to &lt;a href="http://fpx.de/fp/Software/Gorilla/#Download"&gt;http://fpx.de/fp/Software/Gorilla/#Download&lt;/a&gt; and download both the Windows executable file, as well as the Linux/Solaris/*BSD Starkit file. Put them in the folder you created.&lt;br /&gt;&lt;br /&gt;2. Go to &lt;a href="http://www.equi4.com/tclkit/download.html"&gt;http://www.equi4.com/tclkit/download.html&lt;/a&gt; and download the Tclkit for each of the other platforms you will be using. If you don't see the platform you want, look &lt;a href="http://www.equi4.com/pub/tk/downloads.html"&gt;here&lt;/a&gt; for a larger list. Use version 8.4 or newer. I downloaded the Linux x86 32-bit Tclkit, version 8.5.1. Put the Tclkit(s) in the folder you created.&lt;br /&gt;&lt;br /&gt;3. Make the Tclkit file(s) executable.&lt;br /&gt;&lt;br /&gt;In Windows, you launch Password Gorilla by double-clicking (or running) the .exe file.&lt;br /&gt;&lt;br /&gt;In Linux (and other *nix), you launch it as follows:&lt;br /&gt;&lt;blockquote&gt;$ ./tclkit-linux-x86 ./gorilla-1.4.kit&lt;/blockquote&gt;I created an executible file containing that above line so that I wouldn't have to type all that every time and so that I could launch it in Linux using a file manager.&lt;br /&gt;&lt;br /&gt;Here's what I have, now, in the "gorilla" directory on my USB drive (as seen :&lt;br /&gt;&lt;blockquote&gt;$ pwd&lt;br /&gt;/media/disk/stick/gorilla&lt;br /&gt;$ ls -al&lt;br /&gt;total 4288&lt;br /&gt;drwx------ 2 gideon root   65536 2009-01-08 14:43 .&lt;br /&gt;drwx------ 7 gideon root   65536 2009-01-08 14:46 ..&lt;br /&gt;-rwx------ 1 gideon root     632 2009-01-08 14:15 gkdb.dat&lt;br /&gt;-rwx------ 1 gideon root 1626485 2009-01-08 14:03 gorilla-1.4.exe&lt;br /&gt;-rwx------ 1 gideon root  251221 2009-01-08 13:40 gorilla-1.4.kit&lt;br /&gt;-rwx------ 1 gideon root      37 2009-01-08 13:58 linux-start&lt;br /&gt;-rwx------ 1 gideon root 2180434 2009-01-08 13:40 tclkit-linux-x86&lt;br /&gt;$ cat linux-start&lt;br /&gt;./tclkit-linux-x86 ./gorilla-1.4.kit&lt;br /&gt;$ &lt;/blockquote&gt;The result is that I now have a single, encrypted, password database that lives on my USB drive, that can be accessed from both Windows and Linux. (I'll probably add support for Mac, eventually.)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1610193993349278139-530607528214310150?l=spoonfightergeeksout.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spoonfightergeeksout.blogspot.com/feeds/530607528214310150/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1610193993349278139&amp;postID=530607528214310150' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1610193993349278139/posts/default/530607528214310150'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1610193993349278139/posts/default/530607528214310150'/><link rel='alternate' type='text/html' href='http://spoonfightergeeksout.blogspot.com/2009/01/password-gorilla-usb-portable-password.html' title='HOWTO: Keep your passwords on a USB drive. Access them from different platforms.'/><author><name>Just A. Guy</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1610193993349278139.post-7917430279407468266</id><published>2008-11-05T21:45:00.000-08:00</published><updated>2008-11-05T21:46:46.514-08:00</updated><title type='text'>Hiatus</title><content type='html'>Apologies for the hiatus. My cat died. I was traveling. I have been working on a real cluster for work. Progress to resume, soon.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1610193993349278139-7917430279407468266?l=spoonfightergeeksout.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spoonfightergeeksout.blogspot.com/feeds/7917430279407468266/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1610193993349278139&amp;postID=7917430279407468266' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1610193993349278139/posts/default/7917430279407468266'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1610193993349278139/posts/default/7917430279407468266'/><link rel='alternate' type='text/html' href='http://spoonfightergeeksout.blogspot.com/2008/11/hiatus.html' title='Hiatus'/><author><name>Just A. Guy</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1610193993349278139.post-2555526514170318140</id><published>2008-09-30T12:40:00.000-07:00</published><updated>2008-09-30T14:51:45.792-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sun'/><category scheme='http://www.blogger.com/atom/ns#' term='cluster'/><category scheme='http://www.blogger.com/atom/ns#' term='virtualization'/><category scheme='http://www.blogger.com/atom/ns#' term='jwm'/><category scheme='http://www.blogger.com/atom/ns#' term='virtualbox'/><category scheme='http://www.blogger.com/atom/ns#' term='iscsi'/><category scheme='http://www.blogger.com/atom/ns#' term='intel'/><category scheme='http://www.blogger.com/atom/ns#' term='virtual'/><category scheme='http://www.blogger.com/atom/ns#' term='x86'/><category scheme='http://www.blogger.com/atom/ns#' term='box'/><category scheme='http://www.blogger.com/atom/ns#' term='xVM'/><category scheme='http://www.blogger.com/atom/ns#' term='vmware'/><category scheme='http://www.blogger.com/atom/ns#' term='solaris'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><category scheme='http://www.blogger.com/atom/ns#' term='target'/><title type='text'>VirtualBox Sun Cluster - Update 1</title><content type='html'>I haven't actually set up a working Sun Cluster yet using VirtualBox, but I have the component parts set up and working correctly.&lt;br /&gt;&lt;br /&gt;Basically, a cluster needs at least two nodes that are individually able to run the application or service that is being clustered. These two systems must share at least two private network connections, be connected to the same public network, and (usually) have access to the same storage.&lt;br /&gt;&lt;br /&gt;My goal is to set up a basic, fail-over cluster on my laptop, using two virtual machines as my nodes, so that I can practice basic cluster administration. I'm using Ubuntu Linux as my underlying, host operating system, VirtualBox (Sun xVM) for the virualization software, Solaris 10 for each of the virtual machine "guests", and iSCSI (served up by the host OS) for the shared storage.&lt;br /&gt;&lt;br /&gt;First, let's look at my laptop:&lt;br /&gt;&lt;br /&gt;Dell Inspiron 1525&lt;br /&gt;Pentium Dual Core (not sure how fast ... maybe 1.5 GHz?)&lt;br /&gt;2 GB RAM&lt;br /&gt;160 GB Harddrive&lt;br /&gt;&lt;br /&gt;This laptop is probably barely powerful enough to pull this off. I wouldn't want to try this with anything less that 2 GB of RAM. (I've tried it on a 1 GB laptop, and my single guest OS kept freezing.)&lt;br /&gt;&lt;br /&gt;The underlying host OS will be Ubuntu 8.04 LTS Linux. I have the harddrive split up into multiple partitions, and it's set up to boot both Vista and Ubuntu via grub. I would have liked to set up a Solaris partition, since most of my expertise are in Solaris, but Vista and Solaris 10 did not play well together. I can't use Vista as a host OS, (a) because I know virtually nothing about it, (b) because I don't want to risk screwing up my ability to play WoW, and (c) because I'm not aware of free iSCSI target software for Windows, whereas iSCSI Enterprise Target is available for Linux.&lt;br /&gt;&lt;br /&gt;More to come ....&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1610193993349278139-2555526514170318140?l=spoonfightergeeksout.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spoonfightergeeksout.blogspot.com/feeds/2555526514170318140/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1610193993349278139&amp;postID=2555526514170318140' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1610193993349278139/posts/default/2555526514170318140'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1610193993349278139/posts/default/2555526514170318140'/><link rel='alternate' type='text/html' href='http://spoonfightergeeksout.blogspot.com/2008/09/virtualbox-sun-cluster-update-1.html' title='VirtualBox Sun Cluster - Update 1'/><author><name>Just A. Guy</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1610193993349278139.post-4945655290046914249</id><published>2008-09-25T09:29:00.001-07:00</published><updated>2008-09-25T09:37:22.519-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SPARC'/><category scheme='http://www.blogger.com/atom/ns#' term='x86'/><category scheme='http://www.blogger.com/atom/ns#' term='cluster'/><category scheme='http://www.blogger.com/atom/ns#' term='vbox'/><category scheme='http://www.blogger.com/atom/ns#' term='64-bit'/><category scheme='http://www.blogger.com/atom/ns#' term='32-bit'/><category scheme='http://www.blogger.com/atom/ns#' term='xVM'/><category scheme='http://www.blogger.com/atom/ns#' term='virtualbox'/><category scheme='http://www.blogger.com/atom/ns#' term='veritas'/><category scheme='http://www.blogger.com/atom/ns#' term='vcs'/><title type='text'>VirtualBox Veritas Cluster</title><content type='html'>I've put the Sun Cluster project on hold for a bit in order to investigate the possibility of building a Veritas Cluster. I was able to get ahold of some trial license keys for VCS on Solaris, but the installer won't enable the software on my virtual nodes with them. My suspicion is that Solaris 10 x86 32-bit isn't supported by VCS, and isn't recognized by the installer / licensing software.&lt;br /&gt;&lt;br /&gt;The keys work on a SPARC box, but I don't have a 64-bit x86 box to test this on, unfortunately, so I'll have to wait for a friend to help with this one.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1610193993349278139-4945655290046914249?l=spoonfightergeeksout.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spoonfightergeeksout.blogspot.com/feeds/4945655290046914249/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1610193993349278139&amp;postID=4945655290046914249' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1610193993349278139/posts/default/4945655290046914249'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1610193993349278139/posts/default/4945655290046914249'/><link rel='alternate' type='text/html' href='http://spoonfightergeeksout.blogspot.com/2008/09/virtualbox-veritas-cluster.html' title='VirtualBox Veritas Cluster'/><author><name>Just A. Guy</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1610193993349278139.post-8045902674247164345</id><published>2008-09-18T10:51:00.001-07:00</published><updated>2008-09-30T12:40:47.402-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sun'/><category scheme='http://www.blogger.com/atom/ns#' term='cluster'/><category scheme='http://www.blogger.com/atom/ns#' term='virtualization'/><category scheme='http://www.blogger.com/atom/ns#' term='jwm'/><category scheme='http://www.blogger.com/atom/ns#' term='virtualbox'/><category scheme='http://www.blogger.com/atom/ns#' term='iscsi'/><category scheme='http://www.blogger.com/atom/ns#' term='intel'/><category scheme='http://www.blogger.com/atom/ns#' term='box'/><category scheme='http://www.blogger.com/atom/ns#' term='x86'/><category scheme='http://www.blogger.com/atom/ns#' term='xVM'/><category scheme='http://www.blogger.com/atom/ns#' term='vmware'/><category scheme='http://www.blogger.com/atom/ns#' term='solaris'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><category scheme='http://www.blogger.com/atom/ns#' term='target'/><title type='text'>VirtualBox Sun Cluster</title><content type='html'>&lt;div style="text-align: left;"&gt;My current project is to build a working Sun Cluster on my laptop using VirtualBox.&lt;br /&gt;&lt;br /&gt;Basic setup:&lt;br /&gt;&lt;br /&gt;Hardware:&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;ul&gt;&lt;li&gt;Dell Inspiron 1525 w/ 2GB of RAM&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;Host:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Ubuntu 8.04&lt;/li&gt;&lt;li&gt;JWM GUI (instead of Gnome, to conserve memory)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;VirtualBox 2.02&lt;/li&gt;&lt;li&gt;Enterprise iSCSI target&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Guests:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Solaris 10 5/08 x86&lt;/li&gt;&lt;li&gt;Sun Cluster 3.2 (w/ secret, unsupported 32-bit binaries)&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;I have found the blog and forum postings of other people very helpful:&lt;/p&gt;&lt;p&gt;Configuring the network: &lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://ubuntuforums.org/showthread.php?t=78293"&gt;http://ubuntuforums.org/showthread.php?t=78293&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Setting up iSCSI and Sun Cluster in VirtualBox:&lt;br /&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://system-log.tyr.org.uk/2008/06/27/building-a-solaris-cluster-express-cluster-in-a-virtualbox-on-opensolaris/"&gt;http://system-log.tyr.org.uk/2008/06/27/building-a-solaris-cluster-express-cluster-in-a-virtualbox-on-opensolaris/&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://blogs.sun.com/mramcha/entry/solaris_cluster_on_a_laptop"&gt;http://blogs.sun.com/mramcha/entry/solaris_cluster_on_a_laptop&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt; &lt;/p&gt;&lt;p&gt;Stay tuned for further details.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1610193993349278139-8045902674247164345?l=spoonfightergeeksout.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spoonfightergeeksout.blogspot.com/feeds/8045902674247164345/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1610193993349278139&amp;postID=8045902674247164345' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1610193993349278139/posts/default/8045902674247164345'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1610193993349278139/posts/default/8045902674247164345'/><link rel='alternate' type='text/html' href='http://spoonfightergeeksout.blogspot.com/2008/09/virtualbox-sun-cluster.html' title='VirtualBox Sun Cluster'/><author><name>Just A. Guy</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1610193993349278139.post-4442452782231196025</id><published>2008-09-18T10:51:00.000-07:00</published><updated>2008-09-18T11:11:19.420-07:00</updated><title type='text'>Inaugural Post</title><content type='html'>Did I spell "Inaugural" right? No idea.&lt;br /&gt;&lt;br /&gt;The purpose of this blog is to provide me with a place to record the progress and outcome of the little technical projects I do in my spare time, in case anyone else is interested. When I can't figure out a particular technical problem, a Google search usually reveals that someone has already solved it. I'd like to return the favor.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1610193993349278139-4442452782231196025?l=spoonfightergeeksout.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spoonfightergeeksout.blogspot.com/feeds/4442452782231196025/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1610193993349278139&amp;postID=4442452782231196025' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1610193993349278139/posts/default/4442452782231196025'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1610193993349278139/posts/default/4442452782231196025'/><link rel='alternate' type='text/html' href='http://spoonfightergeeksout.blogspot.com/2008/09/inaugural-post.html' title='Inaugural Post'/><author><name>Just A. Guy</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
