Opposite Color Bishop Endgames

Discussion of anything and everything relating to chess playing software and machines.

Moderators: hgm, Rebel, chrisw

Stephen Ham
Posts: 2488
Joined: Wed Mar 08, 2006 9:40 pm
Location: Eden Prairie, Minnesota
Full name: Stephen Ham

Opposite Color Bishop Endgames

Post by Stephen Ham »

Hello All,

The following 8-piece endgame just arose in a Raubfisch X40a3-Cfish match:
[d]4b3/8/6k1/6p1/p6p/K3B1P1/8/8 w 01

Virtually all humans immediately see that this is a draw. White will exchange pawns and then sac his Bishop for Black's dark-squared pawn, leading to a King versus King, Bishop, and pawn endgame draw. However, at this position, Raubfisch scored it -1.79 while Cfish scored it -2.30! I'm playing with 5-man Nalimov TBs.

Since opposite color bishop endgames with more than 6-7 pieces occur frequently, shouldn't programmers code their engines to know when such positions are draws? Then, the materially weaker side could learn to draw games they'd otherwise lose, while materially stronger sides could score wins by avoiding these draws.

Both of the above engines are Stockfish derivatives, suggesting that the strongest A-B engine also lacks this coding. So, are programmers counting on users to have 6-man TBs for engine probing?

Many moves were played since the above position. At move 130, after endless shuffling of bishops, Raubfisch scored it as a small white disadvantage while Cfish still scored it -2.30 until going over 40 plies, when the evaluation dropped to 0.00. They then drew a couple moves later.

All the best,
Steve
Nay Lin Tun
Posts: 708
Joined: Mon Jan 16, 2012 6:34 am

Re: Opposite Color Bishop Endgames

Post by Nay Lin Tun »

If OCB is easy to code, programmers would have coded since 20 years ago.
If you think it is easy to code, you can code yourself.
Stockfish is open source!!!
User avatar
MikeB
Posts: 4889
Joined: Thu Mar 09, 2006 6:34 am
Location: Pen Argyl, Pennsylvania

Re: Opposite Color Bishop Endgames

Post by MikeB »

Stephen Ham wrote: Fri May 10, 2019 6:48 am Hello All,

The following 8-piece endgame just arose in a Raubfisch X40a3-Cfish match:
[d]4b3/8/6k1/6p1/p6p/K3B1P1/8/8 w 01

Virtually all humans immediately see that this is a draw. White will exchange pawns and then sac his Bishop for Black's dark-squared pawn, leading to a King versus King, Bishop, and pawn endgame draw. However, at this position, Raubfisch scored it -1.79 while Cfish scored it -2.30! I'm playing with 5-man Nalimov TBs.

Since opposite color bishop endgames with more than 6-7 pieces occur frequently, shouldn't programmers code their engines to know when such positions are draws? Then, the materially weaker side could learn to draw games they'd otherwise lose, while materially stronger sides could score wins by avoiding these draws.

Both of the above engines are Stockfish derivatives, suggesting that the strongest A-B engine also lacks this coding. So, are programmers counting on users to have 6-man TBs for engine probing?

Many moves were played since the above position. At move 130, after endless shuffling of bishops, Raubfisch scored it as a small white disadvantage while Cfish still scored it -2.30 until going over 40 plies, when the evaluation dropped to 0.00. They then drew a couple moves later.

All the best,
Steve
hmm... that are not using tablebases? 6 Man used below :

Code: Select all

