Monthly ArchiveJune 2005



On the Road 21 Jun 2005 11:13 pm

The Glory of New Hampshire

Living in New Hampshire has been an interesting experience for the last five years. One of those interesting things is the state motto: Live Free or Die. This motto is expressed succinctly on the front of all AAA TripTiks: “Seatbelts required in all states and provinces (except New Hampshire)”

A few weeks ago I left work early to go to a dinner. On the way back down to the Massachusetts border, we notice heavy traffic, which is not unusual for the time of day. we later found out that earlier in the day (about an hour after I went though), a man driving an SUV didn’t see that the traffic was stopping and ran into the back of another car. About a mile into the Granite State, he took the motto to heart: he was not wearing his seatbelt, was ejected through the windshield and died at the scene.

Live Free or Die.


At least there are still license plates:

  • FNDHER - Either he lost someone special or he’s an over the top fan of the Macintosh operating environment.
  • REJUVN8 - Feeling better already
  • JEDINT - Even out in the daytime
  • PRFCHSN - If you figure it out let me know. I’m not sure.

Computing : General 19 Jun 2005 09:58 pm

Why I Like Cable Modems

This graphics shows wy I like my cable modem and why I laugh when Verizon offers their high-speed 768k DSL.

Safari003.png

My Life 17 Jun 2005 06:30 am

Sworn Promises

I swear by that which is sacred to be a true friend and companion and to love you throughout our life together.

I promise to give of myself fully, to you and our family, so that as individuals we may grow and create a joyous life-long experience together.

Computing : Mac 16 Jun 2005 11:41 pm

The Preferences Pattern

When writing my AppleScripts I try to allow for enough flexibility for each user to set the script up to his/her liking, without requiring that all of the questions be answered each time the action is performed. In other words: saved preferences.

In my latest scripts to be updated (Rename Files and Remove Missing Tracks), I have switched to a new form of preferences (writing a structure to a file) and have tried to create a series of functions and properties which can work together and be the same in all of the scripts.

The preferencesFilename property stores the name of the file that will be stored in the preferences directory. All of these files names should begin with net.plaidcow.

The LoadPreferences() function is responsible for loading the preferences from the disk and assigning them into the global variables. A template of is shown in this code (Edit):

on LoadPreferences()
SetDefaultPreferences()

set theFile to (path to preferences from user domain as string) & preferencesFilename as file specification
try
set thePreferences to item 1 of (read theFile as list)

– Set all of the globals based on the data in the file,
– wrapping each set statement in its own try block
try
– Set the global to the data from the file
end try
end try

my UpdatePreferencesDependencies()
end LoadPreferences

The function starts off with a call to UpdatePreferencesDependencies() which will ensure that all of the preferences have been set to valid values. Since the read command is located within a try block, not error will be thrown if the file doesn’t exist. Assuming that the file was read, each of the parameters can then be read out of the structure that was read from the file. By wrapping each of the command to set a single parameter in its own try block, any parameter can not exist the the reading of the preferences will not fail. (This should allow the adding and removing of parameters between versions with no ill effects.)

The SavePreferences() function calls is a simple aggregation of the global preferences into a list, and then the writing of that to the preferencesFilename. In this sample code (Edit), the global notificationType is being saved:

on SavePreferences()
set thePreferences to {notificationType:notificationType}

set theFile to (path to preferences from user domain as string) & preferencesFilename as file specification
try
open for access theFile with write permission
set eof of theFile to 0
write (thePreferences) to theFile starting at eof as list
close access theFile

on error

try
close access theFile
end try
end try
end SavePreferences

UpdatePreferences() calls a series of user interface command to get the user to input new values for some or all of the preferences. After inputing these, the UpdatePreferencesDependencies() function is called. Unless another mechanism is being used, this is the time to cal SavePreferences()

The ResetPreferences() function calls the private SetDefaultPreferences(), followed by private UpdatePreferencesDependencies(). This code should be the same for every implementation (Edit):

on ResetPreferences()
SetDefaultPreferences()
UpdatePreferencesDependencies()
end ResetPreferences

The last of the preferences function are two that should not be called from outside of the other preferences functions. (Alas, there is no way to declare private functions, so just don’t do it.) SetDefaultPreferences() sets all of the global preferences to their default values. UpdatePreferencesDependencies() updates any of the other variables in the script which may depend on the value of one of the preferences. One example of this is the notifier object, which saves it’s type of notification in a global variable.

On the Web 12 Jun 2005 10:00 pm

PayPal Phishing

