Thursday, January 03, 2008
Python Quick Reference
If I end up doing more simple programming, my choices are likely to be AppleScript (ugh) and Python (yay).
Wednesday, January 02, 2008
AppleScript - summarize email is useful
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 executedMy 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.)
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...
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
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">Ok, so that's not very useful. Here's the outline:
AMApplicationBuild
88.2
AMApplicationVersion
1.0.5
AMDocumentVersion
1
Owning Application
/System/Library/CoreServices/Finder.app
- Get Specified Finder Items (don't have any values there when you save the script)
- Sort Finder Items
- Combine PDF pages
- Move Finder Items
- Open Finder Items
Removing embedded carriage returns from Microsoft Access
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
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 WantedI've noticed two annoyances so far with GrandCentral:
... 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'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.
- 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.
- 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.
- They don't support fax-in, I'd be glad to pay for this service.
- 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).