The end of an era

On Memorial Day weekend 2013, my friend Sam told me about the great health results he was having with his Fitbit One pedometer.  It sounded easy enough to try, so a few days later both Diane and I bought one, and we used them faithfully – I kept using mine even after getting my Apple Watch (and even after upgrading to the Apple Watch 5).  It was simple, rugged, and only did one thing – and I could compete with friends.  The only real problem with the device was keeping it – it was small, and could easily slip out of my pocket, but I always managed to find it, even when it escaped me on a small cruise ship last month!

Late last year, the battery in my Fitbit died; Diane had upgraded to a Fitbit watch, so I took her One and kept on stepping.  The battery in hers was in better shape than mine had been, but of late, it’s been doing well to get through two days without charging (and would die without warning), so I knew the end was near – but I wanted to nurse it through its seventh anniversary.

That plan ended yesterday; we were out on a walk and when I got home, I noticed that my left pants pocket had my phone, but no Fitbit.  And the app couldn’t find it, either.  I posted to the local NextDoor group, but no luck.

Today, Diane and I retraced our steps; I used the Bluefruit app to look for Bluetooth devices in the area.  I found many interesting devices in the neighborhood (such as an Ember Ceramic Mug), but my One was nowhere to be found.  And then Diane reached down and picked up the clip that used to hold the Fitbit…but the Fitbit was gone.

I’ve figured out how to export my weight data from Fitbit to the Apple Health app, so my history is not lost, but I’ll still miss my Fitbit One.  For the record, here are my lifetime activity stats:


Steps | 41,950,251

Floors | 35,274

Distance | 20,344.19 mi


Steps | 33,507 on June 25, 2017

Floors | 186 on August 17, 2016

Distance | 16.18 mi on December 20, 2017

Stack Overflow (Ask Different) to the rescue

This is another one of those notes to me-from-the-future, but perhaps it will help someone else, too.

I was trying to install Apple’s Security Update 2019-005 on my old MacBookPro, which is running High Sierra (and can’t go to anything newer). When I tried to install the update, the machine never shut down properly; the display went black except for an arrow cursor, and it would stay that way indefinitely. Strangely enough, I could SSH into the machine while it was in that state and even shut it down – but when it rebooted, it would come up in normal mode without having installed the update.

I tried many things to fix the problem:

  • Turned off Spotlight (sudo mdutil -a -i off) because mds and mdworker processes were using a lot of CPU
  • Booted into recovery mode and ran Disk Utility in case there were any problems (there weren’t)
  • Booted into recovery mode and reinstalled the OS
  • Manually reinstalled Safari 13.0.1

but no matter what I did, the machine still hung when I tried to reboot it.

Eventually, after much searching, I found this Ask Different post and tried the commands it suggested:

sudo rm -rf /var/folders/zz/zy*
sudo shutdown -r now

and it worked – the machine rebooted into the installer, and a few minutes later, the system was up and running at the proper level (build 17G8037).

Thanks, Damian Krawczyk!

Two Apple Stores, Much Waiting!

Two months ago, I was sure of my plans for today: get my second shingles vaccination at Pharmaca in downtown Los Gatos. I wasn’t looking forward to it, but it beat the alternative.

But last week, Apple announced its fall line, including the Apple Watch Series 5 with an always-on display (finally!). I ordered one for pickup this afternoon at the Apple Store in downtown Los Gatos, a two-minute stroll from Pharmaca. Everything was falling into place.

Of course, Apple also announced the new line of iPhones, with cameras that really appealed to me. And last year, I’d bought my iPhone XS Max on the iPhone Upgrade Plan, so upgrading was a no-brainer.

Except that I’d moved my phone from T-Mobile to Google Fi, and upgrading required being a customer of one of the Big 4 carriers. I checked with T-Mobile to see what it would cost to return to them, and the answer was “too much” (the call wasn’t a total loss, though, because we were able to add free Netflix to Diane’s account).

But I had found a second way to upgrade – Apple was offering a decent trade-in for my old phone, so I could buy the new phone outright and use the trade-in to pay off the balance on the Upgrade Plan.

By the time I figured all of this out, the delivery window had slipped into mid-October. Life is like that.

