Sunday, June 20, 2010

Major iOS4 feature: You can turn off all data services on the phone

You can't unlock an AT&T iPhone, but after your contract contract is done you can give it to another person who has an AT&T account. If they insert a GSM card [1] they can use the phone. I've gotten contradictory reports from AT&T, but it appears that under current policy if that GSM card does not have a data plan then the iPhone can be used without a data plan.

Of course that iPhone will then run up a large bill -- since it will inevitably do some network data transactions and they will be billed at very high rates. The current workaround is to pay $5/month for an AT&T plan that less you monitor a phone, limit data use, etc.

As of iOS4 though you can just turn off the data service on the phone ...
iOS 4 walkthrough | TiPb 
... You can now choose to not only turn off 3G data or roaming data, but all cellular data...
I think you can use the Parental Controls to lock settings so the user will not be able to turn cellular data back on. So I can give my old 3G to my son and he can use it as a phone and for texting, but will only have data services when he's on a WiFi. I won't have to pay $180/year for minimal 3G data services. Over two years that pays for my new phone.

[1] iPhone 4 uses a micro-SIM that is not compatible with SIMS from older phones. This does work for a 3G or 3GS.

Friday, June 18, 2010

Two ways to find a lost iPhone

Apple has produced a well done iOS app for conventiently location an iPhone, sending it a message, locking it or wiping it completely. TidBITS has the best overview ...
TidBITS iPhone iPad iPod: Find My iPhone App Enables Mobile Device Discovery

... To enable Find My iPhone/iPad/iPod touch on a given device, tap Settings > Mail > Contacts, Settings, and tap your MobileMe account under Accounts. Set the Find My iPhone switch to On, if it isn't already, and tap Done. In the Fetch New Data view, either or both Push and Fetch need to be active. If Push is set to Off and Fetch is set to Manually, Find My iPhone cannot work, because the location is never updated. (Apple recommends Push for MobileMe.)...
It's hard to imagine now, but the BB Pearl of 2008 was a proto-gPhone. It ran Google Mobile and you could track it on Google Maps. I came to despise the phone and I was delighted to get rid of it, but I missed the free location tracking. Now I have an easy way to track a phone; unlike Latitude it's strictly on demand tracking - the phone isn't routinely updating its location.

I tested the new iPhone app on Emily and my phones -- and discovered I hadn't enabled tracking on my phone. That was an oversight! I was lucky to discover my mistake because you can't enable tracking remotely, though you can wipe a phone remotely. (For reasons good or greedy, Apple has a far more conservative attitude towards location sharing than Google.)

The new app with MobileMe services is a good way to find a lost phone, or to see how far your spouse is from airport pickup (though you need his/her MM password -- again, conservative on the privacy). However it only works if you enable it, and you need a MM account.

A friend of mine came up with another approach that doesn't require a MM account -- or any advance planning. When he lost his iPhone bicycling to work he had AT&T add the family tracking feature to his account. You can add it at any time, and you don't need possession of the phone (it does have to be on however). This is less precise than MobileMe tracking since it relies on cell tower triangulation, but in urban areas that can work well. It worked very well for him -- he found his phone quickly. He then canceled the service; AT&T allows customers to add and remove services as needed. The AT&T locator service, of course, works with any phone.

