Tuesday, August 16, 2016

Mac Browser Wars... and the winner is: Safari!

Bottom line: Safari seems to run faster and better than Firefox and Chrome.

I have been happily using Chrome on my early 2014 MacBook Air with 8GB of memory since... well, for years before I had this particular Mac.

Then all of a sudden maybe a month ago my M a c   s t a r t e d   s l o w i n g   d o w n   . . .    a   L O T .  I would restart it and it would be better... for a few hours.

And I'm not talking "laggy," I'm talking seriously slow.  One morning, I tried actually closing the apps I had open rather than forcing a restart.  It took about an hour.  It was so bad that it seemed to be clearly more than "you are running too many apps."  My main suspect was VMWare Fusion, since I'd recently upgraded the OS to Windows 10, and Fusion itself.  In the process of troubleshooting, however, I discovered that it was all Chrome.  As soon as I would force-quit Chrome, things would speed up within moments.

The diagnosis was slightly complicated by the fact that Activity Monitor would run so slowly that it wouldn't update, so you couldn't tell who was hogging all the cycles.  When I would force-quit chrome, it would suddenly do about a hundred updates all in a row.  [Before force-quitting, it would update only a tiny bit... it was strange to see Activity Monitor listing itself as "Activity Monitor (not responding)."]

So I haven't really liked Safari ever since the days when Apple locked you into their own search engine, because it was a profit center for them.  That was, uh, a while ago. Also I love OneTab, and Chrome doesn't have it.

So the next stop was Firefox (which does have OneTab), which I use on my Windows VM.  It was OK, but response was noticeably slower than Chrome when Chrome was running well.

On to Safari.  First I had to upgrade to El Capitan, because the new (OK, new to me) Safari allows you to "pin" tabs, and to mute browser windows, both of which are great features.  Happily, that was painless.  I'd been meaning to do it anyway, because once Apple goes to their next OS it will be impossible, and the new OS typically breaks a lot of stuff, so I try to upgrade after most of the kinks are worked out.


Bottom line: Safari is working great.  It is at least as responsive as Chrome and generally my Mac seems to be running faster and happier than it has in a very long time.  And there's an extension called Sessions that seems similar to OneTab, though it is not currently being supported, :-(

Wednesday, December 4, 2013

Mavericks Upgrade: Go For It

I tend to be a late adopter of operating systems.  I went from Windows 95 to XP to 7, skipping Vista, Me, and a number of other dogs whose names I can't even remember.  I would still be running XP except that when my son switched from Linux to Windows 7 I sat up and took notice.

When I switched back to the Mac we were on Leopard.  I skipped Snow Leopard, upgraded to Lion, and skipped Mountain Lion.

I need a pretty good reason to upgrade.

Add to that: I have a 2013 MacBook Air with 4GB of RAM on which I routinely run Word, Chrome (typically with about a dozen tabs open), Mail, Calendar, Numbers, Evernote... and VMWare Fusion, with a Windows 7 VM running.  Don't get me wrong, I love my Air, but it has seemed a liiiitle slllooow at times, e.g. booting up or suspending the VM and I've been kind of coveting the 8GB Air.  And for a while I've been suspending the VM to try to keep things running better.  So new OSes tend to have a bigger footprint and be a little more bloated, and I was afraid Mavericks would push me over a tipping point.

On the other hand, I've been using two monitors for a number of months now, and the fact that you can't switch them independently seemed entirely brain-dead to me.  So Mavericks was supposed to do something about this, and I was very interested in that.

So I looked on line and a few people were complaining about it being slower...  I asked around and nobody seemed to know much about it, until my buddy Tom told me he'd upgraded and his systems were actually running faster.

So over the Thanksgiving weekend, I decided to go for it.  I've been very pleasantly surprised: things are noticeably faster and it has breathed new life into my 4GB Air.

But of course, there are pluses and minuses...

1. I love the multiple monitor support; it is making my life a lot easier.  Rather than each "space" having two screens, you can create independent spaces on each monitor, and switch the monitors independently.  This is heaven.  Oddly, though, you seem to lose the ability to assign apps to individual spaces, it appears that you can just assign them to monitors.  Oh, except that when you unplug the external display, all of a sudden you can assign apps to specific spaces, which persists when you plug the external display back in.  (And, BTW, the spaces from the second display are assigned to Display 1 when Display 2 is unplugged and are re-assigned to Display 2... the way it should).  But of course, there needs to be something bizarre: I have 6 spaces on Display 1, and 3 spaces on Display 2... but when I unplug Display 2 I somehow have only 8 spaces total, so there are still a few things to shake down on this cruise.

