Ever see the “Mother of all Demos”?

In 1968 Douglas C. Engelbart, along with a team of 17 researchers at Stanford, in a 90 minute taped demonstration, showed us what was then the future – which is now the present (and soon to be the past?) – hypertext, gui based interaction, online collaboration including email, and more.

Stanford has a terrific page on the demo, including video clips of it broken down by time and topic, and a single clip of the whole thing. If you’ve never seen this before, take the time, scroll to the bottom of this, and watch beginning to end. It’s not called “The Mother of all Demos” for nothing.

I’ve watched this a few times over the years and I keep coming back to it and being blown away. How far have we gone? How far have we not? There has been much added to the mix these past ten years, but it was a long way from there to here.

Related:

PhillyCHI

Martin Luther King Jr. Day 2011

Emma came home from school with a pamphlet and homework assignment on Dr. King the other day and it gave me the opportunity to speak a little about someone I consider a hero and what he challenged us to do.

Wish I was well enough to take part in Martin Luther King Jr. volunteer efforts tomorrow, but at least I can root them on. Kick ass tomorrow folks and have fun.

Via dangerousmeta.com came the following clip of Robert Kennedy announcing the assassination of Martin Luther King Jr.

YouTube: “Robert Kennedy Announcing the Assasination of Dr. Martin Luther King, Jr. in Indiana 1968”:

The Twelve Doctors of Christmas

Tor.com ran a great series of essays on each of the Doctors titled “The Twelve Doctors of Christmas” that has some good reads.

My favorite essays out of the bunch:

“The Third Doctor”

“Born to be an Alien”

“Shifting into Fifth”

The Walking Wounded”

3, 4, 5, and 9. Pretty much coincide with my favorite Doctors as well. No offense all of you out there.

“Born to be an Alien” quotes an essay that was passed along a while back that is still a good read, “How Doctor Who Made Me A Liberal”. Sometimes I feel like I should write a version of this essay wrapping in Star Blazers, Star Trek, early Star Wars, and the Muppets because they, along with Doctor Who, left some similar imprints on me growing up.

The stories we are told as kids stay with us in some interesting, and powerful, ways.

As the series summarizes:

Until next time, remember: Bananas are good, Daleks are bad, try reversing the polarity, and intellect and romance should always triumph over brute force and cycnicism.

Two talks from TED to watch *today*

TEDXToronto: “Neil Pasricha: The 3 A’s of awesome”:

TEDXHouston: “Brene Brown: The power of vulnerability”:

Related:

“1000 Awesome Things”

Presentation Zen: “We don’t seek your perfection, only your authenticity”

This post brought to you by Dave Rogers whose latest post over the shooting in Tucson is a must read.

David Shenk: “Our abilities are not set in genetic stone.”

BBC: David Shenk: “Is there a genius in all of us?”:

It would be folly to suggest that anyone can literally do or become anything. But the new science tells us that it’s equally foolish to think that mediocrity is built into most of us, or that any of us can know our true limits before we’ve applied enormous resources and invested vast amounts of time.

Our abilities are not set in genetic stone. They are soft and sculptable, far into adulthood. With humility, with hope, and with extraordinary determination, greatness is something to which any kid – of any age – can aspire.

Joshua Bloch on “How To Design A Good API and Why it Matters”

This is a great Google Tech Talk and while it may be Java-centric, I think much applies to any language you work with.

YouTube: GoogleTechTalks: “How To Design A Good API and Why it Matters”:

This is what I believe is the PDF slideshow from the above presentation.

There is a version of this presentation at InfoQ if you prefer that over YouTube and PDF.

InfoQ: Joshua Bloch: “Bumper-Sticker API Design”

Artima: Joshua Bloch: “Josh Bloch on Design”

Recent programming career recent reads

Tony Lukasavage: “Programmers: Why do we do it?”:

…those who truly love programming see it as an art form. Its not just a technical pursuit, but one that allows the leveraging of one’s unique talent and views. You bring a form of personal expression into your work. You invest yourself physically and mentally in what you do. You suffer and toil, using code as your medium, just as other artists craft with paint or stone. You have a personal association and pride with its creation. The code and its results represent you.

Chad Fowler: “Dead-End Jobs: Are You Suffering From Stockholm Syndrome?” (reddit conversation):