dep	score	nodes	time	(not shown:  tbhits	knps	seldep)
 82	  0.00 	23.2M  	0:14.14	gxh4 g4 h5+ Kg7 h6+ Kh7 Bf4 Bc6 Be5 Bd7 Bg3 Kxh6 
 81	  0.00 	21.9M  	0:13.34	gxh4 g4 h5+ Kg7 h6+ Kh7 Bf4 Bc6 Be5 Bd7 Bg3 Kxh6 
 80	  0.00 	20.3M  	0:12.32	gxh4 g4 h5+ Kg7 h6+ Kh7 Bf4 Bc6 Be5 Bd7 Bg3 Kxh6 
 79	  0.00 	18.5M  	0:11.23	gxh4 g4 h5+ Kg7 h6+ Kh7 Bf4 Bc6 Be5 Bd7 Bg3 Kxh6 
 78	  0.00 	17.1M  	0:10.32	gxh4 g4 h5+ Kg7 h6+ Kh7 Bf4 Bc6 Be5 Bd7 Bg3 Kxh6 
 77	  0.00 	15.3M  	0:09.33	gxh4 g4 h5+ Kg7 h6+ Kh7 Bf4 Bc6 Be5 Bd7 Bg3 Kxh6 
 76	  0.00 	13.8M  	0:08.45	gxh4 g4 h5+ Kg7 h6+ Kh7 Bf4 Bc6 Be5 Bd7 Bg3 Kxh6 
 75	  0.00 	12.2M  	0:07.41	gxh4 g4 h5+ Kg7 h6+ Kh7 Bf4 Bc6 Be5 Bd7 Bg3 Kxh6 
 74	  0.00 	11.5M  	0:07.03	gxh4 g4 h5+ Kg7 h6+ Kh7 Bf4 Bc6 Be5 Bd7 Bg3 Kxh6 
 73	  0.00 	10.4M  	0:06.22	gxh4 g4 h5+ Kg7 h6+ Kh7 Bf4 Bc6 Be5 Bd7 Bg3 Kxh6 
 72	  0.00 	9.34M  	0:05.72	gxh4 g4 h5+ Kg7 h6+ Kh7 Bf4 Bc6 Be5 Bd7 Bg3 Kxh6 
 71	  0.00 	8.29M  	0:05.04	gxh4 g4 h5+ Kg7 h6+ Kh7 Bf4 Bc6 Be5 Bd7 Bg3 Kxh6 
 70	  0.00 	7.68M  	0:04.70	gxh4 g4 h5+ Kg7 h6+ Kh7 Bf4 Bc6 Be5 Bd7 Bg3 Kxh6 
 69	  0.00 	7.11M  	0:04.36	gxh4 g4 h5+ Kg7 h6+ Kh7 Bf4 Bc6 Be5 Bd7 Bg3 Kxh6 
 68	  0.00 	6.55M  	0:04.04	gxh4 g4 h5+ Kg7 h6+ Kh7 Bf4 Bc6 Be5 Bd7 Bg3 Kxh6 
 67	  0.00 	6.11M  	0:03.79	gxh4 g4 h5+ Kg7 h6+ Kh7 Bf4 Bc6 Be5 Bd7 Bg3 Kxh6 
 66	  0.00 	5.33M  	0:03.34	gxh4 g4 h5+ Kg7 h6+ Kh7 Bf4 Bc6 Be5 Bd7 Bg3 Kxh6 
 65	  0.00 	5.00M  	0:03.15	gxh4 g4 h5+ Kg7 h6+ Kh7 Bf4 Bc6 Be5 Bd7 Bg3 Kxh6 
 64	  0.00 	4.62M  	0:02.92	gxh4 g4 h5+ Kg7 h6+ Kh7 Bf4 Bc6 Be5 Bd7 Bg3 Kxh6 
 63	  0.00 	3.99M  	0:02.50	gxh4 g4 h5+ Kg7 h6+ Kh7 Bf4 Bc6 Be5 Bd7 Bg3 Kxh6 
 62	  0.00 	3.65M  	0:02.31	gxh4 g4 h5+ Kg7 h6+ Kh7 Bf4 Bc6 Be5 Bd7 Bg3 Kxh6 
 61	  0.00 	3.29M  	0:02.10	gxh4 g4 h5+ Kg7 h6+ Kh7 Bf4 Bc6 Be5 Bd7 Bg3 Kxh6 
 60	  0.00 	3.10M  	0:01.98	gxh4 g4 h5+ Kg7 h6+ Kh7 Bf4 Bc6 Be5 Bd7 Bg3 Kxh6 
 59	  0.00 	2.85M  	0:01.83	gxh4 g4 h5+ Kg7 h6+ Kh7 Bf4 Bc6 Be5 Bd7 Bg3 Kxh6 
 58	  0.00 	2.73M  	0:01.77	gxh4 g4 h5+ Kg7 h6+ Kh7 Bf4 Bc6 Be5 Bd7 Bg3 Kxh6 
 57	  0.00 	2.58M  	0:01.69	gxh4 g4 h5+ Kg7 h6+ Kh7 Bf4 Bc6 Be5 Bd7 Bg3 Kxh6 
 56	  0.00 	2.24M  	0:01.49	gxh4 g4 h5+ Kg7 h6+ Kh7 Bf4 Bc6 Be5 Bd7 Bg3 Kxh6 
 55	  0.00 	2.05M  	0:01.35	gxh4 g4 h5+ Kg7 h6+ Kh7 Bf4 Bc6 Be5 Bd7 Bg3 Kxh6 
 54	  0.00 	1.90M  	0:01.26	gxh4 g4 h5+ Kg7 h6+ Kh7 Bf4 Bc6 Be5 Bd7 Bg3 Kxh6 
 53	  0.00 	1.71M  	0:01.13	gxh4 g4 h5+ Kg7 h6+ Kh7 Bf4 Bc6 Be5 Bd7 Bg3 Kxh6 
 52	  0.00 	1.55M  	0:01.03	gxh4 g4 h5+ Kg7 h6+ Kh7 Bf4 Bc6 Be5 Bd7 Bg3 Kxh6 
 51	  0.00 	1.49M  	0:00.99	gxh4 g4 h5+ Kg7 h6+ Kh7 Bf4 Bc6 Be5 Bd7 Bg3 Kxh6 
 50	  0.00 	1.40M  	0:00.94	gxh4 g4 h5+ Kg7 h6+ Kh7 Bf4 Bc6 Be5 Bd7 Bg3 Kxh6 
 49	  0.00 	1.30M  	0:00.87	gxh4 g4 h5+ Kg7 h6+ Kh7 Bf4 Bc6 Be5 Bd7 Bg3 Kxh6 
 48	  0.00 	1.21M  	0:00.81	gxh4 g4 h5+ Kg7 h6+ Kh7 Bf4 Bc6 Be5 Bd7 Bg3 Kxh6 
 47	  0.00 	1.14M  	0:00.78	gxh4 g4 h5+ Kg7 h6+ Kh7 Bf4 Bc6 Be5 Bd7 Bg3 Kxh6 
 46	  0.00 	1.06M  	0:00.72	gxh4 g4 h5+ Kg7 h6+ Kh7 Bf4 Bc6 Be5 Bd7 Bg3 Kxh6 
 45	  0.00 	975041	0:00.67	gxh4 g4 h5+ Kg7 h6+ Kh7 Bf4 Bc6 Be5 Bd7 Bg3 Kxh6 
 44	  0.00 	898933	0:00.62	gxh4 g4 h5+ Kg7 h6+ Kh7 Bf4 Bc6 Be5 Bd7 Bg3 Kxh6 
 43	  0.00 	849815	0:00.59	gxh4 g4 h5+ Kg7 h6+ Kh7 Bf4 Bc6 Be5 Bd7 Bg3 Kxh6 
 42	  0.00 	815932	0:00.56	gxh4 g4 h5+ Kg7 h6+ Kh7 Bf4 Bc6 Be5 Bd7 Bg3 Kxh6 
 41	  0.00 	606360	0:00.40	gxh4 g4 Bf2 Bc6 Bg3 Kh7 Be5 Be8 Bd6 Kg6 Bc7 Kh5 Bg3 Kh6 Kb4 Bd7 Ka3 
 40	  0.00 	538342	0:00.36	gxh4 g4 Bf2 Bc6 Bg3 Kh7 Be5 Be8 Bd6 Kg6 Bc7 Kh5 Bg3 Kh6 Kb4 Bd7 Ka3 Bb5 Bf2 Kh5 Kb4 Be8 Be1 Bd7 Bf2 
 39	  0.00 	483603	0:00.33	gxh4 g4 Bf2 Bc6 Bg3 Kh7 Be5 Be8 Bd6 Kg6 Bc7 Kh5 Bg3 Kh6 Kb4 Bd7 Ka3 Bb5 Bf2 Kh5 Kb4 Be8 Be1 Bd7 Bf2 
 38	  0.00 	420148	0:00.29	gxh4 g4 Bf2 Bc6 Bg3 Kh7 Be5 Be8 Bd6 Kg6 Bc7 Kh5 Bg3 Kh6 Kb4 Bd7 Ka3 Bb5 Bf2 Kh5 Kb4 Be8 Be1 Bd7 Bf2 Kh6 Ka3 Be8 
 37	  0.00 	350700	0:00.24	gxh4 g4 Bf2 Bc6 Bg3 Kh7 Be5 Be8 Bd6 Kg6 Bc7 Kh5 Bg3 Kh6 Kb4 Bd7 Ka3 
 36	  0.00 	313308	0:00.22	gxh4 g4 Bf2 Bc6 Bg3 Kh7 Be5 Be8 Bd6 Kg6 Bc7 Kh5 Bg3 Kh6 Kb4 Bd7 Ka3 Bb5 Bf2 Kh7 Kb4 Bc6 Bg3 
 35	  0.00 	269505	0:00.19	gxh4 g4 Bf2 Bc6 Bg3 Kh7 Be5 Be8 Bd6 Kg6 Bc7 Kh5 Bg3 Kh6 Kb4 Bd7 Ka3 Bb5 Bf2 Kh7 Kb4 Bc6 Bg3 Bd7 Bd6 Bc6 
 34	  0.00 	238436	0:00.16	gxh4 g4 Bf2 Bc6 Bg3 Kh7 Be5 Be8 Bd6 Kg6 Bc7 Kh5 Bg3 Kh6 Kb4 Bd7 Ka3 Bb5 Bf2 Kh7 Kb4 Bc6 Bg3 
 33	  0.00 	217198	0:00.15	gxh4 g4 Bf2 Bc6 Bg3 Kh7 Be5 Be8 Bd6 Kg6 Bc7 Kh5 Bg3 Kh6 Kb4 Bd7 Ka3 
 32	  0.00 	196525	0:00.14	gxh4 g4 Bf2 Bc6 Bg3 Kh7 Be5 Be8 Bd6 Kg6 Bc7 Kh5 Bg3 Kh6 Kb4 Bd7 Ka3 Bb5 Bf2 Kh5 Kb4 Be8 Bg3 Bc6 Bf2 
 31	  0.00 	173272	0:00.12	gxh4 g4 Bf2 Bc6 Bg3 Kh7 Be5 Be8 Bd6 Kg6 Bc7 Kh5 Bg3 Kh6 Kb4 Bd7 Ka3 
 30	  0.00 	154133	0:00.11	gxh4 g4 Bf2 Bc6 Bg3 Kh7 Be5 Be8 Bd6 Kg6 Bc7 Kh5 Bg3 Kh6 Kb4 Bd7 Ka3 Kh5 
 29	  0.00 	130805	0:00.09	gxh4 g4 Bf2 Bc6 Bg3 Kh7 Be5 Be8 Bd6 Kg6 Bc7 Kh5 Bg3 Kh6 Kb4 Bd7 Ka3 
 28	  0.00 	119680	0:00.08	gxh4 g4 Bf2 Bc6 Bg3 Kh7 Be5 Be8 Bd6 Kg6 Bc7 Kh5 Bg3 Kh6 Kb4 Bd7 Ka3 
 27	  0.00 	109046	0:00.08	gxh4 g4 Bf2 Bc6 Bg3 Kh7 Be5 Be8 Bd6 Kg6 Bc7 Kh5 Bg3 Kh6 Kb4 Bd7 Ka3 
 26	  0.00 	101846	0:00.07	gxh4 g4 Bf2 Bc6 Bg3 Kh7 Be5 Be8 Bd6 Kg6 Bc7 Kh5 Bg3 Kh6 Kb4 Bd7 Ka3 Be8 
 25	  0.00 	93366  	0:00.07	gxh4 g4 Bf2 Bc6 Bg3 Kh7 Be5 Be8 Bd6 Kg6 Bc7 Kh5 Bg3 Kh6 Kb4 Bd7 Ka3 
 24	  0.00 	89942  	0:00.07	gxh4 g4 Bf2 Bc6 Bg3 Kh7 Be5 Be8 Bd6 Kg6 Bc7 Kh5 Bg3 Bc6 
 23	  0.00 	82996  	0:00.06	gxh4 g4 Bf2 Bc6 Bg3 Kh7 Be5 Be8 Bd6 Kg6 Bc7 Kh5 Bg3 Bc6 
 22	  0.00 	73259  	0:00.06	gxh4 g4 Bf2 Bc6 Bg3 Kf5 Kb4 Kf6 Ka3 Bd7 Bf2 Kf5 Bg3 Be8 Kb4 Bc6 Ka3 
 21	  0.00 	66730  	0:00.05	gxh4 g4 Bf2 Bc6 Bg3 Kf5 Kb4 Kf6 Ka3 Bd7 Bf2 Kf5 Bg3 Be8 Kb4 Bc6 Ka3 Kg6 
 20	  0.00 	64012  	0:00.05	gxh4 g4 Bf2 Bc6 Bg3 Kf5 Kb4 Kf6 Ka3 
 19	 -0.02 	57173  	0:00.04	gxh4 g4 Bf2 Bc6 Bg3 Kf5 Kb4 Kf6 Ka3 Bd7 Bf2 Kf5 Bg3 Be8 Kb4 Bc6 Ka3 Bd7 Bc7 Ke4 h5 Kf3 h6 g3 
 18	 -0.08 	47470  	0:00.04	gxh4 g4 Bf2 Bc6 Bg3 Kf5 Kb4 Kf6 Ka3 Bd7 Bf2 Kf5 Bg3 Be8 Kb4 Bc6 Ka3 Bd7 Bc7 Bb5 
 17	 -0.04 	39478  	0:00.03	gxh4 g4 Bf2 Bc6 Bg3 Kf5 Kb4 Bd7 Ka3 Be8 Kb4 Bc6 Ka3 Bd7 Bc7 Be8 Kb4 Kf6 
 16	 -0.31 	28019  	0:00.02	gxh4 g4 Bf2 Bc6 Bg3 Kf5 Kb4 Bd7 Ka3 Be8 Kb4 Kg6 Bf2 Bc6 Bg3 Kh6 Ka3 Be8 
 15	 -0.46 	23366  	0:00.02	gxh4 g4 Bf2 Bc6 Bg3 Kf5 Kb4 Bd7 Ka3 Be8 Kb4 Bc6 Ka3 Bd7 Bc7 Be8 Bd6 Ke4 h5 Kf5 h6 
 14	 -0.49 	22001  	0:00.01	gxh4 g4 Bf2 Bc6 Bg3 Kf5 Kb4 Bd7 Ka3 Be8 Kb4 Bc6 Ka3 Bd7 Bc7 Be8 
 13	 -0.34 	14237  	0:00.01	gxh4 g4 Bf2 Bc6 Bg3 Kf5 Bd6 Bd7 Kb4 Be8 Bg3 Kg6 h5+ Kg5 h6 
 12	 -0.46 	9190    	0:00.01	gxh4 g4 Bf2 Bc6 Bg3 Kf5 Bd6 Bd7 Bc7 Be8 Bd6 Ke4 
 11	 -0.56 	5895    	0:00.01	gxh4 g4 Bf2 Bc6 Bg3 Kf5 Bd6 Ke4 h5 Kf5 h6 
 10	 -0.57 	2477    	0:00.00	gxh4 g4 Bf4 Kh5 Bg3 Bb5 Bf2 Bd7 Kb4 Bc6 Bg3 Kg6 Bd6 
  9	 -0.60 	1327    	0:00.00	gxh4 g4 Bf4 Kh5 Bg3 Bb5 Bf2 Bc6 Kb4 Be8 
  8	 -0.69 	879      	0:00.00	gxh4 g4 Bf4 Kh5 Bg3 Bb5 Bf2 Bd7 Kb4 Bc6 
  7	 -0.66 	555      	0:00.00	gxh4 g4 Bf4 Kh5 Bg3 Bd7 
  6	 -0.67 	243      	0:00.00	gxh4 g4 Bf2 Kh5 Kb4 a3 Kxa3 
  5	 -0.70 	166      	0:00.00	gxh4 g4 Bf2 Kh5 Kb4 
  4	 -0.54 	102      	0:00.00	gxh4 g4 Bf2 Kh5 
  3	 -0.59 	62        	0:00.00	gxh4 g4 Bf4 
  2	 -0.70 	35        	0:00.00	gxh4 gxh4 
  1	 -0.70 	17        	0:00.00	gxh4  
