Wednesday, March 28, 2012

Handwriting Recognition

One of the largest uses of the world-wide web is doing genealogy. There are a number of records that exist and are already on the Internet. More information about people is being added every day. Last night I spent some time contributing to that effort.

The LDS Church sponsors a lot of the genealogy and run a site called www.familysearch.org. If you are interested in finding out about your ancestors, please give it a visit and see what information they have. That information does not appear magically. There are many thousands of volunteers that collect handwritten and paper records, scan them into a computer, and provide an index to the scans. The index is used when you do a search for a name and can locate the scan of the image. That way, when you type in the name "John Allen", the computer can look up all records for associated with that name. In case you are wondering, there are a lot of them and so a birth or death date will also be helpful for locating the correct person.

I had a coworker once ask why they just don't use handwriting recognition to index all of the scanned images. If you spend some time looking at old records, you quickly realize that no software in the world will recognize even a small percentage of that writing. Nope, it requires using one of the most powerful computers in the world: a human mind. Remember that the next time you are stuck on a math problem or are feeling less than intelligent. While you may not be able to read your doctor's prescription, at least you can read a note from your mother or child.

Wednesday, March 7, 2012

Context Switching

Computers seem to able to do many things at the same time. Before the days of multi-core central processing units (CPUs), this was accomplished with a bit of magic. The computer could never perform simultaneous actions and had to rely on tricks to make it seem like that was happening. Assuming the CPU was trying to work on 3 different tasks at the same time, it would do the following:
  • Work on task 1 for a bit and then make a note of what was done.
  • Work on task 2 for a bit and then make a note of what was done.
  • Work on task 3 for a bit and then make a note of what was done.
  • Repeat until all 3 tasks are completed.

The process of "making a note of what was done" is known in computer science as a "context switch." There is a lot that takes place on the computer, but it runs so fast that the user thinks 3 things are going on at the same time.

People are not much different than computers. We also have to perform a "context switch" when we are trying to do multiple things at the same time. During the course of writing this blog entry, I was also on the phone working on solving a computer hardware problem. As long as I didn't have to participate in the conversation, I could add to the post. The moment someone needed my help, I had to stop typing and pay attention to the conversation. There was no need to "make a note of what was done" because it remained on my computer screen. Therefore context switches were fairly painless. There was a little time lost when I was no longer needed on the phone as I had to regain my train of thought, but it wasn't too painful.

Things that make context switching hard for people are the number of simultaneous tasks and the duration allowed to work on those tasks. Typing and talking on the phone worked because I was only trying to do two things. It also worked because I was needed on the phone only for a minute out of every quarter hour (it was a long phone call). Now if I had been on the phone, driving in traffic, and trying to eat a burger, things would not be so simple. While I might get away with it once or twice, eventually I wouldn't be able to context switch fast enough and might cause an accident. That is why I never eat and drive at the same time . . . while also trying to talk on the phone.