Thursday, November 28, 2013

Configuring an EnGenius Technologies Long Range 11n 2.4GHz Wireless Bridge/Access Point (ENH202): Computers & Accessories

A buddy of mine decided he wanted a bridged connection to my home network. With a bit of input from me he settled on the EnGenius Technologies Long Range 11n 2.4GHz Wireless Bridge/Access Point (ENH202) ($90/each for two devices). It took a couple of tries, but we were able to configure a point-to-point bridge connection.

The reason this took a couple of tries is that the EnGenius comes with the worst documentation of any device I've ever seen. It's not the usual problem of limited documentation -- there's lots of documentation. Problem is, it's all incomplete and/or contradictory. Unsurprisingly, so is the firmware for these devices. This feels like its made in China 2013 for China 2013. It doesn't feel cheap though, it feels pretty solid -- made to survive outdoors. Go figure.

Oh! And the first set we ordered both shipped without the inline adapter for the Power Over Ethernet connection. We reordered and got the adapters. Yeah, a mess.

The documentation and hardware confusion has to be at least partly related to feature creep. This device is supposed to connect offices or remote billboards over 1 km point-to-point connection, but it does several different things:

  • Access Point connected to Router/Net
  • Client Bridge remote (IP Based)
  • WDS Access Point
  • WDS Bridge Mode MAC Based Network
We device ships with a 1 page setup page that gives some documentation clues, but most of the documentation is on a mini-CD that requires an old-fashioned spindle drive. We ended up configuring the devices as a WDS MAC based bridge (connection is based on MAC address, not IP address) relying on two documents:

I suspect WDS MAC mode is not the 'safest' way to configure these devices. Not only is it almost undocumented (despite all the documentation), but the link quality lights don't work in WDS mode and the UI is rough and inconsistent. For example, sometimes saving a change restarts the ENH202, other times you have to find the Save/Restart menu item and explicitly save changes, and for password changes, it's not quite clear when and how it saves a change.