But today, Apple sent me yet another email to encourage me to upgrade. For some reason, I opened it instead of deleting it, and then I clicked the “Find a Store” link and specified the phone I wanted (256GB iPhone 11 Pro in Space Gray, SIM-free).

Much to my surprise, the Apple Park store had phones available for pickup today!

Instead of getting a shingles shot, I spent the afternoon in lines at not one, but two Apple Stores. Picking up the watch in Los Gatos took about 45 minutes; picking up the phone in Cupertino at Apple Park took about 90 minutes.

And when I came home with my trophies, Diane told me that Pharmaca had just called to remind us to get vaccinated.

Maybe tomorrow.

Summer Theatre Notes

Diane and I have always enjoyed going to plays (in fact, one of our first dates was to see the RPI Players perform “Sweet Charity”), and we’re lucky to live in a place that offers us many opportunities to do so.

So far this summer, we’ve seen seventeen plays (and will see another on Sunday, with a high probability of an additional play or two next week).

I’d be foolish to write to write reviews of all of them, but I do want to point out a few of the ones which I thought were especially good and which are still playing. So let’s go to the theatre!

We saw the entire season (11 plays) at Oregon Shakespeare Festival. It took two visits. The first trip was in early June with Road Scholar (the class included 3 plays, and we added five more for a total of 8 plays in 6 days). We made a point of scheduling all of the outdoor plays for that visit to minimize the odds of fire-related cancellations. The second trip was a few weeks ago to pick up the plays that weren’t open in June – and I’m glad we didn’t try to see any of the outdoor plays then, because OSF had to move them to a much-smaller indoor theatre because of the Milepost 97 fire in Canyonville, 80 miles north of Ashland.

OSF’s season continues into October, and I can recommend all but one of the plays – Alice in Wonderland was disappointing. The music and costumes were good, but the characterization was limited, and I just couldn’t bring myself to care about what was happening on the stage – it was just a pack of cards, after all.

On the other hand, I found Mother Road, Hairspray, Between Two Knees, Indecent, How to Catch Creation, and Cambodian Rock Band to be thought-provoking, well-acted productions with something to say about society and how different groups interact. I’d recommend any of them without hesitation (though Mother Road and Between Two Knees are the weakest of this group).

The Shakespeare plays were all well-done and worth seeing; La Comedia of Errors was a very different take on Shakespeare!

We’ve already signed up for Road Scholar’s Ashland experience next year and hope to see the entire season again.

We’re season-ticket holders and supporters of three local theatre companies – none of them have the resources of OSF, but they produce great theatre.

City Lights Theatre in San Jose is currently performing Cabaret based on the original 1966 production. There’s a lot more story than I remember from the previous versions I’d seen – the music was there, but the story took priority. The similarities to what’s happening today were clear (not blatantly pointed out – but there to see) and chilling.

Earlier in the season, we saw their production of Silent Sky, a Lauren Gunderson play about the first female computers/astronomers at Harvard. I’d seen the play before, and thought that City Lights did a very good job with it.

We’re already signed up for their entire season next year.

Silicon Valley Shakespeare has two plays in rep at Sanborn Park in Saratoga through August: Macbeth and The White Snake. Their Macbeth was much crisper than OSF’s – we also got to see it from the front row, unlike our seats in Ashland! We haven’t seen The White Snake yet, but will this weekend – it’s an adaptation of a Chinese tale.

Earlier in the season, we saw SVS’s free “Shakespeare in the Park” production of A Midsummer Night’s Dream, and it was a lot of fun.

Again, we plan to go to their season next year – but they won’t be selling tickets for a few months.

Lyric Theatre started out as the Gilbert and Sullivan Society of San Jose, and they still do at least one G&S play every year. This summer, their “Discovery Series” presented the very first G&S, Thespis; it posed a special challenge because the original music was lost a century ago!

Lyric’s productions feature huge casts, wonderful costumes, and great music – we always have a good time there, and we’ve bought next season already.

I know 3 Below as the home of ComedySportz, but they show movies and put on other shows, too. We saw Disenchanted, a musical purporting to tell the truth about the Disney princesses – it was an enjoyable evening, and the songs were well-crafted.

And that’s the summer theatre report – so far!

Paying my technical debt

