Recursively Enumerable

Sunday, May 20, 2018

I use Android Messages to send SMS messages on my phone. Sometimes I have a problem sending a message to a specific person. I can still send messages to others, and I can still receive messages from everyone. When this happens, it says "Not Sent. Tap to try again." underneath the message (see an example screenshot) about 20 seconds after attempting to send the message. Once this problem starts, it does not go away on its own. It will always happen when trying to send a message from within the app as well as from the reply feature on the notification of a new incoming message from the specific person. It will not happen if I tell the Google Assistant to send them a message to the specific person and then dictate that message.

Here is a good sequence of troubleshooting steps for this problem (which can also be found elsewhere).

Restart phone

Clear app cache

Clear app data

Uninstall then reinstall app

I have tried all of these troubleshooting steps, and none of them deleted my conversations. They are probably backed up somewhere.

This problem has happened to me twice. The first time, I think I solved it by uninstalling and reinstalling the app. The second time, I know that restarting my phone didn't fix the problem. What did fix it was both clearing the cache and clearing the data. I didn't try just clearing the cache. If I am so mildly unfortunate as to experience this problem again, then I should check if just clearing the cache suffices.

Thursday, March 3, 2016

As my life continues to get fuller, time for myself continues to decrease. Most recently, this has been the addition of my third child Nolan. Of course I love him dearly, but that doesn't negate the fact that there is no free lunch.

With less time to myself, I have thought more about the various ways in which I spend my time and what purpose they serve. Some of them are more selfish, while others fill me up so that I can continue to pour my life back into others.

Below, I have listed seven categories that consume my time. The list is roughly sorted by the following criteria: (1) what keeps me alive and (2) decreasing order of how much time is spent in each category (and, getting rather meta, the order of the items in this list of length two is also intentional). Each item also includes two words to describe what my mind is like when I don't and do (respectively) get enough time for that item. After the list, I give examples from my life of something in each category.

Time to eat (good) food

Scale from distracted to focused

Time to sleep (without interruptions)

Scale from cloudy to clear

Time to rest

Scale from distant to near

Time to learn

Scale from stale to fresh

Time to understand

Scale from messy to organized

Time to share knowledge

Scale from full to empty

Time to exercise

Scale from dull to sharp

Examples:

1) I would hope that this category is self explanatory given that everyone spends a significant portion of their time eating as well. But I promised examples, right? I have been eating more salads lately, including making them at home. My preferred salad has everything in it, and it is not uncommon for me to prepare the salad for 30 minutes (and then eat it in 15 minutes more). A second, more selfish, example involves my kids. When they ask for more food, I usually take one more bite of my food before getting up. Those seconds preparing that bite were spent on me, not them.

2) Almost everyone sleeps, so this should be rather clear as well. Nevertheless, on to the examples. Sleeping at night really doesn't need any further explanation. If I don't get enough sleep at night, I can take naps, both on accident and on purpose. When I lay down to take a nap on purpose, I immensely prefer to not need to be awake again before I would naturally wake up, which can vary from one to three hours depending on how sleepy I am. If I only have an hour to nap, I usually pass up the opportunity to nap.

3) By resting, I literally mean not moving, especially in a comfortable position. Examples include sitting on the couch, sitting down or laying awake in bed, getting my hair cut, or getting a massage. In contrast, driving a car doesn't count because it is either not long enough to count as not moving or too long to be considered a comfortable position. Sitting at my desk doesn't count either, even though I rock one of the most ergonomic chairs. In addition to relaxing my whole body, these activities are particularly important for my legs and feet, especially when I am getting little or interrupted sleep.

4) I always want to learn new things, but they don't have to be technical things. Good examples that would also appeal to a broad audience are TED talks. I often try to accomplish this while also spending time with Shannon. For example, together, we have wanted many documentaries on Netflix, watched many episodes of Crash Course (especially World History 1 and 2), and reading books together (especially about food, like Salt Sugar Fat, The Omnivore's Dilemma, and In Defense of Food).