Image
abulmo2
Posts: 433
Joined: Fri Dec 16, 2016 11:04 am
Location: France
Full name: Richard Delorme

Re: Opposite Color Bishop Endgames

Post by abulmo2 »

In Amoeba the opposite bishop code made my program weaker by a few Elo.
Richard Delorme
User avatar
hgm
Posts: 27787
Joined: Fri Mar 10, 2006 10:06 am
Location: Amsterdam
Full name: H G Muller

Re: Opposite Color Bishop Endgames

Post by hgm »

One should remember that the design goal of engines is in general not to be good at chess, but just to have a high Elo. If worse programs score better in games, it is preferred to make them worse.
Stephen Ham
Posts: 2488
Joined: Wed Mar 08, 2006 9:40 pm
Location: Eden Prairie, Minnesota
Full name: Stephen Ham

Re: Opposite Color Bishop Endgames

Post by Stephen Ham »

hgm wrote: Fri May 10, 2019 8:37 pm One should remember that the design goal of engines is in general not to be good at chess, but just to have a high Elo. If worse programs score better in games, it is preferred to make them worse.
Hi HG,

Those are indeed words of wisdom. That's why I post here, to learn such wisdom.

I knew that was true years ago when engines were much more primitive. But I didn't know until now that coding for opposite color bishops still didn't exist in modern chess engines.