I recently got an email claiming to be from PayPal about a change in their terms of service.

PayPal has recently made several important changes to our User Agreement and Privacy Policy. Please read the new User Agreement and Privacy Policy, because they contain important information about your PayPal account, your rights as a PayPal user, and the ways in which PayPal will use your personal information.

After you have reviewed the User Agreement and Privacy Policy below, please choose the “Yes” radio buttons and click Continue. https://www.paypal.com/cgi-bin/webscr?cmd=_login-run

If you fail to read and agree to the new User Agreement within 120 days, PayPal will assume you do not accept PayPal’s User Agreement and prefer not to do business with PayPal. In such circumstances, after providing additional notice, PayPal will limit your access to your PayPal account and will payout any remaining account balance under the terms of the old User Agreement.

Note: The User Agreement below will take immediate effect for all PayPal accounts signing up on or after February 7, 2005. PayPal accounts who signed up prior to February 7, 2005, will have 120 days after the date they next log in to their PayPal account to decide whether they agree to the new User Agreement. These accounts will continue to be governed by the old User Agreement until they agree to the new User Agreement, or until January 1, 2006, whichever comes first. Thank you for your prompt attention to this matter.

Sincerely, PayPal Account Review Team
——————————————————————

Please do not reply to this e-mail. Mail sent to this address cannot be answered. All of the information necessary to restore your account access is available on the PayPal website. For assistance, log in to your PayPal account and choose the “Help” link in the header of any page.

——————————————————————

The factor that confused me wasn’t that it wasn’t an HTML e-mail (which is the format that Paypal usually uses), but that it came to an address that I don’t have a PayPal account with. How many PayPal emails can you get sent to bidpay-payments@ before you start getting suspicious. And since I started writing this, I got the same email at paypal-creditcard-payments@, leading me to believe they are scraping email addresses that are found on eBay pages.

Apparently the Phishers are getting better.

If you’d like to see how well you can do at spotting the real sites from the fakes, take this quiz. I took it for the second time and still only got 8 out of 10 right.

Computing : General 10 Jun 2005 06:48 pm

Movable Type Dynamic Publishing Error

As is described in this article [Google translation], if you enable dynamic publishing of templates:

mtdpe1.png

You will get an error saving (at least some) templates:

Saving object failed: Update failed on SQL error You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near ‘ template_created_on = ‘00000000000000′, template_created_by =

If you turn of dynamic publishing, then you will not get the error. The person with the original report seems to have a much better understanding of what t takes to actually fix the bug. I just want to get the text of the error in a page so that hopefully others can see the temporary workaround.

Well Said 08 Jun 2005 11:35 pm

Wally on The Meaning of Life

In a fairly old Dilbert cartoon, Wally explains life to Asok:

“Being required to wear a button saying ‘I’m Empowered’ is everything you need to know, wrapped up in one package.”

My Life 08 Jun 2005 09:42 pm

Garth Brooks for Sale

In an effort to clean some of the stuff off my desk, I am offering up three different CDs from Garth Brooks, all the original releases (ie, no Bonus Tracks), for the low price of $2 each (shipping included). * Fresh Horses * No Fences * Ropin’ the Wind

Post a comment if you are interested in one (or more). First come, first served.

Computing : Mac 07 Jun 2005 07:27 am

Apple Installer: Less than Gracious

I was trying to install an un-named Safari add-on and found that the installer required administrator access, so I sent the company an email and asked them why. The reply came back in less than a day:

[Our program's] components are installed at the system level, rather than the user level. Therefore, admin privileges are required to make sure the directory permissions end up correct.

[Our program] actually works just fine installed at the user level, but Apple’s Installer is less than gracious with installing software there. If Installer is ever modified to adequately support user-level installations then we’ll probably move [our program], or at least give you an option.

Not sure what limitations are being referred to in the Installer program, but I will post and update if I find out.

Update:

It’s been a feature request or bug report within Apple for a very long time. Why Installer hasn’t been modified is a mystery, but even Apple acknowledges the shortcomings. For example, see this recent web page:

Look at the section for installing Automators. Apple provides an installation AppleScript script for installing into the user’s home directory, and they recommend using Installer for system-level installations.

We’ll investigate adapting an installer that gives you the option (system- or user-level), or rolling our own.

On the Web 07 Jun 2005 05:38 am

Microsoft Windows XP Professional or Longhorn Edition

According to this email I got, Microsoft Windows “Longhorn Edition” is available now! With the price being less than $50, it would be a great time to upgrade now!

longhorn.png

Next Page »