11.17.06

Slow network connections and how software lets you down

Posted in Apple, Tech/Geek at 11:49 am by Craig

As broadband connections become increasingly commonplace, at least amongst the set of folks who write software apps, and in particular open source apps where there’s no sales and marketing people reminded the engineers that there’s still lots of narrowband out there, applications have started sprouting a mass of features whcih automatically kick off data communications whenever a network connection appears. This is horrible when your “normal” connection is fast, but when you take your laptop somewhere and are connecting by EDGE, or what passes for broadband at a seaside hotel in Barbados, you end up having your very narrow pipe filled with all this somewhat useless “junk” data. This problem is especially nasty when you’re on a fleky link which loses a substantial percentage of the packets sent over it, when your DNS service is flakey, or when your connection tends to get disconnected (and requires reconnection) generally within a few minutes of the original connection. The disconnection/reconnection thing will often lead to this situation:
  1. Connect
  2. All your apps (firefox, IM client, dashboard widgets, software update, each individual app’s update-checker, etc, etc) suddenly kick off their HTTP requests (first of course sending a DNS lookup request for their relevant hostname)
  3. Pipe is clogged for a minute or two with all this junk flowing back and forth (it’s all TCP of course, no UDP here except maybe for DNS, where ironically you probably do actually want the packets to get through more reliably so these apps don’t all hang while waiting for DNS to maybe timeout, or maybe succeed on the 4th retry with 3 timeout delays before it works)
  4. Pipe has now been up for too long, so Cingular drops your EDGE connection
  5. Go back to step one, repeating step 2 as well for the new pipe.
Result: you can not actually use your link for “real” data flows. Even if all you wanted to do is, say, connect to your webmail and scan subject lines for urgent items, or maybe do the same via IMAP. So here’s my proposal to software folks: implement a system-wide “Operate in crappy link mode”, and then have all applications check for crappy link status before firing off their junk data trawls. Heck, I’m so bugged about this after a week of suspended productivity that I think I’ll learn enough Cocoa to actually write a Mac control panel or something to implement this flag. Then, when you go on vacation, you just go to the control panel and turn on crappy link mode. For that week, your software updates and background RSS polling and Plaze updating anbd whatnot is just put on hold so that you can actually get shit done. [update] reformatted now that I’m back in decent-connection land