Posts

Showing posts from 2019

Machine Learning: third book

Image
I am deviating a bit from the originally planned order of reading books as well as from the topic of TensorFlow, but I picked up the next book "Python - Machine Learning" by Wei-Meng Lee anyway from the local bookstore, since it presents some basic technologies that are relevant to ML. As the introduction states, the book takes a gentle approach to the ML topic, but it provides an interesting read nevertheless. First some fundamental Python libraries are presented: NumPy (multi-dimensional arrays), Pandas (Panel Data Analysis), matplotlib/Searborn (data visualization), and Scikit-learn (ML algorithms for classification, regression, clustering, decision tree, etc.). The book provides resources for data sets, discusses data cleaning, and goes over several ML examples for supervised learning (one regression chapter and three classification chapters) and unsupervised learning (one clustering chapter). The book finishes with a presentation of the Azure Machine Learning Studio (w…

Tensorflow: second book

Image
A while back, I posted on my interest in Tensorflow, and planned a few brief follow-up impressions of some books I bought. This was soon followed by a first posting on "Tensorflow for Deep Learning" with a follow-up on a CNN for a digit recognition example from that book. After that, the distractions of life and work took over, but now I am ready to continue these postings. Since then, I even bought a few new books!
I am really enthusiastic about the second book, "Learning TensorFlow" by Tom Hope, Yehezkel S. Resheff, and Itay Lieder. Unlike the first book, which was informative but a bit sparse on details, this book explains the details of constructing and running a TensorFlow computation graph really well. After the first three chapters, I was quite comfortable with the fundamental basic blocks of TensorFlow and experimenting with some different setups. What was particularly helpful was showing a toy graph first to explain underlying principles before moving on …

Fast Queen Promotion

Image
Many users of Chess for Android use the combination of an electronic chessboard (Certabo, DGT, or Millennium) and online play, where making moves quickly can make the difference between winning or losing. In the past, I have made improvements that enabled quicker castling and taking en-passant. However, one request for quicker promotions was still pending.
When using the electronic chessboard, there were two ways to promote a pawn. One way is to make the move with the pawn first, then use the popup window in the GUI to select the promotion piece, and finally replace the pawn with the piece on the electronic board. The second way is to remove the promoting pawn from the electronic board first, and then place the promotion piece on the board thereafter. Either way registers the promotion correctly, both for regular or minor promotion.
However, during rapid games, even this simple procedure may be a bit cumbersome. Therefore I added an extra option to Chess for Android. While setting up…

Certabo Limited Edition Model

Image
Certabo launched a limited edition tournament model electronic chess board that celebrates the 10th anniversary of Chess for Android. The graphics were beautifully designed by Bryan Whitby.

You can read more about the background in this interview with Pietro Mandurino, the CEO of Certabo (in Italian).

Opening Top and Bottom Borders on the Commodore 64

Image
Opening up the top and bottom border is of course a trick any seasoned C64 demo writer knows. But anyone who started with BASIC before switching to 6510 probably remembers how much fun it was to get that extra space for sprites and even some simple graphics. So this posting is not telling anything new to most of you. I am just reminiscing my own youthful awe when I made the switch.
The program below shows how to do this. Set up a raster interrupt right before the bottom border start. Then toggle between 24 and 25 lines of text. This tricks the VIC into forgetting to turn on the border. The opened border can be used to display sprites. By manipulating the last address of the VIC page ($3fff by default), you can even get some interesting graphics. For example, Pasi Ojala posted an article Opening the Borders with some truly amazing effects! 
Of course, opening up the side borders is the next challenge!



; little demo to open up the border ; for win2c64 by Aart Bik ; https://www.aartbik.…

Dronies

Image
What do you do when you suddenly have two functional, flying drones again (a Phantom 2 vision+ and a Mavic Pro)? You fly one, of course, and ask your daughter to fly the other one. Then you take "dronies"!


How Much Land Does a Man Need?

While updating links on my website to content that I also maintain, I had to think of a variant on the title of Tolstoy's brilliant short story: How much Internet Presence does a man need? Donald Knuth writes that he has been a happy man since 1990, when he no longer had an email address. Would the same apply to webpages? I am not ready to find out yet!
https://www.aartbik.com/ https://aartbik.blogspot.com/ https://twitter.com/AartBik https://facebook.com/ajcbik https://www.youtube.com/user/AartBik https://www.linkedin.com/in/aartbik https://amazon.com/author/aartbik https://github.com/aartbik https://play.google.com/store/apps/developer?id=Aart+Bik

50th Anniversary!

Image
Since the Eagle landed on the moon shortly after I entered this world, it seemed only fitting to celebrate both these anniversaries with LEGO's Nasa Apollo 11 Lunar Lander building set. Can't wait to start building this weekend!


The quote on the box is a bit surprising. Everybody knows this should read "That's one small step for [a] man, a giant leap for mankind" (make sure the pronounce the square brackets properly)!


Chess for Android: UCI Engine Options

Image
The UCI engine setup dialog in Chess for Android was developed a long time ago when there were not many chess engines available for Android. As a result, I opted for a simple dialog that featured a few, commonly used UCI engine options only (such as hash table size, number of threads, endgame tablebases). However, the options that I picked almost ten years ago no longer serve the wide variety in options of the many chess engines available for Android.
Therefore, I decided to re-implement the UCI engine setup and do what the UCI protocol specification actually intended: the GUI should parse all options and build a dialog that allows the user to change them. For engines with only a few options, this yields a concise dialog, as illustrated below with BikJump v1.8. For engines with many options, this yields a more elaborate, scrollable dialog, as illustrated below for Leela Chess Zero. In any case, however, the new implementation gives the user full access to all options!
Expect this new…

Karpov 2294

Image
And another blast from the past. The Karpov 2294, the strongest dedicated chess computer that I own. It is rich in features, such as time control, infinite analysis, and many levels. It also features a very elegant magnetic chess piece set.

Autobridge Device

Image
My grandfather handed this autobridge device down to me in the early eighties, a few years before I got my first chess and home computers. Autobridge was invented in the 1930s for self-teaching bridge, both the bidding and the playing. I date mine around 1959, since that year appears in the manual and on all the inlay cards. The device has no date, but a serial number (so perhaps one could find out).
Does anyone else remember these?
I could play for hours with this. Amazing how times have changed....


Chess for Android: version 6.1.1

Image
I am gradually rolling out version 6.1.1 of Chess for Android to Google Play. Besides some internal cleanup and refactoring, the major new features are:
simple FICS client (see details at Connecting Chess for Android with FICS)improved electronic chessboard support (DGT/Certabo/Millennium)rudimentary DGT chess clock support (shows moves) The FICS interface is simple, in line with the design philosophy I have always followed so far.  Despite the simplicity, the client is fully functional, and I have started to enjoy playing online over an actual chessboard myself. Hopefully others will find the combination of an electronic chessboard and online play just as enjoyable!
A big thank you to my testers! Writing a client from scratch was a non-trivial task, and took a long time. Having awesome testers was extremely helpful during the initial development. Any remaining bugs are mine, of course. Please send me the details if you find one.

DGT 3000

Image
This beautiful DGT 3000 chess clock just arrived! I can't wait to start hacking and find out what features I can implement for Chess for Android connected to a DGT chess board and this clock. In particular,  am hopeful that the combination of online chess on FICS with an electronic chess board and clock will provide a very pleasant chess playing experience! 


Image
It took me a bit longer than planned, but I finally finished the alpha version of a FICS (Free Internet Chess Server) interface in Chess for Android. Either play directly on a phone or table, or first connect to an electronic chessboard (DGT, Certabo, and Millennium) to play over an actual chess board with people online.
To connect to FICS, long press the notation window in Chess for Android to open the extended menu. Then select "Connect to FICS" and login as a guest or using your register username and password. The formula string can be used to filter out match requests. For example time >= 5 & inc = 1 only accepts games with at least five minutes start time per player and exactly one second increment per move. The formula syntax is explained in more detail on the FICS help page.
Once connected, your username or temporary guest name is shown at the bottom of the screen. Match requests that pass the filter are shown in a dialog with the player names and game paramet…

Chess for Android: version 6.0

I am rolling out version 6.0 of Chess for Android, through the usual Google Play channel. The new features include:
Two new sets of chess pieces by Maurizio Monge (who very kindly gave explicit permission)Ability to enable/disable saving engine annotations in the PGN fileOpening the draw/resign dialog now requires tapping one king then the otherSimpler permission model for "older" Android versions The last change, adding bluetooth and network permissions, is needed so that pre-api23 versions of Android can also connect with electronic chessboards over bluetooth or with remote chess engines over a network socket (the latter is also needed for an upcoming FICS client I am working now). From api23 onward, users can selectively enable or disable such permissions. Pre-api23, however, it was an "all-or-nothing". Changes like this have unfortunately the danger that some users will uninstall, but in the long run I believe I can better serve the full customer base this way.

Maurizio Monge Chess Art

Image
I received several requests to incorporate some of the beautiful chess art by Maurizio Monge in Chess for Android. Maurizio did a great job creating attractive, yet very playable chess figures. Also, he kindly makes this art available to all, although I received explicit permission from him to use the art in my application. So the next version of Chess for Android will feature the fantastic "fantasy" and very funny "eyes" piece figures.


Checkers for Android: Endgames

Image
Now that Checkers for Android supports a position setup editor, analyzing textbook studies has become a lot simpler. This has increased the significance of the small built-in endgame tablebases of my app as well, as can be seen in the study below. Here, starting from what is known as the "first position" in checkers, Checkers for Android, playing with the black pieces, announces its inevitable loss in 30 moves!


Checkers for Android: Position Setup

Image
I finished a position setup feature for Checkers for Android, similar to what was already in Chess for Android. This feature allows users to copy interesting checker problems from textbooks or other sources and play from there to improve their game. In addition, I added an option to show the square labels to make playing out variants from textbooks a bit easier for players that are less familiar with the numbering scheme.

Since I recently also added a feature to export games as PDN, this implied I also had to implement FEN setup for games that do not start from the initial position. An example is shown below (note the FEN tag, and the empty first ply since it is white's move in the given position).

[Event "Checkers for Android Game"]
[Site "United States"]
[Date "2019.01.19"]
[White "Checkers for Android"]
[Black "Self"]
[Result "*"]
[PlyCount "0"]
[Setup "1"]
[FEN "W:W9,K32:B13,K1"]

1...  *


Checkers for Android: Certabo Support

Image
Although the Certabo electronic boards are mainly intended for chess, the flexibility of the identifying chips makes them suitable for 8x8 checkers as well (draughts, or American checkers, with slightly different rules from e.g. 10x10 international checkers). Therefore, I am planning to add support for Certabo boards in Checkers for Android as well. The 34 identifying chips can be used for the 24 regular pieces and 10 kings for promotion (using special purpose pieces avoids stacking the regular pieces). A 3D printed set can be used for this purpose (a continued hat-tip to my brother-in-law Gerard Harbers for making all the chess and checkers sets for me!).
The general idea is illustrated with this picture. Please let me know if you like this upcoming support!