Recovery of Files from a Unbootable VirtualBox VDI

I do most everything computer-wise with open source software, but the one hold out remaining that requires the use of a proprietary OS is TurboTax. As a result, TT ran in a Windows XP virtual machine under VirtualBox on my Linux desktop. Unfortunately, after completing our most recent return, I got a little excited to do some basic housekeeping and tried to merge snapshots from the VM in order to save some disk space. Unfortunately, as the attempt at merging snapshots resulted in an error being reported by VirtualBox that basically amounted to “you’re really screwed, buddy” but put in much geekier terms with a bits and bytes error code. A later attempt to re-merge or boot the VM again did not work. The virtual machine claimed that key windows files (like the kernel) were not available. Argh!

OK, so I’m usually pretty careful and save off critical files from the Windows VM to the Linux host. I sadly did not do that for the very-last-as-filed TurboTax working file (I had an interim copy from several hours earlier but I know we made changes later). Had the pdf copies of our returns but not the final version of the .tax2011 file, which normally copies over key details to our next year’s return. And of course, hadn’t yet set up SpiderOak to backup the files from within the VM to the cloud. Double argh!

As the VM would not boot, I tried various alternative boot scenarios to get at the files but none of them worked, using either a Windows install CD or a Linux live CD image within the VM. Furious Googling finally turned up a useful working solution to allow access the files on the Virtual Disk Image (VDI) associated with the VM. Was then able to copy out the files needed from within the virtual Windows environment to native Linux file storage. Phew, dodged that bullet! Here’s what I did under Linux Mint LMDE 64-bit to get access and then clean up afterwards:

Install Required Packages
Using Synaptic, installed the qemu-utils package, which dragged along a bunch of dependency packages.
bridge-utils (1.5-6)
ipxe-qemu (1.0.0+git-20120202.f6840ba-3)
libaio1 (0.3.109-4)
libiscsi1 (1.4.0-3)
libspice-server1 (0.12.4-0nocelt1)
libusbredirparser0 (0.4.3-2)
libvdeplug2 (2.3.2-4)
qemu-keymaps (1.1.2+dfsg-6a)
qemu-kvm (1.1.2+dfsg-6)
qemu-utils (1.1.2+dfsg-6a)
seabios (1.7.3-1)
sharutils (1:4.11.1-2)
vgabios (0.7a-3)

Gain Access to the Disk Image
Within a terminal window, executed the following commands:
lsmod | grep -i nbd
Nothing was returned, so the nbd module was not loaded already. Loaded it:
sudo modprobe nbd max_part=16
Run qemu-nbd to expose the entire unbootable image as a block device named /dev/nbd0, and the partitions within it as subdevices.
sudo qemu-nbd -c /dev/nbd0 WinXP_VirtualBox.vdi
The referenced blog posting/commentary said to issue a partprobe command, but I got an error about it not being available and didn’t seem to need it as the partitions were visible without it. Could see this by:
ls -l /dev/nbd*
To determine partition details:
sudo fdisk /dev/nbd0
and press p
This revealed the desired Windows NTFS partition from the virtual disk:
Disk /dev/nbd0: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders, total 20971520 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xdc94dc94

Device Boot Start End Blocks Id System
/dev/nbd0p1 * 63 20948759 10474348+ 7 HPFS/NTFS/exFAT

Access and Copy Off Files
OK, so create a mount point for the virtual disk and mount it READ ONLY:
cd /
sudo mkdir RECOVER
sudo mount -t ntfs -r /dev/nbd0p1 /RECOVER

Finally I could look at that mount point and recover the files:
cd /RECOVER/
cp -p /final/linux/resting/place/

Cleaning Up
Once I got all that I needed off the VDI, unmounted the image and shut down the qemu-nbd service:
sudo umount /RECOVER
sudo qemu-nbd -d /dev/nbd0

Then used Synaptic to remove all the qemu packages I’d just installed, to prevent the accretion of bloat hopefully never needed again. I’m trying to keep this Mint LMDE install tidy and avoid an OS reinstall for a good long time!

Unlimited Home Phone Service for Under $3/Month

UPDATE JUN 2015: We’re now two years in and the Anveo solution has been working great. We added an 888 toll-free number for emergency calls to home and to give out for other purposes. SPAM callers are routinely added to our blacklist and have become much fewer as a result. Monthly cost of service is well under $5 typically at our usage, including the extra 888 number. Call quality remains great (the only quality issues we’ve had were a result of our cordless phone being in the same frequency range as our wireless router – sound on a wired phone is fantastic). I’m looking at doing some stuff with Anveo’s new web API to automate some telephony in the future.


UPDATE OCT 2014: Well, it appears Google has changed their mind and what I describe below continues to remain available via Google Voice and the Obi device. I took their word for it and moved my solution over to Anveo (including porting my number to them), which has been pretty robust and much more flexible, but does cost a bit more a month (peanuts, really). However, had I known then that GV would stay available on the Obi, I would have stayed with the solution documented below.


UPDATE OCT 2013: Google has announced that the interface that the Obi device uses to connect with Google Voice will stop working on May 15, 2014. This means that the days of free voice calls using the Obi/GV solution detailed below will be coming to a close at that time. The Obi will still provide VOIP access to other low cost services (like Anveo, as detailed below) going forward.


I’ve been using VOIP (voice over internet protocol) phone service since 2006. I was previously using a small local company, Galaxy Voice, with pretty much zero problems from the start (just an occasional need to reboot my Grandstream ATA or network gear periodically after a power outage, etc.). I was very happy with their plan I had – which cost basically $5 or less monthly (usage-based). Unfortunately, I got a notification email that they were effectively going out of business (due to the failure of their supplier) at the end of June 2013. So the hunt was on for a replacement carrier!

I knew about the possibility of using Asterisk PBX software on a local linux machine to be able to make low/no cost calls using Google Voice (hereafter referred to as “GV”), but setting up an Asterisk server with dialplans, etc. is not for the faint of heart. So I was really looking for a traditional VOIP provider that would replace Galaxy Voice at the cost level we had been used to. The basic consumer-oriented VOIP companies (e.g.: Vonage {which I’d used before for my work-from-home business line} or VoIPo, etc.) all seem to have decided that the ~$10-15 price point is their target, unless you pay for two years in advance. Paying in advance for a long term commitment to something I had no experience with was a bit of a leap and their long term pricing was still on the high side of my target (given that both my wife and I use our cell phones for much of our calling, so the home phone has been mostly just for accounts contacts, etc. and not daily use). So another solution was desired.

Google Voice

I’ve had GV in place for several applications up to now and was very pleased with the service and features. For instance, I set up the New England Folk Festival Association (NEFFA), a purely volunteer-run organization, to use a GV account as their main number which then sends to select board members an email transcription and vmail link for follow up action. Also my wife and I have GV numbers which we give out so folks have “one number” access to us on both our cell phones and home phone. Additionally, GV offers SPAM filtering for calls much like their well known email filtering! So going with GV was a great idea from my perspective. Now, just how to do it without major complications…

Obihai ObiTalk Devices

My research ultimately accidentally uncovered the Obihai tech ObiTalk devices, which promised easy GV configuration right out of the box. As I sometimes subscribe to the “pay just a little more to get disproportionately more” school of tech purchasing, I went with their model 110 device (~$50) instead of a 100 (~$40). This way, if I ever found a need to connect my new Obi110 with my old Grandstream HT-386, I’d have the analog phone port available.

Porting Fun

The biggest difficulty in the whole process was working through porting our old home phone number from the rapidly dying Galaxyvoice through to Google Voice. Because Google only supports porting in mobile numbers, I had to port the number twice: from Galaxy to a cell phone provider (I used Tracfone as I already had an old phone for them sitting around) and then from Tracfone to Google Voice. Long story short, this process cost ~$40 total and took a little over a week including the shipment of a new SIM card.

Setting Things Up with the Obi110 and GV

As the first stage of the porting process was under way, I created a new Google account to use solely for the home phone service. I did this standalone account as a security mechanism so, even if the account got hacked, there would be no additional risk of my primary account’s other personal information (email addresses, etc.) being leaked. This let me pick a new local phone number to use as a GV number in the interim. I then used that account’s details to set up and test the Obi110 device. It worked great, no issues with call quality and NO bill. The one major limitation I discovered is that GV doesn’t support 911 calls.

E911 Support and Other Feature Needs – Anveo

So to cover the 911 need (we have a small child at home and working 911 is always a great idea), I opted to sign up for inbound and outbound service through Anveo.com (see link below) and use that as the second VOIP service registered on the Obi110. This worked out for several reasons… for one, I needed to provide a number in my parents’ area code ($2 per month with unlimited incoming minutes) so they could call me from the facility they are now living in (which only allows local calls) and Google Voice did not currently have any local numbers available – so GV was not an option. Secondly, they provide E911 service for a very low monthly fee ($0.80/month) plus the outgoing call rate (low, and we hope to never have to dial 911). As a bonus, Anveo supports both FAX receipt (free) and sending (very low rate) using that same number. Third, as Google Voice does not allow for one GV number to forward to another GV number [*I later discovered a unique workaround for this, see below], we’d need a new number for my wife’s and my GV “one number” numbers to forward to. Fourthly, Anveo allows you to set the outgoing caller ID to be any number you can prove you own (by answering a call at that number), so any call we place via either GV or Anveo will always show our home phone number as the caller ID.

Setting up the Anveo service on the Obi110 was really easy through their portal and worked straight away. Anveo provides a ‘933’ number you can call to test 911 without bothering your local emergency center, which showed all was set up properly. BTW, Anveo’s payment scheme is pre-paid, much like filling a gas tank: you use some payment mechanism (PayPal is preferred) to put funds on account with them and they bill against (deduct from) that balance automatically for the service used. They’ll alert you when your account balance gets low so you can top it up. So far I am very happy with Anveo – they responded to (by implementing!) a couple of feature requests/fixes I submitted to their feedback form in under 24 hours! When did you ever see that from the likes of AT&T or Comcast?

Buttoning Up

Once the Tracfone port completed (which required much hand holding/follow-up on my part due to the Galaxyvoice situation), the GV porting was submitted and finished in just a couple of days. When done, the old home phone number now rang straight through to the phones attached to the Obi110. Success! The interim GV phone number will go away in a short while (but if I wanted to keep it as a second number they offer to do so for a one time fee of $20, before that expiration date). As with any VOIP solution, the Obi110 is subject to power outage downtime, so I added it to the set of machines powered through our UPS for battery back up. And we can always call on one of our mobiles during an extended or widespread outage.

Bottom Line

We now have a full phone solution fielding more features than we were looking for, paying just $2.80/month (even lower once I take advantage of Anveo’s 1 year prepay service discount).

Regular calls come in and go out through Google Voice. Calls from my parents (and FAXes) come in through Anveo and should we ever call 911 it will go through them (as can outbound FAXes via their web portal). We don’t have to do anything special for calls, just dial (or answer) the home phone and the Obi110 routes it all correctly. We’ve been using this solution for over a month and nobody has said a thing about the GV call quality or not being able to reach us – so all is well. The one downside is caller ID. Unfortunately GV has very limited caller ID – all calls processed via GV show only the phone number (not name) passed through (both in- and outgoing) to any phones involved (there’s a lot of folks clamoring for caller ID with name to be added, which I hope they do). Google does offer somewhat better caller ID via the voicemail and contacts system – so long as you tag a contact to a given phone number, the GV web portal shows the contact name you set (for instance, on a voicemail transcription).

The biggest chore with the transition was researching the possible solutions (which I hope you benefit from here :)). Should you value this info and sign up for Anveo service, I hope you will provide my referral code 3018755 at the time of sign up so I can get a small service credit, you enter it here in the signup form:Anveo-Referral

Google Voice to Google Voice Forwarding Discovery

As has been widely lamented on the web, GV does not allow for one GV number to forward to another. This is a significant limitation for many hoping to use GV as their primary carrier, and I anticipated running into it once we ported our home phone number over to GV. I expected that my wife and I would need to change our personal GV “one number” numbers to point to the new Anveo number we provisioned above (which is why I went for the Anveo $2/month unlimited incoming service vs. the $1/month + usage minutes service – our monthly total cost could be as low as $1+0.80/month as a result of my GV internal forwarding discovery).

Remember, we had already had our separate GV numbers set up with the home number as a forwarding phone (whilst provisioned via the old VOIP supplier). To my happy discovery, our separate GV numbers continued to ring through to our home phone number after it was ported to GV! So it appears that the GV system is perfectly capable of forwarding from one GV number to another, they just preclude it when you set up a forwarding number. The key is to already have the forwarding set up while the target number is outside the GV system and then to port the number in, which will bypass the apparent step of checking for GV internal forwarding.

Again, I hope you find this information helpful and I definitely recommend implementing this solution if it meets your needs. Please do consider using my Anveo referral code 3018755 if you follow our path and use them. Happy calling!

Train Firefox mailto: to use Google Apps – Take 2

In a prior post I’d detailed the method of using a javascript entry to add an external mail resource to allow clicking on mailto: links to use the Google Apps version of gmail. Unfortunately, when I tried to repeat that method on my newly reloaded Netbook running Linux Mint LMDE with the default Firefox 20, it didn’t work. I’d enter the javascript string in the browser URL bar but nothing happened this time. I wonder if it had something to do with copying the text from my prior blog post and it not containing a proper html entity for the ampersand (‘&’) character, but I found another way to fix it anyway that’s a little more geeky but actually easier to do, as there’s no about:config action required.

My solution was to track down where these options are set and then manually edit the mimetypes.rdf file in the user’s firefox profile folder with all instances of Firefox closed. Enabling the Google Apps selection required adding both a
NC:possibleApplication RDF:resource= and a
RDF:Description RDF:about="urn:handler:web:
entry. Once completed, the agent was selectable in the preference Applications setting and worked properly for me.

Here’s the entries I made (NOTE: replace veino.com in the below with your own Google Apps domain):

Find
<RDF:Description RDF:about="urn:scheme:handler:mailto"
and add above the other similar entries below there the following:
<NC:possibleApplication RDF:resource="urn:handler:web:https://mail.google.com/a/veino.com/mail/?extsrc=mailto&url=%s"/>

Find <RDF:Description RDF:about="urn:handler:web:https://mail.google.com/mail/?extsrc=mailto&url=%s"
and add below that entry the following:
<RDF:Description RDF:about="urn:handler:web:https://mail.google.com/a/veino.com/mail/?extsrc=mailto&url=%s"
NC:prettyName="veino.com email thru Gmail"
NC:uriTemplate="https://mail.google.com/a/veino.com/mail/?extsrc=mailto&url=%s" />

Restart Firefox and change your application preferences for mailto: links to use the new agent and you’re all set.

Arch Linux and 1-Wire on a Seagate DockStar

Outline for now. This is currently improcess, but I’ve made much more progress than shown below – I now have all but the data logging/graphing set up and everything autostarts with new systemd service files. Yay!

Reinstall latest Arch following instructions.

