Worth the money: Automated, online backup

*10 February 2010*

Yesterday, I found out I’d lost over three thousand calendar entries, and I had lost them five months ago. Fortunately, I had been using an
automated, [online backup service](http://mozy.com) and was able to restore the missing data.

I found out about my loss when I searched for a phone number on my Palm TX that should have been in my calendar, but was missing. I wondered what was up, and started going through my calendar a month at a time. I noticed that calendar entries after Sept 7, 2009 were present, but nearly everything before that was missing.

My Palm TX is synchronized frequently with Windows, and infrequently
with Linux. My Linux copy of the calendar wasn’t going to help me,
because it was missing the calendar entries as well. The same was true
for the Windows copy.

The Palm-to-SD-card backup that happened every night wasn’t going to
help, because it deletes any backups older than seven days old to make
room for the new backups. I needed something that stretched back five
months or more.

The backup of my Linux computer wasn’t going to help me, because I _overwrite_ my old
backups with new copies of the same files, using ‘rsync’.

I thought my Mozy backups worked the same way. Fortunately, I was
partially wrong. Mozy keeps point-in-time backups of some files. I don’t
know how they determine which files to do it for, but they did it for my
Palm Pilot calendar database file. I was able to restore my missing calendar entries, which was a huge relief.

I heartily recommend automated online backups. Manual backups aren’t
done by most people and if they are done, they’re sporadic and
incomplete. My intermittent manual, replace-the-old-files style of
backup to USB hard drive wouldn’t have allowed me to restore the
calendar entries. The $5/month that I spend for online backup was very
worthwhile, and easy to justify considering that it’s less than the cost
of eating out for lunch. It’s less expensive than a cell phone or
monthly internet service.

If you aren’t already doing automated backups, I recommend that you sign up with an online backup service today. Here are some recommendations:

1. [Dropbox](https://www.dropbox.com/) is the most popular. Works on Windows, Mac,
Linux, iPhone.
1. [Spideroak](http://spideroak.com/) is the second most popular. Works on
Windows, Mac, Linux.
1. Alternatives to these, including [Mozy](http://mozy.com), which is what I use for Windows: [http://alternativeto.net/desktop/dropbox/](http://alternativeto.net/desktop/dropbox/).

—-

A word of caution: backups can’t work miracles. If a file was
corrupted BEFORE it was backed up, no backup solution is going to be
able to solve the problem. This is why I make two copies of all photos
from my digital camera BEFORE deleting them from the camera. Still, if
the memory card in the camera contained corrupted images, even this
wouldn’t be good enough.

—-

The missing calendar entries were, in fact, not missing. They were
corrupted. I found this out by running `jpilot-dump -D | sort -r` on my linux computer. I had 3462 blank entries listed on 12/31/1969. The first time
I restored my Windows datebook.dat, and hot-synced, all of the restored
records were again “deleted” because my Palm though it had the more
current copy of those records in 1969. I had to purge the records from
my Palm _before_ hot-syncing with the restored datebook.dat file.

—-

Techrepublic has a [Review of 10 outstanding Linux backup utilities](http://blogs.techrepublic.com.com/10things/?p=895), many of which work on
other platforms as well.

Personal solutions (not hosted):

– [Simple Backup Suite](https://help.ubuntu.com/community/BackupYourSystem/SimpleBackupSuite) for Ubuntu and Fedora, which does full and incremental backups, on a schedule or manually. Install it on Fedora by running “`yum install sbackup`”. Configure and run by running “`/usr/bin/simple-backup-config`”
– [fwbackups](http://www.diffingo.com/oss/fwbackups), of which Techrepublic says, “This is, by far, the easiest of all the Linux backup solutions.”
– [Rsnapshot](http://rsnapshot.org/)
– [Duplicity](http://duplicity.nongnu.org/) which is a command line utility, and is recommended by http://rsync.net

Migrating data from Palm TX to Nexus One

I’ve used Palm OS for the past ten years, starting with a stone-age [Handspring Visor](http://en.wikipedia.org/wiki/Handspring_%28company%29#Handspring_Visor), continuing with an elegant Sony [Clie](http://en.wikipedia.org/wiki/CLI%C3%89), and ending with a well designed [Palm T|X](http://www.palm.com/us/products/handhelds/tx/). The calendar and the address book kept me organized. The failure of the digitizer in my T|X pushed me to find a replacement. I considered the iPhone and Palm Pre, but chose the [Nexus One](http://en.wikipedia.org/wiki/Nexus_One).

Once the Nexus One arrived, my task was to find a way to migrate my calendar, contacts, and passwords.

A coworker recommended [GooSync](https://www.goosync.com), which he used to move from a Palm TX to a Motorola Cliq. From the description of GooSync, it sounded like neither the free version or the paid version would migrate all ten years of calendar entries over to Google calendar.

Google calendar supports import from an [iCalendar](http://en.wikipedia.org/wiki/ICalendar) file. Palm Desktop doesn’t export into iCalendar format. Jpilot on Linux does, but I found that the format is not compatible with Google’s import. So I synchronized my Palm TX with Evolution on Linux. Evolution’s iCalendar export was compatible with Google’s import.

Palm Desktop didn’t seem to be able to export in a format that Google’s contacts could understand. I used Jpilot on LInux to export each of my categories in [vCard format](http://en.wikipedia.org/wiki/VCard), and imported them into Google one at a time. This worked well.

On Palm, I had used GNU Keyring to store my passwords. Android has [KeePassDroid](http://www.keepassdroid.com/) (among others). There was no easy migration path between the two. Jpilot on Linux has a plugin to display my GNU Keyring password entries. I installed [KeePassX](http://www.keepassx.org/) on my Linux box, and copied and pasted each password from Jpilot into KeePassX. When I finished, I copied the KeePass database onto the Nexus One.

I like the Nexus One. It’s slim, fast, and capable.

Trust, but verify

In [a comment](http://lwn.net/Articles/375051/) over at LWN.net, a reader pointed out that it’s a good idea to verify not just SSL certificate, but also doctors, mechanics, etc. He says, “it’s simply a requirement of a healthy society that it’s citizens have a healthy skepticism and be willing to put the effort into understanding what is going on around them. It’s not that you don’t trust them. Its that you do what you can, in your limited way, to make sure that you can trust them.”

Working around patent threats

Andrew Tridgell, author of Samba, says the best way to defend against patents in open source software is to 1. learn how to read patents and 2. learn how to rigorously work around patents

* [http://lwn.net/Articles/370615/](http://lwn.net/Articles/370615/)

Open Source: Freedom from Anti-features

It’s good to remember that a benefit of open source software is freedom from anti-features. The wiki (the second link) has examples of anti-features. E.g. I wasn’t aware of the Vista anti-feature where it slows down network connections when it detects any sound playing.

* [http://lwn.net/Articles/370615/](http://lwn.net/Articles/370615/)
* [http://wiki.mako.cc/Antifeatures](http://wiki.mako.cc/Antifeatures)

f-spot and sqlite

I recently tried using Linux [f-spot](http://f-spot.org/), with the intent to make it easier to browse, manipulate, manage and publish my photos. I wanted f-spot to manage my photo screen saver as well. f-spot seems to be good at importing photos, but getting photos removed is a bit more difficult.

I organize my photos by date an a directory structure such as “2010/2010.01.01 New Years Day”. The “2010” directory contains several sub directories. Each sub directory consists of a date and a description. If, for some reason, I import photos into f-spot that I don’t want in its database, I know what directory the photos pertain to. Unfortunately, F-spot doesn’t allow me to remove photos from its catalog by filename or file path. That’s okay though, because it stores its database using sqlite.

I figured this out by running lsof -p pid-of-f-spot, and noticed a file descriptor opened to “/home/jared/.config/f-spot/photos.db”. Then I ran file ~/.config/f-spot/photos.db and it helpfully told me that it is a “[SQLite](http://www.sqlite.org/) 3.x database”.

After a bit of google research, I figured out I could install a SQLite manager on my Fedora system: yum install -y sqliteman, followed by running sqliteman ~/.config/f-spot/photos.db. I was expecting to see a command-line client, but to my surprise, I found a pleasant graphical interface. It was simple to browse the table schema and to run queries to update and morph the f-spot photo database. Note: I’d recommend making a backup copy of the database before altering it.

F-spot may not be everything I want it to be, but I managed to work past its limitations due to the fact that it used a well known, open data storage format.

Persuasion and Manipulation

As I was reading about techniques of scamming and of social engineering, I realized that urgency is a tool that is both nefariously and legitimately used — having a sense of urgency motivates us to stop procrastinating and to act. Salesmen get people to buy products by instilling a sense of urgency. Religious and political leaders get people to act using urgency. Urgency is a persuasive tool.

Persuasion is the act of inducing action or belief in others.

I asked myself the question, “what’s the difference between honest and dishonest persuasion?”. Someone who honestly persuades builds trust, and is trustworthy. They love others, have integrity, and seek to empower others — to build them up, to strengthen them. It is selfless, although it doesn’t preclude deriving joy from helping others.

Someone who dishonestly persuades (manipulates) destroys trust through deception and intimidation. They may withhold information, utilize evasion, character attacks, and impersonation. They attempt to impede critical thinking. Manipulation is selfish. The object of manipulation is power or possessions.

[Laws of persuasion](http://www.bible-teaching-about.com/persuasion.html) include

* Reciprocation
* Commitment & Consistency
* Social Proof (aka conformity)
* Likability (trust, friends, I’m like you, image)
* Authority
* Scarcity (urgency)

I’d add:

* Diffusion of responsibility

That last one can help an individual stand up to pressure from peers. At one point during my [LDS mission](http://newsroom.lds.org/ldsnewsroom/v/index.jsp?vgnextoid=37bc12fccd78f010VgnVCM100000176f620aRCRD&vgnextchannel=3e0511154963d010VgnVCM1000004e94610aRCRD), I had a companion that was a challenge to work with. My mission president told me that if I felt pressured to do something I knew was wrong, to call him and ask permission. His answer would be “no”, and I could put the responsibility of the decision on his shoulders. Normally, I like to take the responsibility of decisions, but in one case, I felt more pressure from my companion than I wanted to stand up to myself. Making that phone call diffused the responsibility somewhat. I appreciated being able to lean on a trusted authority.

Minimizing tracing/instrumentation overhead, injectso

Reading these articles from lwn.net: [Minimizing instrumentation impacts](http://lwn.net/Articles/365833/) and [Debugging the Kernel using Ftrace](http://lwn.net/Articles/365835/), reminded me of [Microsoft detours](http://research.microsoft.com/en-us/projects/detours/) and [Linux injectso](http://c-skills.blogspot.com/) (updated to work with current glibc, kernels).