This book is about the open source, python-based Chandler project ( 
http://chandlerproject.org/ last mentioned on Edu-sig in 2006) and, more 
broadly, about the art of creating software.

Here is the website for the book:
http://www.dreamingincode.com/

And a Salon interview with the author:
http://www.salon.com/books/int/2007/02/03/leonard/

Surprisingly, this book has not been mentioned before on Edu-sig if a Google 
search of the archives is to be believed.

Here are excerpts [and comments on the excerpts] which suggest why it might be 
useful to Python-using Educators:

pg 41
Torvalds, who is known as Benevolent Dictator for Life of the Linux operating 
system, consistently exudes a calm optimism about the long-term prospects for 
the movement he symbolizes. "In science," as he explained in a 2004 interview 
in Business Week, "the whole system builds on people looking at other people's 
results and building on top of them.  In witchcraft, somebody had a small 
secret and guarded it--but never allowed others to really understand it and 
build on it. Traditional software is like witchcraft.  In history, witchcraft 
just died out. The same will happen in software. When problems get serious 
enough, you can't have one person or one company guarding their secrets. You 
have to have everybody share in knowledge."

[Are the principles of open source and the reading of well written code parts 
of your curriculum?]

pg 43
In the 1962 essay that laid out his plan of research into the augmentation of 
human intelligence, Engelbart explained why computer programmers were the most 
promising initial target group.  ... [He] noted that "successful achievements 
can be utilized within the augmentation-research program itself, to improve the 
effectiveness of the computer programming activity involved in studying and 
developing augmentation systems.  The capability of designing, implementing, 
and modifying computer programs will be very important to the rate of research 
progress."  In other words, if NLS [oNLine System] could help his programmers 
program better, they'd be able to improve NLS faster.  You'd have a positive 
feedback loop. You'd be, in the term Engelbart favored, bootstrapping.
    To Engelbart, bootstrapping meant "an improving of the improvement process."

pg 98
"If it takes the typical programmer more than two minutes and twenty-seven 
seconds to find something," Constantine wrote, "they will conclude it does not 
exist and therefore will reinvent it."

[How do you teach code reuse and enhancement?]

pg 127
There is no reliable relationship between the volume of code produced and the 
state of completion of a program, its quality, or its ultimate value to a user. 
... The week that he was asked to fill out the new management form for the 
first time, Atkinson had just completed rewriting a portion of the Quickdraw 
code, making it more efficient and faster.  The new version was 2000 lines of 
code shorter than the old one.  What to report? He wrote in the number -2000.

[What do you teach students to produce -- code or value-to-the-user?]

pg 149
In 1990, at the PC Forum gathering of computer industry luminaries, Kapor first 
delivered the text of his "Software Design Manifesto."

   No one is speaking for the poor user.  ... Perhaps the most important 
conceptual move to be taken is to recognize the critical role of design, as a 
counterpart to programming, in the creation of computer artifacts.  ...

Reaching back to ancient Rome, Kapor proposed applying to software the 
architecture theorist Vitruvius's principles of good design:

firmness--sound structure, no bugs;
commodity--"A program should be suitable for the purposes for which it was 
intended";
delight--"The experience of using the program should be a pleasurable one."

[What design principles do you teach?  How do they compare?]

pg 245
[In "Methods" chapter, discussion of CMM:]
One Humphrey presentation offered these bluntly persuasive bullet points:
- We all work for organizations.
- These organizations require plans.
- Unless you are independently wealthy, you must work to a schedule.
- If you don't make your own schedules, somebody else will.
- Then that person will control your work.

pg 252
The meeting found a more virile name for the movement--Agile Software 
Development--and produced a manifesto that reads in its entirety:

   We are uncovering better ways of developing software by doing it and helping 
others do it.
      Through this work we have come to value:
      - Individuals and interactions over processes and tools
      - Working software over comprehensive documentation
      - Customer collaboration over contract negotiation
      - Responding to change over following a plan

[Do you expose students to these ideas?]

pg 306
Knuth's faith is distilled in the haiku-like poem by the Danish 
poet/scientist/designer Piet Hein that adorns the entryway to his home:

The road to wisdom?--Well, it's plain
and simple to express:
Err
and err
and err again
but less
and less
and less.

Literate programming is intended as an antidote to the excruciating fact that, 
as Joel Spolsky puts it, "it's harder to read code than to write it.

    Instead of imaging that our main task is to instruct a computer what to do, 
let us concentrate rather on explaining to human beings what we want a computer 
to do.

[By implication, if you do not teach literate programming, you teach 
"illiterate" programming! ;-) ]

pg 268
[Rosenberg's Law]
Software is easy to make, except when you want it to do something new.
[corollary]
The only software that's worth making is software that does something new.

[see also discussion at http://www.wordyard.com/2007/01/15/rosenbergs-law/ ]

pg 314
After spending some time studying Chandler's code base, Eby posted to his blog 
a lengthy entry titled "Python Is Not Java."
 
   ... So, the sad thing is that these poor folks worked much, much harder than 
they needed to, in order to produce much more code than they needed to write, 
that then performs much more slowly than the equivalent idiomatic Python would.

...

  Pretend that Python is a magic wand that will miraculously do whatever you 
want without you having to lift a finger.  Ask, "how does Python already solve 
my problem?" and "What Python language feature most resembles my problem?" You 
will be absolutely astonished at how often it happens that [the] thing you need 
is already there in some form.

[ http://dirtsimple.org/2004/12/python-is-not-java.html ]

----

I found the book very informative and inspiring--especially in light of another 
open source, Python-based project, Open Allure, a voice-and-vision enabled 
educational software, which is part of my PhD study of open source software 
development. If you are interested in following this project, check out the 
short videos at

http://bit.ly/openallure

join the discussion list at

http://bit.ly/openalluregg

or get the source code at

http://openallureds.org

John Graves
Auckland
NEW ZEALAND





 
_______________________________________________
Edu-sig mailing list
Edu-sig@python.org
http://mail.python.org/mailman/listinfo/edu-sig

Reply via email to