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.

Wednesday, August 30, 2006

Google Trans: Back to the Drawing Board, Please

My girlfriend Martina used Google Trans to translate the text in the "golden" box on the front page to Chinese and back to English. Some gems:

.."guided missile escort boat formation conducted offensive discipline soldiers"..

.."Binging strong Israeli in the Word Macro elections"..

To Korean and back to English:

.."Moyo the stew"..

.."shedding of blood the free search also the head of a family"..

Note: There is no mention of Israeli's or Word macro's on my website, neither did I find any reference to blood, soldiers or guided missile boats.

Friday, August 25, 2006

More Power Needs More Discipline

The more powerful databasing tools arrive on the Go scene, the more adherence to proper SGF standards is required from those who edit Go games or Go problems. Moyo Go is able to find all commented games in its databases, but a search for the SGF property C[ won't work, due to the unfortunate circumstance that properties such as PC[ (place) will trigger a search hit.

The AN[ property offers solace: It mentions the author of the comments (the "annotator").

The images show two ways of searching for all commented games with Go Seigen.

This will only work if games adhere to proper SGF standards. I can't stress enough how important it is to stick to standards! As it is today, almost none of the SGF out there truly qualifies. Let's all clean up the existing mess and make sure we use standards-compliant Go software and, at least as important - let's follow those standards ;-)

Complex Page Setup - One Mousebutton

The GUI for the field definition is done.

You simply drag & drop the fields you want to have in the title, header and footer to their respective places, and can even sort them within those places as well (by draggin' & droppin').

Easy as pie. Drag fields to the recycle bin to get rid of them. No scripting language needed!

Thursday, August 24, 2006

What's Wrong with DraGo & GoWrite?

I greatly respect those programs and their programmers - complex pieces of work by highly competent software engineers.

But (as always, there is a but), there often is a simpler, easier way to do things, and at the same time achieve more powerful rendering abilities. DraGo, for example, requires the use of scripting to define a page layout, which I find cumbersome.

So there isn't anything "wrong" with those programs, it's just a rhetorical question I ask myself, in order to fire myself up for a new round of development, setting my requirements as high as possible. I don't want to reach the same level as what already exists, I want to exceed it.

As far as I know, both programs don't allow the selection of different fonts for title, header and footer. But above all, I want to make MoyoGo's printing module most powerful, and most easy to use. I will have to extend the SGF standard a bit, because an improvement I will introduce is alignment properties for diagrams. This allows to break free from the straightjacket of "templates" or the dullness of auto-positioning heuristics and lets you design a document as you would do a web page, for example. Of course there's nothing wrong with templates and positioning heuristics (they are often the best option), but I want to have more flexibility than that. Just as I extended SGF to add Rich Text and Audio, I will extend it for kifu markup as well.

The image here is a fully functional page margin selector for the upcoming printing module. It took me a while to make, but it's worth that investment in terms of intuitiveness for the user. Those black bits are splitters. Of course, the first incarnation of that printing module will be less feature-rich than the long-proven kifu printing classics such as the aforementioned DraGo and GoWrite, but my intention is to slowly supplant the current kifu publishing favorites.

Of course I am still working on the TsumeGo module - the printing is just an intermezzo of no more than a month, then I'll continue with the tactical engine.

The printing module, as with all the other modules, is ruthlessly implemented - the font is the best Go font money could buy and I'll use a font editor to fix it up a bit.

Tuesday, August 22, 2006

The Software Patent Mafia

Software patents have little to do with "protecting an invention", but they are a powerful tool of oppression. (The oppressed party being μISV's and the ones doing the oppressing are the guys with the patents, think Microsoft, Adobe, Unisys, IBM and other large multinational corporations.)

Software patents are an impediment to innovation and therefore detrimental to software consumers.

Contrary to popular belief, a patent sought on an algorithm, method or GUI-aspect is usually not sought because the particular method is so ingenious that it is only natural to protect the awesome intellectual investment - on the contrary: Software patents are almost by definition applied for exclusively to monopolize the obvious.

Software patents are a legal way to convert money into monopoly. If you really have invented something cool, of course you won't apply for a patent, because then your competitors will be able to get a detailed description at no cost.

Another patent myth is that a patent somehow protects against copying. Not at all. Copyright Law, as laid out in the Berne Convention, does that already. In countries that are a signatory to it.
How Patent Law applies internationally is partly defined in the Agreement on Trade-Related Aspects of Intellectual Property Rights (TRIPS), and signatory nations abide at least in part by the rules the US has stipulated.

It is almost trivial to be granted a patent on virtually anything, partly because the US government makes hundreds of millions of USD on issuing them. It is much harder to actually enforce a patent.

Like junk bonds, patents are avidly traded. Small companies, established with the sole purpose of filing for patents, employ dozens of freelance scientists from low-wage countries to apply for as many "obvious" software patents as possible. When hundreds of patents have been filed on pathetically simple things, the venture capitalists sell their company to a larger company, and that company subsequently sues, or threatens to sue a large software company like Microsoft. Microsoft then either settles the case (they paid one hundred million USD to Borland in a (partial) patent infringement case) or acquires the company. Software patents are big business.

Innovation is stifled by software patents. It is much easier for a large software company to make competition impossible by dozens of patents that should never have been granted in the first place, and ensure enforcement by an army of attorneys, than continuing to stay ahead of their competition by steadily improving their products.

Small independent software vendors do not have the thousands of USD/year it takes to apply for and maintain a patent, let alone access to the legal apparatus required to successfully defend their patent in court against the likes of Adobe and Microsoft. This means that software patents, in practice, are nothing but a vulgar tool for the larger software companies to bully the smaller ones, regardless of the merit of the patent - and at the cost of innovation.

This translates to sub-optimal software at inflated prices, and even worse, a slowing down of innovation in countries where they take IP seriously. The whole concept of "Intellectual Property" is ethically and logically questionable. Because when two people get the same idea at the same time, why would the one with the cash be allowed the sole benefits of that idea? Because he paid for it to the US government?

The US government has monopolized the implementation of ideas in the software world, and is making a lot of money out of it. It threatens developing countries like India with trade sanctions when they don't enforce US law in their own countries. Software patents are a prime example of "money making more money", they have spiraled out of control at the sole benefit of Corporate America.

Really innovative ideas in software are rarely patented. They are kept as trade secrets. Taking Go as an example, with a single exception (David Fotland), guys selling their Go programs don't explain the details. Fotland has a well-paying day time job however, and the others live of their software.

Does it go too far to call this the "patent mafia"? Not at all. Software patents are relatively benign compared to pharmaceutical patents that amount to "bio-piracy". Companies rip off indigenous knowledge on medicinal plants, patent the active ingredient and monopolize the production of that substance worldwide for decades. The tribe can be lucky when enough of the medicinal plants remain, as extracting sufficient of the active compound to do first tests (before an efficient synthesis methods is developed) can decimate a population. Contrary to popular belief, nature-based medicines do not require hundreds of millions of USD in R&D (and over half of all medicines are discovered in nature first, like artemisinin and oseltamivir), and patenting them and selling them with 99% profit is downright criminal from an ethical standpoint.

The "inventions" that pertain to most software patents carry no R&D price tag. It can be argued that it is unfair that algorithms can be patented. Like the absurdity of patenting the Law of Gravity, patenting things that occur naturally in nature is highly questionable, however hard it was to discover them. An algorithm is, at best, the "best solution of achieving a goal". Many algorithms are therefore not inventions, but common-sense inspired discoveries of "natural solutions", and like the Law of Gravity, those belong to us all.

Monday, August 21, 2006

The Netherlands No Longer "Korea of the West"?

The Dutch are AKA "The Koreans of the West" (in the context of Go), because that little country has such a relatively high number of Go players per x inhabitants.

But if you look at how "serious" those Go players are, how much time, money & effort they spend on the game, I am quite convinced that in fact it's Poland that deserves that title more.

Judging from how many Polish customers I have compared to Dutch, and especially seen the discrepancy in disposable income, adjusted for the size of the populations, Poland takes the lead in "Go seriousness", as far as Moyo Go is concerned. Moyo Go Studio is not "cheap", but it is indispensable if you want to do thorough Go pattern research (Statistical Move Likelihood etc.)

Hardly a week goes by, or I get another Polish customer. I won't disappoint them - I'm working on something cool*, as usual :)

* Won't take forever to roll out, either.

Saturday, August 19, 2006

The Lost Postings

Guess what I found: http://www.moyogo.com/SLCensoring.pdf

..dozens of postings that have been deleted by Sensei's Library's owners!

The interesting thing about these postings is that they contain zero insults and zero slander or libel, they do not violate any of SL's guidelines, yet they have been erased from the public record by unilateral decision of Morten Pahle and Arno Holossi, for no other reason than that they were embarrassing to them.

Because quite a few postings express support for my "case", which was that I found it unfair that Moyo Go Studio's freeware SGF Editor was banned from having a "Community Ad" on Sensei's Library. It became clear that Sensei's Library's admins' claim of "illegalness" didn't stand, and that their subsequent claim of "unethicalness" did not get much support either.

Still, they were unrelenting in granting me a Community Ad for my Go Freeware, as we can read below because I was not polite enough in private emails to Arno & Morten.

After deleting the thread, Morten Pahle declared that "Advertizing on SL is a service we grant to our friends only, and Frank is certainly not a friend of ours".

Which means that SL, just like GoBase, is less an open forum for the benefit of the Go playing community as would be desirable. Without a platform from which I can distribute my Go Freeware, it's useless to spend effort on it at all. Why would I work for hours on free software for the Go community, when the largest open forum of that same community - Sensei's Library - boycots it because of personal dislike? None of SL's patrons ever informed me of any formal protests lodged at the admins either - something I consider pretty outrageous - it shows how deep we have collectively sunk when we accept this kind of thing.

I am glad to say - Things are going to change. I know of another Go Wiki in the making - one that will be administered by a person who is, IMHO, able to prevent his personal dislikes of people from harming the Go community at large.

More, later :-)

Sunday, August 13, 2006

Goodbye Freeware & Forum

The forum hasn't been active for months so I decided to take the link off the front page (it can still be found here). There are several reasons I am doing this - one is totally uncontrollable SPAM. I have installed countless anti-SPAM mods and although they worked for a while, I was getting a handful of SPAMS a day. And not just for Viagra either. Until I have a waterproof solution, the forum is gone. I do not know of any free alternatives to the hopelessly inadequate phpBB. I don't want to spend more time on it. It has served its purpose and now there is a Help file. I'll use the forum as a to-do list and as the source for a FAQ. Of course I can be reached, as usual, on support@moyogo.com.

I have also taken the Freeware SGF editor out of circulation, as well as the Pro game collection. The freeware editor is a headache to support, in spite of my proficiency with IFDEFS, software consisting of 1,000,000+ lines likes to exist in an as simple possible, single version! I am strenghtened in my decision due to the fact that my freeware SGF Editor was boycotted by Sensei's Library and GoBase. I don't see a compelling reason why I should invest a lot of time maintaining a free version if most of the major Go websites are scared of it :)

