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.
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
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 :(

Sincerely,
Jerry Krinock
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:
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
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.
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
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:
Jerry Krinock
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
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
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
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
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
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"!
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...

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!
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.
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.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
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-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
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.


We 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.
Actually, 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?