Saturday, July 28, 2007

Christopher Alexander's keynote speech at OOPSLA 1996

One of my acquaintances sent me this link to OOPSLA 1996 keynote speech - "The Origins of Pattern Theory - the Future of the Theory, And The Generation of a Living World by Christopher Alexander".

I'm on road so I just write my impression of reading it briefly. It is ironical that his good intension was misunderstood and misused. When did referring to his work start to prevent software developers from reacting to what's happening to the code at hand and from building software generatively, like in Agile way?

In the next last section of this blog, I just paste excerpts from his speech, which I found interesting.

--------

I don't know hardly anything about what all of you do.

I didn't really understand what had been going on, and that my work had somehow been useful to computer science.

When I faced the question of addressing you, I wondered what on earth I should talk about.

That local adaptation can happen successfully only if people (who are locally knowledgeable) do it for themselves.

one of the efforts of the pattern language was not merely to try and identify structural features which would make the environment positive or nurturing, but also to do it in a fashion which could be in everybody's hands, so that the whole thing would effectively then generate itself.

(Bear in mind, as you hear my comments, that they need to be taken with a grain of salt; I'm ignorant; I'm not in your field.)

We were able to judge patterns, and tried to judge them, according to the extent that when present in the environment we were confident that they really do make people more whole in themselves. Of course you may ask, How in the hell did you test for that? But that is too long a story which I cannot cover in this speech. The important point is that such testing was going on continuously.

We were looking for the extent to which, as a whole, a pattern language would produce a coherent entity.

(1) the moral capacity to produce a living structure and (2) the generativity of the thing,

It seemed to me that we had fallen far short of the mark that I had intended.

At about the same time I began to notice a deeper level of structure and a small number (fifteen) of geometric properties that appeared to exist recursively in space whenever buildings had life.

The comparable view, in software design, would tell you that a program which is objectively profound (elegant, efficient, effective and good as a program) would be the one which generates the most profound feeling of wholeness in an observer who looks at the code.

The important thing is that -- in architecture -- this is not merely a hunch but a testable empirical result. It means that the objects that are most profound functionally (when I say objects, I mean buildings, streets, door knobs, shelf, room, dome, bridge) the objects that are most profound functionally are the ones which also promote the greatest feeling in us.

If there really is a way of looking at structures which both deals with real functional structure in the ordinary technical and practical sense, and simultaneously has its roots in human feeling, there will be a very huge and positive step.

recursively

That is what happens in all the living structures we think of as nature. When you analyze carefully just what's going on and how things are happening in the natural world, this sort of structure preserving transformation tends to be what's going on most of the time. That is why, when nature is left alone, most of the time living structure is produced.

I have, for many years, thought that this could only be solved by a genetic approach -- an approach where deep structure, spread through society, creates and generates the right sort of structure, very much as genetic code creates and generates organisms and ecological systems -- indirectly, by letting loose life creating process.

If these software packages are life creating, and accepted, and widely enough spread throughout the world, there is a chance we might get a grip on this problem: provided that the software is freeing, liberating, allows each person individual control and decision making power to do the right thing, and to create living structure, locally, wherever they are.

the process by which one discusses these kind of things, shares ideas about them, gradually influences the way people are thinking so that gradually larger and larger percentages of bits of the environment might turn into living structure.

When I had the pleasure of beginning to meet some of the various folks who introduced themselves to me over the last year and a half from the software community, I began to be fascinated by the number of them that were closet architects. Greg Bryant who worked on the 486 chip, is really interested in ecology and is an editor of Rain, an ecological magazine. Bill Joy is writing about workstations in the concrete physical sense that is familiar as an architect. John Gage, chief scientific officer of Sun, is interested in neighborhood schools, and in the process by which people can repair their own physical neighborhoods by working together. Jim Coplien is dealing with social structures in human organizations. Mark Sewell from IBM wants to build houses. Dick Gabriel has as his deepest passion, the writing of poetry: another kind of art. I don't have a long enough list.

The new generative languages are dynamic and, like software, interact with context, to allow people to generate an infinite variety of possible results but, in this case, with a built-in guarantee of well-formed results.

When a paradigm change occurs, in a discipline, it is not always the members of the old profession, who take it to the next stage.

I want you to help me. I want you to realize that that problem of generating living structure is not being handled well by architectural planners or developers or construction people now, and the Earth is suffering because of it. I believe there may be no way that they are ever going to actually be able to do it, because the methods they use are not capable of it. For you it is different. The idea of generative process is natural to you. It forms the core of the computer science field. The methods that you have at your fingertips and deal with everyday in the normal course of software design are perfectly designed to do this. So, if only you have the interest, you do have the capacity and you do have the means.