2. The first big problem I had was with Mail.app.  All of a sudden I had 18 unread messages that would not appear in my supposed "smart" inbox.  Eventually found a solution; I don't think I used this post but it was equivalent: https://discussions.apple.com/thread/5477662.  You have to trash a bunch of files in your Library (I just trashed the EnvelopeIndex files, which did the trick... this particular post has you trash a few more).  Once it rebuilt the indexes, I could find the 18 "unread" messages which turned out to have been read years ago, but at least I could now flag them as read.  Next freak-out: my flagged messages were all gone, and this would have been a fairly serious problem for my life.  Fortunately, they reappeared a few hours later.  Or maybe it took overnight.  But then again, I have 175,000 emails, apparently.  Your mileage is likely to be better.  By a lot.

3. The next problem: VMWare Fusion 4 told me there wasn't enough physical memory to start the VM.  Ouch!  But I quit a few apps, started the VM and it worked... and when I restarted the other apps, everything worked just fine and seemed faster than it was before.  But then, it seemed to have problems connecting to the network.  The network connection had been a little persnickety in the past (like, had to use NAT rather than bridged, or maybe the other way around).  I love VMWare Fusion, so I bit the bullet and got VMWare 6 for $42.  Networking works, things run faster... and with VMWare 6 I am not getting the "not enough physical memory" message.

4. I did the iWork '09 upgrade.  Not so happy with that.  It lost the autofill in tables, which I use a lot... and it broke scripting.  Back to Numbers '09 for me.  But there was some panic when my scripting files seemed to be corrupted. I tried reloading them from Time Machine and those seemed to be corrupted, too.  I eventually figured out that the problem is that it forgets about the Numbers '09 Applescript dictionary.  You need to quit Numbers 3, restart Numbers '09, then load the script.  Maybe restart for good measure.  Honestly, maybe skip the iWork upgrade.  Although I kind of like the cleaner UI design.

5. My script for the Calendar works, except the the last step is suddenly veeerrrry sllloooowwww, like 30 seconds.  No idea why.  Very annoying.  I like the new Calendar UI.

6. A couple more things: I used Time Machine and Carbon Copy Cloner to make my backup, but discovered that my new WD myPassport 1 TB external drive, which I really like, is formatted with MBR partitioning, so it can't be bootable, among other things.  So: (a) every time you get a new hard drive for your Mac, don't just repartition it like I did, reformat it using GPT, and then partition.  (b) CCC now costs money, SuperDuper looks like it is a more inexpensive solution to do the same thing... which is mostly irrelevant now, with Time Machine, though having a bootable backup looks like it could come in handy.

7. Oh, and somewhere in there my SSD went from 10 GB free space to 30 GB free space!

So: faster, better monitor support, and more free space on my SSD!  Overall looks like a big win so far!

Update 8 December: still very happy with Mavericks...  it (together I suppose with the VMWare Fusion upgrade to 6) is enough faster that I have gone back to leaving the Windows 7 VM running all the time rather than suspending it when I'm not using it, which is definitely more convenient. At the same time, browsing is noticeably faster, whether it's in Chrome or Safari.

Friday, July 26, 2013

The Land of Trac

In the third grade, our teacher Mrs. Smithy read us The Lion, the Witch and the Wardrobe, the first of C.S. Lewis's Chronicles of Narnia, in which a group of kids find a secret door in the back of a wardrobe and enter a fantastical, undreamed-of world.

In the fifth grade, in 1968, I became part of a group of kids that had found such a door.  The group was called the RESISTORS, and the door led to the world of computers and what is now called "information technology."