If you decide to try MAC based WDS bridge (can include up to 4 devices connecting to each other) the sequence is somethign like this:

  1. Starting from the default IP address, manually assign each device an IP address that will work with their network destination (when configured as Bridge both will we on the same network, for us we used 192.168.0.100 and 192.168.101 with subnet mask 255.255.255.0. (Usual procedures with changing IP of configuring computer, etc).
  2. Name devices so you can tell which is which.
  3. Learn MAC (ethernet) address of each device. Disregard what's printed on a sticker -- it was completely wrong. Use the web config UI.
  4. In the WDS Link Setting Screen enter MAC address of remote device (on each device).
  5. Optional: We set devices to 802.11n only, specify matching channel (band within n range), etc.
  6. Test link.
  7. Add encryption.
  8. Add device password

Given that the link quality lights work in Client Bridge, but not in WDS Bridge mode, and given the poor quality of the WDS Bridge documentation, I suspect this device works better in Client Bridge mode (IP based connection)

Once we had it working the  WDS Link Status screen gave us a receiving signal strength of RSSI dBm -74. Wikipedia put that in context for units of dBm:

  • 80: FM radio 50km range (output)
  • 33: Maximum output from a UMTS/3G mobile phone (Power class 1)
  • 30: Typical RF leakage from a microwave oven
  • 31: Maximum output from a UMTS/3G mobile phone (Power class 4)
  • 15: Wireless LAN transmission power in laptops.
  • 0: Bluetooth standard 1m range (output)
  • -10:  maximum received signal power (−10 to −30 dBm) of wireless network
  • -80 dBM: typical range of wfi received signal power (range is -70 to -90)
  • -127: Typical received signal power from a GPS satellite
  • - 140; Received signal for LTE phone
  • - 192: thermal noise floor 1Hz bandwidth space

So for a WiFi received signal we're not too badly off (our homes are close). We could have boosted power further but so far throughput is limited by my 8-10 mpbps DSL connection.

Friday, November 15, 2013

Trello - an orientation review

[This post was first written in 2013 and then revised in April 2016.]

When Emily said she was interested in Trello, on a day when I was at home tending to a recovering child, I leapt at it. She's done a fantastic job with Google Calendar, but she'd never found a task/project app she liked. Indeed, she has a bit of an allergy to them. Trello, it turns out, has a certain arts and crafts following.

That's a bit surprising, as I know Trello as a corporate-focused project and work management tool from Joel Spolsky's geek-loved Fog Creek software. It never occurred to me that Emily might like it.

I've used a number of Task and Project tools myself; particularly a combination of Appigo's ToDo.app and the weirdly named ToodleDo web service [1], but Trello is a bit of an odd duck. So I put together these quick notes for myself - it's a geeky introduction to Trello.

Service properties and revenue model

Trello uses a freemium web model with Android and iOS apps. It is easy to cancel the service and it passed Gordon's Laws for Software and Service Acquisition. You can use Google authorization or a local account. Google access requests are Contacts only - which is plausible.

Revenue comes from corporate sales, corporate buyers pay $200/year for  admin tools, access restrictions, bulk JSON export, Google Apps org directory integration. Non-paying customers presumably encourage corporate adoption. They've added a $5/month option for "stickers" -- if they made this $20/year I'd pay just to support them. I worry about their revenue and longevity.

How Trello is put together

Cards are the equivalent of Tasks in Toodledo or ToDo.app and they are the essence of Trello. Not all of Trellow web features are available on the iOS app, but most are. Here's how Trello works:

  • Organization: A collection of Members and of Boards. Organizations are optional, you can ignore this.
  • Board: A named collection of Lists. Boards do not have dates but they are a good match for Projects especially if there's a collaborator. You need at least one Board.
    • type: individual or organization
    • membership (for org)
    • visibility: public/private for individual, for org is member only/org wide
  • List: A ranked collection of Cards. Lists do NOT have dates. You can move cards between lists. A typical use of a List is state tracking - To Do, Doing, Done. Can also use a List to hold notes, ideas, etc (but I'd use Simplenote for that).
  • Card: A task or, if you prefer, a lightweight project. Has a Name, a single Due Date/Time, Assigned person and... 
    • Description
    • Label - color icon (example, priority)
    • Checklists  - these items don’t have a due date or a responsible person.
    • Attachments - photo/video on iOS, on web can be Google Drive, Dropbox, Computer
    • Subscribe option
    • Comments (@ for autocomplete members)
    • Activity record (read only)
    • Links (can reference a card)
    • Card’s don’t have a done or completed attribute. That’s a problem (see below).

Lists, Cards and Boards can be copied, so you can set them up as a template. Lists enable bulk operations on cards such as archive all and move all. Cards and Lists can be moved within the hierarchy.

Trello has "Power-Ups" that do things like Display Cards in Calendar format. The Calendar works well and it allows drag and drop between dates. The Calendar is supposed to have a feed that can be subscribed to from Google Calendar, but it didn’t work when I tried it. [Update 2016.04: The Calendar feed works well now, I use it to integrate project work into Google Calendar.]

Comparison of Trello to a traditional Task app:

ToDo.app/ToodledoTrello
List/Project Board
Completed (Yes/No) List (state)
Task Card (but no done status [2])

Keyboard Shortcuts

  • D: card date picker
  • L#: Card Label (ex: urgent, etc)

Teams and Boards

If you’re using free Trello then you want to have a single Trello account for each Person — Trello.app for iOS doesn’t support identity switching. A Person (Trello account/profile) can be a member of multiple Teams. Each team can have multiple Boards, but a Board has only one Team. A single Trello account (Person) can be associated with multiple Google IDs.

So the relationship between a Person and a Board is controlled by their Team membership. In Trello web or iOS one changes Teams to see Boards that are Team specific. (This is more clear in the app than in the web version.)

Example of Trello Lists to organize Cards

These Lists resemble states in ToodleDo. I'd personally use Labels to indicate importance rather than create a List and the use of lists to reflect a schedule seems odd...

It's interesting that these two are using Lists to organize by Time instead of moving Cards around the Calendar or assigning Dates. Their organization can be summarized as:
  • Inbox: Cards that are new, not yet sorted
  • Scheduled/Active: Today, This Week, Later
  • Blocked/Waiting
  • Done (which is archived)
I’ve done Trello with a list for an Agile backlog and a list for each iteration of a release. I’ve also implemented it with a backlog, an active list and a ‘done’ list.
 
The one big problem with Trello - no Done status
I like products that strongly represent a coherent philosophy of a willful developer. The downside of these products is said dev can dig their heels in and stick with a dumb decision. That’s how I account for absence of a “Done” status for Cards.
 
Instead of “Done” you are supposed to Archive the card. That would be ok if the Archive were a special list in which Due Dates didn’t make Cards turn radioactive, but the Archive UI is buried away. You can’t see the course of a project if you use Archive. (See workarounds.)
 
If you don’t use Archive you can use “Done” list to hold completed Cards. Or you can keep them in place and use a Label or other attribute to indicate Done; but if you don’t remove the Due Date the Card will become radioactive when it’s post-due.
 
A lesser problem with Trello - no local backup, no export
At least in the free version you can’t create a local XML backup of a Board, and you can’t create any local archive store representing project history.
 
Impression
 
Emily has used Trello as a basic task manager. In April 2016 I started using it for my work and personal projects and I rewrote this review. I’m not satisfied with any project management tool I’ve seen, but Trello is my choice at this time. 
 
Trello is far less complex/powerful that RallyDev’s Rally project management tool. That’s not all bad though — Rally got very complex and hard to use over the years. Trello is a better tool for personal and small team projects. It doesn’t support assigning Card Checklist Items to individual persons, but that’s not a big issue. The user name can always be added to the checklist item.
 
I’d like to see an improved version of Trello that would be less costly than the business version. That version should fix the weird lack of a “Done” behavior and it should allow one to backup Boards locally and export a PDF archival record of Board content.
 
- fn -
[1] Nobody would combine those two — that was a historic accident. I later moved entirely to Appigo ToDo Cloud.app. ToDo Cloud has project management features that are almost good enough, but I ultimately decided to keep those for smaller mini-projects and use Trello instead. Appigo has a similar problem with archived/old tasks and longitudinal project records.

Change in iOS 7 Messages.app (iMessage) behavior causes silent messaging failure for SMS recipients

An iOS 7 change to Messages.app's iMessage behavior is a real problem for us. It strikes iMessage users who have intermittent iPhone network access, in our case it's the kids on the $40/year H2O wireless voice/text plan (no data). i'm not sure if it's a bug or a feature or both a bug AND a feature.
 
The problem is my iPhone believes #1 is an iMessage user -- perhaps because he is when he's on a WiFi network, or perhaps because he has an iCloud address. In iOS 6 I believe (can't verify) Messages.app managed the on/off network problem this way:
  • if SMS received, reply with SMS
  • if use iMessage and it fails, send as SMS
In iOS 7 Message.app I'm seeing
  • if SMS received, but prior history of iMessage, reply with iMessage
  • iMessage doesn't show a 'read' (delivered) message, but neither does it show a fail message. Message is NOT resent as SMS
The trick in today's Message.app is to watch for the 'read' indicator -- or to force an SMS resend immediately if you know the sender doesn't have a net connection. Force a SMS resend by tap and hold on the blue  iMessage, then choose send as text. The message turns green (Text/SMS).
 
If this is a bug, I suspect the problem is with recognizing an iMessage failure.
 
This problem, by the way, contributed to a parent-kid fight about 'ignored' messages. It's worth knowing about.

Thursday, November 07, 2013

The weirdly under-appreciated power of Microsoft Access - Saved queries behave like Oracle Views.

It was only when I was recently forced to explore SQL subqueries (there's a reason people invented functions and even Entity SQL) that I realized why Microsoft Access [1] is so much more powerful than, say, SQL Management Studio.

Yeah, you can access lots of diverse data sources, do (except, weirdly, for unions) ANSI SQL with an excellent GUI tool, store data locally, etc etc.

That's good, but the weird power is that Access treats queries as though they were views. It's trivial to do deeply nested subqueries, create libraries of modular queries, etc.

Except I must be missing something, because this is too obviously useful...

[1] Old, weird, creaky, infested, bizarre, baroque Microsoft Access, whose useful bits have changed very little in the past 16 years and which is a Frankenstein of every Microsoft technology since 1990.

Friday, November 01, 2013

Unlocking a service swapped AT&T iPhone - a surprisingly good experience.

AT&T iPhones are still sold service-locked to AT&T or one of its MVNOs (like H2O Wireless, now $40/year for limited voice/text). This is unfortunate, because Verizon phones are sold unlocked.

Once your two year contract is done you can ask AT&T to unlock the phone using their online service. I've done this several times. Unlocked phones are handy; my daughters unlocked 4S was a mobile hot spot on our last Canadian road trip.

Unlocking is simple when a contract's phone number (SIM card) matches its host iPhone's IMEI. It's more complex when you've done a service swap, and even more complex when you've service swapped a defective service swap. As I'd feared, when my wife's contract was done the automated unlock form rejected her phone number. 

That wasn't surprising. What was surprising is that I was able to resolve the problem using AT&T's online chat service. I described the problem and passed on the record of IMEI's I'd tracked. I actually don't think she wanted those however, the support person just wanted the current IMEI. I was told an unlock could take up to 7 days, but 12 hours later I got an unlock confirmation mail. After I 'restored' the phone I got an unlock confirmation message.

It's disappointing that AT&T still sells locked phones -- while Verizon doesn't. I hope they'll change that policy. In the meantime, I give them credit for a quick fix to my service swap problem.

Installation notes from buying a new AT&T contract phone iPhone 5s - and advice on 'managed device' updates

This post, I think, is mostly useful for me, though it may be of interest to someone ordering a new contract phone that will be swapped to a different number.

I had an iPhone 5 and Emily had a 4S, we're on an AT&T corporate-discount family plan. My i5 was "blessed" by my employer; I can access our Exchange server with it. I ordered a 32GB AT&T 5s from Apple using Emily's contract, but my plan was to switch it to my account, Emily would get the 5, #1 son gets the 4S and his 4 goes to the phone bin [1]. (Somewhat unfair, but the fingerprint activation is very nice when security controls limit unlocked sleep to 5 minutes.)

It may also help to know that we still USB sync to iTunes rather than do iCloud backups -- a retro behavior that will probably go when the iPhone 6 is released.

Some notes on the transfer - which had more than a few glitches:

  • The 5s (gold fwiw) came with a SIM w/ Emily's number. So once I activated her other phone was offline. That was a nuisance, it left her without a working phone during the transition.
  • I think an Apple shipped phone should be first activated with the SIM (Emily's #) it shipped with. That's what I did, but AT&T activation failed. A message said it was offline. I ended up connecting it to iTunes and doing the activation there.
  • In iTunes I decided to first activate as a new phone, then worried the automatic renaming would match my old phone and confuse the backups. Fortunately I'd changed my old phone name from the default. 
  • During the activation process I entered data, like Location Settings and my iCloud credentials, both by iPHone and iTunes. This is weird; there must be a more standard way. In any case it worked.
  • Once the phone was activated I switched SIMs, then confirmed the numbers had switched. I could reach the 5 with Emily's SIM by phone, but not the 5s. (I'll get to that part).
This is where things got messy; I've revised my original post because I think I know why it got messy. I was giving Emily my 1yo iPhone 5 -- and that device had been attached to the corporate network. It was a 'managed' phone, and managed phones are odd. I should have wiped it first then restored from her 4S backup, but instead I did a simple restore. I ran into these problems:
  • The full restore required a double-sync, where the first sync only restored config data, and the 2nd restored apps and media. The 2nd sync was held up because the iOS corporate configured security settings demanded a passcode. 
  • When I restored Emily's 4S backup to her new iPhone 5 I first had to turn off 'Find My Phone'. After restore her passcode didn't work, but my old passcode did. I also ran into the usual odd experience of having to enter iCloud credentials multiple times (icloud vs. me confusion)?
  • Emily's AT&T visual voice mail was out of order, it behaved like regular voice mail. Fixing this was an odyssey of its own.
  • After the restore Emily had a very large number of apps -- all of my old ones and all of hers.
  • To my surprise her iMessage and Facetime services actually worked.
Emily used her phone like this, but we did see some flaky iMessage behavior (which can be flaky anyway). After a day or so I did another backup, then did a full wipe of her phone and restored from iTunes backup. That's what I should have done the first time around.
 
Incidentally, I bought a SwitchEasy Frost White Numbers case, largely because of a Wirecutter recommendation. I turned out to be a frosty clear case with port seal plugs. I wonder how long the plugs will last, but I like the idea of some water damage protection. 

[1] It needs a new Home button and a new battery; I may pay for a refurb 4 before Apple runs out of them. iPhones have a long useful lifespan and it would be handy to have an unlocked 4 in reserve.

When iPhone AT&T visual voice mail has disappeared and change voicemail password is stuck on "saving password"

I'm used to running into odd problems when I upgrade our iPhones, but Emily's Voicemail malfunction was particularly odd. I do wonder how civilians cope with this stuff [1].

I'd swapped the SIM that came with a 5S I pinched into my former 5 then did a restore from Emily's 4S backup. It had the usual restore quirks -- need to sync twice, entering iCloud credentials multiple times (".me" confusion?), etc. 

The worst was voicemail though. When I checked there was no visual voicemail, just a call to AT&T's old school stuff. Apple's troubleshooting guide didn't work -- including a network settings reset. I reset her voice mail password from the AT&T mobile web site -- that didn't work either. When I tried a reset from the i5 it hung on "saving password".

What seemed to work was a whacky recommendation I've seen in a couple of places.

When I try to setup a greeting for my...: Apple Support Communities

had this problem, and it has stopped. I am not sure if this will work for you, but it worked for me. Call your own number--you should get a prompt to enter your password. Follow the phone tree prompts to personal options. Record and save a new personal greeting. After I did this, and went back to my iPhone visual voicemail screen, I got a new message that said your voicemail password is wrong. I reentered my voicemail PIN and then the save button started working again. Hope this works for you.

 Lost your Visual Voice mail? - MacRumors Forums

I let the direct voicemail call go through, entered my password AND RERECORDED MY GREETING USING THE 3RD OPTION OF FULL PERSONAL GREETING. My iPhone then prompted me with a message saying I had the wrong voicemail password. I entered the password and Visual Voicemail re activated.  

It felt like voodoo, but I had nothing to lose so I looked up the voice mail commands and tried. A minute or so after I disconnected a dialog popped up asking me to enter a voicemail password. I did that and Visual Voicemail returned.

I'm not sure the "magical" fix really did anything. Maybe AT&T's system just took a while to reset. Perhaps if I'd turned the phone on/off a few more times, or just waited, it would have fixed itself. Still, if you get stuck, you might as well try this one.

[1] Maybe it's this kind of thing that causes otherwise rational economists to confuse the cost of replacing a battery on a 4yo phone with the subsidy price of a new device (Rampell seems to have revised her post to cover her confusion).

Update 11/30/2013: This happened to another phone, again with a SIM swap. I wonder if the problem is more common on 7.0.3. This time changing the voice greeting had no effect, but resetting network settings brought up a password prompt and fixed the problem. I only had to reenter the wifi password.