In todays asynchronous world, that has its merits since it frees up time, we come to trust our email software, phone contact software and messaging software, whether they run on your smartphone, laptop or netbook. We also come to trust the underlying networks since they are generally reliable. In doing so we expose ourselves to blunders in business and our personal lives as both we, and the software we use, make assumptions.
In my case, I had entered a phone number into my cell phone address or contact book, and what I only discovered a few months later was that I had one digit missing yet at times I could still communicate with the contact by SMS and voice. Before this discovery, I had a regular communication pattern with the contact, which entailed me receiving an SMS from the said person, and I would reply to that SMS. We rarely phoned each other. Things changed and I began initiating most SMS conversations, and I used my contact book to add the contact to the SMS as addressee. I initially became irritated when I would not get a response, and would send a few more SMSes. I would then try to call, again using my contact book, but would just get a meaningless double beep which I assumed to mean that all the available cell channels where in use. Luckily this was over the December holidays, so I figured the network might be dropping my SMSes, so I started using what I almost never used and had almost forgotten existed, the delivery report. In retrospect, this saved me, since I had already made my erroneous assumption, and that was that the person was receiving my messages but simply ignoring me.
Once I did start using delivery reports, I noticed something was wrong, my messages where not being delivered, but sometimes they where being delivered. The important part here was that I shifted the blame from the person to his phone, this was the most important moment since naturally nobody would like being falsely accused due to a false assumption. We got together, and over a beer compared our sent items and inboxes to try and see what was going wrong, but we could not figure it out and wrote it off as a mystery. We later figured it out, and it come down to my phone contact software which made its own assumptions. What this episode did remind me of is that one cannot ever make application layer assumptions when it comes to asynchronous, unreliable communications such as SMS or email, it reminded me, that in both cases you can only be sure that the message has been delivered once you get a report to that effect, this is nothing new when it comes to communications protocols and at the heart of the TCP protocol, on which the web largely runs.
Coming back to the phone contact software assumptions, on my phone, as it turns out, when I had missed a digit when entering the contact’s phone number, I was doomed. I got an SMS from the said person soon afterwards, replied to the SMS and got a response, so in my mind, all was well, but it was not. The crux of the problem was my phone log and inbox software telling me that Joe Blogs just sent me a message, but this was blatantly incorrect, there was a critical digit missing, what it should have done was to tell me that either its an unknown number or that it thinks its Joe Blogs but that the number differs. In both of the latter cases I would have expected to have been alerted to the missing digit by my phone’s software especially when it comes to the inbox or call log. As it turns out, it took me months to figure it out, and then only by accident when comparing the numbers used when trying to phone from my contact book, and when trying to phone from an received SMS, in each case it would say “calling 1234565..” and thats how I picked it up. This may be a conscience engineering decision by the manufacturer which makes a lot of sense in most occassions, or a good assumption gone bad. I’m not sure, all I know is that I’m retrospectively glad that I used the delivery report to save me from myself, without it I would never had diagnosed my phone’s contact book software’s assumptions, nor my own assumptions regarding its behaviour.