This morning, Annabel and I
brought the car to the garage for
repair. From the garage we walked to the city, and
looked around a little bit. Then we went home with the
bus. When we arrived at home, we saw that our little
chestnut tree in the
front garden was
broken off. We also found the broken
top. Apparently, some child from the neighbourhood
broke it off. I asked around a little, but nobody had
knew anyhting about it.
Later we put the top in a small bottle with some water.
The droopy leaves turned strong again. Maybe it starts
growing a root again, and then we can plant it again.
Maybe the part that is left in the garden, will start
growing again. Then we have two chestnut trees. I am
thinking of putting them in a large pot in the back
garden, and only put them in the front garden when they
have become to tall to be considered just as some weed.
The new Quark Xpress file caused for some new constructs, most
of them are rather minor. But one thing has been causing me
a lot of trouble. It appears that some box records are
followed by an additional 12 bytes of data. I have not been
able to find an easy way to determine when this data is present
and when not. I found some way to parse the whole file, but
I am not very happy with how I solved it, because it is not
a very generic solution. This solution is likely not to work
with yet another file. And that bothers me a lot.
Yesterday, I finally was able to parse the right document.
Then I could compare the page layout with the boxes. This
revealed a lot of interesting information. I also
discovered that there is a rather simple relationship
between the boxes and the text fragments. In each box
there is a text identifier. Everytime when there
is a new text identifier, the next text fragment should
be assigned this text identifier. Whenever a box uses
a text identifier that has been used before, the text
with that identifier should be used. Whenever a text
is used in more than one box, an offset is given that
specifies from which character the text starts in that
box. I also discovered some other things, and I figured
out a way how I could dump all the boxes with their
texts page by page. One of the small things I discovered
was that the only unknown element that had not understand
for the data representing all text, appeared to be length
of the text fragement.
Until now, the program only has been reading and dumping
contents. To be able to do dump all necessary information
per page, I will have to change the program such that all data
is stored. Today, I spend most of the time rewritting the
program. I did spend some time figuring out a flexable way
of printing out the data. Finally, I discovered that the
best way to do it in C is to use an iterator, instead of
using a strategy. First, I was thinking about using a
strategy pattern where the printing was done in the
strategy. But this requiers that you create an object
for the printing strategy, which you pass to the function
traversing the text with its formating. This solution
appeared not to be so elegant in C. In C++ it would be
easier. Next, I looked to the iterator pattern, where
you create an iterator for the text with its formating,
which will return information per character. Its appeared
to be the right choice here. Apparently, not all patterns
are as easy to implement in C then that they are in C++.
It seems that for the strategy pattern you will at least
need an abstract class, whereas this is not needed with
the iterator solution.
Normally, we celebrate our birthday on the day and
month as when we were born. However, an astromical
year consists of 365 days, 5 hours, 48 minutes, and
46 seconds. Because this is not exactly a whole
number of years, we need some leap day to compensate
this every 4 years. But because the year is not
exactly 365 days and 6 hours, the leap years compensate
a little too much. That is why every 100 years we do
not have a leap day, except when it is a multiple of
400, like we had on February 29,
2000.
If we would celebrate our astronomical birthday, defined
as the day that become a multiple of 365 days, 5 hours,
48 minutes, and 46 seconds, then our
birthday would be on different dates.
Some of us might even have to celebrate their
astronomical birthday twice in the same year (which must
be a leap year). And because the year 2000 was a leap
year, the date of our astromical birthday is likely too
be more early every year that we get older. By celebrating
our birthday on the same day and month every year, we
tend to celebrate our birthday more and more often too
late.
Once every two weeks, Andy also goes to the special
daycare center on Saturdays. This is a special service
from them, so that you have some time off. We enlisted
Andy, also because he likes it there so much. He also
likes to ride the taxi minibus. During week days Andy is
the first one that they get in the morning. On Saturday
there are always some other children in the minibus.
One of them is Mette, who always shouts "Any" when she
sees Andy. They used to be in the same group for some
time. When we told Andy about this morning, he reacted
very enthousiastic. When I asked if Mette was his
girl friend, he said "yes". We had to laugh about this,
but it also made us happy to see that he is interacting
with some other childeren of his age, something that he
has not been doing much so far.
In the past days, I continued on verifying the hypothesis that
the text fragments are used in the order as they are used
in the box records. I did have some considerable problems
with indentifying which box records used a text and which
not. But once I had established this, it indeed appeared to
be correct. It appeared that the box records that have the
additional 12 bytes of data are empty boxes, which do not
use up any text fragment. The problem is that I haven't
found the mechanism yet for predicting when the 12 bytes
of extra data appear and when not. So I am back to the
problem that I stumbled on on the first of this
month, and I also fear that the way-around solution that
I have come up with, is not a very generic solution. I have
no where seen any look-ahead constructions in the way the
data is stored, which means that there must be a deterministic
method of determining when the extra 12 bytes appear and when
not.
This morning, we took Andy to the
hospital for is half year check up. He weights 12 Kilo now
and is 92.5 cm tall. Both his weight and length are far
below the 3 percentile line now, but relative to his length,
his weight is above the 10 percentile line, which is okay.
We had noted some bumps on his back lately. The doctor
concluded that these are dimple warts (mollusca Contagiosa),
a harmless virus infection that will heal by it self. It
lasts between six months and two years.
Afterwards we brought him to the day care center where he
is going, and we saw the other children in his group. It
surprised me that although all of these children are
handicapped, everything goes very in an orderly manner.
This evening, I attended a lecture by Tom Gilb about Evolutionary
Result Delivery (EVO) organized by CMG
as part of their Guru4Pro program. It was preceded by a free dinner,
which in itself was enough reason to attend the meeting.
The lecture started at 6 o'clock and lasted till a little after 10,
with two 10 minute and one half hour break
It was only around half past eleven that he left the building. All
the time Tom ("Call me Tom, otherwise I feel as old as I am")
has been talking. His energy and enthousiasm seems to be without
limit.
After the half hour break, their was an opportunity to ask questions.
Because until now, I had felt that everything what he told seems to
be very much like eXtreme Programming (XP), I
dared to bear the brunt to ask a question about it. I received, what
I later understood to be his standard reply, that XP was based on the
same principles as EVO but had gone its own way. Tom furthermore
said something like that XP is used by hackers to justify their way of
working.
He also made some statements about pair programming. He had asked
Kent Beck about some quantitative measurements about pairing. He said
that Kent Beck had replied him that he did not need any quantitative
measurements, because for him it worked. (I can perfectly imagine
Kent Beck stating something like this. If you have experienced that
something works for you, you indeed do not need a proof that it does
work.)
Tom also told that he had contacted the person from whom Kent Beck
got the idea of pair programming, and asked him if he was still
doing it. The answer was that the managers had forbidden it. This might
suggest that managers think that their are no benefits for pair
programming.
I replied that some research has been done with respect to the benefits of
pair programming.
After the meeting, I asked Tom about his definition of a hacker.
He said something like that a hacker is a person who enjoys programming
for the programming, and is not focused on generating business value.
This is not exactly the definition of a hacker
as it is commonly understood by hackers. Yes, indeed a hacker is
someone interested in playing with computers and getting to know all
the details of a system and solving things in a smart way. But that
does not mean that hackers could not be focused on generating business
value as well. Furthermore, I think that the planning game is very
much focussed on generating business values. Also XP has the principle
to do the simplest thing possible. So, even if you are a hacker by
nature, when using XP, you are forced to only do those things which will
generate business value for the customer and nothing more.
Of course, there is a difference between how "business value" is
defined in EVO and XP. EVO uses so called Quality Dimensions which
act as a goal you are aiming at. With XP the customer has to assign
points to each requirement (called "user story"). Thus within XP the
final goal is not made explicit. However, the question is whether these
different methods of defining "business value" do differ in the end.
Especially for the type of projects that XP is intended for, it might
be the case that the way XP does it, is the most pragmatic way to
implement EVO style of working, or maybe even better because EVO
requires you to do a lot of work with defining your Quality Dimensions,
measuring them accurately, and doing all the required book keeping.
Of course, there are many kinds of project, both large and small, for
which EVO is much better suited than XP.
So, I think that Tom Gilb is not right when he is saying that XP
is only a means for hackers to justify their way of working. I find
it a pity that he is connecting XP with a word that has a negative
connontation with the general public, while XP is in reality applying
all those key principles that lies behing EVO within a certain limited
context, and doing this in a very succesful way. But anyway these
kind of statements are typical for Guru's. It would be interesting
to ask Kent Beck what he thinks about EVO.
When I talked some more, I also discovered that his opinion about
XP is not as strong as I though it was. He also asked me to keep him
informed about the developments with respect to XP. I promised to
give him the figures about pair programming. When saying goodbye,
I thanked him for having met him and the time we spend together
talking with each other and others. I am happy having met him,
even without getting his autograph in his book
Principles of Software Engineering
Management, which was handed out for free after the lecture.
Andy often loses his shoes because the shoelaces are rather
slippery and thus get loose very easily. This evening, we
could not find one of his shoes any more. As a last resort
we asked him if he knew where it was. He pointed to the hall,
and indeed there was his shoe. Looks like he remembers these
kind of things rather good.
In the past days, I continued on verifying the hypothesis that
the text fragments are used in the order as they are used
in the box records. I did have some considerable problems
with indentifying which box records used a text and which
not. But once I had established this, it indeed appeared to
be correct. It appeared that the box records that have the
additional 12 bytes of data are empty boxes, which do not
use up any text fragment. The problem is that I haven't
found the mechanism yet for predicting when the 12 bytes
of extra data appear and when not. So I am back to the
problem that I stumbled on on the first of this
month, and I also fear that the way-around solution that
I have come up with, is not a very generic solution. I have
no where seen any look-ahead constructions in the way the
data is stored, which means that there must be a deterministic
method of determining when the extra 12 bytes appear and when
not.
Yesterday evening, I got very depressed about this. Tonight,
I decided to analyse the first part of the binary data to
find out more about the character and paragraph formatting.
This proofed to be rather succesfull.
I read some articles about pair programming
because Tom Gilb asked me some questions
about the effectiveness of pair programming.
In the paper "The Costs and Benefits of Pair Programming"
by Alistair Cockburn and
Lauri Williams it says "Significantly, the resulting
code has about 15% fewer defects". If I look at the
accompaning graphs, I see that the number of post development
test cases that passed went up from about 75% to 90%.
This means that the number of passed test cases went up
with 15% in the scale, which is an relative increasement of
20%. However the number of failed test cases went down
from 25% to 10%. That means that the number of defects
went down to 40%. It thus has 60% less defects, not 15% as
mentioned in the article.
Popular saying you could conclude that pair programming
produces more than twice as much quality in only 15%
more time. Or taking the 15% in account, the quality
produced by pair programming is about twice as much.
This afternoon, Annabel and I attended
the wedding of Paul and
Elisabeth, two people from our church. I already know
Elisabeth for a long time. About ten years ago, I often
visited her family.
Today, I went to a day organized by the
V.O.K.C.V.S, which was
held at the 'Winckelsteegh'. At the 'Winckelsteegh'
is the only eating therapy group for children with a
(suspected) development delay in the Netherlands. Today,
they had the official opening of their new unit. It was
very interesting to hear how they are able to get children
who are fed by means of a tube to eat again from a spoon.
There success rate is rather high. They already having
this therapy for more than ten years, and because of
this have build up a lot of expertise in this area.
Because Andy also has a
development delay, he could go there. But because
the Winckelsteegh is in Nijmegen about one and half
hour driving (if there are no traffic jams) it means
that Andy would have to stay there during the week and
only stay with us during the weekends.
Today, the date and place of the wedding between
Alexander and Máxima
was announced. It will be in Amsterdam on February 2, next year.
A date never to forget indeed: 02-02-02, the next
nice date. Because
there was a choice between Amsterdam (our capital) and
The Hague (the city where our government is), the major
of Amsterdam was very happy to announce that the wedding
was in Amsterdam. He also hoped that he would given the
right to marry them before the law. A interesting detail is
that he also married the first four homo couples on
April 1.
Last Saturday, the brother of Alexander got married
(before the church) with the daughter of the minister of
argriculture. (The already got married before the law
two days before.) During this event Alexander read some
scripture from the bible. If I am not mistaken, it
was
John 15:9,10. I wish he would fully understand
what that scripture part means, and that he would apply
it in his personal life. The Royal family belongs to one of
the mainstream protestant churches in the Netherlands,
and the prince himself has said that he is a believer
in some interview. In what he did not explain.
Máxima is Roman Catholic, and it is not clear
so far whether she will remain Roman Catholic or become
protestant. Some say that because she already made so
many sacrifices to be able to marry Alexander she might
remain Roman Catholic. It is my prayer that the two of
them will investigate the religion they received from
their parents, and find true faith in
Christ Jesus
when thining and talking about the differences.
Yesterday evening, I worked hard to combine all the data
from the frames and the texts into a single output format
using some XML-like style of storing the data. In the output
the text is presented per page and according to the frame
layout. Everything looked fine, excepts at the last page
some texts were mingled up.
Tonight, I decided to investigate this problem. I quickly
found the cause. The hypothesis was that the texts were
used by the frame in the same order as they are needed. In
the frames the texts are given some kind of identifier. I
already had noticed that these were in increasing order. But
for the last page this was not the case. Apparently, you
have to collect all the identifiers used for texts, sort
them, and then assign them to the texts as they occur in
the file. As this is a rather complicated way of doing
things, it makes me suspect that the identifier is somehow
associated with the text in a different manner. Such a
mechanism could also tell when a frame has no text, another
problem that I haven't solved yet. So the hypothesis is that
the there is a mechanism for associating identifiers with
texts. The rest of the evening, I have been searching for
such a mechanism, but to no prevail. I am getting the strange
feeling that it is hidden in a place where I haven't looked
yet.
Soccer has never interested me, maybe because I am a
nerd. As a young boy I never understood what was so
interesting about running behind a ball and kicking it
further everytime when you got at it.
Yesterday evening, the soccer club of Enschede
'F.C. Twente' won the Amstel bowl. Today, this was
celebrated. This was the first after the fireworks disaster the our city did have a reason
to celebrate something, and the victory was celebrated.
We did not join the celebration but by accident we saw
the open coach carrying the team from the townhall to
the soccer stadium where a celebration was held. We also
saw a glimps of them carrying the bowl.
We are looking for new faces for TV & Movie
productions. All ages and looks. All countries.
When I thought about this, I really felt this was a
rather sick spam messages, as one of the most typical
feature of the Kabuki Syndrome is certain facial
abnormalities. Not all people with the syndrome have it
so strong, but there are some in which it is unmistakeble.
I cannot imagine that Roger McKenssy, the sender, send
this message on purpose to this email address, but
nevertheless, it shows how sick spamming can be.
Yesterday, Li-Xia asked
Andy: "Whoes mother am I?"
And as a reply, he started pointing at himself, and
pronounced his name.
This morning, when I woke him up, I tried out the
same question. And also to me he gave the same
response.
Last week, a colleague wanted to make a CD-Rom label with some
small application. For this he had to define a rectangle on the
label layout. Trying out different places for the rectangle,
he disovered that the area also changes in a non-linear way.
The question is how to place the rectangle, such that the
area is maximal.
To find this answer, we define the radius of the outer circle
as one, and of the inner circle as equal to r.
Lets assume we put the rectangle exactly in the middle of the
top half of the label layout.
The bottom of the rectangle now touches the inner circle at
the point (0, r), and the upper corners touch the
outer circle on the points (-x, y) and
(x, y).
Of course, x2 + y2 = 1.
The area of the rectangle is then equal 2x(y - r).
Now we need to optimize the value of x such that the
area is maximal. One way yo do this is to express y in
terms of x and determine the zero points in the first
derivate of the expression of the area. But this is not the
most clever way to do it.
For x and y we substitute sin(alpha) and
cos(alpha). The area is now equal to twice
sin(alpha)(cos(alpha) - r).
The first derivate of this expression is:
-sin2(alpha) + cos2(alpha) - r.cos(alpha)
Using sin2(alpha) + cos2(alpha) = 1, we
can rewrite this into:
2cos2(alpha) - r.cos(alpha) - 1
Which can be rewritten as x2 - r.x - 1.
This is a simple second order polynomial. From this we can find that
the optimal value of x for a given value of r is
equal to (r + sqrt(r2 + 8))/4.
The expression for the the maximal area for a given r is left
as an exercise to the reader.
For the particular label r is about 0.36. This results in an
x value of about 0.803 and an
y value of about 0.596. This
gives a surface of about 0.1897. The outer
diameter of the label is 11.4 cm. The real maximal surface is
thus about 6.163 cm2.
Today, I read that some questionair had revealed that about
46% of the Dutch have nothing against making the a suicide
pill available for old people who are tired of living.
15% of the people feel that the pill should be available
without constraints. The questionair also revealed that under
people older than sixty there are much more people against makeing
it available.
Today, Annabel has a school
trip to a place called
'De spelerij'
in a city called Dieren. When we drove from Enschede
to Almelo, the sky became darker and darker. Close
to Almelo, I saw a light flash in a cloud, and when
we came close to her school it started pouring rain.
Within minutes the streets were flooded with water. I gave
her an umbrella when I dropped her before the school.
And then to think that in the past weeks we had very
sunny weather with high temperatures.
This afternoon, after Andy had come
home and while he was sitting in the living room, he called
out "Mamma", the Dutch for mommy, because he needed help. This
was the very first time that he called someone in this way.
Of course, Li-Xia got a very
warm feeling inside when she hear Andy calling her.
Green electicity
The term "green electricity" is used to denote electricity
that is generated by means of environmental friendly methods.
Earlier this week we received some
offer to start using green electricity instead of the normal
electricity. Because I had already considered about starting to
us it, I was quite open to this offer. In this offer they
explained that it is not really more expensive, because you
do not have to pay the eco-tax that you pay for the normal
kind of electricity. What made the offer extra attractive is
that they a half year subscription to the Dutch edition of the
National Geographic for free. We decided to accept the offer.
This evening, I saw a news item about a nearby city that
had been labelled as the first "green electricity" city
because most of the people used green electricity. When
they told that from the first of the next month that you
were free to get the "green electricity" from any of the
electricity companies in the Netherlands, I suddenly understood
the reason behind the nice offer. But when one of the
directors of our electricity company remarked that they
were going to make big money from the "green electricity"
I felt like being tricked into somethings. Appearently,
the electricity companies can make a lot of money from
the green electricity more than from the normal electricity
probably because they can sell it a higher price, because
the people don't have to pay the eco-tax.
In the same news item some expert said that the Dutch
electricity had actually not become cleaner although more
people use green electricity. The reason behind this is that
the Dutch electricity companies are now buying more electricity
from abroad, which is cheaper. The reason why it is cheaper
is that in the countries arround us the environmental constraints
for producing electricity are less strict then in the Netherlands.
So, at one hand the electricity companies have made investments
to produce green electricity, but they have financed this
with buying cheap and dirtier electricity from elsewhere.
It looks like the government is indirectly giving money
to the electricity companies by putting eco-tax on the
normal electricity. At the moment the government is also
in the process of making the electricity companies private,
with the idea that competition will lower the prices for
electricity. The first step in this process is allowing
people to decide for themselves from whom they buy their
green electricity. The funny thing is that in the past
months there have been several commercials from electricity
companies trying to associate a warm feeling with their
company, as if electricity is something with a feeling,
while they really have no service to offer yet. How
smart they are.