The group met in the house and barn of Claude Kagan, an engineer at the Western Electric Research Center in Pennington, NJ, near Princeton, where I grew up.  Claude was a complicated guy, by turns fun-loving, cantankerous, generous, childish, and more—but unswerving in his commitment to value of letting young people learn things and above all do things.  The principles of the RESISTORS were "Hands On" and "Each One Teach One," and those principles have stood me in good stead for the last 45 years.  (As I side note, last night I read a piece by Atul Gawande in the New Yorker in which he wrote that an essential realization in the dissemination of the medical miracle of oral rehydration was that when teachers fanned out to villages, the teaching was much more effective if the villagers made the solution under the teacher's instruction than if the teacher "showed them how."  This was one of the first things we learned as RESISTORS: if you are teaching people things, THEY should sit at the Teletype [a primitive 100 bps terminal, which no self-respecting Bangladeshi villager would tolerate today] and YOU should sit next to them, talking them through it.)

We used a number of computers and computer languages, but the computational beating heart of the group was Claude's PDP-8 computer at Western Electric, which we would dial into from a Teletype in his house.  It ran Trac, a computer language designed by Calvin Mooers, an independent thinker based in Cambridge, Mass.  The PDP-8 had 4K of RAM.  Yes, 4K, i.e. one one-millionth of the amount of RAM in the two-pound MacBook I'm typing on right now.  RAM was insanely expensive because it was made of little magnetic "cores" which were hand-strung, reportedly by armies of Filipinos.  OK, actually it had 4K of 12-bit words, so technically you could say it had 6K bytes.  A "Trac processor" (interpreter) could fit on such a machine, with some room left over for user-written scripts (programs).  There is really no computer today so minuscule that Trac makes sense as a language, and even fewer people would ever have heard of Trac today if Ted Nelson hadn't happened upon the RESISTORS and mentioned Trac in Computer Lib.

Eventually we had our own PDP-8 in the barn, donated by the manufacturer, DEC (Digital Equipment Corporation).  For us, DEC was the Rebel Alliance to IBM's Empire, to use an anachronistic Star Wars metaphor.  This was before Microsoft managed to suck the life out of IBM, and that was before... oh well.  The PDP-8 was the size of a "small household refrigerator," maybe 3' x 3' x 4', and it cost around $10,000 1968 dollars, and to be on the safe side you should have four guys to carry it.  And your digital watch now has a more powerful computer.

Interestingly, the one aspect of my RESISTORS experience that has been a part of my life ever since is the importance of teaching.  Computers have been a part of my life to varying degrees since those days; recently I had another spate of exposure because I had to maintain and extend a Python program that my son Ben was good enough to write me for a book project I'm working on.  It's a great program, but Ben is a busy guy and couldn't be at my beck and call to get it all spiffy, so I learned Python (which I really enjoyed, partly due to Norm Matloff's Fast Lane to Python, a great way to get started if you already know some programming).

So I finished the book draft and, unusually, had some free time while I wait for comments to come back.  Somehow I ran across Jack Trainor's partial Trac implementation in Python.  He followed Mooers' original instructions, which were designed to be implemented in assembly language, which is "goto-ful."  It looks like quite a torturous experience to try to implement them in the modern "goto-less" style, but he did it.  At the end of his post, he says "It would be interesting to rewrite this interpreter with modern techniques and to implement the rest of the primitives, as well as to set up TRAC to run interactively." Apparently I decided that's what I should do.  I didn't notice that he had in fact made (two) other implementations with more modern techniques, but oh well... and they weren't full implementations, and they weren't interactive.

I got the basics going in a weekend, but implementing the full language involved some very fussy stuff with the "form pointer," some Trac features I'd never used (the boolean primitives), and one I'd never even heard of (the IN primitive).  But after about 10 days, I wound up with what I believe is a full implementation of Mooers' "T-64" standard.  Programming in a modern high-level language, especially Python, is really quite a breeze.  Fellow RESISTOR and actual übergeek John Levine said (in an unguarded moment), "I have to say, it looks pretty good," which, if I recall correctly, is pretty much what he said when he read James Joyce's Ulysses, and which in any case is certainly the high-water mark for my programming chops.  Ben encouraged me to post it on GitHub, and (in the somewhat bizarre event that you care) you can download it from there without signing up just by hitting the "Download ZIP" button.  The README has a link to the language description and a Trac manual.

At some point, I thought, "My God, what am I doing...  I'm like a crazy middle-aged guy spending all his time in the garage restoring a Yugo to pristine condition because the first car he ever owned was a Yugo, even though his original one was always kind of a junker..."

But I started to think about the fact that my interpreter made essential use of recursion and the associated stack.  Somehow, the Mooers algorithm did all that without a stack.  Eventually I realized that the "neutral string," consisting of already-processed characters, essentially encodes the stack—it's an incredibly economical way to implement recursion.