Modifications to that installation process:

  • Create the system partition as ext3 instead using mke2fs -j /dev/sda1 and make sure the boot loader knows to use ext3:/usr/sbin/fw_setenv usb_rootfstype ext3
  • Perform the fw_setenv mods for rootdelay and an additional stop/start on usb drive/bus (figured this out the last time, required to ensure the usb drive will come ready before the DockStar tries to boot from it) /usr/sbin/fw_setenv usb_rootdelay 10 (should experiment to see if this can be reduced with the next item in place) and /usr/sbin/fw_setenv bootcmd 'usb start; usb stop; usb start; run force_rescue_bootcmd; run ubifs_bootcmd; run usb_bootcmd; usb stop; run rescue_bootcmd; run pogo_bootcmd; reset'. Otherwise the DockStar may boot into the original PogoPlug OS instead.

Change root password. Update hostname and locale per instruction at Arch Beginner’s Guide (HW reboot required for hostname to take effect)

update system: pacman -Syu

Install owfs, lighttpd, FastCGI and PHP: pacman -S owfs lighttpd fcgi php php-cgi (digitemp not available as a package yet, see AUR)

Set up lighttpd (including PHP and fcgi support, but DO NOT make the first set of mods shown right under the FastCGI heading, this is to enable Ruby on Rails but is incomplete and will bork the server start-up)

Set up passwordless login via key:

On your local machine, copy over your local public key to the new server using
user@localmachine ~ $ ssh-copy-id root@remotemachine
root@remotemachine's password:
Now try logging into the machine, with "ssh 'root@remotemachine'", and check in:

~/.ssh/authorized_keys

to make sure we haven't added extra keys that you weren't expecting.

Modify /etc/ssh/sshd_config to disable password authentication (without this, the passwordless authentication will work, but others could still try to log in with the root password):
PasswordAuthentication no
ChallengeResponseAuthentication no
PubkeyAuthentication yes

and restart the sshd service:
systemctl restart sshd

Future:

  • Get owfs suite working and create the proper config and daemon files to have it autostart and keep running [DONE, details to be added here – but all the magic happens via /etc/systemd/system].
  • Create web page(s) to autodisplay the local 1-wire sensors data as well as interesting data from a chosen wunderground feed [DONE, using the json API for wunderground, details to be added here].
  • Automate the data collection and graphing for sensors. [PENDING]

Westford PCA Barn Dance 3/23/2013

Tonight I’m calling a Barn Dance at the Westford, MA Parish Center for the Arts (PCA), working with the house band OH, CONTRAire!

Despite being called a Barn Dance, I confirmed with the organizer that they are looking for/happy with a straight contra dance program. I asked because that is pretty much the extent of my repertoire and wanted to be sure it will be a fit.

I have a nice program coming together and am looking forward to calling this dance very close to our home. See you tonight!

Concord Monday Contras 11/26/2012

A great night at my home dance in Concord! I got to work with musicians I like this evening, including: David Kaynor (fiddle), Debby Knight (piano), Jack O’Connor (mandolin, banjo, percussion) & Cal Howard (bass).

My called program:

  • Broken Transcription – Don Veino
  • Get Me Going – Lisa Greenleaf
  • Another Flirty Attempt – Marian Hepburn
  • Further and More – Lisa Greenleaf
  • Amy’s Harmonium – Cary Ravitz
  • The Raeden Reel – Bob Isaacs
    –Break–
  • All You Can Eat – Ted Crane
  • Sweet Music – Amy Kahn
  • Small Potatoes – Jim Kitch
  • Nail That Catfish To The Tree – Walter Davies [+Bob Dalsemer]
  • Winter in Summerland – Jeff Spero
  • You’re Among Friends – Bob Isaacs
  • Night Sail – Rick Mohr

There were no significant bobbles or issues with my calling this evening and I got great feedback including some suggestions for more improvement (and many straight compliments, always appreciated!). Got one request to call (prompt) less, but that individual was dancing in a line that wasn’t experiencing the challenges showing in another line which drove me to keep calling. Was able to record most of the evening to review for my own education, may post some excerpts to YouTube later. Looking forward to my next gig!

Gardner Contra Dance 11/24/2012

A fun dance! The crowd was filled with a large proportion of first time dancers, so I significantly revised my planned program below. As I did that on the fly and spent a lot of time down on the floor with the dancers, I didn’t end up capturing my “as called” program which I believe totaled 7 dances. Regardless, this was a fun test of my calling and band communication skills and an informative experience. And the snacks and people were great! Thanks for the opportunity and a great time, Gardner dancers!

Planned Program:

  • Broken Transcription – Don Veino
  • Get Me Going – Lisa Greenleaf
  • Another Flirty Attempt – Marian Hepburn
  • Further and More – Lisa Greenleaf
  • Amy’s Harmonium – Cary Ravitz
  • Night Sail – Rick Mohr
    –Break–
  • Sweet Music – Amy Kahn
  • Winter in Summerland – Jeff Spero
  • Nail That Catfish To The Tree – Walter Davies [+Bob Dalsemer]
  • Small Potatoes – Jim Kitch
  • All You Can Eat – Ted Crane
  • You’re Among Friends – Bob Isaacs

Sweet Scent of Sage – Contra Dance

I’ve been toying with a very partner-centric dance I’ve named for my wife
Sage. Below is the original (successfully tried) and two new variations I
hope to try out soon.

The AFAIK unique A1 Mad Robin to A2 slide left transition I originally had
as a slide on the left diagonal to diagonal waves, but it proved nearly
impossible to teach without a demo. The revised dance achieves effectively
the same result with more familiar calls to make for a more conventional
walk-thru. The variations try to further improve call familiarity by
omitting the “hook”.

Thanks to Lynn Ackerson for pointing out there being a shadow in the wave.

Here’s the dance: Sweet Scent of Sage.

Windows Freedom Round 2: HomeBank and JStock

This is just a stub of a future post regarding more progress in ditching MS Windows altogether. In a prior Windows-freedom post I covered my list of remaining programs that keeps me booting a virtual machine installation of Windows XP in order to get things done.

That post included my list of remaining programs that I’d yet to find effective Linux alternatives for:

  • Quicken
  • TurboTax/HR Block at Home
  • GoToWebinar

Well now Quicken is crossed off the list as I’ve found HomeBank (banking) and JStock (stock accounting, basis tracking). More info on using/configuring these will come later.

Silencing a Harbor Freight Item 93575 Safe

Harbor Freight sells a pretty decent safe for secure storage of selected items in the home, their item number 93575. With the right discount coupon the cost was about $24, just a couple of dollars more than their smaller safe but, IMO, of much better quality/construction.

I wanted to use this for a discreet situation where the safe’s very loud keypad beep would be a distinct disadvantage. Others had posted solutions on the product review pages that involved totally silencing the beep through squirting super glue into the speaker or de-soldering it from the board.

Mine is a simple solution with what I believe are two distinct advantages: ability to adjust the volume to retain some of the feedback capability, and reversibility – the ability to undo the change and return the safe to factory condition in case you’d need to return it for some reason.

What I did was to insert a small screw into the opening in the speaker housing, which I screwed down carefully and slowly until it reached the volume level I wanted. This worked great and has remained the same for several weeks now. See the following photos for how to do it.

Concord Monday Contras 9/3/2012

This post is one of a series documenting my hobby of calling (leading) Contra dancing, building off of my original post on this topic.

This dance evening marked my first “full evening” calling debut at the famous Concord, MA Scout House. I was excited to have the opportunity to call at this venue and to work with the excellent musicians playing: Mia Friedman (fiddle), Ariel Friedman (cello), Bethany Waickman (guitar), Jack O’Connor (mandolin, banjo, percussion).

My dance program as called for the evening consisted of:

  • Broken Transcription – Don Veino
  • Get Me Going – Lisa Greenleaf
  • Butter – Gene Hubert
  • Coconut Cream Pie – Lynn Ackerson
  • Further and More – Lisa Greenleaf
  • Winter in Summerland – Jeff Spero
  • Amy’s Harmonium – Cary Ravitz
  • Sweet Scent of Sage – Don Veino
    –Break–
  • Sweet Music – Amy Kahn
  • Special Delivery – Nell Wright
  • All You Can Eat – Ted Crane
  • The Baby Rose – David Kaynor

I had deliberately planned to start the evening with easy material that still presented fun dancing. The first five dances went very well – quick teaching and smooth dancing to wonderful music. Coconut Cream Pie (by a caller friend in California) was my first time calling a Four-Facing-Four dance and it went off well. BTW, I highly recommend this dance as it is very robust and works even if partner roles get mixed up.

My sixth dance selection, Winter in Summerland, is a great Becket dance which I’d mistakenly noted as having previously called successfully (so had not diagrammed it for this gig). My card had a (minor, positions swapped) error in it found during the walk-through. Believing my notes, I was convinced I’d made a walk-thru error and tried it again and became flustered enough by that to not spot the fix in the moment. Luckily, I had thought through this possibility and had selected several recovery dances. So I pulled out a Becket recovery dance, Amy’s Harmonium, and that went smoothly – albeit after time wasted for a second dance’s walk-through.

My final dance of the first half, Sweet Scent of Sage, was my new composition honoring my wife – who was in the crowd with my daughter. This was its first public performance. I had worked out carefully how to teach it. However, I probably should not have tried calling it for this evening – the dance has an unusual transition from a Mad Robin move, and another move I’d planned to use Winter in Summerland to teach previously. As a result, my teaching took longer than expected and again I got a bit flustered and forgot that I could/should have got down to the floor to do a demo the first time through. I did get onto the floor to straighten out some misalignment during the second walk-through, but it was still feeling a little rough and we were late moving to the break. So I made a decision to drop the dance and move on to the waltz. Well the crowd wouldn’t have it – they wanted to do it! So we did, and several folks later told me how much they’d enjoyed dancing this partner-centric dance. Among my takeaways, I now have a standing reminder on my card holder: “Will a demo teach better?”.

The first dance of the second half went well. The second dance, Special Delivery, is one I’ve called several times before without issue. The dance has two diagonal moves with a shadow which proved to disorient two couples in one of the lines this evening. I got down to the floor to try to help them get back on track. However, another couple (experienced dancers both) apparently got frustrated when they encountered this and just walked off the floor. This further complicated the situation such that there was nothing I could do to fix it but end that dance a bit short.

The balance of the evening went smoothly – two sure-fire dances which always please dancers.

I’d requested dancer feedback comments and put out a notebook for anonymous input. I received several helpful inputs that way and via face to face chats. Also heard that folks appreciated my programming different/unusual dances. Some wonderful learning that I’ll do my best to apply going forward. Thanks to those that made the effort to share their thoughts with me!

Clearing out the Cruft with Linux Tools and Best Practices

As covered in an earlier post, I’ve got some serious work under way to sync and backup my computer files across several computing platforms and devices. I’m reinstalling some machines as part of that work. At that time, I’m cleaning out a bunch of accumulated cruft in the form of duplicate files and folders – plus old OS and application configuration data – some of which has been carried over from as far back as my Windows 98 and SunOS 4 days!

So here’s my acquired wisdom on how to get this done under Linux.

  • Delete or archive off all dot (.) files. UNIX/Linux type operating systems store configuration and option information in hidden “dot” files in the user home directory. When moving to a new version of the OS, it is best to start with fresh dot files in most instances (prior files may confuse newer versions of programs, etc.) – there are just a few which are desirable to copy back (like your ssh keys and .mozilla (Firefox/Thunderbird) configurations). If you uninstall programs, the associated dot files may be left behind, taking up space. So delete or archive these files off and copy back only what you need after the new installation is done.
  • Eliminate Duplicates. Over time, I did things like copy over from one machine to another a copy of an important directory, or upload the content of our camera’s memory card. This often results in duplicate files and folders. The best way to fix this is not to do it (which is what will be fixed with my sync/backup solution) but it can happen nonetheless. There are two good tools I’ve found to help clean this up.
    • FSlint: Among the capabilities of this tool is a duplicate files finder. It doesn’t just check for duplicate file names but does more comprehensive comparisons so that it will catch the same file under different names (even extensions!) and eliminate false positive matches using checksumming, etc. You can then delete off duplicate files, if desired, or replace them with hard links to a single copy to save space.
    • Meld: This tool includes a directory comparison capability, for up to three directories at once. It will tell you where the files in the directories are the same, where files exist in only some of them and/or if the file attributes match (eg: permissions, modification date or size). The tool allows for merging/moving files to consolidate down to a single “master” copy. Way better than trying to do the same through command line or file manager tools. Highly recommended!

Will add more later on ways to:
Slim down applications data.
Eliminate unused languages/localizations.
Clean out cached information.

Motley Fool: Immoral or Incompetent?

I have to say I feel quite let down.

When I first started investing to save for my retirement (quite some time ago) I came across material from the Gardiner brothers, a.k.a. the “Motley Fools”. The information was funny and empowering, helping me to learn more about this important topic. One of their key principles was that you could get your best performance using low cost mutual funds/index funds and bypass all the shenanigans that Wall Street tried to sell you. They were lauded for their ethical approach to investing and straightforward talk.

Well over the years they seem to have strayed from this index fund advice, and I was riding along with them by becoming a member of fool.com. They had a good privacy policy and claimed to not give away your email address. However, they started sending out these incredibly long emails pitching their own various newsletters and advisory services, and I still hung on despite starting to feel uneasy. Others have written about this change and some took them to task for it. But their “CAPS” experiment was interesting, and I could easily delete the emails, so I still stuck around.

Well, a short time ago I started getting SPAM messages sent to the email address I gave them. Owning my own domain, I am able to give out unique virtual email addresses to anyone I wish — in doing so, I can track down just what I’m ticked off about and going to relate to you here. So understand that my email address with fool.com is only known by me and them.

These new SPAM mailings are coming from very shady pitches for penny stocks, etc. They are the standard dregs of the internet masking as investment advice at best, and are potentially identity theft schemes at their worst. And here’s the kicker: these are being sent to the unique address I gave fool.com – which exists in reality in no place but their own servers.

So I dutifully sent an email to their provided address for such things (PrivacyPete@fool.com), and waited. And waited. It has now been a loooooooong time (nearly a year ago now) and nobody has got back to me about this. So this leaves me with just two possibilities (is there any other?):

  • Motley Fool is violating their own privacy pledge and has starting selling their mailing list, or
  • Motley Fool’s account management has been hacked, proving their incompetency in protecting subscriber information.

Either of which is totally unacceptable. I’m a Fool no more.

Password and Files Encryption/Sync/Backup: Gettin ‘er Done!

One of my to-do list items for quite some time now has been to get my computer files organized and to set up automated backup and synchronization across my computing devices.

I’d kept putting this one off because I wanted to deal with some foundational issues first:

  • pruning down my files and eliminating duplicates both within my desktop machine’s file system as well as with my netbook’s files
  • selecting a sync solution
  • converting my password safe from my former J-Pilot/Palm solution
  • etc.

