Wednesday, March 30, 2016


If you can keep your job when all about you
 Are losing theirs and blaming it on (downsizing,
outsourcing, technology, globalization, the fed, Obama, you?)
If you can build a reputation on a forum,
  And dispense advice for free and not be snide;
If you can educate and not just bore 'em,
  And take all the ingratitude in stride,
Or being hated, don’t post "haters gonna hate",
  And yet don’t post too often, nor too wise:

If you can daydream—and still type all the faster;
  If you can code—and not make code your aim;
If you can draw with vector and with raster,
  And treat those two abstractions just the same;
If you can bear to see the code you've written,
  Twisted by knaves to make a hack for fools,
Or watch the software you gave your life to, broken,
  And reboot and build ’em up with trial-ware tools:

If you're fluent in both windows and ubuntu,
  Or work with macs—nor lose the common touch,
If neither Haskell, Bash, nor Java code can faze you,
  If all registers count for you, but none too much;
If you can fill the unforgiving nano-sec,
  With sixty cycles’ worth of CPU,
Yours is the net and everything that’s in it,
  And—which is more—you’ll be employed, my son.

with no apology to Rudyard Kipling

Wednesday, November 5, 2014

E. W. Dijkstra

"If academic research is often astonishingly successful, it always is because the researchers had the wisdom and the opportunity to avoid both the trivial and the impossible, and to follow the very narrow path in between. It is that narrow path in between that defines the intellectual autonomy of successful scientific research."

"The second reason is that what society overwhelmingly asks for is snake oil. Of course, the snake oil has the most impressive names —otherwise you would be selling nothing— like "Structured Analysis and Design", "Software Engineering", "Maturity Models", "Management Information Systems", "Integrated Project Support Environments" "Object Orientation" and "Business Process Re-engineering" (the latter three being known as IPSE, OO and BPR, respectively)."

prof.dr. Edsger W. Dijkstra

Going back to origins

Here is a poem that describes the future shock felt by we lucky few who first encountered the phenomenon that would become the world wide web:

World Wide Web

Robert Thibadeau 
November 30, 1993

I never thought I would see the day
When books looked superfluous.
I saw, the day before yesterday,
The world.

I leapt about, from Japan, to Here, to
To Finland,
To Italy.
Like it was nothing.

And I got deep
Into people
What they were thinking and doing
What they wanted and thought
I might like.

This is what a book
Was supposed to be.
But this was much better.
I made up the plot,
And I discovered the real story.

All right there. Right then. And,
Like the world,
It would never repeat again.

I really would like to have books
With their tree paper
Go the way of the dinosaur.
This is nearly it.
It is a place to really learn.

Will Internet become the dragon?
You know, the house dragon.
The oldest dragon. From China.
You know, the
Dragon of Peace holding
The Pearl of Everlasting Life.

Friday, February 27, 2009

Computer Science is really about managing complexity

The process of developing a software application is approximately as follows:

1. Write a bunch of functions that do useful things.
2. Package them in a container with an interface.
3. Organize the interface around some logical scheme.

In subsequent versions:

1. Fix a few bugs.
2. Add a few more functions.
3. Randomly reorganize the interface around some other logical scheme, because hey, the old one wasn't working since users couldn't find the functions they needed.
4. Rinse and repeat step 1.

Any reasonably large application is impaled upon the horns of the following dilemma: old users don't want the interface to change because it took so long to learn, however new users do want change because the current interface takes a long time to learn.

The problem is not with our methodology, or our programming languages, or even our interface technology. Some of you may take exception with that last one, but imagine that we have just invented a voice recognition system with an AI smart enough to understand our every request. Like Alāʼ ad-Dīn and his magic lamp, we would still not know what is possible unless we commanded the genie to list all of the possible wishes (which may be an infinite number).

The problem comes down to anticipating what the user wants. This is the basis of all user interface "improvements". We are all looking for the "easy button" that will just do whatever needs to be done, without any need to specify how or even what.

Begin a discriminating user of software is no special qualification to design user interfaces, in the same way that being a gourmet does not confer any special powers of cooking. And yet, need is at the heart of user interface design. Users want the functions that they perform with the software to be simple and straightforward and require the minimum of clicking and navigation. The ideal scenario is for the software to act like a surgeon's assistant, always standing ready with the appropriate tool at hand, and gently reminding us when we miss a step due to over concentration on the task at hand.

Building a great user interface then, requires not only study of UI concepts, but also study of usage patterns by the target audience. This in turn leads to dipping one's toes into the waters of operations research to determine if the entire process has been optimized from a global perspective.


Monday, July 7, 2008

Child of Wonder

Child of Wonder, Worldly Wise.
Who Parried the Frigid Fight's Reprise,
Hardly Humble, Scarcely Grown,
To You is Given All that's Known.

Forged in Freedom, Tempered True,
To Cut the Gordian Knot in Two,
Family of Fathers, Seldom Seen,
One was Knighted by the Queen,

Chain of Characters Rightly Wrought
Wove Words in Which our Conscious Caught
Strings of Dimensionality Untold
in Wàn Wéi Wang Ten Thousand-Fold

Rich in Robbery, Strictly Lax,
You Nobly Never Paid Your Tax
Loudly Lauded, Cruelly Cursed,
When Fortune's Fable Finally Burst,

Slumber's Songs are Now Unsold,
Make Members Message Manifold,
Eight Oh One, Twenty Six Sixteen,
Care to Comment? What's it mean?

Child of Wonder, Worldly Wise.
Come of Age 'Neath Darkening Skies,
Wiley Wizard, Scandalous Scam,
Will You Wonder Who I Am?

Wednesday, October 3, 2007


I looked the deadline in the eye and blinked.
I ordered the GUI Builder - only then did I think.
Productivity it will enhance, but only if you do the dance.
So stay in step, keep to the road
and never ever hack the code.

The following is from an article at: Hacknot titled "Beware the GUI Builder":

Twas WYSIWYG, unsightly code
Did file and frumble by the way;
All grinsy were the morrow-knows,
And the dumb sooths outlaid.

Beware the GUI Builder, son!
The drag that drops, the cut that pastes!
Beware the graphic god, and shun
The nerdious interface!

He took his QWERTY keys in hand,
Long time the dialog he fought-
So rested he by the Widget tree,
And sat awhile in thought.

And, as in WIMPish thought he sat,
The GUI Builder, icons lame,
Came blitting through the worldly web,
And googled as it came!

Grid bag! Grid bag! And layout do
The QWERTY keys went clicker-clack!
With one last call, he uninstalled
And went compiling back.

And hast thou slain the GUI Builder?
Come to my arms, my beanish boy!
O wizard real! Just look and feel!
He buffered in his joy.

'Twas WYSIWYG, unsightly code
Did file and frumble by the way;
All grinsy were the morrow-knows,
And the dumb sooths outlaid.

With apologies to Lewis Carroll