Although Happy Canyon is a giant drainage occupying something like 90 square miles of southern Utah, it doesn’t get a lot of visitors. First, Happy is fairly remote and not in any of the national parks or recreation areas. Second, it is well-protected by cliffs, with only about five ways in or out. Finally, it suffers from a lack of reliable water. We took a five-day trip to Happy Canyon in mid-March 2012. The part of the canyon we saw did not show signs of having been visited by humans since last Fall.
March weather in the high desert is variable; we were lucky and had great conditions with cool nights and warm days. In a 20 degree bag I only got cold the first night, which we spent up on the canyon rim at 6200 feet.
We found several potholes and springs, but most likely these would all be dry by early summer. The springs tended to be surrounded by large areas of white mineral deposits—probably mainly magnesium sulfate (a.k.a. epsom salt: a laxative).
We did not make it down to Happy Canyon’s narrows near where it meets the Dirty Devil (many miles from where we entered the canyon), but rather explored the middle and upper parts of its North fork and French Spring fork, including a scary exit to the Big Ridge mentioned in one of Steve Allen’s books and another scary exit out of the French Spring fork. This part of the canyon didn’t have any major standout features like arches or ruins, but rather provided a lot of good canyon-county scenery, some nice petrified wood, and a total absence of other people.
This is an old story, but perhaps worth repeating. My students have heard it too many times and I tell it to myself even more often. Since I have no idea what the original source is, I’ll just paraphrase:
A local camera store announces that it’s holding a photography contest. This guy submits a panoramic picture taken from a mountain top. It’s not bad, but when the winners are announced, his photo isn’t among them. The next year the camera store runs another contest and the guy submits the same picture. Again, it doesn’t win. This continues for several more years and finally one of the judges starts wondering what’s going on and says to the guy: “Why do you keep submitting the same photograph every year? It’s not prize-winning material.” The guy says: “But it took so much work getting to the top of that mountain.”
Any resemblance to real computer systems research, living or dead, is not coincidental.
My coauthors and I just finished the final version of our paper about integer overflows in C/C++ programs that’s going to appear at ICSE 2012, a software engineering conference. Basically we made a tool for dynamically finding integer overflows (and related integer undefined behaviors) and used it to look at a lot of software. As you might expect, lots of overflows occur.
Our analysis is based on dividing overflows into four kinds:
- Intentional, well-defined overflows, such as letting an unsigned integer wrap around in a PRNG. These are not a problem.
- Unintentional, well-defined overflows, such as an unsigned multiplication wrapping around when this was not expected to happen. These are logic errors.
- Intentional, undefined overflows, such as computing INT_MAX using (1<<31)-1. These are often “time bombs” — behaviors that (may) currently work but are waiting to be broken by improvements in compiler optimization.
- Unintentional, undefined overflows, such as letting a signed multiplication overflow when this was not expected to happen. These are logic errors.
The conclusion is that people should at least test for undefined behaviors using a tool like IOC, and probably should also check for well-defined but unexpected overflows.