Thursday, November 03, 2005

Microsoft Office SP2 disables ability to edit an Excel spreadsheet via Access

This morning a routine tool I use stopped working. My access query that appends to an Excel spreadsheet gave me this unhelpful error message: Operation Must Use an
Updateable Query.

I spent an hour fruitlessly trying to figure out what had happened, then I gave up and rebuilt it using another approach. I asked around on usenet and got a quick and accurate response

The response pointed to this Microsoft kb article:
You cannot change, add, or delete data in tables that are linked to an Excel workbook in Office Access 2003 or in Access 2002

...This expected behavior occurs when either of the following conditions is true:

• You have installed Microsoft Office 2003 Service Pack 2 (SP2).
• You have installed the update for Access 2002 (KB904018) that is dated October 18, 2005.

...
MORE INFORMATION

Because of legal issues, Microsoft has disabled the functionality in Access 2003 and in Access 2002 that let users change the data in linked tables that point to a range in an Excel workbook. However, when you make changes directly in the Excel workbook, the changes appear in the linked table in Access.
The kb article includes a set of workarounds that are pretty humorous, along the lines of 'open Excel and type in the data'. Evidently Microsoft has fallen afoul of a patent (a stupid patent I'd wager).

Wow. I wonder how great a productivity hit this is around the world. I would really like to know why Microsoft didn't put a prominent warning in the installer for SP2 or on their SP2 web site. Did the courts forbid notification? Did Microsoft think no-one would notice?

This combination of non-notification and loss of functionality from a "service pack" is unprecedented. Microsoft seems to have become a very troubled company very quickly.

Wednesday, November 02, 2005

Working around iTunes lack of multi-user support

Update 2/28/06: Geez, this is complex. I ended up giving up on the sync approach when I found I could do just as well by dragging and dropping a music folder from my Public folder onto my wife's copy of iTunes. (I only need an update sync, not a true sync.) However, some things didn't work. My wife couldn't select a bunch of tunes and edit ratings and preferences across the group, she could however set preferences on one file at a time. I had a hunch permissions were an issue. She could read from but not write to the Public folder.

So, I next used Sharepoints to create a new Group called Parents (grrrr. OS X should have an easy bundled GUI app to do this -- in this regard OS X is as bad as XP Home.) and added Emily and I to that Group. Then I set permissions on the Music folder within my Public folder so Parents could read and write to the Music folder. This fixed the problem.

Why is write access required to set ratings using one method, but not with another method? I don't know, but I'd bet I've uncovered some hacked designs in iTunes.

Update 11/8/05
: MacOSX Hints has a version of this that's at least comparable if not better. I might integrate the two some day or leave it up to the reader! The MacOSXHints submission includes an AppleScript that looks like it may update the Client's Library database when tunes are added to the Master Library. That sound great and I'll try it.

Update 11/10/05: The synchronization script referenced in Mac OS X Hints didn't work when two users were on the same machine and used Fast User Switching. I figured out how to revise it to support FUS (my first ever AppleScript project). I posted the sample code to the comments section on the Mac OS X Hints article. I may create a web page for this sometime; the techniques are apparently undocumented. (Parenthetically, I think AppleScript's days are numbered -- the lack of documentation is impressive.)

Update 12/11/05: It turns out there's a much easier approach that just works with iTunes. After adding new tunes to the 'master user', switch to the 'client user'. Then click on the folder containing all the music. Drag and drop to the left side of iTunes. iTunes compares and only adds references to the new music. View by date added and add to playlists as desired.

Here's my original article with its updates:

There's a "design flaw" in iTune when it comes to multi-user support.

Here's a brief version of the hack to work around it. I'll write more when I'm less tired.
1. Move iTunes Library to Public folder of iTunes owner. (If you don't know how to do this you shouldn't be trying a hack like this!).
2. User 2 opens Public Folder. Copy 'iTunes Library' file to User 2 music folder.
3. Open iTunes. Change advanced prefs on Library to 'don't copy when add'.
User 2 now has their own database pointing to the music repository. They can rate songs, create playlists, etc -- all independently. They can sync with their own contacts and calendar and their own version of iPhoto. (Ahh, but you want to use the shared iPhoto library? Tough luck! Similar set of problems as with iTunes. I'm still working this one. For now I export the images that will go on my wife's Nano.)

But what about songs I add to my collection in future? I have experience with this in another setting. You keep track of what you added and you drag and drop the folder into iTunes for User 2. iTunes will add the songs by reference (since pref is set to 'no copy'.) A bit tedious, but not that hard really. We only add songs occasionally. When you do this drag and drop by the way, iTunes does not create duplicates, it's very good at resolving these conflicts.

Can user 2 do damage? Not to the music library. They have read but not write privileges on the Public folder. [see 2/28 update for why this doesn't quite work]

Update 11/3: A longer version of the above that I submitted to MacOSXHints:

iTunes is designed to support multiple iPods, but not multiple users. In particular attributes like "last played" and "ratings" are meaningful only for a single user. Contacts and Calendars are also user specific.

That's fine, unless your spouse (SO, daughter, son, etc) has their own iPod. Each time they sync they'll mess up smart playlists that depend on "last played", and "ratings wars" may occur.

Of course they could have their own music collection and sync in their own user account. That's presumably what music owners would like. Communal property is not their favorite topic. Apple could readily fix this (see below) but their music partners would likely object.

There's a workaround. I used something similar to this in the past and it works reasonably well if you have a mature music collection and are not adding a ton of new music.
User 1 moves iTunes Library Music to User 1 Public Folder (iTunes will do this for you if you change Library location then tell it to consolidate). Copy User 1 iTunes database there to for the moment using the Finder (ignore the xml file, iTunes recreates that).

User 2 copies the iTunes database file to their default location, deleting their old database. Start iTunes. Change advanced options to uncheck import into iTunes when adding music.

User 2 now switches to their account when syncing. They set ratings, etc. They have their own Playlists.
What about new music?
User 1, Administrator, handles all new music import.

After new music is added Administrator switches to user 2 account (need to know pw of course, otherwise user 2 has to do this) and uses Finder to navigate to newly added music.

Administrator starts user 2 iTunes and drags and drops new music folder into user 2 iTunes.
iTunes is very good at adding references to the new music, but it does not move the music into iTunes because we unchecked the 'move into library' option.

Note that User 2 cannot delete music (read-only privileges on Public folder). User 1 can delete, but User 2 will have dangling references. So, periodically Administrator must delete dangling references in shared libraries, though in fact they don't really do anything -- they just look unsightly. (I think there's an AppleScript that might do this.)

