Archive for March, 2007

Levels of Abstraction, 3 at a Blow

Tuesday, March 13th, 2007

Kathy Sierra has another nice blog entry on “Are our tools making us dumber?” Quoting from life:

That night, you’re helping your 12-year old son with his math homework when you realize–in horror–that while he’s quite good with the calculator, he couldn’t multiply two three-digit numbers using only paper and pencil if his Wii depended on it. These tools were designed to make us more efficient, so that we can focus on something more important than the tedious task of, say, giving change, organizing source code, and doing calculations. But are they helpful timesavers, or are we dumbing ourselves–and our users–down?

One way around this particular problem is realizing that you are dealing with levels of abstraction. In this case:

  • The level in question, e.g., multipling two numbers.
  • The level below, e.g., multiplication with pencil and paper.
  • The level above, e.g., computing the cost of a home loan by multiplying the monthly payment by the number of months in the loan (30 year loan = 360 months).

If you keep all three levels in mind as you work the problem, aids like calculators will make you faster, not dumber.

Other threesomes are:

  • Computer variables:
    1. the value (98.2)
    2. what it represents (the patient’s temperature)
    3. how it is represented (the bits and bytes in binary/octal/hex)
  • Computer code:
    1. What you are trying to do (multiply two numbers)
    2. How to write in the programmng language (total = payment * duration;)
    3. The machine/assembly language generated by the compiler (is the generated code correct?).
  • Program libraries:
    1. How you expect the API to be used (e.g. what functions are worth optimizing and for what load).
    2. How to code it correctly.
    3. How you use any libraries or system calls.

Know where you are and what surrounds you and you can go farther and faster than finding out the hard way by bumping into the sharp edges.

Change in Comment Policy

Sunday, March 4th, 2007

Some bozo is bombarding this blog with comment spam. In the past 24 hours, there have been over sixty comment spams. So new policy, you have to register and login to post comments. If I can figure out how to blacklist the IP address, I’ll open up the policy again.

Succeeding Gracefully

Thursday, March 1st, 2007

I’ve been looking into a potential program – brainstorming, developing use cases, researching technology, etc.  Plus looking at how it should fail gracefully.  The usual.
Along the way it occurred to me that I also need to figure how for it to succeed gracefully, i.e., how to prevent it from becoming a victim of its own success.  As with failure, there are several parts to it: scale well, provide depth so a beginner doesn’t soon reach its limits, allow extensions so the expert doesn’t soon reach its limits.  Not only must the capabilities be there, the user has to know they are there.  So how do we let the user know as she/he is ready without overwhelming the beginner?  Clippy has clearly demonstrated that is not the answer, but a more understated implementation may be more successful.