Tuesday, August 04, 2015

Switching from CenturyLink to Comcast: last rats off the sinking ship

I was on hold with CenturyLink's “retention” service. That’s where support sends customers who request escape. The first 8 minutes of hold sounded like this ...

MMMMMMMMMMMMM (music) MMMMMMMMMMMMMMMMMMM (music) RMMMMMMMMMMMMMMMMMMM…. (silence) … (music) MMMMMMMMMMMMMMMM

I heard it on my iPhone because our CenturyLink landline is dead. Again. It’s been dead for about 5 of the past 10 days, despite a technician visit.

After 8 minutes of hum-buzz the line switched to classical music and, at 17 minutes, a woman answered. I told her I was calling to turn off my internet service. She said she couldn’t hear me, and a few seconds later she hung up.

I'm filling out the MN State Attorney General Consumer Complaint form and I’ll see if switching our landline number to a burner phone forces a service kill [1]. Not coincidentally, here’s the past year of CenturyLink share prices compared to S&P and Comcast.

Screen Shot 2015 08 06 at 6 04 41 PM

Yeah, they’re dying.

Happily I switched to Comcast for Internet services today. Yes, Satan, but a Satan harried by millions of angry customers. So we have allies. On the other hand, we may be among CenturyLink’s last 10 customers. Not much help there.

For the sake of those still stuck in the DSL era, here’s are the things I didn’t know about switching to Comcast:

  • You have to browse Comcast’s site carefully to find the listing of all internet-only services available in your area. We’re in the backwoods of St Paul, our faster sister city of Minneapolis pays about 20% less for faster services. Here we have two choices, and one of them is dying. Comcast ain’t exactly sweating.
  • There’s no contract.
  • I wanted good upload speeds, so I went for the St Paul 50/10 “boost" option. I was never able to find the upload speed on Comcast’s site, but that’s where it helps to have a geeky customer base. Google found the numbers for me. My speed test is indeed showing 50+ Mbps and 10+ Mbps. It’s listed as $45/m for 12 months plus $5 in taxes/fees, then jumps to $76/month + more tax/fees (unless competition shows up here, which is damned unlikely). Installation is $50 for the minimal install, $40 for a “wall drop”. We went for a very simple closet jack.
  • Modem rental is $10/month. I needed the initial setup to work so I went with the rental for now. In 4-6 weeks I’ll order something like the ARRIS SURFboard and bring the rental unit to our local Xfinity store. Be interesting to see if/when the rental fee stops. My DSL modem was a router with NAT services, but the rental unit is a bridge. My AirPort Extreme now has a pingable net facing IP address. Feels a bit naked. 
  • I have no access to the rental modem — it’s a black box. I assume Comcast can configure it.
  • Don’t try to get any Comcast rep on the phone. It might not be as bad as calling CenturyLink, but it’s still very bad. Chat is likewise awful — they are forced to divert to a sales script and slow to answer real questions.
  • The Comcast web site is an antique. It works better on Chrome than Safari, I suspect it’s made for IE 7. Contrary to a misdirecting prompt the 1990s email client does support forwarding. It also supports RSS feeds, which would be a great trivia question answer.
  • The process of scheduling an installation is pretty good including multiple reminders. No problem there. The post-install phone satisfaction survey is too long — don’t even start it.
  • There were several things that didn’t work on the Comcast registration site. SMS authentication didn’t get through to Google Voice (spam block?) and I couldn’t add a Yahoo address as secondary email. 
  • The xfinity Connect app for iOS is probably worthwhile, I didn’t let it access contacts.
  • There are WiFi hotspots for Comcast customers but they aren’t very interesting.
  • Password (in)security involves 3 painful SecretToYouButNotToHackers questions that can’t be avoided.
  • Comcast is supposed to be able to test a modem post install for signal strength. In Saint Paul this can take an hour to work, our installer called after he left to say the signal strength was too high (we have no splitters, new cable, etc) and the modem would disconnect. So he returned and added a filter. I tried Comcast’s SpeedExperience modem test tool but it couldn’t retrieve any modem data. 

That’s it. For today, I’m happy in Satan’s kingdom.

[1] We’d wanted to keep the wired landline because we’re on a cheap home security plan. I think that’s not an option any more...

Update 8/7/2015

  • As of August 2015 this is the direct number to change service or close an CenturyLink account: 800-244-1111. My spouse, E, has magical powers honed through years of working with health insurers and schools. She called that number and had us on CenturyLink’s $20/month minimal landline service in under 20 minutes. Pure magic.
  • CenturyLink has a customer relations page to use when "you are not satisfied with the resolution of your issue after contacting one of our Customer Service Centers or one of our Customer Experience Centers”.  That page has a link to an "email form”. The link no longer works, instead you go the page for revising feature sets. Shocking :-).