OS X users and groups: not much progress since 2001!

I have a scheme in mind to get around the DRM-constrained design "flaws" in iTunes for a multi-user family.

The first step is to create a shared folder that's read-only for most of the family. That's where the iTunes music files will live. Problem is, that's not easy to do in OS X. As near as I can tell this 2001 article is still true today: The Mac Observer: Hot Cocoa - Unlocking The Power Of Groups In Mac OS X. I think there are some more GUI utilities one can buy (ex: Sharepoints), but Apple has not addressed this -- probably because this is the province of OS X server. Mac Classic was far more useful as a home file server.

Microsoft did the same yucky thing; in many ways Windows 95 was a better fileshare than Windows XP Pro. In this case, though, Apple is even worse than Microsoft.

Anyway, getting the file share working is the least of my concerns! I can do the command line stuff or use sharepoints. This will be interesting ...

Update 2/27/08: I put my iTunes Library in my Public folder, which grants read access to everyone, but no write access. The Shared folder grants read and write access to everyone. That seemed to work, but I discovered that iTunes actually uses a mixed model to store metadata. Some is stored in the internal database, some stored in the local file system. It's complex, I think there are some significant deep design problems with this in iTunes. I need to experiment with granting write access to one user but not the children. Looks like I'll be donating money to Sharepoints if it works!

Fix for 10.4.3 fan problems: unplug and restart and resetting the SMU (PMU?)

[Via macintouch]

Interesting! Seems to work for many who get roaring fans: Turn off, unplug, push power button to drain (capacitor issue?!) then plug and restart.
Macintouch - Mac OS X 10.4.3

10.4.3 Fan Problems: A big thank you to Peter Trondsen for his tip of disconnecting the power cord and pushing the power button. My rip roaring iMac G5 is quite again.
Anything that involves capacitors in the iMac worries me, and the pushing power button to drain sounds like a capacitor to me (I'm no EE though.).

An Apple kb article talks about the same sort of thing -- another bizarre embedded smart device management unit is causing trouble, and has its own exotic reset:

The SMU (System Management Unit) is a microcontroller chip on the logic board that controls all power functions for your computer. If your computer is experiencing any power issue, resetting the SMU may resolve it. The SMU controls several functions, including:

* Telling the computer when to turn on, turn off, sleep, wake, idle, and so on.
* Handling system resets from various commands.
* Controlling the fans.

Note that resetting the SMU does not reset the PRAM. Resetting the SMU will not resolve issues in which your computer is unresponsive—in these situations, restarting your computer will generally suffice. If your computer isn't responding, perform these steps one at a time, in this order, until the issue has been resolved:

1. Force Quit (Option-Command-Escape).
2. Restart (Control-Command-Power).
3. Force Shut Down (press the power button for 10 seconds).

Resetting the SMU can resolve some computer issues such as not starting up, not displaying video, sleep issues, fan noise issues, and so on. If your computer still exhibits these types of issues even after you've restarted the computer, try resetting the SMU. To reset the SMU on an iMac G5 (Ambient Light Sensor) computer, simply do the following:

1. Turn off the computer by choosing Shut Down from the Apple menu, or by holding the power button until the computer turns off.
2. Unplug all cables from the computer, including the power cord.
3. Wait 10 seconds.
4. Plug in the power cord while simultaneously pressing and holding the power button on the back of the computer.
5. Let go of the power button.
6. Press the power button once more to start up your iMac.

Unlike earlier iMac G5 computer models, the iMac G5 (Ambient Light Sensor) and iMac G5 (iSight) computers do not have a button on the main logic board for resetting the SMU. This eliminates the need to remove the computer's back cover to reset the SMU.
Not to be confused with the Power Management Unit! Arggghhh. Apple's embedded OS devices drive me crazy. I wonder if the 10.4.3 update tries to update the SMU logic and that causes the fans to roar. The SMU reset article suggests that owners of 1st generation iMacs won't benefit from the unplug trick -- they'll have to open the iMac and push the internal reset button.

I'm getting similar problems though with 10.4.2 and my iMac; I dropped the CPU to "low" to reduce heat and the system quieted. That happened after a memory update; I wonder if installing the memory somehow confused the SMU, but it's true I'm also running iTunes continuously now. I'll try this and report what happens.

Corruption in blogger database producing lost posts?

This is a bad bug. I created a post in Blogger yesterday that has vanished. It's still on blogspot
but it's not accessible in Blogger. If I click on the edit link that appears (when authenticated) below viewed blogspot files I get this error message:

The post you were looking for was not found.

From the error message I can see the blog and postid for blogger:
blogID=5710205
postID=113090838306544429

The only way I can see this kind of asynchrony is if there's a corruption problem in the blogger database. Not good.

I only discovered this because I had a link to the now lost posting in another blogger post that still exists. I wonder how long this has been going on.