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.

Friday, October 28, 2005

Wrong SGF

What's wrong in this picture? (from a commented game by Cornel - no idea which SGF editor was guilty of this). Every time I think I have seen it all, something new comes up. I was wondering why my "automatic branch annotation" put five letters on top of eachother. Must be a bug, right?

Nope, there are in fact five branches with the same starting move! (Q12). This is a perversion of the whole concept of branching - and most likely even illegal SGF, a pity there are SGF editors out there that allow this sort of thing.

Moyo Go Studio gracefully handles bad SGF. It never gives an error when it reads stuff that's invalid SGF, as long as it's unambiguous and renderable. But this is the weirdest thing I've seen in a while.. Of course, those five branches should start on move Q12, not M3! Not Cornel's fault by a long shot - it's us SGF editor writers that have to shape up.

Thursday, October 27, 2005

Almost Famous

The idea-thieving scum at Microsoft managed to get some major press coverage on my work:

http://www.theregister.co.uk/2005/07/04/silicon_chess/

*Silicon beats carbon in chess battle*

By Lucy Sherriff
Published Monday 4th July 2005 14:16 GMT

.."Computers have yet to master the game of Go, a much trickier proposition with its branching factor of 250. Brute force is no good here, because the number of moves gets really big, really fast. Researchers at Microsoft's labs in Cambridge have made some improvements to computer Go, using Bayesian ranking to calculate probable good moves. But the researchers concede that even the best programs are pretty easily dispatched by good human players."..

Sunday, October 23, 2005

Unconventional Silence



As you can see, after I bought that super-monster PC, there was no money left for paint. :)

I didn't manage to make it silent, it seems the case fans produce a lot of noise as well. So I made a "cable snake", and put the PC next to the door, in the corridor of my microscopic 1-room apartment. This works (especially with the door closed), but the mouse- and keyboard cables didn't work. They simply are too long. Weird. So I bought a wireless keyboard/mouse combo and now I can work in relative quietness!

Friday, October 21, 2005

Longhauling

Interesting. I had a big spike in sales for a week, and now I have no sales whatsoever for almost a week. I am pretty sure why: Every new customer found one bug and two new features they would like to see implemented, and kindly informed me so on the forum.

New customers of course look at the forum to see how existing customers like Moyo Go, and see a lot of: "BUG found!" and "We really desperately need feature XYZ". So they think: "Why not wait a little until the bugs are ironed out and feature XYZ is implemented".

Hm, in case of Moyo Go, this is a bad idea. Because customers get lifetime free updates, which means you're loosing nothing when you buy now. But as soon as I have straightened out major bugs and implemented major features, I'll raise the price. Master Go, for example, can't do what Moyo Go does, but it costs 100 USD. This means that Moyo Go will most likely be doubled in price, over the coming years.

So it's expensive to wait.

Of course it's not that bad with bugs and lacking features, it's just the fact that because I offer free updates and I quickly fix bugs and implement new features, that people "avalanche" me with them :) Blake Haber asked for a much more powerful SQL database search and he got it 24 hours later. Of course this encourages to request more :) It doesn't mean that Moyo Go is a stinking pile of crap, on the contrary.

I do not care that I am not selling anything, for the moment. Because things go in waves. All the stuff people talked about will be fixed/implemented, they will rave about it, there will be a sales wave again, they'll find bugs in the new functionality and sales will slump again, etc. etc. until Moyo Go Studio has achieved Full World Domination. While all the time being under-priced, when you look at MoyoGo's commercial counterparts.

Thursday, October 20, 2005

Bug movie

Some of my customers are geniusses. Adrian Petrescu is one.

Today I received a movie of a bug in Moyo Go, made with the trial version of Camtasia.

"It's easier to show you the bug this way", he said. Awesome idea. Of course there is nothing better than a bug report where you see the stuff go wrong, and hear the customer exclaim: "See? It's a bug!.."

(Well, I just have to guess for the moment because the movie was in Flash format, and I make a point of uninstalling Flash as soon as Windoze is installed. You wouldn't believe the tranquility of the browsing experience w/o Flash and with pictures set to "do not animate" (Mozilla has that option). Whenever I look at other's browsers I have to suppress an epileptic seizure.

Update: I can watch the movie now because Adrian made an AVI version and I am starting to think that I should give priority to bug reports that come on video :) A picture is worth a thousand words but a video outperforms that by yet again a few orders of magnitude :)

Sunday, October 16, 2005

Fake Virus

As soon as I designed the blazingly fast index system for MoyoGo's instantaneous pattern search, I thought it would only be a matter of time before faux virus-alerts would be generated. It has remained silent surprisingly long, but my fear has become reality:

A dodgy virus checker ("F-Secure") thinks that one file might have a virus, namely:

moyo go studio\databases\nngs\3053.dat
Infection: Possibly a destructive program [F-PROT]


