Friday, March 31, 2006

Good News For People Who Like Problems

Today I started - finally - with coding up support for the Ishi format (.go and .prb), so that Go problem collections will be supported. A few days ago I reduced the amount of memory game collections take, because I want to do this properly. I still haven't gotten around to finishing the on-demand loading of game collections, so SmartGo still outsmarts me in that (SmartGo does not crash when you load a 40,000 game collection, MoyoGo still does but then again, MoyoGo has a much better solution to handle game collections: A relational SQL database information system :)

Quite a few (potential) customers have asked for this, perhaps because 4000 problems have been made available by

How long this will take?
Heaven permitting, not more than a few days.

Sunday, March 26, 2006

Freeware SGF Editor released

This is the icon for the Freeware SGF Editor (Moyo Go Studio's icon looks the same, but is red).

It was non-trivial to get this freeware SGF Reader/Editor released: I had to get the download size as small as possible - I even tried to NOP out unused parts of a DLL so that it would compress better! That involved interactive disassembly and tracing function calls. My little scheme didn't work because that DLL is loaded by another DLL which does a checksum verification..

Saturday, March 25, 2006

Freeware SGF Editor: Real Soon Now™

It was non-trivial to prepare MoyoGo's sources for conditional compilation to a freeware SGF editor, but it will be worth it. People have started to create Audio Go lessons with Moyo Go Studio, and they have expressed the desire for a free SGF reader, so that anyone can play back those lessons.

I will announce the availability of the SGF Editor in in less than 48 hours, heaven permitting.

Friday, March 24, 2006

SGF Audio Commentary Implemented

Done! It took less than 48 hours, including system analysis (I had to find the best codec), initial testing, GUI design, implementation, initial debugging and updating the Help file. By no means a "bare bones" implementation:

Wednesday, March 22, 2006

SGF GoCasts offers spoken Go lessons with Go games, but it has a few limitations: The lessons are "rented out" to you and you will never have access to them on your own computer. If you have paid 100 Euro for 100 lessons and they go out of business, you're out of luck.

After some time has passed you'd have to pay again if you want to listen to the same go lesson you've already paid for. It requires Java as well, which makes it a no-no for me.

Why are there no SGF files with embedded audio, so you can buy it once and don't have to pay next year if you want to listen to it again? Just like buying a DVD. You would be prohibited from copying it, but at least you would own the media.

The answer is simple: This technology does not exist. This will, heaven permitting, change soon because I am working on it. In just a few days I hope to have a full-fledged audio recording feature in MoyoGo that embeds audio in ordinary SGF files and remains 100% upwards and downwards compatible with the standard SGF file format, meaning that any old SGF reader out there will not choke on MoyoGo's SGF files with embedded audio.

Last year I identified a a bug in various commercial and non-commercial SGF readers that caused them to "hang" on very large custom-defined SGF properties, but I have notified their authors and for example SmartGo has fixed this issue.

MoyoGo already is able to embed custom-defined data in SGF: When the editor is in Rich Text mode. Two years ago everybody told me that embedding "ASCII-encoded binary" data into SGF was a stupid idea, but I now have hundreds of customers and they are asking me to do it :)

If all goes well, somewhere next week, they will be able to comment their games and email a single SGF to their friends. No linking to external files required, because that always, sooner or later, causes broken links. Apart from that, SGF files that link to external data are a security risk, think about buffer overflow exploits by a malicious audio file.

Since MoyoGo will set yet another standard, it is important to get it right the first time. There are strict requirements on the audio system:

- Must use a freeware codec. We don't want the situation like with MP3, where the minimum licence fee to create MP3's is 15,000 USD/year and the Fraunhofer Institute will sue you if you don't cough up the dough. I bet you didn't know that? Even the Jpeg format has been patented and like used to be the case with GIF, they've suddenly started to demand money.
- Must be optimized for speech, so that it encodes high-quality speech with a very low bitrate.
- Must have built-in robustness for dropped packets when streamed over TCP/IP, because we want to be able to have VoIP functionality as well, so we can multicast an SGF file with audio.
- Must encode quickly. It would be too cumbersome to record audio if you have to wait ten seconds after every short commentary.

I have found a solution that satisfies all of the above: The Speex codec.

Friday, March 17, 2006

Outsearching Kombilo

Kombilo takes 5 sec. to search for this pattern in 42,000 games, MoyoGo only 3 sec. but this is because MoyoGo uses multithreading and Kombilo doesn't, and my machine has 4 CPU cores. Chapeau for Kombilo, although I have only worked for a few days on MoyoGo's pattern search, compared to years of tweaking (presumably) on Kombilo. And MoyoGo's pattern search scales almost linearly with the number of CPU cores, which means that in six, seven years, if Kombilo hasn't been made multithreaded, it will have "died out" because machines will have 16, 32 or 64 CPU cores and people will expect searches to be near-instantaneous on half a million Go games.

Don't think: "I will never have a multicore PC". In two years or less it will be impossible to buy a single-core CPU! Intels' planned "Hapertown" processor, scheduled for 2008, will have eight cores. If you just bought a new PC, your next PC will likely have at least 4 cores and your copy of MoyoGo will search Go patterns faster than anything in existence, if the current status quo in Go-software land continues.