Update 4/12/2016

  • Comcast has worked quite well for us. I’m watching for the expiration of our 1 year pricing and anticipating the negotiation to follow. Amazon is now reselling Comcast services — it provides clear price information for 1 year contracts vs. no contracts. We expect to switch between Comcast and CenturyLink every year or so — while I campaign for Google Fiber every chance I get.

Wednesday, July 22, 2015

Building and sharing Google bike (and other) route maps using waypoint defined computed routes

I used to do bicycle maps using Google’s Map Creator / “My Maps” tools, but for me it was a frustrating process. I never quite got the hang of the building, and sharing never seemed to work well.

Now I create bike route maps by entering sequential waypoints, and letting Google handle the routing between them. It takes only a few minutes and I can share the results as a short Google URL. I can send the maps to Google Maps.app on my iPhone, put them in a blog, create a document of my routes, save them as bookmarks, etc.

Here’s a sample of the process, with a map that starts at locally famous bike spot - Angry Catfish Bicycle and Coffee Bar. (You should figure out your general route before you do this process).

1. Search for your starting point, then use the “three line” Google menu to turn on Bicycling. (you may need to turn it on more than once)

 Screen Shot 2015 07 22 at 9 47 00 PM

2. Click Directions and put it into bicycle mode. Notice the choose destination field. Click in that field to be sure Google is in the right mode, now click on your next waypoint.

Screen Shot 2015 07 22 at 9 51 36 PM

Screen Shot 2015 07 22 at 9 52 39 PM

Notice you’ve go two map destinations and that Google has figured out a route using the bike trail.

3. Keep building your route by adding way points. You do have to click back into the ‘choose destination’ field so Google understands the context. Once you click a point then hold (don’t release) you can drag the waypoint and watch Google add your route. Release when you get to a key turning point or point of interest. For example:

Screen Shot 2015 07 22 at 9 58 23 PM

4. Here’s the complete loop (1h, 6min). It has a wiggle in the top right I don’t like, I’d rather stay on the trail. I could have redone the route by adding a waypoint on the trail, that would prevent the diversion. Or I could just do a custom route by clicking on handles and moving them as below:

Screen Shot 2015 07 22 at 10 02 13 PM

Screen Shot 2015 07 22 at 10 04 21 PM

5. It really only takes a few minutes to get to this point. Now tap Google’s 3 bar (hamburger?) menu and choose share. The URL looks like this:

https://www.google.com/maps/dir/Angry+Catfish+Bicycle+and+Coffee+Bar,+4208+S+28th+Ave,+Minneapolis,+MN+55406/Minnehaha+Creek/44.9240882,-93.1976693/44.9417637,-93.198409/44.9504289,-93.2486649/44.9318804,-93.2501599/44.9271569,-93.2322561/@44.9285992,-93.2165955,14z/data=!4m24!4m23!1m5!1m1!1s0x87f62844b2ef9ac1:0x238cfef7316e9d8b!2m2!1d-93.2325294!2d44.92653!1m5!1m1!1s0x0:0x2d1439632b6ee239!2m2!1d-93.2247432!2d44.9175766!1m0!1m5!3m4!1m2!1d-93.1994777!2d44.9467264!3s0x87f629dd3802980d:0xad4046ce8178a45c!1m0!1m0!1m0!3e1

but it also offers a short form:

https://goo.gl/maps/9Kwhf

Sure beats using Map Creator. 

Sunday, July 19, 2015

Airmail 2, Postbox and Mailbox for OS X access to Gmail -> I'm back to mail.app

I think OS X Mail.app for Yosemite is a pretty good Gmail client. The one big problem is that one must download the entire archive, though there is an option to omit automatic attachment download. That’s fine for my primary machine, but I don’t want to burden my 256GB SSD with 20+ GB of Gmail archive. So I went looking for a Gmail client.

I used Sparrow years ago and liked most of it — except the obligatory threading and conversation views. If an app is going to do that, it has to let me quickly delete all the emails I no longer care about. Sparrow didn’t.

Sparrow’s gone of course. More recently i used Airmail with some success, so I tried Airmail 2. That was … frustrating. I ran into multiple bugs and UI issues when I migrated from Airmail 1, so I tried again with a fresh start. This time while sending an email I got an authentication failure. No problem — I quit and fixed the error (I think). I then went looking for the stalled email and … it was nowhere to be found.