I did a ton of research and would get close to doing something then another priority would take charge and it would get put on the back burner again. Well, in recent months I’ve finally selected and put in place several needed building blocks:

  • Password Sync: originally I’d selected KeePassX but I then looked further into LastPass, which does much the same thing and has many more features bundled in – they key one being a native cloud sync and backup capability for all our passwords. Works on effectively every platform I would ever consider including my Debian (Linux Mint Debian Edition) and Linux Mint machines, my wife’s Mac and a possible future smart phone/tablet, etc. Firefox, Safari, Chrome, etc. all supported! Done on my machines, pending on the Mac (which got KeePassX in the interim). [Update 1 Jan 2014: Mac is finally done, had to update OS X to enable Safari to update to a version supported by LastPass. I’m not a Mac expert and it is just different enough from Linux/Unix that I had to figure a bit out.] Use my referral code and we’ll both get a free month of LastPass Premium! https://lastpass.com/f?2884566
  • File Sync and Cloud Backup: I selected SpiderOak because of great cross-platform support. Think of it as Dropbox but with built-in cloud encryption so no worries about the files being compromised on the server/network. I’d considered rolling my own solution using a power-sipping always-on Linux ARM-based device with rsync and/or a PogoPlug but realized SpiderOak did what I needed in much easier fashion. Done on my desktop, pending on the others.
  • Local File Encryption: Protecting our sensitive files in case of having a machine fall into someone else’s possession. I selected TrueCrypt because of (getting to sound like a broken record?) similar excellent cross-platform support. I’d considered other solutions including the built-in Windows, Linux and Mac filesystem encryption options, but what I wanted was a single solution that would work with all of them plus enable syncing the secured files across all our devices using SpiderOak. The kicker for me was when I figured out that what really required the local protection of encryption was actually quite small compared to our number of overall files – I don’t care if someone finds out what I paid for our gas bill or my various basic correspondence, yet our financial account details, tax records and similar would need protection (these files end up taking well under a Gig of space). Remember, LastPass protects all our passwords separately. Done on my desktop, others pending.

The best part of all this is that every one of these solutions is free for the basic features we need and they all work across all the machines we have and anticipate being interested in at any point in the future. If/when we grow to need additional features or capacity, they are priced quite attractively (SpiderOak and LastPass). TrueCrypt is totally free for all features. Most are open source too.

Once I realized the amount of encrypted storage required was so small, my interest in consolidating and eliminating file duplicates became a nice-to-have vs. a need (I had previously been concerned that syncing a large TrueCrypt volume over the internet would be a significant performance issue). Getting to a secure solution was more important and a brief scare when I left my netbook behind at a public dance a few weeks ago (with several financial files on it) pushed me to make that part happen sooner rather than later.

Getting a NewEgg mailing with a Shell Shocker special on a 500GB hybrid (solid state and conventional platter) drive for under $80 put the final bit in place – now my netbook could have more space than my total desktop disks, so it would all fit as is without further winnowing. And with the SSD portion of the new drive used as OS and program storage, the machine promises to scream along compared to before and last a lot longer on battery power.

In order to make this solution the best it can be, my first major consolidating step will be to start over with a totally fresh install of the latest Linux Mint Debian Edition (LMDE) with the new disk on my Asus EeePC 1000HA and then layer in the individual pieces as described above. I’m starting on that work now and will post more when done.

I’m excited to have this work finally coming to fruition! After my netbook is done, I’ll be moving on to finishing the same things on my desktop machine and my wife’s Mac (after a required Snow Leopard update there – to update Safari – to support LastPass). Wish me luck!

Tomato Router Update Triggers SSL Error

After updating my Asus WL-520gU router to the latest version of the Tomato firmware (with OpenVPN support), I ran into a strange error. While trying to access the admin interface via https:, I got the following error in my Firefox browser:
Cannot communicate securely with peer: no common encryption algorithm(s)
(Error code: ssl_error_no_cypher_overlap)
.

I couldn’t access via http: either (which was expected, as that’s how I’d set up the router with the prior FW version to enforce security).

Googling for the error didn’t turn up anything really useful. I at first thought that the update had somehow gone bad, but I was able to get out to the internet through the router so that brought some hope. I was also able to ssh in to the router so all seemed to be OK in general. Only problem was I couldn’t access the router’s controls.

On an off chance, I decided to check out the Firefox settings for SSL security. Under the Advanced tab, I tried turning off and on the SSL and TLS checkboxes. Nothing changed. Then I decided to delete/remove the Certificate entries for my router and try again. That turned out to be the trick. For some reason Firefox didn’t like the security certificate any more – this time I got the familiar “This connection is untrusted” (or effectively similar) warning and was able to accept the security exception for my self-signed SSL certificate once more and all was fine.

Just in case someone else runs into the same problem… try the above.

Palm GnuKeyring Conversion to KeepassX

I was a very early user of the original PalmPilot device. Way back when I actually had the PalmPersonal syncing with my ’90s era Sun Microsystems SPARCstation 4 work calendar and email, etc. I eventually moved on to a Treo90 which I think was the optimal personal organizer of its era (I ended up owning three of them over time, ultimately).

Sadly, the Palm solution no longer is feasible, even under Linux. The deal breaker for me was the lack of being able to dependably sync my google-based calendar, etc. with the Palm. So time to move on, which I did for most everything, but…

I had been using J-Pilot’s Keyring plug-in to manage my set of passwords – I hung on to this handy tool until I finally became unable to use J-Pilot to sync via USB with my Treo and was forced to manually sync my password info across my desktop and netbook. Enough became enough!

Research discovered that the excellent Windows application KeePass had been ported/reinvented for Linux, Mac (and even Win) as KeePassX. As a free open source application with excellent encryption, it was an obvious solution to fit my Linux-based environment (and my wife’s Mac). A side benefit was that there was even a KeePass version available for my J2ME-based mobile phone, so the Palm-type “on hand at all times” capability could be available once more. All these versions could work from the same password database file format, so syncing a file across them would enable the info to be always up to date anywhere I would be!

My final concern was how to get my all my existing Keyring data into that KeepassX solution. Well it turns out that someone else named Wouter blazed my trail there through a similar migration and it only required minor changes to work perfectly for me. Here’s what I did to modify Wouter’s method to suit my needs.

Note: when Wouter refers to extracting the file saxon.jar from the Saxon downloaded zip file, the actual file name is saxon9.jar. Also the Jochen Hoenicke conduit to export the Keyring file to XML is actually named export.jar, not xmlexport.jar as in Wouter’s command line.

So I gathered all the files into the working directory as Wouter recommended. I then executed the (modified) command line
java -jar export.jar Keys-Gtkr.pdb MY-KEYRING-PASSWORD-HERE > keyring.xml
which created the keyring.xml file.

I paused here to go into the XML file and make edits as required to clean up my old Keyring data, as it was much faster to do it here in bulk rather than the one-record-at-a-time editing that would be possible in the KeepassX GUI application. For instance, in Keyring there was no dedicated URL field like in KeepassX, so I had put them all in a notes field before. Now I moved them all over to the dedicated field. In other places I had comments in the user name or password fields, but these totally screw up the Autotype function in KeepassX, so I moved or deleted them. Once this was done I could move on to the next step from Wouter.

I executed
java -jar saxon9.jar -xsl:keyring-to-keypassx.xsl -s:keyring.xml -o:keypassx.xml
to create the final KeepassX XML import file. This was then able to be opened in KeepassX successfully with all my data in the categories I had originally set up, etc. Great stuff – thanks, Wouter!

Next step is to get KeepassX installed on my other machines and set up a Dropbox or similar synch mechanism to keep them all aligned automagically. That will have to wait for tomorrow!

Linphone: a VOIP Softphone for Linux (and others)

In an earlier blog post I mentioned I was using Twinkle as a softphone client for my VOIP service from Galaxyvoice (GV). As I also mentioned in this entry I’ve now switched my netbook over to a Debian Linux. I’d not yet got around to (re-)installing a VOIP client on the renewed EeePC. So when I saw that GV was now recommending something called Linphone, which seemed to be very cross-platform (Win, Lin, Mac, Android, etc.), I decided to check it out.

Turns out Linphone is available in the Debian repository, so it was a trivial task to install via Synaptic. As GV recommended Linphone, they also provided account settings info. – so about 3 minutes later, I was making my first call from the netbook – worked great!

I’ve not yet tried out the video calling, but the camera preview looks smooth and lag-free so I expect it will be great as well.

I recommend you check out Linphone!

Linux Mint Debian Edition (LMDE) on an Asus EeePC 1000HA

I’m a long time user of UNIX-based computers and have been using Linux exclusively for my primary computing for close to 10 years now. For the past couple of years Linux Mint has become my favorite distribution for desktop and laptop use.

This EeePC netbook had been running Eeebuntu Linux, which was fantastic. Eeebuntu 3.0 was based on Ubuntu 9.04 and Debian Unstable. Built with customization to various packages and a modified kernel it provided support to this netbook that was a perfect fit. That project enabled all the function keys to work and had outstanding power management that kept the machine running on battery for extended use.

Sadly, the Eeebuntu project seems to have broken down as they pursued new goals. IMHO they lost direction and got sidetracked with developing a fancy website for their proposed new release and expanding their project’s scope significantly. In the end this stalled any real end-user progress. In the mean time the old Eeebuntu became outdated and, being based on Ubuntu 9.04, stopped getting any updates. So things like Flash stopped working, etc. I waited as long as I could for their new release, but needed to move on.

Getting tired of the need for repeated reinstalls required by both Windows and Ubuntu-based Linux, I became very interested in Debian Linux. Debian is a rolling release, meaning updated software is available regularly for your existing installation. In practice, this means a software environment that should never require reinstallation but will still keep up with application development! And Linux Mint happened to announce the availability of a version based on Debian (called LMDE)… this gave me the push needed to give Debian a go on this netbook.

So I installed the latest available image of LMDE on my Eeepc in Fall 2011 from a USB stick. Everything went smoothly, no real hiccups at all. There was a minor issue with a package due to an upstream Debian problem which was fixed by marking one package to not update (this was covered in a note on the LMDE page). When installed, I had a good working system with most of the standard function keys working – the machine was totally usable but the dedicated keys for webcam switching, etc. did not operate (unlike how they had under Eeebuntu) and the power management was not tuned for battery preservation.

Luckily one of the former Eeebuntu developers (Andrew Wyatt, a.k.a. fewt) has made available an applet for power management of EeePCs (and other machines) that could be installed. Called Jupiter, it allows switching the CPU to one of three power scaling modes automatically on power events, enabling much longer battery life. It has other functions as well including video mode/external monitor selection and touchpad control.

The combination of LMDE and Jupiter have become a great solution for this netbook and I look forward to using them together for a long, long time to come!

Better than a rooftop box, and roomier too!

I’m one half of a “new parents” team focused on our little daughter. Wow, kids require so much stuff!

So, we were planning an extended car trip and I knew we were not going to be able to comfortably fit all her stuff and support equipment into the car, with our own adult stuff, and still allow for us to feed her on the fly in her carseat in the rear. I knew this would mean external storage space but I hated the idea of one of those big rooftop boxes.

Why? Primarily two reasons:

  1. Gas mileage impact: sort of like dragging a rooftop sail down the road, this was going to cause some serious drag
  2. Access challenges: getting to the box on the roof and getting stuff into and out of it was going to be a pain. My back is not what it once was…

So I was thinking that a small enclosed rental trailer would be the ticket. Something like this one. Once I calculated the cost for our extended trip, I figured I could build one for the same or less money (than either the trailer rental or buying a good rooftop box) and we’d get to keep it for future needs. New project!

So I end up buying a Harbor Freight trailer frame kit. This ships-in-two-boxes kit comes pretty much complete but completely disassembled. They intend for you to add a make-your-own simple plywood platform and an optional stake side kit to complete it, which they supply basic plans for in the assembly directions. As I wanted to haul stuff in complete weather protection, I had to come up with a better solution.

My design ended up being a weather-tight wooden box made primarily from two sheets of 4′ x 8′ marine-grade plywood and a couple of 1″ x 4″ x 8′ poplar boards. It has a pretty simple but very effective gasket system, much like a refrigerator door (so effective, I find that opening it requires waiting for the resulting air lock to release!). Stainless hardware enables a swing open lid and good security. Upgrades include an LED trailer light kit (with the wiring harness expanded to include a dedicated ground wire throughout) and an interior LED light fixture to view the contents at night. Also a spare tire and mount (modified to go on the front surface of the box instead of on the frame tongue). I came up with a PVC pipe wiring channel to protect the wires underneath and keep the box weathertight.

The box is coated with West System marine epoxy currently and will eventually have a marine one-part polyurethane paint finish for better appearance and UV protection (have to wait for warm weather to apply it – all the assembly and coating to date was done in my residential basement due to sub-freezing weather!).

I’m really pleased with the result! The MA RMV had no issue in registering it. The trailer is barely noticeable in towing (~1500 miles so far), and seems to have little or no effect on our gas mileage. It swallows 4 large plastic storage bins and some additional bulky gear and is easily loaded and unloaded. The interior stays perfectly dry, even when using a power wash on it (I built in a boat drain plug just in case, but there is no need for it now). It is so light and well balanced that I can easily disconnect and wheel it around with one hand while still drinking a coffee with the other.

This photo make the trailer appear larger than it is - the top comes just about up to the bottom of the car's rear window and it is much narrower than it.

My only complaint is that it is so compact I can barely see it out of the rear of the car – which makes backing up a real challenge! Basically, once I see it on either side of the car while backing, it is too late – the trailer is at a significant angle already. I may need to add some lights or poles to show the corners of the box for backing up. But for now, I generally find it easier to just pop it off the car’s hitch and wheel it where I want to put it than try to back it up any distance.

Will update this post later, once the final painting is completed.

Update 12/14/13: I finally finished this project in early fall of this year with some other enhancements besides just painting, check it out!

Fix for Schwab Site Tossing Users Out When Accessing Certain “Offsite” Areas

After my most recent upgrade to Linux Mint 11 (and the resultant upgrade to latest Firefox), I started running into an issue on the Charles Schwab site. I could log in fine and see my account info, but as soon as I clicked on something “outside” (news story links, or Morningstar research, etc.) then I would encounter a weird situation. The linked page would display for a second or two and then the screen would refresh and I’d find myself tossed out and back at the login page with a message
Your session has either timed out or has not been correctly established. Please sign on again.
This was extremely frustrating. Googling resulted in a couple of other folks having similar issues on another platform, but no solution. The few things that had similar reports back from earlier days talked a lot about cookies. I wondered, “is this a cookie problem”?

So I looked at my cookie settings and one thing stuck out for me: “Accept Third Party Cookies” was not checked. Where this was about going “off” the main Schwab site, I tried enabling this option. Bing! The issue is resolved and now I can load these other pages and stay logged in. I don’t like the solution, as it requires me to accept cookies for sites I am not specifically planning to visit. But at least I can stay on Schwab now when I want to. I’ll most likely simply turn this option on and off as I visit Schwab until there is a longer term solution. If I can find some sort of advanced cookie management plug-in for Firefox, then that might be a longer term fix.

Using DeposZip Under Linux (Mint 11/Ubuntu 11.04)