My grandmother was born in the early 1890s and told me that she learned to drive on a "one-cylinder REO."  So after realizing how ingenious Mooers' Trac design was, I think of myself as the obsessive middle-aged guy in the garage restoring the 1906 REO, not the Yugo guy.  For whatever that's worth...

Tuesday, October 6, 2009

Weird problem with PowerBook G4

So my stepson Walker has a PowerBook G4 that he got from his dad, which stopped booting up.  It would get maybe a third of the way through the progress bar labeled something like "Mac OS X" and then it would go to a blue screen (light blue, not BSOD-colored) and hang.

My son Ben discovered that you could boot in single-user mode (holding down apple-S while booting) and repair the disk with "fsck -fy" (perhaps several times), and then rebooting would work.  In fact, rebooting turned out to be fine in general, the problem only happened when you powered the thing down.

Well, this was something of an odd problem—the hard drive worked fine while the machine was running but seemed to get corrupted by shutting down.  I hoped that reinstalling the system would work, and Apple was kind enough to supply copies of the missing install discs even though the warranty is long-passed.  (Though they did send two copies of disc 1 and no copy of disc 2... and a manual that said "PowerBook G4" in the title and on the same page said "PowerBook G5" in the subtitle...  hmmm).

So I reinstalled the system and the same thing happened... except that now fsck found an "Invalid Sibling Link" error, which it couldn't recover from (despite looking at this page, which many others found lifesaving), so the thing was broken worse than before!  (Yes, I zapped the PRAM, I reset the PMU, I smeared the chicken entrails...)

OK, so there must be some bad blocks on the hard drive, right?  A bit of google-assisted head-scratching told me that the mac way to deal with this was to erase the disk, zeroing out the data (under security options) and that this would take all the bad blocks out of circulation.  That did nothing.  I didn't really believe it, so with Ben's coaching I downloaded an Ubuntu live CD and ran badblocks...  which confirmed that, in fact, the hard drive seemed to be absolutely fine.

Some of the web searching I'd done suggested that the Sibling Link error often started up when people switched to a journaling file system, or when there was a problem with the PRAM.  So I reformatted the drive on installed as a "Unix format" (ext2?) and since then it has worked like a charm.

My best guess as to what caused the problem?  I'm guessing that the PRAM battery is dead, which can cause "unpredictable symptoms."  Looking around the web I haven't seen anything about corrupted hard drives, but it's hard to understand what else would cause a disk problem only on shutdown, with a hard drive that passes all the other diagnostics with flying colors.

Sunday, September 27, 2009

T-Mobile MyTouch (aka G2), one month on

So I've had my G2 for a bit over a month now; here are some first impressions.

1. I like it! It's sleek, it's cute, it does things. I don't feel bad for not having an iPhone. The UI is generally well designed, and I'm not easy to please in this regard.

2. It can be slow. I think there are two reasons for this:

2a. The processor is not fast enough and maybe it needs more memory. This means that actions sometimes time out, and you get a dialog offering you the chance to "force close" or "wait." In my experience, one round of "wait" almost always clears this up. The sluggishness is extremely annoying, though, when you are trying to take another incoming call. Maybe it's the sluggishness, or maybe I haven't figured out how to switch calls correctly and it's just a UI design problem.

Having read a bit about how the Android OS works, I think you can help avoid some sluggishness by keeping a smaller resource footprint: if you're not coming back to where you are in an app, back out through as many screens as you can to get to the home page, rather than hitting the home button. Then Android will not hold on to the state for each of those screens.

2b. Going to the calendar takes quite a while, I think because it is syncing with the cloud each time you go in. Between this and not having solved my attendee-entry problem, it means that I'm entering all my appointments into Gcal, and letting them sync up rather than adding them on the G2.

3. I'm glad I got the G2, in terms of memory and battery, and probably in terms of footprint, but I miss the physical keyboard from my old Treo 650.

4. The T-Mobile coverage actually seems quite good in the places I usually am. Not so good at my old house, so when I was there cleaning it out I couldn't use the phone much.

5. Haven't tried any programming yet, but I'm looking forward to that! Stay tuned for Minesweeper for Android! (maybe)

Monday, August 17, 2009

Palm OS to Google/Android: What Didn't Work (4.2)

What didn't work. Well, what did I try before that? Lots of things, with varying degrees of success (from zero to partial).