Thank you.

All the best,
-Steve-
Dann Corbit
Posts: 12537
Joined: Wed Mar 08, 2006 8:57 pm
Location: Redmond, WA USA

Re: Opposite Color Bishop Endgames

Post by Dann Corbit »

Stephen Ham wrote: Fri May 10, 2019 9:22 pm But I didn't know until now that coding for opposite color bishops still didn't exist in modern chess engines.
In some chess engines. There are engines with intricate bishop code, where opposite colors, bad bishops, bishop pairs, etc. are all taken into account.

There are also chess engines that will only under-promote to knight, but not bishop or rook.

Earns Elo, but I absolutely hate it.
Taking ideas is not a vice, it is a virtue. We have another word for this. It is called learning.
But sharing ideas is an even greater virtue. We have another word for this. It is called teaching.
abulmo2
Posts: 433
Joined: Fri Dec 16, 2016 11:04 am
Location: France
Full name: Richard Delorme

Re: Opposite Color Bishop Endgames

Post by abulmo2 »

hgm wrote: Fri May 10, 2019 8:37 pm One should remember that the design goal of engines is in general not to be good at chess, but just to have a high Elo. If worse programs score better in games, it is preferred to make them worse.
I have some trouble to understand you, to be good at chess IS to have a high Elo. In the case of opposite color bishops, it costs Elo because, quite often, avoiding a drawn game leads to a lost one.
Richard Delorme
Dann Corbit
Posts: 12537
Joined: Wed Mar 08, 2006 8:57 pm
Location: Redmond, WA USA