According to the Bureau of Labor statistics, American adults spend by far more time working than any other activity. That’s a lot of your waking time being trapped in a routine. In a Stockholm Syndrome situation, the captor chips away at the self-esteem of the captive. So for most of our waking hours, those of us trapped in dead end jobs like these are exposed to environments which systematically destroy our self-confidence. Not only that, a persistent fear and feeling of failure makes it harder to actually explore the options for leaving the bad situation. The instinctive self-preservation reaction in this kind of situation is to work harder to try to avoid the perceived threat coming to fruition.

David Veksler: “Some lesser-known truths about programming” (lots here, but I want to quote the following in particular since when I use the words ‘conceptual integrity’ I get blank stares too often!):

Software obeys the laws of entropy, like everything else. Continuous change leads to software rot, which erodes the conceptual integrity of the original design. Software rot is unavoidable, but programmers who fail to take conceptual integrity into consideration create software that rots so so fast that it becomes worthless before it is even completed. Entropic failure of conceptual integrity is probably the most common reason for software project failure. (The second most common reason is delivering something other than what the customer wanted.) Software rot slows down progress exponentially, so many projects face exploding timelines and budgets before they are killed.

Martin Fowler: “Is Design Dead?”:

…I think there is a role for a broad starting point architecture. Such things as stating early on how to layer the application, how you’ll interact with the database (if you need one), what approach to use to handle the web server.

Essentially I think many of these areas are patterns that we’ve learned over the years. As your knowledge of patterns grows, you should have a reasonable first take at how to use them. However the key difference is that these early architectural decisions aren’t expected to be set in stone, or rather the team knows that they may err in their early decisions, and should have the courage to fix them. Others have told the story of one project that, close to deployment, decided it didn’t need EJB anymore and removed it from their system. It was a sizeable refactoring, it was done late, but the enabling practices made it not just possible, but worthwhile.

How would this have worked the other way round. If you decided not to use EJB, would it be harder to add it later? Should you thus never start with EJB until you have tried things without and found it lacking? That’s a question that involves many factors. Certainly working without a complex component increases simplicity and makes things go faster. However sometimes it’s easier to rip out something like that than it is to put it in.

So my advice is to begin by assessing what the likely architecture is. If you see a large amount of data with multiple users, go ahead and use a database from day 1. If you see complex business logic, put in a domain model. However in deference to the gods of YAGNI, when in doubt err on the side of simplicity. Also be ready to simplify your architecture as soon as you see that part of the architecture isn’t adding anything.

…In order to work, evolutionary design needs a force that drives it to converge. This force can only come from people – somebody on the team has to have the determination to ensure that the design quality stays high.

This will does not have to come from everyone (although it’s nice if it does), usually just one or two people on the team take on the responsibility of keeping the design whole. This is one of the tasks that usually falls under the term ‘architect’.

This responsibility means keeping a constant eye on the code base, looking to see if any areas of it are getting messy, and then taking rapid action to correct the problem before it gets out of control. The keeper of the design doesn’t have to be the one who fixes it – but they do have to ensure that it gets fixed by somebody.

A lack of will to design seems to be a major reason why evolutionary design can fail. Even if people are familiar with the things I’ve talked about in this article, without that will design won’t take place.

…So is Design Dead? Not by any means, but the nature of design has changed.

Joel Spolsky: “The Guerrilla Guide to Interviewing (version 3.0)”

Joel Spolsky: “The Joel Test: 12 Steps to Better Code”

Joshua Thijssen: “The software managers “joel test””

Lucas Ward: “Maven and Continuous Delivery”

Uncle Bob: “Incremental Architecture”

Steve Yegge: Good Agile, Bad Agile

InfoQ Presentation: Martin Fowler and Rebecca Parsons: “Agilists and Architects: Allies not Adversaries Presentation”

Martin Fowler: Domain Specific Language

InfoQ Presentation: Martin Fowler: “Introduction to Domain Specific Languages”

Dave Thomas: “The ‘Language’ in Domain-Specific Language Doesn’t Mean English (or French, or Japanese, or …)”

defmacro.org: “The Nature of Lisp”

Jun Auza: “Top 50 Programming Quotes of All Time”

Antipatter: “How to Manage A Tech Career”

Book to read: “Man’s Search for Meaning”

Viktor E. Frankl’s “Man’s Search for Meaning” is now one of those select books that friends and family can expect me to be sending them for gifts over the next few years. For those not familiar it, it comprises of two parts: his harrowing account of survival in concentration camps during WWII, the concepts he gleamed from the experience; and a short description of “Logotherapy”, the form of therapy he pioneered that was influenced by it.