MoyoGo is at the forefront of the multi-core revolution. I have invested 11,000 USD in a quad-core machine half a year ago, to be ready now for those customers with dual-core machines (I have a few). Industry analysts have lamented the lack of multithreaded game software. This Go Software application uses multithreading on every von Neumann bottleneck, to safeguard your investment and keep up with Moore's Law. (Moore's Law is still valid, more transistors on the same die area but not with rapidly increasing clockspeeds, so software will have to adapt or face extinction - Darwin's theory was not "survival of the fittest" but "survival of those who adapt fastest").

Sunday, March 12, 2006

SQL databases can be cool

Today's auto-update will have a "database query history" feature that takes pictures of the query entry dialog and shows them in a new "history" panel so that you can re-do that query later, perhaps on a different database.

The history scroller on the top left does not have a hint, because it would obscure the "history image".

Because the history feature, when "opened", takes up some vertical space, I also made the diagram down-sizeable further. Both features have been requested by customers. With hundreds of engaged customers, I have a to-do list of at least as many items, and I am dedicated to implementing them all :)

Thursday, March 09, 2006

A Disturbance in The Force

Jeff Boscole wrote this letter today. Jeff is a former software developer for Atari.

To: AGA President, AGA Regional Representative, AGA Chapter Rep
Cc: AGA Webmaster, Slate & Shell Director(s), eJournal Publisher, etc.

Disturbing findings concerning activity by the AGA. Frank de Groot continues to allege that Ing Foundation money was used in start-up costs for Slate and Shell. No budgetary transparency has been provided which could confirm or deny Frank's allegations.

Meanwhile, the AGA's treatment of Frank de Groot's MoyoGo product has not been commensurate with the significance of that enterprise. I note a "disproportionate bias" by referencing how MoyoGo is being treated by the AGA website. Of the four references, one is neutral and the other three appear to be negative. I ask, "What is the source for characterizing MoyoGo as `controversial' if there has been brought no legal challenge to MoyoGo?" Editorializing in this manner, by the AGA on AGA's website, lacks the aegis of neutrality toward which the AGA ought to strive. This needs to be corrected.

I also note that MoyoGo was referenced as one of the major citations in the article by three Microsoft researchers, the paper "Bayesian Pattern Ranking for Move Prediction in the Game of Go"
by David Stern, Ralf Herbrich, and Thore Graepel, of Cambridge UK, citation #7 of 11 in the bibliographical footnotes. To date, MoyoGo's performance has greatly exceeded efforts by these three Microsoft programmers, and Mr. de Groot's work appears legitimate.

- Jeff Boscole

Benefits of making a Help file

The creation of a Help file amounts to describing exactly what every button and checkbox does, and why.

It is my experience (and this time is no exception), that this forces me to re-consider certain implementation details. I even find bugs that way. A few days into the making of the Help file, and I already have done some significant coding alongside because I suddenly "saw the light" in terms of little inconsistencies here & there.

A Help file is a wonderful way of soliciting user feedback as well, because without a Help file, users will not easily suggest keyboard shortcuts, for example, because they suspect they exist but they just can't find them.

MoyoGo's Help file will be divided into two parts: A complete description of what everything does and why, and a "how-to" section.

Tuesday, March 07, 2006

Jewel case inlays printed

The first few dozen MoyoGo's were sold without a jewel case inlay (only the CD was printed).

Later, simultaneously with switching to DVD, I used a self-printed tear-off inlay. I did the artwork myself but it looks great. It was a terrible hassle to print hundreds of Fellowes Neato inlays, tear bits & pieces off and fold them into the jewel cases, so since I am running out of them, I went to the printers' around the corner today and ordered a thousand real ones.

Amazing ice cones as thick as arms and more than a metre long are hanging from overhanging roof edges - people have been very seriously injured when they fell. It looks awesome - perhaps I'll take a picture tomorrow.

The printers' just called me to approve of the a trial run and I received a sample. It looks beautiful! The colors are deeper, warmer and more "even". Tomorrow afternoon the batch will be finished on thick glossy paper. 500 USD. I could have done it cheaper in Czechia (my girlfriend is from there and I have lived there for a year), but as with many things that are cheaper elsewhere, it's also an extra hassle getting things done exactly how I want it.

They fit perfectly in their cases and look so good that I will throw away the few old ones that remain!

Monday, March 06, 2006

Help file started - online already

