Hmm. Address Book syncing via ab2vcard?

I had a weird thought a couple hours ago. Suppose you set up two Macs with ab2vcard, both syncing to the same Subversion repository, and then added a bit of extra magic to handle conflicts and deletes. Then hand conflicts and remote updates off to Address Book and let it handle it on its own (that was one of the improvements in Panther–the Address Book has a merge dialog).

Wham, instant version-controlled shared address book. Have a nice day.

Of course there are a few little details that need to be handled. Most of them involve tracking deletions and doing the Right Thing. ab2vcard’s current deletion tracking is hokey, but it works when it owns the vCard repository. In a shared environment, you need better logic. It’s not rocket science, though.

Posted by Scott Laird Thu, 11 Mar 2004 09:20:42 GMT


ab2vcard: A command-line tool for converting OS X Address Books to a directory full of vCards

As mentioned yesterday, I’m now exporting all of the entries in my OS X Address Book into Subversion. In order to do this, I needed to hack up a conversion tool. Since I have it working for me, I figured I’d share it. So, I’d like to announce ab2vcard version 1.0. You can download an OS X installer package plus the source.

The whole thing is pretty trivial to use. Just run /usr/local/bin/ab2vcard directory, and it’ll create a vCard for everyone in your Address Book in the directory directory. If you add the -d flag, then it’ll erase files that aren’t currently in your address book. If you add the -s flag, then it’ll try to check changes into Subversion. The README that’s included gives more detail, as does the manpage.

It’s written in Objective C and derived from ’contacts’ by Shane Celis. Since I now have a whopping 4 hours of experience with Objective C, don’t expect the code to be spotless, but it shouldn’t be too bad. Objective C is a surprisingly easy language, if you already know C and are somewhat familiar with other Smalltalk-influenced languages. The hard part is getting the hang of all of the framework code, but Apple’s documentation helped with that.

Let me know if you find any bugs, or if you find this useful for anything.

Posted by Scott Laird Wed, 10 Mar 2004 13:37:48 GMT


The joys of exploding TiVos

I love my TiVos. I have two, one for each TV. I can’t cope with TV without them anymore. I suppose I’m a TiVoaddict.

With the addiction comes a fear, though–what happens when they die? How do I cope? Even if they replace it, I still lose all of the shows that I’ve saved and never quite got arond to watching. Worse, the replacement won’t know me the way that the old one does. I’ll have to re-train it, adding all of the season passes for all of my favorite shows. I’ll have to tell it that I love “Mythbusters” and hate Pokemon. I’ll have to convince it that I’m not gay.

Unfortunately, the day that I’ve been fearing for over three years has arrived. I always assumed that the upstairs TiVo would go first. It’s an old 14-hour Series 1 TiVo, as old as they get. I added an extra hard drive as soon as I got it, so it’s been spinning away for over 3 years, completely out of warranty. But no, it was the other one that died. The pristine 60-hour Series 2, just over a year old, that started locking up. Sometimes it’ll make it a day or two, and sometimes it’ll lock up again before it finishes rebooting. It’s frustrating, and it’s getting increasingly useless for watching TV.

I’ll call their tech support people when I get a chance. It took most of an hour on hold last time, and I don’t have time for that right now. I’m currently casting a lustful eye over the MythTV boxes that a couple friends have built. They aren’t as well-designed as TiVo, but since it’s free software running on Linux running on a normal PC, they’re easy to expand, they network well, and I can fix them myself when they break.

I just don’t know if I have the heart to abandon my TiVos, though.

Posted by Scott Laird Tue, 09 Mar 2004 23:18:43 GMT


Have you seen my spam?

My spam is missing.

I used to receive over 100 spams per day, but that was mostly due to forwarding from a former employer. Once the forwarding stopped, I was still receiving around 20 spams per day. Recently, though, they’ve all but stopped. I only received 5 spam messages yesterday.