Our new credit union provides the capability to do on-line check deposits using an application called DeposZip. Of course, their web site only mentions support/instructions for Windows and MacOS, not Linux. Well, the application is actually server-hosted and uses a Java applet (or some ActiveX thing if on Windows) to get things done.

If it goes as planned, the application can work with your TWAIN-enabled scanner to get the check images directly within the application. Sadly, this did not work for me – it produced a pop-up window saying only “SK.gnome.TwainManager.getDefaultSource()LSK/gnome/twain/TwainSource;”. I figure this is refering to a value that is supposed to be defined somewhere (and is not?), but in looking at the file system and googling I came up with nothing. OK, so the application offers two more options under the applet, copying the image from the clipboard (which also did not work – with no error this time) and loading an image file, which does work.

To create the image file, I scanned the front and back of the check separately using XSane and saved each as a .png (or jpeg) image. I then loaded these images as requested by the application. DeposZip took the 200 dpi color scans and further processed them to what looked like high contrast greyscale or B&W images shown in a preview. The rest systematically worked OK from there, the deposit was accepted for processing.

BTW, DeposZip also offers a “zero client” version as a link in the footer of the applet. This seems to load another page totally doing away with the java applet and using instead a standard web form with upload link for the image files. This works similarly to the above, but without the image preview you see in the applet happening until the next step in the process.

So long as you follow the endorsement instructions exactly (which unfortunately require you to write a whole lot of stuff on the reverse of the check) and the check is below $1500, the deposit will go through fine. Nice way to avoid a drive to the bank or ATM!

Linux Mint 11 (was Debian/Xfce) on a HP Pavilion ze4600

My brother’s Win XP laptop died. He has limited computer needs, really just needs to use some web applications like Facebook, Yahoo mail, Hulu and Youtube. In the past he has had significant virus issues under Windows and I’ve been proposing to him for years to move over to Linux. This happenstance caused him to be finally open to it.

This HP laptop is fairly old, it has an old AMD mobile processor, USB 1.1 and no built-in wireless hardware. This meant that the operating system had to be fairly lightweight to make this solution work well. I personally use Linux Mint (currently Mint 11/Gnome) as my own desktop and was aware of the new Debian Edition of Mint, which is available in a version using the Xfce desktop (again, lightweight resource use) which I thought would be very suitable. Plus, I wanted to get more personal experience with Debian. 😉

So I launched a project to install Mint LMDE Xfce edition on this machine. This proved to be quite difficult. For some reason, the installer would run extremely slowly – but curously, would speed up if I kept the mouse moving. But seeing as I only discovered that the second time around, once the installer had run overnight the first time around, that was little help. I ended up installing LMDE twice, because the first time it would not work properly. The second time worked, and the machine was quite nice and snappy, despite the paltry resources of this machine.

So all was good, and I got things set up well and everything he would need to use was working. Delivered the unit, he was happy. Great. Project over…

Not quite. A few days later I hear he is having trouble. It is difficult to troubleshoot remotely because there seems to be some sort of permissions issue that is preventing him from running even the tools I would normally use to connect to the machine from my home. It was almost as if SELinux was somehow in play and blocking stuff, but it had all worked before and I did not create his account with privs to change anything sensitive.

I never did get LMDE back working on the machine. Instead I chose to reinstall from scratch using Linux Mint 11 LXDE. That went smoothly (and much quicker!) and the machine has been running trouble-free since. And I was smart enough to create an image of the install this time as a backup to slap back on the machine should he have any other problems. Everything will be right back to working state in just a few minutes.

In all fairness, Mint LMDE is new and “not for your average user”, so my having trouble is really not that unexpected. I’d hoped to be able to get it running and stable and then lock it down from any changes that would destabilize it, but that proved to be insufficient. I really do want to move to a Debian base to avoid the major reinstalls periodically required with Ubuntu-based systems (Debian systems have “rolling” upgrades which keep fresh without the need to reinstall) but I think that will be best attempted with my own desktop or netbook in the future. Best to keep the others I support on the more frequently traveled path.

One Year of Mobile Phone Service for ~$120, with New Phone!

Yes, I’m frugal. Not so much when I’m giving a gift to someone else, but otherwise I really like getting only what I need for what I want to pay or less. So I grew disenchanted with standard monthly mobile phone service some years ago, as I was paying a lot but needed little. I discovered the world of pre-paid cell phone service, and specifically that provided by Tracfone, and never looked back.

Getting married a short time ago, my wife and I have been slowly moving to align our similar services and subscriptions. I have been wearing a very low tech but extremely reliable Nokia 2600 “candy bar” style phone since 2007 which has had GSM phone service via Tracfone. I was spending $29 every three months for service and got signal just about everywhere I’ve gone, as it would roam on the AT&T, T-Mobile, etc. networks (all within plan). She had a LG clamshell phone on a shared Verizon plan that cost about that much per month for just her portion and was happy with their network coverage (no roaming). Her phone had recently started to fail mechanically and that was the kicker to finally get this particular part of our merger completed.

So off I went in search of a solution which included:

  1. New phones for the two of us (hopefully something fairly full featured and even capable of browsing the web on the few instances we’d have to do so “on the go”)
  2. Minimal monthly cost (ideally no more than what I was paying)
  3. Keeping our existing phone numbers
  4. Neither of us are big talkers or texters, so low usage constraints might be OK

Long story short I ended up going for a deal from the Home Shopping Network, of all places. We got two LG 500g GSM phones, each with a little over one year of Tracfone service, including 1320 minutes, for $120 per, shipped. Both included a phone case, car and home chargers and a future “Triple Minutes for Life” bonus – when we add airtime purchases in the future, the minute values will be tripled automatically. I had my prior service balance ported over to the new phone (for even more time and service minutes) and was able to transfer my phone number very simply as it was all within Tracfone’s systems.

For my wife, the phone number situation was a bit more tricky – she actually gives out her cell number fairly frequently, so keeping her number was very important. Because we were moving her from Verizon to Tracfone and might want to move to another carrier in the future (and have heard you can’t port out from Tracfone), I wanted to ensure we’d have the most flexibility. As a result, instead of a straight port, we activated her new phone with a new number altogether. Her old phone number will now be ported over to Google Voice (for a one-time fee of $20). By going with Google Voice, people dialing her old number can be forwarded automatically to her new phone just like they’d expect – but that number can also ring our home phone or any other number she may be at so we don’t need to use mobile minutes in those instances. And she’ll also get automatic transcriptions of voice mails and other bonus features. If keeping her old number didn’t matter, then GV and their features would be free – I can get the same with a new number from them.

So bottom line, we ended up with way better phones, great coverage and more features for significantly less money in aggregate — roughly $260 total for a year+ of service for the two of us. Nice!

By the way, we can both help each other if you decide to go with Tracfone! I can send you an invitation through their Refer-A-Friend program which will give you a $5 discount on your phone order and earn me a referral bonus. Just add a comment below on this post requesting the referral and I’ll send one to you as quickly as possible.

LG 500g
An example of our new cell phone

Reviving “Dead” NiMH Batteries

I prefer to use rechargeable batteries whenever possible. Recently I noticed that several of our AA cells were being reported as dead (“null” when inserted) by the charger. Some of them were rather new, so I was a bit miffed at the idea of them becoming unusable in such a short time.

I remembered a couple of colleagues in the lab at my former employer performing a trick to “revive” a dead NiCd battery pack — they charged a capacitor and then discharged it through the cell to blast away any dendrites that might have formed between the plates. Now these were NiMH, not NiCd, but I wondered whether there were any similar tricks to reawaken these.

It turns out the issue and solution are much simpler. The cells in question had depleted so far that they were below 0.9v, and the better chargers apparently view such cells as dead. There were all sorts of suggestions out there for hooking up larger batteries (or even arc welders!) to force the battery to a higher voltage that the charger would then view as “live”. I wondered about using one of the old style (a.k.a. “cook the battery”) chargers to boost the voltage instead (similar idea, but with much less risk), so I put the dead ones into the old charger I’d normally avoid – for just a 5 minute juicing.

That did the trick – the better (current sensing and limiting) chargers would now accept these cells and bring them back up to full charge without overheating them. This worked on all of the cells previously left for dead.

Monster Desktop Renewal with Linux Mint 11

I’ve been having a spot of trouble with my Mint 9 desktop machine recently, where something would lock up Gnome/X periodically. Somehow it seemed related to running OpenOffice and Firefox at the same time with something “video” happening. (Now, to be honest, I’d done my Mint 9 installation in a “messy” way — I was too lazy to reconfigure stuff, so I just reused my home directory leaving all the “dot” (configuration) files in place — so I probably caused the problem myself.)

After having it happen to me several times in one day, I decided this was the perfect excuse to upgrade my 5+ year old hardware to more recent stuff. My pals at NewEgg were great in setting me up with some new gear I could swap into my existing box:

  • AMD Phenom II x4 925: 4-core processor
  • Asus M4A78LT-M Motherboard
  • 8 GB G. SKILL Ripjaws DDR3-1600 Memory

I was able to re-use all my other existing stuff, so I was able to jump up to a monster but energy efficient system for less than Netbook dollars.

I ended up choosing Linux Mint 11 (the release candidate version) as my OS to install. The great thing about Mint is their Mint Backup tool. Not only will it allow you to do simple home directory backups, but it provides an easy mechanism to move to a new installation and preserve your installed software packages selection. Even across architectures (which is what I was doing, moving from a 32-bit install to 64-bit).

The installation proceeded in a pretty much painless way, and in a short while I ended up with a system that can do pretty much anything I need with all my old files and applications in place. All my old HW worked without issue. Mint 11 includes Firefox 4 and the internet screams on this thing. Hulu/Flash worked out of the box. Only problem was needing to install the Gnome Alsamixer to mute the sound card capture until the TV tuner was started.

I’ll be continuing to make a few tweaks and bring back some of the old dot files for my prior customizations, but it looks like the sailing is going to be smooth. Especially notable given that this is not a final release. Thanks Mint Team!

Update 6/15/11: Mint 11 is now released, and all the packages updated automatically for me from the RC versions. Everything is still working smoothly but for one issue: my new Cyber Power CP1500 AVR UPS is apparently not playing well with the system.

Periodically I get a notification that the UPS battery is low and the system automatically hibernates. The battery is not low, and the UPS knows it based upon what shows on its built-in display. I did not install Cyber Power’s linux software previously because it appeared that everything was already working out of the box (there was an added tab under the GNOME Power Settings for what actions to take while on UPS power). I’ve now installed their SW to see if it makes any difference. My quick work-around was to unplug the USB connection so the system can’t get a power low signal and therefore doesn’t hibernate, but I’d rather use the automatic shutdown capability properly. So far the shutdowns seem to have stopped so the SW seems to be working, will see if it does so from here forward. Their documentation is clearly by a non-native English speaker so it is a bit tricky to understand, FYI.

1-Wire/owfs on Seagate Dockstar under PlugApps Linux

This post is currently just a set of notes as I blaze the trail to get this working. Ignore for now, unless you like just reading random technical thoughts from someone puzzling their way through something they don’t know a lot about… I’ve started a true step-by-step description at the end below as I make my way through this for a second time. Hopefully this will be completed and cleaned up shortly.

PlugApps is based on Arch Linux, follows their start-up sequence – which is loosely based on BSD’s. The file /etc/rc.conf is where a lot of the main settings are made. Daemons are initiated based on an array entered at the bottom of that file. The daemons exist as bash scripts in the directory /etc/rc.d . Config files and similar stuff appear to be are normally set/stored in /etc/___. See here and here for the Arch info.

The owfs package now created for PlugApps includes the owfs core application/commands PLUS temploggerd but only creates the related option and template files for temploggerd. No similar files are created for the core owfs stuff. Currently have verified that owserver and owhttpd can be started with the applicable options from command line and those basically work.

Next steps:

  • figure out the option/config files for owserver, etc. under PlugApps based on prior work with NSLU2 (these were in /opt/etc/owfs there)
  • does my application require FUSE and the sensor array to be mounted as a file system? (A: YES, it is handy and by using owserver as a front end it does not cause a burden.) if not, skip owfs itself, otherwise script creation of /tmp/1wire and do related stuff to make the array available (A: will need to script this, it will be part of the rc.d script).
  • figure out temploggerd operation – can it be verified without web server access at start? (A: Yes, but web server is now set up)
  • determine what web server to use – thttpd? something light weight but secure! (A: Cherokee is available, installed easily and works well with little load on server. Plus is it has a GUI for admin!)
  • generate temploggerd templates (reclaim from NSLU2 installation?), or do I want to use another prettier graphing toolset like http://dygraphs.com/? (A: stay with temploggerd for now)
  • make the system survive a power outage -> install (what?) to NAND? or simply configure a static IP locked to MAC address on router and reboot from pogo OS if stuck?

Misc. Info:
From default installation of the owfs package on PlugApps:

[root@chicago /]# find . -name *emplog*
./usr/share/temploggerd
./usr/share/temploggerd/templates/README.temploggerd.templ
./usr/bin/temploggerd
./usr/lib/temploggerd
./usr/lib/temploggerd/temploggerd.conf.wrt54g
./usr/lib/temploggerd/temploggerd.conf.coldfire
./usr/lib/temploggerd/temploggerd.conf.default
./usr/lib/temploggerd/temploggerd.conf.ewrt54g
./usr/lib/temploggerd/temploggerd.conf.openwrt
[root@chicago /]# find . -name owfs*
./usr/include/owfs_config.h
./usr/share/man/man5/owfs.conf.5.gz
./usr/share/man/man5/owfs.5.gz
./usr/share/man/man1/owfs.1.gz
./usr/bin/owfs
./var/lib/pacman/sync/aur/owfs-2.8p7-1
./var/lib/pacman/local/owfs-2.8p7-1.2
./var/cache/pacman/pkg/owfs-2.8p7-1-any.pkg.tar.xz
./var/cache/pacman/pkg/owfs-2.8p7-1.2-any.pkg.tar.xz
[root@chicago /]# find . -name owft*
./usr/share/man/man1/owftpd.1.gz
./usr/bin/owftpd
[root@chicago /]# find . -name owht*
./usr/share/man/man1/owhttpd.1.gz
./usr/bin/owhttpd
[root@chicago /]# find . -name owse*
./usr/share/man/man1/owserver.1.gz
./usr/bin/owserver
[root@chicago /]#

