Thursday, October 31, 2013

How to get back the Gmail compose that you used to love.

It's simple, at least in Chrome.

Control-Click on the Compose button. Your Compose opens in a tab - with To and Subject line exposed, full view. Alternatively, shift-click to get a new window.

Shift-C works too, opens a proper compose. Ctrl-C doesn't work though.

Reply isn't as elegant.  Shift-R when in the context of a menu creates a right sided 'pop-out', shift-click or ctrl-click on top right icon to get it in a separate window. Alas, subject line is still hidden, that's another click to expose (Google hates subject lines, no kb shortcut either). Also, prior text is hidden -- yet another click.

Shift-A replies all in new window.

Have I mentioned I don't like Google?

We need a Chrome Extension that fixes Reply.

Monday, October 21, 2013

Why I couldn't unlock my wife's AT&T iPhone 4S - number, contract, family and device

I've had quite good results with AT&T's unlock procedure for our family's post-contract iPhones including a 3GS, 4 and 4S. So I was surprised when I was unable to unlock a phone that I thought was post-contract. I entered the number into AT&T's form, and before I could even enter the IMEI that identies the phone I got an inline message telling me I couldn't do the unlock.

It didn't explain why, so I was a bit frustrated. After I took stock of our phones and used AT&T's obscure contract expiration page I realized it made sense. With various swaps of phones and contracts among the family I'd gotten confused. We have five devices, 3 are unlocked, and we have two 2yr ongoing contracts for the newest phones (a 4S and 5). So I need to wait another month. [1]

If you're confused by this process (who isn't?), it helps to know AT&T's first test is by phone number. The phone number is the unique identifier for a contract. If that number has no eligible IMEIs associated with it then you can't go further (as far as I know).

If the phone number has eligible IMEIs then the next test is IMEI. I'll find out in a month how that works with a device that's been services swapped ... twice (... because the first Apple Store service swap (refurb) was defective of course).

[1] AT&T allows you to get a new contract phone prior to contract expiration, but that doesn't mean you get to unlock the old phone early of course.

Mac OS X Kernel Panic -- some debugging tips

Two  Four months ago my 2009 iMac was, if not rock solid, at least compacted dirt solid.

Then my 1TB internal Seagate drive (a replacement of a recalled drive) failed its SMART test. Since then it's been one odd thing after another; I haven't had a long enough trouble-free period to say anything sensible about the 1TB Samsung SSD I had FirstTech install in place of the failing HDD.

Today it's been a bit worse than odd -- I'm getting kernel panics. The multilingual white screen of death to be precise.

