Monthly Archives: June 2011


“I like the Walrus best,” said Alice, “because you see he was a little sorry for the poor oysters.”

“He ate more than the Carpenter, though,” said Tweedledee. “You see he held his handkerchief in front, so that the Carpenter couldn’t count how many he took: contrariwise.”

“That was mean!” Alice said indignantly. “Then I like the Carpenter best—-if he didn’t eat so many as the Walrus.”

“But he ate as many as he could get,” said Tweedledum.

This was a puzzler. After a pause, Alice began, “Well! They were both very unpleasant characters—”

-Lewis Carroll


Cruising the Sea with NCL

My family and I just finished a 1-week cruise to Bermuda on the NCL Gem.

Into Systems

I’m into reading Linux kernel code and discussions (such as IBM Developer Works postings).

Assembly language code often does not document what it calculates with mathematical expressions. The similarity of higher level language code to mathematical expressions is of course designed to be much stronger. I find the need to consciously translate what is calculated to a mathematical expression before I understand it. This step is probably bypassed by more practiced programmers.

Systems have features required so different applications with conflicting properties can be supported by the same system. Example: GNU ld has the PROVIDE(SYMBOL = DEFINITION); operation. The documentation gives an example for its need:

For example, traditional linkers defined the symbol `etext’.
However, ANSI C requires that the user be able to use `etext’ as a function name without encountering an error. The `PROVIDE’ keyword may be used to define a symbol, such as `etext’, only if it is referenced but not defined.

Some interpretive languages have a conditional assignment operator that assigns a given value to a target variable when the the target variable is undefined. This is the same idea as “weakly defined” symbols supplied by input files in a linking.

Seeking generalizations: (a) Defaults in systems. (b) Perhaps closed world assumptions  (what is not specified is assumed to be false) in logic.


How many people who use advanced features of linkers have written an elementary linker for educational purposes?  Our curriculum currently required of BS majors includes that (in a systems programming course.) How can we effectively balance education by using complex systems to practice building systems and the building of simpler systems?