Evolution of a Go program

About the development of Moyo Go Studio, software to (help) play the Oriental game of Go. Go is a two-player zero-sum game of perfect information. It is considered much harder than Chess. Currently, in spite of enormous effort expended, no computer program plays it above the level of a beginner.

Tuesday, April 25, 2006

Portuguese translation

If Blogger wouldn't have been down and after it had been down, refused to sign me in properly, I could have showed this a day earlier: A Portuguese translation.

Vasco Pimenta managed to translate Moyo Go Studio in less than a day!

Four years ago I paid 600 USD to get a Korean translation for Moyo Go, the "tips", Help and website but I never got it because I kept dragging my heels - totally underestimating how long it would take before all this would be ready for translation. And now I don't manage to contact her any more..

Anyway - if you are Korean and would like to translate MoyoGo, let me know, I offer a free copy of Moyo Go on DVD for the effort. Which is not much for a good translation, so I appreciate it a lot.

Update: She contacted me :)

Saturday, April 22, 2006

I18N & L10N

I noticed that SmartGo now has on-the-fly switching of CJK languages.

I hacked up such a system a decade ago. I published some of that code and this is why, when you download GNU gettext from SourceForge, my name appears in the credits. I used RTTI to recursively modify the GUI widget properties that needed translation and an XML file provided context, comments and the translations in UTF-8.

GNU gettext is better so I use that, although my version was able to display CJK correctly on Wintendo (95, 98 & ME). MoyoGo is not supported on platforms that are only partially 32-bit so it's not an issue.

MoyoGo is ready to be translated: I have an external file, I made the program Unicode-compatible (well, some bugs always remain but they will become apparent when a Japanese translation file will be used) so everyone who offered to make a translation for Chinese, Japanese or Korean: Brace yourself :)

Anyone willing & able to translate into a language that is not yet on this list:
http://www.moyogo.com/Translations.htm will get a free copy of Moyo Go Studio.

The reason I waited such a long time was the fact that I kept adding strings - now it's mainly bugfixing and the creation of a "SmartGo/GoTools/MadLab killer": A TsumeGo module that will solve life/death tactics and problems. This will take a long time to develop and while I do that and the program is being translated, I'll fix all those little issues that have been requested and don't require new translations strings, except hints on buttons etc.

Monday, April 17, 2006

Bookmarks

I just added a bookmark feature to the auto-update. MoyoGo's new bookmarks are powerful and versatile: You can sort them on filename, player, database, variation number, date or event and you can even add your own comments.

The columns can be resized and dragged to different positions and that, as well as everything else about the bookmark dialog - its size, position and sorting - is remembered.

A very nice feature is the fact that a bookmark includes the position! So you can bookmark different problems in the same problem collection, different Joseki variations in the same Joseki dictionary or different positions in an interesting game. Such bookmarks are distinguishable by their variation number and their comment. An example of a variation number is g3v2m5, meaning: Game/problem 3, variation 2, move 5.

Friday, April 14, 2006

Miracles Take a Little Longer

Other SGF software offers drag & drop too, but I think Moyo Go is the only program that accepts dropped URL's and images from a web browser.

Open Moyo Go Studio and drag this link to the board: Go Seigen - Fujisawa Hosai.sgf

And try dragging this image straight from this blog to the board:


I just made this work, so it is not yet available in the freeware SGF editor.

(Use Settings - General Settings - Board - Skin - Board.jpg to get the original goban back.)

Wednesday, April 12, 2006

Multitab Gobans Progress (2)

Multi-tab go boards is a massive thing to implement because everything suddenly has to be "multiple". The undo buffer, for example. All that stuff resides in separate classes, but they were not yet combined into a "superclass".

One tactical advantage of Moyo Go over competitors like SmartGo is that I am agile. Example: SmartGo's latest version has artist-drawn icons. Those things cost about 80 USD a pop, and adding new ones takes time because the designer has to have time free, and the same designer has to be used because new icons should have the same style as the existing ones.

Tuesday, April 11, 2006

Multiple gobans progress

The multi-tab goban stuff is getting done, but a lot of problems had to be solved along the way.

One of the obstacles encountered was the lack of Unicode support of the docking manager, so I modified the sources of that thing, which was non-trivial: The manufacturer, in spite of their customer's requests, declined to implement it.

Sometimes, seemingly simple things are complex to bring about. Yet it will be worth it. Unicode support aside, a plethora of issues need to be taken care of, so it will take some more days to finalize, test and roll out this oft-requested feature.

Saturday, April 08, 2006

Small Things That Make Me Happy

