If you do checkin at your church, you will know that checkin was crippled on Sunday morning. It was not completely broken but worked about half the time. This has now been repaired.
We are very sorry for the trouble and you will need to go back and revalidate all of your attendance for Sunday. Some attendance worked, others did not.
The following paragraphs explain what happened and why. Warning, this may be TMI for you (too much information), so you can stop here if you like, knowing that the problem is resolved.
I have observed that Checkin takes too long between when you enter your phone number and when the list of family members shows up. Although it has not been unbearable, it was beginning to annoy me. Last weekend I put some new logging that shows us the response time for each request in the system. It all looked good except for 1 type of request and that was the phone number lookup and corresponding family list. Those were taking between 2 and 3 seconds to complete. That does not sound like a long time, but in this day of high speed Internet expectations, it was too long.
Friday night and all day Saturday, I decided to look into how I could reduce the response time. This resulted in a conversion and rewrite from C# into pure SQL code. When I put this new code through it's paces, the results were very satisfying. Typically, the response was less than 1 second, quite reasonable. I tested this with our usual set of checkin numbers on our test site. All of it worked very nicely.
I was so pleased with the results and knew you would be too (with the speed) that I took a risk to try it out this morning. I knew I needed a Plan B in case this Plan A went awry and Plan B needed to be a quick switch I could easily make that would switch the entire system back to the old way within one minute. This morning, we got a call from our staff at Bellevue saying that Checkin was working for some but not for others. The first thing I did was to implement Plan B. That took me less than a minute. Thinking that all would be well now, we got another call a few minutes later saying that nothing worked. In, other words my Plan B was a total failure. So knowing that Plan A at least worked partially, I switched it back and started looking for the problem with Plan A. I was thinking that it would be a single problem so that is why I forged ahead and did not proceed with trying to get Plan B to work.
Before I go further, please note the following points about the family list on Checkin:
So here is the sequence of things that went wrong as best as I can remember. Sorry for any technical terms, hard to avoid.
This last bug was elusive. I could not understand what was happening because I use a contractor to develop our iPad app and don't have a way to debug it like I do the PC checkin. I found out by looking at it on my iPad that for people who were neither members nor recent visitors that even though it said "no checkin meetings available" next to a person's name, it would allow them to check the blue box to check themselves in. And apparently there were a bunch of people doing that. I thought that was a bit odd to have that many visitors. But bottom line, the problem would be fixed if I could prevent them from checking that button.
I knew there had to be a difference between what was being sent to the iPad from last week to this. So the only way was for me to install an older version on our test machine and capture the output. Sure enough, there was one minor difference. We have an indicator that shows whether a person is a Member or Visitor (M or V) But that indicator does not apply for someone who is neither. I was sending an empty string, but I should have been sending a NULL. The PC version did not care, but the iPad was expecting the NULL, and with the empty string, it was displaying the blue checkin button. This would not have been that big of a problem, but remember that back before step 5 above, all recent visitors would have had this problem since they were not being considered recent visitors. My confusion was there because I was not looking at the problem before step 5 was fixed, but after, when the problem was mitigated because it would then only have happened to new visitors.
Regardless, I fixed it and at that point it was about Noon and only the smoke of the battle remained. Checkin for Sunday, June 16 was over. Although we took many casualties, we had won the war. Now we just need to bury all the bodies...