How to Install PlugApps Linux on a Seagate Dockstar and Enable owfs and temploggerd

  1. Obtain ssh access for your Dockstar
  2. Perform basic installation of PlugApps
  3. Update pacman itself:

  4. [root@Plugbox ~]# pacman -Syu
    :: Synchronizing package databases...
    core 35.5K 172.4K/s 00:00:00 [######################] 100%
    extra 382.1K 457.7K/s 00:00:01 [######################] 100%
    community 371.6K 489.2K/s 00:00:01 [######################] 100%
    aur 5.9K 146.4K/s 00:00:00 [######################] 100%
    :: The following packages should be upgraded first :
    pacman
    :: Do you want to cancel the current operation
    :: and upgrade these packages now? [Y/n] Y
    resolving dependencies...
    looking for inter-conflicts...
    Targets (1): pacman-3.5.1-1.2
    Total Download Size: 0.79 MB
    Total Installed Size: 2.72 MB
    Proceed with installation? [Y/n] Y
    :: Retrieving packages from core...
    pacman-3.5.1-1.2-arm 804.7K 583.5K/s 00:00:01 [######################] 100%
    checking package integrity...
    (1/1) checking for file conflicts [######################] 100%
    (1/1) upgrading pacman [######################] 100%
    >>> The pacman database format has changed as of pacman 3.5.0.
    >>> You will need to run `pacman-db-upgrade` as root.
    >>>
    !!!!!! SERIOUSLY! Run pacman-db-upgrade or PACMAN WILL NOT WORK! !!!!!!
    [root@Plugbox ~]# pacman-db-upgrade
    ==> Pre-3.5 database format detected - upgrading...
    ==> Done.

  5. The Dockstar does not have a hardware clock, so it will always be off at start up unless you take action to fix that. The easiest way is to set up a network time protocol client. Install openntpd (automatic time sync client) and start it before the password change below, to avoid lockout due to password aging (30+ years will seem to have passed between the default date in 1970 and now).
  6. Change ssh login password for security (optional: install ssh public key in ~/.ssh/authorized_keys for more security [+ disable password authentication in /etc/sshd_config for even more security & to avoid having to type in your (long, strong) password])
  7. Install ddclient if you are going to want to access the machine over the internet with a DHCP address.

Now that we have the Dockstar basically set up and functioning under PlugApps, we can move on to the 1-Wire and owfs related items. (more to come…)
[root@chicago ~]# owserver -F -s 4304 -d /dev/ttyUSB0
[root@chicago ~]# owhttpd -F --readonly -s 4304 -p 3001
[root@chicago ~]# mkdir /tmp/1wire
[root@chicago ~]# owfs -F -s 4304 /tmp/1wire
[root@chicago ~]# ls /tmp/1wire

Post-install: disable telnet under pogoplug os, in case of PlugApps reboot failure (provide details here – did enabling ssh via pogoplug portal already do this?)

A Frugal Shopper’s Bonus: Ebates

One of the earliest sites I joined on the internet was this one, way back in 2002 – wow, 2002! Seems like things have changed so much, so quickly!

OK, back to the real point of this post. I’m frugal, I admit it. When I buy something significant, like a new car or computer, I research them and strive to find the best one and to get the best price. So when I’m done, it annoys me if I find out later I missed an obvious chance to save more. When buying stuff on-line, Ebates is frequently that chance.

Ebates is a referral/rebate system for on-line shopping. They have selected partners that will give you cash back – in most cases on top of any other coupon or deal – for items you purchase after going through the Ebates site to get there. You get the cash back as a total accumulated through Ebates, paid quarterly. Their partners are ones you likely already are looking at, you just don’t know otherwise about the rebates! Examples of their 1200+ store partners are HP, Dell, Godiva, JC Penney, Sears, Macy’s, LL Bean, etc., including my favorite computer/electronics store: NewEgg.

Generally, the only thing you have to do is remember to visit Ebates first, then follow the link from their site to the place you’d otherwise shop already! After that, it is all automatic (in a few cases, you need to enter a discount code or similar). Generally, you get 1-6% cash back, but I’ve also seen ones as high as 15% or fixed dollar amounts like $60. For stuff you were already going to buy.

So now you know why I kick myself if I forget about using Ebates. Don’t kick yourself – join and start saving now. If you follow my link here to sign up, I’ll possibly get a small reward for referring you and you’ll still get the same great deals – so please click below to join for yourself (and me). And remember to use them afterwards!

Great Customer Service Sells!

I’m a firm believer in being an assertive customer when a product does not live up to your expectations. Great companies know how to handle that and turn your relationship with them to an asset.

Just concluded one such experience with Richard Green at TofuXPress. My wife had purchased one of their devices for me after seeing the Rube Goldberg method I had previously used for pressing the moisture out of tofu in preparation for frying. They make a device that does this neatly, without the stacks of plates and various heavy items from the kitchen that I’d used before. My only problem was that a tab on it broke, very quickly after I’d received it. I put the broken piece aside with the intention of following up, but of course life intervened and I didn’t get around to finding the box to get the contact information until after the warranty was up.

So I tried contacting them, told my story, and offered design change suggestions to address what I’d seen. Richard, their Operations Manager, responded nicely and a conversation continued from there. Long story short, they made an out-of-warranty exception and sent me not only that part, but also two others that mated with it. The new part had a design change just like what I had suggested. Now I have nothing but appreciation for them and we have drier tofu again without the gymnastics!

I highly recommend tofuXpress.com.

pyRenamer Rules!

Just a quick shout out to the creator of pyRenamer — a supremely useful renaming tool written in Python, which installs with a quick sudo apt-get install pyrenamer on Ubuntu Linux (but is also available for OS X & Windows).

I love your tool.

I do a lot of computer work that involves managing files. For example, financial statements or other “store it away” sorts of files you download from a company. For some reason, the default file name of these downloads is almost always something either unusable (every file named the same!) or silly (“statement 27 July 11.pdf” – why does nobody responsible for these things name them a much more logical pattern like “statement_2011-07-11.pdf”? Well, almost nobody – Discover Card actually does – thanks, random IT person!). As a result, I’m always having to rename stuff I’m going to save, so I can see my statements in order when I look in the directory.

With pyRenamer, I have a simple yet powerful GUI tool to get this done on large numbers of files at one time. I can do it based on patterns in the file name, so I can bulk rename all those statement files for last year to be sortable in no time. It will even rename image or music files based on their tags data! It works very quickly and lets you preview what you’re about to do, before you cause any harm to your prior stuff. This is one of my go-to applications for getting stuff done.

Put simply, nice work!

BTW, if you use pyRenamer, you may not know that it will support other regexp qualifiers in the “Patterns” tab other than what appears in the tooltips! For instance, you can enter ^{#}.pdf as a pattern to work with just the pdf files that start with a number. Omitting the carat (^) is default and will get any pdf file that contains a number, which may be what you want, or not…

Another rung on the Windows-freedom ladder: gLabels

As you might have gathered from other posts on this blog, I’m an open source fan with a liking for Linux. I’ve used UNIX, VAX, MS Windows of all flavors, OS X, etc. but have come to prefer Linux (currently Mint 9 and Ubuntu 10.10). There are just a few applications which have tethered me to the need to keep a Windows machine (virtual machine in my case) around.

These applications are:
Quicken
TurboTax/HR Block at Home
GoToWebinar
Avery Labelmaker/ID Automation Barcode Labeling

Today I discovered an excellent open source replacement for that last entry, gLabels. This Linux application is very actively maintained and was just a free Synaptic download away. In under 15 minutes I’d downloaded the app and used it to create the Christmas card address list labels for next year. It was intuitive and worked great!

Just three more apps to go…

Fun with 1-Wire Devices in Linux using Digitemp and owfs

I’m currently working on a Christmas present for my new in-laws.

The goal is to be able to remotely monitor the temperature and humidity at another location over the internet. I want to do this at a reasonably low cost, using very little power and not taking up a lot of space in the target location.

To meet these goals, I’ve designed a solution using Dallas/Maxim 1-Wire devices. These are low cost sensors that interface using a very simple parallel bus, wired (with, despite the name, 2-3 wires) over either a standard cat-5 ethernet cable or RJ-11/RJ-12 style cable. I’m going to drive them using a small embedded Linux system for silent and low power operation.

The sensors and adapters arrived a couple of days ago. I had other projects under way, so playing with them had to wait until today. I’m posting the following because the adapter I’m using is relatively little known, meaning that almost everything I could find for software usage examples did not cover this adapter. After several hours, I have now found the secret sauce and I’m going to pass along the recipe to you (and me, in case I forget!).

Here’s the parts I’m using:

  • Linksys NSLU-2 Network Storage Link, hacked to run Unslung 6.8 (a modification of the original embedded Linux provided by Cisco on this unit, which allows running many other SW packages)
  • iButtonLink LinkUSB-SD 1-Wire Bus Adapter
  • iButtonLink T-Sense-SD Temperature Sensor
  • and, eventually, a AAG TAI-8540 humidity sensor

I’d planned to use a DS-9490R adapter, which is very well documented for SW use, but was finding them sold out wherever I looked. Same deal for the TAI-8540 (but we could always add the humidity sensor later). Looking for alternatives so the gift would be available on time got me to iButtonLink. Their LinkUSB series are supposed to be superior performing masters, and they were available.

My first task was to determine and get the required software installed. My original desire was to use the oww (1-Wire Weather) package, which was developed to work with a dedicated hobbyist weather station product that Dallas once had available. It has since expanded to support other standalone sensors and is available in the Unslung ipkg feed, so it can be installed and used without needing to be compiled. It has a bunch of great features, including the ability to upload/push data to a server for viewing, so no firewall and DNS shenanigans would be involved. This all would be great, but I’ve not yet been able to get it to work with the LinkUSB adapter. So searching on… I landed on two other packages: owfs (1-wire file system) and DigiTemp. Again, both of these are available as native ipkg feeds for Unslung (the selection is impressive).

OWFS

I tried owfs first, as there were many on-line comments about DigiTemp being limited to temperature measurement only, and I knew we wanted to do humidity too. I installed the software according to the instructions on the owfs site. Here is what I did, running as root:

ipkg update
ipkg install owfs
ipkg install owshell owcapi

This automatically installed the start-up scripts too, so owfs would be there after a reboot. Unfortunately, the parameters it used were not compatible with this adapter and no sensors showed when viewing the resulting summary page via http://192.168.15.77:3001/ . I also found the output on that web page to be very confusing at first glance and not made plain on their site, so I couldn’t figure out why I wasn’t seeing any sensors and temps. I poked around using lsusb, etc. but couldn’t find the 1-wire file system entries that were supposedly created by this package. After a frustrating period, I punted and moved on to DigiTemp. But I’d be back later… mere SW can’t beat my persistence!

DigiTemp

DigiTemp is a package designed to do just what it sounds like, grab temperatures from digital devices. In this case, 1-Wire sensors. Some people have gone all out with it. We had more modest goals, and it turns out that the humidity sensor I wanted to use is actually supported under DigiTemp with a serial (not USB) adapter. There might be hope yet…

So I install DigiTemp following instructions on the NSLU2-Linux site, but run into the problem with using a non-DS9490-R adapter once more (all examples were for that one). It turns out there is no single actual digitemp command, but rather a different one based on each adapter type, and mine isn’t listed as one of them. Out of frustration, I decide to try all of them. Amazingly, the last one works! I can see devices!

# digitemp_DS9097U -w -s /dev/ttyUSB0
DigiTemp v3.5.0 Copyright 1996-2007 by Brian C. Lane
GNU Public License v2.0 - http://www.digitemp.com
Turning off all DS2409 Couplers
..
Devices on the Main LAN
280097A702000098 : DS18B20 Temperature Sensor
28848BD50200005C : DS18B20 Temperature Sensor

So here’s my commands to install, configure and use DigiTemp with the LinkUSB adapter:

# digitemp_DS9097U -i -c /etc/digitemp.conf -s /dev/ttyUSB0
DigiTemp v3.5.0 Copyright 1996-2007 by Brian C. Lane
GNU Public License v2.0 - http://www.digitemp.com
Turning off all DS2409 Couplers
..
Searching the 1-Wire LAN
280097A702000098 : DS18B20 Temperature Sensor
28848BD50200005C : DS18B20 Temperature Sensor
ROM #0 : 280097A702000098
ROM #1 : 28848BD50200005C
Wrote /etc/digitemp.conf
# digitemp_DS9097U -q -c /etc/digitemp.conf -a
Dec 03 18:55:38 Sensor 0 C: 19.50 F: 67.10
Dec 03 18:55:39 Sensor 1 C: 21.19 F: 70.14

Yay, we see sensors and actual temperatures! It works. Now from this, I get some clues that I think might help with owfs. So back to crack that nut.

OWFS Redux

From the above, I know I have a device that looks like a DS9097U to software, and it appears to be seen on /dev/ttyUSB0. Armed with this, I poke around owfs and force it to use other settings than the default start-up scripts supply. This means killing all owftpd, owhttpd and owfs processes (via ps -ef and kill -9). I then restart them using /dev/ttyUSB0:

owfs -F -d /dev/ttyUSB0 -m /tmp/1wire
owhttpd -F -p 3001 -d /dev/ttyUSB0
etc.

Note: I’d actually installed a second adapter and sensor in-between activities here, so I modified those commands to add the ttyUSB1 as well (you will see those in the output below). And finally I see something in the /tmp/1wire directory!

# ls
28.0097A7020000 28.75BAA7020000 28.848BD5020000 alarm bus.0 bus.1 settings simultaneous statistics structure system uncached

You can then get some data from a sensor by treating it as a normal text file under Linux, e.g.:

# cat 28.75BAA7020000/temperature
65.525
#

And when I look at the web interface, I can finally browse these devices as well!

Other Magic

There is one other thing I did a couple of times along the way, but I can’t now remember in what exact order I did it for the last time. This may or may not impact the above for you. I got the clue from this oww page. In there is a bunch of info on using the NSLU-2 with oww, which of course includes that more standard adapter but listed other possibilities. From that, I installed the kernel modules that I thought applied to the LinkUSB:

ipkg install kernel-module-usbserial
ipkg install kernel-module-ftdi-sio
.

After doing so, I then had to load those modules:
insmod usbserial
insmod ftdi_sio
(note the underscore instead of dash here, tricky!).

After this, the NSLU-2 reported via dmesg seeing the LinkUSB adapters (which are connected via a USB hub):

hub.c: new USB device 00:01.0-1, assigned address 3
Device descriptor:8 bytes received.
Device descriptor:18 bytes received.
hub.c: USB hub found
hub.c: 4 ports detected
hub.c: new USB device 00:01.0-1.1, assigned address 4
Device descriptor:8 bytes received.
Device descriptor:18 bytes received.
usbserial.c: FTDI FT232BM Compatible converter detected
usbserial.c: FTDI FT232BM Compatible converter now attached to ttyUSB0 (or usb/tts/0 for devfs)
hub.c: new USB device 00:01.0-1.3, assigned address 5
Device descriptor:8 bytes received.
Device descriptor:18 bytes received.
usbserial.c: FTDI FT232BM Compatible converter detected
usbserial.c: FTDI FT232BM Compatible converter now attached to ttyUSB1 (or usb/tts/1 for devfs)
hub.c: new USB device 00:01.0-1.4, assigned address 6

So this was most likely required for DigiTemp (and/or owfs) to see these devices on ttyUSBn. I will verify this later when I have more time to set up the rest of this project, meaning to: collect the sensor output, create pretty information from it and make it available for remote access.

Off to dinner, but more to come!

CSV File Import to Quicken 2007

Tonight I was spending some time catching up on many (more than I care to mention) months’ worth of finances. A couple of accounts had significant transactions which needed entry into Quicken. Due to Intuit having disabled direct connection with my financial institution (because they want me to buy something newer than what I’d already paid them for), I was stuck with the prospect of having to enter many things by hand. Ugh!

Well, a bit of googling later, I came upon http://xl2qif.chez-alice.fr/calc2qif_en.php . This is an OpenOffice.org spreadsheet macro to convert csv data to QIF format. Unfortunately, Quicken 2007 will not support QIF import to bank accounts (yet another planned “feature” vs. it working successfully in a prior version) but there is a workaround… you can simply import the QIF into a “cash” account and then cut and paste the transactions over to the correct account from there.

It worked almost perfectly. I downloaded the csv files from my financial institution, opened them in OO Calc and then applied the macro to map and save the selected data to QIF for import into Quicken. The only issue was that I could not get the amounts of the transactions to import for some reason. In all fairness, it is late and I didn’t spend much time trying — it was much easier to just type the figures by hand into the otherwise complete entries. Way better than doing it all by hand!

This may be the final shove to move me to an open source finance program. Intuit’s business model of breaking SW features I’ve already paid for is problematic. This, coupled with the complete uselessness in the past few years of the Quicken to TurboTax import, takes the cake. I guess they can’t compete on new features alone? I would routinely and willingly pay for updates before, when features got better. But now that MS Money is dead as competition, I don’t expect things with them to get any better soon.

Adobe Acrobat Connect Pro with Firefox on Linux

I’m a PMI-certified Project Management Professional. As part of my PMI membership, I have access to Communities of Practice (CoP). Among these, I participate in the Innovation and New Product Development CoP.

We had a webinar today on Design for Innovation in Manufacturing that planned to use an uncommon package, Adobe Acrobat Connect Pro (vs. Go to Meeting or WebEx, etc.) for the meeting. So I tried the typical “test your system’s connection” page with my primary Linux desktop and I get the result that everything else is OK, but fail the “Acrobat Connect add-in test”. The suggested solution is to install the add-in. But of course, none is available for Linux.

So off to my Windows XP virtual machine which I keep for these sorts of situations, and I go through the gymnastics of installing the add-on in Windows and participate in the webinar.

Afterwards, I’m struggling with finding a way to download the presentation slides (which it turns out is impossible – they have to be viewed through another “Adobe Presents” thing and can’t be saved from there). As part of this process, I tried to see whether the slides link would perform differently under Linux.

It doesn’t — it opened the presentation slides right there in FF on Linux as if I was on Windows. OK, that’s interesting. So I try the original webinar URL in Linux, and darn if that doesn’t work the same as well.

So, bottom line:

  • No Adobe Acrobat Connect Pro add-in appears to be required — so why do they make you download it on Windows/Mac?
  • Adobe Acrobat Connect Pro and Adobe Presents works fine on my relatively recent Linux box with Firefox – one less reason to head over to the virtual Windows world.

Update May 2011: Sadly, the above is no longer the case. It appears that Adobe changed something in their Connect Pro application which now makes it unworkable with Linux out of the box. It now requires a higher level of Flash than before, so neither my existing machine nor my new Ubuntu 11.04/Mint 11 release which has that Flash revision will work. The application loads but cannot connect to the meeting room server. They apparently also now have added a download for installing their add-in on Linux (reported to be for hosting meetings), which I have not tried, but others report having no success with that either on the Adobe forums. Note however, that the Adobe Presents application still works (for now, at least).

Update December 2011: I was again able to connect to a PMI webinar via Adobe Connect today on my Linux Mint 11 x64 box, using Firefox 8 and Flash 10.3.162.29 (current Mint default installed versions). The connection process seemed to hang several times in the browser (a prolonged “Waiting for…” in the status bar). In parallel I had connected to the meeting using my Windows XP virtual machine, so I knew it was in process. So I stopped the page load in Mint and then reloaded it, which moved things along. I had to do this a couple of times but was then able to join successfully to get both the audio and meeting materials.

Accessline TeleDesk/iControl on Linux

While I was a remote worker for Sun Microsystems, Accessline was the chosen solution for integrating us into the corporate telephone systems. This employer was a major UNIX supplier and user, so they ensured there was a version of AccessLine’s TeleDesk/iControl application (which I’ll call TDiC hereafter – this controlled the service and provided incoming call notifications) created for their UNIX version, Solaris.

As this is a Java application and Linux is a close cousin of UNIX, I figured I could get this version working on my Linux box, which proved true (on several versions of Ubuntu and its derivatives). But there was a little magic required to do so (much less so in the latest version, thankfully). In case you are an AccessLine user looking for a Linux solution, you should be able to make it work for you too by following these steps. The below examples are on a Linux Mint 9 (derivative of Ubuntu 10.04) box, and assumes you have the appropriate Java installed.

Get the software

My former employer was acquired in 2010 and the combined firm has since ceased contracting the AccessLine service. However, as of today, the link to download the UNIX version is still available here. Download this file and save it to your home directory – the following instructions will expect that location, so if you do otherwise, you’ll need to adjust accordingly.

The downloaded file is a script for installing the software.

Run the Installation Script

I set executable permission and tried both double clicking and clicking right on the TeleDesk2.3-010.sh file in Nautilus to execute/run the script, without success (it would offer to open it in Gedit/Text Editor and would then complain about character encoding, but not offer to run). So the easiest way around this was to execute the following command in a terminal window:

sh ~/TeleDesk2.3-010.sh

This starts the installation. You have two places to make decisions or answer questions:

Installation for AccessLine TeleDesk 2.3-010-1
Copyright (c) 2002-2009 AccessLine Communications Corporation, Bellevue, WA (USA)
Java found in PATH environment.
Enter the install directory for TeleDesk.
[default (return) /home/username/AccessLine/TeleDesk]:

I was perfectly happy with the default, so I hit enter/return here and installation continued.

Creating /home/username/AccessLine/TeleDesk ...
Installing in /home/username/AccessLine/TeleDesk ...
Uncompressing installation package using 'gzip -d '...
Extracting installation package...
Update PATH in your shell's profile? [yes or no]

The answer to this determines whether you will need to specify the full path to the TDiC application when you want to run it. If yes, then the path will be added to your defaults and you can start TDiC by simply typing TeleDesk at any terminal prompt.

Update PATH in your shell's profile? [yes or no] yes
/home/username/.profile modified
Installation of TeleDesk complete.

Opening the Application

Once installed, start the application:
username@system:~$ TeleDesk
which will open a window:

You can then enter your applicable information and configure the selected sounds for alerts, etc. through clicking the SETUP icon. This will open another window:

From here forward, it works like it is documented on the AccessLine site for other platforms. The one problem is you’ll need to open a terminal and type that command each time you want to run it, which is inconvenient. No problem, we can fix that by creating a Launcher.

Adding a Launcher under the Applications Menu
You’ll want to have a nice image for your launcher, so you could use this one: . Save it as AccessLine.png in the same AccessLine subdirectory under your home as above.

For a GNOME desktop, you can add a launcher to the Applications menu by clicking on System => Preferences => Main Menu.


Here we select the Office section and click on New Item. Make the entries in the new window look like below.

To add the nice icon to the launcher, click on the launcher (platform on a spring) icon to open the Choose an icon dialog, and pick that image file you downloaded:


and then click Open to set it as the image. Click OK on the Create Launcher window. You can now launch TeleDesk from the main menu:

Adding a Launcher to a GNOME Panel

Two ways to do this. If you didn’t add the launcher to the main menu as above, then you can click right on an open space on a panel and select Add to Panel...

then select Custom Application Launcher and Add, which will continue just like the main menu approach above to create the launcher.

But if you did add TeleDesk to the main menu, then the easiest way to create the panel launcher is to simply drag the TeleDesk icon from the main menu to where you want it on the panel. It will be added there automagically.

Now you can enjoy having TeleDesk on your Linux box!

Contra Dance Calling Log

Update 1/1/2019: This post is no longer maintained and now well out of date as I’ve been calling and leading dancing regularly for over a decade now. I lead contra dances at regular series about New England and also in several other states. I also do special events/festivals and private Barn Dance events for schools, scouting groups, churches, social groups, etc. Please see my calling page for more information.


Continue reading Contra Dance Calling Log

Linux Tweaks & Programs Selections

This is mostly a list for my own use, but I hope you may find utility in it as well. I’m currently running Linux Mint 9 on my desktop (with Windows in a VM) and Eeebuntu 3 plus Win XP, dual boot, on my netbook.

This post will be updated over time, and some form of organization may appear. 😉


  • Change default google search in Firefox on Mint: Mint uses a google custom search engine to fund their work on the distro. Unfortunately, they change the search results, such that it is unusable in my opinion. “Mint searches” may return nothing while the same terms on the google homepage bring results. To fix, click the down arrow next to the search box in FF and select “Manage Search Engines”. Search for a normal google one (I used the ssh version) and set that as default. Now send Mint a small donation, to offset the revenue that they’ve lost.
  • pdf-shuffler: allows pdf files manipulation: add/remove and rearrange pages
  • pdftk (and pdftk-gui): another set of pdf tools, best for command line use, like removing the useless pages from bank and credit card statements automatically. pdf-shuffler now does most pdf things easier on a one-off basis.
  • gpicview: very fast image browser – does a great job as a photos viewer when resources are tight or files are large/high res. Unfortunately, no auto slide show capability.
  • Kiosk use: the x screen saver can play videos. This could be used for a NEFFA kiosk, by using a video to entice people to complete the festival survey and automatically stop playing, once they hit a key, to let them do so.
  • gscan2pdf: a great tool to create efficient/small pdf files from optically scanned pages. It also outputs to other formats and enables Optical Character Recognition (OCR) as well.
  • GoogSysTray: a nice all-in-one cross-platform notifier for google services like calendar, mail, voice, etc. Makes sure you know about new appointments, mails, etc. without having to have your browser running.

Disk Partition Cloning with Live Linux Tools

This post is currently more of an in-process note to myself to remember stuff I had to just rediscover. Last time I did this I was going from Ubuntu 6.06 x86 to 8.04 x64. Should it help you too, all the better! (And yes, this will work on Windows files just as well, I used it when moving from XP to Linux originally.)

  • Use live Linux CD to boot system (this time, used an old 5.x series Knoppix CD I had already — the latest Knoppix 6.2.1 seems to have changed dramatically and did not leave me feeling familiar enough to recreate what I’d done the last time, x years ago)
  • Make sure disc partitions to be imaged aren’t mounted to prevent activity changing contents. With this version of Knoppix it was easy, with the disk icons showing on the desktop
  • Use df -h to confirm what is mounted where. I had originally tried doing all this with the SystemRescueCD v0.2.19 but I must have been doing something wrong with mounting the partitions, which I was able to do correctly here
  • Use sudo to mount /media/sdc3 partition (the target destination on removable USB disk) as root, then sudo partimage to start the PartitionImage tool

PartImage’s use is pretty straightforward, but need to be sure to specify the entire path to the image file! Eg: /mount/sdc3/IMAGE-FILE-BASE-NAME . Pretty much all the rest was intuitive and just using the defaults, which produces image files in appx. 2GB image chunks (so a further backup to DVDs for offsite storage would have 2 or 4 of them per single or double layer disk, respectively).

Don’t walk away until you have confirmed the result of the disk check, or it will just wait for you and do nothing more!

Backing up the entire appx. 4GB Ubuntu 8.04 system file set took just 1-2 minutes to create the resulting compressed 1.4GB IMAGE-FILE-BASE-NAME.gz.000 file. Doing the same for the appx. 40GB of /home directories of the same installation is predicted by PartImage to take about 1.5 hours and is well underway. Given it is currently at 37% completion and the image files are now about 14GB, there is likely to be much less compression benefit for these files. This makes sense, as much of the content is already compressed music, photo and video files.

This is a great free (in all meanings) tool set. Once done, I will have great confidence that installing a fresh Linux Mint 9 or Ubuntu 10.04 on my main desktop will be without serious risk to recovery of my precious prior work.

Free PDUs for Project Management Professionals (PMPs)

I’ve been a certified project management professional (PMP) with the Project Management Institute for several years now. As part of that comes the need for gaining 60 Professional Development Units (PDUs) in each three-year Continuing Certification Requirements (CCR) cycle.

This may sound like a daunting amount, but you can achieve a great portion of this for work you are already doing by practicing in the field and by performing volunteer PM duties for non-profits, etc. Besides these real world activities, completing training or studies related to the field of project management is the next natural way to pursue PDUs, but there are many others ( full details re: theCCRs are available at the PMI site).

The good news is that there are excellent resources out there for training and study which are totally free. This post is my personal list of some of those resources — please feel free to comment with additional ones and I will add them to the list.


PMCentersUSA Complimentary Webinars – Earn 0.5 PDUs/per.
Presented over lunch hour Eastern/US time – lunch and learn! They are not a PMI REP (IIRC), so these need to be filed under another category.
http://pmcentersusa.com/KnowledgeCenter/LiveWebinarsSchedule.aspx

They also have some on-demand free offerings:
http://pmcentersusa.com/KnowledgeCenter/WebinarsonDemand.aspx

IAG Consulting Complimentary Webinars – Earn 1.0 PDUs/per.
Presented over lunch hour Mountain/US time. Mostly on requirements capture and management, their specialty. They are a PMI REP, so these are all cat 3.
http://www.iag.biz/resources/webinar-events/

They also offer on-demand webcasts:
http://www.iag.biz/resources/webinars/on-demand-webinars.html

ESI International is another source, and is a PMI REP.
Free live sessions presented over lunch hour Mountain/US time.

Live events: http://www.esi-intl.com/en/Resources/Events.aspx
On-demand: http://www.esi-intl.com/en/Resources/Webinars-on-Demand.aspx

They also present IMPACT 2010, a day-long yearly virtual event, coming up September 29th. http://request.esi-intl.com/content/IMPACT_2010

Gantthead.com runs a yearly live “virtual conference” called PMXPO.
This is another day long live event which is also now available as recorded sessions. They are a PMI REP, so these are all cat 3.

You have to register on their site to access the resources, but there’s a free level of membership. They also offer lots of other free content of interest to PMs.

Update 3 Sep. 2010: Through a posting on a LinkedIn PMP group today, there was a link to this Examiner article which detailed the following additional resources (nice!):

1) Earn 30 PDUs in Category 2:

a. Category 2 –SDL: Self-Directed Learning:

* 15 PDUs – Visit http://pm411.org/ and start listening to their free podcasts. 60 minutes of listening qualifies for 1 PDU you can claim. Remember you can claim up to 15 PDUs from this type per each 3-year cycle. Keep a record of what you heard as PMI.org may audit your claims.

b. Category 2 H: Practitioner of project and/or program management services:

* 15 PDUs per 3-year cycle. Did you work as a Project Manager for more than 1,500 project hours during the past 3 calendar years? If so, you can claim these and it costs you nothing.

2) Earn 85 PDUs (yes, you can transfer up to 20 PDUs towards your next 3-year cycle) under Category 3 – PMI Registered Education Providers. And yes, these are all free:

a. 26 PDUs – Visit the International Institute of Learning’s web site. It has a number of podcasts and webinars for free:

* 2 PDUs – Hear Dr. Harold Kerzner’s 8 Modules Podcasts series on PM’s Best Practices, Executive and Line Managers in Project Management and the PMO. These qualify for 2 PDUs.
* 20 PDUs when you register to take over 20 Webinars offered by the institute, each worth 1 PDU

b. 24 PDUs – Visit Solution’s Cube Group site and register for two FREE live webinars offered each month, worth 1PDU each.

c. 18 PDUs – Visit IBM’s Rational Project and Portfolio Management certification training e-kit site. There are four free interactive training courses each worth 4 PDUs and one free course worth 2 PDUs.

d. 5 PDUs – Visit Provedia Learning Inc’s site and take the free course on Rescuing Troubled Projects worth 5 PDUs .

3) Earn 12 PDUs under Category 4 – Other Program Provider:

a. 12 PDUs – Visit Rita Mulcahy’s RMC Project Management, Inc site. It offers 12 free pre-recorded webinars per calendar year each worth 1 PDU.

Did you know that Categories 3 and 4 have no maximum on how many PDUs you can claim? So go ahead, listen and claim. And keep in mind, not only are you going to learn a lot by taking these PDUs, but you can return to many of these sites each cycle and earn your PDU requirements again for free. Good luck and share this knowledge with your fellow PMP-ers.

Update January 2014: I’ve noticed several recent comments posted which are straying from the Free PDU topic and show evidence of being posted by paid commenters. I am marking these comments as SPAM, which feeds back to a central registry of comment SPAMmers – so don’t bother commenting unless you’re just a plain old interested human being!

Debut of the all new ConcordScoutHouse.org

Tonight I finished initial delivery of a large project I’ve had going with the Concord Scout House, Inc. (CSH). I was approached to do some web work with them as a result of what I’d previously done with MondayContras.com.

This project has been going on, to some degree, since January of 2010 (non-profits work seems to go in fits and starts). CSH is a group whose prior web site was showing its age. Users and other constituents were frustrated that information on the site was old and inaccurate, but there was no easy way to update the content via the folks then involved. The site was running on an infrastructure that was out of proportion to the group’s needs (but had been provided at no cost), and was too complicated for them to manage themselves.

The solution I composed included using a very simple yet powerful GPL’d Content Management Sysytem (CMS) which their non-technical content managers could use to maintain the public-facing site. At the same time, I secured them a non-profit (aka Education) account for using the Google Apps platform and integrated that with their web presence as a backend suite. The end result meets their current needs and will scale into the future easily. Should I be hit by a truck, the technologies involved are much more mainstream and should be able to be picked up by someone else with the right skills.

And the best part? It will cost them well under $50/year to operate — web, email, calendar, docs: everything. Yep, less than fifty bucks.

I can’t wait to see what CSH do with it, now that the modern tools are in their hands! You can check it out here: http://concordscouthouse.org .

Train Firefox mailto: to use Google Apps

Update 5/10/13: With Firefox 20 the method below of using a javascript entry to add the external mail resource apparently did not work on Linux Mint LMDE. Instead, I found it necessary to manually edit the mimetypes.rdf file in the user’s profile folder to add the resource. See my later post Train Firefox mailto: to use Google Apps – Take 2 for details on this method.

This post’s text is lifted very closely from a similar one (which appears to have been similarly lifted from others going back to a Lifehacker article). Why repost? To make note of what actually worked for me (to remind myself later, when upgrading requires it again) and to hopefully inform you. I used the correct wordpress tagging to make sure the commands and javascript come through correctly here (without WP mangling the quotes), so all copy & pastes will actually work.

In your browser address (URL) bar, type: About:config

Answer “yes” to “you will be careful”

In the filter bar on the screen type (or copy and paste): gecko.handlerService.allowRegisterFromDifferentHost

This will bring up the specific entry. Double click on the line to change the value from “false” to “true

Do the same as the above, in the filter bar, for: network.protocol-handler.external.mailto, toggling it from “true” to “false“.

Go back to the browser address (URL) bar and copy and paste the string below. Be sure to change “veino.com” to your actual domain name and the label at the end similarly:

javascript:window.navigator.registerProtocolHandler("mailto","https://mail.google.com/a/veino.com/mail/?extsrc=mailto&url=%s","V.C at Google Apps")

Hit return and a message line above the page should appear (like for pop-up blocking messages) in the browser asking if you want to add this application to your mail. Click on “yes”.

Go to Firefox Edit > Preferences > Applications (using Linux FF – for Windows it is under Tools > Options > Applications), and select your new Google Apps entry as your default mailto: handler.

Return to about:config in the address (URL) bar and reset the values for the two variables to their original default values by repeating what you did before, reversing the toggling of values.

Close and restart Firefox, log in to your Google apps account and then try clicking on a mailto: link on any other web page. You should get a compose mail window loading, using your Google apps account. Yay!

Previously, I’d figured out how to have it open a new window to compose your message – but I can’t figure it out right now. Will update this post, if I remember how I did that.

Gmail’s Undocumented Filters

I use gmail to host my domain’s mail accounts. Mostly this has been a pure joy, particularly as it means I don’t have to pay for the storage space on my hosting account any more.

One thing, however, has been a continuing annoyance: Gmail is weaker on filtering on emails in a comprehensive way (at least vs. the the extent I could via cpanel). In particular, you can’t do “any header contains” filtering, and wildcards aren’t really supported. As a result, some known things I could filter for and send straight to trash ended up going into my spam folder.

In general gmail does spam filtering well, but because of the fact I had a domain back in the very early public internet days (so get a lot of spam to old and made up addresses) and the way I manage email addresses, it sometimes puts stuff there it shouldn’t. So I have to keep reviewing the spam folder — hence my frustration with the lack of “any header” filtering. Otherwise I could knock off all known spam (incoming at a rate of thousands of messages a day) straight to trash and that would only leave the new stuff to review in the spam folder.

Well, today I discovered that there are several undocumented filters available in gmail. Among these is a “DeliveredTo:” filter. So, let’s say you’re getting mail in your account that appears to be actually sent to “izucocomas6250@com.ar” (yes, a real spam message had this) – but it is showing up in your own account with you not listed. Most likely you are being Bcc’d on the mail. You can see this if you do a “Show Original” mail, and there will be a “Delivered-To: youremailaddress@yourdomain.tld” right at the top. Gmail normally lets you filter on From: and To: and “Has the words”, etc., from within the filter dialog. But none of these apply in this situation — luckily, DeliveredTo: does!

So how do you use DeliveredTo:? You enter it in the “Has the words” field – that’s perfectly intuitive, right? 🙂 Of course not… but that’s how it works.

So, for example, to filter for anything Bcc’d to complaints@amazon.com, under “Has the words” you’d enter:
DeliveredTo:complaints@amazon.com

Take that, spammers!

Wireless Woes Resolved

In an earlier post, I’d detailed how Tomato on the Asus WL-520gU brought the internet back to our home in a delightful way. However, there had been an ongoing wireless problem with my EEE PC running Eeebuntu linux 3.0.

I’d been puttering with those issues on and off for a while, having got to a state where things mostly worked, most of the time. My biggest complaint was that I’d have to try multiple times to connect to some access points, but others would work straight away. Unfortunately, the router at the in-laws was one of those, and the new Asus at home turned out to be even worse. All the other clients liked these routers just fine, so I knew the issue was with this PC.

Sooo, long story short, I figured out that there were multiple drivers competing from all my attempts, trying to take care of the same wireless connection. I ended up finally disabling all of them but for the ath5k driver (which connects great, but has a speed fluctuation issue) in /etc/modprobe.d and then forced the connection speed with an iwconfig setting. Now the PC has a great connection all the way to the full extent of our property and streaming hulu is without a glitch.

Another minor irritation apparently solved. 🙂

Wireless Tomato

The other day the internet died. One moment all was good and the next, nothing. Gasp!

Poked around and all the lights on the router were out. Of course, this happens right as we’re flying out the door. So out comes the volt-ohm meter and find out the power brick failed. No problem, I’ve got a universal brick with changeable tips! I’ll just swap that out and we can get on our way… well, not exactly. Router still dead. Seems the connector is mating fine… funny. Ok, now really need to get out the door. Drop in a basic router from way back (no wireless) so the VOIP phone is back up and off we go.

Later, I use the V-O-M again to find my error. I had set one polarity on that universal brick, but that was not the one the router wanted. So I swap and plug it in — lights — yay! But it won’t stay up for more than a few seconds at a time now. Either the old brick killed it before, or I gave it the final shove with that reversed power.

OK, so now we’re short wireless. We’ve got a few mobile devices here and some of them have no ethernet jacks, so it’s off to NewEgg and I see there’s a very popular inexpensive router (Asus WL-520gU) on sale and with rebate. It seems to be a snap to convert it to a very full featured router/print server/NAS device, by use of an open source firmware package. Within just a couple of days I have the new toy. Google-ing ensues to find the best way to get the firmware updated.

The open source firmware package “Tomato” is already popular, but a person called “teddy_bear” created a custom version for this router to enable USB support for the print server and NAS capabilities. Before I install it, I try out the router with Asus’ own package. It seems pretty nice, but somewhat confusing in a Chinese-English language hybrid sort of way, and I can’t get the router to hold an internet connection to the WAN. If I reboot, it works for a few minutes and then goes away. Thinking Comcast may want a specific MAC address, I clone it from my original PC. Still no joy. Time to toss in a little Tomato.

There are some complicated processes on line for updating this router to Tomato by using the windows CD that comes with the router, and then loading another open source firmware, DD-WRT, and then using that to update the firmware to teddy_bear’s version of Tomato. Luckily, I found another post indicating success in downgrading the router’s own firmware from v 2.0.0.9 to 2.0.0.8 and then renaming the Tomato image file to v 2.0.0.9 and loading that, all using the Asus web page interface.

Well, my unit came with v 3.0.0.9. Wondering if the downgrade was solely to get the router to accept a “higher” revision number, I try renaming the Tomato image to fake a v 3.0.1.0 and load that. No dice. Firmware update fails. Meanwhile I’m having other issues with the linux laptop I’m using, so I think that is the cause. After futzing with it and then booting into WinXP to try again with the same result, I finally decide to just try the massive downgrade. I load version 2.0.0.8 on the machine and it works (albeit providing a very primitive interface)! I then load Tomato, renamed to fake a v 2.0.0.9, and it works straight away!

Tomato is definitely the secret sauce for this machine. Way, way easier to navigate through and the performance is now rock solid, keeping an internet connection (with the native MAC address, even) with no problem. All the devices but the linux laptop seem to love the wireless*, and the wired connections all work great.

I haven’t tried the print server function yet (I have a NSLU-2 unSLUng box that does that still) but the NAS function works fine and it even supplies an ftp service. And I was finally able to set up Mrs. V’s Mac to print wirelessly via the router to NSLU-2 as well.

One more set of tasks checked off. 😉

*This EEE PC netbook has had wireless issues all along, both under WinXP and linux. It seems to just not like certain routers. I can change drivers under linux, using either ath5k or ndiswrapper, and the solution will work for some and not for others. The opposite set up will work with those others. Go figure.

Savannah Honeymoon!

We needed to have our formal honeymoon last just a few days, as we both had commitments to return to. We wanted somewhere warm and within our own time zone, ideally. We’d both been to Florida several times, meaning that was out. So that left islands somewhere in the Carribbean or someplace else along the east coast. We had family who had been to Savannah and enjoyed it, so that seemed a natural choice.

Simply put, we had a wonderful time!

Priceline offered a package deal with the flights, hotel and rental car bundled together. We chose to stay at the AVIA hotel, just a couple of blocks from the riverfront in the historic district. Again, following my new practice of mentioning or asking, I made it clear to the front desk staff that we were on our honeymoon – and the extra care given was really nice. We ended up in a quiet room overlooking the city that felt like it was above our price grade. We got the turn down service and chocolates on the pillow, plus free bottles of water. Little touches, but it was all nice.

We drove down to Tybee Island and over to Hilton Head in South Carolina. We saw Fort Pulaski and Bonaventure Cemetary. And we played what amounted to a real-life game of PacMan, wandering random patterns and gobbling up the squares of Savannah in a day-long walk one day. Savannah is very walkable. We also crossed the Savannah river several times, both on and above the water in a drive to SC. In Hilton Head we played an 18 of mini-golf, where Sage made a hole-in-one! Three days was just about the right amount of time to have a great time.

Anticipating the input of my other half, I’ll share with you our dining experiences. Our first night we ate at Vic’s on the River and had some delicious upscale regional fare. Although we were full by the time dessert was offered, Sage noted that they offered a sweet potato créme brulée… we’d come back for that later. Two times in our stay we ate “breakfast” (the timing of which merits the quotation marks) at Goosefeathers Express Café and Bakery – very good and very friendly table staff. In Hilton Head we ate at Aunt Chiladas and got our cheap Tex-Mex fill. Our last night we got local seafood at The Fiddling Crab and then scooted over to Vic’s for that dessert we’d missed…

Great fun.

Wedding Lessons Learned

As a professional project manager, my brain is wired to do certain things — one of these is to conduct a “Lessons Learned” review after each major project. Let me assure you, our wedding was a major project. So here goes with the lessons learned:

1) Five hours at a reception is no time at all
1a) Do a “drive by” visit with all your guests at their tables as early as possible in the reception. Do not stop to talk with them in any detail. Otherwise you’ll never finish.
1b) Target a more leisurely visit with key individuals later in the reception. Seek out folks you don’t otherwise have an opportunity to talk with much in person, especially if they have traveled a distance to be with you. But still don’t tarry long, your time is precious during this event.

2) Delegate and trust – things will happen that you did not anticipate. If you focus your energy on them, you can’t be “there” for your guests or enjoy your day yourself. Find someone you trust to hand the issue off to… people will step up and take care of it for you.

3) Write out your speech’s key points and list of people to recognize. You will need it, your brain will be fuzzy. You don’t want to forget Aunt Agatha after she knitted all your favors, etc.