I deleted Airmail 2. (That was money wasted.) I then tried Mailbox.app — forever in beta, mostly abandoned, and you can’t delete individual messages, you can only delete an entire conversation. Deleted Mailbox.app. Next up - Postbox.

Postbox doesn’t support Google OAUTH2. I read the documentation on enabling “Access for less secure apps” and … I deleted Postbox.

So I’m back to Mail.app. I disabled automatic download of attachments in preferences, but I guess I’ll just sacrifice the disk storage. I considered enabling Google’s IMAP folder message visibility limits, but of course that would apply to my server too. I think in past Mail.app had some control over message downloads, but that’s gone now.

The bright side is I don’t mind Mail.app. Just hate the lose the storage...

Update 7/18/15: With ‘automatically download attachments’ off, selecting Inbox and choosing Account Info from the Context menu tells me that 80,309 messages are using 4.35GB. I can live with that.

Friday, July 17, 2015

So you want to actually restore from that Time Capsule backup? Do you feel lucky punk?

Yeah, I know he actually said “Do I feel lucky?”. But you get the point.

By now even the most hard core Apple apologist must have moments of existential doubt. Waking at 3am thinking, if only for a moment, that maybe Tim Cook really is the antichrist. 

The rest of us are moodily throwing darts at Apple stickers, wondering if Atari [3] might reconsider the personal computer market.

Time Capsule is typical of the 2015 Mac. The problems have been around for years, hope has all but vanished, and it’s possible things are even getting worse. On the other hand, there aren’t a lot of great choices for network Mac backup. Retrospect, which I loved in the days of DAT tapes and SCSI drives [1], effectively died years ago [2]. The best alternative may be Code 42’s Crashplan cloud backup, but that requires serious bandwidth (up and down) and a lot of confidence in a remote corporation. Also … java (ugh).

So I use Time Capsule for most of the machines in the house, but keep data on a server that’s also Carbon Copy Cloner cloned nightly [4]. 

This is what I do when I need to actually restore from Time Capsule [5]. If I don’t follow these steps restores will often hang and fail.

  1. Shut down every machine on my network.
  2. Power cycle my Time Capsule.
  3. Gbit ethernet connect the target machine to the Time Capsule and restart that machine.
  4. Log into my Admin account and start Time Machine.
  5. Choose a date/time as needed. Set an 5 minute time and walk away. (Trying to interact immediately will be immensely frustrating.)
  6. Navigate as desired until UI stops responding. Set an 8 minute timer and walk away.
  7. Return, select a file, and complete the Restore.

Yeah, Time Capsule has a scaling problem — restore times seem to have a non-linear relationship to the number of files on the source machine and the number of backup versions.

It’s good to have a way to proceed though. Just in case Carbon Copy Cloner isn’t enough.

Update 7/19/2015

app.net@martinsteiger writes: “Time Capsule NAS is slow and unreliable, it shouldn't be used for backup. With a NAS up to par, even with a 2-drive model from Synology like the DS21n+ models, Time Machine works fairly well.” Installing and configuring a Synology NAS isn’t terribly hard, but it’s definitely geek-realm. I agree that whatever scaling and reliability issues Time Machine has, the root problem here is mostly likely that Time Capsule is grossly underpowered for its primary function.

Update 10/20/2015

My Time Capsule’s WiFi function died, so I took the opportunity to buy a Synology and I’m testing Time Machine backup. There I read that enabling Synology’s native encryption will dramatically reduce performance. I have been using Time Machine’s native encryption for the backup of my 2009 iMac — a machine that probably lacks dedicated encryption hardware. I wonder if the awful restore performance is encryption related...

- fn -

[1] Ok, so SCSI is a good reminder that the golden age had nightmares too.

[2] I tried Retrospect again a few months ago. Wasn’t pleased. My guess is that it’s architecturally a poor fit to OS X.

[3] Atari died in 1983. They were an early competitor to the Mac and Amiga, pre-Windows.

[4] With CCC versions are archived separately. A pain to recover but it can be done. CCC can backup to a network image, but OS X Mavericks and beyond use SMB2, and SMB2 doesn’t support sparsebundle mounts. You have go through some gyrations to do an AFP mount instead. I am trying this out. I rotate my CCC backups off site across 4 encrypted drives, so I always have at least 5 backups of my data using two different technologies.

Actually, I also do Aperture backups to a local high capacity drive using Aperture’s build in backup tech. So for Aperture images I have 6 backups using three different technologies. And I know that won’t be enough ...

[5] I’ve never had to use Time Capsule for a real emergency. I’ve always been able to use my CCC clone, but I periodically test Time Capsule to see if I can make it work.

Thursday, July 16, 2015

