polling and slow control channel
@VoodooTrucker, (and somewhat @Amos) I agree that the root problem is all this polling instead of using a push system. But HTTP? People seem to forget that these devices already have TCP and UDP on them, I think using that directly would be better. Amos, these extra layers mainly affect the latency more than anything, along with some unnecessary retransmissions (a temporary delay may be interpreted by TCP as a dropped packet which it retransmits), the big problem here is the constant polling.
Example -- my aircard and phone both go into dormant state after something like 30 or 45 seconds of no traffic. This is fine, BUT, these facebook and twitter apps, etc., will POLL for updates like every minute. Result? Instead of like now, where the card either stays active for quite a while (if I'm hopping from web page to web page, or downloading, or streaming videos or music) or it goes active for a few seconds, loads the page, then goes idle for minutes on end while I type or read (or stays dormant for hours on end while I'm not using it at all), this polling makes it switch idle->active->idle->... like every 30 seconds, all day and night.
The second part of the problem? 1X is 144kbps, EVDO is 3.1mbps, EDGE is 220kbps, 3G is, well, whatever speed depending on what's deployed, 1.8mbps (I hope there's still not plain 384kbps UMTS still around) up to 21mbps -- but the control channel is 4800 or 9600bps (that is, 0.4 or 0.9kbps). Texts go over this channel, the signalling for your phone to make a call or to be told to ring because there's an incoming call, and all this data session teardown/tearup traffic, all shares this channel. The speed on it is so low because the phone has to monitor this particular channel all the time, it's to save battery power and to help prevent dropouts (a brief dropout on a call or data session is a nuisance, on the control channel it means your phone wouldn't ring if you got a call then.)
It sounds like this solution should cut the traffic use in half, instead of the card explicitly saying it's going idle, the card and network will KNOW it's going idle if no traffic goes over the channel in a certain length of time.