Wednesday, January 02, 2008

AppleScript - summarize email is useful

I have a library of AppleScript books, but I've never done much with it -- in part because I always thought it was one step away from extinction. It's also a really lousy programming language (scoping anyone?).

Well, whatever its past status it's still with us, and Apple has even fixed up their once decrepit AppleScript: AppleScript Examples page. Automator and AppleScript have been revised in 10.5, the documentation finally left the 20th century, and Python hasn't taken over completely ... yet (alas).

Even in 10.4 I'm rediscovering useful things. Take, for example, the little known "Summarize Message" script buried away in the Mail Scripts folder. Here's what it does:
... This script demonstrates how to write a script that can be executed
directly from the Scripts menu in Mail. It acts on the selected messages,
which are passed in to the 'perform mail action with messages' handler.

This script will take the selected message, create a summary using the
summarize command built into the Standard Additions, then speak the
summary using the say command, also built into Standard Additions...
My mother's vision is failing. This is something she could use, though I've already programme done key to active the built-in generic reading engine. Too bad Mail.app doesn't let me attach a script to a nice fat icon, but I might create a rule that would routinely read each message she opens. (Rules are hidden away in mail preferences -- which is not a logical place for that function.)

By the way, my favorite 10.4 voice is "Vicki". I hear 10.5 has even better voices.

Update: After a bit of experimenting I created an Application from Summarize Email. I then gave it a nice icon from the Icon Factory and put it in the Dock. So it's easy to click on whenever my mother is reviewing her email.

Merging PDFs with OS X Automator

I'm an Adobe Acrobat guru -- too bad it's such a poor quality product. Bad as Acrobat is in XP, it's worse in OS X. Among other things, Adobe can't figure out the concept of a non-admin user.

So I stick with OS X Preview and built in OS X PDF tools. The main thing I miss is the ability to merge and split PDFs.

There are a few OS X utilities to do merges (and more), but it turns out Automator will do the trick (macosxhints.com).

See the macosxhints writeup for the full story. I saved my script as a Finder Plug-In (stored in \Library\Workflows\Applications\Finder), so now I can select any set of PDFs, choose Merge PDF, and they're assembled into a single (oddly named) file on my desktop. The script appends in alphabetic order, so I use a numeric prefix if I want a particular order.

This is the first Automator script I've tried that's really useful!

This is what my script looks like:
!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">