What I am proposing here is something a little bit different from that. It is a view of programming as the natural genetic infrastructure of a living world which you/we are capable of creating, managing, making available, and which could then have the result that a living structure in our towns, houses, work places, cities, becomes an attainable thing.

Thursday, June 21, 2007

¨The End of Poverty¨

I have just finished reading ¨The End of Poverty¨.

I think I need perseverance.
Often times, people prevent me from acting on good cause because of discrimination, etc. Sometimes that´s because I don´t believe in a religion some people believe in and they think that I should be punished.
But I need perseverance to keep on going.

Sunday, May 27, 2007

Recycling in South America

I thought of this idea more than a month ago. But didn´t have a chance to write it.

While traveling in South America, you notice that there is no recycle bin and all the plastic bottles and metals are thrown away into garbage can.
I think that those materials can become resource for them. Instead of mining from the earth, they can collect those materials and reuse them. If you consider them as a resource, South America is abundant with free resources.

Tuesday, April 17, 2007

View of Glaciar Perito Moreno from sky



I flew from Puerto Montt to Punta Arenas today and the plane flew over Glaciar Perito Moreno. It was magnificent. The Glaciar was huge. The very first time to see a glaciar in full scale.

I would recommend everybody to fly to Punta Arenas to enjoy the view of Glaciar from the sky.

P.S. It turned out that the glaciar on the photo was Glaciar Ipsala. I have photos of Glaciar Perito Moreno, too, and I will put it here when I have a time.

Tuesday, April 10, 2007

Chilian people are very kind

I have found that people in Chile are very kind.
When I am traveling around, they are very helpful and always respect me.
I am enjoying meeting people here.

Saturday, April 07, 2007

Valparaiso and Vina del Mar in Chile

Yesterday, I visited Valparaiso and Vina del Mar from Santiago in Chile.

On the bus, a local lady from Valparaiso kindly gave me information about Valparaiso.
I asked for a good seafood restaurant. And she recommended me Bar La Playa. It was a very good and unique place. People there were very nice. The waitress was very kind. She even let me go behind the counter and took a picture for me. It is not listed in South American Handbook - the guidebook I'm using. The price range is the middle range in that book, i.e. $6-11. Good food. It's located just west of Plaza Sotomayor. There is an entrance both on Cochrane and Serrano.

Speaking of what's new from the information on the guidebook, the train between Valparaiso and Vina del Mar is actually a modern Metro. You have to purchase a card for 500 pesos. Then you have to add money for the fair on the top of it.


Valparaiso


Entrance of Bar La Playa on Cochrane (Avenue?) in Valparaiso


Vina del Mar

Thursday, April 05, 2007

First Time South America

I have just arrived at Santiago in Chile yesterday morning.
This is my first time to South America.
So far, things are going smoothly.
I´m writing this blog at an Internet Cafe in downtown Santiago.
When I can connect my digital camera to a computer, I will try to post some photos here.

Tuesday, March 27, 2007

InfoQ posted an article about a Ruby on Rails project similar to what I have been contributing to

"Ruby on Rails case study: ChangingThePresent.org"

I posted a reply introducing our Open Source Ruby on Rails project.

Well, that would reveal which project I have been working on, which is against the intension of this blog. In this blog, I'm trying to avoid revealing any project or individual so that I can express myself more freely and that I wouldn't offend anybody without intension by mistake. After all, naming somebody and blaming him/her explicitly doesn't help to solve a problem.

Monday, March 26, 2007

Easy On, Easy Off - it's true

"Getting Real" says "Make signup and cancellation a painless process".
And I think that making cancellation a painless process is crucial.
It is important for your business.

I have recently encountered the situation that cancellation was painful by being refused to be given the necessary information.
All I wanted to do was to put my auto insurance on hold while I'm not driving my car for a few months. I never expected that the auto insurance agent would give me a hard time. He even diffused my question - do I have to visit the office to sign a document? He talked about different things and never answered my question. He never gave a clear answer about what happens to the money I already paid.

Then I was reminded of what "Getting Real" said. Making customer's life difficult is not a good business practice. I expect a painless cancellation process will become prevalent in the business in the coming future.

P.S.
As I wrote this blog, I was reminded of my visit to Arusha in Tanzania about 10 years ago. It was the base for Safari trip to Serengeti National Park. The moment I got off the bus, people crowded around me and all shouted at me insisting to join their Safari package. Because all were talking to me at the same time and didn't give me any time to even respond, all I did was to walk away into an accommodation. They might be desperate and were obviously new to capitalism. And I'm not judging their culture or anything. But it was pathetic.

Sunday, March 25, 2007

Ruby on Rails production - just not to forget

Just in order not to forget, I just put a link here regarding migration.

"How to migrate databases in production environment"

Friday, March 23, 2007

RESTful Rails resources

