Wednesday, April 19, 2006

Wild Thing

Stayed late at work today, but time is meaningless when you are wrapping up a problem. On Monday I was told that the software I've been working on for the last two months has to compile on older system software. (I was told to roll back my gcc version a notch.) Things broke. It was depressing. I got to work with a programmer I didn't know well who maintains the test computer running the older system software. The problem centered around an unrecognized system "accessor function", __ctype_b_loc. Which still reminds me of Tone Loc, but deals with the concept of locales, allowing the rest of the world to enter yuan symbols, umlauts, and upside down exclamation marks into the computer. Everybody I talked to seemed united around the idea of the gcc compiler version being the only thing to dictate the presence or lack of functions such as __ctype_b_loc. But there was a whole other side to the problem. The compiler version (gcc) and the system C libraries (glibc) can be updated or rolled back independently of one another. Even after I was told to roll back my gcc, I was still testing my code on a non-standards complaint version of glibc. That took 8 hours to figure out. Sitting there like a solemn chimpanzee in my cube, making people wonder if I was slowly dying. I wrote a very short patch file that makes the old system software deliver its ctype lookup tables in the manner of its newer replacement. I hacked linux. I got a "clever" from the programmer who helped me get started, perhaps the most nurturing comment I've received since starting the job. Then I realized that after all the quiet hours, I also learned the way to TEST for the correct version of glibc. It is a good addition to my skill set.

Last week I solved the problem of depth soundings coming out the system like swiss cheese, several layers of partially complete depth grids rather than one grid that contains everything. And a few weeks before that I fixed a bug caused by small rounding errors in the float datatype.

I am keeping my job.