SmartGo One for Mac

I released SmartGo One for iPad and iPhone a bit more than a year ago, and thought the Mac version would be at most a few months behind. However, it proved to be more difficult than expected, and Mac Catalyst didn’t make it quite as easy as advertised. And I got distracted by bug fixes, localizations, and tons of improvements in the iOS version. (As well as designing a passive house.)

Anyway, the Mac version is now available. Like the iOS version, it’s a free download. All your in-app purchases from iOS should automatically show up and work on the Mac: books, problem collections, as well as your Pro subscription. Files in iCloud Drive are now shared between all your devices. And your progress in solving problems that synced between iPhone and iPad now also syncs to your Mac.

There are a few differences to the iOS version:

Menu items: Menus make it easier to add more functionality, and a few extra functions are available. For example, under Edit > Delete Nodes you’ll find the following submenu:

Delete All Variations and Delete Rest of Game are not currently available on iOS. Insert Node also offers more options. I’m looking for ways to make the same features available across all devices without overloading the UI.

On My Mac: File access on iOS is restricted to a specific folder reserved for the app. On the Mac, you can access other folders, once you allow access. There’s a new button next to On My Mac (see image below) that lets you select a folder with your go files. You can then directly access and work with files in that whole folder and any subfolders.

Title bar: To leave more space for the content, I’ve removed the navigation bar from the game view and moved some functions to the title bar (Game Info, Share, Settings). I’ve also added controls for switching between the areas of the app (My Files, Pro Games, Players, Problems, and Books) to the title bar (see image above). I found that having direct access there worked better than using the sidebar. (The sidebar is still available if you prefer to use it.)

Multiple windows and tabs: You can open multiple windows, each with multiple tabs. The Window menu has standard commands like Merge All Windows and Move Tab to New Window.

I’m excited that new features and bug fixes can now apply to all platforms: iPhone, iPad, and Mac. As always, please let me know what you’re missing in SmartGo One, or any issues you run into.

Economics of Go Books

Nobody gets rich by writing or selling books about go.

I recently had a 3-day sale where all the books at were 20% off. It was the first sale in the twelve years of Go Books. Integrating with the newest Stripe API made such a sale possible, as well as making sure authors and publishers would be paid based on the regular price – no need to coordinate with all of them, and no complications to the already complicated royalty calculations.

It was a great success – web sales were about 25x of normal during that period. The new Stripe integration held up. I found some issues, e.g. the data I’m collecting is no longer helping me automatically identify refunds, and exporting the Stripe purchases doesn’t currently include the coupon used.

Some numbers: In total, you all spent about $3,500 on a bit over 400 books during that sale – thank you! Almost $2,200 of that will be paid as royalty to authors and publishers. Stripe took about $230 (2.9% + $0.30 comes to almost 7% for these small transactions). Taxes of €54 will be going to the European Union. That leaves just over $1,000 for Smart Go. Yeah!

So clearly there was pent-up demand for a sale – I had no idea. What’s less clear is how this will affect the future: How many purchases were just pulled forward and would have happened anyway? Are readers now going to wait for the next sale (which won’t happen for a while) before buying any more books? And many of you will simply be very busy reading go books for a long time.

So what will Smart Go, Inc. do with that $1,000? Conversion of printed go books to digital is a human-intensive operation. Having electronic copies of the diagrams and text helps; for older books, those have to be re-created. Each inline diagram is lovingly created by hand. That big next book coming out soon? Conversion to Go Books format has cost me more than $3,000 so far.

As I said, nobody is getting rich by writing or selling books about go.

Go Books Sale

Not much progress on the Mac version of SmartGo One these last few weeks, thanks to the European Union. The EU now requires sales tax on go book sales, so I had to upgrade the integration of the backend with Stripe. Stripe’s newest checkout page handles collection of the appropriate taxes; I still get to do the fun part of submitting them. At least the EU lets you pay to a single country (I chose Ireland, so the forms are all in English), and they distribute from there.