One developer in the Open Source project I'm participating in posted links to RESTful Rails resources. I appreciate that he posted these links. I just paste them here so that I can access easily. They are all public site so should be OK to paste them here.

Getting started with RESTful rails

Nested CRUD resources in RAILS

Quick guide to the new scaffold_resource generator

Ruby on Rails: RESTful Routing Basics (slides)

I use StoryBoard to plan my life, too

I use index cards on the wall or board to plan various errands just like you do in Agile software development. It is very effective. It motivated me to get the stories done. It gives me a sense of direction. And I feel good when stories are done.

InfoQ posted an article "Fun: Planning your Life with Index Cards" with the picture of Mike Mason's taskboard in his blog.

In my case, I put estimated time, too. Then I fit stories in the time available. That allows me which one has a higher priority and which one is non-essential so I can drop.

And after done, I put how long the story took. That gives me an instant retrospective that helps me to get better in what I do in my life.

Wednesday, March 21, 2007

"The End of Poverty" and "Integrated Community Development"

The coordinator of the non-profit organization I'm volunteering for kindly spent a time for me at a coffee shop today.

He mentioned the book by Jeffrey Sachs, "The End of Poverty". I bought the book right away. The back cover had a comment by Jared Diamond, the author of "Collapse", which I enjoyed reading (actually, listening to its audiobook).

Also he mentioned the concept of "Integrated Community Development".

I list the programs/organizations he mentioned:
- Millennium Promise
- Aga Khan Foundation
- Dhan Foundation
- Habitat for Humanity
- Opportunity International, also Opportunity International Canada

I am very excited.

Saturday, March 17, 2007

Positive collaborative work at the current Open Source Rails project I'm participating in

Today, there was a first code review meeting at the Open Source Rails project I'm participating in. Before that, I wasn't necessarily fond of having a code review meeting without committing the code (of course, with tests) to RubyForge so that the project can progress based on the power of the collaboration of the community - I mean that's what's good about Open Source project. But the code review meeting turned out be quite good.

What I liked most was team members respected each other and each other's work regardless of the difference in the style of software development. It was a positive collaborative work.

Thursday, March 15, 2007

Agile Estimating podcast

I listened to a podcast about Agile Estimating - an interview with Mike Cohn.

It was a fun to listen to.

They developed a web site for planning poker. It's written in Ruby on Rails. It's free to use. I'm going to try it out.

Wednesday, March 14, 2007

Database Refactoring

InfoQ posted a video of Scott Ambler's talk on Database Refactoring at Agile 2006.
I like the messages.

Monday, March 12, 2007

A blog post about career in computer programming

I was looking at del.icio.us just to check out what's there. There was a post "Why a career in computer programming sucks". It was an interesting reading. And I think it hits the truth. His response to the comments was interesting, too, though I don't necessarily agree with everything he said in (4). It's true that it's a huge problem to integrate different technologies, but according to "The Wisdom of Crowds", variety and diversity produce a better product.

Your Code.. it's Alive..

My acquaintance sent me this Michael Feather's blog entry through Google Reader.
"Your Code.. it's Alive.."

I agree that code is alive.
I think that that's the reason why it's important to keep the code as simple as possible and to write a code only for a feature that is necessary at a time. And I think that it's important to write tests first to get reactions from the code.

Saturday, March 10, 2007

Installing MacPorts on Mac OS X 10.4.8

Basically followed what's written in InstallingMacPorts.

But there were some things that didn't work.
So I write what was successful on my machine.

1. Install Xcode Tools.
From "Mac OS X Install Disk 1", select "Xcode Tools" -> click on "XcodeTools.mpkg".
Follow the installation window.

2. Install XWindows (X11).
From "Mac OS X Install Disk 1", click on "Optional Installs.mpkg".
Follow the installation window up to the step "Installation Type".
Under the right pane with the title "Custom Install on Macintosh HD", expand "Applications" -> check on "X11" -> click on "Install".
Follow the installation window until the end.

3. Set Shell environment.

As a root user (I think sudo would do, too), under its home folder(/var/root), add the followings to .profile file.

export PATH=/opt/local/bin:/opt/local/sbin:$PATH
export DISPLAY=:0.0
export EDITOR=/usr/bin/vim

Save the file.
Execute "source ~/.profile".

As a root user (again I think sudo would do, too), add the following to /etc/X11/xinit/xinitrc.
 
source ~/.profile


4. Install MacPorts.
Download the latest MacPorts dmg file.
Click on the file to mount it.
Under the mounted directory, click on pkg file.
Follow the installation window.

5. Update MacPorts via selfupdate.
Execute "sudo port -d selfupdate".

Friday, March 09, 2007

Ruby programmers do it from within Ruby

From "Ruby Cookbook", Recipe 10.10 "Avoiding Boilerplate Code with Metaprogramming".
I think this would make a good bumper sticker, too.