5) It is not enough to merely take in new information and facts. I have to process these inputs in order to understand concepts. This is probably my favorite thing to do. Unfortunately, it is not possible to just do this at any moment. It is a timely matter that requires the right subject and ripe material for my current level of understanding. I spent most of my PhD studies doing this; trying to deepen my understanding. I was also spending time in this way when forming the idea for this blog post in my head. I was obtaining a better understanding of myself.

6) The output here is much more than the facts and information that I learned. Instead, it is the conclusion of the previous time spent understanding. Google definesknowledge in part by saying "the theoretical or practical understanding of a subject". Yes, exactly. The writing of my research publications and the writing of this blog post are both examples of time spent in this way.

7) My favorite form of exercise is playing pickup basketball (not formally structured with referees and such...it slows the game down and causes people to takes things too seriously). And since this item is last in my list, it shouldn't come as too big a shock to learn that I haven't played pickup basketball now since last summer. The biggest reason for this is moving out of Madison, WI. I had established friendships and gatherings where I could play every week. Someday I will be at that stage again in my new home of Coon Rapids, MN. In the meantime, my formal exercise has been limited to shoveling snow, picking up trash in my neighborhood, and a walk around the block the other day.

Now that I have spent the time for myself to write this, I'm ready to go pour into other lives again.

I use ScanTailor. I recommend applying the same "Select Content" and "Margins" to all pages so that the content on each page is the correct location (modulo noise from scanning) and all pages have the same dimensions. NOTE: The dimensions of these TIFF files will be the dimensions of the final PDF file.

OCR

I use tesseract. Everyone says that tesseract dies a fantastic death if you are so bold as to pass it a file with extension "tiff" instead of one with "tif". For later considerations, each page is OCRed individually (see below for explanation). The OCR can take a long time, so the following command echos the name of the file currently being OCRed to give a show of progress. Sometimes I have problems while OCRing individual files in this way. It seems like tesseract randomly encounters problems. Finally, the third or fourth execution of the following command was successful. The command for this step is: for f in *.tif; do echo $f; tesseract $f $f -l eng hocr; done

I use hocr2pdf to pair the OCRed data with the text image and create a PDF, all at the same time. It seems that hocr2pdf cannot handle multi-page TIFF files, so each page is handled individually using a for loop (like above).

Saturday, December 22, 2012

In 2009, we had a snow storm in Wisconsin that canceled classes. I reported about the snow adventures I had that day. In 2010, there was another big snow storm, but I must not have had anything to share about it. The winter of 2011 was very mild. Whatever snow fell would melt in a few days.

Now its 2012 and we had a really big snow storm (and apparently we are naming winter storms now and this one was called Draco). The storm hit on Thursday during the middle of finals week. The university canceled finals that day, but announced that finals were on for Friday. I think the university got ahead of itself here because they made this announcement before the Madison bus system announced that it was not operating on Friday. The university provost sent an email to the entire university both confirming that finals were still on and suggesting that students that normally require bus transportation to campus could call one of the four cab companies in town.

Shannon had Thursday off as well but went back to work on Friday. I followed her outside 8:00 to make sure she could get our Prius out of our underground garage and onto the city streets safely. She made it out of the garage ok (the key is not to chicken out by slowing down) but had to wait in the parking lot behind someone who got stuck. I helped this person get unstuck. It was only the first.

Behind Shannon was another person that got stuck coming out of the underground garage of the neighboring apartment building. After this person, someone else got stuck in the same place as the first. At this point, it was 8:30 and I went inside to rest and warm up. Then at 8:45, I went back out to see if there was anyone else I could help. I walked around our apartment complex several times and helped seven people in total that day.

In the middle of one parking lot was a car that had apparently been left there over night. The picture below shows this car after we dug much of it out (someone that I had just helped get unstuck decided to help me).

On the inside of the left rear window was a note with the owners name, address, and phone number. (I thought I had a closeup of the window and the message, but alas.) That is a really good idea! He didn't answer my call, but this other guy with me lived in his building and must have notified him because his car was gone during my next trip around our complex.