4) Keep track of invitation responses and gifts as they come in. Send thank-you notes right away. We did this and it really helped to keep things organized and flowing. We used Google docs for key lists so we could both update them and always stay in synch.

5) People really enjoy having more information available before the ceremony. We did a wedding website with a background story on each of us, our love story, details on the events and venues, and a means to log invitee’s responses via a web form. With the exception of just one individual, this went over really well and we got positive comments throughout on it.

6) Everything is negotiable, and it never hurts to ask. We were willing to pay a fair price, especially for great service, we just didn’t want to pay more than the next person. This is something that was uncomfortable for us to do, but we did it and it worked out for us wonderfully. We got price breaks or were able to negotiate lower cost packages with most of our wedding vendors, just for asking.

There’s likely many more we could share, but these are the ones that come to mind now. We’re happy to share with others following our path…

The Long Awaited Day

Yesterday was our wedding. What a wonderful day… a large amount of which is attributable to other folks pitching in to make it special. Most of the day went according to plan, but for those things that didn’t, or weren’t in the plan, others stepped up to make it work. So much so that nobody knew where the missteps were. The church service was beautiful, the photography fun, the reception and music outstanding. Warm smiles and well wishes abounded. We are very grateful to the people who came to share our day with us, several from a good distance. We’re touched by your friendship and support. What a great way to start our new life together!A photo montage from our wedding

