[Tfug] PDA non-usage

Bexley Hall bexley401 at yahoo.com
Tue Feb 5 17:05:09 MST 2008


Hi, George,

>Having spent half of my life working with 
>telecom equipment, I tend to agree.  For
>example, Nortel had a line of phones with
>9 programmable keys.  They discontinued 
>them and replaced them with a phone with
>8 keys and a separate LED.
>
>Typically one of the keys would be voice
>mail and would be programmed to flash when
>you had messages.  It also served a dual
>purpose of auto dialing into the voice mail
>server when pressed. OK, so the LED served 
>the purpose of the indicator but now you
>either had to sacrifice another key or the
>user had to manually dial the vm server.

Exactly.  So, instead, the user has to 
*remember* to "dial extension 437 to access
the VM server", etc.

>Another sore point and one that is alluded
>to in one of the Asterisk VOIP books is the
>arbitrary hard coding of forward no answer
>ring cycles.  In one particular Nortel PBX
>it is 3,4,6 or 10 ring cycles.  I can't 
>tell you how many times I had a user ask 
>if they could have 5 rings before it went
>to voice mail.  Sorry, no can do, the
>manufacture didn't like that number.

Yes!  *And*, YOUR answer is the only CORRECT
answer!  I.e. when the user asks you WHY he
can't set it for "5", you have absolutely NO
rational explanation other than "the manufacturer
didn't like that number"!  (I wonder if the
manufactureer ever gave *you* an explanation
for this decision?)

This is short-sightedness on the part of the
designers.  What did this restriction *save*
them?  Maybe 6b (i.e. assuming they can pack
those 4 choices into 2b *and* reuse the 
remaining 6 for some other, equally absurd,
option).  And, with that encoding, they
now have to clutter up their code to handle
those disjointed option values:

switch (choice) {
	case 00b:
		rings = 3;
		break;
	case 01b:
		rings = 4;
		break;
	case 10b:
		rings = 6;
		break;
	case 11b:
		rings = 10;
		break;
	default;
		/* CAN'T HAPPEN */
}

Not only is this more work on their part, but
it also decreases the quality of the code!  I.e.,
they now *must* test all four cases as there are
4 paths *through* the code!  Imagine, for example,
if the "break" in case 10b was missing -- then
you would never know it unless you explicitly
tested for case 10b!  (imagine if they add another
case... etc.)

By contrast, if you treat "rings" as a first class
datum, you can just handle it with:

if ( (rings < 1) || (rings > 10) )
	rings = 3;

or thereabouts...

<frown>

--don


      ____________________________________________________________________________________
Never miss a thing.  Make Yahoo your home page. 
http://www.yahoo.com/r/hs




More information about the tfug mailing list