1. To preserve the link to the contact, it would have been nice to have a way to export from Agendus. Although Agendus has a menu item called "Export," it's always grayed out, and if you search the help file for "export" all you get is the part of the licensing agreement covering "Export Assurances." Agendus has been pretty good, but putting in a menu item for a non-existent feature is pretty cheesy, IMHO.

2. Next I tried "csv" files: these plain-text databases have been around probably since before VisiCalc was muscled aside by Lotus 1-2-3, if anyone remembers that there were spreadsheets before Excel. One of the difficulties of exporting contact data is that in the Palm DB you can set the labels for the phone fields, i.e. someone could have 5 "Work" numbers. I tried using Palm Desktop to export the address book, but it seemed that it just exported the phone numbers in order and used the default labels, so the user-defined label information was lost, as far as I could tell. In any case, the DB columns and the phone numbers didn't correspond correctly.

3. OK, so maybe if I were to sync with Outlook instead of the Palm DB, I could export the Outlook DB and the fields would be correct. I tried to sync using the HotSync conduits that come with the Palm software ("Start > All Programs > Palm > PIM Conduit Sync > Sync with Outlook"). This produced numerous "OLERR" errors. A Google search gave me the sense that this is pretty common. This is Palm's somewhat flailing set of suggestions for how you might fix this problem, and I wish to emphasize the word "might." The first thing I tried was to use DbFixIt ($12.95 from Pimlico Software, which I remembered from days of yore, experimenting with Pimlico's DateBk3 before settling on Agendus). Actually, it's free to check your DB for corruption, and $12.95 to fix it, which I don't begrudge in the slightest (especially since profits go to wildlife protection). Well, it found and then fixed a number of problems, but they were not what caused the Palm Outlook conduit gods to frown on my endeavors.

4. Next stop: PocketMirror (Standard) from Chapura Software ($29.95 with a 30-day money-back guarantee). This seemed to work, although it did generate some errors, which I contacted their tech support about. It's Saturday, by now. Or maybe Friday night (is this how I might have spent Friday night? Told you I was a geek). But there I was, looking at Outlook (2003) on my Windows VM and seeing lots of contacts and lots of events (but not all, it later developed).

5. So for the contacts: back to the ".csv" text file. I loaded it into Excel and deleted the many, many empty columns, just in case. Internationalist that I am, I still couldn't stand to have a field called "Business Postal Code," so I changed it to "Business ZIP". I reformatted the zip code columns with a "00000" custom format so that my zip code wouldn't come out as "2478" and I cleaned up a few other things (I won't bore you with a, uh, snafu where I sorted the first dozen or so columns but had left in a blank column so that excel didn't sort the last two dozen or so columns, kind of like sawing a deck of cards in half, shuffling one half and then gluing them back together, I really don't recommend trying this on any actual data. I hadn't been saving frequently and Excel (at least 2003) doesn't let you undo more than one step, so I had lots of stuff to redo on that one. OK, if you're still reading this maybe I did bore you. On the other hand, if you're reading this I will say that you don't bore easy or you have a very very high tolerance).

6. I then uploaded the csv file to Gmail Contacts. Presto! Lots of contacts. Oh, oops, the importer didn't understand that "Business ZIP" went with "Business City" and "Business State," so I had no Zip codes on the addresses, and lots of lines added to the Notes field that said "Business ZIP: 2478" and the like. What happened to my zeros?? Oh well, I could live with it, I decided. (I think that for the sake of "clarity" I'm not telling all of this in the order it actually happened, so by this time my resolve had been weakened by some of the steps detailed below. Lucky for me this didn't actually work out or I'd be cutting and pasting Zip codes for years. Or eventually got sick of it and tried to fix it with a program).

7. Having declared "victory" on the contacts, how about the calendar? Well, I was terrified of exporting the calendar as a .csv file because I was worried it would export recurring events as a sequence of many, many individual events, losing the ability to make changes on the whole series. Definitely not acceptable. But right there on the Google Calendar web site, it was telling me I could download "Google Calendar Sync" to my Windows VM and sync Outlook with the Google Calendar. I didn't really care about syncing, but uploading would be nice. So I downloaded and installed it. This is not a fancy looking piece of software. It's about as configurable as Apple's Time Capsule. (They both remind me of a joke tax form I saw as a kid: the "Simplified Form 1040," which had two lines "How much money did you make last year? _______" and "Send it to us _______." At least I took it to be a joke back then.) GCS has you put in your google account and password, and how many minutes to take between syncs, the default being 120. Sounds OK, I thought. I set it going and headed out to go pick up my sweetheart (from work, this was not an attempt to find a new sweetheart). Oh, yeah, this was definitely Friday early evening. Quite a thrill, toward the end of the errand, to go into the calendar on my G2 and see my appointments there, wirelessly. You can see how mired in the 20th century I've been—until now.