This is from a poll on www.godiscussions.com.
"Other" includes SmartGo, MFOG and BiGo.

I want to thank all those who made favorable comments about Moyo Go Studio on that new forum. People have been pointing out that this is just the beginning, with Moyo Go. It has been available for much less than a year. I had a day time job at the time of launch and the half year that followed - now I am working full time on it.

The most interesting aspect is the fact that I do not play Go above beginner level but this summer I will dedicate as much time as possible on study and play, to go hand-in-hand with a TsumeGo module. I will concentrate on Go problems because whatever I do in my life is subordinate to my Go programming. However much I am fascinated by the game itself, the bulk of my time should still go to more "technical" issues of supporting and building my software. This winter I bought piles and piles of Go problem books, books about TsumeGo, Tesuji, I printed a toner cartridge on Tree searching techniques and especially, I have been thinking, thinking, thinking.. Solving TsumeGo is a hard problem. I want to approach it in a novel way. Moyo Go has "stolen the show" with its pattern system, what I want is a similar "bang" with its TsumeGo solver, so that noone can ignore this software any more. This means it might take a long time before there will be a TsumeGo solver, but it will be a good one :)

A TsumeGo module, combined with the pattern system and the influence module I already have (the influence module is the fastest delta-based semi-Bouzy function I could design, it is an order of magnitude faster than Bouzy but essentially the same and uses only one iteration to calculate the force fields of influence), will be enough to start entering Moyo Go into online computer Go competitions. I have patience. My main interest lies not in Go databasing or pattern expertise, my interest lies in making the world's strongest Go program.

All this work on the current Moyo Go is just a stepping stone for a Go-playing program. Moyo Go's pattern system is intended as a Joseki library and plausible move sorter. But since I approached this endeavor as a self-funding excercise, I am growing the program organically.

Special Deal for AGA Defectors

The anal-retentive Don (as in Corleone) of the AGA's intended replacement for rec.games.go, www.godiscussions.com predictably wielded the sword of censorship at the slightest sign of dissent against the American Go Association.

Although I used polite terms in announcing my Battle Plan, he immediately locked the thread (he hasn't deleted it - yet, perhaps because I emailed him that this would not increase his forum's credibility).

Here's The Plan: I will give away Moyo Go Studio to anyone submitting credible evidence of having terminated their AGA membership for at least the current year and/or the next year. I will only charge for materials and postage, but I expect hundreds of applicants so I can buy stuff in bulk, mail at at reduced rate etc. It will be certainly no more than 9 USD for a DVD, and that includes lifetime updates and lifetime pro games by weekly email.