How to view OS X hidden (unix) folders using TextWrangler

I thought there was a way to view hidden OS X Unix folders like bin, etc, home, Network, private, sbin .vol etc using Bare Bones Software's free TextWrangler but I couldn’t figure out how to do it. I wondered if this now required BBEdit, but the comparison chart didn’t mention anything.

It’s in the manual. Yeah, TextWranger, which is free, not only has Help file, it also has a (superb) manual:

Opening Hidden Files Turn on the “Show Hidden Items” option in the Open dialog to display hidden files (including both files whose invisible attribute has been set, and those whose names begin with a period) or files from a folder which is normally hidden by the system.

Screen Shot 2015 07 16 at 11 28 17 AM

When I turned it on I had to navigate the folders to force a refresh, but then they all showed.

I’d been hunting around for a preference settings, but it’s part of the Open dialog. I’ve gotten so used to utterly undocumented applications that I didn’t think to look for a manual. Google was no help … but maybe it will be after I post this.

Wednesday, July 15, 2015

Photo slide show screensaver on Mac - network share and Yosemite's reversion to default. A workaround.

I have never been happy with how OS X handles anything to do with file shares, I think Windows does a much better job.

Which, if you know anything about Windows network services, must mean I’m a raving loon. How could OS X be worse than that?

I can’t explain it. My experience is that, for no good reason, when requesting a file or folder from an OS X server, things often fail. Disabling sleep and hard drive rest helps. [4]

So it’s not surprising that using a server based photo collection with the OS X Photo Slideshow screensaver has always been problematic. I’ve really only had good success with local stores, or using local Aperture or iPhoto as the source.  I assume something hangs and OS X switches to the default photo slideshow (national geographic) screensaver, losing all memory of the screensaver you want to use.

This isn’t new, but with Yosemite it’s seems to have gotten worse [1].  Every time I opened my brand new MacBook Air on 10.10.4 I was back to National Geographic. Which is pretty, but I’ve come to hate it.

Happily, this problem is aggravating enough that there’s now a fix, which is best described in an AskDifferent post by “Flavin” (he found bug in 10.10.1, he both asks questions and answers it. I love when people return to add their answers.) The process goes like this:

  1. Set up your screensaver as desired.
  2. Run a terminal command to see the preference file values:
    defaults -currentHost read com.apple.ScreenSaverPhotoChooser
  3. Copy values into a script to write them back, where script is of the form
    defaults -currentHost write com.apple.ScreenSaverPhotoChooser … 

This is what my script looked like based on Flavi (emphases mine):

#!/bin/bash
defaults -currentHost write com.apple.ScreenSaverPhotoChooser CustomFolderDict -dict identifier \"/Volumes/ss/ss\" name ss
defaults -currentHost write com.apple.ScreenSaverPhotoChooser SelectedFolderPath \"/Volumes/ss/ss\"
defaults -currentHost write com.apple.ScreenSaverPhotoChooser SelectedSource -int 4
defaults -currentHost write com.apple.ScreenSaverPhotoChooser ShufflesPhotos -bool true

My images are in a network share /ss/ss [2]. Note in a Bash script like this quotes are escaped with slashes, hence \” to contain the string.

At this point I had the fix, but I got stuck with following the usual practice of storing it in OS X’s hidden unix file structure. TextWrangler wouldn’t show them to me [3]. So instead I put the script into a standard OS X Folder (Documents\Bash is my name) and used my favorite tip of the year: How to run a Unix shell script from the Mac Finder | alvinalexander.com. I changed the .sh extension to .command and now it’s double-clickable. No need to wrap it in AppleScript or death with BSD Unix PATH, etc.

THEN I discovered my script only worked when the remote network share was mounted. If it wasn’t mounted OS X wouldn’t mount it for me; the script would run as above but OS would fail to find the volume (“ss”) and would return to the dreaded Nat Geo. So I revised the script to mount as needed (I had a devil of a time getting mount_afp working because I didn’t understand I had to create a directory first in Volumes to be the mount point/node), and I added code to set Screensaver to Photo Slideshow borrowed from another reference.

#!/bin/bash

## Mount remote volume if not already mounted
if [ ! -d /Volumes/ss ]; then
mkdir /Volumes/ss
mount_afp afp://Thunderpaws._afpovertcp._tcp.local/ss /Volumes/ss
fi