On Wednesday night, I had parked our Oldsmobile facing our garage door so that I could easily bring the car inside to warm up and have the snow melt off.

The reason that so many cars were stuck in our parking lots is that the people responsible for removing the snow got very far behind. One of our maintenance workers that was also out and about said they were either getting suck themselves or their equipment was breaking. I didn't bother removing the snow in front of our Oldsmobile in the hopes that they would clear out the rest of the snow that night.

No dice. It only took about 20 minutes to dig it out. Here is my car in our garage:

As you can see, I only cleared off the bare minimum of snow to get my car into the garage. Furthermore, I only dug an Oldsmobile-size hole out of the drift in front of the car.

Wednesday, October 17, 2012

It is now officially a tradition. Our bible study group went to a corn maze for the second year in a row. Last year was my first corn maze ever.

Once again, someone recorded our progress via GPS.

This year, we went to the corn maze at Schuster's Farm. The maze comes in two phases. The first phase begins and ends in the bottom right corner. The second phase begins and ends right above the "Ronald McDonald House" logo.

They give you a full map and 10 quiz questions. There are 10 posts at forks in the path within the maze. Answering the quiz question correct tells you which way to go. I was also guiding us by looking at the full map during all of phase one and the beginning of phase two. Then someone suggested that we try it without looking at the full map. We soon got lost in the middle of the maze by going in a circle.

We continued to not use the full map until we were in the bottom-left corner. At this point, I was completely confused about where we were supposed to go next. I feel like the single blue circle in that area does not correctly reflect how lost I thought we were. Since the group wanted to be done soon, we decided to look at the full map again. I could not figure out where we were, but someone did and they quickly got us back on track. From here, we continued using the full map and headed straight for the exit.

I liked last year's maze better. Recall that last year, the game was that they give you (part of) the map and you need to get to certain checkpoints (where you get more of the map). Even with the map, it was very difficult to know where you were.

Sunday, September 30, 2012

In Wikipedia's article on the halting problem, there used to be a section called "Can humans solve the halting problem?" but I just noticed that it was deleted in 2008. There was minimal discussion about this deletion after it happened, and I would have voiced my opinion to keep the section had I noticed. However, instead of going through the necessary steps to reintroduce the content, I will just paste (most) of the section here.

Can humans solve the halting problem?
It might seem like humans could solve the halting problem. After all, a programmer can often look at a program and tell whether it will halt. It is useful to understand why this cannot be true. For simplicity, we will consider the halting problem for programs with no input, which is also undecidable.

To "solve" the halting problem means to be able to look at ''any'' program and tell whether it halts. It is not enough to be able to look at ''some'' programs and decide. Even for simple programs, it isn't clear that humans can always tell whether they halt. For example, we might ask if this pseudocode function, which corresponds to a particular Turing machine, ever halts:

This program searches until it finds an odd perfect number, then halts. It halts if and only if such a number exists, which is a major open question in mathematics. So, after centuries of work, mathematicians have yet to discover whether a simple, ten-line program halts. This makes it difficult to see how humans could solve the halting problem.

More generally, it's usually easy to see how to write a simple brute-force search program that looks for counterexamples to any particular conjecture in number theory; if the program finds a counterexample, it stops and prints out the counterexample, and otherwise it keeps searching forever. For example, consider the famous (and still unsolved) twin prime conjecture. This asks whether there are arbitrarily large prime numbers p and q with p+2 = q. Now consider the following program, which accepts an input N:

This program searches for twin primes p and p+2 both at least as large as N. If there are arbitrarily large twin primes, it will halt for all possible inputs. But if there is a largest pair of twin primes P and P+2, then the program will never halt if it is given an input N larger than P. Thus if we could answer the question of whether this program halts on all inputs, we would have the long-sought answer to the twin prime conjecture. It's similarly straightforward to write programs which halt depending on the truth or falsehood for many other conjectures of number theory.