..this is nonsense, and I will take it up with F-Secure. I wrote "dodgy", because I was amazed that this company does not have an email address. Instead, they require me to fill out a dozen fields, and I'll end up having no copy of the correspondence, because a bug in Mozilla causes such fields to be empty, when the page is printed. Their support number in Norway is dead, on Sundays. I guess people don't use their computer on weekends. The bigger the company, the worse the service. My phone number is +47-98680219 and any customer can call me, any day of the week.

It is possible that even less-dodgy virus checkers will find "virusses" in other files. The reason is simple: Moyo Go installs twenty thousand files with semi-random (encoded and compressed) data. Virus checkers work with "signatures", which are byte sequences. You can imagine that 1.5 GB of semi-random byte sequences has quite a chance of having, just by coincidence, one of those "signatures" somewhere.

Anti-virus software makers could avoid this problem, but this would penalize their scanning speed and the ease of adding virus definitions.

Automatic Updates Now With Safety Belt

In a post of a few days ago I mentioned the potential risk of automatic updates: You might distribute something that doesn't work any more, irritating customers, which is A Very Bad Thing™.

Now, before an auto-update is installed, everything it modifies is backed up, allowing the user to revert to the previous version with a click of the mouse. This should not just make the customer relaxed about installing updates, it gives me peace of mind as well.

Saturday, October 15, 2005

Why Moyo Go can't be Translated Right Now

I get offers to translate Moyo Go Studio into Spanish, Portugese, Chinese, German, Dutch, French and so on.

And I would like to take people up on those offers, of course.
But not now.

The thing is: I am still adding so much new stuff to Moyo Go, that I would need a few new translation strings all the time. The delay to release an update could run into weeks. A chain is only as strong as its weakest link - if the person who translates into Xhosa happens to be on a hunting expedition, releasing an update would have to be delayed until he came back (if not eaten by a lion).

Wednesday, October 12, 2005

The power of SQL

I'm so glad I chose an SQL solution to manage MoyoGo's games!

Many cool things can be done. For example, whenever Moyo Go, during game importing, sees a player without a rank, it simply asks its database whether it already knows the rank of that player, and the player's rank will be automagically assigned.

Monday, October 10, 2005

An Example of an Insane GUI

In spite of me pushing forty, I just pulled an all-nighter. At 08:15 my phone's alarm (the phone is the cheapest Sony Ericsson) went off. When I pushed a button, it went on bleeping louder and louder, but asked: "Turn off alarm?".

Like, if you get woken up by the thing, manage to half-drunkenly grab it and press its "Yes" button, that you would possibly want it to go on waking you up..

Something Irrational

I just bought SmartGo v. 1.5.4 and this is what I found at hex 1901B3:


tsk, tsk..

Spanish Ad

This is going to be an ad in the Spanish Go Journal. With some help, I finally got it right.

Sunday, October 09, 2005

Gossip

My biggest (potential) competitor, Anders Kierulf, is a really nice guy. The first thing he did when I announced my entry in the computer Go field, was sending me his thesis on computer Go. He's probably a lot brighter than I am, too. When I just started with my old SGF Reader, he offered me advice and submitted bug reports. Yesterday I was having some trouble implementing something that SmartGo has as well, and when I finally managed, I thought: "Let's blog about this". I wanted to mention his employment history at Microsoft (arguing that he might hold an advantage over me, because the particular problem I wrestled with was a typical "Microsoft Registry Hell" thing.) So I did a search on his name.

Then I read this here:

In and around California's Silicon Valley, the part-time directors of a number of small foundations - all the organizations sharing the same accountant - have continued to collect benefits even as their foundations' assets plummeted.

One of them is the Sara and Anders Kierulf Family Foundation, which was established in 1999 in San Carlos, Calif., but relocated to Utah when its sole trustees, Sara and Anders Kierulf, moved to Salt Lake City. The Kierulfs run the foundation out of their home, contributing to a variety of charities. They estimate they each spend 20 hours a week on foundation business for the $120,000 in salary that each of them takes.

They have also used foundation holdings to cover escalating medical costs for themselves and their three children. Last year, the foundation paid nearly $11,000 for the family's health care, up from $7,800 the previous year and $4,100 the year before that. Meanwhile, the foundation's assets dropped by almost a third - from nearly $6 million in 2000 to slightly more than $4 million last year. The foundation's accountant, Martin Logies of Sunnyvale, Calif., defended the benefits, saying they had been approved by the foundation's board of directors. But he acknowledged that Sara and Anders Kierulf are the board's only members, and that they approved the benefits for themselves. As to the work the Kierulfs perform for their pay, Logies demurred. ``I couldn't give you that information,'' he said.