It’s not a filter issue–spam only rarely makes it through the filter gauntlet into my inbox. For some reason, spammers aren’t sending me as much spam as usual. My usual spam load isn’t very diverse, it’s possible that only one or two spammers make up the bulk of my spam. Maybe they’re on vacation. Maybe they removed me from their lists for some reason (ha, right). Maybe the CAN-SPAM law scared them straight (ha, right). Maybe whoever’s been paying them for spam stopped (ha).

Or maybe I’ll get 50 tomorrow, just to even out the average.

Posted by Scott Laird Tue, 09 Mar 2004 22:50:39 GMT


OS X Address Book into Subversion

Continuing the theme of backing up my PIM data via Subversion, I’m now exporting the contents of the OS X address book into a subversion tree, and then syncing that from my laptop onto a box at home.

This was a bigger pain then I anticipated; I couldn’t find a tutorial that showed how to use AppleScript to export data from the Address Book, but I could find an Objective C program that extracts data from it. I’ve never used AppleScript or Objective C, so either choice involves learning a new language. At least with Objective C, I have working source to start from. It took most of an hour to rip out the text printing code from ‘contacts’ and substitute in code to save vCards to individual files, but the result seems to work quite nicely. I’ll clean it up and release it eventually; if anyone is interested, send me mail and I’ll speed it up.

Update: I’ve released this as ab2vcard. Let me know if you have any problems.

Posted by Scott Laird Tue, 09 Mar 2004 10:59:17 GMT


Palm backups

My poor, overworked palm (actually a Sony Clie, but it runs PalmOS) lost its memory overnight one night last week; I think something in my pocket was hitting the power button and ran the battery dead. With Palms (and Pocket PCs), one the battery goes, everything in memory goes too, and you basically have to re-install from a backup before you can use it again. Fortunately, syncing your palm performs a backup, but it isn’t 100% reliable, and it doesn’t actually back up everything; when I restored the palm, it lost a few changes that I’d made late in the day before my last sync. Sony ships their Clies with a backup tool that can back up to a memory stick, but it’s slow and you have to run it by hand. And everyone knows that backup that require manual intervention never really happen.

So I did a bit of searching, and found that BackupBuddyVFS is almost universally recommended for Palm backups. It’s faster then Sony’s backup solution, and it can run automatically at a fixed time every night.

Posted by Scott Laird Tue, 09 Mar 2004 10:40:31 GMT


Palm backups into Subversion

My palm is now amazingly well backed up. Every couple hours a script on my PowerBook copies the Palm hotsync backup files into a subversion tree and commits the changes. So, I have a running history of all of the packages that I’ve installed onto my palm as well as a record of what I deleted and when it happened.

Getting the deletes right was a bit of a pain–I’m using rsync and parsing the output of ‘rsync –delete’, and then feeding that into ‘svn delete’.

All of this is then synced over the net to one of my systems at home. So, even if I lost my Palm and my laptop, I’d still be able to recover the contents of my palm. Yes, that’s total overkill, but it’s worth it just for the record of what is changing over time on the palm.

Posted by Scott Laird Tue, 09 Mar 2004 03:47:26 GMT


Has it been six months already?

Wow, I just realized that I’ve been writing here for over six months. It’s been kinda fun, but it’s made me very aware of my shortcomings as a writer. Something to work on, I guess.

On the other hand, it’s helped with organization, which is usually my Achilles’ heel. At the very least, I have a record of what I’ve been working on, as well as a place to put reviews of the bits of technological flotsam that drift through my life.

Strange fact: I started this blog as a place to put reviews of assorted camera equipment. How many photography reviews have I posted? None. It just goes to show that Clausewitz was right: no plan survives the first contact with the enemy.

Posted by Scott Laird Sat, 06 Mar 2004 05:27:57 GMT


Life Balance and Agendus on the Palm

