<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss'><id>tag:blogger.com,1999:blog-8406766</id><updated>2010-02-16T09:34:00.248-08:00</updated><title type='text'>Martin Bennedik</title><subtitle type='html'></subtitle><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8406766/posts/default'/><link rel='alternate' type='text/html' href='http://www.bennedik.de/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/8406766/posts/default?start-index=26&amp;max-results=25'/><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://www.bennedik.de/atom.xml'/><author><name>Martin Bennedik</name><uri>http://www.blogger.com/profile/10058594370176420543</uri><email>noreply@blogger.com</email></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>93</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-8406766.post-8503222407891892624</id><published>2010-02-16T09:34:00.001-08:00</published><updated>2010-02-16T09:34:00.335-08:00</updated><title type='text'>Aquarium to support Xfcc</title><content type='html'>&lt;p&gt;&lt;a href="http://www.xfcc.org" target="_blank"&gt;Xfcc&lt;/a&gt; is the standard for web services for correspondence chess, which I invented back in 2003, when &lt;a href="http://en.wikipedia.org/wiki/SOAP_(protocol)" target="_blank"&gt;web services&lt;/a&gt; were the latest and hottest technology.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.chessbase.com" target="_blank"&gt;Chessbase&lt;/a&gt;, the biggest vendor of chess software, has been supporting Xfcc since Chessbase 10.&lt;/p&gt;  &lt;p&gt;Now the second biggest vendor of chess software, &lt;a href="http://www.chessok.com/" target="_blank"&gt;ChessOK&lt;/a&gt;, is set to implement Xfcc in its Aquarium software.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.chesscafe.com/chessok/chessok.htm" target="_blank"&gt;An article at Chesscafe&lt;/a&gt; has all the details. I am impressed with their idea of linking the analysis in your local database with the games on the server.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8406766-8503222407891892624?l=www.bennedik.de%2Findex.html' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/8406766/8503222407891892624/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=8406766&amp;postID=8503222407891892624' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8406766/posts/default/8503222407891892624'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8406766/posts/default/8503222407891892624'/><link rel='alternate' type='text/html' href='http://www.bennedik.de/2010/02/aquarium-to-support-xfcc.html' title='Aquarium to support Xfcc'/><author><name>Martin Bennedik</name><uri>http://www.blogger.com/profile/10058594370176420543</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16926799687919114217'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8406766.post-4778209430419945023</id><published>2010-01-07T08:17:00.001-08:00</published><updated>2010-01-07T08:17:07.180-08:00</updated><title type='text'>Silverlight chess board now running on Linux</title><content type='html'>&lt;p&gt;I published an updated build 1.4.0.5 of my &lt;a href="http://www.bennedik.de/Silverboard.html" target="_blank"&gt;Silverlight chess board&lt;/a&gt; that runs on Linux, using Firefox and &lt;a href="http://www.go-mono.com/moonlight/" target="_blank"&gt;Moonlight 2&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Here is a screenshot from an Ubuntu virtual machine:&lt;/p&gt;  &lt;p&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://www.bennedik.de/images/SilverlightchessboardnowrunningonLinux_F277/image.png" width="644" height="450" /&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8406766-4778209430419945023?l=www.bennedik.de%2Findex.html' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/8406766/4778209430419945023/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=8406766&amp;postID=4778209430419945023' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8406766/posts/default/4778209430419945023'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8406766/posts/default/4778209430419945023'/><link rel='alternate' type='text/html' href='http://www.bennedik.de/2010/01/silverlight-chess-board-now-running-on.html' title='Silverlight chess board now running on Linux'/><author><name>Martin Bennedik</name><uri>http://www.blogger.com/profile/10058594370176420543</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16926799687919114217'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8406766.post-934778188427908842</id><published>2009-09-13T03:01:00.001-07:00</published><updated>2009-09-13T03:01:31.660-07:00</updated><title type='text'>Silverlight chess board 1.4</title><content type='html'>&lt;p&gt;I released version 1.4 of the &lt;a href="http://www.bennedik.de/Silverboard.html" target="_blank"&gt;Silverlight chess board&lt;/a&gt; with the following updates:&lt;/p&gt;  &lt;li&gt;Added support for international characters in PGN files (according to the &lt;a href="http://en.wikipedia.org/wiki/Portable_Game_Notation"&gt;PGN standard&lt;/a&gt; section 4.1, a subset of &lt;a href="http://en.wikipedia.org/wiki/ISO/IEC_8859-1"&gt;ISO 8859/1 Latin 1&lt;/a&gt; is used). &lt;/li&gt;  &lt;li&gt;Added a new parameter &amp;quot;piece&amp;quot; to allow customized piece characters used in the notation, instead of the English ones used by default.&lt;/li&gt;  &lt;li&gt;Better error message when a PGN file was not found. &lt;/li&gt;  &lt;li&gt;Put in a work around for an IE8 standard modes bug, which caused the notation not to wrap lines correctly in some cases.&lt;/li&gt;  &lt;p&gt;You can find the updated documentation at the &lt;a href="http://www.bennedik.de/Silverboard.html"&gt;Silverlight chess board home page&lt;/a&gt;.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8406766-934778188427908842?l=www.bennedik.de%2Findex.html' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/8406766/934778188427908842/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=8406766&amp;postID=934778188427908842' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8406766/posts/default/934778188427908842'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8406766/posts/default/934778188427908842'/><link rel='alternate' type='text/html' href='http://www.bennedik.de/2009/09/silverlight-chess-board-14.html' title='Silverlight chess board 1.4'/><author><name>Martin Bennedik</name><uri>http://www.blogger.com/profile/10058594370176420543</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16926799687919114217'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8406766.post-1685827678893827800</id><published>2009-09-01T10:55:00.001-07:00</published><updated>2009-09-01T10:55:36.230-07:00</updated><title type='text'>Validation and the ModalPopupExtender</title><content type='html'>&lt;p&gt;Two quick tips if you are using the &lt;a href="http://www.asp.net/AJAX/AjaxControlToolkit/Samples/ModalPopup/ModalPopup.aspx" target="_blank"&gt;ModalPopupExtender&lt;/a&gt; from the ASP.NET Ajax control toolkit:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;If you need to do a postback from inside the panel set as your popup control, wrap the contents of the panel into an UpdatePanel.&lt;/li&gt;    &lt;li&gt;If you add validation controls inside the panel set as your popup control, make sure the button used as the target control has CausesValidation set to false.&lt;/li&gt; &lt;/ul&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8406766-1685827678893827800?l=www.bennedik.de%2Findex.html' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/8406766/1685827678893827800/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=8406766&amp;postID=1685827678893827800' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8406766/posts/default/1685827678893827800'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8406766/posts/default/1685827678893827800'/><link rel='alternate' type='text/html' href='http://www.bennedik.de/2009/09/validation-and-modalpopupextender.html' title='Validation and the ModalPopupExtender'/><author><name>Martin Bennedik</name><uri>http://www.blogger.com/profile/10058594370176420543</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16926799687919114217'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8406766.post-1576399321680360066</id><published>2009-08-17T07:54:00.001-07:00</published><updated>2009-08-17T07:54:33.117-07:00</updated><title type='text'>Surface development</title><content type='html'>&lt;p&gt;In the last couple of months I have been contracting with &lt;a href="http://www.syzygy.de/" target="_blank"&gt;syzygy&lt;/a&gt; and developed some applications for &lt;a href="http://en.wikipedia.org/wiki/Microsoft_Surface" target="_blank"&gt;Microsoft Surface&lt;/a&gt;. The first Surface unit with these applications was deployed last week at the opening of the new O&lt;sub&gt;2&lt;/sub&gt; flagship store in Cologne.&lt;/p&gt;  &lt;p align="center"&gt;&lt;object width="455" height="256" class="swf_holder" type="application/x-shockwave-flash" data="http://vimeo.com/moogaloop.swf?clip_id=6099457&amp;amp;server=vimeo.com&amp;autoplay=0&amp;amp;show_title=0&amp;amp;show_byline=0&amp;amp;show_portrait=0&amp;amp;color=ffdc00&amp;amp;fullscreen=1"&gt; 					&lt;param name="quality" value="high" /&gt; 					&lt;param name="allowfullscreen" value="true" /&gt; 					&lt;param name="allowscriptaccess" value="always" /&gt; 					&lt;param name="wmode" value="transparent" /&gt; 					&lt;param name="scale" value="showAll" /&gt; 					&lt;param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=6099457&amp;amp;server=vimeo.com&amp;amp;autoplay=0&amp;amp;show_title=0&amp;amp;show_byline=0&amp;amp;show_portrait=0&amp;amp;color=ffdc00&amp;amp;fullscreen=1" /&gt; &lt;/object&gt;&lt;/p&gt;  &lt;p&gt;According to Microsoft, this was the first Surface deployment as a point of sales system in Germany.&lt;/p&gt;  &lt;p&gt;I developed the mobile phone advisor and lottery applications, and co-developed the custom application launcher and media player applications.&lt;/p&gt;  &lt;p align="center"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="surface2" border="0" alt="surface2" src="http://www.bennedik.de/images/Surfacedevelopment_EA58/surface2.jpg" width="260" height="200" /&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="surface3" border="0" alt="surface3" src="http://www.bennedik.de/images/Surfacedevelopment_EA58/surface3.jpg" width="260" height="200" /&gt;&lt;/p&gt;  &lt;p align="center"&gt;&amp;#160;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="surface1" border="0" alt="surface1" src="http://www.bennedik.de/images/Surfacedevelopment_EA58/surface1.jpg" width="260" height="200" /&gt;&amp;#160;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="surface4" border="0" alt="surface4" src="http://www.bennedik.de/images/Surfacedevelopment_EA58/surface4.jpg" width="260" height="200" /&gt;&lt;/p&gt;  &lt;p&gt;Syzygy has more information about the project at &lt;a href="http://www.syzygy.de/surface/" target="_blank"&gt;a special site&lt;/a&gt; (in German), and &lt;a href="http://www.syzygy.de/surface/syzygy_o2_surface_20090814.pdf" target="_blank"&gt;in a PDF&lt;/a&gt; (in English).&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8406766-1576399321680360066?l=www.bennedik.de%2Findex.html' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/8406766/1576399321680360066/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=8406766&amp;postID=1576399321680360066' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8406766/posts/default/1576399321680360066'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8406766/posts/default/1576399321680360066'/><link rel='alternate' type='text/html' href='http://www.bennedik.de/2009/08/surface-development.html' title='Surface development'/><author><name>Martin Bennedik</name><uri>http://www.blogger.com/profile/10058594370176420543</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16926799687919114217'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8406766.post-7215707805205674798</id><published>2009-08-13T11:00:00.001-07:00</published><updated>2009-08-13T11:00:21.871-07:00</updated><title type='text'>Surface teaser</title><content type='html'>&lt;p&gt;Here is a teaser image of what I have been up to the last couple of months. Stay tuned for more.&lt;/p&gt;  &lt;p&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="IMG_0057" border="0" alt="IMG_0057" src="http://www.bennedik.de/images/Surfaceteaser_11929/IMG_0057.jpg" width="350" height="457" /&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8406766-7215707805205674798?l=www.bennedik.de%2Findex.html' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/8406766/7215707805205674798/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=8406766&amp;postID=7215707805205674798' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8406766/posts/default/7215707805205674798'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8406766/posts/default/7215707805205674798'/><link rel='alternate' type='text/html' href='http://www.bennedik.de/2009/08/surface-teaser.html' title='Surface teaser'/><author><name>Martin Bennedik</name><uri>http://www.blogger.com/profile/10058594370176420543</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16926799687919114217'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8406766.post-593908172481317739</id><published>2009-05-07T03:06:00.001-07:00</published><updated>2009-05-07T03:06:20.654-07:00</updated><title type='text'>Silverlight chess board 1.3 with full support for variations</title><content type='html'>&lt;p&gt;Today I released version 1.3 of the &lt;a href="http://www.bennedik.de/Silverboard.html" target="_blank"&gt;Silverlight chess board&lt;/a&gt; with the following changes:&lt;/p&gt;  &lt;li&gt;Added full support for variations. Variations can be replayed by clicking with the mouse on a variation in the notation div. &lt;/li&gt;  &lt;li&gt;An additional CSS class &amp;quot;.variation&amp;quot; can be used to format variations. &lt;/li&gt;  &lt;li&gt;Added keyboard support for replaying when the focus is on the notation div. Available keys depend on the browser being used. I have found that the left and right cursor keys work fine in Internet Explorer and Firefox, but not in Google Chrome.&lt;/li&gt;  &lt;p&gt;You can find an updated sample and documentation at the &lt;a href="http://www.bennedik.de/Silverboard.html" target="_blank"&gt;Silverlight chess board home page&lt;/a&gt;.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8406766-593908172481317739?l=www.bennedik.de%2Findex.html' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/8406766/593908172481317739/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=8406766&amp;postID=593908172481317739' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8406766/posts/default/593908172481317739'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8406766/posts/default/593908172481317739'/><link rel='alternate' type='text/html' href='http://www.bennedik.de/2009/05/silverlight-chess-board-13-with-full.html' title='Silverlight chess board 1.3 with full support for variations'/><author><name>Martin Bennedik</name><uri>http://www.blogger.com/profile/10058594370176420543</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16926799687919114217'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8406766.post-2315625882239152826</id><published>2009-05-05T03:46:00.001-07:00</published><updated>2009-05-05T03:46:38.387-07:00</updated><title type='text'>Back in LA</title><content type='html'>&lt;p&gt;I am back in &lt;a href="http://www.bennedik.de/2008/10/i-am-in-la.html"&gt;LA&lt;/a&gt;. This time I took &lt;a href="http://www.rockstargames.com/midnightclubLA/" target="_blank"&gt;my car&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.bennedik.de/images/BackinLA_B011/ConventionCenter.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="ConventionCenter" border="0" alt="ConventionCenter" src="http://www.bennedik.de/images/BackinLA_B011/ConventionCenter_thumb.jpg" width="244" height="139" /&gt;&lt;/a&gt;&lt;a href="http://www.bennedik.de/images/BackinLA_B011/2978997267_ed188ca368_b.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="2978997267_ed188ca368_b" border="0" alt="2978997267_ed188ca368_b" src="http://www.bennedik.de/images/BackinLA_B011/2978997267_ed188ca368_b_thumb.jpg" width="244" height="139" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;No PDC.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.bennedik.de/images/BackinLA_B011/Hotel2.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Hotel2" border="0" alt="Hotel2" src="http://www.bennedik.de/images/BackinLA_B011/Hotel2_thumb.jpg" width="244" height="184" /&gt;&lt;/a&gt;&lt;a href="http://www.bennedik.de/images/BackinLA_B011/DSCF0823.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="DSCF0823" border="0" alt="DSCF0823" src="http://www.bennedik.de/images/BackinLA_B011/DSCF0823_thumb.jpg" width="244" height="184" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Rebranded hotel.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.bennedik.de/images/BackinLA_B011/Hotel1.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Hotel1" border="0" alt="Hotel1" src="http://www.bennedik.de/images/BackinLA_B011/Hotel1_thumb.jpg" width="233" height="244" /&gt;&lt;/a&gt;&lt;a href="http://www.bennedik.de/images/BackinLA_B011/DSCF0822.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="DSCF0822" border="0" alt="DSCF0822" src="http://www.bennedik.de/images/BackinLA_B011/DSCF0822_thumb.jpg" width="184" height="244" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The advertising is gone.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.bennedik.de/images/BackinLA_B011/CityHall2.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="CityHall2" border="0" alt="CityHall2" src="http://www.bennedik.de/images/BackinLA_B011/CityHall2_thumb.jpg" width="239" height="244" /&gt;&lt;/a&gt;&lt;a href="http://www.bennedik.de/images/BackinLA_B011/DSCF0872.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="DSCF0872" border="0" alt="DSCF0872" src="http://www.bennedik.de/images/BackinLA_B011/DSCF0872_thumb.jpg" width="184" height="244" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;City hall.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.bennedik.de/images/BackinLA_B011/ConcertHall.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="ConcertHall" border="0" alt="ConcertHall" src="http://www.bennedik.de/images/BackinLA_B011/ConcertHall_thumb.jpg" width="244" height="139" /&gt;&lt;/a&gt;&lt;a href="http://www.bennedik.de/images/BackinLA_B011/DSCF0868.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="DSCF0868" border="0" alt="DSCF0868" src="http://www.bennedik.de/images/BackinLA_B011/DSCF0868_thumb.jpg" width="244" height="157" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Walt Disney Concert Hall.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.bennedik.de/images/BackinLA_B011/PoliceCar.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="PoliceCar" border="0" alt="PoliceCar" src="http://www.bennedik.de/images/BackinLA_B011/PoliceCar_thumb.jpg" width="244" height="139" /&gt;&lt;/a&gt;&lt;a href="http://www.bennedik.de/images/BackinLA_B011/DSCF0873.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="DSCF0873" border="0" alt="DSCF0873" src="http://www.bennedik.de/images/BackinLA_B011/DSCF0873_thumb.jpg" width="244" height="138" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;LAPD police car.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.bennedik.de/images/BackinLA_B011/Bus.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Bus" border="0" alt="Bus" src="http://www.bennedik.de/images/BackinLA_B011/Bus_thumb.jpg" width="244" height="139" /&gt;&lt;/a&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;a href="http://www.bennedik.de/images/BackinLA_B011/DSCF0874.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="DSCF0874" border="0" alt="DSCF0874" src="http://www.bennedik.de/images/BackinLA_B011/DSCF0874_thumb.jpg" width="244" height="148" /&gt;&lt;/a&gt;&amp;#160; &lt;/p&gt;  &lt;p&gt;Bus.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.bennedik.de/images/BackinLA_B011/SportCenter.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="SportCenter" border="0" alt="SportCenter" src="http://www.bennedik.de/images/BackinLA_B011/SportCenter_thumb.jpg" width="244" height="139" /&gt;&lt;/a&gt;&lt;a href="http://www.bennedik.de/images/BackinLA_B011/DSCF0922.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="DSCF0922" border="0" alt="DSCF0922" src="http://www.bennedik.de/images/BackinLA_B011/DSCF0922_thumb.jpg" width="244" height="137" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Staples Center (rebranded).&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.bennedik.de/images/BackinLA_B011/UnionStation2.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="UnionStation2" border="0" alt="UnionStation2" src="http://www.bennedik.de/images/BackinLA_B011/UnionStation2_thumb.jpg" width="208" height="244" /&gt;&lt;/a&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;a href="http://www.bennedik.de/images/BackinLA_B011/DSCF0898.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="DSCF0898" border="0" alt="DSCF0898" src="http://www.bennedik.de/images/BackinLA_B011/DSCF0898_thumb.jpg" width="184" height="244" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Union station.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8406766-2315625882239152826?l=www.bennedik.de%2Findex.html' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/8406766/2315625882239152826/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=8406766&amp;postID=2315625882239152826' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8406766/posts/default/2315625882239152826'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8406766/posts/default/2315625882239152826'/><link rel='alternate' type='text/html' href='http://www.bennedik.de/2009/05/back-in-la.html' title='Back in LA'/><author><name>Martin Bennedik</name><uri>http://www.blogger.com/profile/10058594370176420543</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16926799687919114217'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8406766.post-3406634303527082874</id><published>2009-04-22T04:00:00.001-07:00</published><updated>2009-04-22T04:00:37.048-07:00</updated><title type='text'>Silverlight chess board 1.2</title><content type='html'>&lt;p&gt;Today I released version 1.2 of the &lt;a href="http://www.bennedik.de/Silverboard.html" target="_blank"&gt;Silverlight chess board&lt;/a&gt; with the following changes:&lt;/p&gt;  &lt;li&gt;Added optional game header to appear in a div specified with the &amp;quot;header&amp;quot; parameter. &lt;/li&gt;  &lt;li&gt;PGN comments in curly braces are now supported and appear in the notation div. &lt;/li&gt;  &lt;li&gt;PGN variations are now partly supported and appear as comments. Full support for PGN variations is planned for a future release. &lt;/li&gt;  &lt;li&gt;CSS classes &amp;quot;.move&amp;quot; and &amp;quot;.comment&amp;quot; are now used for moves and comments and allow formatting. &lt;/li&gt;  &lt;li&gt;Fixed an issue where the current move was not highlighted in the notation.&lt;/li&gt;  &lt;p&gt;You can find an updated sample and documentation at the &lt;a href="http://www.bennedik.de/Silverboard.html" target="_blank"&gt;Silverlight chess board home page&lt;/a&gt;.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8406766-3406634303527082874?l=www.bennedik.de%2Findex.html' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/8406766/3406634303527082874/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=8406766&amp;postID=3406634303527082874' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8406766/posts/default/3406634303527082874'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8406766/posts/default/3406634303527082874'/><link rel='alternate' type='text/html' href='http://www.bennedik.de/2009/04/silverlight-chess-board-12.html' title='Silverlight chess board 1.2'/><author><name>Martin Bennedik</name><uri>http://www.blogger.com/profile/10058594370176420543</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16926799687919114217'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8406766.post-6329743221881536482</id><published>2009-04-08T01:57:00.001-07:00</published><updated>2009-04-08T01:57:12.811-07:00</updated><title type='text'>Internet Explorer 8 and the ASP.NET menu control</title><content type='html'>&lt;p&gt;I participated in the beta test of Internet Explorer 8.&amp;#160; I am also running &lt;a href="http://www.iccf-webchess.com/" target="_blank"&gt;a site&lt;/a&gt; built with ASP.NET. So one thing I did during the beta test was to test the site with the various Internet Explorer 8 beta versions.&lt;/p&gt;  &lt;p&gt;The site was already updated some time ago to use standards mode instead of quirks mode, and renders fine on all other major browsers, including Firefox, Opera, Safari, and Chrome. Internet Explorer 8 is the first version of Internet Explorer to render in standards mode by default, so everything should be fine, at least in theory.&lt;/p&gt;  &lt;p&gt;Beta 1 of Internet Explorer 8 had so many rendering issues that I quickly stopped the test and decided to wait for beta 2. In beta 2 there were much less issues, but some remained. Microsoft at the time recommended to use some meta tags on the site to ensure proper rendering in IE 8. However, these meta tags basically put IE 8 in compatibility mode, which is like running the IE 7 rendering engine in quirks mode – clearly not the right solution for a standards mode based site and an IE 8 trying to render in standards mode.&lt;/p&gt;  &lt;p&gt;Therefore I decided that the remaining issues must be genuine bugs in IE 8 and reported those via &lt;a href="http://connect.microsoft.com/" target="_blank"&gt;Connect&lt;/a&gt;. One of the major issues I found was that the &lt;a href="https://connect.microsoft.com/IE/feedback/ViewFeedback.aspx?FeedbackID=364930" target="_blank"&gt;ASP.NET menu control doesn’t render correctly&lt;/a&gt; in IE 8.&lt;/p&gt;  &lt;p&gt;The IE 8 team analysed the issue and found that this is actually caused by ASP.NET. The menu control analyzes the user agent and renders differently for IE, expecting that IE is rendering in quirks mode.&lt;/p&gt;  &lt;p&gt;Therefore the ASP.NET team has now built a fix for the .NET framework, correcting the ASP.NET menu control so that it renders correctly for IE 8. As part of the fix process I had to test a pre-release version of the fixed .NET framework.&lt;/p&gt;  &lt;p&gt;You can find this now described in the Microsoft knowledge base &lt;a href="http://support.microsoft.com/kb/962351/en-us" target="_blank"&gt;KB 962351&lt;/a&gt;, where you can also download a hotfix that you can install on your server to make sure that the menu is rendered correctly in IE 8.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8406766-6329743221881536482?l=www.bennedik.de%2Findex.html' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/8406766/6329743221881536482/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=8406766&amp;postID=6329743221881536482' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8406766/posts/default/6329743221881536482'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8406766/posts/default/6329743221881536482'/><link rel='alternate' type='text/html' href='http://www.bennedik.de/2009/04/internet-explorer-8-and-aspnet-menu.html' title='Internet Explorer 8 and the ASP.NET menu control'/><author><name>Martin Bennedik</name><uri>http://www.blogger.com/profile/10058594370176420543</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16926799687919114217'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8406766.post-9196558161662203513</id><published>2009-02-10T04:56:00.001-08:00</published><updated>2009-02-10T04:56:31.041-08:00</updated><title type='text'>Validation with hidden TabPanels in the ASP.NET Ajax Control Toolkit TabContainer</title><content type='html'>&lt;p&gt;This one is a bit of a never ending story, unfortunately. After having found out &lt;a href="http://www.bennedik.de/2009/02/how-to-hide-tabpanels-of-aspnet-ajax.html" target="_blank"&gt;how to hide tabs&lt;/a&gt;, I &lt;a href="http://www.bennedik.de/2008/09/validation-in-aspnet-ajax-control.html" target="_blank"&gt;added validation logic&lt;/a&gt; to my TabContainer, only to find another bug:&lt;/p&gt;  &lt;p&gt;When hiding a TabPanel by setting the Enabled property to false, any validation controls on that panel are still enabled. This is not what I expected, as with other types of panels, the Enabled property usually cascades down. Of course this results in validation errors displayed for hidden tabs.&lt;/p&gt;  &lt;p&gt;I am now using the following (clumsy) work around to disable tabs:&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;div style="font-family: courier new; background: white; color: black; font-size: 10pt"&gt;   &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;static&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; DisableTab(&lt;span style="color: #2b91af"&gt;TabPanel&lt;/span&gt; panel)&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; panel.Enabled = &lt;span style="color: blue"&gt;false&lt;/span&gt;;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: green"&gt;//work around TabPanel bug and disable the validation controls&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; DisableValidationControls(panel);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;private&lt;/span&gt; &lt;span style="color: blue"&gt;static&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; DisableValidationControls(&lt;span style="color: #2b91af"&gt;Control&lt;/span&gt; c)&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;foreach&lt;/span&gt; (&lt;span style="color: #2b91af"&gt;Control&lt;/span&gt; child &lt;span style="color: blue"&gt;in&lt;/span&gt; c.Controls)&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;if&lt;/span&gt; (child &lt;span style="color: blue"&gt;is&lt;/span&gt; &lt;span style="color: #2b91af"&gt;BaseValidator&lt;/span&gt;)&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ((&lt;span style="color: #2b91af"&gt;BaseValidator&lt;/span&gt;)child).Enabled = &lt;span style="color: blue"&gt;false&lt;/span&gt;;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;else&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; DisableValidationControls(child);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;&lt;a href="http://www.teachsam.de/deutsch/d_literatur/d_aut/kaf/kaf_gib.htm" target="_blank"&gt;Lets hope&lt;/a&gt; that the quality of the control toolkit gets improved soon.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8406766-9196558161662203513?l=www.bennedik.de%2Findex.html' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/8406766/9196558161662203513/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=8406766&amp;postID=9196558161662203513' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8406766/posts/default/9196558161662203513'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8406766/posts/default/9196558161662203513'/><link rel='alternate' type='text/html' href='http://www.bennedik.de/2009/02/validation-with-hidden-tabpanels-in.html' title='Validation with hidden TabPanels in the ASP.NET Ajax Control Toolkit TabContainer'/><author><name>Martin Bennedik</name><uri>http://www.blogger.com/profile/10058594370176420543</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16926799687919114217'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8406766.post-7864358795211940668</id><published>2009-02-05T04:35:00.001-08:00</published><updated>2009-02-10T05:01:15.429-08:00</updated><title type='text'>How to hide TabPanels of the ASP.NET Ajax control toolkit’s TabContainer</title><content type='html'>&lt;p&gt;When developing a user interface with tabs, sometimes you want to hide individual tabs from the user. For example a tab may be shown only to some users, or for some objects with extra properties. When I was implementing this recently with the &lt;a href="http://www.asp.net/AJAX/AjaxControlToolkit/Samples/Tabs/Tabs.aspx" target="_blank"&gt;ASP.NET Ajax control toolkit implementation of tabs&lt;/a&gt;, I ran into several issues. Here is how I got it to work:&lt;/p&gt;  &lt;p&gt;When hiding a TabPanel from the server side code, I considered two options: Remove the TabPanel from the TabContainers collection of TabPanels, or set the Visible property of the TabPanel to false. Both these options follow common conventions of the .NET framework, but it turns out that both are wrong here.&lt;/p&gt;  &lt;p&gt;First I removed the TabPanel from the TabContainer. However after a postback the server always complained about the view state (I am not sure about the cause of this – if you have any idea, please let me know).&lt;/p&gt;  &lt;p&gt;Next I tried to set the Visible property of the TabPanel to false. This worked fine with a postback at first. However, the tabs implementation has another issue with postbacks: after each postback it forgets the currently active panel, and sets this back to the first panel. There are two ways to solve this issue: Use an UpdatePanel inside each TabPanel that does postbacks, or in the event handler of the postback (or auto postback), reset the currently active tab panel.&lt;/p&gt;  &lt;p&gt;In my case, I had some controls on the TabPanels that would not work inside an UpdatePanel, so I had to use the work around of resetting the currently active tab panel. However, it turns out that setting the active tab panel does not work if you have set some tab panel’s visible property to false. As ASP.NET is not rendering invisible controls to the client, the tab’s Javascript implementation is not aware of them. This Javascript however seems to be implemented in a naive way, and just counts through the panels. For example if panel 2 is hidden, and you set the active panel to 3, the Javascript is actually going to show panel 4, as it is not aware of the 2nd hidden panel.&lt;/p&gt;  &lt;p&gt;I inspected the Javascript code a little bit and found that the code is actually aware of the Enabled property of the panels. I would have expected setting the Enabled property to false would result in a grayed out panel, as is the convention. However, the panels are really not shown at all. In my case the following work around was possible:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Set the Enabled property of a TabPanel to false to hide it. &lt;/li&gt;    &lt;li&gt;Wrap every TabPanel with postback or auto postbacks into an UpdatePanel. &lt;/li&gt;    &lt;li&gt;Where UpdatePanel is not possible, in the event handler of the (auto) postback, reset the TabContainer’s active tab panel. &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;&lt;font color="#ff0000"&gt;WARNING&lt;/font&gt;: This work around comes at a price. Because you are setting the Enabled property to false, and not the Visible property, the “hidden” tabs are actually send to the client. While they are not rendered, the user can still access the contents with a simple “view source” in his browser. Therefore this work around should not be used, if the content of the hidden tabs is secret or contains other sensitive information. &lt;font color="#ff0000"&gt;END OF WARNING&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;I hope that the quality of the tabs implementation is increased in the next version, specifically:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Fix the issue of the TabContainer forgetting the active tab on postbacks (issue &lt;a href="http://www.codeplex.com/AjaxControlToolkit/WorkItem/View.aspx?WorkItemId=8255" target="_blank"&gt;8255&lt;/a&gt; and &lt;a href="http://www.codeplex.com/AjaxControlToolkit/WorkItem/View.aspx?WorkItemId=12838" target="_blank"&gt;12838&lt;/a&gt;). &lt;/li&gt;    &lt;li&gt;Handle the Visible property of the TabPanel correctly, avoiding the security issue with the Enabled property. &lt;/li&gt;    &lt;li&gt;Handle the Enabled property of the TabPanel as by convention, i.e. show the panels grayed out (issue &lt;a href="http://www.codeplex.com/AjaxControlToolkit/WorkItem/View.aspx?WorkItemId=9171" target="_blank"&gt;9171&lt;/a&gt;). &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;I have added links to the control toolkit issue tracker at Codeplex, please consider voting for the issues.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Update&lt;/strong&gt;: There is also an issue with validation, see &lt;a href="http://www.bennedik.de/2009/02/validation-with-hidden-tabpanels-in.html" target="_blank"&gt;my separate post&lt;/a&gt;.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8406766-7864358795211940668?l=www.bennedik.de%2Findex.html' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/8406766/7864358795211940668/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=8406766&amp;postID=7864358795211940668' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8406766/posts/default/7864358795211940668'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8406766/posts/default/7864358795211940668'/><link rel='alternate' type='text/html' href='http://www.bennedik.de/2009/02/how-to-hide-tabpanels-of-aspnet-ajax.html' title='How to hide TabPanels of the ASP.NET Ajax control toolkit’s TabContainer'/><author><name>Martin Bennedik</name><uri>http://www.blogger.com/profile/10058594370176420543</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16926799687919114217'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8406766.post-7415071922698447720</id><published>2009-01-18T09:10:00.001-08:00</published><updated>2009-01-18T09:13:35.786-08:00</updated><title type='text'>An update to the Silverlight chess board</title><content type='html'>&lt;p&gt;I recently published version 1.1 of my Silverlight chess board with the following new features:&lt;/p&gt;  &lt;li&gt;Added flip button to show the board from Black's point of view. &lt;/li&gt;  &lt;li&gt;Added animation when flipping the board. &lt;/li&gt;  &lt;li&gt;Support keyboard shortcuts page up and page down to switch between games. &lt;/li&gt;  &lt;li&gt;Added arrows parameter to turn off arrows. &lt;/li&gt;  &lt;li&gt;Added light and dark parameters to customize board colors. &lt;/li&gt;  &lt;li&gt;Added a small help screen showing the copyright and keyboard short cuts. &lt;/li&gt;  &lt;li&gt;Support PGN files with embedded FEN tag for specifying the starting position used for game fragments and solutions to problems or studies. &lt;/li&gt;  &lt;li&gt;Added flip parameter to flip the board.&lt;/li&gt;  &lt;p&gt;Here is a sample for the new game fragment support, a little Zugzwang master piece played by an old friend:&lt;/p&gt;  &lt;div align="center"&gt;&lt;object id="chess" data="data:application/x-silverlight," type="application/x-silverlight-2" width="350" height="350"&gt;&lt;param name="source" value="http://www.bennedik.de/ClientBin/SilverBoard.xap" /&gt;&lt;param name="background" value="white" /&gt;&lt;param name="initParams" value="pgnfile=Heinelt.pgn, ply=0" /&gt;&lt;a href="http://go.microsoft.com/fwlink/?LinkID=124807" style="text-decoration: none;"&gt;&lt;img src="http://go.microsoft.cofm/fwlink/?LinkId=108181" alt="Get Microsoft Silverlight" style="border-style: none" /&gt;&lt;/a&gt;&lt;/object&gt;&lt;iframe style='visibility: hidden; height: 0; width: 0; border: 0px'&gt;&lt;/iframe&gt;&lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8406766-7415071922698447720?l=www.bennedik.de%2Findex.html' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/8406766/7415071922698447720/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=8406766&amp;postID=7415071922698447720' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8406766/posts/default/7415071922698447720'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8406766/posts/default/7415071922698447720'/><link rel='alternate' type='text/html' href='http://www.bennedik.de/2009/01/update-to-silverlight-chess-board.html' title='An update to the Silverlight chess board'/><author><name>Martin Bennedik</name><uri>http://www.blogger.com/profile/10058594370176420543</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16926799687919114217'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8406766.post-5808273252989123234</id><published>2008-12-03T04:21:00.001-08:00</published><updated>2008-12-03T04:23:57.123-08:00</updated><title type='text'>Danish chess league using the Silverlight chess board</title><content type='html'>&lt;p&gt;The &lt;a target="_blank" href="http://www.divisionsskak.dk/holdarkiv/div0809/"&gt;Danish chess league&lt;/a&gt; is now using the Silverlight chess board, allowing visitors to replay the games. &lt;/p&gt;  &lt;p&gt;The web master Per Rasmussen has added a little chess board icon next to the results (see &lt;a title="http://www.divisionsskak.dk/holdarkiv/div0809/vis_enkeltres.asp?kamp=LIGA-10" target="_blank" href="http://www.divisionsskak.dk/holdarkiv/div0809/vis_enkeltres.asp?kamp=LIGA-10"&gt;example&lt;/a&gt;). If you click on the chess board you get to a page where you can replay the game (see &lt;a title="http://www.divisionsskak.dk/holdarkiv/div0809/spil_et_parti_silver.asp?kampnr=LIGA-2&amp;amp;bratnr=1" target="_blank" href="http://www.divisionsskak.dk/holdarkiv/div0809/spil_et_parti_silver.asp?kampnr=LIGA-2&amp;amp;bratnr=1"&gt;example&lt;/a&gt;).&lt;/p&gt;  &lt;p&gt;The easy integration of the board has been used to add pictures of the players and opening classification to the page.&lt;/p&gt;  &lt;p&gt;&lt;a target="_blank" href="http://www.divisionsskak.dk/holdarkiv/div0809/spil_et_parti_silver.asp?kampnr=LIGA-2&amp;amp;bratnr=1"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="image" border="0" alt="image" src="http://www.bennedik.de/images/DanishchessleagueusingtheSilverlightches_BB40/image.png" width="454" height="281" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8406766-5808273252989123234?l=www.bennedik.de%2Findex.html' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/8406766/5808273252989123234/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=8406766&amp;postID=5808273252989123234' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8406766/posts/default/5808273252989123234'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8406766/posts/default/5808273252989123234'/><link rel='alternate' type='text/html' href='http://www.bennedik.de/2008/12/danish-chess-league-using-silverlight.html' title='Danish chess league using the Silverlight chess board'/><author><name>Martin Bennedik</name><uri>http://www.blogger.com/profile/10058594370176420543</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16926799687919114217'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8406766.post-3391434217961314837</id><published>2008-11-07T06:23:00.001-08:00</published><updated>2008-11-07T06:23:21.934-08:00</updated><title type='text'>Slim Silverlight</title><content type='html'>&lt;p&gt;Silverlight applications come in different flavours: Fat Silverlight applications, rich media islands, and slim Silverlight applets.&lt;/p&gt;  &lt;p&gt;Most Silverlight demos or applications I have seen are using the full page to display the Silverlight application. These applications are similar to traditional &lt;strike&gt;fat&lt;/strike&gt; rich client applications in functionality, but Silverlight solves the deployment issue. Deployment is even simpler compared to ClickOnce, and you get some cross platform compatibility on top. Some of these applications are in fact so similar to traditional applications that they turn off all navigation in the browser (I think WPF with ClickOnce may be a better solution for some of these).&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.bennedik.de/images/SlimSilverlight_EF3E/image.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="Fat Silverlight application" border="0" alt="Fat Silverlight application" src="http://www.bennedik.de/images/SlimSilverlight_EF3E/image_thumb.png" width="404" height="259" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Examples for fat Silverlight applications include all samples from &lt;a href="http://www.componentone.com/SuperProducts/StudioSilverlight/Live+Examples/"&gt;ComponentOne&lt;/a&gt; or Microsoft’s &lt;a href="http://www.mscui.net/PatientJourneyDemonstrator/"&gt;health demo&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;What I find more interesting is Silverlight applets that integrate into web sites. Sometimes this is called a “rich media island”. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.bennedik.de/images/SlimSilverlight_EF3E/image_3.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="Rich media island" border="0" alt="Rich media island" src="http://www.bennedik.de/images/SlimSilverlight_EF3E/image_thumb_3.png" width="404" height="211" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Examples for rich media islands include embedded videos or deep zoom images.&lt;/p&gt;  &lt;p&gt;But these applets do not have to be islands, because Silverlight comes with a full set of features for integration with the HTML DOM and Javascript:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;You can walk through and manipulate the HTML DOM from within Silverlight (see &lt;a href="http://silverlight.net/learn/learnvideo.aspx?video=66712"&gt;Video&lt;/a&gt;), &lt;/li&gt;    &lt;li&gt;handle Silverlight events from Javascript (see &lt;a href="http://silverlight.net/learn/learnvideo.aspx?video=66701"&gt;Video&lt;/a&gt;), &lt;/li&gt;    &lt;li&gt;handle DOM events from Silverlight (see &lt;a href="http://silverlight.net/learn/learnvideo.aspx?video=66706"&gt;Video&lt;/a&gt;), &lt;/li&gt;    &lt;li&gt;call Javascript functions from Silverlight (see &lt;a href="http://silverlight.net/learn/learnvideo.aspx?video=66706"&gt;Video&lt;/a&gt;), &lt;/li&gt;    &lt;li&gt;evaluate Javascript expressions from Silverlight (see &lt;a href="http://silverlight.net/learn/learnvideo.aspx?video=66751"&gt;Video&lt;/a&gt;), &lt;/li&gt;    &lt;li&gt;and call back into Silverlight from Javascript (see &lt;a href="http://silverlight.net/learn/learnvideo.aspx?video=66733"&gt;Video&lt;/a&gt;). &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;With this integration capabilities, you can develop slim Silverlight applets, that deeply integrate with HTML based pages. Think of them as client-side controls that encapsulate a piece of UI. This is similar to the existing control models we know for Windows Forms, OCX, and so on. You can insert them in your HTML with one simple object tag. And you can hook it up to your page and Javascript with events and DOM integration.&lt;/p&gt;  &lt;p&gt;You can develop such a Silverlight applet and distribute it to 3rd parties web sites – they can be used in static pages, dynamic sites, and Ajax applications. The web server does not have to run anything specific – it could be a static web space on an Apache server running Linux, and you can still use your Silverlight applet on that site.&lt;/p&gt;  &lt;p&gt;I recently developed a Silverlight chess board, which is used for &lt;a href="http://www.chesscenter.com/twic/twic.html"&gt;The Week In Chess&lt;/a&gt;, one of the biggest web sites about chess news. This application was a rich media island first, in that it just displayed a chess board with no further interaction with the containing HTML page. However, for the recent chess world championship we wanted to extend this and also display the notation of the game, which is the moves in text form, e.g. 1.e4 e5 2.Nf3 and so on.&lt;/p&gt;  &lt;p&gt;We discussed displaying the notation inside the Silverlight applet. However it became clear that the moves should be displayed with the same font settings and other CSS styles that the containing page uses. Furthermore, the moves also had to be part of the general layout of the page. Sometimes they would have to displayed to the right of the board, sometimes below the board, and the width of the notation also depended on the page layout.&lt;/p&gt;  &lt;p&gt;Deeper integration with the page was required. The solution chosen is that the HTML page designer creates an empty &amp;lt;div&amp;gt; tag on his page as a location for the notation. The Silverlight applet gets the id of this div tag as a parameter. Using DOM manipulation, the Silverlight applet then creates the notation inside this div. The page designer is able to create this div with any styles and notation he desires.&lt;/p&gt;  &lt;p&gt;A further requirement was for the user being able to click on a move in the notation, which should cause the board to update to the clicked position. This was solved by including a small JavaScript onclick handler into the generated notation div, that would call back into the Silverlight applet.&lt;/p&gt;  &lt;table&gt;    &lt;tr&gt;        &lt;td&gt;            &lt;object id="chess" data="data:application/x-silverlight," type="application/x-silverlight-2"                width="300" height="320"&gt;                &lt;param name="source" value="http://www.bennedik.de/ClientBin/SilverBoard.xap" /&gt;                                &lt;param name="background" value="white" /&gt;                &lt;param name="initParams" value="pgnfile=wch08.pgn, game=3, ply=28, notation=myNotation" /&gt;                &lt;a href="http://go.microsoft.com/fwlink/?LinkID=124807" style="text-decoration: none;"&gt;                    &lt;img src="http://go.microsoft.cofm/fwlink/?LinkId=108181" alt="Get Microsoft Silverlight" style="border-style: none" /&gt;                &lt;/a&gt;            &lt;/object&gt;            &lt;iframe style='visibility: hidden; height: 0; width: 0; border: 0px'&gt;&lt;/iframe&gt;        &lt;/td&gt;        &lt;td&gt;            &lt;div id="myNotation" /&gt;          &lt;/td&gt;    &lt;/tr&gt;&lt;/table&gt;  &lt;p&gt;Here is some sample code that illustrates this development:&lt;/p&gt;  &lt;div style="font-family: courier new; background: white; color: black; font-size: 10pt"&gt;   &lt;div style="font-family: courier new; background: white; color: black; font-size: 10pt"&gt;     &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; [&lt;span style="color: #2b91af"&gt;ScriptableType&lt;/span&gt;]&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;partial&lt;/span&gt; &lt;span style="color: blue"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af"&gt;Page&lt;/span&gt; : &lt;span style="color: #2b91af"&gt;UserControl&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; [&lt;span style="color: #2b91af"&gt;ScriptableMember&lt;/span&gt;]&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; Goto(&lt;span style="color: blue"&gt;int&lt;/span&gt; ply)&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: green"&gt;//code to go to given ply omitted&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;private&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; ShowNotation()&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;GameIterator&lt;/span&gt; i = &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;GameIterator&lt;/span&gt;(game);&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;StringBuilder&lt;/span&gt; text = &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;StringBuilder&lt;/span&gt;();&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;string&lt;/span&gt; id = &lt;span style="color: #2b91af"&gt;HtmlPage&lt;/span&gt;.Plugin.Id;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;while&lt;/span&gt; (!i.AtEnd)&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: green"&gt;//code to display move numbers omitted&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; text.Append(&lt;span style="color: #a31515"&gt;&amp;quot;&amp;lt;a onclick='javascript:document.getElementById(\&amp;quot;&amp;quot;&lt;/span&gt;);&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; text.Append(id);&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; text.Append(&lt;span style="color: #a31515"&gt;&amp;quot;\&amp;quot;).Content.chessboard.Goto(&amp;quot;&lt;/span&gt;);&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; text.Append(i.Ply + 1);&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; text.Append(&lt;span style="color: #a31515"&gt;&amp;quot;);'&amp;gt;&amp;quot;&lt;/span&gt;);&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; text.Append(i.Board.Algebraic(game.Moves[i.Ply]));&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; text.Append(&lt;span style="color: #a31515"&gt;&amp;quot;&amp;lt;/a&amp;gt;&amp;quot;&lt;/span&gt;);&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; i.Forward();&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; text.Append(&lt;span style="color: #a31515"&gt;' '&lt;/span&gt;);&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;HtmlElement&lt;/span&gt; element = &lt;span style="color: #2b91af"&gt;HtmlPage&lt;/span&gt;.Document.GetElementById(notation);&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; element.SetProperty(&lt;span style="color: #a31515"&gt;&amp;quot;innerHTML&amp;quot;&lt;/span&gt;, text.ToString());&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: green"&gt;//other members omitted&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;   &lt;/div&gt; &lt;/div&gt;  &lt;div style="font-family: courier new; background: white; color: black; font-size: 10pt"&gt;   &lt;div style="font-family: courier new; background: white; color: black; font-size: 10pt"&gt;     &lt;p style="margin: 0px"&gt;&lt;/p&gt;   &lt;/div&gt; &lt;/div&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;The page class is marked as a ScriptableType. This means that this class can expose members to JavaScript. The Goto() method that updates the board to a given move from the game is marked as ScriptableMember. Part of the ShowNotation() method illustrates how the notation is generated. A GameIterator is used to iterate through the moves of the chess game. A string builder is used to build up the HTML for the notation. For each move the algebraic notation is appended, enclosed with an &amp;lt;a&amp;gt; tag and a Javascript handler, that calls the exposed Goto() method of the Silverlight chess board. The id of the currently running Silverlight applet is determined using the HtmlPage.Plugin.Id property.&lt;/p&gt;  &lt;div style="font-family: courier new; background: white; color: black; font-size: 10pt"&gt;   &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;private&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; Application_Startup(&lt;span style="color: blue"&gt;object&lt;/span&gt; sender, &lt;span style="color: #2b91af"&gt;StartupEventArgs&lt;/span&gt; e)&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;Page&lt;/span&gt; page = &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;Page&lt;/span&gt;();&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;this&lt;/span&gt;.RootVisual = page;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;HtmlPage&lt;/span&gt;.RegisterScriptableObject(&lt;span style="color: #a31515"&gt;&amp;quot;chessboard&amp;quot;&lt;/span&gt;, page);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;Finally, during startup of the Silverlight applet, the page object is exposed to Javascript by calling HtmlPage.RegisterScriptableObject.&lt;/p&gt;  &lt;p&gt;I am not aware of more examples for this kind of slim Silverlight applets. Please let me know of other examples in the comments.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8406766-3391434217961314837?l=www.bennedik.de%2Findex.html' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/8406766/3391434217961314837/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=8406766&amp;postID=3391434217961314837' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8406766/posts/default/3391434217961314837'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8406766/posts/default/3391434217961314837'/><link rel='alternate' type='text/html' href='http://www.bennedik.de/2008/11/slim-silverlight.html' title='Slim Silverlight'/><author><name>Martin Bennedik</name><uri>http://www.blogger.com/profile/10058594370176420543</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16926799687919114217'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8406766.post-7273010485143072563</id><published>2008-10-25T17:21:00.001-07:00</published><updated>2008-10-25T17:26:41.957-07:00</updated><title type='text'>I am in LA</title><content type='html'>&lt;p&gt;I am in Los Angeles for the PDC. Today I visited downtown. Tomorrow I am going to the pre-conference on concurrent multi-core programming on Windows and .NET. Here are some photos from downtown LA (click to see higher resolution).&lt;/p&gt;  &lt;table border="0" cellspacing="0" cellpadding="2"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top"&gt;&lt;a href="http://www.bennedik.de/images/IaminLA_F345/DSCF0822768x1024.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; margin-left: 0px; border-left-width: 0px; margin-right: 0px" title="DSCF0822 (768x1024)" border="0" alt="DSCF0822 (768x1024)" align="left" src="http://www.bennedik.de/images/IaminLA_F345/DSCF0822768x1024_thumb.jpg" width="184" height="244" /&gt;&lt;/a&gt;&lt;/td&gt;        &lt;td valign="top"&gt;It is a big country. Everything is really big. For example this advertising for a film fills a complete hotel. The film wasn’t even shown in the movie theatres, it is now released direct to DVD.&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top"&gt;&lt;a href="http://www.bennedik.de/images/IaminLA_F345/DSCF08921024x768.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="DSCF0892 (1024x768)" border="0" alt="DSCF0892 (1024x768)" src="http://www.bennedik.de/images/IaminLA_F345/DSCF08921024x768_thumb.jpg" width="244" height="184" /&gt;&lt;/a&gt;&lt;/td&gt;        &lt;td valign="top"&gt;This is Los Angeles first fire engine. It was drawn by horses.&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top"&gt;&lt;a href="http://www.bennedik.de/images/IaminLA_F345/DSCF08401024x768.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="DSCF0840 (1024x768)" border="0" alt="DSCF0840 (1024x768)" src="http://www.bennedik.de/images/IaminLA_F345/DSCF08401024x768_thumb.jpg" width="244" height="184" /&gt;&lt;/a&gt;&lt;/td&gt;        &lt;td valign="top"&gt;The modern version. Today I saw many of them parked throughout the city, I am not sure why.&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top"&gt;&lt;a href="http://www.bennedik.de/images/IaminLA_F345/DSCF08681024x768.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="DSCF0868 (1024x768)" border="0" alt="DSCF0868 (1024x768)" src="http://www.bennedik.de/images/IaminLA_F345/DSCF08681024x768_thumb.jpg" width="244" height="184" /&gt;&lt;/a&gt;&lt;/td&gt;        &lt;td valign="top"&gt;Walt Disney concert hall, looks like a space station.&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top"&gt;&lt;a href="http://www.bennedik.de/images/IaminLA_F345/DSCF0872768x1024.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="DSCF0872 (768x1024)" border="0" alt="DSCF0872 (768x1024)" src="http://www.bennedik.de/images/IaminLA_F345/DSCF0872768x1024_thumb.jpg" width="184" height="244" /&gt;&lt;/a&gt;&lt;/td&gt;        &lt;td valign="top"&gt;Los Angeles City Hall, seat of the Daily Planet in Superman, destroyed in the war of the worlds by mars men.&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top"&gt;&lt;a href="http://www.bennedik.de/images/IaminLA_F345/DSCF0898768x1024.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="DSCF0898 (768x1024)" border="0" alt="DSCF0898 (768x1024)" src="http://www.bennedik.de/images/IaminLA_F345/DSCF0898768x1024_thumb.jpg" width="184" height="244" /&gt;&lt;/a&gt;&lt;/td&gt;        &lt;td valign="top"&gt;Union station&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top"&gt;&lt;a href="http://www.bennedik.de/images/IaminLA_F345/DSCF09001024x768.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="DSCF0900 (1024x768)" border="0" alt="DSCF0900 (1024x768)" src="http://www.bennedik.de/images/IaminLA_F345/DSCF09001024x768_thumb.jpg" width="244" height="184" /&gt;&lt;/a&gt;&lt;/td&gt;        &lt;td valign="top"&gt;Union station, interior. Also used in films as it still looks like 1939. In the waiting room they have sofas instead of chairs.&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top"&gt;&lt;a href="http://www.bennedik.de/images/IaminLA_F345/DSCF09051024x768.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="DSCF0905 (1024x768)" border="0" alt="DSCF0905 (1024x768)" src="http://www.bennedik.de/images/IaminLA_F345/DSCF09051024x768_thumb.jpg" width="244" height="184" /&gt;&lt;/a&gt;&lt;/td&gt;        &lt;td valign="top"&gt;Entrance to China town metro station&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top"&gt;&lt;a href="http://www.bennedik.de/images/IaminLA_F345/DSCF0910768x1024.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="DSCF0910 (768x1024)" border="0" alt="DSCF0910 (768x1024)" src="http://www.bennedik.de/images/IaminLA_F345/DSCF0910768x1024_thumb.jpg" width="184" height="244" /&gt;&lt;/a&gt;&lt;/td&gt;        &lt;td valign="top"&gt;Famous restaurant in China town&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top"&gt;&lt;a href="http://www.bennedik.de/images/IaminLA_F345/DSCF08621024x768.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="DSCF0862 (1024x768)" border="0" alt="DSCF0862 (1024x768)" src="http://www.bennedik.de/images/IaminLA_F345/DSCF08621024x768_thumb.jpg" width="244" height="184" /&gt;&lt;/a&gt;&lt;/td&gt;        &lt;td valign="top"&gt;Grand central market&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top"&gt;&lt;a href="http://www.bennedik.de/images/IaminLA_F345/DSCF08731024x768.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="DSCF0873 (1024x768)" border="0" alt="DSCF0873 (1024x768)" src="http://www.bennedik.de/images/IaminLA_F345/DSCF08731024x768_thumb.jpg" width="244" height="184" /&gt;&lt;/a&gt;&lt;/td&gt;        &lt;td valign="top"&gt;LAPD police car&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top"&gt;&lt;a href="http://www.bennedik.de/images/IaminLA_F345/DSCF08741024x768.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="DSCF0874 (1024x768)" border="0" alt="DSCF0874 (1024x768)" src="http://www.bennedik.de/images/IaminLA_F345/DSCF08741024x768_thumb.jpg" width="244" height="184" /&gt;&lt;/a&gt;&lt;/td&gt;        &lt;td valign="top"&gt;Problem and solution (America is going green?)&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top"&gt;&lt;a href="http://www.bennedik.de/images/IaminLA_F345/DSCF08641024x768.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="DSCF0864 (1024x768)" border="0" alt="DSCF0864 (1024x768)" src="http://www.bennedik.de/images/IaminLA_F345/DSCF08641024x768_thumb.jpg" width="244" height="184" /&gt;&lt;/a&gt;&lt;/td&gt;        &lt;td valign="top"&gt;Angelus plaza with skyscrapers in the background.&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top"&gt;&lt;a href="http://www.bennedik.de/images/IaminLA_F345/DSCF08351024x768.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="DSCF0835 (1024x768)" border="0" alt="DSCF0835 (1024x768)" src="http://www.bennedik.de/images/IaminLA_F345/DSCF08351024x768_thumb.jpg" width="244" height="184" /&gt;&lt;/a&gt;&lt;/td&gt;        &lt;td valign="top"&gt;More sky scrapers&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top"&gt;&lt;a href="http://www.bennedik.de/images/IaminLA_F345/DSCF0836768x1024.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="DSCF0836 (768x1024)" border="0" alt="DSCF0836 (768x1024)" src="http://www.bennedik.de/images/IaminLA_F345/DSCF0836768x1024_thumb.jpg" width="184" height="244" /&gt;&lt;/a&gt;&lt;/td&gt;        &lt;td valign="top"&gt;Sky scraper reflection&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top"&gt;&lt;a href="http://www.bennedik.de/images/IaminLA_F345/DSCF08441024x768.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="DSCF0844 (1024x768)" border="0" alt="DSCF0844 (1024x768)" src="http://www.bennedik.de/images/IaminLA_F345/DSCF08441024x768_thumb.jpg" width="244" height="184" /&gt;&lt;/a&gt;&lt;/td&gt;        &lt;td valign="top"&gt;Even more sky scrapers&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8406766-7273010485143072563?l=www.bennedik.de%2Findex.html' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/8406766/7273010485143072563/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=8406766&amp;postID=7273010485143072563' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8406766/posts/default/7273010485143072563'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8406766/posts/default/7273010485143072563'/><link rel='alternate' type='text/html' href='http://www.bennedik.de/2008/10/i-am-in-la.html' title='I am in LA'/><author><name>Martin Bennedik</name><uri>http://www.blogger.com/profile/10058594370176420543</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16926799687919114217'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8406766.post-763683717737624060</id><published>2008-10-19T12:43:00.001-07:00</published><updated>2008-10-19T12:51:09.920-07:00</updated><title type='text'>The world championship</title><content type='html'>&lt;p&gt;&lt;a href="http://silverlight.net/"&gt;Silverlight 2.0&lt;/a&gt; was released just in time for the chess world championship – two hours before the start of game one. Fortunately there had been a release candidate which gave developers enough time to prepare for the release.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.chesscenter.com/twic/twic.html"&gt;The Week In Chess&lt;/a&gt; has been showing the first four games of the world championship live using my Silverlight chess board. They are also running analysis of the games. Here the Silverlight chess boards &lt;a href="http://www.chesscenter.com/twic/event/wch08/gm3.html"&gt;are used like diagrams in a printed book&lt;/a&gt;, but with the additional capability to replay the game in the diagrams. I have not seen this style for replayable diagrams anywhere else. This kind of diagram was one of the ideas in creating a chess board that can be integrated into any HTML page (oh, and into any blog post, as you can see).&lt;/p&gt;  &lt;p&gt;I went to Bonn to see games three and four on site. I was lucky as game three was incredibly exciting.&lt;/p&gt;  &lt;p&gt;I am not doing any opening previews this year as I was busy with the Silverlight chess board, and am also going to PDC. I think tomorrow we will see yet another line in the Slav – I don’t think the line played in game three will be seen again. But just one thing, after Anand’s novelty 14..Bb7: &lt;/p&gt;  &lt;div&gt; &lt;object id="chess" data="data:application/x-silverlight," type="application/x-silverlight-2" width="400" height="400"&gt;&lt;param name="source" value="http://www.bennedik.de/ClientBin/SilverBoard.xap" /&gt;&lt;param name="background" value="white" /&gt;&lt;param name="initParams" value="pgnfile=wch08.pgn, game=3, ply=28" /&gt;&lt;a href="http://go.microsoft.com/fwlink/?LinkID=124807" style="text-decoration: none;"&gt;&lt;img src="http://go.microsoft.cofm/fwlink/?LinkId=108181" alt="Get Microsoft Silverlight" style="border-style: none" /&gt;&lt;/a&gt;&lt;/object&gt;&lt;iframe style='visibility: hidden; height: 0; width: 0; border: 0px'&gt;&lt;/iframe&gt; &lt;/div&gt;  &lt;p&gt;I think White can consider alternatives, for example 15.Rd1 (instead of 15.Bxb5 played in game three). The pawn on b5 is not so important, and the bishop is not so great on b5 either. If White can take on d4 instead, it may be the Black king who gets in danger, not the White. Of course this requires careful analysis, but I think it is an option to be considered.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8406766-763683717737624060?l=www.bennedik.de%2Findex.html' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/8406766/763683717737624060/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=8406766&amp;postID=763683717737624060' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8406766/posts/default/763683717737624060'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8406766/posts/default/763683717737624060'/><link rel='alternate' type='text/html' href='http://www.bennedik.de/2008/10/world-championship.html' title='The world championship'/><author><name>Martin Bennedik</name><uri>http://www.blogger.com/profile/10058594370176420543</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16926799687919114217'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8406766.post-998243446278595228</id><published>2008-09-10T05:42:00.001-07:00</published><updated>2008-09-10T05:42:47.696-07:00</updated><title type='text'>Validation in the ASP.NET Ajax Control Toolkit TabContainer</title><content type='html'>&lt;p&gt;The &lt;a href="http://www.codeplex.com/AjaxControlToolkit"&gt;ASP.NET Ajax Control Toolkit&lt;/a&gt; contains a &lt;a href="http://www.asp.net/AJAX/AjaxControlToolkit/Samples/Tabs/Tabs.aspx"&gt;TabContainer control&lt;/a&gt; which allows the user to change tabs without a postback.&lt;/p&gt;  &lt;p&gt;But what if you want to validate user input in the TabContainer? I could not find documentation or samples about this so had to try myself. With a little help from &lt;a href="http://weblogs.asp.net/bleroy"&gt;Bertrand Le Roy&lt;/a&gt;, here is what I found out:&lt;/p&gt;  &lt;p&gt;There are two different use cases for validation and tab controls:&lt;/p&gt;  &lt;p align="center"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; border-top: 0px; border-right: 0px" border="0" alt="Sample TabContainer" src="http://www.bennedik.de/images/Valida.NETAjaxControlToolkitTabContainer_C661/image.png" width="395" height="250" /&gt; &lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;1. The tabs all belong to one big user input that is validated as a whole. You would want to have one button below the tabs (e.g. &amp;quot;Save&amp;quot; or &amp;quot;Send&amp;quot;). This button would validate all controls on all the tabs.&lt;/p&gt;    &lt;p&gt;2. The tabs are independent of each other, each containing independent user input. Each tab would have its own button, and if a button on a tab is pressed, only the controls on that tab should be validated.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;If you just place ASP.NET validation controls into the different TabPanels, a click on a button will validate all of them. This is use case 1, where you want to validate all user input at once. &lt;/p&gt;  &lt;p&gt;However, the user may be editing on tab 1, while he hasn't yet filled in a required field on tab 2. If the user now presses the button, client side validation will discover the required field on tab 2 isn't filled in and no postback occurs. The user won't see any visual indication of the validation error, because the validation control is on tab 2, which isn't visible.&lt;/p&gt;  &lt;p&gt;ASP.NET validation controls support a property SetFocusOnError. This automatically sets the focus on an input control that failed validation. However ASP.NET isn't able to switch the tab in the TabContainer.&lt;/p&gt;  &lt;p&gt;The solution for use case 1 is to insert a &lt;a href="http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.validationsummary.aspx"&gt;ValidationSummary&lt;/a&gt; next to the submit button, outside of the TabContainer. The ValidationSummary can alert the user to validation errors across all tabs.&lt;/p&gt;  &lt;p&gt;For use case 2 with the independent tabs, ASP.NET's validation groups are the solution. Each validation control has a property &lt;a href="http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.basevalidator.validationgroup.aspx"&gt;ValidationGroup&lt;/a&gt;. Use a different validation group on each tab. The button on each tab should have its ValidationGroup property set to the same value as the validation controls on that tab. In the button's click event handler, be sure to call the page's Validate method with the validation group as a parameter, before checking Page.IsValid.&lt;/p&gt;  &lt;p&gt;One more thing to note about user input in the TabContainer: There is &lt;a href="http://www.codeplex.com/AjaxControlToolkit/WorkItem/View.aspx?WorkItemId=9493"&gt;a bug in the TabContainer&lt;/a&gt; which resets the active tab if you have a control on a tab with AutoPostBack set to true. To work around this issue, set the TabContainer's ActiveTab property in the handler of the autopostback event.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8406766-998243446278595228?l=www.bennedik.de%2Findex.html' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/8406766/998243446278595228/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=8406766&amp;postID=998243446278595228' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8406766/posts/default/998243446278595228'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8406766/posts/default/998243446278595228'/><link rel='alternate' type='text/html' href='http://www.bennedik.de/2008/09/validation-in-aspnet-ajax-control.html' title='Validation in the ASP.NET Ajax Control Toolkit TabContainer'/><author><name>Martin Bennedik</name><uri>http://www.blogger.com/profile/10058594370176420543</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16926799687919114217'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8406766.post-4473982418884040814</id><published>2008-08-25T07:27:00.001-07:00</published><updated>2008-08-25T07:27:26.737-07:00</updated><title type='text'>A Silverlight chess board</title><content type='html'>&lt;p&gt;For some time now &lt;a href="http://www.chesscenter.com/twic/twic.html" target="_blank"&gt;TWIC&lt;/a&gt; is using my Silverlight chess board for live transmission of games. The idea of the chess board is that it is small, unobtrusive and can easily be incorporated into any existing HTML layout.    &lt;br /&gt;Games can now automatically be refreshed, and an arrow highlights the last move. Users can replay games with the cursor keys. More features are planned when Silverlight 2 releases. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.bennedik.de/images/ASilverlightchessboard_E737/image.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" border="0" alt="image" src="http://www.bennedik.de/images/ASilverlightchessboard_E737/image_thumb.png" width="495" height="275" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8406766-4473982418884040814?l=www.bennedik.de%2Findex.html' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/8406766/4473982418884040814/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=8406766&amp;postID=4473982418884040814' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8406766/posts/default/4473982418884040814'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8406766/posts/default/4473982418884040814'/><link rel='alternate' type='text/html' href='http://www.bennedik.de/2008/08/silverlight-chess-board.html' title='A Silverlight chess board'/><author><name>Martin Bennedik</name><uri>http://www.blogger.com/profile/10058594370176420543</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16926799687919114217'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8406766.post-4633210189502945539</id><published>2008-08-03T02:27:00.001-07:00</published><updated>2008-08-03T02:27:52.148-07:00</updated><title type='text'>Meet me in Los Angeles - PDC 2008</title><content type='html'>&lt;p&gt;&lt;a href="http://www.microsoftpdc.com" target="_blank"&gt;&lt;img alt="PDC 2008" src="http://www.microsoftpdc.com/Images/BlogBling/Bling2.jpg"&gt;&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8406766-4633210189502945539?l=www.bennedik.de%2Findex.html' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/8406766/4633210189502945539/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=8406766&amp;postID=4633210189502945539' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8406766/posts/default/4633210189502945539'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8406766/posts/default/4633210189502945539'/><link rel='alternate' type='text/html' href='http://www.bennedik.de/2008/08/meet-me-in-los-angeles-pdc-2008.html' title='Meet me in Los Angeles - PDC 2008'/><author><name>Martin Bennedik</name><uri>http://www.blogger.com/profile/10058594370176420543</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16926799687919114217'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8406766.post-8340455860105307863</id><published>2008-05-19T13:31:00.001-07:00</published><updated>2008-05-19T13:31:26.958-07:00</updated><title type='text'>WPF integration for VAB update for Enterprise Library 4.0</title><content type='html'>&lt;p&gt;Patterns and Practices recently published &lt;a href="http://www.codeplex.com/entlib" target="_blank"&gt;Enterprise Library 4.0&lt;/a&gt; for Visual Studio 2008 and .NET 3.5.&lt;/p&gt; &lt;p&gt;I have updated the WPF integration for the validation application block (VAB) to work with the latest version. It also comes with the following improvements:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;You can bind to different business objects (i.e. have different data contexts) inside a single ErrorProvider.  &lt;li&gt;Value converters on the bindings are now supported.  &lt;li&gt;Call Init() on the ErrorProvider if new validators should be added for a dynamic UI.  &lt;li&gt;ErrorProvider now has a property ErrorMessages, which contains a list of all errors.&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;You can download the updated version here:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Download &lt;a href="http://www.bennedik.de/WPFValidation2008.zip"&gt;version 2.0&lt;/a&gt; for Visual Studio 2008, .NET 3.5 and Enterprise Library 4.0  &lt;li&gt;Download &lt;a href="http://www.bennedik.de/WPFValidation.zip"&gt;version 1.1&lt;/a&gt; for Visual Studio 2005, .NET 3.0 and Enterprise Library 3.0/3.1&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;You can read my previous posts on the WPF integration for VAB here:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;a href="http://www.bennedik.de/2007/03/enterprise-wpf-validation.html"&gt;Enterprise WPF: Validation&lt;/a&gt;  &lt;li&gt;&lt;a href="http://www.bennedik.de/2007/04/wpf-integration-for-validation.html"&gt;WPF integration for validation application block&lt;/a&gt;  &lt;li&gt;&lt;a href="http://www.bennedik.de/2007/05/update-of-wpf-integration-for.html" target="_blank"&gt;Update of the WPF integration for the validation application block&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8406766-8340455860105307863?l=www.bennedik.de%2Findex.html' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/8406766/8340455860105307863/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=8406766&amp;postID=8340455860105307863' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8406766/posts/default/8340455860105307863'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8406766/posts/default/8340455860105307863'/><link rel='alternate' type='text/html' href='http://www.bennedik.de/2008/05/wpf-integration-for-vab-update-for.html' title='WPF integration for VAB update for Enterprise Library 4.0'/><author><name>Martin Bennedik</name><uri>http://www.blogger.com/profile/10058594370176420543</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16926799687919114217'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8406766.post-3454934748915496678</id><published>2008-05-05T13:44:00.001-07:00</published><updated>2008-05-05T14:23:31.209-07:00</updated><title type='text'>Bamberg</title><content type='html'>&lt;p&gt;     &lt;div id="silverlightControlHost"&gt; 		&lt;object data="data:application/x-silverlight," type="application/x-silverlight-2-b1" width="400" height="300"&gt; 			&lt;param name="source" value="http://www.bennedik.de/ClientBin/DeepZoomOutput.xap" /&gt; 			&lt;param name="onerror" value="onSilverlightError" /&gt; 			&lt;param name="background" value="white" /&gt; 			 			&lt;a href="http://go.microsoft.com/fwlink/?LinkID=108182" style="text-decoration: none;"&gt;      			&lt;img src="http://go.microsoft.com/fwlink/?LinkId=108181" alt="Get Microsoft Silverlight" style="border-style: none" /&gt; 			&lt;/a&gt; 		&lt;/object&gt; 		&lt;iframe style='visibility:hidden;height:0;width:0;border:0px'&gt;&lt;/iframe&gt;     &lt;/div&gt; &lt;/p&gt; &lt;p&gt;I recently took this image of &lt;a href="http://de.wikipedia.org/wiki/Klein-Venedig_%28Bamberg%29"&gt;Klein-Venedig&lt;/a&gt; ("Little Venice") in &lt;a href="http://en.wikipedia.org/wiki/Bamberg"&gt;Bamberg&lt;/a&gt;. Use the mouse to drag and the mouse wheel to zoom the image.&lt;/p&gt; &lt;p&gt;Photo composition with &lt;a href="http://get.live.com/photogallery/overview"&gt;Windows Live photo gallery&lt;/a&gt;, deep zoom with Silverlight 2 beta 1 and &lt;a href="http://blogs.msdn.com/expression/archive/2008/05/03/an-update-to-deep-zoom-composer.aspx"&gt;Expression deep zoom composer&lt;/a&gt;. &lt;a href="http://www.bennedik.de/Bamberg.html"&gt;Click&lt;/a&gt; to see full screen view.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8406766-3454934748915496678?l=www.bennedik.de%2Findex.html' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/8406766/3454934748915496678/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=8406766&amp;postID=3454934748915496678' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8406766/posts/default/3454934748915496678'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8406766/posts/default/3454934748915496678'/><link rel='alternate' type='text/html' href='http://www.bennedik.de/2008/05/bamberg.html' title='Bamberg'/><author><name>Martin Bennedik</name><uri>http://www.blogger.com/profile/10058594370176420543</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16926799687919114217'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8406766.post-3408960926864099985</id><published>2007-10-27T10:11:00.001-07:00</published><updated>2007-10-27T10:11:06.164-07:00</updated><title type='text'>WPF: A fast font drop down list</title><content type='html'>&lt;p&gt;Writing a drop down list for fonts is easy in WPF. Just create a data template that binds the text and the font, and bind the ComboBox against Fonts.SystemFontFamilies:&lt;/p&gt; &lt;p style="font-size: 11pt; background: white; margin: 0px; color: black; font-family: consolas"&gt;&lt;span style="color: blue"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;ComboBox&lt;/span&gt;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;x:Name&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;"&lt;span style="color: blue"&gt;fontComboSlow&lt;/span&gt;"&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="font-size: 11pt; background: white; margin: 0px; color: black; font-family: consolas"&gt;&lt;span style="color: blue"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;ComboBox.ItemTemplate&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="font-size: 11pt; background: white; margin: 0px; color: black; font-family: consolas"&gt;&lt;span style="color: blue"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;DataTemplate&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="font-size: 11pt; background: white; margin: 0px; color: black; font-family: consolas"&gt;&lt;span style="color: blue"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;TextBlock&lt;/span&gt;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;Text&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;"&lt;span style="color: blue"&gt;{Binding}&lt;/span&gt;"&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;FontFamily&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;"&lt;span style="color: blue"&gt;{Binding}&lt;/span&gt;"&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;FontSize&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;"&lt;span style="color: blue"&gt;15&lt;/span&gt;"&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;Height&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;"&lt;span style="color: blue"&gt;20&lt;/span&gt;"&lt;span style="color: blue"&gt;/&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="font-size: 11pt; background: white; margin: 0px; color: black; font-family: consolas"&gt;&lt;span style="color: blue"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;DataTemplate&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="font-size: 11pt; background: white; margin: 0px; color: black; font-family: consolas"&gt;&lt;span style="color: blue"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;ComboBox.ItemTemplate&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="font-size: 11pt; background: white; margin: 0px; color: black; font-family: consolas"&gt;&lt;span style="color: blue"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;ComboBox&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="font-size: 11pt; background: white; margin: 0px; color: black; font-family: consolas"&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="font-size: 11pt; background: white; margin: 0px; color: black; font-family: consolas"&gt;and&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;fontComboSlow.ItemsSource = Fonts.SystemFontFamilies; &lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;gives you a nice drop down list with font preview:  &lt;p&gt;&lt;a href="http://www.bennedik.de/images/WPFAfastfontdropdownlist_10D33/image_thumb6.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="308" alt="image_thumb6" src="http://www.bennedik.de/images/WPFAfastfontdropdownlist_10D33/image_thumb6_thumb.png" width="308" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;However there is one caveat: The first time you run this and click on the drop down arrow, you will have to wait for some annoying time. The exact time depends on your hardware, and on how many fonts you have installed. If you click on the drop down arrow again, it is fast. If you close the program, and run the program again, it is still fast.&lt;/p&gt; &lt;p&gt;Why is it still fast if you run the program the second time? If you go to the task manager, and show the processes of all users, you can find that WPF is running its own process, called the "Windows Presentation Foundation Font Cache Service":&lt;/p&gt; &lt;p&gt;&lt;a href="file:///C:/Users/Martin/AppData/Roaming/Windows%20Live%20Writer/PostSupportingFiles/0a8af24a-62cd-4ba6-8a61-d5c9390a71f0/image7.png"&gt;&lt;/a&gt;&lt;a href="http://www.bennedik.de/images/WPFAfastfontdropdownlist_10D33/image_thumb5.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="130" alt="image_thumb5" src="http://www.bennedik.de/images/WPFAfastfontdropdownlist_10D33/image_thumb5_thumb.png" width="649" border="0"&gt;&lt;/a&gt;&amp;nbsp; &lt;/p&gt; &lt;p&gt;If you kill this process, and run the software again, the first click on the drop down arrow is slow again. I have been looking for a solution to this for some time. Recently, the WPF SDK blog had &lt;a href="http://blogs.msdn.com/wpfsdk/archive/2007/09/29/improving-the-performance-of-the-combobox.aspx"&gt;a post about improving the performance of the ComboBox&lt;/a&gt;, recommending a VirtualizingStackPanel as ItemsPanel for the ComboBox in such cases. They also explain the delay:&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;This reason for the delay is that by default, the ComboBox uses a StackPanel, and a visual that represents each item is created at the same time, which is processor-intensive and memory-intensive.&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;Sure enough, if you change the XAML for the font drop down list to utilize the VirtualStackPanel as recommended:&lt;/p&gt; &lt;div style="font-size: 11pt; background: white; color: black; font-family: consolas"&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;ComboBox&lt;/span&gt;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;x:Name&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;"&lt;span style="color: blue"&gt;fontComboFast&lt;/span&gt;"&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;ComboBox.ItemsPanel&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;ItemsPanelTemplate&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;VirtualizingStackPanel&lt;/span&gt;&lt;span style="color: blue"&gt; /&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;ItemsPanelTemplate&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;ComboBox.ItemsPanel&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;ComboBox.ItemTemplate&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;DataTemplate&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;TextBlock&lt;/span&gt;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;Text&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;"&lt;span style="color: blue"&gt;{Binding}&lt;/span&gt;"&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;FontFamily&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;"&lt;span style="color: blue"&gt;{Binding}&lt;/span&gt;"&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;FontSize&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;"&lt;span style="color: blue"&gt;15&lt;/span&gt;"&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;Height&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;"&lt;span style="color: blue"&gt;20&lt;/span&gt;"&lt;span style="color: blue"&gt;/&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;DataTemplate&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;ComboBox.ItemTemplate&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;ComboBox&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt; &lt;p&gt;the annoying delay is gone. If you scroll fast through the list of fonts, you can instead notice sometimes a very brief delay for a fraction of a second, when the system is loading a new font that was not shown so far.&lt;/p&gt; &lt;p&gt;You can &lt;a href="http://www.bennedik.de/FontDropdown.zip"&gt;download a sample program&lt;/a&gt;, where you can compare the two approaches.&lt;/p&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8406766-3408960926864099985?l=www.bennedik.de%2Findex.html' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/8406766/3408960926864099985/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=8406766&amp;postID=3408960926864099985' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8406766/posts/default/3408960926864099985'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8406766/posts/default/3408960926864099985'/><link rel='alternate' type='text/html' href='http://www.bennedik.de/2007/10/wpf-fast-font-drop-down-list.html' title='WPF: A fast font drop down list'/><author><name>Martin Bennedik</name><uri>http://www.blogger.com/profile/10058594370176420543</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16926799687919114217'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8406766.post-3568238382629992733</id><published>2007-06-27T13:41:00.001-07:00</published><updated>2007-06-27T13:41:03.383-07:00</updated><title type='text'>The Marshall of Dortmund</title><content type='html'>&lt;p&gt;Last weekend I visited &lt;a href="http://www.sparkassen-chess-meeting.de/"&gt;Dortmund&lt;/a&gt; to see some top level chess.&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.bennedik.de/images/AweekendinDortmund_13ADB/Dortmund1.jpg" atomicselection="true"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="180" alt="Dortmund-1" src="http://www.bennedik.de/images/AweekendinDortmund_13ADB/Dortmund1_thumb.jpg" width="240" border="0"&gt;&lt;/a&gt; &lt;a href="http://www.bennedik.de/images/AweekendinDortmund_13ADB/Dortmund7.jpg" atomicselection="true"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="180" alt="Dortmund-7" src="http://www.bennedik.de/images/AweekendinDortmund_13ADB/Dortmund7_thumb.jpg" width="240" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;In Dortmund they present the chess tournament in a theater (above, left). The chess boards are visualized to the spectators with a huge display above the stage (above, right). The moves are also automatically transmitted from the electronic boards to the Internet. This year the Internet transmission has a 15-minutes delay (the idea is that this should prevent cheating with a computer, but I doubt both that any cheating happens at the top level, and that this measure would be effective).&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.bennedik.de/images/AweekendinDortmund_13ADB/Dortmund2.jpg" atomicselection="true"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="180" alt="Dortmund-2" src="http://www.bennedik.de/images/AweekendinDortmund_13ADB/Dortmund2_thumb.jpg" width="240" border="0"&gt;&lt;/a&gt; &lt;a href="http://www.bennedik.de/images/AweekendinDortmund_13ADB/Dortmund3.jpg" atomicselection="true"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="180" alt="Dortmund-3" src="http://www.bennedik.de/images/AweekendinDortmund_13ADB/Dortmund3_thumb.jpg" width="240" border="0"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;The first round saw the clash between the current world champion and the world number one. Vishy is now using the Slav regurlarly and achieved a draw with Black. In the second round Kramnik scored his first win - no presents for Gelfand on his birthday.&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.bennedik.de/images/AweekendinDortmund_13ADB/Dortmund4.jpg" atomicselection="true"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="180" alt="Dortmund-4" src="http://www.bennedik.de/images/AweekendinDortmund_13ADB/Dortmund4_thumb.jpg" width="240" border="0"&gt;&lt;/a&gt; &lt;a href="http://www.bennedik.de/images/AweekendinDortmund_13ADB/Dortmund5.jpg" atomicselection="true"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="180" alt="Dortmund-5" src="http://www.bennedik.de/images/AweekendinDortmund_13ADB/Dortmund5_thumb.jpg" width="240" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;&amp;nbsp;The tournament combines four players that will play in the world championship tournament later this year in Mexico (Kramnik, Anand, Gelfand, and Leko) with one player from Germany (Naiditsch), and three young players (Carlsen, Alexeev, and Mamedyarov). Carlsen already has regular invitations to top events this year. Alexeev won the Russian championship and qualified via the Aeroflot open.&amp;nbsp;Mamedyarov has established himself in the top ten.&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.bennedik.de/images/AweekendinDortmund_13ADB/Dortmund6.jpg" atomicselection="true"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="360" alt="Dortmund-6" src="http://www.bennedik.de/images/AweekendinDortmund_13ADB/Dortmund6_thumb.jpg" width="480" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;I was very glad to see a real Marshall at top level, as I am getting a bit bored by the &lt;a href="http://www.douglasadams.com/creations/0345379330.html"&gt;Mostly Harmless&lt;/a&gt;&amp;nbsp;Anti Marshalls. So I was excited to be able to stand next to the game when they played the opening moves and take a photo of it. &lt;/p&gt; &lt;p&gt;I am not so sure about the move order they played in the game. Leko played the Adams-Variation move order with &lt;strong&gt;17..Qh5&lt;/strong&gt;, when &lt;strong&gt;18.a4 Bf5&lt;/strong&gt; would lead into the Adams variation, or &lt;strong&gt;18.a4 Re6&lt;/strong&gt; would transpose to the Spassky variation, which is the main line these days. Vishy played &lt;strong&gt;18.Qf1&lt;/strong&gt; (see diagram on the left).&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.bennedik.de/images/AweekendinDortmund_13ADB/image.png" atomicselection="true"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="240" alt="image" src="http://www.bennedik.de/images/AweekendinDortmund_13ADB/image_thumb.png" width="239" border="0"&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp; &lt;a href="http://www.bennedik.de/images/AweekendinDortmund_13ADB/image_3.png" atomicselection="true"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="239" alt="image" src="http://www.bennedik.de/images/AweekendinDortmund_13ADB/image_thumb_3.png" width="240" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;This allows Black to play &lt;strong&gt;18..Bh3&lt;/strong&gt; and if White wants to avoid a repetition he would have to go into the Adams variation with &lt;strong&gt;19.Bd1 Qf5 20.Qe2&lt;/strong&gt; a tempo down (he has not played a4).&lt;/p&gt; &lt;p&gt;However Peter played the game in Kramnik's I-am-the-wall (TM) style, accepting a slightly inferior endgame where White cannot win. In fact the position in the end (see diagram on the right) is still given as superior for White by all the silicon chess players, as White is a pawn up. But if you play out the position you realize that White cannot easily make any progress. Black's bishop pair seems to deny White the chances to activate his pieces or push his pawn.&lt;/p&gt; &lt;p&gt;Being confident with this plan, Peter didn't bother about Adams or Spassky variation, and introduced the move &lt;strong&gt;18..Re7&lt;/strong&gt;. &lt;/p&gt; &lt;p&gt;&lt;a href="http://www.bennedik.de/images/AweekendinDortmund_13ADB/image_4.png" atomicselection="true"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="240" alt="image" src="http://www.bennedik.de/images/AweekendinDortmund_13ADB/image_thumb_4.png" width="237" border="0"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;During the game I thought that after &lt;strong&gt;19.a4 Rfe8 20.Bxd5 Qxd5 22.axb5 axb5&lt;/strong&gt;&amp;nbsp;(see diagram) White should use the fact that there is no rook on the sixth&amp;nbsp;rank&amp;nbsp;by&amp;nbsp;playing &lt;strong&gt;22.Qg2&lt;/strong&gt; - if Black's queen moves away White can take on c6 and does not have to fear moves like &lt;strong&gt;Bxg3&lt;/strong&gt;. After seeing the game I think that Black would just exchange queens after &lt;strong&gt;22.Qg2&lt;/strong&gt; and try a similar endgame. &lt;/p&gt; &lt;p&gt;Can White find some ways to play this or is the Marshall just a draw? Food for thought.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8406766-3568238382629992733?l=www.bennedik.de%2Findex.html' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/8406766/3568238382629992733/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=8406766&amp;postID=3568238382629992733' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8406766/posts/default/3568238382629992733'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8406766/posts/default/3568238382629992733'/><link rel='alternate' type='text/html' href='http://www.bennedik.de/2007/06/marshall-of-dortmund.html' title='The Marshall of Dortmund'/><author><name>Martin Bennedik</name><uri>http://www.blogger.com/profile/10058594370176420543</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16926799687919114217'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8406766.post-1263784216046611683</id><published>2007-06-09T13:43:00.001-07:00</published><updated>2007-06-09T13:44:04.756-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='chess'/><title type='text'>FIDE candidates final matches: round four preview</title><content type='html'>&lt;p&gt;&lt;strong&gt;Shirov - Aronian&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Shirov had prepared a very interesting new idea in the trendy Queen's Indian line that we already saw in the candidates in the Bareev - Polgar game. &lt;/p&gt; &lt;p&gt;Aronian found an interesting way to play for Black over the board. He sacrificed the Queen for Rook, Bishop, and Pawn, getting enough practical chances. Theoretically however, the situation is far from clear, and there should be improvements possible (for example &lt;strong&gt;21.Bf4 &lt;/strong&gt;is recommended by my Fritz).&lt;/p&gt; &lt;p&gt;Also while Aronian is to be praised for finding this line over the board, this doesn't mean that it is already the best possible. If after &lt;strong&gt;12.Nc3&lt;/strong&gt; Black delays castling for a move, and plays &lt;strong&gt;12..Nb4&lt;/strong&gt; immediately, or even &lt;strong&gt;12..a6&lt;/strong&gt;, the whole idea with &lt;strong&gt;13.g4&lt;/strong&gt; does not seem to work at all.&lt;/p&gt; &lt;p&gt;Therefore I think Shirov will continue his hit-and-run tactic and test Aronian in another line.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Bareev - Leko&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Leko played the Slav in game two. This must have been a minor surprise to Bareev, as Leko has played the Slav only on a few occasions before. Indeed&amp;nbsp;Bareev used a lot of time and then suddenly offered a draw in a position that Peter still knew from his preparation.&lt;/p&gt; &lt;p&gt;I don't know if Leko has prepared the Slav especially for this match.&amp;nbsp;He could not have known that Bareev would be his opponent - but maybe he prepared for all three possible opponents, including Polgar. Or he has generally prepared the Slav as a second defence against &lt;strong&gt;1.d4&lt;/strong&gt;.&lt;/p&gt; &lt;p&gt;In any case I think he wanted to avoid the Queen's Indian that Bareev played against Polgar, and that Shirov also played against Aronian (see above). The line is very new, White has a nice initiative, and it is not easy to avoid with Black. Many unexplored ways to play this line with White probably still exist, making it not easy for the Black player to prepare against it.&lt;/p&gt; &lt;p&gt;I expect Bareev to prepare something against the Slav or switch to &lt;strong&gt;1.c4&lt;/strong&gt;.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Rublevsky - Grischuk&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;In game two Grischuk made Rublevsky's Scottish opening look very harmless. &lt;/p&gt; &lt;p&gt;In game three Rublevsky &lt;a href="http://www.bennedik.de/2007/06/fide-candidates-final-matches-round.html"&gt;followed my suggestion&lt;/a&gt;&amp;nbsp;and switched to the Paulsen. Actually he followed both of my suggestions at once, and later transposed to the Scheveningen, but used a different setup from the first game. Grischuk then proceeded to play another great game, only to miss the win just before the time control.&lt;/p&gt; &lt;p&gt;So far Grischuk seems to&amp;nbsp;refute Rublevsky's openings for breakfast - and they looked so solid against Ponomariov. Rublevsky should better come up with something soon, but it looks difficult.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Gelfand - Kamsky&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Kamsky played a (very!) terrible game three. I guess Gata has shown that you can play without openings on this level. But playing without openings and then spending ages of time on the first few moves was really too much.&lt;/p&gt; &lt;p&gt;Kamsky now faces the second half of the match with a point and a White game down. I am afraid another Slav won't help here. Did I mention I was still waiting for the KID? &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8406766-1263784216046611683?l=www.bennedik.de%2Findex.html' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/8406766/1263784216046611683/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=8406766&amp;postID=1263784216046611683' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8406766/posts/default/1263784216046611683'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8406766/posts/default/1263784216046611683'/><link rel='alternate' type='text/html' href='http://www.bennedik.de/2007/06/fide-candidates-final-matches-round_09.html' title='FIDE candidates final matches: round four preview'/><author><name>Martin Bennedik</name><uri>http://www.blogger.com/profile/10058594370176420543</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16926799687919114217'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry></feed>