But it isn't as bad as it looks! I had been wondering where he got the money to buy the source code of GoTools, Thomas Wolfs' TsumeGo solver. I had assumed Anders was a millionaire, due to Microsoft stock options or something. Because Thomas had alledged to me that he had sold it for hundreds of thousands of USD. He never wanted to be specific, but one of the figures he named was five hundred thousand dollars. I kid you not. So I had no chance of aquiring it. I tried persuading him to let me have it in return for me making it run much faster, to no avail. If I have to believe the article, Anders spends half of his working week on accountancy, instead of working on SmartGo. Perhaps I still stand a chance catching up with him. Of course this is just a clever tax trick - Anders is not misappropriating funds but has merely put his 6 million saved dollars in a SmartTax haven.

Yes, there is (potentially) a lot of money to be made with computer Go. Take GoGoD, for example. They say that their business doesn't make a profit. It's a hobby, a service to the Go community. But.. They are well-known, have been at it for a long time. They offer an interesting product. And it's pretty expensive, if you consider the fact that it's almost exclusively freeware and non-copyrightable game records.

They say it's not making them any profit - All I can say is that I earned 4,000 USD in the first three months of selling Moyo Go. Profit is defined as what you have left after expenses, which makes it a meaningless metric to indicate how much you have earned. By the way: Everybody wants a copy of my software, everybody wants to review it, but nobody wants to publish any reviews.. (That might have something to do with GoGoD having told the Go publishing world that I am a bad boy for including "their" games in Moyo Go without offering them compensation - a consequence of them spreading FUD on rec.games.go about ZenHacker, my earlier SGF Reader. GoBase, the Western world's largest Go website, doesn't want to link to me, and mentions on their website that it's a very bad thing to copy "GoGoD's" games, that the poor GoGoD guys are "non-profitably" selling. Well, I don't know. If GoGoD sells as much as I do, they make 16,000 USD/year. But I am pretty sure they sell an order of magnitude more than I do. Everybody knows them, also in Asia. Everybody endorses them. Everybody links to them. They are all over the web. I think they make about a hundred thou a year, and that was exactly the reason they immediately vilified my first excellent freeware - because it was a clear threat to their business.

The same with GoBase, their business is to give people access to Go games and let them perform searches on them, just like you can with Kombilo on the GoGoD game collection CD. Of course, if folks would have GoBase's games on their local machine and would be able to do much more powerful (and faster!) searches on them, Jan van der Steen's plans to charge his - at least - ten thousand customers money for his site will be frustrated. If he asks 10 USD/year he'll make a cool hundred thousand USD/year - no wonder he refuses to include MoyoGo in his list of SGF Editors!

Some think that the solution to their problem is not innovation, but FUD, boycots and libel. In the short term this will have some effect, but in the long term it will derail them even faster because of course in business, one focuses on competing with one's most vociferous competitors first. Therefore, Moyo Go soon will exceed GoGoD's and GoBase's capabilities, for the sole reason that they chose to make my life difficult. Otherwise I would have been busy making an IGS client or something.

Monday, October 03, 2005

Moyo Go, The Movie

I've just made an off-the-cuff demo in which I convey the cool capabilities of my creation. The movie comes as a humongous 175 MB EXE, made with Camtasia. The reason it's an EXE is to avoid the need to install their CODEC.

The (20 minute or so) audio/screen recording presentation gives a fair general impression, although the docking system's guiding widgets don't appear because Camtasia can't handle "overlays". And MoyoGo's (annotation/splitting) cursors are replaced by a stock Camtasia hand cursor instead. And I had to keep the window small, though MoyoGo likes to have as much screen real estate as possible. But you'll get the idea.

Smaller movies that give a good impression of certain features are here.

There are a few slips of the tongue and you''ll notice that I suffer from absentmindedness, but hey, I'm a hacker, not a Hollywood director :)

The movie.

Sunday, October 02, 2005

Hype & Reality



The new Zalman CNPS 9500 is a CPU air cooler with the best noise/cooling performance. The web is full of praising words. Zalman's propaganda machine has been very effective (so far, no review of Moyo Go has been published anywhere, I'm envious).

Anyway, I bought two because after years of living and sleeping in my rented 1-room appt., the noise was getting on my nerves. My PC is on 24/7 because that increases reliability (thermal considerations - I am an electronic engineer by education and we learn that it's better to have a constant temperature and constant current instead of on/off/on/off/on..). My supplier sent me only one, but billed me for two. So far not the end of the world. One costs 75 USD here, BTW. Okay. So I mounted the thing and I was surprized how little contact it made with the CPU.

I decided to STW for that model and hey presto, I found a bunch of German folks on a forum who had quite some trouble with the thing. The mounting clip broke. I thought: "Let's look at mine" and sure enough, my clip was half way through..

Zalman has perhaps the world's best CPU cooling solutions. They are creative, innovative and they have a proven track record of producing kick-ass coolers. Yet they managed to produce this utter piece of crap. (If it would have broken off during operation, my damage would have been 1,500 USD for the overheated CPU plus 1,000 USD for the shattered graphics card underneath - without the slightest chance of compensation apart from another one of thouse lousy clips.) And that would be best-case, because that brittle clip broke straight through the middle as well, into three pieces. If a piece would have short-circuited something, the disaster would have been complete.