Re: Opposite Color Bishop Endgames

Post by Dann Corbit »

abulmo2 wrote: Sat May 11, 2019 12:31 am
hgm wrote: Fri May 10, 2019 8:37 pm One should remember that the design goal of engines is in general not to be good at chess, but just to have a high Elo. If worse programs score better in games, it is preferred to make them worse.
I have some trouble to understand you, to be good at chess IS to have a high Elo. In the case of opposite color bishops, it costs Elo because, quite often, avoiding a drawn game leads to a lost one.
It is also true that every evaluation term has a cost associated with calculating it. If the time spent calculating the new evaluation term is more expensive in terms of Elo than the gain in strength from applying the term, then many programmers will simply remove the term from the evaluation.

One that I wish every program had is wall detection, like the old Crafty 20.0 {last version to support it, written by Jeremiah Pennery IIRC}.
If it is painful to evaluate with it, then there could be a UCI or Winboard option to turn it on and off.
But it is really useful for a broad class of chess problems with blocked boards.

For me, I have lots of compute power and plenty of time. I want the right answer. I guess the same is true of every correspondence chess player as well as every chess problem solver. But chess engines are designed for people to play high speed blitz on some server and gain ranking points. Nobody will even look at the games. It's just a number people want to tag on their handle.

I consider that a great perversion. But I realize that I am in the minority.
Taking ideas is not a vice, it is a virtue. We have another word for this. It is called learning.
But sharing ideas is an even greater virtue. We have another word for this. It is called teaching.
User avatar
Graham Banks
Posts: 41412
Joined: Sun Feb 26, 2006 10:52 am
Location: Auckland, NZ

Re: Opposite Color Bishop Endgames

Post by Graham Banks »

gbanksnz at gmail.com