## Set Screensaver to Photo Slideshow
/usr/bin/defaults -currentHost write com.apple.screensaver 'CleanExit' -string "YES"
/usr/bin/defaults -currentHost write com.apple.screensaver 'PrefsVersion' -int "100"
/usr/bin/defaults -currentHost write com.apple.screensaver 'idleTime' -int "300"
/usr/bin/defaults -currentHost write com.apple.screensaver "moduleDict" -dict-add "path" -string "/System/Library/Frameworks/ScreenSaver.framework/Resources/iLifeSlideshows.saver"
/usr/bin/defaults -currentHost write com.apple.screensaver "moduleDict" -dict-add "type" -int "0"
/usr/bin/defaults -currentHost write com.apple.screensaver 'ShowClock' -bool "false"
/usr/bin/defaults -currentHost write com.apple.screensaver 'tokenRemovalAction' -int "0"

## Set location of photos
defaults -currentHost write com.apple.ScreenSaverPhotoChooser CustomFolderDict -dict identifier \"/Volumes/ss/ss\" name ss
defaults -currentHost write com.apple.ScreenSaverPhotoChooser SelectedFolderPath \"/Volumes/ss/ss\"
defaults -currentHost write com.apple.ScreenSaverPhotoChooser LastViewedPhotoPath \"\"
defaults -currentHost write com.apple.ScreenSaverPhotoChooser SelectedSource -int 4
defaults -currentHost write com.apple.ScreenSaverPhotoChooser ShufflesPhotos -bool true

## Removes the .plist LaunchAgent from inside the User Launch Agent Folder.
## rm -f ~/Library/LaunchAgents/set-screensaver.plist
## killall cfprefsd

exit

Eventually I may take app.net@jws’s advice and use Watchman to fully automate a fix, but I kind of like firing this script off every time Yosemite zaps my slideshow of 100 years of family pictures.

- fn -

[1] Maybe related to this Mavericks change? It’s not the only thing that’s gotten worse over the past 1-2 years of course. My current explanation for the Hot Mess that is Apple software 2015 is that during the Jobs era and shortly thereafter Apple incurred massive technical debt and they are slowly and painfully trying to fix it, while shedding expertise like water off the proverbial duck’s back. An even more worrisome possibility is that Apple is now a typical corporation.

[2] Why the redundant ss? Historic reasons. The network share is a thumb drive sticking out of the back of a Time Capsule, so there’s no authentication needed.

To get the path of a folder just drag the finder icon into Terminal and the path will render.

[3] I’ve run into this before I think, but I can’t remember if there’s a setting I’ve missed or … what. Maybe it’s a BBEdit only feature, but it doesn’t show up in the TextWranger vs. Bbedit comparison page. Google was no help at all.

[4] I wonder if it’s because OS X often stores references to “mount points” (Volumes/…) but mount points have to be associated with network addresses, and those are not stored. Note my script should really check for the network access, not the existence of the Mount directory, but I don’t yet know how to do the former.

References

 

iOS 8.4: Spotlight not showing Bing results? Your email index may be corrupted.

Recently Spotlight stopped offering me Bing results (or Wikipedia). Power cycling the phone didn’t help. I tried the usual Spotlight fix in Settings:General:Spotlight of turning off all search results, exiting settings, confirming searches return nothing, then turning them back on. Didn’t work this time.

After a bit of experimentation I found Spotlight worked as long as I didn’t include mail search. Not unexpectedly, when I tried searching within Mail.app search would hang for at least 30 seconds (when I gave up). 

The fix was to remove all of my email accounts entirely - it wasn’t enough to simply turn mail off. I then restored them [1] and now search works within Mail.app and also within the Spotlight UI — including Bing results.

I assume Spotlight performs searches in sets, and when it got to the set containing Mail it got hung up, returning nothing and blocking returns from later sets in the execution pipeline.

I decided I don’t like getting Mail results back in search anyway, so I turned them off. I do like being able to search Mail, so the fix was important.

My spotlight enabled searches are, in order:

  • Applications
  • Contacts
  • Events (I use Calendars 5.app primarily, but I enabled Google Calendars in Calendar.app to support Event search. Sadly iOS still needs Google’s ugly SyncSelect hack. OS X doesn’t need it, so I blame this one on Apple and their (assumed) monstrous technical debt problem.)
  • Spotlight Suggestions
  • Bing Web Results (also Wikipedia)

I only use iOS Reminders for short term things (use ToDo.app) so I omitted that. Similarly I only use iOS Notes for transient items, so I omit that too (use Simplenote.app, despite it’s #$@$@ tag limitations). Messages, Voice Memos, Music, Podcasts, Videos and Audiobooks never made sense to me as items to include in Spotlight search.

[1] I had to redo my settings of course, including digging into preferences to make Google Delete when it damned well should Delete. I set it only save the last two weeks of email to reduce burden on the evidently unreliable indexing engine.