May 28, 2011 - Microsoft OWA FAIL

Comments

This is great - you'd think a big company like Microsoft wouldn't miss something this fundamental. At work we have some *cough* Microsoft stuff that corp IT is responsible for, such as mail.

Where am I supposed to click, exactly? There is not a single clickable thing on this page that says "OK".

Nice FAIL, Microsoft

Mar 29, 2011 - Inmarsat launches data service for the ISatPhone Pro

Comments

During our sailing adventure we took along a satellite phone - an ISatPhone Pro from Inmarsat. While we only used it a few times for voice calls, it has the ability to send and receive short (160 character) emails. We used this email capability often for our daily position reports and to keep in touch with family as well. Now, Inmarsat is finally launching data service for the phone.

For our trip, Inmarsat had yet to launch full data service - where you plug in a computer and the phone acts like a dial-up modem. The latency and slow data rate does not make it anything close to a regular Internet connection - for example, web browsing would be not only painfully slow, but really expensive for the per-minute call charges. However for email, it's absolutely perfect, and a nice alternative to SSB/Pactor.

Having this data service, and regular email access, really opens up what we'll be able to do with this device for the next trip. Not only for position reports and having access to email out on the high-seas to email friends+family, but the ability to receive weather information - for example forecasts and GRIB files from saildocs.

GMN XGate, which offers a compression and duplexing product that greatly reduces airtime charges has also already announced support for the phone. While XGate is moderately expensive, it reduces airtime charges significantly for people with lots of email to send.

A full long-term review of the phone will be coming some time this summer, once we've had a chance to test out the data service.

Mar 28, 2011 - VOIP solution to replace Gizmo5 - Round TWO

Comments

NOTE: If you are serious about undertaking this solution, you probably want to read the updates at the bottom of this entry, as we have now switched over to Flowroute.

My super cheap VOIP solution was a great idea, but it had some issues with inbound calls.

So now, I'm giving CallCentric a try instead - even though it will cost more - around $2/month for the inbound number, and outbound rate of $0.02/minute. Inbound calls also are billed at a rate of $0.015/minute, so they aren't free either.