AMApplicationBuild
88.2
AMApplicationVersion
1.0.5
AMDocumentVersion
1
Owning Application
/System/Library/CoreServices/Finder.app
Ok, so that's not very useful. Here's the outline:
  1. Get Specified Finder Items (don't have any values there when you save the script)
  2. Sort Finder Items
  3. Combine PDF pages
  4. Move Finder Items
  5. Open Finder Items
Note that if you omit the Move step the files are saved in an occult (invisible) tmp folder.

Removing embedded carriage returns from Microsoft Access

Carriage return. Such a wonderfully archaic term for the hidden byte that ends a line of text. My children have no idea what kind of carriage can return.

Speaking of archaic, applications like Microsoft Access have trouble with carriage returns. They can't easily be inserted into a text field, but ODBC imports from more sophisticated applications, such as FileMaker Pro, can insert carriage returns into Access fields.

Problem is, there's no easy way to remove them. Fields with embedded CRs behave oddly when edited, and exports and queries break. Search and replace won't work.

I found a method that works.

Export the key column and the troublesome field as XML (no XSD). Then use a text editor to replace every carriage return with a space. The result is a single line, but this doesn't affect XML import. Reimport the XML and the carriage returns are gone.

There are probably better methods.

Update 1/2/07: I ran into another issue where an Access field appeared empty, but it was not NULL. I used 'not null' and 'len=0' to identify these fields, then set them to NULL. Probably another character set problem. I have finally liked all the problems with creating a database that works with Outlook 2003, the PalmOS, sync to Palm, and FileMaker (via ODBC). More on that after I get some sleep.

Monday, December 31, 2007

Yet another identity of mine: MyOpenID

I posted a month or so ago about the identity sources I've committed to. Now I can add MyOpenID: John Faughnan , per Jon Udell's implicit recommendation.

A few comments on MyOpenID (and OpenID services in general):

  • MyOpenID is a provider of OpenID services. If you have the time, geekiness and a domain/website you control you can roll your own. Blogger now supports OpenID authentication for comments, Microsoft is baking OpenID into .NET Windows CardSpace, and Firefox 3 is supposed to have some OpenID management functionality.
  • The "blurb" function of the primary page is broken today.
  • Each account can have multiple personae, any of which can be exposed publicly.
  • There's a easy-to-find function to delete an account

I'd add my GrandCentral number as yet another identity, but I presume that will be bound my "113" Google persona. I also have Yahoo and Microsoft Live identities, but I try not to think of them.

I particularly like the personae management capabilities. Anonymity needs to shrink considerably on the web, but in its place we need the ability to manage multiple personae (aka avatars), each with their own managed reputation -- and the ability to create and destroy personae as needed.

I'm thinking these identity management skills will be second nature to our children, but I'm not confident I know how this will all develop.

JanRain runs MyOpenID, I assume they're aiming to be acquired by Google.

Update 3/4/2008: ClaimID.com provides similar services, also recommended by Udell.

GrandCentral: child accounts, features explained and annoyances

I'm planning to give all the children a GrandCentral number. I'll control the number and email of course -- until each child snatches the pebble from my hand.

At first the number will route to our home, but in time it will route to their personal phones. When they're old enough they get the password and route calls as they will.

So as I set this up I'm exploring GrandCentral features. I liked the explanation one blogger provided for "CallSwitch" (click the link for a description of all GC features):
Web Application Developer: Grand Central - All The Phone Services You Wanted

... CallSwitch: That name is really deceiving. It really should be called 'phone switch', because it lets you re-ring your phones in the middle of a call. So - someone calls. It rings the house. The problem is that I'm getting ready to get out the door. I could call them back on the cell, or I could hit a button on my phone, and the call will ring my phones again so I can pick up the cell. Again on the cell-minute-saver, if I'm outside mowing the lawn, and get a call on the cell, I can take it, walk into the house, hit a button, switch the call to the house phone, and save the minutes...
I've noticed two annoyances so far with GrandCentral:
  1. I'd like to be able to send all calls from my own cell to voice mail, so I can use my phone to capture thoughts and ideas as I drive. This works with MaxEmail, but GrandCentral handles all calls from my cell number as a request to check my voice mail.

  2. Given #1 I think it won't work to add my home number as a GC number, if I do that then nobody using my home phone will be able to reach me. I suspect the GC team were too young to have children.

  3. I wish they supported RSS for notification instead of email. I can work around this though because Bloglines supports creating an email address that generates a feed. So I use this as my GrandCentral notification email.

  4. They don't support fax-in, I'd be glad to pay for this service.

  5. There's no integration with the Gmail contact service and the Gmail import is very old fashioned (doesn't use the Gmail API at all).
GrandCentral is obviously ripe for a vast amount of improvement; we'll have to see how clever Google gets with the service.

GrandCentral introduces visual voice mail for any cell phone

I don't think Google's GrandCentral is open to new subscribers yet, but it's interesting that in advance of Google Android they now have visual voice mail.

Why hasn't anyone improved Blogger's BlogThis! tool?

Blogger is certainly a proletariat blogging tool, but even so it does have a vast number of users, some of whom must be qualified geeks. It also has a well documented API.

So I'm surprised that we're still using the same crummy bookmarklet that we used before Google owned Blogger:
What is BlogThis! ?

....BlogThis! is an easy way to make a blog post without visiting blogger.com. Once you add the BlogThis! link to your browser's toolbar, blogging will be a snap. Or rather, a click. Clicking BlogThis! creates a mini-interface to Blogger prepopulated with a link to the web page you are visiting, as well as any text you have highlighted on that page. Add additional text if you wish and then publish or post from within BlogThis!...
The Google Firefox toolbar includes a similar function (SendTo Blogger) that may actually be inferior to the original Blogger bookmarklet.

I've used these two solutions for years. They're crummy. Let me name a few of the problems:
  1. No access to tags (labels) from the SendTo Blogger UI or the bookmarklet.
  2. Variable bugs -- lately the SendTo Blogger window has aquired its own redundant scrollbars when used in the latest version of Firefox.
  3. Limited toolbar (no bullets, no image, video, upload)
  4. Using Blockquote tags in RTF when the start of string includes a link creates an empty href tag preceding quoted text.
  5. Many bugs with copying highlighted text into the post, lately truncates text.
  6. No 'edit this post' button on the post-submit dialog. Instead need to right click on edit posts, choose open in new window, then find the draft post in list then click on draft post.
The list goes on.

So why hasn't some Googler devoted a portion of their 20% time to fixing this functionality? Why hasn't any hacker created a Firefox extension to replace the bookmarklet/toolbar function?

I think if we knew the answers to these two questions we'd understand something about a lot other modern software frustrations.