I believe in agile development and incremental updates, so the Help file (what's done of it) is already downloadable from the front page.

It's nothing much yet, but it explains how the docking system works, for example. I am sure that not everybody is aware of its possibilities, hence my intention of having the Help file as a work-in-progress on the site at all times.

Sunday, March 05, 2006

Getting Help

Athough I think it is an admission of defeat, I think it's time to write a Help file.

I have tried to make things so intuitively that a Help file is not neccessary, but not everybody feels comfortable trying things. When I use a new application, I simply move the mouse cursor over the controls and read the hints, then I look at the settings dialog and see what I can tweak, but some people avoid that in fear they might break something. A lot of users simply have never heard of context menus, hints and settings so they never try them. I want to make software that is accessible to all, so a Help file is called for.

Maintaining a Help file is such an enormous resource drain that it has to be justified in increased sales, and as long as an application is in a state of flux, it is impossible to keep the Help file up-to-date.

MoyoGo has however become so powerful and offers so many features, that it is time to systematically explain how it all works.

LOC celebration

I'm going to have a beer because MoyoGo exceeded 1 million lines of code today. It's sunny outside too!

You can see I'm a little sloppy with the warnings these days because my policy is to allow none! After the beer, I hope to make the "Kombilo" (pattern search) module multi-threaded, so that it will be much faster on multi-core CPU's. Some of my customers already have such machines, so I owe it to them.

Saturday, March 04, 2006

AGA ratcheting up Cyberwarfare

The same AGA minion (Philip Waldron) who last month liked AGA members to believe that there was no more recent Go databasing program than the decade-old BiGo, today claims - without elaborating - in AGA's eJournal that good old freeware Kombilo is in fact "as good, or better than any commercial Go databasing software".

What a coincidence! 48 hours ago I announced a full implementation of "Kombilo" type search in MoyoGo, making MoyoGo
vastly superior to Kombilo because MoyoGo also offers instant "pattern expertise" with its gigantic pattern move urgency database.

I guess that halving MasterGo's price did not increase sales, hence the "scorched earth" strategy.

Some high-ranking AGA officials have a commercial interest in boycotting Moyo Go. They refused to publish a review by AGA members twice, and instead they ran two vitriolic articles with things like "He might install a virus on my computer". AGA has been penalized by the Ing foundation: All funding has been withdrawn (it used to be 100,000 USD/year), 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 MasterGo's programmer Chuck Robbins. Slate & Shell and AGA seem a tightly knit commercial Siamese twin: At the time of writing, the AGA's contact page has links to Slate & Shell all over it. As far as I can remember, AGA runs regular advertorials for MasterGo, and MoyoGo's great success (two hundred copies sold in the first half year) has all but marginalized MasterGo, hence perhaps the "dumping" for half price.

AGA to this day refuses to disclose how their bidding process for materials purchases is done - public allegations/insinuations have been made that they let Slate & Shell supply the materials and funnel back the proceeds to private pockets.

AGA has put me on their banlist for their eJournal, I am subscribed to it but I do not receive it any more since they started publishing anti-MoyoGo articles. The funny thing is - these tactics don't work. Their first - utterly slanderous - article increased my sales so much that it became a kind of an emergency because I ran out of printable DVD's and they had ran out of them here.

Friday, March 03, 2006

A Faster Search

Some folks didn't like the elliptical graph so the next update will have an ordinary bar graph.

Kombilo uses all kinds of tricks to speed up search, and MoyoGo doesn't yet, for its recent implementation of "free" pattern search. MoyoGo is about as fast or a little slower than Kombilo, but I am now working on a massive speedup that might make most searches near-instantaneously. Near-instant "Kombilo" searches would open up a whole new realm of possibilities, such as doing automatic searches for continuation patterns etc.

Kombilo uses hashes and end-position matching to greatly speed up search, an MoyoGo simply plays through all games and matches all possible patterns. That's more accurate as well, instead of using hashes. You can imagine that when it's now about as fast as Kombilo (with the same number of games and the same pattern), that the potential for speedup is enormous. I think I can speed things up with about a factor 100, in CPU terms. But the bottleneck remains the HD bandwidth, so a more realistic figure is ten times faster than Kombilo, which would still mean the same search times if you search through MoyoGo's entire game database.

Kimchi update

I just tried the fresh Kimchi I made and it tasted great, already!

It's not much fermented yet so I put it back behind the window (where it's coolest).

Thursday, March 02, 2006

"Kombilo" variation chart

If you thought that I wasn't concentrating on coding today (because of the Kimchi story), I got a surprise :)

I made that cool graph that shows you, for each variation and each color and per color tenuki/no tenuki, the winning percentage if either the current player-to-move plays there, or the opponent.

Making Kimchi

"If the mountain will not come to Mohammed, Mohammed will have to go to the Mountain" my father used to say. Which meant that if something complicated would not happen in the usual way, more elaborate measures were required to make it happen.

Yesterday, in a rare snowstorm, I went to the only Korean restaurant this most expensive city on Earth is rich, and it was closed. I fear they are bankrupted because the peasants in this town do not appreciate good food. Norwegian food is the worst on the planet. Blandness is their middle name. So I could not buy Kimchi. Google (evil makers of lousy software and Copyright-infringing, shoddy search engines), provided me with a recipe for Kimchi here and because I felt energetic today I decided to give it a try. The cabbage parts are in their bag doing what they are supposed to do, Insha Allah.

Kimchi is more addictive than crack cocaine so I am not even sure I can wait the three to four days required. And I don't even have this dodgy "starter sauce" or Korean sweet chilli. But they say even bad Kimchi tastes pretty good. I hope my sales will take off to that part of the world when they see how serious I am with all this. OK, MoyoGo hasn't been translated to Korean yet but hey, see it as a way to practice your English :)