So I’ve been working with PHP, MySQL, and webhooks, not my favorite activity, nor my area of expertise. At least I didn’t ship the bug where it sent you a free copy of SmartGo for Windows with every book purchase – I found that one before it went into production. Everything now seems to work well, but who knows what I messed up. Definitely needs more real-world testing.

The new checkout page not only deals with taxes, but also allows other payment options, like Apple Pay. And discounts now work. So to encourage you to buy those books you’ve long had your eye on, use coupon MINUS20 for 20% off any books at (also works for SmartGo for Windows).

This 20% discount is valid through Monday March 6. It’s the first discount in the 12 years of Go Books, so please grab this opportunity. (Note that royalties to authors and publishers are always based on the regular price, so they get their full payment.)

More improvements to (e.g. a shopping cart so you can buy multiple books at once, or complete a series) will have to wait for next year. Back to working on SmartGo One for the Mac.

KataGo and ChatGPT Failures

AlphaGo was an amazing breakthrough and very impressive in its ability to win against professional go players. It was really surprising that evaluating a go position using neural nets and machine learning would work as well as it did. And yet it kept beating professionals.

But now, some cracks are showing. In their excellent paper “Adversarial Policies Beat Superhuman Go AIs” (, Tony Wang, Adam Gleave, et al. are using an adversarial approach to figure out techniques that work against KataGo. And indeed: after a few tries, I managed to kill a huge group and win, and KataGo did not see it coming until too late. It doesn’t realize that its circular group that surrounds a dead group with a large eye needs enough outside liberties to actually remove that dead group.

Katago losing
KataGo doesn’t realize the dead white group has more liberties than the surrounding black group

This technique takes advantage of KataGo (1) not knowing enough about liberties and (2) not knowing enough about the topology of blocks on the go board. When training its model, there are special inputs only for 1, 2, or 3 liberties. There’s also no explicit concept of adjacent blocks; the neural net has to learn that concept from the board position. And the way the neural net is trained, it doesn’t create good enough abstractions for those concepts. In normal games, this is sufficient to play better than any human, but in corner cases, it falls apart.

I would argue that blocks of stones, liberty counts, and race to capture are an essential part of the underlying model you need when playing go (see e.g. Richard Hunter’s book “Counting Liberties and Winning Capturing Races”). And machine learning (at least the way we’re doing it now) is not a great way to build that model. You’ll end up with gaps of knowledge and approximations that will fall down at critical points.

Against that background, the failures of ChatGPT make more sense. Machine learning didn’t build a model of the world, it just learned to put words together in a way that seems to make sense. Often impressive, but a lot of recent examples demonstrate that it doesn’t actually understand what’s going on.

And machine learning for self-driving cars is also based on lots of inputs, but only a very limited model of the world. Like KataGo, it will fail in corner cases. And that’s scary.

SmartGo Too Strong

SmartGo One incorporates KataGo, a really strong go engine. For most players, it’s too strong. While you can increase handicap until you manage to win, getting beaten mercilessly is not that enjoyable.

Smartgo computer levels

The newest version tries to make playing against the computer more interesting. When you start a new game, you can choose between five different levels, from ‘SmartGo++’ (full strength, playing as well as it can) to ‘SmartGo—’ (making more mistakes and even some blunders). The default is the middle of the road ‘SmartGo’ that will try to make the game more balanced.

The trick with dumbing down computer play is that you don’t want the computer to play non-sensical moves. The approach I’ve taken is that SmartGo will still select one of the moves that KataGo generates, but instead of always picking the best move, allow it to choose moves that lose points or reduce its chance of winning. If the computer is further ahead, it can lose more, bringing the game closer to balance.

This is a first stab at this feature, I will likely refine this in versions to come. Please let me know how this works for you: Do you always keep the computer at maximum strength? Is the lowest level still way too strong? Do you enjoy playing against the computer more?