Monday notes from 3 August 2020

I'm back in my home county of Somerset now, with the waving goodbye and the big journey south having taken place at the end of last week. I had spent just over three weeks in Ilkley, the longest I had ever spent there by quite a while. The visit didn't feel like a visit as such, more that I was temporarily living in their house. It was all pretty relaxed and harmonious really!

A few memories stand out:

The much-touted Ultraviolet Parade never came to pass, but before we know it autumn will be upon us, and the garden will host glowing dinosaurs and real stargazing.

Quantified self. With all the good food has come quite a lot of weight gain! I'm not overweight just yet, but the time has come to put on the brakes with more health data logging — the only approach that I've found to work. I know that MyFitnessPal is very popular for this, but I got annoyed with the advertising and the way it slowed down my old mobile phone made logging a chore. I'm now trying out Cronometer. It has the same bias towards American brands that MyFitnessPal has, but seems to be faster, even if I have to occasionally add foods to its database.

This provides one statistic of many that I have been comprehensively logging since around November last year. On Friday I thought it would be fun to code up a small website which presents the 14-day average of some of these statistics along with a simple 90-day plot. I didn't want it to be too complicated so, to enforce this, I decided to try to fit each report on a simulated 128×32 LCD panel. I wrote a little font/graph-plotting library to make this happen, and you too can now keep tabs on my weight and the calories that contribute to it, with more to come soon.

Go. In go news, I spent some time implementing Paton's algorithm for finding cycles in undirected graphs. This is partly how I'm detecting surroundedness in my program, in which the graph we're considering reflects the adjacency of groups and the edge of the board. Paton's method finds the fundmental cycles — the smaller, simpler cycles from which larger ones can be constructed. There's quite a neat method for doing this. If the edges of two simple cycles which overlap are bits in a bitset, XORing them will yield a larger cycle. By applying this, it's possible to find all cycles that groups form on the go board. Combined with careful application of Benson's algorithm, I hope to have an efficient and accurate test of territory, as well as a faster and less accurate heuristic for considering potential positions and branches.

In other news, Horiki Mori's Interactive Way to Go is an online classic. It leads the absolute beginner from knowing nothing ('50 kyu'), and leads them into beginner level (30 kyu) through very clear explanations of the basic concepts. Such is its popularity, it is available in 37 languages. The English one relies on the deprecated Adobe Flash, though some of the translations use Java, and there's an English Java version, too. However, this week, I came across a great more modern JavaScript version hosted by the American Go Assocation. I encourage anyone reading this to devote half an hour to the tutorial and see if they like the game, and if so, to challenge me to a 9×9 game.

And finally, Real Life. The prospect of moving house looms ever nearer, and I'm now very much getting ready for this — moving my things into storage and looking for somewhere new. This is very tedious, but getting it over with this week should be quite a relief. I can then get back to more abstract pursuits.