This patterns starts of with the sentense: "Until a
few years ago, human society was based on the extended
family." This is probably only true for highly developed
countries. In the not so rich countries, the extended
family is often still the cornerstone of society.
Developed contries are characterized by a strong
specialistation of jobs in combination with extensive
education. Both work and education are no longer tied
to the extended family. This also has led to individualisation
Of course, the real question is whether you are better
off in a society where you live in a close relationship
with your extended family, but lack the freedom to develop
yourself, or in a society where you can freely develop
your potentials, but where you are not able to live in
a close relationship with your extended family.
In the description a plea is made for forming voluntary
"families" of ten or so. Then follows a quote from the
final book of Aldous Huxley, which seems to suggest that
we can better replace Christianity with Tantrik Buddism
and that within the traditional marriage a sexually
satisfying relationship is not possible. It also seems
to imply that free sexual relationships and the loosening
of the child-parent relationship are benefitial to
society. Luckily, the author points out that there is
still a need for a private room for each family.
Still, I wonder whether people in developed societies
are willing to make all the sacrifices to start to live
together as voluntary families again. Because labour is
expensive in highly developed countries, houses are
expensive as well. In the Netherlands there are all kinds
of laws which forbid you to connect houses together as
is suggested by this pattern.
Object Constraint Language: a traditional formal language
Earlier this week, I read parts of OCL 2.0 Revised Submission,
version 1.5, June 3, 2002 describing the Object Constraint Language
designed for UML. (I did find an error in an example where the
precedence of the operators and and implied
Section 2.1 Why OCL? of this document starts with the sentense:
A UML diagram, such as a class diagram, is typically not
refined enough to provide all the relevant aspects of a
specification. There is, amongh other things, a need to
describe additional constraints about the objects in the
This exactly describes the problem with many diagram based
specification methodes. The section continues to explain that
OCL is introduced as a formal language that remains easy to
read and write, and that in this respect it is not like a
traditional formal language. The section states:
The disadvantage of traditional formal languages is that
they are usable to persons with a strong mathematical
background, but difficult for the average business or
system modeler to use.
However, if you continue reading the document, it appears
that you have to write a complex expression using predicate
logic to express a simple fact such as that in a set of
books all ISBN numbers need to be unique.
Today, I discovered that I am not the only one making
this observation, when I found the article
Towards Executable UML by
Scott W. Ambler.
Appaeantly, the attempt to make OCL easy to understand
has failed. Using keywords for mathematical symbols,
does not make a language less mathematical. I am tempted
to believe that there is something wrong with UML class
diagrams, if you need a complicated language, such as OCL
to repair some of its deficiencies.
Given the radius of three circles (ra, rb,
and rc) and the distances between their centerpoints
(lab, lbc, and lac)
what is the surface of the intersection of these circles, given that it
is larger than zero? (In a sense this is a continuation of the
When we look at the form of the intersection of the three overlapping
circles, we see that it consists of three circle segments. Each circle
segment is part of one of the circles. If we draw a triangle between
the three corner points (where the circle segments cross), the surface
is divide into four parts. If we know the lengths of the sides of a
triangle, its surface can be calculated with the following formulea:
areaTriangle(d, e, f) = sqrt(2d2e2 +
d4 - e4 - f4) / 4
The area between a circle segment and a line connecting the two
end points can be calculated based on the radrius (r) and the
angle (delta) with the following formulea:
areaArc(r, delta) = r.delta - r2.sin(delta)/2
If alphaX stand of the angle of the circle segment
of circle X, and kX the length of the side of the triangle
between the circle segment of the circle X, then the area of the
intersection is expressed by:
areaTriangle(ka, kb, kc)
+ areaArc(ra, alphaa)
+ areaArc(rb, alphab)
+ areaArc(rc, alphac)
We only need to determine the values for unknown parameters.
Now kX can be calculated from alphaX
with the following formulea:
kX = rX.sqrt(2(1 - cos(alphaX))
That means we only have to determine how alphaX should
be calculated. Lets see how alphaa can be calculated.
For this we look to the triangles that can be formed by the three center
points of the circle (Ca, Cb, and
Cc) and the two end points of the segment of circle with
radius a, which we will call Pab and Pac
after the circle whoes segment the touch. From some of these triangles
we know the lenght of all tree sides. That means that we can calculate
all the angles using the following formulea. In this d and e
are the lenghts of the sides of which the angle needs to be calculated,
and f is the length of the opposing side.
angle(d, e, f) = acos((d2 + e2 - f2)/2d.e)
The angle of the triangle
(Ca, Pab, Pac)
is equal to the angle of the triangle
(Ca, Pab, Cb)
plus the the angle of the triangle
(Ca, Pac, Cc)
minus the angle of the triangle
(Ca, Cb, Cc).
That means that for alphaa the following expression
= angle(ra, lab, rb)
+ angle(ra, lac, rc)
- angle(lab, lac, lbc)
Now presume that the radius of all circles is r and the distance
between them equal to l, then, if I got it all right, the area must be
3r.(2.acos(l/2r) - pi/3) +
r2((2 - cos(2.acos(l/2r) - pi/3)).sqrt(3) - 3/2.sin(2.acos(l/2r) - pi/3))
The exercise of simplifying this even further is left to the reader.
(Hint: rewrite sin(a - b).)
The introduction to this pattern mentions that spending
a lot of time in an height appartment increases the chance
for psychological problems. It suggests that this is
caused by a lack of social interactions. It does not
mention the possibility that people simply feel less
comfortable when being high above ground level. If it is
only the lack of social interactions, then the problem does
not simply lie in the height of the building. That means that
there could also solutions to the problem. I could think
of a Roof Garden pattern or a pattern to mix housing
layers with common facilities. Also pyramid shaped buildings
could over come some of these limitations.
A story about how to write bug free software.
Today, we went to "De Waarbeek" again, just like
Annabel had brought some bread to
feed the ducks. When we went out rowing, there was only one
duck, but luckily there were also some fish who liked the
bread too. It was not a very sunny day, and at one point it
started to rain. We found shelter in the little trains station.
We decided to feed Andy there. Suddenly,
he started to vommit. First only the "milk" we had just given him,
but then also the food from a few hours ago. We spend some time
cleaning him, and then decided it was time to go home. We left
about half an hour later, when the sun was out again.
Annabel being kidnapped
This morning, my mother came to take
with her. On invitation from a sister of my mother and her husband they
are going to stay in the Atlantic
Hotel until coming Wednesday. But then my mother told us, that
afterwards, Annabel was going to stay with her for another two weeks,
and then would stay with my sister for about a week, and that we would
only see her again on July 29. We could do nothing else then agree.
Li-Xia ran upstairs to collect some more clothes. We already had agreed
to stay with my mother during the last week of this month, so Annabel
is going be away from home for almost four weeks. She did not complain.
This afternoon, Andy and I looked through is
photo albums. I was surpriced by his attention span, and that he kept
his patience for a long time. He was really interested in watching the
pictures. In this sense his behaviour is more of a five year old than
a two year old. Also the rest of the afternoon, he behaved very nicely.
Is it because Annabel has gone away?
I spend some time scanning some of his pictures, because we received
the request to send in some pictures of his face such that they can
be studied by some experts who are interested in the chances of the
cranofacial anomalities with the Kabuki Syndrome.
(A page with all the pictures.)
I find this a very interesting pattern. There is a
file available of the first article mentioned in the pattern.
One wonders if the concept is really so good, why it has not
been implemented more often in the past 20 years. I do not
know of any implementation here in Holland.
The description neglects the fact that physical handicapped
people often need specialize transportation which needs to be
door-to-door, thus cannot make use of the mini-buses system.
An good pattern. Can even be applied to existing houses. In
the picture on the front page of this pattern, it looks like
window doors are used. The combination of these would make
a nice pattern as well. Actually, it looks like this pattern
has been applied a lot in the past. Why did it get lost?
Although, I understand the effect produced by this pattern,
I doubt whether it should be included as a pattern, because
it cannot be applied very generally. We as the Dutch are among
the tallest people in the world,
and it would be real problem if this pattern is being applied
We had a power failure this morning. It started at 8:25 and
lasted till 12:45. Just before it ended there was a short flash.
Later, I heard that at another place at the campus power had
returned at 12:30 and that there was a short dip around the
time we saw the short flash.
I do like trees, but it goes a little to far for me that they,
along with people and houses, constitute one of three basic parts
of my environment, as is suggested in the text of this pattern.
The text seems to suggest that trees in forests do not need care to
survive. Actually, many trees in forests do not survive, but die
before they mature. A natural forest is often a mess.
I also do not believe that if trees are in places where people
socialize, that they are being taken care for. Taking care of a
tree often requires specialized knowledge and tools (especially
when they get tall). Another problem with trees as architectural
elements, is that they usually grow very slowly, which means that
it can take decades before they perform the function that they
were planted for. And once they are tall, it is sometimes a
problem to keep them in a managable size.
The new cabinet
The formation of the new cabinet is in its last stage: selecting
the ministers for the different departments. There is a coalition
of the Christian Democrats, the LPF (Lijst Pim Fortuyn), and the Liberal party. The LPF did not get five
departments as they had expressed in May, they only got four. Also the
Liberal party got four departments. The Christian Democrats got
six departments, and Jan Pieter Balkenende will be the new prime
minister. If today elections would be held, the LPF would drop from
26 to 18 places in the parlement, the Liberal party would go from
22 to 24, and the Christian democrats would go up from 43 to 47,
making them by far the largest party, even larger than number two
and three together.
Difficult optimization problem
In software package I am developing there is a lane-view of processes
available. In this lane view the processes are placed in lanes depending on a
certain criteria, such as for example, which kind of users are involved in each
process. It is possible that a process needs to be placed in more than
one lane. In that case, the different parts will be connected. Also
the processes are connected with all kinds of errors that can cross
lane boundaries. The order of the lanes can be chosen by the user.
Not each order gives a nice lane view. I was thinking about a simple
algorithm for ordering the lanes, such that the various kinds of lines
between the lanes would be a short as possible. But I could not come
up with a simple algorithm.
In mathematical terms the problem can be stated as follows.
Lanes : Set(string)
Value : Function(PowerSet(Lanes) -> num)
Order : Bijection(Lanes, range(1,count(Lanes)))
For v in PowerSet(Lanes) with count(v) > 1
Sum Value(v) * ((For l in v Max Order(l)) - (For l in v Min Order(l)))
Star Wars: Episode II
Yesterday evening, I went to see
Star Wars: Episode II in a
(I saw the trailer of this movie on
December 27, last year, the last time I went to see a movie.)
I found the movie rather impressive, better than the last one, which
I watched some months ago on TV. I watched till the end of the credits,
when everybody else already had gone. When the sections about the
computer related special effects came, four columns were used to put
down the names. The software I work on, is most of the case much
less visible (and visual) as there are doing in the movie industry.
I do feel, that there are some illogical things in the story. One
of the most critical moments is the fight of Yoda with count Doucku(??).
I do not understand why Yoda uses all his strenght to hold the pillar
in the air, while it would have been much easier to either pull or
push Anakin and Ben away.
I find it a strong point that apparently evil can develop itself
without being noticed for a long time, right under the nose of
the those fighting for good, and that the leader chosen to lead
the army to save, will actually turn into the evil ruler. In a sense
it is amazing to see how peace slips through the fingers of those
who want to maintain it.
Reading this pattern, I immediately had to think about that
special feeling I always got when the sun was shining on my
back while washing my face when I was still living in Woerden
with my parents. Not in all climates the sun shines a lot.
We here in the Netherlands are rather familiar with grey
skies, which make all colours look pale. That kind of
weather causes all sides of the house to be almost equally
lighted. Building a sun room with a trasparent roof on the
North side can have a cause almost the same effect as windows
on the South.
Last Saturday, while looking around in some
super market, I noticed some frozen curly kail. We decided
to buy to packages with a total weight of 500 gram. At home,
I peeled two and a half kilo of potatoes to make a pan full
of curly kail hotchpotch. Of course, we could not finish
it in one go. But because there were some other left overs
that Li-Xia liked better, I ended
up eating it for another three nights. Today,
I finally managed to finish it. I think I will wait until
the first fresh curly kail becomes available again.
For looking who is standing outside also a spy hole can be
used, and may be prefered above a window in certain curcumstances.
A light outside might also be needed in the evening. The pattern
does not distinguish between a back door (used by members of
the family) and a front door (used by non-family memebers).
Some of the function prescribed to the "entrance room" are
typically those you would find at a back door. In the Netherlands
most houses have an entrance hall that separates the front door
from the living room. In certain old parts of the cities, where
it is not possible to reach the back door from the street, you
can indeed find bikes and such to be placed in this enterance
This pattern sounds very interesting to me, the idea of finding
a job at old age that seemingly integrates with the rest of
your life. But the pattern does not present any clear examples,
so it is not completely clear what kind of work is meant. I find
it hard to image how this could work out for me as software
engineer. I also do not find this much of an architectural
pattern. It is more of a life-style pattern.
Today, I read that the
Clara Wichmann institute want a trial court case about whether
a political party is allowed to exclude woman from becoming active
members of the party. They are looking for a woman who wants to
act as the trial case.
Today, our boss informed us that last Saturday he
from a height of 112 meters (more than 300 feet). Luckily, his feets
were attached to a string of rubber.
This evening, when we had to feed Andy,
we decided to play with "De Tuttels" dolls, while watching a
video about them. This was the first time we were able to feed
Andy some pureed fruit, without having to hold his hands tied.
MFC stands for Microsoft Foundation Classes, a framework
used in many Windows application (except those made by
Microsoft, such as MS Word). Today, I found two
pages explaining why MFC is bad:
and Why MFC Sucks.
I also found a beautiful page
about small application. Small in the sense of byte size, not
in the sense of not having a lot of functionality. Many of these
applications do not make use of MFC.
The rest of the evening, I played with the Sound Frequency Analyzer
Annabel, who is staying with
phoned me early this evening to tell me how she is doing. She told
me that she had seen a rainbow earlier today. She has been staying
with my mother for two weeks now, and is having a good time playing
with all the children in the street. She also went with my mother
to the tennis court and learned to pick-up the balls. All the old
people love her very much. She sounded very happy through the
It had been raining with us almost the whole day. But around half
past eight I saw some sunshine, and when I noticed that it was
still raining, I hope to see a rainbow. And there was indeed one.
I managed to take some pictures of it.
This is an astroid that is maybe going to hit the earth in 2019,
it said on the news. Or at least that is what the BBC reported.
When I looked up the information, I discovered that the chance
is only about 1 out of 163934 based on the observations made so far.
That is much smaller than the chance that I will have died by that
time as result of some disease.
If it would hit the earth, it would do so at a speed of 28 Km/s,
that is 100800 Km/h, a hunderd times faster than a passenger plane.
On inpact it will produce an explosion equivalent to
1200000000000000 Kg of dynamite (TNT). The big question is, what
should we do, if it turns out it will indeed hit the earth. The astroid
only weights 1200000000 Kg. Could we just slightly change its orbit,
such that it would not hit the earth, or should we just evacuate
that part of the earth that is going to be hit. In any case, we
will still have at least 16 years to answer that question.
I already played with the idea of writing a science fiction novel
about this scenario with earlier astroid warnings. An astroid
impact already has been subject of many books and movies, all
being very unrealistic about the true facts, I am afraid. The
real question is, could we as human-kind avoid such a big threat.
Would it make an end to all wars, now we do have a common enemy?
Or will it end in a brutal fight for the fittest? If the chance
would go up to 1 out of 5, I bet that the first thing will be
an economical crisis, probably triggered by a stock market crash.
This morning, we were with Andy in the
hospital for a regular check. He had dropped to the ground near
the paediatricians office as he often does when he has been
walking some distance. Then we asked him to come, and he managed
to stand-up all by himself without holding onto something.
This is the first time we saw him doing this.
A day in Utrecht
We are staying with my mother for a few
days. Today, I went to Utrecht, which is only a short distance by train
from Maarn, a small village about 15 Km from where my mother lives.
I arrived in Utrecht a little after nine. Most shops were
still closed. The bookshop
Broese was open. It is the biggest bookshop in town. I
spend the whole morning in their computer science department
and looked at many books.
I found one book that had a graph in the beginning explaining
the dependencies between the various chapters (about twenty).
This immediately made me think about the number of ways the
book can be read. Actually, this is not so difficult. You
simply have to build another graph, in which each directed
vertex represents a certain state of the chapters you have
read, and in which there are edges between vertices representing
the additional reading of a chapter. The number of ways to
read the book is the number of directed paths between the
vertex representing none of the chapters being read and the
vertex representing all chapters being read.
I was a little disappointed about
Kunth's multi-volume master work
The Art of Computer Programming, because it contains
a lot of low-level algorithms, which seems irrelevant for
current day computer programming. I do not expect to see
fragments of machine code in current day computer science
books. Although the three revised volumes contain a wealth
of information on various algorithms, it seems Knuth has
failed to write a timeless book. Maybe it is because he
took low-level principles as a starting point. I believe
he would have been more successfull if he would have taken
high-level (mathematical) principles as a starting point.
(This is an approach I have been trying to
Agile Software Development Ecosystems
After three hours of looking at many boring books, the only
book I found worth buying was Agile Software Development
Ecosystems by Jim Highsmith. I did have a look at many
of the more "hard-core" computer
science books, such as
the C# and .Net books, but I couldn't find any that was
interesting enough. I did consider buying
as in Freedom about Richard Stallman, but in the end
I found the hard-cover version a little too expensive, also
because the contents of the book is made available on-line.
Of course, I could not stop walking through the bookshop
"De Slegte", as I always do when I have the chance. I have
been playing with the idea of making a virtual reality model
of the shop (using Flash), and thought about taking some pictures
from the interior. But it is forbidden to take pictures inside
shops, and the shop was full with surveliance camera's.
I did take one picture of the canal from the cellar of
the shop, but that does not show anything of the shop.
my cousin Frans,
and I, visited some
far relatives of us.
(Our closest common ancestor is
Johannes born in 1802.)
We looked at some of the places where our ancestors
and relatives lived. We also exchanged some information
about our family histories.
June 2002 |
August 2002 |