Search This Blog

Posts

I just released version 4.1 of Chess for Android, available at Google Play or as direct download (including a version with network/SMS permissions). The new features include: Ability to send SMS messages (PGN, FEN, UNICODE, engine analysis)Ability to enable/disable built-in book (useful when imported engine book should be preferred)Larger engine analysis fontFurther localization and internationalization
To send an SMS, long-press the notation window, and select "Send SMS", which pops up the window shown below. Simply fill out the phone number (which will be remembered for next time), and select between PGN, FEN, or UNICODE format (or engine analysis of an imported engine). Pressing the "Send SMS" button will send the text message. The concise FEN format will be useful for correspondence players, since it can be directly copied and pasted by the other player (I have not implemented an SMS listener yet).

Like many others, I learned Basic and 6510 machine code on the Commodore 64, a present from my dear grandfather and parents. Although nowadays one can relive the good old times with emulators, such as CCS64 or Vice, and a cross-assembler, like my own win2c64, nothing beats the real deal!

Today I tried to get my old Commodore 64 and 1541 disk drive, bought in Europa, running again. A few 110-220V adapters, a S-Video cable, and some PAL/NTSC settings later, I have my old friend running again. What made me extra happy is that the 1541 could still read the 5¼" floppy disks with my old programs that I wrote back in the eighties, such as the music editor on the screen shot. I am going to try to copy those onto my hard disk, so others can run these in an emulator.

Inspired by Rein Halbersma's kind encouragement, I have started some work on an international checkers engine. After all, "dammen" is the variant I grew up with in The Netherlands. Since I have implemented BikJump for chess, BikMove for American checkers, I decided to name this upcoming engine BikDam.

I already had some fun hacking a, hopefully, efficient move generator. The rules for captures were very interesting to implement. Here are the perft number from the start position of 10x10 international checkers (a.k.a. dammen). In contrast with my American checkers move generator, here duplicate captures are removed.

My quest for deeper perft numbers for 8x8 checkers using has reached depth 28. Below you see the perft(28) breakdown per move, called "divide". As stated before, the numbers were computed on a cluster of machines, optimized with a "hard collision"-free transposition table as well as bulk counting. The move generator does not eliminate duplicate captures.
At this point, the limits of 64-bit unsigned integers have been reached. Although there are obvious ways around these restrictions, this seems a very good time to give this (by now probably insane) project a rest. I have updated this OEIS entry up to depth 26, and may add the higher depths also when I am a bit more comfortable with these most recent results. divide(28)12-16 = 240070833985819919111-16 = 243138619671261187811-15 = 223178752933125981010-15 = 218644635681176173710-14 = 1872427919495823777 9-14 = 2285893686261887442 9-13 = 2969067990365356900 -------------------------- perft(28) = 16377718018836900735

With the new improvements in place, it would almost be a waste not to go deeper with my perft for checkers computation. Therefore, I computed perft(27) from the initial position of 8x8 checkers. Below you see the perft breakdown per move, called "divide". As stated before, these numbers were computed on a cluster of machines, further optimized with a "hard collision"-free transposition table as well as bulk counting. The move generator does not eliminate duplicate captures. move divide(27)------------------------------- 12-16 = 516399283859880203 11-16 = 519502096014967805 11-15 = 476666239516455180 10-15 = 468705060101275533 10-14 = 400425747281243848 9-14 = 486493422418651579 9-13 = 631652334435528457 -------------------------------perft(27) = 3499844183628002605
The implementation is "fault tolerant" against machine failures. Nevertheless, since I saw a few of these recoveries in this particular run, I may …

I made some improvements to my distributed implementation for computing perft and divide numbers for 8x8 checkers, and now computed depth 26 from the initial position, shown below. As reported earlier, the numbers were computed on a cluster of machines, further optimized with a "hard collision"-free transposition table as well as bulk counting. The move generator does not eliminate duplicate captures (viz. the situation where a king can capture the same pieces in different directions; a situation that starts to occur at depth 12 and up). move divide(26) ----------------------------12-16: 11136267843523175211-16: 11259025776842051511-15: 10135264999388692610-15: 10055264699674929310-14: 86312674861234785 9-14: 103811787278058952 9-13: 136189763354484914 ----------------------------perft(26) 752172458688067137

Version 4.0 of Chess for Android, available at either Google Play or as direct download, focuses on localization and internationalization. All user facing text (except the chess notation and engine messages) has been translated into the following languages. English (the default)Dutch (translated myself)German (many thanks to Philip Stutz)Hebrew (many thanks to Haran Talmon)Polish (many thanks to Michal Kaczmarek)Spanish (many thanks to Krizia Lopez)Swedish (many thanks to Anton Hansson)
If you spot any mistakes, if you would like to see support for other languages or, even better, if you would like to help with further localization, please drop me a private note.

I had been working on some general utilities for the micro-KIM, and used some spare time during the long weekend to finish a scrolling putchar utility that can output letters and digits to the 7-segment display in a scrolling fashion (some letters needed more improvisation than others, but my daughter Karina helped me designing all the letters and converting them to hex). Here is a demo.