I’ve been involved in Toastmasters since late 2010. I volunteered to take on the Vice President Education role in my home club, the Silver Tongued Cats, soon after I joined, and looked forward to taking on a District Leadership role so that I could, eventually, become a Distinguished Toastmaster.

In 2012-13, I took on the role of Area B2 Governor. I had to look at several different reports (all of which were manually created in Excel) to figure out what was going on with my clubs. There was one report for progress in the Distinguished Club Program and another one for membership growth; it took some effort to pull all the information together, and many trees died in the process.

The following year, I was a Division Governor, and the effort to pull the info together for the 25 clubs in my Division was significantly greater – and so was the pile of paper I dealt with.

I thought there had to be a better way and started working on Python code to take the information available from the Toastmasters Dashboard and create a consolidated report. I decided to put the code onto GitHub to make it easy to develop on my laptop at home but run the real code on the web server.

Getting the information wasn’t particularly difficult (Toastmasters offers the data in CSV), nor was creating a consolidated report with the information that we needed. When I showed my report to the District Governor, she asked me if I could make it available to the entire leadership team. Of course, I said “yes”, and joined the District 4 Web Team as Statistician and Assistant Webmaster, a role that, unlike Division Governor, had no fixed term.

I didn’t want to fetch a whole year’s worth of data from Toastmasters every time I needed to create my reports, so I needed to save the data after getting it. I’d already had to do some transformations on the data (consolidating information from three separate CSV files into one object, for example), so I decided to save each day’s work as a Python pickle file, and had my reporting program unpickle all of the collected files. This was ugly code, to say the least, but it worked.

The leadership team liked the reports I generated, but they wanted more – they wanted support for District incentive programs, and, soon, support for reforming the District into two Districts. I was happy to oblige, and cranked out lots of code.

During the reformation process, I met George Marshall, the then-Webmaster for District 57 and the person behind Tools for Toastmasters. I told him what I was doing, and he made a very pointed suggestion: use a database instead of my pile of pickle files.

He was right. By using the pickle files, I had, unintentionally, built up a lot of technical debt, and the sooner I moved to a database, the less it would cost me to pay off the debt.

With that problem solved, I was able to support the District leadership fairly easily as we moved forward on the reformation, and took on the role of District 101 Webmaster and Statistician when the reformation happened.

Since I was posting the code to GitHub, I didn’t want to put things like the database credentials in the code, so I moved them to an external file, and then to a separate directory, just to make sure I didn’t accidentally post them.

And as long as I had a separate directory, I thought it would be a good place to store other files, such as the statistics I downloaded from Toastmasters, the maps and reports I created, Dropbox cursors, and so forth. Without planning it, I created a directory that had a hodgepodge of stuff in it – some was critical to the operation of the suite of code, and some was recreated every day. And there was no easy way to tell which was which.

Years passed. I wrote more code. I put more and more files in the “stuff” directory. But everything worked well enough, so I didn’t do anything about it.

Until last year, when I got serious about not being Webmaster and Statistician for Life. I put out a call for volunteers to help me with the code – when meant that I had to be able to explain the code. Most of it was easy to explain and document, but the “stuff” directory turned out to be a real problem.

So I’m fixing it.

When I moved from the pickle files to a database, I had, perhaps, five programs to fix. Today, I have more than 80 programs in my source tree; not all of them are actually in use (getting rid of the dead ones is another technical debt to pay off), but I have to look at each and every one of them.

I’ve been at it for nearly a week, and I’m about half-way through the first pass. Figuring out how to arrange things took a while, and I’ve made some false starts on the way, but now I think I have the setup under control, and adapting a program is fairly quick.

Even after I finish this project, I won’t be out of technical debt – I’m finding other problems that should be fixed, but they’re less urgent (little things, like making “verbose” and “quiet” options consistent through the code). Perhaps my successors will want to tackle them!

My biggest high school mistake

Back when I was in high school, every boy was supposed to take at least one year of Shop (and every girl was supposed to take a year of Home Ec).

I didn’t want to take Shop; I never played with tools as a kid and didn’t see any reason to start. I convinced the administration that it would be just fine for me to use that period for the Literary Magazine (most people on staff used their Study Hall period for that purpose) – I got away with a lot of things back then.

Boy, was I dumb!