8. So far so good. Here's where things started to get quite ugly. I was cleaning things up in Google Calendar Saturday morning when I tried to edit a calendar item and got a message saying "You have reached the limit for the number of events you can edit," that the problem may be caused by "third party" sync software, and I should try again in a couple of hours, implying that the limit might be raised by then. Fair enough, I figured. I tried a couple of minutes later, no dice. I tried in the afternoon. Still no dice. Time for some research.

9. A (google) search came up with this current thread on Google Calendar Help forum. Some people were locked out after syncing, some people were locked out after inviting lots of people to events. There was lots of frustration and no comment from Google. One good soul (BigBenV) actually had a solution: export your calendar, delete it, and re-import it. Great! Unfortunately, when I tried it, it would only re-import about 800 of over 2000 events. Back to the drawing board. I also found this (archived) thread about the same problem, going back to November 2007. Some people reported that it took a week or two to get reinstated. On the second page, around post #28, there is a post from "Google Calendar Guide" in which a nice-sounding woman who signs her name Becky invites people to submit log files when they have this problem. Later, she says "We’ve made changes that should *mostly* alleviate this problem in the
future." That was June 2008. Oh well.

10. The verdict: unless you can afford to wait a week or two for Google to unlock your calendar (i.e. unless you don't use your calendar for anything particularly important), avoid Google Calendar Sync like the plague. I didn't spot it at the time, but looking around now I see this page from Google Calendar Help asking people upload their log files if they're having this problem, so the problem is still current. The whole experience gave me some pause as I google-ify my life: this is a problem that's close to two years old, if not older. It's caused a lot of inconvenience for quite a few people, and it seems that there are simple things that Google could have done to soften the problem (e.g., as one poster suggested early on, giving people the option of typing a "captcha" to complete each edit) or to be more accurate in saying how long the resolution takes. Google products don't seem to have "support" in the usual sense. As long as the products are things like search and mail that squintillions of people use, this seems to work relatively well. But when you get to products that are more niche-oriented (even though I would imagine syncing with Outlook could be a big niche), it may present problems.

Luckily for me, I found a way around Outlook completely, via the Mac, as detailed in the previous post.

Palm OS to Google/Android: What Worked (4.1)

OK, so Thursday I got my spiffy new T-Mobile "myTouch" (I'm going to call this my G2 from now on, to keep from gagging). It looks pretty cool, but of course it's no good to me without my calendars and contacts, which are on my old Treo 650. For my calendars and contacts, I've used a program call Agendus from Iambic Software for a long time (I think it was called "Action Names" when I first started using it, and since then it's gotten upto Agendus 13, so we're talking a good stretch of time in dog years). Agendus has a Palm OS client and a Windows client, and it lets me link an appointment to a contact. Since most of my appointments are meetings with patients, most of my appointments consist of just the link, without any other description. Agendus uses the native Palm databases, and it just appends " [Doe, Jane]" to the appointment if that's the contact you chose. If I get hooked on this blogging thing I will rant on this at some length since it's related to why I decided not to get an iPhone.

I was hoping that when I migrated the data, I might be able to preserve this link to a contact (eg as a "guest" in Google Calendar), but no such luck... So now I have tons of appointments on my Google calendar with "What" fields like " [Bullock, Sandra]" (just kidding, I don't have any meetings with her, but that's the first name that came to mind for some reason that I probably really don't want to know). Well, I can live with that; my calendar is still reliably searchable, which is one thing I need.

My current computer set up is this: I have a MacBook Pro, and I run Windows XP under VMWare Fusion (I cannot say enough good things about Fusion, BTW, and you will notice this is not true of many pieces of software for me). I got the MacBook maybe two years ago, and thought about moving my contacts and calendar to the Mac, but there was no Mac version of Agendus. So I've been continuing to sync my Treo using the Windows software.

I've been using Palm OS since 1997 or so, and I have almost 2500 contacts and probably 3000 calendar items (many, many more if you count individual instances, since many of my appointments are weekly). So I need something pretty robust to upload all of this to gMail and Google Calendar.

What worked. To cut to the chase: after years of avoiding syncing my Mac with the Treo, I used "The Missing Sync," from Mark/Space Software, to load my events into iCal and my contacts into the Mac Address Book. I spent $40 for this program, I don't expect to use it ever again, and it seems to have been worth every penny (see my next blog entry for the many problems I had with other approaches). [I realized as I was proofing this that the number of people who use Agendus on a virtual Windows machine running on their Mac may be relatively small (like, if there is another one of you, drop me a line). But nothing in this is particular to Agendus, it all applies to the usual Palm DB. You may need to find a friend with a Mac (but if you do, they'll probably want to create a separate User account for you, so you don't get synced with their iCal and Address Book). Or if you are fortunate enough to have cash lying around, maybe this will convince you to buy a Mac.

1. For the contacts: Missing Sync loads your contacts into the Mac Address Book database. For each category, it creates a group whose members include every contact who was in that category. (If you have a lot of groups in your Mac address book, you may run into trouble here because there's a limit of 15. I only used the Mac address book for email addresses, so I didn't have a problem here. Missing Sync has way to tell it to sync particular groups only, but it doesn't have a way to tell it not to sync a particular group. I don't really understand the technicalities here because I didn't run into a problem). As a happy extra, Missing Sync merged the email addresses in the Mac database with the address/phone etc info in the Palm DB, rather than leaving me with duplicates to merge by hand. Missing Sync also warned me with each DB sync that was going to change more than 5% of the records in each DB. It meant that I needed to interact during the sync, but it's a good example of how well thought-out the software seems to be: I can see that this feature could prevent some disasters.

From there, all you do is click on the "All" group in the Mac Address Book app, and go to "File > Export > Export Group vCard...," to export the contacts to a file. In Gmail, click on "Contacts" on the left sidebar, and then on "Import" along the top. I had actually deleted all my contacts before, because of some of the less successful attempts describe in the other post, so I don't know whether it tries to do any automatic merging. But I discovered that if you check two or even three contacts, Gmail will offer to merge them, and if you click it will propose something reasonably intelligent. So merging contacts one-by-one becomes quite painless. Score another point for the big G.

It was straightforward and it seems to have done a good job.

2. For the calendar: Missing Sync takes each of your datebook categories, and turns it into a separate iCal calendar. In iCal, you do need to go through these calendars one-by-one: click on the calendar, go to "File > Export..." to save the calendar as a ".ics" file. In Google Calendar, create a Calendar for each category by clicking "Create" under "My Calendars." Then import the file for that calendar by clicking on "Add" under "Other Calendars" and selecting "Import Calendar" which will take you to a screen which will let you upload the file you exported from iCal.

It's worth mentioning that your "main" calendar uses your gmail address as its name, and there doesn't appear to be a way to change the name. So you may want to take one of your categories/iCal calendars (such as "Home") and import it into your main calendar rather than creating a Google calendar called "Home."

This seems to have worked pretty well except that gCal choked importing my "Unfiled" calendar. A number of times it gave me a "Server Error" message saying gCal was temporarily unavailable and I should try again later. It seemed to have brought over lots of events (at least the recent ones, which I care about the most). But it would have been nice to have it tell me it's successful. The last time I tried again it imported 8 (out of maybe 800) events, saying I didn't have sufficient access to my calendar to import the rest. So there was this one glitch but given everything I'd been through, I was pretty happy. So now I have all my categories showing up in different colors, on both gCal and on the G2.

I do have an obscure problems with repeated events: I have a lot of weekly appointments, but if someone's on vacation we cancel an appointment out. Calendar programs handle this internally by having "exceptions" to recurrent events. All of these exceptions seemed to upload fine to iCal and from there to gCal but for some reason they did not seem to make it over to the G2. Maddeningly, even when I delete the extra appointments that were supposed to not be there, they come back. I'm hoping that this is just a problem with the uploaded data, not a problem with appointments that are entered into gCal, and when I tested the situation with a new recurrent event created in gCal, the exception seemed to get to the G2 just fine. Stay tuned and I will definitely rant if this keeps happening with newly entered data.

But so far, so good!