What we have found with my super cheap solution is that Caller ID is flaky at best (if it works at all, it's usually some number in Tacoma WA - probably belonging to either Google Voice or ipkall), and even worse - by the time inbound calls are forwarded through all the services and our phone rings, Google Voice gives up and forwards the call to voice mail. So our phone rings, and we pick it up, but there's nobody there - because the caller is already leaving a message on GV.

Here's what the new configuration looks like:


This is a very simple configuration, consisting of our ATA and CallCentric, plus Google Voice. Our GV number will be forwarded to the CallCentric DID (in fact, both numbers are in the same Central Office), and CallCentric will send the GV CallerID on outbound calls - they just needed to verify that the number, indeed, belonged to me.

As far as ATA configuration goes, it was easy and simple, and well documented at CallCentric's site for those who need a bit more guidance at all the required SIP configuration values.

Some additional pluses:

  • I get the G729a codec back, as CallCentric supports it.
  • CallCentric supports 911 service. There's a small surcharge associated with it, $3 at sign-up. I don't know if there is a monthly fee or tax as well.
  • Some other nifty features you can read about here.
UPDATE 2012-11-08:

After about 20 months with Callcentric I've switched to Flowroute as a result of about 4 weeks of flaky or down service due to DDOS and then superstorm Sandy.

Read the latest update here before considering anything written here.

And another update here on switching to an Obihai OBi100 after my Linksys died.

Mar 22, 2011 - Microwave Popcorn For Cheap

Comments

Yep, I originally posted this on our cruising blog last year - so I apologize for everyone who's already seen it, but for everyone else, this is a great money-saving tip!

Did you know that the popcorn kernel doesn't care how it gets hot? Yep, that's right. This is the big secret that the companies making microwave popcorn don't want you to know. You can make microwave popcorn for about 1/10th the cost - and it's healthier because you control what ingredients go into it. This comes via our good friends the Knutson's.



It's really simple, but it'll take a few batches to get things dialed in.

Here's all you need:
  • Popcorn. Just your regular bag or container of raw popcorn kernels.
  • Small paper lunch bags. Cheap, and you can use them more than once. WARNING:  Many black inks have metal in them and MAY start a fire in the microwave - OK, they WILL start a fire. Please don't reuse bags with printing on them!
  • Cooking spray. We just use a generic supermarket brand which is very low fat and low calorie. You can even skip this, if just making plain popcorn.
  • Topping. Whatever you want to sprinkle on top. Salt, Garlic salt, Pepper, Cajun seasoning, à¤®à¤¸à¤¾à¤²à¤¾, Plain. It's up to you.
The basic cooking procedure is really simple:
  • Spoon popcorn into paper bag. (Exact amount will come from the dial-in procedure).
  • Fold over the top of the bag and stick it into the microwave.
  • Start the microwave.
  • Stop the microwave once popping is complete.
  • Pour it into a large bowl.
  • Spray on some cooking spray, and shake. Repeat.
  • Sprinkle on some topping, and shake. Repeat.
Seriously, it's that easy. And don't throw the bag away, you can use it for 2 or 3 batches most of the time - use it until the bag splits!

Now comes the dial-in procedure.

This will take a few batches, but it's no big deal, and once you find out exactly the right amount of popcorn and time for your microwave, it'll work perfectly every time.

We start with 3 tablespoons of popcorn per bag, and use the microwave's built-in "popcorn" program to start with, otherwise start with 2:30 or so and adjust upwards or downwards as needed. Pay attention to the sound of popping in the last minute or so of the cycle. If it's still popping when the microwave is done, then you need less popcorn, or increase time. If popping stops, then stop the microwave before it burns, and you'll need to reduce time, or use more popcorn.

The dial-in procedure is that simple - either add more popcorn, increase time, or reduce the time - and after a few batches you'll find the perfect setting for your microwave.

Maybe you'll find a second batch is needed (wanted?), but that's no problem either - since this is so cheap you'll just make 2 or 3 bags without thinking about it. Put any un-popped kernels back in the bag, along with your regular dial-in amount and cook another batch.

That's it! That's all there is to cheap microwave popcorn, at about 1/10th the cost of "microwave popcorn" sold in the stores. And you choose exactly what you want to put on it - not only is it healthier, but you will come up with awesome things to sprinkle on top that the popcorn companies would never think to sell!

Mar 12, 2011 - VOIP solution to replace Gizmo5

Comments

NOTE: If you are serious about undertaking this solution, you probably want to read the updates at the bottom of this entry, as we have now switched over to Flowroute as a one-stop-shop (OK, two-stop-shop, with Google Voice).

From November 2009 until last week we were using Gizmo5 plus Google Voice for our home phone service, via a Linksys PAP2T-NA "SIP ATA" device. That last bit is a small piece of hardware that bridges a regular old (POTS) telephone to IP/ethernet.


The Gizmo5 solution worked pretty well, a few technical issues here and there, but it was fairly stable. Inbound calls were free, as they were routed through Google Voice. Outbound calls were $0.01 per minute. Our total phone bill during that 16 months was $8.

Google acquired Gizmo5 about a year ago, and have now decided to kill the service. I was really disappointed to hear this decision, as I expected to see more SIP integration in Google Voice, not less. It seems clear that Google is not interested in SIP, though they are supporting XMPP - as used in Google Talk. And just to close up the history on this, Grand Central was the original company that Google bought and became Google Voice (GV).

The old solution was pretty simple to setup, as Google provided the integration between Gizmo5 and Google Voice via GV settings. Basically, you just added your Gizmo5 number to GV, then configured the ATA to talk to Gizmo5's SIP servers. Then plug in a phone and make some calls. Super easy.

The new solution? Well it's quite a bit more complex.


First, a few telephony acronyms for the uninitiated.
  • VOIP - Voice Over Internet Protocol. Sort of a misnomer, as it's not really a protocol, just a classification.
  • SIP - Session Initiation Protocol. This is the standard VOIP protocol that devices use to establish phone calls over the internet.
  • ATA - Analog Terminal Adapter. The device that an old analog phone plugs into to bridge to a VOIP protocol. An alternative would be using an IP phone.
  • POTS - Plain Old Telephone Service. The analog phone system, in use well over 100 years, amazing!
  • DID - Direct Inward Dial. The ability for someone to call your VOIP phone from a regular phone.
  • CID - CallerID. You know what this is.
  • PBX - Private Branch eXchange. Essentially a small, private phone company. All the phones plug into this (either directly or virtually via a network), and it handles all the routing between calls or trunking to an external phone service (for example, calling a regular phone). PBXs provide other features, such as voice mail, caller ID, and management of IP phones - to provide a few examples.
  • PSTN - Public Switched Telephone Network. This is the huge network of wires, switches, central offices, and so forth that give us POTS.
The new solution consists of the following bits and pieces:
  • Linksys ATA - The same device used for Gizmo5.
  • PBXes - An internet based virtual PBX. The ATA talks to this service.
  • ipkall - Provides free DID. This gives me a phone number regular phones can dial.
  • CallWithUs - Outbound phone trunk. This is used for outbound calls to the PSTN.
  • Google Voice - Yep, that
It could be simpler, but not with the breadth of features we get and also making it as cheap as possible - in this case it means nearly free! Inbound calls cost nothing. Outbound calls are as low as $0.01 with CallWithUs. I can swap in different outbound trunks trivially via PBXes - I can even have multiple services with complex routing rules. Very cool hackish stuff.

Here's an overview of how it all fits together (the arrows show direction of call initiation):


The only number people need to know is our Google Voice number. Dialing it rings our home phone. Likewise, outbound calls work just as you would expect from a regular phone. Outbound CallerID is "spoofed" with our Google Voice number. This spoofing of the number makes sense, since it is our valid phone number - we aren't sending some fake number or anything dumb like that.

When the ATA boots up, it establishes a connection to the PBXes SIP switch. They use an Asterisk based system, and for a basic system (like this) it's a free service. Once the ATA is registered with the switch, the phone line is provisioned and that connection stays nailed up. The ATA has some options to help with NAT traversal and keeping the IP sockets connected.

Inbound calls to our Google Voice number get forwarded to our ipkall DID number. This is some random phone number in Washington state. ipkall bridges that via SIP to PBXes, which then forwards that to our ATA. PBXes has all sorts of various options in terms of call display, hunt groups, forwarding, and all that other nifty PBX stuff - but in our case it's really simple, as we have just one registered extension and all calls go directly to it.

Outbound calls go to PBXes where an outbound trunk is selected. Again, it's possible to have all sorts of routing rules with multiple providers, but we are using just one - which is CallWithUs. PBXes sends the call via SIP to CallWithUs, which bridges the call out to the PSTN. This is the only leg that costs anything, with calls to the USA at $0.01 per minute. And we can always use Google Voice to initiate the call with their callback service, making calls free. One thing I like about CallWithUs is that you can purchase time in $5 increments.

There's quite a bit of configuration required to the various services to make sure they all talk to each other.

Out of the box, CallWithUs, like most SIP to PSTN services, requires a full dialing string that includes country code. The solution to this is to setup a dialplan on the ATA allowing standard 7 and 10 digit dialing:
(<:1>xxxxxxxxxx|<:1530>xxxxxxx|<411:18004664411>|*xx|[3469]11|0|00|[2-9]xxxxxx|1xxx[2-9]xxxxxxS0|xxxxxxxxxxxx.)
I won't go into all the entries but basically this tells the ATA  what to do with various dialed numbers, inserting missing digits or replacing numbers entirely. For example, the first entry automatically prefixes a 10-digit number with the "1" country code for the USA. The second, uses area code "530" for 7-digit dialing. The third entry forwards calls to "411" to the Google directly service. An option to do here is cause a call to be initiated immediately once the dialplan has been fulfilled - which is what the S0 suffix does, but it can be tricky. Without it, the ATA would wait for awhile to see if you have more digits to dial. A good full tutorial on this is here.

The dial string rules could also be done in PBXes, though there would still be a delay for the ATA to wait for all dialing digits. A hybrid approach would be worthwhile - use the ATA configuration for 10 and 7 digit, and the various other, basic dial rules - as well as dial immediately when it can. Use the PBXes configuration for forwarding services.

This would also be the appropriate place for routing 911 calls to some local emergency number - and that brings up one very, very important issue: This solution does not provide traditional 911 service. We have enough cell phones that I'm not worried about it, but it's worth thinking about how you would handle it for your case.

The only existing issue is that some incoming calls do not have the original caller's Caller ID showing up on the phone when people call us, instead showing some Washington number. Not entirely sure why this is occurring. Outbound Caller ID works flawlessly.

Also, I had to use the G711u codec. It works fine, but G729a uses less bandwidth and the voice quality is still excellent.

Here's screenshots and details for configuration:

  • CallWithUs - No configuration needed for the service, just an active account and call credit balance. PBXes is a client to this service. You do need connection and account information to provide PBXes, and CallWithUs has decent documentation.
  • PBXes - Lots of configuration required here. You need to define an extension (with a username and password for the ATA to authenticate as). You need an outbound trunk configured (CallWithUs in my case). You need a default route that sends all inbound calls to the extension. You need a default route that send all outbound calls to the trunk.
Extension configuration:
Username will look something like "foo-100", where "foo" is your PBXes account, and 100 is the extension number. The Password you pick, and will be configured into the ATA and ipkall. The Dial field would look like "SIP/foo-100" for this example. Note dtmfmode of "info" - this setting here, and in the ATA, was required for Google Voice to accept DTMF tones to validate my ipkall DID number for GV to forward calls to it. Outbound CID is our GV number.


Trunk configuration:
Username and Password, along with SIP server or proxy, are values provided by CallWithUs. Outbound Caller ID is our Google Voice phone number.


Inbound route configuration:
This is pretty simple. We want to route all incoming calls directly to extension "100".

Outbound route configuration:
Also simple, this routes all outbound calls directly to the CallWithUs trunk.

  • ipkall - This just needs to know about routing inbound calls to PBXes. The SIP Phone Number is our PBXes SIP account info - "foo-100" for our example. Password is the corresponding PBXes password.
  • Linksys ATA - This is an especially complex device to configure. I configured Line 2 on the device, as I set this up in parallel with the existing Gizmo5 service until I got things all working. User ID and Password are the matching username and password for this extension in PBXes configuration. You'll see DTMF Tx Method set to "INFO" to match PBXes configuration. I had to use the G711u codec, as my preferred G729a didn't work. NAT Mapping Enable and NAT Keep Alive were enabled to help keep the extension registered through our firewall/router/ISP. Comcast works with a SIP Port of 5060, however when we had AT&T DSL, I had to change this. Dial Plan is the entry discussed above.


That's it!


UPDATE 03/14:

An acquaintance mentioned the use of CallCentric for a VOIP provider. There are a number of one-stop VOIP providers that don't involve or require this complex of a setup. The advantage of a one-stop solution is simplicity - only one thing to configure, although you can still use a GV number for incoming calls. I looked into CallCentric, but their rate was higher at $0.02/minute. I scouted out a few other ones as well - one wanted $35 in initial calling credits, which was more than I was willing to spend up front (and I was still only going to use them as an outbound trunk, not for a DID number).

For anyone seriously considering a VOIP solution, I would also say that you don't have to do anything complex like the above. There are lots of one-stop VOIP providers that will allow a simple setup - and it's still going to be significantly cheaper and better than, say, Vonage or or Comcast VOIP.


UPDATE 2011-03-28 (And read an even newer update below):

Well, it was a great idea, but due to some issues with inbound calls, I'm giving CallCentric a try instead - even though it will cost more - around $2/month for the inbound number, and outbound rate of $0.02/minute. Inbound calls also are billed at a rate of $0.02, so they aren't free either.

What we have found is that Caller ID is flaky at best (if it works at all, it's usually some number in Tacoma WA - probably belonging to either Google Voice or ipkall), and even worse - by the time inbound calls are forwarded through all the services and our phone rings, Google Voice gives up and forwards the call to voice mail. So our phone rings, and we pick it up, but there's nobody there - because the caller is already leaving a message on GV.

This is a very simple configuration, consisting of our ATA and CallCentric, plus Google Voice. Our GV number will be forwarded to the CallCentric DID (in fact, both numbers are in the same Central Office), and CallCentric will send the GV CallerID on outbound calls - they just needed to verify that the number, indeed, belonged to me.

Now we shall see if CallWithUs gives me back my $4 calling credit... Otherwise there are some LONG outbound phone calls in our future! :-)

You can read my blog posting on attempt #2 right here, where any additional updates or discussion will go on this topic.

UPDATE 2012-11-08:

After about 20 months with Callcentric I've switched to Flowroute as a result of about 4 weeks of flaky or down service due to DDOS and then superstorm Sandy.

Read the latest update here before considering anything written here.
And another update here on switching to an Obihai OBi100 after my Linksys died.