This is a great deal. Basic AGA membership is only 15 bucks a year, Moyo Go normally costs 69 USD. You make me believe you cancelled your AGA subscription (I need proof of membership and evidence you cancelled it, a CC'ed email with full headers would be fine) and for 9 dollars or less, I have to see how low I can go - details announced soon in the news section at www.moyogo.com - the program's yours, on DVD, delivered to your door in a padded envelope, by priority air mail.

Anyone who goes the extra mile and not only permanently cancels their AGA membership but submits a formal complaint (either to the AGA or a regulatory body) will receive Moyo Go Studio completely free of charge. This offer is permanent and irrevocable.

Update: Don just announced his plans to "go commercial", to put targeted ads on his site. I have lost my remaining interest in his forum. There are no rules for moderation: Anything can and will be deleted or blocked at the sole discretion of The Don. This is what he wrote me as justification for censoring the thread: "Locking the thread was a subjective call. Was it the right move? I dunno. To borrow an excuse from GW Bush, it was a pre-emptive strike".

Friday, April 07, 2006

AGA Attacks Intensify

AGA stayed true to character: They published a devastating "review" of Moyo Go.

Philip Waldron - an amateur player whom I do not count amongst my customers - strengthens his tradition of throwing mud at Moyo Go by claiming it does not have a Help file - something easily proven to be a deliberate, malicious lie - the Help file is accessible even on my site, and has been, for a long time.

AGA repeatedly refused to publish reviews submitted by several of my customers and instead let Mr. Waldron conjure up a wry, misinformed and heavily biased criticism of an obsolescent version. He neglects powerful features like Pattern search, the Fuseki module and SQL based search, and he distorts (because he does not understand) other unique features like automatic Sensei-Search. (Click a word in the comments and an automatic search on Sensei's Library is done). Mr. Waldron only mentions that "Sensei's Library is accessible". None of MoyoGo's cool features like embedded audio, commentable patterns or the unique instant-pattern example system with the highest pro-prediction rate in existence are touched upon, instead he focuses on the weak points.


The first reaction is already given on my forum by erislover:
"Awesome program, poor review."

Re-reading his "review", it is clear that it is unclear to Mr. Waldron that MoyoGo is an instant pattern search/example system. The entire paradigm is lost to him. He relied only on the "move suggestions" and never mentioned the main strength of the system: Getting instant examples of any pattern around any empty point on the board.

Omitting that from the review makes the entire review worthless. Saying that MoyoGo's biggest strength is its databases is hiding the fact that Moyo Go is the only system that can give instant move diagram examples of all possible moves from real games.

Allegedly corrupt AGA officers, having been punished by the Ing Foundation for their alleged misappropriation of funds to start Slate & Shell, now have to derive more of their income from Slate & Shell revenue. Moyo Go Studio is MasterGo's main competitor, MasterGo being Slate & Shell's
bread & butter. AGA has been penalized by the Ing foundation: Their Ing funding (it used to be 100,000 USD/year) has been terminated because William Cobb (AGA board of Directors) and Gordon Fraser (AGA webmaster) allegedly used Ing money to start their company "Slate and Shell", together with a major competitor of Moyo Go Studio: MasterGo's programmer Chuck Robbins. Slate & Shell and AGA are a tightly knit commercial Siamese twin: Even the AGA's contact page has links to Slate & Shell all over it.

It's time Slate & Shell and AGA get visited by an accountant ;-)

Thursday, April 06, 2006

Benefits of Windows Vista

Tabbed Game Browsing



Many people have asked for tabbed browsing, so have a look at this: I'm working on it right now. Shown here are docked panes, which will also work.

Even though Moyo Go Studio is strictly divided into classes and designed with modularity and portability in mind, it still is not a trivial task because I do not want to have multiple object instances around of things that eat memory, like the pattern expert. I rather have on-the-fly context switching, and that requires some ingenuity.

Monday, April 03, 2006

AGA Attempting Usenet Takeover?

A web-based wannabe-clone of rec.games.go has appeared on www.godiscussions.com. All dissent will be crushed: "Trolls and flames will be deleted". There should be no mistake about the site's allegiance: "A huge thanks goes out to the American Go Association".

The first participant of the forum is no other than
Chuck Robbins, programmer of MasterGo, co-conspirator in AGA's Slate & Shell operation and main reason why Moyo Go has been denied a review in the AGA eJournal.

I wonder why some folks are so desperate for control over others, and how many of the rest is willing to give up their freedom in return for being lulled back to sleep. Those who trade freedom for percieved security (from flames) deserve neither. Not to mention the more cumbersome interface and the impossibility to search for archived postings. Web-based forums are to Usenet what cable TV is to having an antenna on your roof: Slickness at the price of censorship.

Tabbed Browsing: I've Got A Source And I'm Not Afraid To Use It

The advantage of having hundreds of users is that they give lots of great advice on how to make the product better. For the moment, I will be listening carefully, implementing all important features. One day soon however, I will have to start focussing more on building an actual Go-playing program.

The advantage of me being an old fart with Borderline Personality Disorder is the fact that I never managed to stay in a job longer than max. 1.5 years, which means that, when I wasn't hitchhiking, trekking or bicycling around the globe, I have plowed through, cleaned up, and built upon the sourcecode of dozens upon dozens of programmers.

I have no qualms about modifying stuff I bought and I am doing that right now with the docking library. Because MoyoGo needs tabbed browsing of Go games, and I want to have a close button on the tabs because that's the only intuitive way to get rid of them.

Saturday, April 01, 2006

Ishi Converter Progress

It's done.

I was testing against SmartGo's SGF output and I noticed that SmartGo is unable to produce a correct SGF from a PRB file (a few minor things go wrong, e.g. parts of comments end up in result fields).

It appears that SmartGo did not write an Ishi-to-SGF convertor but rather a separate Ishi parser. That would be an overly complex solution because Ishi maps 1::1 to SGF.

My converter is about 200 LOC. I am a bit proud of it, I think it's quite elegantly done. I was playing with the idea of making the Delphi source downloadable here because it was near-trivial to write in just a couple of hours but, obviously, I would be aiding the enemy :)

It will take a little while longer to deploy because there are lots of auxillary issues to be fixed first, for ex. there is a bug in the Tree that garbles the text when game- or problem collections are loaded.

I also want to put in some heuristics that substitutes reasonable problem- and node names & titles, buttons to turn off all board annotation, and of course some rigorous testing with more .PRB and .GO files.