I’ve finally settled on a set of Palm-based organization programs. As mentioned before, I’m using Life Balance for managing my to-do lists. It’s kind of an odd program, and it still needs some work, but the basic concept is wonderfully simple. You use its outline view to define goals (“earn a living,” “spend time with family and friends”) and then fill in details under the goals. For example, I have a number of ongoing and upcoming projects at work, plus infrastructure things like “fill out timesheet.” Each branch of this tree has an importance attached to it, so you can say things like “this sub-tree is very important to its parent” or “this sub-tree isn’t very important at all.” The cool part is that Life Balance can then take this outline and sort it into a simple linear to-do list, showing the most important things at the top. It’s not 100% perfect, but with a small bit of tuning, it’s usefully close. It knows how to handle deadlines, so tasks bubble up the list as the deadline gets closer, and it can handle recurring to-do items. Rather uniquely, it tries to balance the priorities of your different goals, so if you’re getting tons of items completed on your work list, it can bump up the priority of non-work items in an attempt to remind you to be a more balanced person, if that’s what you desire.

The story behind Life Balance is kind of interesting–apparently the author was a VAX sysadmin, and wrote the program in an attempt to regain control of her life while on-call for work. I can certainly sympathize. Apparently I’m not the only one–there have been several positive reviews of Life Balance released recently.

Life Balance runs on Windows and the Mac, as well as on the Palm. Each piece is licensed separately. It seems to sync well on the Mac. There are rumors of a PocketPC version appearing at some point.

For managing my calendar, I’ve replaced the Palm’s DateBook with Agendus. It’s a comprehensive calendar/to-do/contact-management app that is aimed more towards sales types then programmers, but it does a really nice job of displaying upcoming events. I used to lust after the PocketPC “Today” screen, but Agendus more then fills that gap with a zillion different ways to view calendar and to-do items. You can view days one at a time, one or two weeks at a time in a grid, list, or graphical free/busy block view, a month at a time, quarterly, view lists of upcoming events 1/2/7/14/30 days in the future, view isolated lists of to-do items or have them integrated into the calendar view, plus a few others that I’m missing. It supports small fonts at least on PalmOS 5 and Clies running PalmOS 4. I really like the way it looks, and the ability to use small fonts means that you can see a lot of detail on the screen at a time.

Plus, since Life Balance can sync its sorted to-do list with the Palm’s native to-do database, you can view Life Balance items with deadlines on Agendus’s calendar and mark them complete directly from Agendus. The two programs integrate beautifully together.

I’m happy with the two programs, but I have a couple things that I’d like to see improved, mostly in Life Balance. First and foremost, it really needs to be updated with the ability to use smaller fonts on the Palm. It’s hard to tell what’s going on in the outline view because the text is so big that you can only see a handful of lines at a time. Entertainingly, the Mac desktop version suffers from the same basic problem–it has so much window-dressing that it’s hard to see your whole outline at once. Both of these need to be fixed soon.

All in all, though, I’m happy with both programs and bought both of them.

Posted by Scott Laird Thu, 26 Feb 2004 09:29:37 GMT


Apache 2.0, subversion, WebDAV, and iCal

Somewhere in the middle of my MPx200 adventure, something ate all of my repeating annual calendar entries, including birthdays and anniversaries. Personally, I blame PocketMac, but it’s really my fault for not keeping a good backup of my calendar.

That’s not to say that I don’t have a backup–I sync iCal with my home web server every few minutes–but there’s no way to track changes or dig up old versions of my calendar. Once entries are deleted, they’re gone for good. What I really want is revision control for my calendar.

And now I have it. Through a feat of astounding geekiness, I’ve finished installing the subversion version control system on my home web server, and my calendar WebDAV share is actually a subversion repository. What that means is that every time iCal exports a new calendar to my home server, it’s transparently checked into subversion in the background. I can get subversion to give me a list of all of the changes that have been made over time, generate diffs between specific versions, and even revert to older versions.