Over the years, I’ve learned some of the basics of home maintenance when I had to – but I’m still not comfortable with tools and am always worried when I have to deal with electricity, and I wind up calling in contractors for projects that I feel I should be able to do myself.

It’s frustrating. And expensive.

I guess it’s too late to tell high school me to develop some manual skills, not just academic ones!

Getting by on less than a gigabyte

I recently switched my mobile phone from T-Mobile to Google Fi. The main reason I changed was for the better international service – T-Mobile gave me free 2G service internationally, while Google Fi gave me full-speed service at the same price I paid at home ($10/GB, capped at $60 for up to 15GB). Having full-speed data was worth paying a little money!

And it’s worked out well – I could use my phone in Europe and Asia as if I’d been at home, with great coverage, good speed, and no worries.

Every month, whether I traveled or not, I found myself using just under 6GB – so I was paying almost as much as possible while not taking advantage of the free data above 6GB. This seemed silly, but, unless I wanted to use data for no good reason, what could I do?

Last month, I decided to try something different. I’d already started using Apple’s Screen Time feature to add a little resistance to spending a lot of time on Facebook and Twitter; now, I decided to try not to idly pick up my phone while I was out and about, at least not without WiFi.

And at the end of the month, I had used 0.88 GB, for a data bill of $8.80 instead of the usual $57. I didn’t feel particularly deprived, and it was kinda pleasant to look at the world instead of my screen!

I don’t think every month will end up under a gigabyte, but having that tiny incentive to stay off the phone seems like a good idea.

Waiting is fine, but sometimes you need to take action

Diane and I got the old shingles vaccine as soon as we were eligible, because we knew people who’d had shingles and didn’t want to join them.

When the new recombinant vaccine was announced, we closely followed its progress to release (just like a new iPhone!), and we got on the queue at CVS as soon as we could.

That was six months ago. We added ourselves to the queue at a nearby Safeway four months ago, but there’s been no sign of progress in that time. If I call the pharmacy, their answer is “yes, you’re on the list; no, we’re not getting much supply; don’t call us, we’ll call you.”

In the meantime, my half-brother contracted shingles, and it was the worst case I’d heard of yet. It’s not genetically-linked as far as I know, but his experience encouraged me to keep calling.

Yesterday, I read the latest Consumer Reports on Health, which included an article on the need for vaccination and a link to, the FDA’s source of information on vaccine availability. The site said that every CVS and Safeway near us carried the vaccine – but it also listed another local pharmacy, Pharmaca.

I called them, and the pharmacist said she had an ample supply. We decided to brave the beach traffic in Los Gatos and drive downtown – a good plan until we ran into heavy traffic. I found a parking place and we walked the last three-quarters of a mile (discovering that the heavy traffic dissipated a block after we got out of the car!) to the pharmacy.

A little less than an hour later, we left, with sore arms, lighter wallets, and the first of two shots (and assurance that they’d have the second shot in two months, when we’re due for it).

I wish I’d thought to check Pharmaca long ago – we walk by it nearly every week!

If you’re looking for the shingles vaccine, check – it might help you, too!

(Edited to correct the VaccineFinder site – it’s, not .gov. Thanks, Diane Reese, for the correction!)

Amsterdam DO’s and DON’Ts – revised 2019 edition

Back in 2012, I wrote a post with travel advice for Amsterdam. We just got back from another trip there, and I thought I’d revise my advice – most of it still applies, but there have been a few changes. So here’s my 2019 Amsterdam DO’s and DON’Ts. Come back in 2026 for another revision!

Amsterdam Dos and Don’ts – 2019 revised edition