Rehearsal Dinner

Mmmmmm, meat. If you can’t say that, you really won’t like Argentine food. Or at least the Argentine food we had at Tango in Arlington. Effectively, what you get is a double portion of meat of whatever style you order. And if you’re smart, you order the fried potatoes (not french fries) and the puré porteño (mashed sweet potatoes and squash). Great stuff. Add in a bunch of good friends, some nice wine and/or sangria, and you have yourself a first class blast. A very nice way to ease into the life changes coming your way the next day!

Sparkles!

Last night I was able to give Sage the engagement ring I’d envisioned originally. Man oh man does it sparkle!

I guess I should explain.

I had started looking for a ring quite a while before we got engaged. Nothing I was finding in the stores (or anywhere else with pre-made rings) fit my vision and standards. Let’s just say I can be picky with some things… and we needed something that would be somewhat understated, wearable in daily situations and not be uncomfortable for her and others when she dances (I’ve actually been cut by other women’s rings encountered in line).

So I started looking at diamonds. Oh boy, what a subject to get immersed in. Cut, clarity, color, geometries, Sarin reports, Helium reports, AGS certifications, etc., etc. all fed into my perfectionist sub-personality. (BTW, Good Old Gold helped greatly here in the end.)

And I was looking for a custom designer to make my vision come to life. I found and decided on Mark Morrell who is, amazingly, located very close to where I live. It turns out I liked one of his standard designs. Although we never met, I knew this was the guy to make our ring – but the man has a backlog, you must understand.

