29 June 2020

Most of last week was baking hot, but we managed to get most of the member of my support bubble out for a short walk in Holford Combe. I say 'walk', but really the children just wanted to build dams out of stones around a shady spot between some streams of the River Holford.

[Go] My study of the game of go continues. I tend to spend a short time each day reading a bit more of Cho Chikun's book. The Iwamoto book came and I've begun to read through it and make notes. It looks very good, clearly written and maybe a bit more logical and 'mathematical' in its approach. Each concept is described in usually at most a couple of short paragraphs with accompanying examples. I'm alternating between it and Chikun's book. I've started making scrappy notes on this website, but I enthusiastically refer the reader to Sensei's Library for much better discussion of pretty much any concept or topic.

Alongside, I'm playing my first 19×19 game — a little disorienting at first but so far studying general opening principles has helped somewhat. When I played chess online — I still am occasionally — I used to try to study openings, sometimes via an explorer. In go, the term fuseki (布石(ふせき)) refers to the whole board opening. When playing go openings, moves are usually not forced and are more isolated and independent than in chess, so the start of the game doesn't really go down a comparable path. But there are opening explorers. So far I've been looking at Walteri's go pattern search, based on a database of existing games, and Josekipedia, which associates specific board positions with commentary, often quoted from books. OGS has something similar.

[Haskell] Last week I was disappointed with my lack of attention to my Haskell development and resolved that a small amount of Haskell each day would be a good plan. In his foreword to the 1996 book A=B, Donald Knuth wrote:

Science is what we understand well enough to explain to a computer. Art is everything else we do.

While it'd be interesting to try to refute this, especially in light of what it means to make art with a computer, I think one of the general sentiments hold — if you can explain something to a computer, you have a reasonable systematic understanding of (an aspect of) it. And although certainly visual art has been used to describe systematic aspects of go, as well as the sportsmanship aspects of playing, coding is my favourite craft.

Therefore, before doing any more on the version space learner implementation, I wanted to try to make something in Haskell about go. I decided I'd like to make a simple move explorer that recognises valid and invalid moves, their effects, and provides basic commentary on what is happening in terms of basic instincts of a beginner. For example, for a given board position, it might display a potential single move from that position with the commentary 'White extends to avoid atari'. This is limited in scope, an interesting application, and has the potential to reveal algebraic structure. It's also a good general challenge at my level — including the implementation of Benson's Algorithm, which defines unconditional life of a group.

So far the program can determine whether a move is legal, recognise groups and their liberties and plot the state of the game using my diagramming software. In time perhaps I can extend it to recognise the formation of eyes, tesuji and zokusuji, or write heuristics to show the most interesting moves, whether inspired or blunders. But for now this feels like a good way to cement my understanding while furthering two personal goals.

[Beekeeping] Finally, I was called out to investigate a swarm at in my cousin's garden on Saturday. It turned out to be a small colony of chilled-out red-tailed bumblebees.