We recently spent a week in Amsterdam before and after taking a river cruise through the Netherlands and Belgium; I might eventually post photos from the trip, but in the meantime, I wanted to share some possibly-useful tips for others travelling to Amsterdam and environs.


  • DO tell your credit/debit card companies that you will be using your card in the Netherlands and when you’ll be there.
  • DO get money from ATMs rather than buying it before you leave the US; there are ATMs at the airport and all over town and you’ll get a much better rate. (2019 note: Use bank ATMs if at all possible to get the best exchange rate and lowest fees; avoid Travelex and the like.)
  • DO expect to find some shops which only accept cards and will not accept cash. (2019 note: I saw quite a few shops which were card-only, and a few which were cash-only. I ran into a couple of shops which would not accept Visa or Mastercard credit cards but would accept debit cards.)
  • DON’T get the Travelex “Cash Passport” Chip and PIN card – the exchange rate is hideous and they demand your Social Security number.
  • DO expect to be able to use your US credit card when you are dealing with people – even though the Dutch all have Chip and PIN cards, every credit card machine I saw in a shop could also accept a US magstripe card. (2019 note: Of course, all the machines accepted US chip cards, too; sometimes the shop wanted a signature, but often they didn’t.)
  • (New for 2019) DO expect to use your US credit card to be able to buy train tickets and transport cards from automated machines.
  • DON’T take the option of paying in US Dollars using your credit card. The rate is probably not as good as your card company will give, and if your card has a surcharge for international transactions, you’ll have to pay that surcharge even if the transaction is in US Dollars.
  • DO carry a few Euros in change with you at all times for small purchases and toilets – many public toilets charge between 20–50 cents for access.

Getting into town from the airport

  • DO take the train unless you’re staying far from the city center.
  • 2019 advice: DO expect to be able to use your US credit card at the machines at the train station to buy your ticket.
  • DO buy your train ticket in advance from Belgian Rail; print it at home and bring it with you.
  • DO buy Second Class tickets for this trip unless you have a lot of luggage or can’t manage four steps up or down stairs.
  • DO know that the trains to Centraal Station leave from Schiphol platforms 1 and 2.
  • DON’T get on a “FYRA” train at Schiphol – it will cost you! You want to get on an “IC” train. The trains are marked on the sides of the cars; both use the same platforms.

Getting around town

  • DO walk if you can – the touristy part of Amsterdam is small, and everything of interest is within a 45-minute walk (mostly less). Take public transport only when you’re in a hurry.
  • DO watch out for bicycles and motorbikes, especially when crossing a bike path (and every street has bike paths). Treat them as you would any other fast-moving dangerous vehicle.
  • DON’T be surprised by motorbikes (or bicycles) on the sidewalk, either, though they are usually going slowly there.
  • (2019 changes) DON’T plan on using cash to buy a ticket on a tram, train, or bus. Either buy your ticket (or pass) in advance or use your card to make the purchase.

iAmsterdam card

  • DO buy the iAmsterdam card.
  • DON’T buy it at the VVV office at Centraal Station – there are long lines. 2019 advice: Buy it at the iAmsterdam shop at Centraal Station (on the IJ side of the station); you can even use your US credit card to buy it from their vending machine!
  • DON’T pre-purchase the card over the Internet, which means picking up the card in person at the VVV office – in that same long line, of course.
  • DO be strategic about the time of day that you activate the pass. It is valid for 24/48/72 hours, not 1/2/3 days. If you activate a 24-hour pass at 11am on Wednesday, you can use it all the rest of that day and then enter a museum before 11am on Thursday and stay there the whole day. This works best for major museums, like the Maritime Museum or the Van Gogh, of course. If you’re really hardcore, you could go to the Maritime Museum at 10am on the last day of your pass and get a ticket, immediately go to another nearby museum and see it, then return to the Maritime Museum because your ticket is good for the entire day.
  • DO realize that the museum pass and the travel pass are completely separate after you buy them; you need not activate them at the same time (or even on the same day).
  • DO realize that the discount offers in the booklet are valid even after your card expires (I think they go to the end of the year); you just need to bring the card and the booklet.
  • DON’T plan to go to the Anne Frank House on the iAmsterdam card. 2019: You have to buy your tickets online in advance (they go on sale exactly 2 months in advance).
  • 2019: DO get your timeslots for the van Gogh Museum as soon as you have your iAmsterdam card numbers.

Sex, drugs, and rock ‘n’ roll

  • DON’T be afraid of walking through the Red Light District (of course, be aware of your surroundings, just as you would anywhere else).
  • DON’T take photos of “red rooms” or the women working in them.
  • DON’T go to a coffeeshop for coffee.