It is a short book, however, it took a long time to read because every page had something to think about and reflect upon. There are lessons for anyone, in any stage of life. Lessons for how we conduct ourselves under the best and worst of conditions, and finding the light in ourselves during the world’s darkest moments.

Quotes:

  • The attempt to develop a sense of humor and to see things in a humorous light is some kind of a trick learned while mastering the art of living.
  • …the “size” of human suffering is absolutely relative.
  • No man should judge unless he asks himself in absolute honesty whether in a similar situation he might not have done the same.
  • One literally became a number: dead or alive – that was unimportant; the life of a “number” was completely irrelevant. What stood behind that number mattered even less: the fate, the history, the name of the man.
  • We who lived in concentration camps can remember the men who walked through the huts comforting others, giving away their last piece of bread. They may have been few in number , but they offer sufficient proof that everything can be taken from a man but one thing: the last of the human freedoms – tho choose one’s attitude in any given set of circumstances, to choose one’s own way.
  • Dostoevsk said once, “There is only one thing that I dread: not to be worthy of my sufferings.” These words frequently came to my mind after I became acquainted with those martyrs whose behavior in camp, whose suffering and death, bore witness to the fact that the last inner freedom cannot be lost. It can be said that they were worthy of their sufferings; the way they bore their suffering was a genuine achievement. It is this spiritual freedom – which cannot be taken away – that makes life meaningful and purposeful.
  • The way in which a man accepts his fate and all the suffering it entails, the way in which he takes up his cross, gives him ample opportunity – even under the most difficult circumstances – add a deeper meaning to his life. It may remain brave, dignified and unselfish. Or in the bitter fight for self-preservation he may forget his human dignity and become no more than an animal. Here lies the chance for a man either to make use of or to forgo the opportunities of attaining the moral values that a difficult situation may afford him. And this decides whether he is worthy of his sufferings or not.
  • This uniqueness and singleness which distinguishes each individual and gives a meaning to his existence has a bearing on creative work as much as it does on human love.
  • A man who becomes conscious of the responsibility he bears toward a human being who affectionately waits for him, or to an unfinished work, will never be able to throw away his life. He knows the “why” for his existence, and he will be able to bear almost any “how”
  • Ultimately, man should not ask what the meaning of his life is, but rather must recognize that it is he who is asked. In a word, each man is questioned by life; and he can only answer to life by answering for his own life; to life he can only respond by being responsible.
  • According to logotherapy we can discover this meaning in life in three different ways: (1) by creating a work or doing a deed; (2) by experiencing something or encountering someone; and (3) by the attitude we take toward unavoidable suffering.
  • By his love he is enabled to see the essential traits and features in the beloved person; and even more, he sees that which is potential in him, which is not yet actualized but yet ought to be acutalized.
  • No one can become fully aware of the essence of another human being unless he loves him.
  • When we are no longer able to change a situation – just think of an incurable disease such as an inoperatable cancer – we are challenged to change ourselves.
  • …man’s main concern is not to gain pleasure or avoid pain but rather to see a meaning in his life. That is why man is ready to suffer, on the condition, to be sure, that his suffering has a meaning.
  • At any moment, man must decide, for better or worst, what will be the monument of his existence.
  • Every age has its own collective neurosis, and every age needs its own psychotherapy to cope with it.
  • Man does not simply exist but always decides what his existence will be, what he will become in the next moment.
  • Man is capable of changing the world for the better if possible, and of changing himself for the better if necessary.
  • A human being is not one thing among others; things determine each other, but man is ultimately self-determining. What he becomes – within the limits of endowment and environment – he has made out of himself. In the concentration camps, for example, in this living laboratory and on this testing ground, we watched and witnessed some of our comrades behave like swine while others behaved like saints. Man has both potentialities within himself which one is actualized depends on decisions but not on conditions.
  • For the world is in a bad state, but everything will become still worst unless each of us does his best. So let us be alert – alert in a twofold sense: Since Auschwitz we know what man is capable of. And since Hiroshima we know what is at stake.

Related:

Wikipedia: “Viktor Frankl”

Wikipedia: “Logotherapy”

Wikiquote: “Man’s Search for Meaning”

Viktor Frankl Institute

Also related:

Frankl was a huge influence on Stepen Covey’s “Seven Habits of Highly Effective People”.