It’s actually pretty easy. Just install Apache 2, and then install Subversion with the ‘mod_dav_svn’ Apache module. Configure up a virtual server and then add these lines to your virtual host config files:

      <Location /xxx>
        Dav svn
        AuthType Basic
        AuthName "Auth Required"
        AuthUserFile /etc/apache/htpasswd
        Require valid-user
        SVNPath /path/to/svn/repository
        SVNAutoversioning on
        AuthzSVNAccessFile /etc/apache2/svn_authz
      </Location>

Now create /path/to/svn/repository with svnadmin, reload apache, and you should have a nice, revision-controlled web-based file server. Most modern desktop OSes can mount WebDAV-enabled web servers just like a more-traditional file server. Both OS X and XP can do it natively, and there should be at least a dozen ways to accomplish it in Linux. This is almost certainly the easiest (cheap) way to get reliable version-controlled storage.

Thanks to Sterling Hughes and Justin Erenkrantz for providing inspiration and documentation.

Posted by Scott Laird Tue, 24 Feb 2004 11:42:21 GMT


Apache 2.0, here we come

Later today, I’m going to upgrade scottstuff.net from Apache 1.3 to Apache 2.0. The newer version has a ton of issues, but I really want to run one specific service that is only available for 2.0. So, out with 1.3, and in with 2.0. More details after the upgrade.

Update: Upgrade complete. Let me know if you see anything broken.

Posted by Scott Laird Tue, 24 Feb 2004 07:57:07 GMT


The joys of yardwork

I keep forgetting that I enjoy working in the yard. We hauled 3 more yard-waste bins worth of branches, leaves, and moss out of the yard this weekend, and thew down a bit of extra grass seed in the back yard. It’s probably too early in the year for it to really take, but grass seed is cheap, and weeds are already starting to grow, so grass can’t be far behind.

I also made a nice dent in the mess that is our garage. I finally made myself go through the boxes from my office at Internap, and recycled several years worth of old purchase orders and meeting notes. I saved the Perl manuals and blank CD-Rs, but pretty much everything else went into the trash. Good riddance.

Now, if I can just get one more good weekend’s worth of yard work in before spring kicks in, I’ll actually be ahead for the first time since we moved in four years ago.

Posted by Scott Laird Tue, 24 Feb 2004 02:53:39 GMT


Even I'm not this nerdy

My boss sent me this astoundingly nerdy case mod. It’s really nice to know that there are people out there who are way, way nerdier then me. I’d never propose like this.

Of course, my wife and I announced our engagement via a website. That’s completely different, though. Plus it was 1997. That kind of thing was cool then.

Posted by Scott Laird Fri, 20 Feb 2004 05:16:42 GMT


iTunes now listing tracks for more then $1?

Maybe I missed it, but it looks like Apple is listing some tracks now for over $1. Specifically, the page for this Russian National Orchestra recording shows up at two tracks, one for $7.49, and the other for $4.97. Each “track” has 3 additional tracks collapsed underneath it, outline-style. The outline thingy is new to me, too.

Admittedly, the $7.49 track is over 40 minutes long, so that’s not a bad price, but it’s surprising to see Apple going this way. They certainly don’t lower prices for short tracks. See the recording of Shel Silverstein’s Where the Sidewalk Ends, for example–it’s full of short tracks (as short as 13 seconds) for $1 each. In fact, if you were to buy the whole album one track at a time, you’d pay over $46.

Posted by Scott Laird Fri, 13 Feb 2004 00:35:45 GMT


Linus has a G5?

It looks like support for Apple’s PowerMac G5 was added to Linux today. That’s nice, but I’m not really sure why you’d spend the extra money for a G5 over an Opteron if you’re planning on running Linux. The interesting bit was Linus’s reply; apparently there were a couple small bugs that he had to fix after merging, but then he said:

Anyway, with that fixed, it will compile and appears to work on the G5. Thanks. Although I did see it hang when I inserted a USB keyboard (in addition to the X problem). Hmm.

So Linus has a G5 handy. His or OSDL’s?

Posted by Scott Laird Thu, 12 Feb 2004 23:47:35 GMT