When I decided it was time to get engaged, the ring was not available. So I was fortunate to have and be able to use my maternal grandmother’s ring for our Mt. Auburn moment.

But now the real one is here and on her finger. Should you notice that glimmer on her hand, you’ll just have to ask her to see it. And the matching wedding band will be there with it, in just a few days! 🙂

Finding Your Seat (At the Wedding)

Well, our wedding date is coming up very soon. All the replies are in and now it is time to figure out where folks will be sitting at the reception.

We had great hope for the Bridal Toolkit from Bed, Bath and Beyond (BB&B) — it includes a guest list manager (which allows for uploads from a spreadsheet) and a seating chart builder application that reads from that data. Unfortunately, their default spreadsheet template doesn’t allow you to upload all the fields (eg: group names for a set of guests). It appears to be built around the idea that you’re fully bought in to their complete tool set and therefore would be building the list through their site’s screens. Problem is, we had our own wedding site – thank you very much – so we had our own collected database to work from.

After the first upload to BB&B, we were able to see our guests and then download the complete BB&B guest list spreadsheet (with all the columns, not just their starter set from the template). Sadly, the second attempt at uploading this expanded data resulted in duplicate guest names and still the additional fields were not accepted. And there was no way to simply wipe the slate clean in their tool and start again… you have to delete each guest one at a time, and that wasn’t working very quickly. Couple that with some other weirdness with their tool in real life use and that was it. Time to find another option!

After quite a bit of googling through many similar sites (that also want you chained to their site, to their advertising or direct revenue credit) and some shareware (on windows, not my primary platform) applications, I finally hit the jackpot.

Luckily another couple apparently had similar challenges about a year ahead of us, and as a result they created http://www.fluidtables.com/ . This is an incredibly (almost too) simple web application to do just this one part of wedding planning quickly and easily. It knows how to deal with uploaded guest lists, and even (gasp!) gives you the ability to wipe the list clean and start over. That, coupled with some tweaking of what data I uploaded (think embedded unique codes for later spreadsheet data merge), got me very close to the finish line – in no time.

Thanks, Chris @ http://www.fluidtables.com/!

A Glorious Spring Day at Mt. Auburn

This weekend was a pure delight in New England. After all the rain and flooding we had a fantastic bit of warm and sunny weather. Of course, after a winter spent indoors, this meant everyone wanted to get out and enjoy the day.

We chose to take a stroll at the Mt. Auburn Cemetery. For those of you that have heard some of the details of Sage’s and my story, Mt. Auburn figures prominently. So it is no surprise that we took the chance to stop in there again and take some shots for our wedding web site. Here’s a few others to give you an idea of what a special place it is. Click on any image to enlarge it.

Marriage License

Just picked up the Marriage License (officially, you file an “Intent to Marry” form and get back a “Certificate of Marriage” form). This will await completion by the church Pastor at our ceremony. Tip for others getting married in Massachusetts: shop around for which towns charge the least for this – you can do this in any town/city but the fees are different. We chose Westford for the fee and it being very local. And Westford also bundles in a certified copy of the completed certificate for you, as part of their fee.

Wedding Reception Entrees Tasting

One of the benefits of getting married (besides the obvious ;-)) is being invited to taste a lot of food. Today we traveled to our reception venue to try out the contenders for our main dish selections.

We offered our guests the choice of Chicken, Fish or Vegetarian meals. The vegetarian selection varies seasonally but will be something like a sun-dried tomato, spinach and cheese torte in phyllo dough. However, there were a few choices of chicken and fish dishes at this venue, which we had to select from to get to the two final selections.

Let the tasting commence!

Our options (we realized later that we should have taken these photos before tearing into the meal, but we were hungry!) – click on any image to enlarge it:

All of the meals will ultimately come with the same sides – a very moist (and likely butter filled) Jasmine rice and a ring of zucchini around seasonal string vegetables (this day it was haricot vert, asparagus tips and red peppers).

And the winners are: the salmon and the chicken Francese. For those folks that indicated food allergies or concerns, we have made arrangements to suit, for most people this means plain grilled chicken. If you’re attending and wish to change your selection, please let us know A.S.A.P., as we will need to provide final counts to the venue very soon.

BTW, we are keeping the other selections secret, so you’ll have some surprises on the day.

Wedding Cake Winner!

Well, we have a winner in our wedding cake selection “bake-off”. The Icing on the Cake in Newton will be supplying our cake. Sage particularly liked their butter cream frosting (and she is our sweets expert, so this weighed heavily in the evaluation) and they were willing to come up with some options to manage the cost. We think folks will like our design… but the proof will have to wait for a few more weeks. 😉

Formal Wear

Weddings create opportunities to learn about all sorts of things. For instance, what is and is not appropriate dress for particular times of day in a wedding. But with that comes the realization and power of knowing that we as individuals can do what we choose, regardless of the “proper” customs, and that bending the rules of dress for weddings these days is pretty common.

For our wedding we have chosen to put our (small, all male – but for the bride!) wedding party and the father of the bride in tuxedos. The groom will be wearing a tailcoat (which I just happen to already own). And of course the bride will be in her special gown and the mothers of bride and groom have chosen their own fancy dresses.

With our color scheme being ivory, sage green and purple, we decided to mix some color in. Here’s a screenshot from the rental company’s web site, showing the wedding party tuxes. We ultimately chose to put everyone in the tabbed “tux shirt” collars rather than what’s in the image, and I think we’ve created a great look that will go well together.

Wedding Cakes!

This past week has included two cake tastings in preparation for our wedding, which is coming up soon!

Wednesday brought us to “The Icing on the Cake” (TIOTC) in Newton. They were really friendly and helpful in figuring out what we wanted for our cake. Paula and Chelsea (a new customer service trainee) went over our options and worked with us on design and pricing. And we got to sample a few small pieces of the cakes they had available. SB has a preference for almond cream frosting, influenced by several cakes she’s had from a chef up in the Peterborough, NH area. Well, TIOTC has an Amaretto cake flavor that was a great approximation of that memory. Very nice.

Saturday morning brought us to KonditorMeister in Braintree. A very different experience from TIOTC, we were one of many couples (and their guests) in the shop for tastings. This is much more of a large scale, polished operation. While we did a little browsing of their cake portfolio book, our consultant Lynn went off and came back with a platter of large cake samples. The owner and “Konditor Meister” himself came by and greeted us warmly, congratulated us on our wedding, etc. Very nice. We were also presented with a couple of fancy choloate-dipped strawberries in “Bride and Groom” trim:
Bride and Groom strawberries
Again, we were able to work up a cake concept that we liked and got the pricing determined. Once that was done, they presented us with a box full of pastries (and we were able to box up our cake sample leftovers too).

Both of us at K-M tasting room
Mmmmmm, cake!
At the end, I just happened to mention that they didn’t seem to have an almond flavor on their list, and Lynn went to check with the owner — and came back with several take-away samples of other pastries they do in almond flavors!

Wedding Invitations

Sage and I had quite a challenge to find a wedding invitation that worked for us. One of the challenges we had was in finding something that we not only liked the appearance of but that we also felt comfortable about from an ecological impact standpoint.

What we settled on was the “Seal-n-Send” one piece invitation and reply card set (model VCMD7556), mated with a custom post-it note to provide the details for our guests to sign in to our wedding website. After login, our guests could see all sorts of info on us, our wedding and leave their invitation reply via a form on the website. If a guest so chose, of course they could use the attached reply card for their response (or even respond by phone to a line hosted via Google Voice).

The total solution minimized the ecological impact from paper and fuel consumption and provided the capability to manage the responses in a very efficient way. We hope our guests appreciated the solution as much as we do!

Invitation image
Our Invitation, Redacted for Privacy

Fezziwig’s Ball

SB and I had the opportunity to attend this Commonwealth Vintage Dancers’ event held in the historic Old Town Hall in Salem, MA.

While we couldn’t even be classed in the same league with many of the attendees for their garb, I think we looked pretty spiffy nonetheless! Quite an event, sadly curtailed due to a snow emergency’s parking ban that evening. There was an individual playing the part of Fezziwig that was outstanding. The venue was nice and the opportunity to stroll the streets of the historic area singing Christmas carols while in a crowd festooned with such frills was a treat.

Pop Goes the Weasel
Pop Goes the Weasel
"Gothic" dance
Gothic dance
We two
We two

Ball Five, Strike Two!

Caught a vintage base ball game in Harwich today.  Providence Greys vs. Olneyville Cadets.  Time warp back to 1884, where 6 balls are the rule and getting hit by a pitch just counts as one of them — you could be hit 5 times more before taking your base.  The overhand pitch has just been made legal.

It was an interesting event — many of the players came out to talk with the spectators before the game and shared the rules and their passion for the game with us and showed some of the equipment.  Lots of history too.  For instance, it turns out that in this year (1884) the Greys won the first of what became the World Series, taking all three games vs. the New York Metropolitans (yes, they still had to play game 3)!

Providence player
Providence player

Then it was finally time to play ball!  The bats are really heavy and the balls very bouncy compared to modern equipment — add to that the lack of gloves for anyone but the catcher and you have a lot of activity going on.  What a great way to spend a Sunday afternoon.

Waiting for a fielded ball
Waiting for a fielded ball

See http://www.newenglandvintagebaseball.com/ for more about this interesting topic.

Paddling against the tide

Today’s adventures were as follows:

  1. Multi-hour kayaking trip on the Herring River from sea, upriver and back again.  Let’s just say what we expected to happen with the tide change at mid-point did not go as planned.
  2. Dinner at Regatta.  Mmmmm.  Thanks Peggy and Bob!
  3. Contra dance (celebrating a windmill installation, held outdoors, under the stars) in Marstons Mills.

Another nice day on the Cape.

And Twinkle Takes the Call…

Finally found a reasonably up to date SIP client/VOIP softphone that will work directly under Ubuntu 9.04 on the EeePC:

Twinkle!  twinkle48

Tried many, many alternatives without success (most commercial clients that are otherwise available for Windows or Mac have not been updated for Linux for years, and the GPL/open ones are not so much better).  This one pretty much worked straight out of the “apt-get”/Synaptic box for me.  A little playing with settings to figure out the right places to put in my Galaxyvoice account info and I was off.  Phew, another task checked off.

BTW, I really like Galaxyvoice.  They’ve provided my home phone service for several years now.  Much better call quality than Vonage in my experience.  Billing is weird — the on-line account records never match what my CC gets charged… but since it is never more than $10 in a given month at my usage level, I don’t care.  Sometimes it is as low as $2!  Really, $2 to make and receive phone calls for a month – and they have a profitable ongoing business. And real people in Massachusetts take my calls for service.  You have an alternative…

Wellfleet Bay, Cape Cod

Today’s soggy day adventure involved a visit to MassAudubon’s Wellfleet Bay sanctuary.  One of the benefits of supporting MassAudubon at certain levels includes the ability to bring guests to visit any of their sanctuaries for free — you can guess whom I brought with me today ;-).

This is a wonderful place — not only is it a beautiful sanctuary right on a tidal marsh on the bay (great views!), but it also has an extensive wildflower garden, camp and instructional center.

These facilities utilize a whole slew of “green” technologies that I first became aware of when looking into possible co-housing communities a couple of years ago, including: a grey water system (which is recycled to service the garden), rainfall capture into underground cisterns for additional landscape use, composting toilets (which foam when you use them :)), active and passive solar, extensive recycled materials used in construction and lots of other unique ideas that I hope to apply myself to a home soon.  These taken together have qualified the center as a LEED Platinum building, the highest level certification.

We spent a good deal of time at the sanctuary but had to finish up and get back to meet up with SB’s folks for dinner.  On the way back, we stopped by at the Island Pond Cemetery in Harwich (ca. 1778).   As my grandmother would always say when we passed one: “a nice quiet neighborhood.”  Yes, this is a cemetery in a marsh overlooking Island Pond, located on an eponymous named road, right in Harwich Center.  We stumbled upon it last year when looking for the Lavender Farm.

Like most early New England towns, in Harwich you could live your whole life within just a few miles.  I noted in this case just how compact things were/are: at the entry of the short road, which is the only way into the cemetery, on the left is the monument works and on the right is the funeral parlor.  Just a few doors down are the old storefronts where you could buy your goods, the town’s major churches, town hall and the old academy school.  Pretty much everything from birth to death and beyond, right there in a tight little group.  My, how our lives have expanded in scale since then!

The reason this caught my attention last year was stumbling upon the following gravestone.  I don’t know whether this reflects better the burden these folks carried through life, or how they felt upon it ending.  They certainly wanted to state it out loud – this is quite a large/prominent stone.  We have to hope the little local shop at the end of the road got the commission of making it!

A heavy burden to carry...
A heavy burden to carry...

What Ho, Bertie?

SB has been talking about trying English Country Dance ever since she had her “amazing Money Musk moment” (paper craneshumans) at a contra dance at Pinweoods camp a while back.  So we went to check it out this evening, as we were free and our friend Sue Rosen was leading the dance program at the West Newton dance.  (And after cramming in a quick run to the Blue Ribbon across the street to grab dinner).

There is a lot of shared info/skills between ECD and contra dancing (contra is partly sourced from ECD), so we were able to fit in pretty quickly after learning the few unique moves.  Turns out we knew a fair number of folks attending from other venues as well.

I still prefer contra (there is an energy and exuberant friendliness that I particularly enjoy) but I can definitely see the draw for those that love English.  I expect this will become yet another part of our ongoing dance adventures now.

Here’s SB doing her typically graceful bit in a dance (the start button in the middle of the video is pointing right at her):