Sun Mon Tue Wed Thu Fri Sat
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
|
Street tiling patterns
I becamse interested in tile patterns using rectangle and square tiles with
small sizes, three by two being the largest. Both regular and irregular tiling
patterns. I found the following sites presenting such patterns:
Below an irregular (randomly generated) tiling pattern with two by one and two
by two tiles. The algorithm used for this, is actually quite simple. The
pattern is divided in squares of two by two and each of these squares is
either filled with an H, an H rotated by 90°, or a square at random. The
square is only drawn 10% of the time. Both H shapes 45% of the time. This
means that there are no two by two tiles with the corners at odd values for
both horizontal and vertical position. This means that the placement of the
two by two tiles is not entirely uniform as it may seem. I have not come up
with an algorithm to generate such a tiling.
At 17:50, I bought the book Eindexamencatalogus 2009: Artez Art & Design
Enschede : AKI Jaarboek 08/09, ISBN:9789075522341, for € 3.95
from thrift store Het Goed.
Street tiling patterns
In the past day, I wrote a program for
generating regular tiling patterns. The output of the program has been
embedded in this webpage and can be viewed below. These patterns do not have
places where four tiles (possibly of different sizes) touch in a corner. Also
the tiles are restricted to tiles of one by one, one by two, two by two,
two by three, and three by three. These are not all the possible 'small'
regular tilings.
AlphaGo beats Lee Sedol
I went to the European Go Cultural Center in Amstelveen to attend the meeting
around the first Go game in the match between AlphaGo
and Lee Sedol. The
broadcast of the game started at five in the morning, local time in The
Netherlands, one in the afternoon in South Korea. During the broadcast, I
replayed the moves on a nice go set. The picture on the right is from this
set with the final position. During the analyses afterwards, I understood that
Lee Sedol made some daring (over play) moves as a response to less than
optimal moves by AlphaGo, maybe under the conviction that AlphaGo was not so
strong.
At 11:57, I bought the following books from bookshop Het Martyrium in Amsterdam:
Lee Sedol defeated by AlphaGo
This morning, I watched the third Go game between AlphaGo
an Lee Sedol. After yesterday game, it was already clear that the defeat of the
first game was not an accident and that it seems that AlphaGo is likely a lot
stronger than Lee Sedol. Lee Sedol played much more solid moves during this
game, and AlphaGo made some surprising moves, but some of them turned out to be
quite good. The blog AlphaGo Don't Care by Anders Kierulf gives a good insight in how AlphaGo
plays. AlphaGo displayes a deep understanding (intuition) of the game, not
following sequences of moves that humans have learned to be good, but just
evaluating all possible moves and finding the one that is best to secure a
(possible minimal) win. Human go players have developed a mental vocabular to
understand the game and reason about a certain position, but there is also a
weakness in this, is that they tend to think along the lines of this vocabular.
AlphaGo is (probably) not 'thinking' with such a vocabular. For this reason,
some people say that AlphaGo does is not artificial intelligence. Yet it does
encode knowledge of the game that is rather similar to how humans encode the
knowledge. Many top professional players also heavy rely on their intuition
and not always being able to explain why a certain move is correct. I mostly
followed AlphaGo vs
Lee Sedol 9p, game 3 with Cho Hyeyeon 9p commenting!. Cho Hyeyeon is very
enthousiastic about AlphaGo and sees it as a great tool to improve her
knowledge of the game. (She won two out of eight tournament games she played
against Lee Sedol.) According to The Sadness and Beauty of Watching Google's AI Play Go, Fan Hui, who lost
5-0 from an earlier version of AlphaGo and kept playing the program in the past
months (possibly part of the deal), shares this enthousiasm, as he has seen his
play improve significantly. In the press conference afterwards, several people
praised Lee Sedol's efforts, but he himself excused himself several times and
seemed to have a hard time dealing with the defeat. I still hope he will win at
least one of the remaining game, but I am not very sure he will be able to do
so.
Lee Sedol beats AlphaGo
I got up to watch the fourth Go game between AlphaGo
an Lee Sedol. I felt that both the commentaries on the official stream and
the one of AYA with Kim
Myungwan were mostly focusing on analysing alternatives to moves that were
already played, instead of focusing on possible moves to be played. At one
point Haijin Lee, also known as
Haylee, the current secretary of the International Go Federation, took a seat
behind the computer. While Lee Sedol was taking a long time to think about the
78 move, she suggested the "wedge" move to Kim Myungwan. He first asked with some
surpise: "This one?", and after she confirmed he exclaimed: "O, that is very
creative". They analyzed the various possibilities to take benefit of the move,
but did not see how it could work. Haijin at one time remarked, "It has to
work", indeed because otherwise the game would be a loss. Then with still 6:16
on the clock, Lee Sedol played the proposed "wedge" move at L11. Then Haylee
has to go. Then AlphaGo plays the move that Kim Myungwan just played as a
possible continuation. Soon it is acknowledged that it is a mistake and that
the chances for Lee Sedol have turned. The "wedge" move is later recognized as
the genius move with which Lee Sedol defeats AlphaGo.
Demis Hassabis
tweeted Mistake was on move 79, but #AlphaGo only came to that realisation on around
move 87 and When I say 'thought' and 'realisation' I just mean the output of #AlphaGo
value net. It was around 70% at move 79 and then dived on move 87.
The question remains if there is another move that AlphaGo could have played
to prevent Lee Sedol from winning. If this is not the case, then move 78 is
simply an over play that tricked AlphaGo.
It seems that AlphaGo suffers from the horizon effect, meaning that when it is ahead, it becomes blind for
wining sequence that starts with an unusual move. It is great that Lee Sedol
has won this game, because it shows that humans still have a better
understanding of the game. As I argued yesterday that
relaying on a mental vocabular for reasoning about the game, has some
weaknesses, it might still prove superior when reasoning about very complex
situations like the one encountered in this game. It seems that Lee Sedol took
most time to think about this move. Later on in the game, AlphaGo, played some
bad moves, probably because its winning percentage had dropped.
Addition: Lee Sedol defeats AlphaGo in masterful comeback - Game 4
Book
At 11:07, I bought the book Uitgelicht 3: startstipendia beeldende Kunst
97-98 by Kirsten Algera, ISBN:9789080143173, from thrift store Het Goed for € 1.95.
The following rather obscure, but also kind of fascinating and elegantly
looking, C code checks if a given string is a valid
UTF-8 character sequence. It
relies on short-circut Boolean evaluation and the prefix increment operator. Note
that in C the Boolean 'or' operator has higher precedence than the Boolean
'and' operator. Also note that for a correct UTF-8 string, six tests are
performed to terminate the while loop, where two would be sufficient if a
pair of brackets are added, but that would make the code look less elegant.
bool valid_UTF8(const unsigned char *s)
{
while (0 < *s && *s < 0x80
|| ((*s & 0xe0) == 0xc0
|| ((*s & 0xf0) == 0xe0
|| ((*s & 0xf8) == 0xf0
|| ((*s & 0xfc) == 0xf8
|| (*s & 0xfe) == 0xfc
&& (*(++s) & 0xc0) == 0x80)
&& (*(++s) & 0xc0) == 0x80)
&& (*(++s) & 0xc0) == 0x80)
&& (*(++s) & 0xc0) == 0x80)
&& (*(++s) & 0xc0) == 0x80)
s++;
return *s == '\0';
}
Remark of June 3: It seems this code does not recognize
terminated UTF-8 sequences at the end of the string. Follow-up story
Book
At 10:45, I bought the book Aki 2000 : eindexamens, ISBN:9789075522167,
from thrift store Het Goed for € 1.95.
Our Inner Ape
I finished reading the book Our Inner Ape by
Frans de Waal,
which I started reading on February 28. I bought about five years ago, on
March 1, 2011. I found this a very interesting read
and found it quite insightfull with respect to my own behaviour and emotional
struggles. De Waal remarks that apes (and other animals) exhibit a very similar
social intelligence than humans. The paper What's the Use of Consciousness? How the Stab of Conscience Made Us Really
Conscious by Chris D. Frith and Thomas K. Metzinger argues that consciousness is the result of conscience,
having the ability to regret actions done in the past. If that is true, then it
is likely that some animal species, especially apes, have a similar kind of
consciousness as us.
Book
At 17:48, I bought the book Gödel, Escher, Bach: An Eternal Golden Braid by Douglas R.
Hofstadter, ISBN:9780394745022, from thrift store
Het Goed for € 3.75. On Saturday,
May 24, 2008, I already had bought the Dutch translation of this book.
Science and reporting
It is always interesting how science papers are reported in popular science.
Today, I found the report Caught For The First Time: The Early Flash Of An Exploding Star,
which shows a nice graph and a video animation. However, after looking at the graph,
I read that Kepler makes a measurement every 30 minutes, while the graph seems
to suggest that measurement was taken every minute. I searched the article to
see if they had changed the measurement interval for this star, but could not
find any. Next I found a link to the scientific paper Shock Breakout and Early Light Curves of Type II-P Supernovae Observed
with Kepler. When I opened it, it affirms the fact that measurements
were only taken every 30 minutes. Figure 4 focusses on the breakout event.
One has to zoom in quite a bit to see the blue dots that represent the actual
measurements. Not a stable line at all, but a lot of noise. Only when looking
at the three and half hour average, one sees that the graph has a slight jump
before it started to rise steadily. Here on the top right I have put the graph
of the blue dots side by side with the 'nice' graph, from which I can only
conclude that the 'nice' graph is just fabricated based on the assumption that
the bump in graph shown in Figure 4 is actually the result of breakout event,
which does seem likely. Furthermore, the video animation suggest another event,
before the very bright flash, that is being suggested in the paper, but where the
authors affirm there is no conclusive evidence. Although the supernova event
of KSN2011d follows the predicted model, the supernova event at KSN2011a
does not, because it rises more steap than expected. The authors give some
suggestion how this can be explained.
Simple repository build on file sharing service
I got some ideas about how to implement a simple repository on top of a file sharing service. Usually, I file sharing service only supports
synchronization of files amongh locations, with the only guarantee that the
files are shared without corruption. There is usually no mechanism to
exclusively lock a file and most services are time-stamp based, meaning that
the version of the file with the latest time-stamp overwrites earlier versions.
This means that if two users at different locations save a new version of a
file to a shared file location, the version with the latest time-stamp will
overwrite the earlier changes applied by the user who saved with the earlier
time-stamp. Usually cases of changes being overwritten are difficult to detect.
One way to prevent data to be overwritten is taking sure that only new files
are created. Because file sharing services usually also have no mechanism to
'claim' unique names for files, one needs to implement a scheme for generating
unique files. One simple solution is to include a GUID in the name of the file. One could also use a hash function (such as
SHA-1) over the contents of
the file to generate a unique name, with the added bonus of defense against
possible data corruption introduced by the file sharing service. To allow
cooperation, we assume that the data representing the repository is stored in
separate files and that social protocols are used to avoid people working on
the same file. If the application has the added ability to merge two parallel
versions, then there is no problem. (I argued before that merging is a complex process.) At least each file needs to
have a reference to an earlier version, assuming there is one. Maybe it is
beter to include the whole history of previous versions and in case the version
is the result of a merge, to include both versions. We assume that each file
contains a key-value
store, and that the values can contain arbitrary complex structure with
references to other keys. There are two type of such references, namely to keys
in the file and keys stored in some other file. The second kind of references
need to contain the name of the file. For efficiency reasons, it can be smart
to have a table of files that are being referenced at the start of the file.
They keys only need to be unique per version of the file. There also needs to
be a mapping between the keys in the current version of the file and the
earlier version. In case the key has not changed, it can be ommitted. In case
the version is a merge between two versions, two keys may be needed, in case
key-value pairs were merged. In case a file has references to another file and
a new version of that file become available, then the version need to be
updated with a process where the keys are replaced with keys to the new
version. I described this form of 'updating' before. Note that in case there are two path along which the versions of a
file can be reached (through nested references in files), it is possible that
the file contains references to different versions of the key-value pairs. This
is known as diamond problem. The application
using such a repository needs to scan the available files on regular intervals,
either controlled by the user of by some kind of timer mechanism, to discover
newer versions of the files and to establish if the files are consistent.
Each consistent combination of files, represents a state of the repository.
Note that due to the implementation delay in the synchronisation, it is
possible that states of the repository appear in different order in each
location. Note that there is a cycle problem when two files contain references
to each other, because each reference is always to a version of a file. In
case a hash is used, there is no way to avoid it. To resolve this problem,
each version of the file could also use a GUID at the start, which is used as
the version identification for a version of a file. In that case it is possible
to implement a procedure that writes files included in cycles, such that all
references are to the latest version of the files.
Magnolia
I found a pair of open flowers on our magnolia tree
in the backgarden of our house. They met with some stormy weather and rain.
The picture on the top right was taken slightly from above.
I visited the TETEM art space. I first looked
at the exhibition Sellfable City: Circuit
Circus, but I was not very impressed. Next I looked at a part of the video
Amerikan Teenager: Earthworm Jim by Sebastian Schlicher. Typical
stream of consciousness, but rather clever. Next, I lookwd at the
exhibition Drawing Front: Teach me
a new language. I was impressed by the works
Impulse I and
Achy breaky heart by Henrik Kröner.
At 16:56, I bought the magazine N°B Magazine: featuring Bernhard
Willhelm, the issue of February 2002, with Gerdi Esch as editor and
with contributions by Bernhard
Willhelm for € 0.95 from charity
shop Het Goed. The original price was € 9.50, but I on Cult Jones
it is offered for sale for € 175.00.
On the way home, some hail fell from the sky, when the sun started to shine,
I took this picture, where it seems that the hail is lit by the sun through
a hole in the clouds. There would have been a
rainbow if the hail would have been rain.
This months interesting links
Home
| February 2016
| April 2016
| Random memories