Blogmarks

Thoughts from the developers about bookmarks, sometimes,  where we're headed.

Google's Chrome - Oh no, a Checksum!

Well, it's finally about time to get working on adding Google Chrome support to BookMacster.  It appears to be a JSON file, and it looks like Blake Seely's BSJSONAdditions code can read it.  Haven't tried writing yet.  But I noticed this little "checksum" at the top of the file.  For a while, I ignored it, assuming it was part of the JSON standard and would be taken care of by Blake's code.  But then a little research showed that it was not.  Oh no, do I need to compute that?  Disaster.  A couple months ago, I had downloaded the Google Chrome source code.  It's, I don't know, gigabytes.  Took hours.  Then it wouldn't build.

Well, I don't really need to build the stupid thing anyhow, just figure out how they do their checksum.  So I searched the code for 'checksum' using BBEdit's wonderful Multi-File search.  After about 20 minutes, it found 812 occurences of 'checksum'.  Damned C++ I haven't used in 5 years.  Anyhow, I find the relevant code.  I see the algorithms they use, but that's the easy part, since I'm already using these functions in BookMacster for other purposes.  The hard part is: exactly what is the payload which is MD5ed?  What is the first and last character?  Does it include the whitespace?  What about text encoding?  Big/little-endian?  Oh, no; there are 2^N ways to define this.

Studying the damned C++ for a few minutes, it looks like they add in to the checksum the values, and some of the keys, as the JSON nodes are being constructed.  Good Grief.  Well, it can probably be done.  It might be easy, or it might take days, which means a week or more.

Jerry Krinock

UPDATE 2010 April 12.  Yes, it was necessary to do the checksum to avoid Google Chrome rewriting the file and changing all the identifiers.  But it only took about a day and a half.

The #1 Winter Bicycling Slide in San José

When I lived in Warren, Michigan in the 1970s I would rotate commuting by automobile, public bus or bicycle.  My safety rule for snow was: No bicycling if more than one inch of fresh snow.  During the 1990s I visited Boston and was amazed to see bicyclists older than me commuting in any amount of snow.

But I've learned, more than once, that we have a winter slide here in San José, California too.  I've had to, since I no longer own an automobile, and public bus rarely goes where and when I want to.  The worst months for it are: November and December.  It's fallen leaves mixed with rain.  Being aged now, I'm more careful – during our first winter storm(*) a few weeks ago, I was actually too careful and skidded down while stopping for a motorist coming out of a driveway who had probably already seen me and was waiting.  Thanks to Easy Racer's recumbent bicycle technology, I only got a skinned elbow that was very sensitive for a few weeks, instead of another broken collar bone.  No incidents occurred during my commute to or from the Haines Swim Center in Santa Clara this morning.

By the way, wet fallen leaves is another reason why seasoned bicyclists don't get too excited about bicycle lanes.  Unless you have your own portable bike lane.

(*) Instead of storm, readers east of the Rocky Mountains should read rainy day.  The word storm means something completely different to you.

Sincerely,

Jerry Krinock