So there are two approaches, but if you're primarily concerned about finding a lost phone the on-demand AT&T tracking service is quite a bit cheaper than MobileMe -- and it doesn't require setup. If you have a MM account for other reasons (it's really a pretty crummy service to be honest) this is well worth enabling and testing.

The 10.6.4 update breaks iMac external display function?

An iMac 27 can serve as an external monitor. Connect a DisplayPort input and it should switch to that.

It used to work. Until now ...
Apple - Support - Discussions - After 10.6.4 update I cannot use iMac ...
I've routinely connected my work laptop to my iMac via the DisplayPort to use it as an external display. This morning this is no longer working. I updated to 10.6.4 last night.
When I plug the DisplayPort cable into my laptop the iMac screen goes black as it should. I can then select dual monitors. For a moment it switches to the laptop setting. When I then click 'Apply' on the laptop to configure dual monitors it gracefully switches back to the Mac desktop (which is wrong).
There may be other causes of course. I strongly suspect a 10.6.4 bug however.
Updates to come if I learn more.

Update: I found a workaround
  1. Set iMac resolution to 800x600
  2. Plug DisplayPort cable into Laptop
  3. In laptop, click on secondary display and set external display resolution to 800x600
It then switched the iMac into display mode. It also jumped to the correct resolution.

Multi-monitor support on Windows has emergent properties, so I can't be sure this is a 10.6.4 bug. We'll have to see how many have trouble.

Update 7/25/2010: The workaround doesn't always work. I've submitted a bug report. I've also noticed that if you unplug a remote display from an iMac, the main display switches to the resolution of the removed remote display. So there are several things broken.

My current workaround is (Windows XP on Dell laptop) as below. I think behavior is different if you've never successfully connected to the external Mac monitor. The key is to switch the Mac to 800x600
  1. Laptop: set NVIDIA control panel to multiple monitor configuration screen. It will show only one monitor.
  2. Switch iMac user account to 800x600 resolution
  3. Plug in DisplayPort cable to laptop
  4. NVIDIA control panel display will switch to dual monitor view. Configure as needed.
Under some conditions you will have a very short period of time to configure the NVIDIA control panel before the iMac switches back to showing the OS X time period. My hunch is that this is the 10.6.4 bug -- a change made to the timing. In earlier releases the OS X desktop remained "black" (waiting for external input signal) for a much longer time, perhaps indefinitely. I suspect the 10.6.4 bug was introduced as a hasty hack for problems where the OS X desktop remained stuck in an inappropriate "black" mode, waiting for a signal that never came.

Update 7/28/10:

Another tip. I have the habit of turning off my iMac's OS X secondary monitor before disconnecting it and plugging in the laptop that will put the iMac in monitor mode. I think this causes problem. The iMac still thinks it has an external display and it won't switch over to being in display mode itself. If I simply unplug the external LCD, without first turning it off, the iMac goes into single display mode. I think this may make a difference.

Thursday, June 17, 2010

iPad user guide: accessibility and more

I've been puzzled that my mother's iPad accessibility seemed undocumented. Turns out it's all in the PDF iPad User Guide (manual).

Did you know there was a 150+ page manual for the iPad? It's an Apple secret.

The manual is impressive, but it's a bit too complete. It describes some VoiceOver features that didn't make it into the shipping product (some rotor controls).

Here's the current list of iPad accessibility gestures, taken from the manual:
Navigate and Read
Tap: Speak item.
Flick right or left: Select the next or previous item.
Flick up or down: The effect varies depending on the Rotor Control setting. See “Using VoiceOver” on page 110.
Two-finger tap: Stop speaking the current item.
Two-finger flick up: Read all, from the top of the screen.
Two-finger flick down: Read all, from the current position.
Three-finger flick up or down: Scroll one page at a time.
Three-finger flick right or left: Go to the next or previous page (such as the Home screen or Safari).
Three-finger tap: Speak the scroll status (which page or rows are visible).
Four-finger flick up or down: Go to the first or last element on a page.
Four-finger flick right or left: Go to the next or previous section (for example, on a webpage).
Select and Activate
Double-tap: Activate selected item. Touch an item with one finger, tap the screen with another finger (“split-tapping”):
Activate item. Double-tap and hold (1 second) + standard gesture: Use a standard gesture.
The double-tap and hold gesture tells iPad to interpret the subsequent gesture as standard. For example, you can double-tap and hold, and then without lifting your finger, drag your finger to slide a switch.
You can use standard gestures when VoiceOver is turned on, by double-tapping and holding your finger on the screen. A series of tones indicates that normal gestures are in force. They remain in effect until you lift your finger, then VoiceOver gestures resume.
Two-finger double tap: Play or pause in iPod, YouTube, Voice Memos, or Photos. Start or pause recording in Voice Memos. Start or stop the stopwatch.
Three-finger double tap: Mute or unmute VoiceOver.
Three-finger triple tap: Turn the display on or off. (This is known as the "screen curtain" feature. For my mother it's a bug, not a feature. It's too easy to go from mute/unmute VoiceOver to blanking the screen.)
There's also far more to the zoom feature than I'd realized. This User Guide deserves a bit of publicity.

I throw the magic mouse out of the house

I'd like to say I dated someone who resembled this mouse, but I didn't travel in those circles (ok, once) ...

I've used this mouse with my iMac for about seven months. During that time I've scared my kids more than once with a scream of frustration.

This is one of those things that looks beautiful, feels lovely, shows well, but has the heart of Satan. Inevitably, a slight errant motion careens windows about, loses location, or zaps the wrong set of photos.

I beg you, don't buy this mouse. Apple doesn't need the encouragement and they sure don't need the money (believe me, I give them enough).

Yes, I understand the seductive appeal. It's lovely when it works. It does fine with some apps. It's disastrous with other apps, esp. Google apps.

Apple has never made a good mouse. This is no exception. I think this explains why Jobs went to iOS (iPad, iPhone) -- he finally realized he's violently allergic to mice.

Buy a Microsoft mouse. They don't do very many things well, but they make great mice.
Even Andrew gave up on his Magic Mouse -- and he bleeds Apple.

I've gone back to using an ancient Microsoft RF mouse with scrollwheel. Maybe I'll buy a Bluetooth mouse, but for now this one works fine.

Wednesday, June 16, 2010

Microsoft Access: Datatypes and Switch vs Iff program flow statements

I think this may be the most obscure blog post I’ve ever written. I only write it because, even after I knew the answer, I couldn’t find this documented anywhere. Perhaps this will help someone searching for an answer someday.

I’ve tested this in Access 2003, but not Access 2007 (a disastrous upgrade btw).

If you’re actually reading this, you are using Microsoft Access and you have been using the "Switch” “Program Flow Built-In Function”. This is a unique to Access hack that allows one to mix a bit of programming logic into a query. In the pile of hacks that make up Microsoft Access this one’s a bit of a gem. You can mangle quite a bit of data with it. I believe it is a call out to Access Basic.

You used the Switch statement with a numeric data type. When you were done you attempted to do something with the result, such as a Join on another numeric. You then saw a “Type mismatch in expression.” error message.

It’s not documented in Access, but the Switch statement forces the result to be a string. If you don’t want to change data types to a string you should use nested IIF statements in place of the Switch statement.

You can also wrap the Switch statement in another function that casts the string to a numeric value.

That is all.

PS.

As long as you’ve read this far, here are some of my personal notes on the Switch statement…

Access has 3 Program Flow built-in functions: Choose, IIf and Switch. I use IIf and Switch.

These are taken from Access Basic. They can be used in Access Basic functions, or they can be used as functions in a column name (where I use them).

Switch has the advantage that it can handle multiple conditions cleanly, and include an error statement. It is poorly documented (see below) [1]. It can be difficult to construct a complex Switch in the Access editor or function wizard, it's better to construct it in a text editor and paste it in.

Switch can use the True and False operators. So if you want to have an error result used when all matches fail, you set "expr-n" to the operator "True" (no quotes). You might think  you should put the most common condition first to reduce execution time, but Switch always evaluates all the expressions.

Example of use of Switch (in this case the test would never be reached, Null and Not Null covers all branches):

SNAP_LOCAL_CONCEPT_TYPE: Switch([RESULT_UNITS] Is Null,"NumericObservationWithoutUnits",[RESULT_UNITS] Is Not Null,"NumericObservationWithUnits",True,"ERROR: IMPOSSIBLE")

[1] From Access Help ...

Evaluates a list of expressions and returns a Variant value or an expression associated with the first expression in the list that is True.

Switch(expr-1, value-1[, expr-2, value-2 … [, expr-n,value-n]])

The Switch function syntax has these parts:

Part Description
expr Required. Variant expression you want to evaluate.
value Required. Value or expression to be returned if the corresponding expression is True.

The Switch function argument list consists of pairs of expressions and values. The expressions are evaluated from left to right, and the value associated with the first expression to evaluate to True is returned. If the parts aren't properly paired, a run-time error occurs. For example, if expr-1 is True, Switch returns value-1. If expr-1 is False, but expr-2 is True, Switch returns value-2, and so on.

Switch returns a Null value if:

  • None of the expressions is True.
  • The first True expression has a corresponding value that is Null.

Switch evaluates all of the expressions, even though it returns only one of them. For this reason, you should watch for undesirable side effects. For example, if the evaluation of any expression results in a division by zero error, an error occurs.

Tuesday, June 15, 2010

Amazon Kindle for iPad - Accessibility fail

I'm probably the only iPad owner who didn't know iBooks isn't pre-installed. It showed up when I visited the App Store from the iPad.

In the meantime I tried Amazon Kindle for iPad. It didn't look bad at first, but then I tried VoiceOver. It didn't work at first - then it crashed hard. I had to reset the iPad.

Since I bought the iPad for my visually impaired mother, this was not good.

That's a shame, because I would have liked to have bought books for her on Amazon then put them into a shared Kindle account.

Update: This is weird. Ever since the Kindle debacle, if I try to use VoiceOver the screen goes black. Turns out I'd activated the top secret "screen curtain" feature (limited documentation). A 3 finger triple tap turns it on and blanks the screen. I think this only happens if accessibility is turned on. If VoiceOver is off then three finger tap zooms the screen (not so useful actually, just enlarges pixels). For my mother the "Screen Curtain" will be a bug, not a feature!