Folkert van Heusen is developing a chess engine, called DeepBrutePos, and he also wrote a version for Android. The engine is written in Java, and he used the Android SDK to develop a version that acts as a chess server, so that it can be imported as network socket in Chess for Android (a rather unusual, but nifty use of that feature).
I conducted a quick test with one of the first versions. Below the results of a one-second-per move tournament from both sides of all Nunn opening lines on a Nexus One. I was hoping for better results for Folkert, but hopefully he will release a strong version soon. Good luck! 1 2 3 4 5 6 1 BikJump v2.1P * 17.5- 2.5 20.0- 0.0 20.0- 0.0 20.0-0.0 20.0-0.0 97.5/100 2 fairymax48q 2.5-17.5 * 10.0-10.0 12.5-7.5 18.5-1.5 20.0-0.0 63.5/100 3 umax48w 0.0-20.0 10.0-10.0 * 12.0- 8.0 20.0-0.0 20.0-0.0 62.0/100 4 Chess for Android 0.0-20.0 7.5…

I just released version 3.3 of Chess for Android, available at Google Play or as direct download. The new features include: Ability to modify filenames of regular and tournament games.Information on network status during socket setup.
In the older versions, regular games and tournament games were alway appended to, respectively, the files games.pgn and tour.pgn on SD card. The new feature allows users to change these defaults through a "Change pathnames" menu. The pathnames can even include subdirectories, provides these directories exist.

The second feature displays information on the network status during socket setup (mobile connection, Wifi, etc.). In the version without network permissions (the default on Google Play), a proper warning message is shown instead.

Below a more detailed view of all monitoring stations in the Bay Area that are part of the radiation network, where my station shows in slightly darker yellow. The station near LLNL usually shows a similar CPM rating, while the one in the South Bay usually shows a bit higher CPM. As long as my station is up, you can also view this real-time map.

I purchased GeigerGraph for Networks from Mineralab, and joined the radiation network, which is a network of volunteers all over the world with radiation monitoring stations that report local CPM (counts per minute) ratings. In the graph below, you can see my station in the East Bay in slightly darker yellow.

I can highly recommend this software. The maps show active monitoring stations all over the world, and one can obtain more detailed information for each station. The software also generates graphs or spreadsheets of measured data, and allows specifying alert actions, such as sending an email, when CPM ratings exceed a certain maximum. The software can also post a real-time map on a server.

I investigated the large variation observed in the graph of June 6. While babysitting the monitoring software, I noticed that occasionally the software would report bursts of over 200 CPM, even though the Geiger counter itself never measured such a spike. Two "faulty minutes" in one hour could easily explain the 400 clicks variation. Therefore, I first tried different serial/USB converters (settings were always as specified by the GC manufacturer), since low quality converters are notorious for messing up signals. But I noticed faulty burst even for expensive converters. Then I tried my only computer that still has a serial port. Now, no more faulty bursts occurred during several test runs.

After that, I redid the 24 hours experiment. The results are shown below. A much more stable graph, reporting around 700 CPH, or .1 μSv/hour, which translates into about .9 mSv/year.

I am glad I am now able to perform more reliable measurements. If anyone has suggestions on debugging the…

I got a Digital Geiger Counter for my birthday (yes, I know, geeky). As a starter use, I measured the background radiation in our house in the East Bay over the past 24 hours. The results appear in the graph below, plotting the "counts per hour" and correspondingμSv/hour over the past 24 hours. The worst-case measured .2 μSv/hour translates to about 1.8 mSv/year, which luckily seems a bit below the worldwide average background dose.

Bob Newell's The Checker Maven is a very interesting online publication on Checkers and Draughts. This week's issue features checkers applications for Android.

Bob looked at many checkers programs but concluded that the only two application that merit consideration are Checkers Tutor, by world class checker programmer Martin Fierz (author of CheckerBoard and the Cake computer engine), and .... Checkers for Android by yours truly! I am honored to receive this special mention by The Checker Maven.

You can find the summary article at the main page. A more elaborate overview, including interviews with Martin and myself and be found in the full article.

Revisiting checkers programming, I just released version 2.5 of Checkers for Android, both at the Google Play and as direct download. New features include:simple animation of captured piecesadded a slight delay in single-move responseadded transposition table to enginemore time controls
The new animation and delay will hopefully make it more clear what move was just played. The transposition table should improve the engine strength a bit.

There was an interesting discussion on the TalkChess forum whether a chess GUI running on the Dalvik Virtual Machine could merely support a single protocol, and use an adapter, like Polyglot, to support other protocols. Even though Chess for Android already supports both UCI and XBoard/WinBoard, I was intrigued by the question, and decided to give it a try. First, I compiled the polyglot sources for ARM-based Android devices (I had to make a few source changes to make that work). Then I edited a polyglot.ini file pointing to my own UCI engine bikjump1.8 compiled for ARM: [Polyglot]
EngineCommand=bikjump1.8
EngineName=BikJumpAsXBoard
EngineDir=/data/local/tmp/
[Engine]