Make no mistake about it - Moyo Go Studio is hugely popular, in as much as fledgling Go software can be. I can already live of it, if I were to move to Papua New Guinea or Eritrea (I wish I wasn't so afraid of flying and that I had less stuff).

The Pro game collection has been mirrored by some folks, as well as put on P2P networks, so in an effort to keep my operating costs down, they are removed from my site as well.

This leaves me more time to concentrate on my core business: Building the best Go software!

Thursday, August 10, 2006

Über-Eureka

The difference between academia and engineering is that in academia, you survive by publishing, and in engineering, you survive by not publishing.

Sometimes I feel a little guilty by preying on papers, but then again, those who published them do so to gain notoriety and would like Go programmers to use their ideas anyway.

Yet, I have rarely seen practically useful ideas in comp. Go papers.

Am I overestimating my abilities? I don't think so. I was afraid I would not be able to find a good idea and implement it properly, like I did with Moyo Go's pattern system. Finding and implementing good ideas in Go programming requires fingerspitzengefühl.

Creativity doesn't like to be rushed, but I found a way to do just that: Going on a holiday :) My best ideas come just before waking up properly or just before falling asleep, and "falling from the sky" came something I had been programming my subconcious to find the solution to: The proper, thorough and accurate evaluation of Go positions.

I already explained that in engineering, publishing kills, so I can't go into details. All I can say is that I am convinced that this is huge, and that it is the gateway to making a very strong computer Go program quickly (in less than a decade). Of course you just have to take my word for it, for now. But I am a very happy dude. I have reached the stage where I do not look for ideas in Go papers any more, after five years of R&D, I generate my own now.

What is involved in evaluating a Go position?

1. Getting lots of high-level info on the position (for both colors the moyo/group, aji/group, running space/group, space/group, nt-th order liberties/group, eyespace topology, heuristic territory estimation, heuristic L&D estimation (Benson approximation), ladders, pattern-urgency classification etc. etc. etc.)

2. Accurately using this info in the absolute best evaluation function.

I have figured out how to do (2).

(2) is by far the hardest, (1) "merely" involves counting groups, (order-) liberties, sector lines, Bouzy-influence maps etc. (1) involves some yet-to-be-invented features as well, but that doesn't intimidate me, as I will have a near-perfect (2), which makes it much easier to do the hard bits of (1).

Wednesday, August 09, 2006

Back online again (II)

We are back from a 10-day, 3,000 km road trip to Lapland, and - having slept in the car - we can confirm that there are mosquitoes in Lapland.

The sun started blistering at 02:00 so I cut up my expensive midgie-proof one-person mosquito net and fixed it over the windows as an emergency measure.

A change in my antibiotic regimen has paid off: I was able to do brisk 20-km walks (no stops due to the insanely agressive mosquitoes and NOT having used DEET..)

We ended up in a national reserve that was Sweden's "bear-centre" (not in Lapland) and walked a rarely-trodden trail, to end up in a sparsely-populated-with-trees area bears love and sat down. My hope had been a close encounter with a bear (I have had intimate encounters with them before and I do not consider them /too/ dangerous), but what happened was nevertheless wonderful: A huge reindeer passed us by and we saw how they get rid of those pesky bloodsucking flies: They vibrate the muscles in their hindquarters to dislodge them and run away to get rid of them completely.

A similar scenario would play itself out a few times more on lake shores and even the highway.

I returned to a 700 USD speeding ticket for going 9 mph (17 km/h) over the speed limit. My car needed an expensive repair on the way, so now I'm near-bankrupt :) I had forgotten what the limit was because I had come off a gas station, and there was no repeat of the sign. Norway regulates speed limits in increments of 10 km and literally every few hundred m they increment or decrement by 10 km/h, followed by a new sign or a "previous sign not valid any more" sign. After a while your head spins, and especially if you are confused on which kind of road you are or after you spent a while at a gas station, you can't avoid getting fined. Those camera's are placed where the road gets wider and downhill and the situation maximally affords going fast, so that if you forget to break you're toast. This tiny country of 4.5 mio people makes at least a billion USD/year in speeding fines, but there is no money to improve the abysmal roads because corrupt municipalities spend the money earmarked for maintenance on more sexy projects.

Anyway. One of my biggest priorities right now is to fix a remaining memory leak in Moyo Go, and then I'll continue with say 75% Tsumego development and 25% debugging + miscellaneous new development. Due to the horrendous fine there won't be any more holiday for us.