Saturday, November 12, 2011

Automated Source Code Verification

I haven't been aware of automated source code verification tool prior to reading http://graphics.stanford.edu/~seander/bithacks.html. There, I found that a freely available source code verification tool is in fact exists: http://www-2.cs.cmu.edu/~uclid/. This would improve my ability in finding security bugs in my code :-).

Thursday, November 10, 2011

Productive Reading vs Consumptive Reading

After being on the "consumptive reading" side (without being aware) for a couple of months I realized that there are actually two types of reading habit which I have to be always aware of in order to avoid wasting my time on not so important things. They are consumptive reading and productive reading.

I defined consumptive reading as reading information which has no immediate benefit outside of knowing "something is happening and have no immediate consequences on oneself". It does add to one's knowledge but have no immediate effect or impact in productivity (measured by useful output). To put it bluntly, it's "distraction" that consumes ones energy. On the other hand, productive reading is reading information which has immediate effect on ones work, which adds value to ones work by either shorten the time required to finish ones work or helps in other way(s) or will help on other "not so immediate" work.

It's rather easy to recognize consumptive reading. Ask yourself whether what you're currently reading adds immediate value to what you're working on. Whether it improves your skillset or specific knowledge. If it's not, then what you're doing is consumptive reading. If you're not in your "leisure time". Then, it's better to avoid doing consumptive reading because it eats into time available for productive reading or other activities which much more useful for you.

Recognizing these two types of reading "habit" is important in the age of "information overload" like now because we have very limited time to live and we should not waste it. This is not about money or anything. It's about appreciation to life itself. To live life to its fullest :-).

Thursday, November 3, 2011

Open Question on DJBX33A Hash Function

Where did Daniel J. Bernstein obtain his 33 constant in the DJBX33A hash function? As we know the DJBX33A (Daniel J. Bernstein "Times 33 Addition") algorithm works like this:
hash_t bernstein_hash(const unsigned char *key)
{
 hash_t h=0;
 while(*key) h=33*h + *key++;
 return h;
}
[Code snippet courtesy of http://en.literateprograms.org/Hash_function_comparison_(C,_sh)]. I wonder if the value was obtained from some sort of mathematical formulae or based results of numerous experiments? Well, yeah. Hashing is still a sort of black-art even now. But, I think there should be some sort of logical explanation.