Eating and drinking

  • DO expect the inside of restaurants to be non-smoking (both kinds of smoke).
  • DO expect a lot of [tobacco] smokers just outside of a restaurant.
  • DON’T expect free refills on coffee.
  • DO expect free tap water but you have to ask for it.
  • DO expect service charges to be included in your bill; round up to the next Euro or two if you’re especially pleased. I ran into one restaurant where service was marked as “Not Included” on the bill and tipped about 10% – I have no idea if that was right or not.

Staying connected

  • DO arrange for an international package from your cell carrier (if it’s not already included, as it is with T-Mobile or Google Fi). DON’T use your phone if you don’t have a package – the prices are ridiculous.
  • DO consider getting a local SIM if you want to use a LOT of data.
  • DO look for “Free Wi-Fi” hotspots; many small restaurants offer free Wi-Fi. One near our hotel gave us the password when we stopped to look at their menu and told us the service was available 24/7. We wound up having breakfast there four times!
  • DO look for free Wi-Fi from if you’re near a fast-food chain like McDonalds, Burger King, or Subway.


  • DON’T expect to need to know much (if any) Dutch. All tourist-oriented businesses are completely English-friendly, and almost everyone in the Netherlands seems to speak and understand English.
  • DO try to sound-out written Dutch if you need to figure out a sign; it looks unlike English, but I found it fairly easy.
  • DO say “Dank U Well” (“thank you”).

TIL I learned how (and how NOT) to restore my Mac backup

They say you never know if you have a real backup until you try to use it. They’re right.


  • Don’t encrypt your drive until you’ve restored your data
  • Don’t exclude things from Time Machine backup

The details

I sent my 2017 MacBook Pro to Apple because the keyboard was acting up. And as long as I was at the Genius Bar, I thought it’d be a good time to mention a weird problem I’d had when using Screen Mirroring on my Apple TV (moving the cursor would reveal things lower in z-order – it was weird); the Genius duly wrote that down and sent my machine to the depot for repair.

A few days later, the machine was back in my hands; not only had they replaced the keyboard and the top case (as I’d expected), but they also had replaced a few other parts – and they’d either wiped or replaced the SSD, so I had a virgin installation of Mac OS and none of my data. I booted up the machine, and, for security, told it to turn on FileVault to encrypt the SSD; then I set about restoring my data.

Plan A

I had multiple backups: Time Machine, a bootable clone drive (made with SuperDuper!), and Backblaze for offsite backup. I thought that the easiest solution would be to reboot from the clone drive and restore to the SSD, so I did exactly that.

The restore went fine, except for one small problem – SuperDuper! was unable to update the PreBoot environment. When I tried to boot from the SSD, I got a blinking folder with a question mark, which meant that the system couldn’t find the startup disk. I booted from the clone again and used System Preferences to set the startup disk to the SSD; this time, instead of the question mark, I was asked for a disk password…which, of course, I didn’t have.

Back to the clone, where I could easily mount the SSD and see its contents. Searching gave me this thread, but I couldn’t figure out how to apply the hints to my environment, so it was time for Plan B.

Plan B

I booted the “Install High Sierra” USB stick I’d kept around from last year and erased the SSD. Then I restored from my Time Machine backup. Many hours later, I was able to boot the SSD, and all seemed well.

Except…my desktop background was wrong. And my Dropbox folder was empty (though that was easy to fix by firing up Dropbox). And when I looked further, I realized that I didn’t have any of my photos, nor my iTunes library, nor my DevonThink databases. It was as if they’d never existed. But they were on the clone drive. Hmmm….

Plan C

I booted the clone and fired up SuperDuper! again. And, again, I restored the SSD from the clone, using “Smart Copy”, which found 150GB already on the SSD, and about 200GB of data that needed to be copied.

This time, when I booted the SSD, all was well – I had all of my data.

I opened Time Machine Preferences and discovered that I’d excluded my iTunes library, my Pictures folder, and my DevonThink databases from being backed up in order to save space on the drive in the Time Capsule that I was sharing among several computers. Oops. Especially since I’d stopped sharing a Time Capsule months ago and was backing up to a directly-attached 4TB drive, with plenty of space.


All seems to be well; I’ve removed the exclusions from Time Machine and it’s busily backing up everything now.

I haven’t checked to see if the Apple TV screen mirroring problem has been fixed – I guess I should find out, though.

I think I’ll wait a few days after Mojave ships before I upgrade; I really don’t want to go through this again any time soon!