Duallicious - twice as much fun :(

Oh, this is going to be really fun.  After working the better part of three days, I finally got my code for interfacing with the new Delicious - Yahoo Accounts (using OAuth) working.  But in testing, things weren't working right.  Then I discovered the problem.  In the screenshot below, you see two Safari windows.  Both are showing the first three bookmarks of jerrykrinock.  But they're different!  Why?  Because there are now two jerrykrinock accounts on Delicious.  The top one is jerrykrinock - Yahoo and the bottom is jerrykrinock - Legacy, Old skool, or whatever they call it.  You can get one or the other, depending on which one you've logged into last, I guess.

This is going to be fun :(

DeDelicious

Sincerely,

Jerry Krinock

No Big Deal about Snow Leopard?

Not too many people have asked but, anyhow here's the answer.

On 2009 Aug 28, at 18:01, Typical User wrote:

> I found nothing about Snow Leopard Compatibility on your Web site.  Huh?

Ha!  That's because properly-designed applications shouldn't need to updated when Apple updates the OS.  When you read on a software developer's website that an app has been Great Achievement! Updated for Mac OS 10.Whatever!, that usually means one of two things, in order of frequency:

  • "We had to go back and fix all of our kludges that we could no longer get away with under the new OS version."
  • "In the previous Mac OS version, we had worked around some of Apple's bugs in the OS.  In the new OS version, Apple fixed these bugs but, Grrrrrrrrrrrr, not the way we had expected them to back when we wrote our workaround."

Well, actually, Bookdog did had one of each, that resulted in a couple of cosmetic issues when running under 10.6.  These fixes are in 5.3.5+.  For details, see the Version History.

Sincerely,

Jerry Krinock

Why I Like (Mostly) my Mac Mini

Yesterday I received a survey from Apple asking what I thought of my Mac Mini.  They limited the response to 500 characters.  "Time for a blog posting!", I said.

Dear Apple,

Please make a Mac Mini that is not so miniaturized.  Look, it's very cute that you can slice up one of your laptops, stack it in four pieces and have it take up less space in my office than a 1985 model "Clock Radio".  But it's not so cute when you need to replace a hard drive or optical drive, or add RAM.  I have done one of each and it is quite time consuming.

My little office is 10x10x8 feet.  I'd have plenty of room for something which is two or three times as big, and would much appreciate having something that was easier to maintain.  I understand that the larger case would use more material and cost a little more, but you would more than make up for that in reduced assembly costs, reducing the number of jigsaw-puzzle-shaped custom parts, and simplifying the cooling system by not having everything packed in so tight.  And, as Steve says, aluminum is recyclable.  You might also consider using a 3.5 instead of a 2.5 inch hard drive if those are still a better value.

Oh, by the way, the main reason why I don't buy a Mac Pro, even more important than its much higher cost, is cooling.  We don't have air conditioning in our home here in San José.  I can keep the windows shut on hot days, but if I had a Mac Pro sitting there and belching out 250 watts of heat it would not be very comfortable by late afternoon.  The ~25 watt consumption of the Mini is great.

Oh, and due to that low power consumption, another nice feature you should consider adding would be a 2-minute battery or super-capacitor backup -- just enough time to save work in the event of a power failure.

Finally, and I know that your Design Elegance Police would never allow this, but I'd much appreciate having the connectors on the same side as the optical drive and power indicator.  Life is messy, and I often need access to the connectors, even though they look a little ugly.  Actually, since I rarely use the optical drive, I have put my Mini on the shelf backwards -- the connectors face me and the front is toward the wall.  I put a mirror back there so I can see the power indicator.

Finally, when I was at the Compatibility Lab in Cupertino a few weeks ago I used one of the new slim keyboards.  Those a re great and as soon as I finish my BookMacster project I'm going to buy me one.

Sincerely,

Jerry Krinock

Demo Bookdog's Successor

Enough of the new app is now working that I can offer a short demo movie.  Think of this as a "pre-beta" test or "design review" of the application name, icon, basic structure and functions.  It's 7.4 megabytes, runs for about 5 minutes and has audio.

A good place to post any feedback on it would be this forum thread.

Thanks for watching and feeding back!

Jerry Krinock

Three-Minute Sorting of Safari Bookmarks

For longer than I can remember, Bookdog has had the capability of sorting Safari bookmarks 3 minutes after the user added or changed a bookmark in Safari.  This nifty feature that was made possible by the cooperative way in which Safari handled its bookmarks file.  It was not possible with other browsers (Camino, Firefox, etc.)

With the release of Safari version 4, however,  a user reported a crash, and I discovered that this was repeatable.  The way to make it crash is:

  • Activate Safari version 4.
  • In the menu click Bookmarks > Show All Bookmarks
  • Click a bookmark to select it.
  • Click the name of the bookmark to begin editing the name.  Name becomes editable and focus ring appears.
  • Activate Bookdog
  • Open Safari bookmarks, make some changes and save.
  • Activate Safari version 4. It will crash.

Jerry Krinock

Selling Software with Google Checkout

I spent WAY more time time getting Google Checkout running than I did getting Paypal running.  Google Checkout is way more complicated and takes much more code.  With Paypal IPN I get one http post (their "IPN" - instant payment notification) with all the info, ack it, and I'm done.  Optionally, I can "post back" to them to get it "verified".  With Google checkout I get eight posts, although fortunately I can ignore five of them.  The three which I cannot ignore are (1) the new-order-notification, (2) a callback to which I send sales tax or VAT and (3) a charge-amount-notification.

Google Checkout is a fundamentally different service than Paypal.  It is more like the old Microsoft Wallet.  The idea is that Google Checkout "protects" customers from supposedly evil merchants.  Google Checkout often sends me an email alias instead of the customer's real email address, and has some ridiculous policies about what information I collect and when.  Fortunately, I don't need nor want much customer information.  More important is the fact that the customer must create a Google Checkout account in order to purchase my product.  This is not true with Paypal (although if the customer does have a Paypal account, Paypal gently twists their arm to make them to use it.)  Although I haven't studied the stats in detail, I often see messages from my server indicating that customers choose one service, then go back and choose the other.  Ultimately, about 80% choose Paypal.

Besides these differences, I have the following gripes with Google Checkout:

(1) I get a payout from them every business day.  So, to keep my checkbook balanced, I have to enter 20 variable payments every month.  Amazingly, there is no option for less frequent payouts.

(2) Nowhere in any of those eight notifications do they tell me what their fee is.  So, at the end of the year I'm going to have to do some database queries to manually deduct Google fees from my net income on each purchase.  Google engineers have entered a bug to fix this, with no ETA.  I cannot understand how supposedly some of the smartest people in the business could have overlooked something so basic.

(3) The Google Checkout Perl modules had several bugs and had not been updated to support new features in a year or more, although recently one of their engineers asked me for my patches, so maybe they'll update them soon.

Finally, my server needs an SSL certificate for Google Checkout.  This was not necessary for Paypal Standard.

Google Checkout may be well-designed for merchants who are comfortable farming out their entire sales, advertising, accounting, databasing and customer service over to the Big G.

For one, I just don't want to do that.  It's probably a personality thing.  I didn't get into this business to become a franchisee of a large corporation.

Also, my main reason for adding the Google alternative was in case Paypal ever had a technical issue, as I had with eSellerate.  Suddenly, in April 2006, half the customers who wanted to buy Bookdog got no response from esellerate's server.  Their tech support and my account rep had no clue.  During the next frenzied week and a half, I learned Perl, threw together a keygen algorithm and got Paypal going, while reading angry emails and filling orders manually.  It was not a fun time.

I spent a few minutes looking at Amazon's payment processing service and it seems more Paypal-like.  If I had it to do over again, I would look at adding Amazon as an alternative to Paypal, instead of Google Checkout.

Jerry Krinock

Software "Efficiency"

In measuring software "efficiency", there are several addends in the "cost" function, the denominator of the fraction.  A huge weight is given to user inconvenience, next in value is bug-fixing time, next is test/development time, and way at the end, with a weight of maybe .001, is the number of bytes in the package.  In other words, peoples' time is expensive, but hard drives are cheap.

That's kind of hard for a hardware guy like me to swallow.  And I like to understand what I'm doing and why it works or doesn't work.  Interfacing to Firefox 3 bookmarks requires using the open-source sqlite database library, an execellent and excellently-documented relational database published by a very smart guy in North Carolina.  Apple has built sqlite into Mac OS X.  So, I designed Bookdog to use Mac OS X's built-in sqlite library when interfacing to Firefox 3 bookmarks.  Although there was a minor problem that a few users of Mac OS 10.4 had, this design has pretty much worked and not given me any trouble.

The other day I downloaded the latest version of the Firefox source code, which anyone can do, and while searching through their package I found that Mozilla has now incorporated into Firefox: not zero (like Bookdog), not one, but two complete sqlite libraries.  It looks like maybe the cookies database uses and older version of sqlite and the bookmarks database uses a newer version.  Apparently, analyzing the differences between these two versions and the one installed on OS X enough to understand if there might be any significant differences doesn't fit into the project plan.  So, when you install Firefox, you've got three nearly identical chunks of object code on your system.  Well, I  can't argue because each one is only about a million bytes.  Even in a laptop, the marginal cost of a megabyte of hard drive is probably around $ .0002 USD nowadays.  Considering 125 million Firefox users, the total worldwide cost of this extra 2 MB is only around $50,000 USD.  Actually, of course, the cost is borne solely by those with smaller, older computers.  But you can't complain about a free program!

Well, maybe some time in the future, when we catch up with Moore's law...

Jerry Krinock

USA and Digital TV: Names For Rent

We don't watch enough TV at our house to justify cable or satellite.  After reading all the horror stories about the digital converter boxes I was expecting the worst.  I got my coupon and bought my Zenith DTT901 converter from "Modern TV" in San Jose, a small non-big-box shop where they actually repaired "television sets", as they were called, 40 years ago.

I hooked it up to the directional antenna on our roof in place of our VCR tuner, turned it on, and laughed when the automatic setup said that it found 46 channels.    But it was true!  Of course, that means we're actually getting only the same 15 stations, each with 3-5 subchannels, including a useless traffic cam perched on a freeway intersection that I'll never use on my bicycle.  But they all have perfect picture quality, and stereo sound.  Even Mrs. Krinock was happy and I'm completely amazed. 

The only trouble I had was that the factory wrapped the battery cell for the remote control in a nearly-invisible cellophane wrapper.  Nothing in the instruction sheet told you to remove the wrapper.  I wonder how many people take these back to stores because the remote controls don't work?

Also, it is rather disappointing to see that, besides manufacturing in China, the unit was designed and marketed by LG Electronics of Korea.  The box still says The quality goes in before the name goes on, just like they did when Zenith was manufacturing in Chicago.  But the name has gone on indeed.  Fifty years ago, this nation was manufacturing.  Fifteen years ago we were designing.  Until recently we were financing.  Today, we're just renting out our old names.

Jerry Krinock


Engineers should "just know" some things

Since I rarely ride my bike outside Santa Clara County, I enjoy receiving Academic Discount requests, reading what users are doing, checking out their web pages, etc.  Sometimes I get to tell a bit of my story.  A math professor got this one yesterday:

Around 1980.  When I was taking solid-state physics as an electrical engineer in graduate school, on our first exam were asked to model as a differential equation the diffusion of electrons and holes between two parallel rectangular plates.  And then part two of the problem was: "Now solve the equation."  Students who could not remember e^-ax lost 50% of the credit, and they were so mad that the professor dare to weight so heavily their remembering a mathematical fact which they could look up in a handbook.  "We're done with undergrad math!" was their attitude.  But Dr. Melvin Shaw would not budge.  "You want to be a master of electrical engineering without being able to write down the solution to a first-order differential equation with constant coefficients?  There are engineers who get paid actual money to write these things down every day."

Today's young engineers probably use computer files of their own course notes which they have access to wherever they go, a search engine, or mathematical software.  Even for me, these things are much closer than Reference Data for Radio Engineers which sits way up on my top shelf.  But the best reference is when you just know it.

Jerry Krinock


Legal but Sleazy Download Scams: Softonic

I just received a message from a customer who was wondering why Bookdog was not acting licensed after she "purchased" a license from this Bookdog download page published by Softonic.  On that page, you'll see that there are three "choices" to download Bookdog.  Being familiar with the way my 20-year old son quickly clicks through web pages without doing much reading, I can understand how someone might choose the "FAST" download.  However, the choices are more clear if I include some facts that they omitted:  

First Choice, "FREE":  Download at maximum speed allowed by your internet connection, with no ads, virus free, premium support directly from the developer, guaranteed latest version, directly from my site.  Cost: $0.00 USD.

Second Choice, "FAST":  Download at maximum speed allowed by your internet connection, from their site.  Cost: $3.14 USD.

Third Choice, "DELUXE": Download at maximum speed allowed by your internet connection, with no ads, virus free, "premium" download support (for those who have trouble finding the 'Download' button?), includes the "privilege" of downloading other apps in this way for 3 months.  Cost: $10.19 USD.

Also not stated very plainly is the fact that none of these choices give you a license to allow the software to work beyond the demo period.

Like the eSellerate Download Service, these deals offered by Softonic are legal but very sleazy.  At least I could protect my customers from eSellerate by dropping them as a distributor, but there's not much I can do to protect people from Softonic.  

With the shrinking percentage of people in this country doing actual work to add actual value, I wonder what's next?  I spent a couple hours picking cherry tomatoes and dehydrating them to tomato paste this morning.  If I was a migrant farm worker I would have been paid $8.00 USD per hour.  Dehydrated tomato paste will have value during this winter.  I wonder how much Softonic is making?

Jerry Krinock


"License Key" instead of "Serial Number"

I just spent the last 20 minutes changing my server scripts and database to record 'licenseKey' instead of 'serialNumber'.  I am so happy.  The latter was a vestige of my days with eSellerate, who use this completely inappropriate term, and I've always hated it.  Purchasers or my next product will now get a "License Key".

For those of you who have never worked in a factory, Serial Numbers are assigned serially, as in 00001, 00002, 00003, etc.  Old Windows applications usually had "serial numbers".  "Serials" are also the subject of web searches by not-so-nice users, many of whom spell it "serialz".

License Keys are numbers which are purchased to unlock a Mac application.  Hooray for "License Key"!

Jerry Krinock

Firefox "Livemarks" vs. Safari "RSS"

I just received an inquiry from a user wanting to know why when he synchronizes Firefox bookmarks to Safari, his/her "livemarks" become static folders containing whatever feeds were current at the time of the sync.

I've never been able to find an authoritative source on "Live Bookmarks", "Livemarks" or whatever.  The Wikipedia article on "Livemarks" is acknowledged to be only a "stub", and implies that Safari supports them, but I don't think so.  I would say that Safari supports "RSS Feeds" but does not support "Livemarks".  But since there is no legal definition of "Livemark", either one of us could be correct.

Here's the way I see it:  Although you can bookmark an RSS feed in Safari, and Safari knows how to render RSS feeds, it does not do what Firefox does, which is to make the RSS feed into a folder, update it when you display it in your bookmarks, and populate its children with the current articles.  I believe this is what Firefox calls a "livemark".

Well, what Bookdog currently does is to translate the livemark into a regular, static folder and the articles into bookmarks.  Actually, the latter is not a translation because, in Firefox, they really are bookmarks.  The former is the best that can be done given that Safari does not support the dynamic, "livemark folders".

But I'll give some thought to how this may be improved in the future.  I suppose that Bookdog could do what Firefox does, updating the folder when -- duh -- when?

But what good is this feature in Firefox anyhow?  I mean, when you want to read a feed in Safari, you click on it, and it goes and gets the article summaries.  If you set the article length to 0, you get kind of the same thing as in Firefox... 

SafariRSS

Does it really make life that much better to be able to see the article titles in your bookmarks like Firefox does? 

Any Livemarks Gurus out there, let me know!

Jerry Krinock

Google Bookmarks, Google Notebook

I noticed a few months back that Google™ has now, more-or-less "officially" stopped developing Google Bookmarks, by encouraging users to use the newer Google Notebook instead.  (Log in to your Google Bookmarks and you'll see the promo for Google Notebook.)  Unlike Google Bookmarks, Google Notebook does have an interface which I could use to easily read or download Google Notebook.  Thanks, Google!  Unfortunately, you've not yet provided an interface for an application like ours to write or upload items ("notes" = "bookmarks") to Google Notebook.

When and if Google does this, I'll look at adding support for Google Notebook to Bookmarksman (Bookdog's successor).  In the meantime, the fact that they've stopped working on Google Bookmarks means that interface which I engineered for Google Bookmarks without their help is probably going to be stable for a long time.  That's nice!  I've got plenty of other features to get back to work on in the meantime.

Jerry Krinock

Smart Folders

The Dilemna of "Smart" Folders

The smart folders in Firefox 3 are not like other folders that contain bookmarks.  They are in fact javascript bookmarklets that contain a query specification.  Other browsers don't have anything like them, and at this time they are useless outside of Firefox 3.  They are not really bookmarks, except that they have a location within your bookmarks.  Should they be treated as bookmarks, or as some other type of preference which is peculiar to Firefox 3?

There is also a very practical consideration.  Although smart bookmarks cannot be created without knowing javascript and accessing Mozilla developer documentation, they are easily deleted within Firefox 3, and once they are gone the only way to get them back is to restore your bookmarks from a backup.  In the Firefox 3 development discussions there is mention of an open bug to add a "Restore Smart Folders" button to Preferences, but I don't see this yet and it may not happen.

Handling of Smart Folders in the Current Version of Bookdog

So in adding Firefox 3 support to Bookdog, I decided that Bookdog should leave the smart folders alone as much as possible.

Implementing this idea, current versions of Bookdog (5.1.12 or earlier) behave as follows.  When loading bookmarks, Bookdog ignores the smart folders.  When saving bookmarks, while re-reading the database to find changes, it sets the smart folders aside, and then puts them back in the same parent folder where they had been found.  That left one little problem.  What if a smart folder's parent folder had been deleted within Bookdog.  Well, it puts the orphaned smart folders into the Bookmarks Toolbar instead.  I chose the Bookmarks Toolbar since that is a place where the user is likely to notice them and say "oh".

Thus, in Bookdog, you don't even see the smart folders and cannot move, change, copy or delete them.  This works as expected when performing any type of migration with another browser.  In particular, even when performing a unilateral migration from some other browser to Firefox 3, the smart folders are not lost.  

Issues with the current design

The first issue is not seeing the smart folders in Bookdog.  In particular, if a folder contains nothing but smart folders (such as did the default bookmarks that shipped with earlier versions of Minefield/Firefox 3), this folder will appear in Bookdog to be empty.  That is confusing.

Further, now that Bookdog can migrate between Firefox 3 on one Mac account and Firefox 3 on another Mac account, there is another disadvantage to this design.  If a unilateral migration is done, deleting all items in the destination, the user would expect that the smart folders in the the smart folders in the source would be added to the destination, and the smart folders originally in the destination would be erased.  Instead, the smart folders in the source are ignored, and because whatever folder(s) containing them have been erased, the smart folders in the destination are orphaned and therefore placed "loose" in the Bookmarks Toolbar. (And the user says "Oh, this is not what I expected.")  The user is particularly confounded if similarly-placed and named parent folder(s) exist in the source.  For example, assume that the user has one of those "Smart Bookmarks" (sic, should have been Smart Folders) from an earlier version of Firefox 3, in both destination and source.  The user definitely expects that her smart folders should migrate into there, but as far as Bookdog is concerned, this new "Smart Bookmarks" folder is not the old one.  (It has a different primary key in the sqlite database.)

Proposed changes

Here is how I am thinking of handling this in a future update:

• When reading Firefox 3 bookmarks documents, do not ignore smart folders.
• In Main Window, display smart folders with a special icon.
• In Migration window, add a new checkbox under the "DELETE all..." radio button.
   This checkbox will be enabled when performing a unilateral migration and when
   the destination is a Firefox 3 bookmarks document.  It will be:
        "Don't delete smart folders".
   This switch will be on by default unless the source is also Firefox 3, then it will be
   off by default.
• Implement 'Don't delete smart folders' as a property in the AppleScript interface
   for Migration.
• Add this to the user interface in the Migrate Unilaterally automator action.

The good news is that, because this question is only asked when items are to be deleted, it does not need to add further complication to the Translating preferences which are invoked when items are move/copy/dragged between bookmarks documents of different browsers.

Jerry Krinock

The Pains of Reorganization

Yes, the eight days have seen four Bookdog updates.  In preparation for future forking and expansion of the "bookmarks managment" line, I needed to do alot of housecleaning and reorganization.  Despite my best efforts, some regressive bugs had to creep in.  I think everything is under control now.

Jerry Krinock


Fixing Keychains Broken by Leopard

I had been using early versions of Leopard to test Bookdog but not for "actual work".  Today, after receiving reports from 2 users of Bookdog trouble with Leopard, I upgraded my Main Mac (an Intel Core Duo Mac Mini) to Leopard and found that my keychain was broken.

A quick Google search showed that Apple has just released a Login & Keychain Update 1.0 for Leopard.  However, I suppose because I had not yet gotten the final version of Leopard from Apple, it refused to run on my pre-release Leopard.

So, after being frustrated due to lack of keychain in several apps, I allowed Keychain to reset my keychain.  It turns out that what this does is to rename your old keychain, which it cannot open, as login_renamed1.keychain, and create a new, empty keychain named login, which now became the default keychain.  So, that didn't help.

What I really wanted to was to fix my old keychain, but clicking Keychain First Aid from the Keychain Access menu didn't work because the old one didn't show up in the list.  So, I went to yesterday's backup and copied my old default keychain, ~/Library/Keychains/jk, to its same old location, right-clicked on it, and told the Mac to Open with > Keychain Access.  Voila.  This now became the active document in Keychain Access, and I was able to he Verify it (problems were found) and then Repair it.  From reading the log, five types of problems were found and repaired:

Permissions incorrect on ~/Library/Keychains/jk, should be -rw-r--r-- , they are -rw-rw-rw-
Warning: keychain ~/Library/Keychains/jk is missing the .keychain extension
Keychain search list not properly configured
Item “pop.sheepsystems.com” has unspecified value for port attribute
Item “smtpauth.earthlink.net” is a duplicate; this item's port attribute is not set

Finally, I was able to File > Make Keychain jk Default and I was back in business. 

My conclusion is that some "security fixes" made Leopard fussier about your keychains than Tiger was, and that Apple forgot to include an update script for people whose keychains have had a long and sordid history like mine, which was born probably in 2002 or 2003 under Jaguar on my old 667 MHz Powerbook G4.  

Your situation will be different than mine because you'll be installing the final version of Leopard.  If you have trouble, I would recommend that you first install the Login & Keychain Update 1.0 for Leopard.  and, if that doesn't fix it, try the Keychain First Aid from the Keychain Access menu on your old keychain like I did.  Read this article on keychain problems and this article on where to find Keychains for more info.

The latter article refers to a "login" keychain.  I believe that this is incorrect; they mean the "default keychain".  Do not confuse the "default keychain" with the keychain named login.  Usually they are the same, but apparently they don't have to be.  My "default keychain", is still named jk.

Jerry Krinock


Confirmed: Our Congressman is a Good Guy

Since I did pretty well coding support for del.icio.us bookmarks tonight, I rode my bike over to the Santa Clara City Hall for our Congressman Mike Honda's Town Meeting. He conducts about three of these, during each Congressional recess (twice a year).  I got there a few minutes early.  There were only about 100 people there, and after I sat down I noticed that the front row was nearly empty, so I moved up and began talking to Mike about the weather, and apologized for us having our first mini heat wave of the year just as he came home for vacation.  We told him to keep our weather a secret but he said that "they already know", and explained what we already know about Washington, D.C. heat and humidity.

Then, Mike sat down next to me as city council member Jamie McLeod introduced him.  Yep, my congressman, wearing a necktie, sitting right next to me in my t-shirt and shorts.  He even removed the chewing gum from his mouth, placed it on a piece of used paper, folded the paper up, got out of his chair, walked a few steps to his jacket that was hanging on the back of another chair, and placed the gummy paper in his jacket pocket.  He probably threw it in the trash when he got home tonight.  I've always known that he was a good guy.  I wonder how many representatives would have tried to stick it under their chair while I wasn't looking?

No, I didn't say anything serious because I knew there would be plenty of people who wanted to talk, and many heartfelt and important things were said.  And, as I expected, there was ample opportunity to join the applause whenever the word "impeachment" was mentioned.  No one screamed at him when explained his reasons for not signing on to HR333.  I'd been thinking that, since this is right next door to their headquarters, the local police might have assigned an officer to walk over and see how things were going.  But the only vestige of a uniformed officer seemed to be a Vietnam veteran, now in regular clothing, who asked Mike to please figure out a way to stop executives who were AWOL during their youth from ordering others to charge up the hill while they and their children watch it on TV.  That's Silicon Valley for you.  Irreverent, but civil.  Most all of the speakers started by thanking Mike for his service and the meeting.  Fifty miles north of here, in San Francisco, I understand that things have gotten so bitter between Nancy Pelosi and some of her constituents that she doesn't have Town Hall meetings any more.

My main reason for going was to do my part to see that Mike and his staff saw that people care.  It did become standing room only, maybe 200 people, about 20 minutes after the meeting started, but by the end it had dwindled down to about 100 again.  Two hundred people coming to 3 meetings is 600.  In a district population of over 600,000, this means that less than 1 in 1000 constitutents show up.  Also, looking around, it seemed that at least 85% of the people were older than me (51).  If I discounted Mike's staff and the students from the Advanced Placement Government class from Evergreen Valley High School, it would be more like 90% older than me.

So, if you missed your representative's Town Hall meeting this time, be sure to go the next one.  And watch what he/she does with their chewing gum.

Shiira Bookmarks

In response to user requests, I'm beginning to look at supporting Shiira in Bookdog.  I installed the latest, Shiira 2.2, but I notice several confusing things about the way it stores bookmarks.

When you click in the menu "Show Bookmark Panel", you get a cool-looking Leopard-like black panel which shows Shiira bookmarks.

shb1
The reason that I say it shows Shiira bookmarks is because....there's more.  When you click that funny button that my mouse is pointing to at the bottom there, you get "shiira://shelf" in the browser window, the old Shiira Bookmarks Manager, with several Collections to choose from in the left pane.

shb2

Safari Bookmarks reads your Safari bookmarks file.  Firefox Bookmarks reads your Firefox bookmarks file.  But then above these there is just plain Bookmarks, which is kind of a "smart playlist" that shows Safari+Firefox+Shiira bookmarks.

After playing with Shiira for over an hour, I finally figured out how to delete a bookmark or folder.  After clicking the funny button at the bottom to show the "shiira://shelf", select the item(s) you want to delete and then right-click to show the contextual menu which has Delete.  Although you can move items in the black panel, you can't delete.

One thing I can't figure out at all is how to rename a bookmark or folder.  Does anyone know how to do that, or is that why you want Shiira support in Bookdog?

The new black Panel has been patched in to replace the old Bookmarks Manager when you click the Show Bookmarks menu item and the "bookmarks" toolbar button instead of the old Bookmarks Manager.  However, the old Bookmarks Manager, although hard to find now, is still needed to access features which are not yet supported by the new Panel

Finally, when I click the Forum on their site, I get a blank page (even when using Shiira!)  Does anyone know if there's a trick to accessing Shiira's Forum?

Jerry Krinock

Shiira Epilog

Well, Shiira support is done.  I'd like to again thank Makoto Kinoshita for open-sourcing the Shiira source code which made it possible to complete the task in less just a few days (and also for bringing Shiira's user Forum back online).  Actually, since Shiira 2.x uses an sqlite database accessed with Apple's CoreData technology, it would not have been possible without this open-source access.  When I saw the new format, I was almost going to abandon Shiira, but then I figured that it would be a great opportunity to learn about CoreData from the experts at The Shiira Project.  And, indeed, it was.

The hardest part was to get Bookdog to launch in Mac OS 10.3.  It required factoring out the code requiring CoreData (which is only available in Mac OS 10.4 or later) into a separate bundle, loaded later, so that the Mac OS would not crash in Mac OS 10.3.  Thanks to Chris Suter who knew what to do and so graciously responded to the questions I posted at xcode-users@lists.apple.com.

While playing with Shiira bookmarks, I discovered several issues which Shiira 2.x bookmarks users should be aware of.

Jerry Krinock

A "Snow Day" at work in San Jose...

In contrast to the rest of the world, the weather in San Jose has been consistently cool and beautiful this summer.  But  Sheep Systems engineering lost a couple hours of development time yesterday as the driver of a truck pulling a 53-foot van got stuck trying to turn the thing around in front of our house.  

TomatoTruck1We live on the corner of a 60-foot street and a 40-foot street; the latter is the narrowest in San Jose.  We also have lots of parked cars, trees, and utility poles that are right at the curb.  To accomplish such a feat takes requires the contemplation of a chess master, carefully considering all the obstacles and angles present and future.   Unfortunately the poor guy driving this one was thinking more like a 100-yard dash, and was getting too much "help" from bystanders that were each looking at their patch of the trees in the forest.The photo on the left shows when he was just starting to get in deep.  A similar circus was going across the street, at the front end.   I wanted to take more photos but things quickly went from bad to worse; I ended up having to fetch a ladder and some tools to remove that sign from the lamppost and then help him do the mental math needed to engineer his way out of there.

He wanted to give me $40 for the damage to our tomato and pepper plants, but I only took $20 because I know that since trucking deregulation many of these guys are non-union and barely get a minimum wage with no health insurance.





TomatoTruck2Actually, the cause of this whole mess was that neighbors who are fearful of other people using "our"  streets and "our" parking spaces prevailed upon the city government a few years back to close the next intersection, making our neighborhood a dead-end which often confuses visitors.  When will this country learn that Government by Fear and Childish Selfishness are bad for us?

Oh, well.  Back in Detroit we would have called this a "snow day" and stayed home from school.  Anyone want some green tomatoes?






Networking Made A Little Easier

Maybe I'm the only person in the world who gets confused when it's time to network my Mac to another Mac.  In the left pane of the Finder, you've got the Blue "Network" globe, the Gray "Network" globe, and then inside of them you've got "My Network", "Servers", "Workgroup", and often other stuff.  So many choices, and I don't know what they are.  I click around until I find a name I'm looking for and hope for the best.

So, when I added networking support into Bookdog 4.2.14 I decided to make it a little easier.  At least Bookdog opens you to the correct "Network" globe and gives a few simple instructions.

Google Uploading Fixed...ready for WWDC

Many thanks to Nick T. for reporting that Google™ broke uploading (saving) of Google Bookmarks, probably yesterday.  The issue is now fixed - download the latest version (4.2.4) and the "Error 400 Bad Request" should no more be seen.

It was initially upsetting, but I'm glad they did it this week, instead of next week, when I want to spend as much time as possible at the Apple Worldwide Developer Conference (WWDC).  It's going to be a long week, taking CalTrain from Santa Clara to San Francisco every day.   But not as bad as having to stay in a hotel!

Now I have to go and issue Nick that free license I promised him for submitting such a quick bug report...

Chief Bookdog has fans!

Thanks to Karen of Star Isle Beardies in Maine for letting me know that her three bearded collies ("beardies") approve of the job being done by our Chief Bookdog.

The Road Ahead for Bookdog

I have a long list and a short list of things we plan to do with Bookdog.  Here is the short list, as of today.....

Localization.  Although Bookdog was localized to German, French, Italian, Japanese and Spanish last year, the new features are in English only at this time, so international users may see a combination of English with their preferred language in some windows.  I plan to contract with localizers and get this fixed over the next couple months.

Automator Actions.  Since version 4.0, Bookdog's Migration actions have been AppleScriptable, and further supported by a couple of Automator actions.  Adding Google Bookmarks™ to the Automator actions proved to be a little complicated because the Automator action has to find out from Bookdog what Google™ accounts are available.  So, I left that on the to-do list for now.  Apparently it's possible, because iTunes and iPhoto have Actions which fetch the currently-available playlists and albums, for example.  But it looks like not many people outside Apple have delved into this yet, so I decided to release it without this feature.

Labels and Tags vs. Folders.  The system of "labels" and "tags" used by the online "social" bookmarks storage services is a fundamemtally different organizational system than the folders and subfolders used by the installed web browser applications.  Bookdog has been designed around the latter, and although Google's "labels" are viewable, editable and searchable in Bookdog, it needs some better views to make them useful.  I'm considering some interesting ideas developed during discussions with beta testers.

Other Issues.  For some time, I've known that Bookdog needs a consolidated spreadsheet-style Preferences panel to set the preferences for each browser and bookmarks document.  I've started on that.  And then, of course, are the many user requests to support other web browsers like Shiira and iCab, and other online "social" bookmarks storage services.  They're all on the list of things to do.

Jerry Krinock

Considering online bookmarks storage?

Many Bookdog users have told me that they are beginning to use online social bookmarks storage services such as Yahoo's del.icio.us™ and Google Bookmarks™ instead of keeping their bookmarks on their hard drives.  It makes sense, because while the biggest disadvantage of keeping data online is that you don't have it while you're offline, your bookmarks are generally useless while you're offline anyhow.

One's first thought is that reliability of an online storage service should be better, since these large corporations do a better job backing up data than 'the rest of us'.  On second thought, however, many people are leery of storing data only on a free service whose Service Agreement clearly states over and over again that they owe you nothing and are not responsible for anything.  (You do recall checking that little box, don't you.)