Usually this means a hardware error, and since I recently had a 1 TB SSD installed that's an obvious suspect. On the other hand, I've seen some odd firewire behaviors over the past few months. Maybe something in my 3 device firewire chain is malfunctioning (shades of SCSI chains of old, but I've also seen failing USB hubs cause weird crashes).

I saved one of my kernel logs and went into basic diagnostic mode, removing all peripherals. Apple Hardware extended test seemed to work, but it got stuck when my hard drive fan "Failed" (Presumably with my hard drive gone this result is misleading?).

Next I looked at Activity Monitor for anything running I could uninstall. So far I've removed:
  • Tech Tools Pro
  • Citrix Receiver
  • Carbon Copy Cloner
Of these I'm most suspicious of Citrix Receiver, next Tech Tools (esp with the SSD installed) and least of all CCC.
Then I went looking in LaunchDaemons and I found some odd ones:
  • com.google.keystone.daemon.plist: Google's updater I think
  • com.barebones.textwrangler.plist: probably benign
  • com.mac.adg.SquidMan.plist: Ok, this was amazing. Looks like I installed it in 2001. It had a running process and a file in privileged helper tools
  • com.bombich.ccc.plist
I cleared those out. Next I researched how to interpret kernel panic logs (/Library/Logs/DiagnosticReports), these articles seem to cover the domain ...
Alas, the easiest thing to interpret is the kext list, and mine looked benign even before I removed the above items.

Since my memory is old, and since it passed extended memory tests using Apple Hardware and Tech Tools, I'm most suspicious of a hardware failure in my Firewire chain, secondarily a failing USB hub. I don't know any way to debug those other than slowly adding things in until I get a panic, then removing them and seeing if the panic resolves.

Update: My firewire 400 to 800 cable is ripped apart near its insertion point. Subtle, but I may have a suspect.

Update 10/21/2013: Good app.net thread on this. My overall recommendations on a kernel panic problem is now this sequence
  1. Look at the kernel panic crash log list of loaded kext. Do any of them look odd or unfamiliar? Google and any that are not Apple native. [@gaelicwizard says this is low yield in modern versions of OS X]
  2. From admin account look at Activity Monitor and scan processes for anything odd.  [@gaelicwizard says this is very low yield in modern versions of OS X -- OS is pretty robust to this, see also @clarkgoble's tips below]
  3. Remove all peripherals. Run Apple's Hardware Check (used to come on DVD -- seems to run MacOS Classic!) to check memory or use Apple Diagnostics for machines post June 2013 (issue list documents what it can test). If don't have that use 3rd party app. Apple has its own "Apple Service Diagnostics" which is not legally available to us.
  4. Inspect all peripheral cables for defects (esp. firewire).
  5. Add USB devices. I don't know of any way to check for faults other than running and observing. Try boosting traffic (copy to drive) to stress.
  6. Add Firewire devices, one cable/device at a time.
Some Panics need to be diagnosed via remote network connections, and a networking Panic may need to be diagnosed remotely using a Firewire connection.

Note that if the fault is outside of the Mac a trip to Apple Store is unlikely to help. We can hardly bring all of our peripherals to the store.

There's a way to read a crashlog kext list and identify the kexts associated with Firewire, USB or Bluetooth and thus know where to look. From @gaelicwizard
  • The backtrace of the crash tells you where the actual panic happened. It is often, but certainly not always, within or close to where the error happened (at least as far as hardware faults go, IME). It should say a bunch of IOBluetoothHIDDrive ... AHCI is SATA. OHCI is FireWire (and some old USB). UHCI is USB. Often, the extension will just say FireWire or USB or whatever, but sometimes you see those acronyms too....
@clarkgoble summarized his approach as well (See also: Clark's Regular Maintenance Script) including general maintenance ...
  • I've regularly audited kexts and then launchd agents. With kexts it was relatively easy since 32 bit ones were disabled on newer machines. That meant it was harder for old ones to persist. With launchd I try and know what's there, do a Google search if I don't recognize it, and frequently disable things. (I had problems with a Google updater a few years back for example) 
  • The other debugging I do is to check Secrets (a pref pane for standard defaults modifications) and see if I set something that is a no no with new UI. Then I check pref panes, menulings, and running programs... I also run my maintenance script since the caches often cause some problems in my experience. Especially with older versions of Safari...

Monday, October 14, 2013

Calendars 5.app for iOS - don't break my heart.

I've only been using Calendars 5 for a few hours and I'm in love.

I'm sure I'll hate it eventually, but I usually do my hating faster than this. Calendars 5 is the best calendar app I've used since DateBk 5; it gives me hope I can survive Johnny ("The Designer") Ive's kneecapping of iOS 7 Calendar.app.

This is what we've needed. No #$@$@ wasted white space. This is a Calendar app that lets us actually, you know, see the friggin' appointments.

It synchronizes with any one or more of Google Calendars, Google Tasks, and the "native" iOS Calendar apps. I think the Google Calendar sync is using Google's native APIs; I didn't have to use Google's odd web page to setup CalDAV sync for multiple Google Calendars. i had only to enter my Google credentials and all my 15 or so Google personal, family, and subscribed calendars were immediately available.

But what about my Corporate Exchange Calendar? I figured that wouldn't work - but I was wrong! I enabled 'Native'/'Local' Calendars as well as Google (when I first connected it seemed I could do only one or the other, that's wrong) and I picked up my corporate calendar that way [1]. (Calendar.app on my phone also has my Google Calendars, but native support is much nicer than CalDAV support so I disabled those.)

I don't use Google Tasks, but Emily has been reluctant to add the complexity of a separate task manager to her Calendaring. With Calendar 5 there's only one place to look.

List, Day, Week and Month view in vertical and horizontal layout are all effective on my iPhone 5. Did I mention Search in List view? Fast!

This is the Calendar app I've been waiting for. Not Cue, not Fantastical, not Agenda -- this one.

[1] I didn't try to edit that Exchange Calendar, that barely works at the best of times on Calendar.app.

Sunday, October 13, 2013

DreamHost transferring its domain reseller/registrar business to eNom

File this one under deep sigh.

I started using Dreamhost for web services and domain management in 2008. I've been reasonably satisfied with them, though these days the main thing they do for me is host my share blog and manage domains, including some I moved from eNom/Google Apps. So I didn't expect any problems when I renewed one of those domains.

Alas, Dreamhost has moved their Domain registrar services to eNom. It's not clear exactly what his means, as they may always have been a reseller of someone else's domain management. In any case I had to go through a multi-step transfer process, which was not helped when Dreamhost's outdated UI told me I was transferring to LogicBoxes - which I'd also not heard of.

I contacted support seeking an explanation. They responded (I've fixed up the english, I don't think my support person is a native speaker):

Thank you for contacting Dreamhost Support. We are a registrar (reseller), we used to use LogicBoxes (still do for some  domains), but we are transferring most of the domains we can to eNom because we have had issues with logicboxes in the past.

The email you confirmed was to have the domain move from LogicBoxes to eNom, but the domain will still be registered through Dreamhost … Nothing will change on what you see, you will still manage it renew it, and everything through us. The change will actually be on the administrator side which we will see... 

I'm a bit concerned about the sloppiness of the process -- and that it was a surprise to me. I assume times are hard for this kind of hosting service -- much of the value they once delivered has moved to other businesses. 

Update: I realize I'm not getting anything from LogicBoxes, so this email dependent process may not be working. I'll see what Dreamhost support says.

See also:

Monday, October 07, 2013

Siri needs real documentation. Here's some.

COBOL was written for "managers". Unlike FORTRAN it was supposed to be readable and useable by non-programmers. Same thing for SQL. And AppleScript.

All of which are harder to use than C or Python or any number of well documented and rational programming languages (ok, SQL isn't as bad as the other two).

Siri reminds me of AppleScript. It's supposed to be a conversational companion, but as of 2013 it's an artificial form of conversation full of "magic words" like "Cancel" and incantations and capabilities that must be memorized in one form or another.

Yeah, Siri hasn't lived up to my early brainwashed enthusiasm. She can generate passwords (via Wolfram Alpha), but you can't copy the $!$#@$ strings.

Alas, contrary to my expectations, Apple isn't giving up on Siri. If anything, Apple's doubled down. You can't search iOS settings from Spotlight, but you can search from Siri. [1] It's widely assumed Siri will be required to use Apple's iWatch.

So we need to learn it, which means studying the documentation. There's a fair bit on the web (not much on Apple's web site of course), but I wanted a book.

Turns out there is one - Talking to Siri: Learning the Language of Apple's Intelligent Assistant - Erica Sadun, Steve Sande. It's $7+ on Kindle, $9 on Play [2]. I glanced at a few pages, learned/relearned 3 new things, and bought it. (The next edition won't be available until March 2014, so for iOS 7 used the book and Sadun's TUAW update.)

Between the book and the links below I'm writing my own Siri notes (in Simplenote of course). Siri is one foreign language I need to learn.

PS. My personal (Simplenote) Siri notes are public at http://simp.ly/publish/K19h9j 

See also

- fn -

[1] A mind-boggling omission. Does Google have a patent on searching settings?

[2] Play DRM can be removed - so worth the $2 to read it via Google's web pages, iBook, and BookReader

Saturday, October 05, 2013

Integrating Google Drive Google Docs into Spotlight search: "Webpages", Kinds and Smart Folders

Mac Spotlight was behaving oddly with my Google Drive. It's not the obvious issue with indexing Google Docs files in Google Drive; was more subtle but it was fixable.

To begin with there's no problem with searching PDFs and other relatively standard files that are stored in Google Drive. They are fully indexed and searchable by title and contents. [4]

The problem is with Google documents, like those with the extension of .gsheet. Of course Spotlight can't index the contents; for most of mine there's nothing there to index anyway.[2]. What's odd is that Spotlight search on the file name didn't work from the spotlight title bar [1], but it did work from the folder search UI.

It turns out that I'd configured Spotlight preferences to exclude web pages from search results, and for Spotlight a Google Doc is a web page reference [2]. So the Google Docs were excluded from results. They showed up in the folder search because evidently Spotlight disregards file type preference there.

Next I had to address Mountain Lion's Folder Bar 'All My Files' list. Even after I revised Spotlight preferences that list didn't include my Google Folder docs.

I right clicked on 'All My Files' to see the Search Criteria -- mine showed Documents and "Kind is Other - com.microsoft.com" (Silverlight files it seems). 

So all I needed to do was add the "Kinds" for the different Google Docs. I'm embarrassed to admin I tried file extensions and Google and Terminal.app and Get Info trying to figure out what "Kind" Spotlight assigned to these files (as distinct from Type, which was "Webpages"). The answer, of course, is simply to look at the Finder's detail list (duh). The kinds in my Google Drive were:

  • "Google document" (extension .gdoc)
  • "Google spreadsheet" (extension .gsheet)
  • "Google drawing" (extension .gdraw)
I didn't have any presentations, but you can guess that one. [3]
 
Once I added those (with quotes) to the 'All My Files' criteria [7] in the Finder Sidebar they showed up in the All My Documents list. Problem is, even in Mountain Lion you can't save your edits to "All My Documents" [6]. Indeed, any editing of a saved search is weirdly obscure (no edit in context menu).
 
There was still one problem.  'All My Files' -- at best I could remove the original and save a new one with a less appealing icon. The trick, of course, is to change the icon (see comments, also [5]).
 
Alas, I couldn't put my Saved Search back into the Finder Menu! I could drag folders there, but not a File. I had to use an obscure trick - Select the file then type Cmd-T. I think this is a Mountain Lion bug, possibly for non-admin users.
 
At last all seemed well; except the Finder Sidebar persistently showed the old gear icon, even though Get Info showed the current icon. A Finder Restart didn't fix this, so I'm a bit stuck for the moment. I suspect it's a Mountain Lion bug [8].
 
(BTW, if you're a new Mac user and you do this, you probably want to set New Window Default to Home Directory or something similar. Unfortunately you can't make a smart folder a default.)
 
See also:

[1] BTW, if you use the titlebar spotlight search and mouse over a result, you get a preview. You don't see filename or path though. If you hold the command key down, you will first see filename below the preview, then, after a second or two, it will alternate with path name.

[2] Here's what a gsheet content looks like in textwrangler (GUIDs truncated for security reasons)

{"url": "https://docs.google.com/spreadsheet/ccc?key=0AtgMeRwpi&usp=docslist_api", "resource_id": "spreadsheet:0AtgMec"}

[3] I'm guessing Google Drive installation tells OS X what Spotlight Kinds to associate with these file extensions.

[4] BTW, you can use Google Drive to convert Microsoft file types to Google formats.

[5] OS X Mountain Lion: Change the icon of a file or folder. Don't try to copy the preview icon, copy the wee icon at top of get info.

[6] It is a "Canned Search" Kind, not a "Saved Search" -- and it's a System File.

[7] Get Info shows the native search language version. Here's what I got when I added kinds without quotes:

(true) && ((((kMDItemContentTypeTree = public.content) || (kMDItemKind = "com.microsoft.*"cdw) || ((kMDItemKind = "Google*"cdw) && (kMDItemKind = "Spreadsheet*"cdw)) || ((kMDItemKind = "Google*"cdw) && (kMDItemKind = "document*"cdw)) || ((kMDItemKind = "Google*"cdw) && (kMDItemKind = "drawing*"cdw)))))

Here's the better results with quotes:

(true) && ((((kMDItemContentTypeTree = public.content) || (kMDItemKind = "com.microsoft.*"cdw) || (kMDItemKind = "Google Spreadsheet"cdw) || (kMDItemKind = "Google document"cdw) || (kMDItemKind = "Google drawing"cdw))))

[8] I'm not sure if this is new with Mountain Lion, but it looks like display of custom icons in the Finder Sidebar is a known issue.