tag:blogger.com,1999:blog-75739648937341776702024-02-07T11:02:24.391-08:00Aart's BlogA blog by a Dutch-American software engineer working for Google.Aart Bikhttp://www.blogger.com/profile/13729409613819182927noreply@blogger.comBlogger302125tag:blogger.com,1999:blog-7573964893734177670.post-51033805231616626132022-02-26T18:25:00.001-08:002022-02-26T18:25:09.054-08:00DGT Pegasus<p>The DGT company kindly shipped me a beautiful DGT Pegasus electronic chessboard, which is a nice compact board with a Bluetooth connection. After a few fun hours hacking, I have implemented the proper connection with Chess for Android and will release this support soon on <a href="https://play.google.com/store/apps/dev?id=5402281950510287787" target="_blank">Google Play</a>.</p><p>A few features include:</p><p></p><ul style="text-align: left;"><li>When connected, pressing the Bluetooth icon displays the board's trademark information</li><li>The brightness slider in the board connection dialog can be used to dim the LEDs</li><li>The optiona. move coach cycles through all possible destination squares</li><li>The "Steady LED" checkbox will slow down the transitions between LEDs</li></ul><div><br /></div><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEjPZ3YQbu4BIBMRSKvwAL2cWwv_QY2ScUomR5csCGdHnOE6IPhVisi1e2w1qp_1CmJnCbgP0EQ9QGoNVTH8CZCaq7FHfUsAcWWQbOsBMPBfzhPkl6q-Jh1MI1f4Rkw_bG8iddAuNcvfWMyxOwM4KeNM3srG-w49jxGfxt4n8qxWisshxCObxtyNljLc=s1024" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="768" data-original-width="1024" height="330" src="https://blogger.googleusercontent.com/img/a/AVvXsEjPZ3YQbu4BIBMRSKvwAL2cWwv_QY2ScUomR5csCGdHnOE6IPhVisi1e2w1qp_1CmJnCbgP0EQ9QGoNVTH8CZCaq7FHfUsAcWWQbOsBMPBfzhPkl6q-Jh1MI1f4Rkw_bG8iddAuNcvfWMyxOwM4KeNM3srG-w49jxGfxt4n8qxWisshxCObxtyNljLc=w439-h330" width="439" /></a></div><br /><p><br /></p>Aart Bikhttp://www.blogger.com/profile/13729409613819182927noreply@blogger.com0tag:blogger.com,1999:blog-7573964893734177670.post-47780338912826523452021-12-05T00:27:00.006-08:002021-12-05T00:35:24.571-08:00Chess for Android Move Coach on E-Boards<p style="text-align: justify;">Since I am very enthusiastic about all those new beautiful e-boards that are coming out recently, such as the <a href="https://computerchess.com/en/supreme-tournament-55-2/" target="_blank">Millennium Tournament 55</a>, I am also very enthusiastic again to add new features to <a href="https://play.google.com/store/apps/developer?id=Aart+Bik" target="_blank">Chess for Android</a>. Today I added the "move coach", which has been a feature of Chess for Android since the beginning, to e-boards as well. To enable or disable the feature, simply go to the option menu, and toggle the option.</p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEgq9cDNTJy7cDlpNOzXHwiwbX8K6Mn7kdHZSp6Vw7njXzhbAV7xTB4cVoVfG4JLxqVYbLZ-jw8lF6RsFF-IRvGqmi3eThdLAzzh0zt1VFILFkiS142jYrhPXiO06nR5jMsz0RDytFoX-zuhxsGQiMCjc_hGtiIqlAdTfQU9VNi3lhw-ABZsLE79Vgjv=s2340" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="2340" data-original-width="1080" height="320" src="https://blogger.googleusercontent.com/img/a/AVvXsEgq9cDNTJy7cDlpNOzXHwiwbX8K6Mn7kdHZSp6Vw7njXzhbAV7xTB4cVoVfG4JLxqVYbLZ-jw8lF6RsFF-IRvGqmi3eThdLAzzh0zt1VFILFkiS142jYrhPXiO06nR5jMsz0RDytFoX-zuhxsGQiMCjc_hGtiIqlAdTfQU9VNi3lhw-ABZsLE79Vgjv=w149-h320" width="149" /></a><a href="https://blogger.googleusercontent.com/img/a/AVvXsEiI2Vf4_fEsMvXcVAx-m035Y6NpqM85VL2bDlTLHbZlFAnsaoZC2A692BCtulmDxU8OCK42FQwfRWtOR4FsWWIufIoZ68i-0KzdPE1DLqs_wmuZFsFsqjNCBEeYtyago0f8Zz8IlAv_MuvATFhDlHNeLoxF-PrvRD9SI1J6lu0Gu9Ib08A4HPJw7xVI=s2048" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1536" data-original-width="2048" height="240" src="https://blogger.googleusercontent.com/img/a/AVvXsEiI2Vf4_fEsMvXcVAx-m035Y6NpqM85VL2bDlTLHbZlFAnsaoZC2A692BCtulmDxU8OCK42FQwfRWtOR4FsWWIufIoZ68i-0KzdPE1DLqs_wmuZFsFsqjNCBEeYtyago0f8Zz8IlAv_MuvATFhDlHNeLoxF-PrvRD9SI1J6lu0Gu9Ib08A4HPJw7xVI=w320-h240" width="320" /></a></div><p style="text-align: justify;">I demonstrate the new feature on e-boards in the following brief video. Please let me know what you think. I hope to release this to Google Play very soon!</p><div class="separator" style="clear: both; text-align: center;"><iframe allowfullscreen="" class="BLOG_video_class" height="266" src="https://www.youtube.com/embed/2N_ofGTmlgs" width="320" youtube-src-id="2N_ofGTmlgs"></iframe></div><br /><p><br /></p>Aart Bikhttp://www.blogger.com/profile/13729409613819182927noreply@blogger.com0tag:blogger.com,1999:blog-7573964893734177670.post-45109520055136087972021-11-25T14:09:00.005-08:002021-11-25T14:09:32.663-08:00Reversi for Android and Certabo Electronic Boards<p>I posted a brief instructional video for my <a href="https://www.aartbik.com/android.php" target="_blank">Reversi for Android</a> application. I also show how to connect this app with any of the Certabo electronic boards. Even though these boards are typically used for chess, the identifying chips make the boards, in principle, suitable for any 8x8 game. In past videos, I showed using Certabo boards with Chess and Checkers for Android. But the latest video discussed using the boards for reversi. And, yes, you will need 2x64 identifying chips for this experiment!</p><div class="separator" style="clear: both; text-align: center;"><iframe allowfullscreen="" class="BLOG_video_class" height="266" src="https://www.youtube.com/embed/ZtN8FmPru_U" width="320" youtube-src-id="ZtN8FmPru_U"></iframe></div><br /><p><br /></p><p><br /></p>Aart Bikhttp://www.blogger.com/profile/13729409613819182927noreply@blogger.com0tag:blogger.com,1999:blog-7573964893734177670.post-58586474720353927652021-11-23T15:46:00.003-08:002021-11-23T15:46:36.222-08:00Millennium Supreme Tournament 55 (video)<p>I posted a brief instructional video on how to use the new <a href="https://computerchess.com/en/supreme-tournament-55-2/" target="_blank">Millennium Supreme Tournament 55</a> electronic chess board with my <a href="https://play.google.com/store/apps/developer?id=Aart+Bik" target="_blank">Chess for Android application</a>.</p><p></p><div class="separator" style="clear: both; text-align: center;"><iframe allowfullscreen="" class="BLOG_video_class" height="335" src="https://www.youtube.com/embed/qFcl8JRtFSA" width="463" youtube-src-id="qFcl8JRtFSA"></iframe></div><br /><p></p>Aart Bikhttp://www.blogger.com/profile/13729409613819182927noreply@blogger.com0tag:blogger.com,1999:blog-7573964893734177670.post-40571233779450398402021-11-09T15:13:00.009-08:002021-11-10T13:28:05.402-08:00Millennium Supreme Tournament 55<p>Millennium has released the <a href="https://computerchess.com/en/supreme-tournament-55-2/" target="_blank">Supreme Tournament 55</a> electronic chessboard. The board and the American Staunton style pieces are handmade from real wood. And, like all Millennium electronic chessboards, using the Chesslink module, this board works well with my <a href="https://play.google.com/store/apps/developer?id=Aart+Bik" target="_blank">Chess for Android</a> application. Overall, a spectacular addition to the Millennium electronic boards family!</p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgxOoFbs6UCsCYJSN_BGZ3DC2A4037KAe2jhmKY-AYhLNSWmxE5TtAOI7dO_J4N5YOUIKNyKU17ym9lbV12fmcv0U91K9BHdlPelZbDndUEC2imhJO2syjtACt47XEo4WxmIlvDZShb7Bs/s1000/M850_Supreme-Tournament-55.jpg" style="display: inline !important; margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="667" data-original-width="1000" height="133" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgxOoFbs6UCsCYJSN_BGZ3DC2A4037KAe2jhmKY-AYhLNSWmxE5TtAOI7dO_J4N5YOUIKNyKU17ym9lbV12fmcv0U91K9BHdlPelZbDndUEC2imhJO2syjtACt47XEo4WxmIlvDZShb7Bs/w200-h133/M850_Supreme-Tournament-55.jpg" width="200" /></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEid06LXR_I6kgeOuvQTiBqsdIqP9beGvS13-WCWwSaqH9Eo1ZOzfYecLi2ui2C899K-TKdf7DrgKaYSEtab7FXhYryIt3Xj00jv_GggQcmuLkjMy85NuEMyHKnwZ2sjTRgqTK7aUmgIovo/s1000/M850_player-one.jpg" style="clear: left; display: inline !important; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="667" data-original-width="1000" height="133" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEid06LXR_I6kgeOuvQTiBqsdIqP9beGvS13-WCWwSaqH9Eo1ZOzfYecLi2ui2C899K-TKdf7DrgKaYSEtab7FXhYryIt3Xj00jv_GggQcmuLkjMy85NuEMyHKnwZ2sjTRgqTK7aUmgIovo/w200-h133/M850_player-one.jpg" width="200" /></a></div><p><br /></p><div class="separator" style="clear: both; text-align: center;"><iframe allowfullscreen="" class="BLOG_video_class" height="266" src="https://www.youtube.com/embed/4jUrvMZg5Mk" width="320" youtube-src-id="4jUrvMZg5Mk"></iframe></div>Aart Bikhttp://www.blogger.com/profile/13729409613819182927noreply@blogger.com0tag:blogger.com,1999:blog-7573964893734177670.post-62661259853198638712021-07-01T17:33:00.001-07:002021-07-01T17:33:41.360-07:00Exhaustive State Space Search for Efficient Code Generation<div style="text-align: justify;">A long time ago, in a galaxy far away, I scribbled down some notes on how to use Prolog to exhaustively search for the best assembly instruction sequences that perform particular data manipulations, in particular for SIMD. And although I actually used such an approach to verify whether code examples shown in <a href="https://www.aartbik.com/simd.php" target="_blank">The Software Vectorization Handbook</a> were truly optimal, I always thought the ideas were too thin for actual publication.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">However, now that ML-to-optimize-ML is becoming popular, I was hoping that perhaps a few people would be interested in reading about ideas from a simpler time, when AI still meant Prolog and expert systems and such. Therefore, I made the notes available as <a href="http://arxiv.org/abs/2107.00564" target="_blank">arXiv white paper</a>.</div>Aart Bikhttp://www.blogger.com/profile/13729409613819182927noreply@blogger.com0tag:blogger.com,1999:blog-7573964893734177670.post-11391815123042049202021-04-30T16:12:00.004-07:002021-07-01T14:58:45.834-07:00Podcast: What Can You Tell Me About Software?Thanks to Faraz and Vasanth for inviting me to their "<b><i>What can you tell me about software?</i></b>" podcast. We chatted nicely about compilers, LLVM, MLIR, fuzz testing, and even some #chess!<br /><p>To listen to the podcast, tune in to either </p><p><a href="https://open.spotify.com/episode/02A35NeRLLWE106Hc4ER0W?si=bP0C3mH9S4qzHtoKi3bW_Q" target="_blank">Spotify Podcast</a>, </p><p><a href="https://podcasts.apple.com/us/podcast/aart-tells-us-about-machine-learning-compilers-mlir/id1555138852?i=1000519459369" target="_blank">Apple Podcast</a>, or</p><p><a href="https://podcasts.google.com/feed/aHR0cHM6Ly9mZWVkcy5idXp6c3Byb3V0LmNvbS8xNjcyNTQ2LnJzcw/episode/QnV6enNwcm91dC04NDMzMDc5?sa=X&ved=0CAwQkfYCahcKEwi4poa97KbwAhUAAAAAHQAAAAAQAQ" target="_blank">Google Podcast</a>.</p>Aart Bikhttp://www.blogger.com/profile/13729409613819182927noreply@blogger.com0tag:blogger.com,1999:blog-7573964893734177670.post-60897244796909951722021-03-11T20:44:00.006-08:002021-03-11T20:44:44.243-08:00Intel Advanced Matrix extensions (AMX)<br /><p>I guess you can never take the Intel out of the boy even if the boy is long out of Intel. A few months back, I had lots of fun making sure MLIR's code generation maps to efficient AVX512 instructions. This week, I thoroughly enjoyed designing and implementing a <a href="https://llvm.discourse.group/t/intel-amx-vector-dialect/2984" target="_blank">MLIR dialect for Intel Advanced Matrix extensions (AMX)</a> with integration tests that run correctly on a Sapphire Rapids emulator. Staring at some x86 assembly instructions, it does not get much better than that....</p><p><br /></p>Aart Bikhttp://www.blogger.com/profile/13729409613819182927noreply@blogger.com0tag:blogger.com,1999:blog-7573964893734177670.post-13638143732708280112020-12-01T11:19:00.005-08:002020-12-01T17:28:44.781-08:00New Features During Thanksgiving Break<p style="text-align: justify;">Work has been a lot of fun, but very busy. As a result, I had not worked on my Android games (or other hobbies) for a very long time. This Thanksgiving break, therefore, I decided to take a few extra days off, and add some long overdue new support in my games.</p><p style="text-align: justify;">For Checkers for Android, I finalized the support to connect an electronic board (just as was already done in the chess app), in particular for Certabo. The <a href="https://www.aartbik.com/android_certabo.php" target="_blank">Certabo boards</a>, mainly intended for chess, ship with 34 identifying chips that can be attached to any piece set, typically a full chess set with two additional queens). However, due to the flexibility of the chips, these boards can also be used for other 8x8 games, such as American checkers (enabling a full checkers set with ten additional kings). Version 3.1 brings this support to <a href="https://play.google.com/store/apps/dev?id=5402281950510287787" target="_blank">Google Play</a>.</p><div class="separator" style="clear: both; text-align: center;"><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgcXFYAQNdpwcGfRDrdhIuOBXc8CP8ZCT6pzZ0i5Ljm87Ki-BU0CRvZc2sjqCYi1PZSNMFzGJvUhOKoGYqmKuNu_5B78zupt5khZoKyp9JApbmsX7WtZb3hoeqG2fLUn2z6o0jrJisgt9Y/s3840/PXL_20201128_215139569.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="2160" data-original-width="3840" height="113" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgcXFYAQNdpwcGfRDrdhIuOBXc8CP8ZCT6pzZ0i5Ljm87Ki-BU0CRvZc2sjqCYi1PZSNMFzGJvUhOKoGYqmKuNu_5B78zupt5khZoKyp9JApbmsX7WtZb3hoeqG2fLUn2z6o0jrJisgt9Y/w200-h113/PXL_20201128_215139569.jpg" width="200" /></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhUHs42ur96vvxVsD2sZj0W-fRD5zYdUSszChkmCSArBOw2kpm_VOZMVHbaAatSXrMWJWRx1xoJ7uvwgZzmJ5ZS2i_zQgSPbU7y28BaB4ozPmY9Yxhcao8QYS54iM3oQ82QjAlUkH9Q8og/s3840/PXL_20201201_175636372.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="2160" data-original-width="3840" height="113" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhUHs42ur96vvxVsD2sZj0W-fRD5zYdUSszChkmCSArBOw2kpm_VOZMVHbaAatSXrMWJWRx1xoJ7uvwgZzmJ5ZS2i_zQgSPbU7y28BaB4ozPmY9Yxhcao8QYS54iM3oQ82QjAlUkH9Q8og/w200-h113/PXL_20201201_175636372.jpg" width="200" /></a></div></div><br /><div style="text-align: justify;">For Chess for Android, I added timer support for the <a href="https://www.aartbik.com/android_dgt.php" target="_blank">DGT3000 chess clock</a>. Up to recently, I only used the clock to prompt the most recently played move (with a beep to alert the player). Now, however, there is an option to synchronize the GUI clock with this external clock, so that players can stay fully immersed on the board, and don't have to consult the phone or tables. This feature is available from version 6.3 onwards on <a href="https://play.google.com/store/apps/dev?id=5402281950510287787" target="_blank">Google Play</a>.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">For both Checkers and Reversi for Android, I also added "spoken moves", as was already present in the chess app. All features are described in <a href="https://www.aartbik.com/android_manual.php" target="_blank">the online manual</a>.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Finally, <span style="text-align: left;">I also posted a new instructional video for Checkers for Android.</span></div><div><div><br /></div><div class="separator" style="clear: both; text-align: center;"><iframe allowfullscreen="" class="BLOG_video_class" height="266" src="https://www.youtube.com/embed/dL_oELCLWwI" width="320" youtube-src-id="dL_oELCLWwI"></iframe></div><br /><div><br /><p style="text-align: justify;"><br /></p><p style="text-align: justify;"><br /></p><p style="text-align: justify;"><br /></p><p style="text-align: justify;"><br /></p></div></div>Aart Bikhttp://www.blogger.com/profile/13729409613819182927noreply@blogger.com1tag:blogger.com,1999:blog-7573964893734177670.post-13235372727048838642020-10-22T20:56:00.001-07:002020-10-22T20:56:08.455-07:00Galaxy Watch3 vs. GT 2 Pro<div style="text-align: justify;">For my first smartwatch, I couldn't decide between the Samsung Galaxy Watch3 and the Huawei Watch GT 2 Pro, so impulsively I bought both, which puts me in a good position to make some comparisons. Both watches look beautiful and provide excellent health features, like tracking heart rate and SpO2. The Galaxy can even record an ECG and blood pressure, although (at the moment?) this only works when paired with a Samsung phone. The rotating bezel control of the Galaxy provides pleasant navigation through the menus. Both watches have wireless charging. The battery life of the GT 2 Pro is amazing!</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Both watches provide solid default apps, mainly focused around fitness tracking. The GT 2 Pro can also show the rising times of the moon and sun, tidal information, air pressure, and moon phase. The Night Wish face nicely displays the moon phase on the watch together with a star map (I still have to figure out if that rotates though).</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">The Galaxy provides many third party apps through the Galaxy Store, accessible through a plugin of the watch app. The GT2 Pro unfortunately requires side loading the Huawei App Gallery, something I was not willing to do on my phone. Some promised apps were missing on both. For example, neither provides a GPS route back feature.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Overall, a close tie between the two. Please let me know your findings with either one of these!</div><div style="text-align: left;"><br /></div><div style="text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgnyqzccPxXUj7WUrzEvWSpZNwpkLQhIXyS_0aafkH2cehtcdu57JOUBclhhbzW97BgYCVs3HdMp8SCCn-UbUvmV6OxHjnLnb3xlz3bFOh8TC4k6oH5GIUtxfD4JsvghIis0VfmzCRcZ7Y/s2048/PXL_20201022_225548107+%25281%2529.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1152" data-original-width="2048" height="225" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgnyqzccPxXUj7WUrzEvWSpZNwpkLQhIXyS_0aafkH2cehtcdu57JOUBclhhbzW97BgYCVs3HdMp8SCCn-UbUvmV6OxHjnLnb3xlz3bFOh8TC4k6oH5GIUtxfD4JsvghIis0VfmzCRcZ7Y/w400-h225/PXL_20201022_225548107+%25281%2529.jpg" width="400" /></a></div><br /><div style="text-align: left;"><br /></div><div style="text-align: left;"><br /></div><div style="text-align: left;"><br /></div>Aart Bikhttp://www.blogger.com/profile/13729409613819182927noreply@blogger.com0tag:blogger.com,1999:blog-7573964893734177670.post-21588945253418603192020-05-27T14:17:00.001-07:002020-05-27T14:17:26.816-07:002020 ACM SIGMOD Test of Time Award<div dir="ltr" style="text-align: left;" trbidi="on">
<br />
<div style="text-align: justify;">
Our paper "Pregel: A System for Large-Scale Graph Processing" (authors Grzegorz Malewicz, Matthew H. Austern, Aart J. C. Bik, James C. Dehnert, Ilan Horn, Naty Leiser, and Grzegorz Czajkowski) won the <a href="https://sigmod.org/sigmod-awards/citations/2020-sigmod-test-of-time-award/" target="_blank">2020 ACM SIGMOD Test of Time Award</a> for its impact over the last decade. I am proud of having been part of that team, and this brings back good memories.</div>
</div>
Aart Bikhttp://www.blogger.com/profile/13729409613819182927noreply@blogger.com0tag:blogger.com,1999:blog-7573964893734177670.post-76570097041690587662019-11-10T18:00:00.001-08:002019-11-19T10:41:05.303-08:00Machine Learning: third book<div dir="ltr" style="text-align: left;" trbidi="on">
<div style="text-align: left;">
<div style="text-align: justify;">
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 (which I skimmed) and how to deploy ML models once the training is complete.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
If you are already very familiar with ML, perhaps other books serve your purpose better. But as an introduction to the topic, however, I can warmly recommend the book since the discussion of the ML technologies is interesting and the artwork is clear (with one unfortunate exception: some graphs that were originally in color are printed in black and white, making distinguishing different data points hard).</div>
<div style="text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgBp9cmD7C6sJG-Ag2M1DKDwmzwmacvbJR1__0J8u3qvaBxC_poaEO8zNHEF6zrysNqdrUXxvpHFD1MP8lOgWVS_r2Bf_kxK5CtmBvP2TV03jaILHio5WWNpOAkAsrYlPXFawlMBCd5PFU/s1600/download.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="251" data-original-width="201" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgBp9cmD7C6sJG-Ag2M1DKDwmzwmacvbJR1__0J8u3qvaBxC_poaEO8zNHEF6zrysNqdrUXxvpHFD1MP8lOgWVS_r2Bf_kxK5CtmBvP2TV03jaILHio5WWNpOAkAsrYlPXFawlMBCd5PFU/s1600/download.jpg" /></a></div>
<br /></div>
</div>
Aart Bikhttp://www.blogger.com/profile/13729409613819182927noreply@blogger.com0tag:blogger.com,1999:blog-7573964893734177670.post-83653087751407862662019-11-09T15:02:00.001-08:002019-11-09T22:07:12.936-08:00Tensorflow: second book<div dir="ltr" style="text-align: left;" trbidi="on">
<div style="text-align: justify;">
A while back, I <a href="https://aartbik.blogspot.com/2018/07/tensorflow-for-deep-learning.html" target="_blank">posted on my interest in Tensorflow</a>, and planned a few brief follow-up impressions of some books I bought. This was soon followed by a first posting on <a href="https://aartbik.blogspot.com/2018/07/tensorflow-first-book.html" target="_blank">"Tensorflow for Deep Learning"</a> with a <a href="https://aartbik.blogspot.com/2018/07/tensorflow-first-book-continued.html" target="_blank">follow-up on a CNN for a digit recognition example</a> 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!</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
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 to more realistic and elaborate examples.</div>
<div style="text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiiRmvmcLPxHtNoEEbhV14CCIBICWP5jwimkGd_pQvA4zUn3Aaky4Ea3UqzKISHShYxQte4aK27xvN8pfSDwr2AUEil6wzqeW9xtr17X04OtZzEcECAjsoGmy8JK4sCNNM5ZHxFK0cwDic/s1600/IMG_20191106_203346.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1200" data-original-width="1600" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiiRmvmcLPxHtNoEEbhV14CCIBICWP5jwimkGd_pQvA4zUn3Aaky4Ea3UqzKISHShYxQte4aK27xvN8pfSDwr2AUEil6wzqeW9xtr17X04OtZzEcECAjsoGmy8JK4sCNNM5ZHxFK0cwDic/s320/IMG_20191106_203346.jpg" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
All the examples in the book can be downloaded from the accompanying website, which makes running and modifying the examples while reading about them very easy. For example, here is the tensor output of a simple softmax regression for digit classification on the MNIST dataset for a single digit. The position of the maximum value corresponds to the recognized digit, 9 in this case.<br />
<br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;">[-2.2436407 -8.0659075 -1.4967757 -0.9444653 3.0563385 </span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;"> -0.29942074 -1.7668717 2.8794923 2.2567298 6.6245046 ] -> [0. 0. 0. 0. 0. 0. 0. 0. 0. 1.]</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;"><br /></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhvxdpkWedrIfCOIQq4tkl8kXAKZ-EkB4Eq72fvaJpPLpS4mq7KJ9IUlguPs8A7_q2eHlmInnEnf_VVaFfiEVu_Ft1SZQcUU3QTQuvvwQP08XnGiHgljI1jd__LF07quMll0Rv0gJiIKqo/s1600/nine.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="28" data-original-width="28" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhvxdpkWedrIfCOIQq4tkl8kXAKZ-EkB4Eq72fvaJpPLpS4mq7KJ9IUlguPs8A7_q2eHlmInnEnf_VVaFfiEVu_Ft1SZQcUU3QTQuvvwQP08XnGiHgljI1jd__LF07quMll0Rv0gJiIKqo/s1600/nine.png" /></a></span></div>
<br />
Later chapters go into much more detail on <b>CNN</b> (convolutional neural networks), enhancing digit recognition and classifying the CIFAR10 dataset, <b>RNN</b> (recurrent neural networks), as well as some important extensions and enhancements of TensorFlow. There is even a full chapter on deployment, or "inference", of a neural network after training, which of course is the ultimate objective of machine learning.<br />
<br />
As the title already says, all in all I can warmly recommend this book for learning TensorFlow!<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjsk-5SbUOgPzYQtN9aO6IUXMXUv2zHU952j0pRMF1Xx_BlLSPHy3UY_qz-TSBomIfJb9Xo08zyQ-gQTZLqFWwGesED3RZKa5KABRodakbjXYevJT8ehM2SGRrx2GssTwWSooA0NuQ7F8s/s1600/cifar10.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="480" data-original-width="640" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjsk-5SbUOgPzYQtN9aO6IUXMXUv2zHU952j0pRMF1Xx_BlLSPHy3UY_qz-TSBomIfJb9Xo08zyQ-gQTZLqFWwGesED3RZKa5KABRodakbjXYevJT8ehM2SGRrx2GssTwWSooA0NuQ7F8s/s320/cifar10.png" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">CIFAR10 samples</td></tr>
</tbody></table>
<br /></div>
<div style="text-align: justify;">
<br /></div>
<br /></div>
Aart Bikhttp://www.blogger.com/profile/13729409613819182927noreply@blogger.com0tag:blogger.com,1999:blog-7573964893734177670.post-36883159281642738762019-09-28T18:22:00.000-07:002019-09-28T18:22:14.073-07:00Fast Queen Promotion<div dir="ltr" style="text-align: left;" trbidi="on">
<div style="text-align: justify;">
Many users of <a href="https://play.google.com/store/apps/developer?id=Aart+Bik" target="_blank">Chess for Android</a> 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.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
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.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
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 the electronic chessboard, you can now also select the "Always Queen Promotion" option. With this option, moving just the pawn will register the promotion into a queen right away (and send the move to the online server when connected). This enables players to replace the pawn with the queen outside their own time. Minor promotions are still possible with this new option, but require the second way described above.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
The new feature will be available soon on Google Play!</div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg9jOfb-R0nYQVfZuo0L8LyTm_6m4Y9Sd7LmuvdnKAx7Drq8uhQgEuPfPfe5JDVQNvwMlgB-BWrV3Q4wNkkzf3vFpz03EfU11QK7aTY2K7CL_2jJ7U5-wxXaLqQvrkPdVBZTmff5qTjPdA/s1600/done.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" data-original-height="1600" data-original-width="784" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg9jOfb-R0nYQVfZuo0L8LyTm_6m4Y9Sd7LmuvdnKAx7Drq8uhQgEuPfPfe5JDVQNvwMlgB-BWrV3Q4wNkkzf3vFpz03EfU11QK7aTY2K7CL_2jJ7U5-wxXaLqQvrkPdVBZTmff5qTjPdA/s320/done.png" width="156" /></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgMHcURjZ_UkJ5jvtNHSmBUW_xaLIRY9v03cVfMGaX0ItlppV8JPEnn3CBxKF2ccPOvnAQpCqYMmSoqkFu0jTwGytf9eflhm7BWMW0t8dzSq2o7Z0YCrH4dJCWcSOljPNNvjrExMgc8d2c/s1600/promote.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="1600" data-original-width="784" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgMHcURjZ_UkJ5jvtNHSmBUW_xaLIRY9v03cVfMGaX0ItlppV8JPEnn3CBxKF2ccPOvnAQpCqYMmSoqkFu0jTwGytf9eflhm7BWMW0t8dzSq2o7Z0YCrH4dJCWcSOljPNNvjrExMgc8d2c/s320/promote.png" width="156" /></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgDAufk0QjATjbUh-mD3UQpOh_HxRZ4zy7xHnO6iJt6XRXngT0-AJKDmlyKu9d8cRlKnSM6GthP4TBEzg6giRZ_PWgbwhjpjmsAUTQ-EOxSRN1Dr-LpRYe1Hltd-XxxIAZErmI5plvyo2w/s1600/enable.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1600" data-original-width="784" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgDAufk0QjATjbUh-mD3UQpOh_HxRZ4zy7xHnO6iJt6XRXngT0-AJKDmlyKu9d8cRlKnSM6GthP4TBEzg6giRZ_PWgbwhjpjmsAUTQ-EOxSRN1Dr-LpRYe1Hltd-XxxIAZErmI5plvyo2w/s320/enable.png" width="156" /></a></div>
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjcwbRFNjm30Z_4oDV4g-YZXgUmSpyEMxmA6_Q33yY_iBhCog_sMDri2w5QzLBuyv7dyciyh3uN6EUFjo26mzNZe9WusxfNE4RD4g_HN1i9HxArviQ5F8IXRFTewX3-UbVqSjKdyZx130s/s1600/IMG_20190928_174314.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1200" data-original-width="1600" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjcwbRFNjm30Z_4oDV4g-YZXgUmSpyEMxmA6_Q33yY_iBhCog_sMDri2w5QzLBuyv7dyciyh3uN6EUFjo26mzNZe9WusxfNE4RD4g_HN1i9HxArviQ5F8IXRFTewX3-UbVqSjKdyZx130s/s320/IMG_20190928_174314.jpg" width="320" /></a></div>
<br />
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
</div>
<div>
<br /></div>
</div>
Aart Bikhttp://www.blogger.com/profile/13729409613819182927noreply@blogger.com1tag:blogger.com,1999:blog-7573964893734177670.post-79633840426234024452019-09-24T19:55:00.000-07:002019-09-24T19:55:13.961-07:00Certabo Limited Edition Model<div dir="ltr" style="text-align: left;" trbidi="on">
<div style="text-align: justify;">
Certabo launched a limited edition tournament model electronic chess board that celebrates the 10th anniversary of <a href="https://play.google.com/store/apps/developer?id=Aart+Bik" target="_blank">Chess for Android</a>. The graphics were beautifully designed by Bryan Whitby.<br /><br />You can read more about the background in <a href="https://www.facebook.com/scacco.it/posts/3086947134681170" target="_blank">this interview with P<span class="sewyrvnuq9phurw"></span><span class="sewyrvnuq9phurw"></span>ietro Mandurino</a>, the CEO of Certabo (in Italian).</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjDQYtjZsBHoQzKkfwaaYlx_F8kD0RSBt3IIu3PNX4BsuBVfGInI0gzplfrQwvIOjd6AYRw-Dq6BmqJJlEfWjhjeycVLtZl5HCTchpC7gE89bjZ5-OtsYIKvWSEeHwZBG5ZWge7j0g9yOQ/s1600/cfa2.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="649" data-original-width="1600" height="129" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjDQYtjZsBHoQzKkfwaaYlx_F8kD0RSBt3IIu3PNX4BsuBVfGInI0gzplfrQwvIOjd6AYRw-Dq6BmqJJlEfWjhjeycVLtZl5HCTchpC7gE89bjZ5-OtsYIKvWSEeHwZBG5ZWge7j0g9yOQ/s320/cfa2.jpg" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgiLHaXDrqDZbEE0EQ6ZvL2DpzsK-PeRQhjYKazIS092xRFyvBZlfg4g-4LNX6UAkQfhfbRQUn6n4KJ91VqlY3B7fzbM8izV4sS_u5yhby2eQUB7R6yGnTd-iz1qv-AiNJDY4iZ8fLzATA/s1600/cfa.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="866" data-original-width="1600" height="173" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgiLHaXDrqDZbEE0EQ6ZvL2DpzsK-PeRQhjYKazIS092xRFyvBZlfg4g-4LNX6UAkQfhfbRQUn6n4KJ91VqlY3B7fzbM8izV4sS_u5yhby2eQUB7R6yGnTd-iz1qv-AiNJDY4iZ8fLzATA/s320/cfa.jpg" width="320" /></a></div>
</div>
Aart Bikhttp://www.blogger.com/profile/13729409613819182927noreply@blogger.com2tag:blogger.com,1999:blog-7573964893734177670.post-61159402030787815562019-09-14T22:00:00.002-07:002019-09-15T10:28:01.203-07:00Opening Top and Bottom Borders on the Commodore 64<div dir="ltr" style="text-align: left;" trbidi="on">
<br />
<div style="text-align: justify;">
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.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
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 <a href="http://www.antimon.org/dl/c64/code/opening.txt" target="_blank">Opening the Borders</a> with some truly amazing effects! </div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Of course, opening up the side borders is the next challenge!</div>
<div style="text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi3K6coNImAc6DlYAFU4o2CGjStzozvdv94ncRJ4zbaAV16iAec2PFz0Z4-eqR5X1sdypTDRTIExEviGcyBrFo6U_glENpFGJkxAkqc0Ex6afV6j_BxQXCVMlPdgveIuF5s-NMZ04rtasI/s1600/border.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="272" data-original-width="384" height="226" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi3K6coNImAc6DlYAFU4o2CGjStzozvdv94ncRJ4zbaAV16iAec2PFz0Z4-eqR5X1sdypTDRTIExEviGcyBrFo6U_glENpFGJkxAkqc0Ex6afV6j_BxQXCVMlPdgveIuF5s-NMZ04rtasI/s320/border.png" width="320" /></a></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<div style="text-align: left;">
<br /></div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;"></span><br />
<div style="text-align: left;">
</div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;">
</span></div>
<pre>
; little demo to open up the border
; for win2c64 by Aart Bik
; https://www.aartbik.com/
scroly = $d011
raster = $d012
vicirq = $d019
irqmsk = $d01a
ciaicr = $dc0d
ci2icr = $dd0d
garbage = $3fff
;
; encode SYS 2064 line
; in BASIC program space
;
.org $0801
.byte $0c $08 $0a $00 $9e $20 $32
.byte $30 $36 $34 $00 $00 $00 $00 $00
lab2064 sei ; disable irq
ldx #$7f ;
stx ciaicr ; disable timer irq CIA 1
stx ci2icr ; disable timer irq CIA 2
ldx #$01 ;
stx irqmsk ; enable raster irq
ldx #<nearend ;
stx $0314 ;
ldx #>nearend ;
stx $0315 ; set handler
ldx #$1b ;
stx scroly ; 25 rows
ldx #$f9 ;
stx raster ; irq at raster $f9
ldx #$00 ;
stx garbage ; clear "garbage"
cli ; enable irq
rts ; done
;
; NEAR END HANDLER
;
nearend ldx #$13 ;
stx scroly ; 24 rows
delay inx ;
bne delay ;
ldx #$1b ;
stx scroly ; 25 rows
ldx #$01 ;
stx vicirq ; ack irq
jmp $ea31 ; continue
</pre>
</div>Aart Bikhttp://www.blogger.com/profile/13729409613819182927noreply@blogger.com3tag:blogger.com,1999:blog-7573964893734177670.post-57501353028723785772019-09-07T13:01:00.003-07:002019-09-07T13:01:47.747-07:00Dronies<div dir="ltr" style="text-align: left;" trbidi="on">
<div style="text-align: justify;">
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"!</div>
<div style="text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjAVJzn-p00w76ZDYBMUU6qO6z4Wsu7NWu6jVlz9_2IWtyvLiR07u_bGm2l-ZeaF_W8TOE-K593as631EKDA-tJTUYHvk1FKh6vQdZlZBYXViNmW5GPrtCxp04lV4Na6X2ThAcr0pPoIjg/s1600/DJI_0036.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1200" data-original-width="1600" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjAVJzn-p00w76ZDYBMUU6qO6z4Wsu7NWu6jVlz9_2IWtyvLiR07u_bGm2l-ZeaF_W8TOE-K593as631EKDA-tJTUYHvk1FKh6vQdZlZBYXViNmW5GPrtCxp04lV4Na6X2ThAcr0pPoIjg/s400/DJI_0036.JPG" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div style="text-align: justify;">
<br /></div>
</div>
Aart Bikhttp://www.blogger.com/profile/13729409613819182927noreply@blogger.com0tag:blogger.com,1999:blog-7573964893734177670.post-62676182540932168592019-09-01T15:16:00.000-07:002019-09-01T16:42:14.172-07:00How Much Land Does a Man Need?<div dir="ltr" style="text-align: left;" trbidi="on">
<div style="text-align: justify;">
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 <a href="https://www-cs-faculty.stanford.edu/~knuth/email.html" target="_blank">he has been a happy man since 1990</a>, when he no longer had an email address. Would the same apply to webpages? I am not ready to find out yet!</div>
<div style="text-align: justify;">
<span style="font-family: "courier new" , "courier" , monospace;"><br /></span></div>
<div style="text-align: justify;">
<a href="https://www.aartbik.com/"><span style="font-family: "courier new" , "courier" , monospace;">https://www.aartbik.com/</span></a></div>
<div style="text-align: justify;">
<a href="https://aartbik.blogspot.com/"><span style="font-family: "courier new" , "courier" , monospace;">https://aartbik.blogspot.com/</span></a></div>
<div style="text-align: justify;">
<a href="https://twitter.com/AartBik"><span style="font-family: "courier new" , "courier" , monospace;">https://twitter.com/AartBik</span></a></div>
<div style="text-align: justify;">
<a href="https://facebook.com/ajcbik"><span style="font-family: "courier new" , "courier" , monospace;">https://facebook.com/ajcbik</span></a></div>
<div style="text-align: justify;">
<a href="https://www.youtube.com/user/AartBik"><span style="font-family: "courier new" , "courier" , monospace;">https://www.youtube.com/user/AartBik</span></a></div>
<div style="text-align: justify;">
<a href="https://www.linkedin.com/in/aartbik"><span style="font-family: "courier new" , "courier" , monospace;">https://www.linkedin.com/in/aartbik</span></a></div>
<div style="text-align: justify;">
<a href="https://amazon.com/author/aartbik"><span style="font-family: "courier new" , "courier" , monospace;">https://amazon.com/author/aartbik</span></a></div>
<div style="text-align: justify;">
<a href="https://github.com/aartbik"><span style="font-family: "courier new" , "courier" , monospace;">https://github.com/aartbik</span></a></div>
<div style="text-align: justify;">
<a href="https://play.google.com/store/apps/developer?id=Aart+Bik"><span style="font-family: "courier new" , "courier" , monospace;">https://play.google.com/store/apps/developer?id=Aart+Bik</span></a></div>
<div style="text-align: justify;">
<br /></div>
</div>
Aart Bikhttp://www.blogger.com/profile/13729409613819182927noreply@blogger.com0tag:blogger.com,1999:blog-7573964893734177670.post-64149376644847962382019-06-18T19:16:00.000-07:002019-06-19T19:40:20.862-07:0050th Anniversary!<div dir="ltr" style="text-align: left;" trbidi="on">
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!<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg-Sq57SxRE5cEj6Az8myExTOYdKlnr9-tTotGtESSsxFlYREIlK3na5kNbgdwlrqFXP03_fnDa9n-NZj1qWTTjpnrhoxfVfLr6t_K2aahxFiOncPMokuXpmQvHmaAVhPC7E6zrI2p8PhM/s1600/MVIMG_20190618_183650.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1000" data-original-width="1600" height="250" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg-Sq57SxRE5cEj6Az8myExTOYdKlnr9-tTotGtESSsxFlYREIlK3na5kNbgdwlrqFXP03_fnDa9n-NZj1qWTTjpnrhoxfVfLr6t_K2aahxFiOncPMokuXpmQvHmaAVhPC7E6zrI2p8PhM/s400/MVIMG_20190618_183650.jpg" width="400" /></a></div>
<div style="text-align: justify;">
<br /></div>
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)!<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhy4Avu6UKNcCQnAuycCfKY7PmIDudf4xN9qlr0VXrLGPdixZziCEsiekk3XMMkKah1TYPPndu-Dw6eHgIQulzgvYEsUt0UcLddxV8wiHGXIpxD6cMEVJa_io4ZLF63zUpoiPccoRvHo48/s1600/small.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="778" data-original-width="1600" height="155" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhy4Avu6UKNcCQnAuycCfKY7PmIDudf4xN9qlr0VXrLGPdixZziCEsiekk3XMMkKah1TYPPndu-Dw6eHgIQulzgvYEsUt0UcLddxV8wiHGXIpxD6cMEVJa_io4ZLF63zUpoiPccoRvHo48/s320/small.jpg" width="320" /></a></div>
<br /></div>
Aart Bikhttp://www.blogger.com/profile/13729409613819182927noreply@blogger.com0tag:blogger.com,1999:blog-7573964893734177670.post-86233886716257765782019-05-26T17:09:00.001-07:002019-05-26T17:27:30.519-07:00Chess for Android: UCI Engine Options<div dir="ltr" style="text-align: left;" trbidi="on">
<div style="text-align: justify;">
The UCI engine setup dialog in <a href="https://play.google.com/store/apps/developer?id=Aart+Bik" target="_blank">Chess for Android</a> 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.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
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!</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Expect this new feature to go into production very soon. A few comments on issues that could be improved.</div>
<div style="text-align: justify;">
</div>
<ol>
<li>As before, the options setup is a one time procedure for each engine. Individual options can only be changed by first clearing the options setup for that engine, and starting again. I may add a "change options" feature at some point, so that not all parameters need to be revisited each time.</li>
<li>The UCI protocol specification recommends omitting certain options that are best handled elsewhere. For now, I opted for showing all options at once.</li>
<li>The options setup is associated with an engine binary. Perhaps in the future I may allow setting up a single binary with different options, and giving each configuration a new name.</li>
</ol>
<div style="text-align: justify;">
As usual, please let me know what you think!</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiOfw_IZK3Cdr7P73Fr4qIaMXdvo1sEUMqx94TkgeEeZFsx9_XyO4fNT9PYQR16WnZc9JMtaRu3bhjVvTe4VCM82LEuffnAjYrU5C5EQdBt4zFTawfWsZnJK4KYGFWzUp88UxRJsCKqsEY/s1600/setup1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1600" data-original-width="771" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiOfw_IZK3Cdr7P73Fr4qIaMXdvo1sEUMqx94TkgeEeZFsx9_XyO4fNT9PYQR16WnZc9JMtaRu3bhjVvTe4VCM82LEuffnAjYrU5C5EQdBt4zFTawfWsZnJK4KYGFWzUp88UxRJsCKqsEY/s400/setup1.png" width="191" /></a></div>
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEicOejKxa2M7KyMs453syMMDdP1QRWMKlQsKlWTdkrQqP6b2t3xiSv0VXch3n-Nn2_NUYHKaIoEfyJHGxlG14kF7Zgzyl4AWS9C7-zaRKEFHRifZjN5ABTPV_cIFvQ9McMNpp5nDvXqFPI/s1600/setup2.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><br /></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEicOejKxa2M7KyMs453syMMDdP1QRWMKlQsKlWTdkrQqP6b2t3xiSv0VXch3n-Nn2_NUYHKaIoEfyJHGxlG14kF7Zgzyl4AWS9C7-zaRKEFHRifZjN5ABTPV_cIFvQ9McMNpp5nDvXqFPI/s1600/setup2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1600" data-original-width="771" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEicOejKxa2M7KyMs453syMMDdP1QRWMKlQsKlWTdkrQqP6b2t3xiSv0VXch3n-Nn2_NUYHKaIoEfyJHGxlG14kF7Zgzyl4AWS9C7-zaRKEFHRifZjN5ABTPV_cIFvQ9McMNpp5nDvXqFPI/s400/setup2.png" width="192" /></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiRVsUWHJOvkzLAieH4QWQhKiu8WohsgqPtS9KTuE8KOVaah1kKbZJPHVtz2oAAcWB7PIGSoUywcKa1ngkmZuR_qJAmS0-PW5q6pwKWNE7RQZIwAFbrYcexRbxNoKUTWQ1EvEQO8cQlDXg/s1600/setup3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1600" data-original-width="771" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiRVsUWHJOvkzLAieH4QWQhKiu8WohsgqPtS9KTuE8KOVaah1kKbZJPHVtz2oAAcWB7PIGSoUywcKa1ngkmZuR_qJAmS0-PW5q6pwKWNE7RQZIwAFbrYcexRbxNoKUTWQ1EvEQO8cQlDXg/s400/setup3.png" width="192" /></a></div>
<br /></div>
Aart Bikhttp://www.blogger.com/profile/13729409613819182927noreply@blogger.com6tag:blogger.com,1999:blog-7573964893734177670.post-66082550298153160082019-05-04T18:58:00.001-07:002019-05-04T18:58:57.522-07:00Karpov 2294<div dir="ltr" style="text-align: left;" trbidi="on">
<div style="text-align: justify;">
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.</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhmapejwrIdq2lwpfdxK9CB0pHWBrS2D6LfJCq20lDisc_N7tbzxSaQCyMq-LiuNzneIdgN7CuvfO-TEbco8B3CClEcratPis0OlR22vumJ66S_EcxPEOGEWocj-B5obWXYigo-seA89IE/s1600/MVIMG_20190504_184831.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1200" data-original-width="1600" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhmapejwrIdq2lwpfdxK9CB0pHWBrS2D6LfJCq20lDisc_N7tbzxSaQCyMq-LiuNzneIdgN7CuvfO-TEbco8B3CClEcratPis0OlR22vumJ66S_EcxPEOGEWocj-B5obWXYigo-seA89IE/s400/MVIMG_20190504_184831.jpg" width="400" /></a></div>
<br /></div>
Aart Bikhttp://www.blogger.com/profile/13729409613819182927noreply@blogger.com0tag:blogger.com,1999:blog-7573964893734177670.post-69789310627492378392019-05-03T22:19:00.000-07:002019-05-04T18:45:08.911-07:00Autobridge Device<div dir="ltr" style="text-align: left;" trbidi="on">
<div style="text-align: justify;">
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).</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Does anyone else remember these?</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
I could play for hours with this. Amazing how times have changed....</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgh1Us2scqIf_yMSNh5B7ZTspyBdlszTSxsvJY_0HJtk-rroJ7MHuqXIfvVWIBslcE4eNv0T50S6oCZjRBd4TbJ4cmYBaXfB9DwqujIZHqogAQwLQC0qf8wMvAdXwn6rhBAhUnMcBHyBL8/s1600/MVIMG_20190503_220133.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1200" data-original-width="1600" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgh1Us2scqIf_yMSNh5B7ZTspyBdlszTSxsvJY_0HJtk-rroJ7MHuqXIfvVWIBslcE4eNv0T50S6oCZjRBd4TbJ4cmYBaXfB9DwqujIZHqogAQwLQC0qf8wMvAdXwn6rhBAhUnMcBHyBL8/s320/MVIMG_20190503_220133.jpg" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEja2Y0uo6H3jJQP6C81MfbJb0M6f9Tfn3Wu9ZvxTU-VHMOF7xUQrzZYCeJQ5d5rb-nn_XJYAU0QNe_baYSL6_eUyy4dm9MbMyvIcNp40x-ooDCL9V1tttWHtheQ_mcd44McrCiPKyk9RAk/s1600/MVIMG_20190503_220143.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1200" data-original-width="1600" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEja2Y0uo6H3jJQP6C81MfbJb0M6f9Tfn3Wu9ZvxTU-VHMOF7xUQrzZYCeJQ5d5rb-nn_XJYAU0QNe_baYSL6_eUyy4dm9MbMyvIcNp40x-ooDCL9V1tttWHtheQ_mcd44McrCiPKyk9RAk/s320/MVIMG_20190503_220143.jpg" width="320" /></a></div>
<br /></div>
Aart Bikhttp://www.blogger.com/profile/13729409613819182927noreply@blogger.com0tag:blogger.com,1999:blog-7573964893734177670.post-89786701045001528032019-04-16T09:13:00.000-07:002019-04-16T09:25:05.934-07:00Chess for Android: version 6.1.1<div dir="ltr" style="text-align: left;" trbidi="on">
<span style="text-align: justify;">I am gradually rolling out version 6.1.1 of <a href="https://play.google.com/store/apps/developer?id=Aart+Bik" target="_blank">Chess for Android</a> to Google Play. </span><span style="text-align: justify;">Besides some internal cleanup and refactoring, the major new features are:</span><br />
<div style="text-align: justify;">
<ul>
<li>simple FICS client (see details at <a href="http://www.aartbik.com/android_fics.php" target="_blank">Connecting Chess for Android with FICS</a>)</li>
<li>improved electronic chessboard support (DGT/Certabo/Millennium)</li>
<li>rudimentary DGT chess clock support (shows moves)</li>
</ul>
</div>
<div style="text-align: justify;">
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!</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<b><i>A big thank you to my testers!</i></b> 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.</div>
<div style="text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiTf5P6muLs1bnUJSZ9vYlpqq3Y4Hzf9XG-NJrsO7XwEE7c1ycyxphkZ1GVT6FWIWZfjQGig29zJZ6oM6XReIVIutXDxnGulq6rbIWMdvaQfUd2z2SBpTH_oAMjBL_vv2JxUPh0YKQHLhM/s1600/MVIMG_20190414_181728.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1200" data-original-width="1600" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiTf5P6muLs1bnUJSZ9vYlpqq3Y4Hzf9XG-NJrsO7XwEE7c1ycyxphkZ1GVT6FWIWZfjQGig29zJZ6oM6XReIVIutXDxnGulq6rbIWMdvaQfUd2z2SBpTH_oAMjBL_vv2JxUPh0YKQHLhM/s400/MVIMG_20190414_181728.jpg" width="400" /></a></div>
<div style="text-align: justify;">
<br /></div>
</div>
Aart Bikhttp://www.blogger.com/profile/13729409613819182927noreply@blogger.com1tag:blogger.com,1999:blog-7573964893734177670.post-19613071271580814872019-04-10T19:37:00.001-07:002019-04-10T22:01:09.967-07:00DGT 3000<div dir="ltr" style="text-align: left;" trbidi="on">
<div style="text-align: justify;">
This beautiful <a href="http://www.digitalgametechnology.com/index.php/products/clocks1/418-dgt3000" target="_blank">DGT 3000</a> 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! </div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiEekBNMflqrpQHY8bn8Oxu9ow2kJ3LoeD42u5j8cniMe4hPIDUmKdzwFiLehV2CkKyZXDvb2gQ1Z7Hu4zGaVH9tt-41mDm0RRSk7cW3e-iqsj8DQxmHgnZZYODNbZUPWB_oXkqSPkTK2Q/s1600/MVIMG_20190410_192636.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1200" data-original-width="1600" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiEekBNMflqrpQHY8bn8Oxu9ow2kJ3LoeD42u5j8cniMe4hPIDUmKdzwFiLehV2CkKyZXDvb2gQ1Z7Hu4zGaVH9tt-41mDm0RRSk7cW3e-iqsj8DQxmHgnZZYODNbZUPWB_oXkqSPkTK2Q/s400/MVIMG_20190410_192636.jpg" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEggEsIFx9bVtTQlvNL-EZjEiqx3sqasgutnJ1wK6lW_gxuafLdAkG90nK5Nn0rJ9bxUZuNQWk7lrSZ0h5zPCd50W5aEw2IbQ-8i3rCIhqIdkrYLfZRjfInab-SgmAPQprN-2WiO7-iWfhg/s1600/MVIMG_20190410_215617.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1200" data-original-width="1600" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEggEsIFx9bVtTQlvNL-EZjEiqx3sqasgutnJ1wK6lW_gxuafLdAkG90nK5Nn0rJ9bxUZuNQWk7lrSZ0h5zPCd50W5aEw2IbQ-8i3rCIhqIdkrYLfZRjfInab-SgmAPQprN-2WiO7-iWfhg/s400/MVIMG_20190410_215617.jpg" width="400" /></a></div>
<br /></div>
Aart Bikhttp://www.blogger.com/profile/13729409613819182927noreply@blogger.com0tag:blogger.com,1999:blog-7573964893734177670.post-20910756795306532402019-03-31T15:22:00.001-07:002019-03-31T17:09:07.111-07:00<div dir="ltr" style="text-align: left;" trbidi="on">
<div style="text-align: justify;">
It took me a bit longer than planned, but I finally finished the <a href="http://localhost/android_fics.php" target="_blank">alpha version</a> of a <a href="https://www.freechess.org/" target="_blank">FICS</a> (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.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
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 <span style="font-family: "courier new" , "courier" , monospace;">time >= 5 & inc = 1</span> 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.</div>
<div style="text-align: justify;">
<br />
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 parameters. Either decline, or accept and the game starts at once. During the game, both players' names are shown at the bottom of the screen (white always at the bottom) and the board is automatically oriented with the side you are playing down. The status message shows whether it is your turn or the opponent's turn. Chat messages, if any, are shown next to the player's name. Click one king and then the other king to open a dialog to offer a draw or resign. If the opponent offers a draw, use the same mechanism (in that case offering really means accepting). When the game ends, a termination message appears at the bottom of the screen. The game can be saved to SD card or shared with another program as usual.</div>
<div style="text-align: justify;">
<br />
Per FICS policies, all chess engine features are disabled while connected to FICS. To analyze a game with a chess engine, first disconnect from FICS.</div>
<span style="background-color: white; color: #222222; font-family: "arial" , "helvetica" , sans-serif; font-size: x-small; line-height: 19.5px;"></span><br />
<div style="text-align: justify;">
<span style="background-color: white; color: #222222; font-family: "arial" , "helvetica" , sans-serif; font-size: x-small; line-height: 19.5px;"><br /></span></div>
<span style="background-color: white; color: #222222; font-family: "arial" , "helvetica" , sans-serif; font-size: x-small; line-height: 19.5px;">
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhi0Hb-SJIgBX3j9ticRQaGpz7qXxdW9ukVHb8MCYRNf2Tle0getyWW_Px12pt4rOKeM3bAuDvzghOQe8pLdBiSwSAY-I3_mL2RHvhQrVICSJIBTUYuj2Q_jc6c74mBgDly-y1n2oM0HwA/s1600/fics1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1600" data-original-width="900" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhi0Hb-SJIgBX3j9ticRQaGpz7qXxdW9ukVHb8MCYRNf2Tle0getyWW_Px12pt4rOKeM3bAuDvzghOQe8pLdBiSwSAY-I3_mL2RHvhQrVICSJIBTUYuj2Q_jc6c74mBgDly-y1n2oM0HwA/s400/fics1.png" width="225" /></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjvSUKQow3_fsyoQD2gUXya38EQVDBTVa_RrpRRoGRNJSC1OHLgLVfLCwMW6RgnYP_pu_C92vYUXEX-Rxs3Amhnf6evU7kyF9WI5CXv5-bY1rQ4JC2ohPvkqfk7VQP-f3oU36ZAdwR31po/s1600/fics2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1600" data-original-width="900" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjvSUKQow3_fsyoQD2gUXya38EQVDBTVa_RrpRRoGRNJSC1OHLgLVfLCwMW6RgnYP_pu_C92vYUXEX-Rxs3Amhnf6evU7kyF9WI5CXv5-bY1rQ4JC2ohPvkqfk7VQP-f3oU36ZAdwR31po/s400/fics2.png" width="225" /></a></div>
<br />
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<span style="color: #14171a; font-family: 'Segoe UI', Arial, sans-serif; font-size: 14px; line-height: 20px; text-align: start; white-space: pre-wrap;">Below you see my FICS testing setup without bothering online players. Chess for Android on a tablet connected to the Millennium chess board and as guest to FICS. Another test account on Mobialia Chess on the web.
</span><br />
<span style="color: #14171a; font-family: 'Segoe UI', Arial, sans-serif; font-size: 14px; line-height: 20px; text-align: start; white-space: pre-wrap;"><br /></span>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjz_BHtNaBwaYpg3g3JmuI66HlZqS2-TcbU0bORgCnnF4lek2K0K7TT791g0ojaKhJ9TqHbXbYQHJtCPdmmGNIDQC8QTYBV-Phfe2vEZOH7r4VPJLOvJBGQmSJLDp3ajXFT6dTVJCCc1Es/s1600/MVIMG_20190331_163443.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1200" data-original-width="1600" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjz_BHtNaBwaYpg3g3JmuI66HlZqS2-TcbU0bORgCnnF4lek2K0K7TT791g0ojaKhJ9TqHbXbYQHJtCPdmmGNIDQC8QTYBV-Phfe2vEZOH7r4VPJLOvJBGQmSJLDp3ajXFT6dTVJCCc1Es/s400/MVIMG_20190331_163443.jpg" width="400" /></a></div>
<span style="color: #14171a; font-family: 'Segoe UI', Arial, sans-serif; font-size: 14px; line-height: 20px; text-align: start; white-space: pre-wrap;"><br /></span>
<div>
<span style="color: #14171a; font-family: 'Segoe UI', Arial, sans-serif; font-size: 14px; line-height: 20px; text-align: start; white-space: pre-wrap;"><br /></span></div>
</div>
<div style="text-align: justify;">
<br /></div>
</span></div>
Aart Bikhttp://www.blogger.com/profile/13729409613819182927noreply@blogger.com2