Control of your data is another issue.  Anyone who's ever switched internet service providers has learned that it's better in the long run to have your own domain name.  Likewise with social bookmarking; what's hot today may be not so in a year or two.  And you may want to try out different services.

We started out with support for Google Bookmarks™ because there was nothing yet available for Mac users.  With Bookdog 4.2, you can copy some or all of your bookmarks to Google™, learn how it works, and if you don't like it, copy 'em back, whenever you want to.  It took an act of Congress to get cell-phone number portability a few years ago, but I'm happy to say that now bookmarks portability is  available with a few clicks in Bookdog.

Finally, people get confused about what happens to all the folders they put their bookmarks in, and how these relate to the 'labels' they see in Google Bookmarks™ and the 'tags' they see in del.icio.us™.  I didn't know either, so when I figured it out we wrote an article in Bookdog's Help to explain it.

Another article documents some other tips I've learned about Google Bookmarks™ that don't seem to be documented anywhere.  I was going to call it Google Bookmarks: The Missing Manual, but I believe a book publisher out there has trademarked that.

Jerry Krinock

Demo the Dog

Two years ago, when all Bookdog did was sort Safari bookmarks, it made sense to require a purchase before those lovely alphabetized bookmarks could be saved.

Today, however, Bookdog has so much more to offer that I think users will need some time to appreciate it.  And with the addition of Google Bookmarks™, the time had come, since new users would want to see that Bookdog can actually upload to Google™.

So, as of Bookdog 4.2.2, a 12-day demo is available to new users.  While many apps use kludgey methods to give you a time-limited demo, often leaving a secret file somewhere on your hard disk, Bookdog does it the right way, by actually contacting our server to generate License Information with the issue date encoded into it.

Here's a tip not stated in the documentation: Smart users can click the "Bookdog > Get It Now" menu item and then "Demo (Trial") again after 12 days, to obtain a second free 12-day demo.

Jerry Krinock

Cookies and Keychain

Bookdog shares the Apple URL Loading System with Safari, so if you've logged in to Google in Safari and checked "Keep me logged in on this computer", Bookdog can access Google without entering a password.

After several days studying Google's Accounts API, I was surpriesed to find that Bookdog 'just worked' without implementing anything!  A few peeks into the cookie jar made it apparent what was happening, but raised some new issues.  Because users can have more than one Google™ account, Bookdog checks to see which account is logged in before uploading or downloading bookmarks, and can automatically log back out and back in with a different account if required, getting the password from the Mac OS X Keychain if it had been stored there by Safari or another browser.  If all else fails, of course, the user can enter the name and password into Bookdog, and if desired Bookdog can keep it in the Keychain.

Jerry Krinock