As a follow-up on the previous posting and for users that want to experiment with a remote chess server without setting one up themselves, I have, very temporarily, set up a remote chess server with various engines at ports 2000 through 2005 on aartbik.dyndns.org. Simply type this hostname and one of the ports in Chess for Android and let me know if you were able to connect!

I have received several questions on how to connect Chess for Android running on an Android device (e.g. a phone) as client to a remote chess server (e.g. a powerful desktop), so I decided to write a small document with detailed instructions.
What you will need:The server software from Bernhard Wallner's chess utilities, suited for your server's operating system (if, say, your desktop runs Windows, you will need to download the Windows version). You do not need to download the client software in this case.The network enabled version of Chess for Android.On the server, start the engine server software, and construct a new row for every engine you want to run remotely. Assign a name, port number, and select the full path to each engine binary (an executable that runs on the server). You can also supply command line options for starting the engine. Check the active checkboxes and click start when done. This yields something similar to the screenshots below. Here, I have started …

I just released version 3.1.5 of Chess for Android, available either at the Android market or as direct download. New features include:Ability to filter PGN games (on player, event, ECO, ELO rating range, or result)Automatically re-import last UCI/Xboard engine on exit-re-entry of applicationFinger sweep left or right as alternative game navigationMinor improvements in setup position feature

I got a useful suggestion at the talkchess forum for filtering the ELO rating of players. Rather than allowing individual ranges for white and black, I decided to provide a single range that applies to both the white and black player. In the example below, only games where both players have an ELO rating in the range "1200-1700" will be shown. Leaving the lower or upper field empty effectively makes that field unbounded (for "1200-" means all ELO rating 1200 and above, while "-1700" means all ELO ratings 1700 and below).

I have extended the game storage features of Chess for Android with the ability to filter PGN games, which is a useful feature when dealing with larger files. To use this feature, long press the notation window and select Game Storage. From there, you see the usual game storage choices, now extended with Filter Game from SD.

After a file has selected, a filter window pops up. Here, you can define a filter involving the white and/or back player, the event, an ECO code, and/or the result of the game.

After the file has been loaded, a window prompts all games that match the filter. The user can subsequently decide what game should be loaded into Chess for Android.

Jon Dart released version 14.0.1 of Arasan and Jim Ablett kindly provided a binary for ARM-based Android devices. I did a 1 second per move match from both sides of the Nunn opening suite between version 13.4 and the new 14.0.1 using Chess for Android, which ended in 11-9 in favor of the older version (of course not enough games to say anything conclusive; the match was merely a quick sanity check on the new version).

It has been quiet for a while, because I was really busy at work, but finally Chess for Android version 3.1.4 has been released, available at the Android market or as direct download. New features include:Position setup improvementsEnhanced x-chess-pgn content viewingOption to hide engine's principal variation (useful when playing a real game)Simplified connection with remote UCI/XBoard engine (network version only

My eight year old daughter Karina is learning chess and we have gotten into the habit of solving a few mate-in-one puzzles from Laszlo Polgar's book Chess - 5334 Problems, Combinations, and Games every night after homework. She is really enjoying it, especially when we are using an electronic DGT board coupled to Chessbase Fritz. Each time she solves a puzzle, Fritz rewards her by saying "checkmate" with a German accent.

BikJump ended at 7th place in Geert Maeckelbergh's Country Chess First Divsion of The Netherlands. After a result like this, I feel the well-known "itch" to go back to work on my chess engine again. But first a few more improvements in Chess for Android.

Vaclav Vavra set up a new website for Virutor Chess, an UCI engine available for Windows, ARM-based Android devices (and Linux soon to follow). The Android version imports without any issues in Chess for Android. I also ran a quick tournament between the built-in engine, BikJump, and Virutor. The results are show below. 1 2 3 1 BikJump * 9.5 10.0 19.5/20 2 Chess for Android 0.5 * 8.0 8.5/20 3 Virutor Chess 0.0 2.0 * 2.0.20

Another engine that can be imported in Chess for Android just became available. Martin Sedlák released a new version of his engine Cheng3, and Jim Ablett kindly made a binary available for ARM-based Android devices. The engine functions well, although it responds with "no GTB found" for the Gaviota endgame tablebases, even thought the cp4 versions reside in /sdcard/gtb.

Update: There was a minor bug in defining the halfmove clock of a position, something that is relevant only for positions affected by the fifty move rule. I have posted a fix in version 3.1.2 on my website (or you can wait for the next release through the market).

I finished the new Setup Position feature, which I hope to release really soon. The board editor allows specifying a full FEN position, that is, a board position together with castling rights, the side-to-move, and possibly an en-passant file and halfmove clock counter (for the fifty-move rule). Touching a piece outside the board changes the "pen" to that piece. Alternative, touching a piece on the board changes the "pen" into that piece, and removes the piece from the board (useful to move pieces on the board to another position).