chess-puzzles post: some improvements - www.codemadness.org - www.codemadness.org saait content files
 (HTM) git clone git://git.codemadness.org/www.codemadness.org
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit 8a2598c461228e23e1c60ae2e6330d6a02c80485
 (DIR) parent 62167ed6e8bdbb142e3bf51597da29a39f1900b7
 (HTM) Author: Hiltjo Posthuma <hiltjo@codemadness.org>
       Date:   Sun,  4 Feb 2024 13:09:04 +0100
       
       chess-puzzles post: some improvements
       
       Diffstat:
         M config.cfg                          |       2 +-
         M output/atom.xml                     |       4 ++--
         M output/atom_content.xml             |      45 +++++++++++++++++++++----------
         M output/chess-puzzles.html           |      41 ++++++++++++++++++++++---------
         M output/chess-puzzles.md             |      43 +++++++++++++++++++++++--------
         M output/phlog/chess-puzzles          |      45 +++++++++++++++++++++++---------
         M output/rss_content.xml              |      41 ++++++++++++++++++++++---------
         M output/sitemap.xml                  |       2 +-
         M pages/chess-puzzles.cfg             |       2 +-
         M pages/chess-puzzles.md              |      43 +++++++++++++++++++++++--------
       
       10 files changed, 191 insertions(+), 77 deletions(-)
       ---
 (DIR) diff --git a/config.cfg b/config.cfg
       @@ -1,5 +1,5 @@
        # last updated the site.
       -siteupdated = 2024-02-02
       +siteupdated = 2024-02-04
        
        sitetitle = Codemadness
        siteurl = https://www.codemadness.org
 (DIR) diff --git a/output/atom.xml b/output/atom.xml
       @@ -2,7 +2,7 @@
        <feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
                <title>Codemadness</title>
                <subtitle>blog with various projects and articles about computer-related things</subtitle>
       -        <updated>2024-02-02T00:00:00Z</updated>
       +        <updated>2024-02-04T00:00:00Z</updated>
                <link rel="alternate" type="text/html" href="https://www.codemadness.org" />
                <id>https://www.codemadness.org/atom.xml</id>
                <link rel="self" type="application/atom+xml" href="https://www.codemadness.org/atom.xml" />
       @@ -10,7 +10,7 @@
                <title>Chess puzzle book generator</title>
                <link rel="alternate" type="text/html" href="https://www.codemadness.org/chess-puzzles.html" />
                <id>https://www.codemadness.org/chess-puzzles.html</id>
       -        <updated>2024-02-02T00:00:00Z</updated>
       +        <updated>2024-02-04T00:00:00Z</updated>
                <published>2024-02-02T00:00:00Z</published>
                <author>
                        <name>Hiltjo</name>
 (DIR) diff --git a/output/atom_content.xml b/output/atom_content.xml
       @@ -2,7 +2,7 @@
        <feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
                <title>Codemadness</title>
                <subtitle>blog with various projects and articles about computer-related things</subtitle>
       -        <updated>2024-02-02T00:00:00Z</updated>
       +        <updated>2024-02-04T00:00:00Z</updated>
                <link rel="alternate" type="text/html" href="https://www.codemadness.org" />
                <id>https://www.codemadness.org/atom_content.xml</id>
                <link rel="self" type="application/atom+xml" href="https://www.codemadness.org/atom_content.xml" />
       @@ -10,7 +10,7 @@
                <title>Chess puzzle book generator</title>
                <link rel="alternate" type="text/html" href="https://www.codemadness.org/chess-puzzles.html" />
                <id>https://www.codemadness.org/chess-puzzles.html</id>
       -        <updated>2024-02-02T00:00:00Z</updated>
       +        <updated>2024-02-04T00:00:00Z</updated>
                <published>2024-02-02T00:00:00Z</published>
                <author>
                        <name>Hiltjo</name>
       @@ -18,10 +18,10 @@
                </author>
                <summary>Chess puzzle book generator</summary>
                <content type="html"><![CDATA[<h1>Chess puzzle book generator</h1>
       -        <p><strong>Last modification on </strong> <time>2024-02-02</time></p>
       +        <p><strong>Last modification on </strong> <time>2024-02-04</time></p>
                <p>This was a christmas hack for fun and non-profit.
        I wanted to write a chess puzzle book generator.
       -Inspired by 1001 Deadly Checkmates by John Nunn, ISBN-13: 978-1906454258 and
       +Inspired by <a href="https://archive.org/details/1001deadlycheckm0000nunn">1001 Deadly Checkmates by John Nunn, ISBN-13: 978-1906454258</a> and
        similar puzzle books.</p>
        <h1>Example output</h1>
        <ul>
       @@ -36,6 +36,15 @@ similar puzzle books.</p>
        puzzles (not only checkmates) using the red "love" theme.
        It is optimized for his and her pleasure:</p>
        <p><a href="https://codemadness.org/downloads/puzzles-valentine/">https://codemadness.org/downloads/puzzles-valentine/</a></p>
       +<h2>Clone</h2>
       +<pre><code>git clone git://git.codemadness.org/chess-puzzles
       +</code></pre>
       +<h2>Browse</h2>
       +<p>You can browse the source-code at:</p>
       +<ul>
       +<li><a href="https://git.codemadness.org/chess-puzzles/">https://git.codemadness.org/chess-puzzles/</a></li>
       +<li><a href="gopher://codemadness.org/1/git/chess-puzzles">gopher://codemadness.org/1/git/chess-puzzles</a></li>
       +</ul>
        <h1>Quick overview of how it works</h1>
        <p>The generate.sh shellscript generates the output and files for the puzzles.</p>
        <p>The puzzles used are from the lichess.org puzzle database:
       @@ -57,15 +66,17 @@ data about the games played is also open.</p>
        <h1>generate.sh</h1>
        <p>Reads puzzles from the database and shuffle them. Do some rough sorting and
        categorization based on difficulty and assign score points.</p>
       -<p>The random shuffling is done using a hard-coded seed. This means on the same
       -machine with the same puzzle database it will regenerate the same sequence of
       -random puzzles in a deterministic manner.</p>
       -<p>It outputs HTML, with support for dark mode. It also outputs .vt files suitable
       -directly for the terminal and includes a plain-text listing of the solutions
       -for the puzzles.</p>
       +<p>The random shuffling is done using a hard-coded <a href="https://en.wikipedia.org/wiki/Random_seed">random seed</a>. This means on the
       +same machine with the same puzzle database it will regenerate the same sequence
       +of random puzzles in a deterministic manner.</p>
       +<p>It outputs HTML, with support for CSS dark mode and does not use Javascript.
       +It includes a plain-text listing of the solutions in PGN notation for the
       +puzzles.
       +It also outputs .vt files suitable for the terminal. It uses unicode symbols
       +for the chess pieces and RGB color sequence for the board theme</p>
        <h1>fen.c</h1>
       -<p>Read and parse the board state in FEN format and read the UCI moves. It can
       -output to various formats.</p>
       +<p>This is a program written in C to read and parse the board state in FEN format
       +and read the UCI moves. It can output to various formats.</p>
        <p>See the man page for detailed usage information.</p>
        <p>fen.c supports the following output formats:</p>
        <ul>
       @@ -76,7 +87,7 @@ output to various formats.</p>
        <li><a href="https://en.wikipedia.org/wiki/SVG">SVG</a> - Scalable Vector Graphics image.</li>
        <li>tty - Terminal output with some markup using escape codes.</li>
        </ul>
       -<p>fen.c can also run in CGI mode. This can be used on a HTTP server:</p>
       +<p>fen.c can also run in <a href="https://en.wikipedia.org/wiki/Common_Gateway_Interface">CGI</a> mode. This can be used on a HTTP server:</p>
        <p><img src="https://codemadness.org/onlyfens?fen=6k1/ppq3bp/2n2np1/5p2/2P2P2/4rBN1/PP3K1P/RQ6%20w%20-%20-%200%2023&amp;moves=f2e3&amp;flip=1" alt="Position from game: Rene Letelier Martner - Robert James Fischer, 1960-10-24" /></p>
        <ul>
        <li><a href="https://codemadness.org/onlyfens">https://codemadness.org/onlyfens</a></li>
       @@ -101,7 +112,7 @@ too.</p>
        </ul>
        <h1>Example script to stream games from Lichess</h1>
        <p>There is an included example script that can stream Lichess games to the
       -terminal. It uses the Lichess API.  It will display the board using terminal
       +terminal. It uses the <a href="https://lichess.org/api">Lichess API</a>.  It will display the board using terminal
        escape codes. The games are automatically annotated with PGN notation and with
        text how a human would say the notation. This can also be piped to a speech
        synthesizer like <a href="https://github.com/espeak-ng/espeak-ng/">espeak</a> as audio.</p>
       @@ -116,6 +127,9 @@ optimized animated gif. The last move (typically some checkmate) is displayed
        slightly longer.</p>
        <h1>References and chess related links</h1>
        <ul>
       +<li><p>chess-puzzles source-code:<br />  
       +<a href="https://www.codemadness.org/git/chess-puzzles/file/README.html">https://www.codemadness.org/git/chess-puzzles/file/README.html</a></p>
       +</li>
        <li><p>Lichess FEN puzzle database:<br />  
        <a href="https://database.lichess.org/#puzzles">https://database.lichess.org/#puzzles</a></p>
        </li>
       @@ -131,6 +145,9 @@ A great multi-purpose PGN manipulation program with many options:<br />
        <p>An example to convert PGN games to UCI moves:<br />  
        <code>pgn-extract --notags -Wuc</code></p>
        </li>
       +<li><p>Lichess API:<br />  
       +<a href="https://lichess.org/api">https://lichess.org/api</a></p>
       +</li>
        <li><p>Stockfish:<br />  
        Strong open-source chess engine and analysis tool:<br />  
        <a href="https://stockfishchess.org/">https://stockfishchess.org/</a></p>
 (DIR) diff --git a/output/chess-puzzles.html b/output/chess-puzzles.html
       @@ -42,13 +42,13 @@
        <header>
                <h1>Chess puzzle book generator</h1>
                <p>
       -        <strong>Last modification on </strong> <time>2024-02-02</time>
       +        <strong>Last modification on </strong> <time>2024-02-04</time>
                </p>
        </header>
        
        <p>This was a christmas hack for fun and non-profit.
        I wanted to write a chess puzzle book generator.
       -Inspired by 1001 Deadly Checkmates by John Nunn, ISBN-13: 978-1906454258 and
       +Inspired by <a href="https://archive.org/details/1001deadlycheckm0000nunn">1001 Deadly Checkmates by John Nunn, ISBN-13: 978-1906454258</a> and
        similar puzzle books.</p>
        <h1>Example output</h1>
        <ul>
       @@ -63,6 +63,15 @@ similar puzzle books.</p>
        puzzles (not only checkmates) using the red "love" theme.
        It is optimized for his and her pleasure:</p>
        <p><a href="https://codemadness.org/downloads/puzzles-valentine/">https://codemadness.org/downloads/puzzles-valentine/</a></p>
       +<h2>Clone</h2>
       +<pre><code>git clone git://git.codemadness.org/chess-puzzles
       +</code></pre>
       +<h2>Browse</h2>
       +<p>You can browse the source-code at:</p>
       +<ul>
       +<li><a href="https://git.codemadness.org/chess-puzzles/">https://git.codemadness.org/chess-puzzles/</a></li>
       +<li><a href="gopher://codemadness.org/1/git/chess-puzzles">gopher://codemadness.org/1/git/chess-puzzles</a></li>
       +</ul>
        <h1>Quick overview of how it works</h1>
        <p>The generate.sh shellscript generates the output and files for the puzzles.</p>
        <p>The puzzles used are from the lichess.org puzzle database:
       @@ -84,15 +93,17 @@ data about the games played is also open.</p>
        <h1>generate.sh</h1>
        <p>Reads puzzles from the database and shuffle them. Do some rough sorting and
        categorization based on difficulty and assign score points.</p>
       -<p>The random shuffling is done using a hard-coded seed. This means on the same
       -machine with the same puzzle database it will regenerate the same sequence of
       -random puzzles in a deterministic manner.</p>
       -<p>It outputs HTML, with support for dark mode. It also outputs .vt files suitable
       -directly for the terminal and includes a plain-text listing of the solutions
       -for the puzzles.</p>
       +<p>The random shuffling is done using a hard-coded <a href="https://en.wikipedia.org/wiki/Random_seed">random seed</a>. This means on the
       +same machine with the same puzzle database it will regenerate the same sequence
       +of random puzzles in a deterministic manner.</p>
       +<p>It outputs HTML, with support for CSS dark mode and does not use Javascript.
       +It includes a plain-text listing of the solutions in PGN notation for the
       +puzzles.
       +It also outputs .vt files suitable for the terminal. It uses unicode symbols
       +for the chess pieces and RGB color sequence for the board theme</p>
        <h1>fen.c</h1>
       -<p>Read and parse the board state in FEN format and read the UCI moves. It can
       -output to various formats.</p>
       +<p>This is a program written in C to read and parse the board state in FEN format
       +and read the UCI moves. It can output to various formats.</p>
        <p>See the man page for detailed usage information.</p>
        <p>fen.c supports the following output formats:</p>
        <ul>
       @@ -103,7 +114,7 @@ output to various formats.</p>
        <li><a href="https://en.wikipedia.org/wiki/SVG">SVG</a> - Scalable Vector Graphics image.</li>
        <li>tty - Terminal output with some markup using escape codes.</li>
        </ul>
       -<p>fen.c can also run in CGI mode. This can be used on a HTTP server:</p>
       +<p>fen.c can also run in <a href="https://en.wikipedia.org/wiki/Common_Gateway_Interface">CGI</a> mode. This can be used on a HTTP server:</p>
        <p><img src="https://codemadness.org/onlyfens?fen=6k1/ppq3bp/2n2np1/5p2/2P2P2/4rBN1/PP3K1P/RQ6%20w%20-%20-%200%2023&amp;moves=f2e3&amp;flip=1" alt="Position from game: Rene Letelier Martner - Robert James Fischer, 1960-10-24" /></p>
        <ul>
        <li><a href="https://codemadness.org/onlyfens">https://codemadness.org/onlyfens</a></li>
       @@ -128,7 +139,7 @@ too.</p>
        </ul>
        <h1>Example script to stream games from Lichess</h1>
        <p>There is an included example script that can stream Lichess games to the
       -terminal. It uses the Lichess API.  It will display the board using terminal
       +terminal. It uses the <a href="https://lichess.org/api">Lichess API</a>.  It will display the board using terminal
        escape codes. The games are automatically annotated with PGN notation and with
        text how a human would say the notation. This can also be piped to a speech
        synthesizer like <a href="https://github.com/espeak-ng/espeak-ng/">espeak</a> as audio.</p>
       @@ -143,6 +154,9 @@ optimized animated gif. The last move (typically some checkmate) is displayed
        slightly longer.</p>
        <h1>References and chess related links</h1>
        <ul>
       +<li><p>chess-puzzles source-code:<br />  
       +<a href="https://www.codemadness.org/git/chess-puzzles/file/README.html">https://www.codemadness.org/git/chess-puzzles/file/README.html</a></p>
       +</li>
        <li><p>Lichess FEN puzzle database:<br />  
        <a href="https://database.lichess.org/#puzzles">https://database.lichess.org/#puzzles</a></p>
        </li>
       @@ -158,6 +172,9 @@ A great multi-purpose PGN manipulation program with many options:<br />
        <p>An example to convert PGN games to UCI moves:<br />  
        <code>pgn-extract --notags -Wuc</code></p>
        </li>
       +<li><p>Lichess API:<br />  
       +<a href="https://lichess.org/api">https://lichess.org/api</a></p>
       +</li>
        <li><p>Stockfish:<br />  
        Strong open-source chess engine and analysis tool:<br />  
        <a href="https://stockfishchess.org/">https://stockfishchess.org/</a></p>
 (DIR) diff --git a/output/chess-puzzles.md b/output/chess-puzzles.md
       @@ -1,6 +1,6 @@
        This was a christmas hack for fun and non-profit.
        I wanted to write a chess puzzle book generator.
       -Inspired by 1001 Deadly Checkmates by John Nunn, ISBN-13: 978-1906454258 and
       +Inspired by [1001 Deadly Checkmates by John Nunn, ISBN-13: 978-1906454258](https://archive.org/details/1001deadlycheckm0000nunn) and
        similar puzzle books.
        
        
       @@ -22,6 +22,19 @@ It is optimized for his and her pleasure:
        <https://codemadness.org/downloads/puzzles-valentine/>
        
        
       +## Clone
       +
       +        git clone git://git.codemadness.org/chess-puzzles
       +
       +
       +## Browse
       +
       +You can browse the source-code at:
       +
       +* <https://git.codemadness.org/chess-puzzles/>
       +* <gopher://codemadness.org/1/git/chess-puzzles>
       +
       +
        # Quick overview of how it works
        
        The generate.sh shellscript generates the output and files for the puzzles.
       @@ -55,19 +68,21 @@ However, the website depends on your donations or contributions. If you can,
        Reads puzzles from the database and shuffle them. Do some rough sorting and
        categorization based on difficulty and assign score points.
        
       -The random shuffling is done using a hard-coded seed. This means on the same
       -machine with the same puzzle database it will regenerate the same sequence of
       -random puzzles in a deterministic manner.
       +The random shuffling is done using a hard-coded [random seed](https://en.wikipedia.org/wiki/Random_seed). This means on the
       +same machine with the same puzzle database it will regenerate the same sequence
       +of random puzzles in a deterministic manner.
        
       -It outputs HTML, with support for dark mode. It also outputs .vt files suitable
       -directly for the terminal and includes a plain-text listing of the solutions
       -for the puzzles.
       +It outputs HTML, with support for CSS dark mode and does not use Javascript.
       +It includes a plain-text listing of the solutions in PGN notation for the
       +puzzles.
       +It also outputs .vt files suitable for the terminal. It uses unicode symbols
       +for the chess pieces and RGB color sequence for the board theme
        
        
        # fen.c
        
       -Read and parse the board state in FEN format and read the UCI moves. It can
       -output to various formats.
       +This is a program written in C to read and parse the board state in FEN format
       +and read the UCI moves. It can output to various formats.
        
        See the man page for detailed usage information.
        
       @@ -80,7 +95,7 @@ fen.c supports the following output formats:
        * [SVG](https://en.wikipedia.org/wiki/SVG) - Scalable Vector Graphics image.
        * tty - Terminal output with some markup using escape codes.
        
       -fen.c can also run in CGI mode. This can be used on a HTTP server:
       +fen.c can also run in [CGI](https://en.wikipedia.org/wiki/Common_Gateway_Interface) mode. This can be used on a HTTP server:
        
        ![Position from game: Rene Letelier Martner - Robert James Fischer, 1960-10-24](https://codemadness.org/onlyfens?fen=6k1/ppq3bp/2n2np1/5p2/2P2P2/4rBN1/PP3K1P/RQ6%20w%20-%20-%200%2023&moves=f2e3&flip=1)
        
       @@ -112,7 +127,7 @@ For example:
        # Example script to stream games from Lichess
        
        There is an included example script that can stream Lichess games to the
       -terminal. It uses the Lichess API.  It will display the board using terminal
       +terminal. It uses the [Lichess API](https://lichess.org/api).  It will display the board using terminal
        escape codes. The games are automatically annotated with PGN notation and with
        text how a human would say the notation. This can also be piped to a speech
        synthesizer like [espeak](https://github.com/espeak-ng/espeak-ng/) as audio.
       @@ -134,6 +149,9 @@ slightly longer.
        
        # References and chess related links
        
       +* chess-puzzles source-code:  
       +  <https://www.codemadness.org/git/chess-puzzles/file/README.html>
       +
        * Lichess FEN puzzle database:  
          <https://database.lichess.org/#puzzles>
        
       @@ -150,6 +168,9 @@ slightly longer.
          An example to convert PGN games to UCI moves:  
          `pgn-extract --notags -Wuc`
        
       +* Lichess API:  
       +  <https://lichess.org/api>
       +
        * Stockfish:  
          Strong open-source chess engine and analysis tool:  
          <https://stockfishchess.org/>
 (DIR) diff --git a/output/phlog/chess-puzzles b/output/phlog/chess-puzzles
       @@ -3,11 +3,11 @@ i                codemadness.org        70
        i                codemadness.org        70
        i# Chess puzzle book generator                codemadness.org        70
        i                codemadness.org        70
       -iLast modification on 2024-02-02                codemadness.org        70
       +iLast modification on 2024-02-04                codemadness.org        70
        i                codemadness.org        70
        iThis was a christmas hack for fun and non-profit.                codemadness.org        70
        iI wanted to write a chess puzzle book generator.                codemadness.org        70
       -iInspired by 1001 Deadly Checkmates by John Nunn, ISBN-13: 978-1906454258 and                codemadness.org        70
       +hInspired by »1001 Deadly Checkmates by John Nunn, ISBN-13: 978-1906454258« and        URL:https://archive.org/details/1001deadlycheckm0000nunn        codemadness.org        70
        isimilar puzzle books.                codemadness.org        70
        i                codemadness.org        70
        i                codemadness.org        70
       @@ -29,6 +29,19 @@ i                codemadness.org        70
        hhttps://codemadness.org/downloads/puzzles-valentine/        URL:https://codemadness.org/downloads/puzzles-valentine/        codemadness.org        70
        i                codemadness.org        70
        i                codemadness.org        70
       +i## Clone                codemadness.org        70
       +i                codemadness.org        70
       +i        git clone git://git.codemadness.org/chess-puzzles                codemadness.org        70
       +i                codemadness.org        70
       +i                codemadness.org        70
       +i## Browse                codemadness.org        70
       +i                codemadness.org        70
       +iYou can browse the source-code at:                codemadness.org        70
       +i                codemadness.org        70
       +h* https://git.codemadness.org/chess-puzzles/        URL:https://git.codemadness.org/chess-puzzles/        codemadness.org        70
       +1* gopher://codemadness.org/1/git/chess-puzzles        /git/chess-puzzles        codemadness.org        70
       +i                codemadness.org        70
       +i                codemadness.org        70
        i# Quick overview of how it works                codemadness.org        70
        i                codemadness.org        70
        iThe generate.sh shellscript generates the output and files for the puzzles.                codemadness.org        70
       @@ -62,19 +75,21 @@ i                codemadness.org        70
        iReads puzzles from the database and shuffle them. Do some rough sorting and                codemadness.org        70
        icategorization based on difficulty and assign score points.                codemadness.org        70
        i                codemadness.org        70
       -iThe random shuffling is done using a hard-coded seed. This means on the same                codemadness.org        70
       -imachine with the same puzzle database it will regenerate the same sequence of                codemadness.org        70
       -irandom puzzles in a deterministic manner.                codemadness.org        70
       +hThe random shuffling is done using a hard-coded »random seed«. This means on the        URL:https://en.wikipedia.org/wiki/Random_seed        codemadness.org        70
       +isame machine with the same puzzle database it will regenerate the same sequence                codemadness.org        70
       +iof random puzzles in a deterministic manner.                codemadness.org        70
        i                codemadness.org        70
       -iIt outputs HTML, with support for dark mode. It also outputs .vt files suitable                codemadness.org        70
       -idirectly for the terminal and includes a plain-text listing of the solutions                codemadness.org        70
       -ifor the puzzles.                codemadness.org        70
       +iIt outputs HTML, with support for CSS dark mode and does not use Javascript.                codemadness.org        70
       +iIt includes a plain-text listing of the solutions in PGN notation for the                codemadness.org        70
       +ipuzzles.                codemadness.org        70
       +iIt also outputs .vt files suitable for the terminal. It uses unicode symbols                codemadness.org        70
       +ifor the chess pieces and RGB color sequence for the board theme                codemadness.org        70
        i                codemadness.org        70
        i                codemadness.org        70
        i# fen.c                codemadness.org        70
        i                codemadness.org        70
       -iRead and parse the board state in FEN format and read the UCI moves. It can                codemadness.org        70
       -ioutput to various formats.                codemadness.org        70
       +iThis is a program written in C to read and parse the board state in FEN format                codemadness.org        70
       +iand read the UCI moves. It can output to various formats.                codemadness.org        70
        i                codemadness.org        70
        iSee the man page for detailed usage information.                codemadness.org        70
        i                codemadness.org        70
       @@ -87,7 +102,7 @@ i* speak - mode to output a description of the moves in words.                codemadness.org        
        h* »SVG« - Scalable Vector Graphics image.        URL:https://en.wikipedia.org/wiki/SVG        codemadness.org        70
        i* tty - Terminal output with some markup using escape codes.                codemadness.org        70
        i                codemadness.org        70
       -ifen.c can also run in CGI mode. This can be used on a HTTP server:                codemadness.org        70
       +hfen.c can also run in »CGI« mode. This can be used on a HTTP server:        URL:https://en.wikipedia.org/wiki/Common_Gateway_Interface        codemadness.org        70
        i                codemadness.org        70
        hPosition from game: Rene Letelier Martner - Robert James Fischer, 1960-10-24        URL:https://codemadness.org/onlyfens?fen=6k1/ppq3bp/2n2np1/5p2/2P2P2/4rBN1/PP3K1P/RQ6%20w%20-%20-%200%2023&moves=f2e3&flip=1        codemadness.org        70
        i                codemadness.org        70
       @@ -119,7 +134,7 @@ i                codemadness.org        70
        i# Example script to stream games from Lichess                codemadness.org        70
        i                codemadness.org        70
        iThere is an included example script that can stream Lichess games to the                codemadness.org        70
       -iterminal. It uses the Lichess API.  It will display the board using terminal                codemadness.org        70
       +hterminal. It uses the »Lichess API«.  It will display the board using terminal        URL:https://lichess.org/api        codemadness.org        70
        iescape codes. The games are automatically annotated with PGN notation and with                codemadness.org        70
        itext how a human would say the notation. This can also be piped to a speech                codemadness.org        70
        hsynthesizer like »espeak« as audio.        URL:https://github.com/espeak-ng/espeak-ng/        codemadness.org        70
       @@ -141,6 +156,9 @@ i                codemadness.org        70
        i                codemadness.org        70
        i# References and chess related links                codemadness.org        70
        i                codemadness.org        70
       +i* chess-puzzles source-code:                  codemadness.org        70
       +h  https://www.codemadness.org/git/chess-puzzles/file/README.html        URL:https://www.codemadness.org/git/chess-puzzles/file/README.html        codemadness.org        70
       +i                codemadness.org        70
        i* Lichess FEN puzzle database:                  codemadness.org        70
        h  https://database.lichess.org/#puzzles        URL:https://database.lichess.org/#puzzles        codemadness.org        70
        i                codemadness.org        70
       @@ -157,6 +175,9 @@ i                  codemadness.org        70
        i  An example to convert PGN games to UCI moves:                  codemadness.org        70
        i  `pgn-extract --notags -Wuc`                codemadness.org        70
        i                codemadness.org        70
       +i* Lichess API:                  codemadness.org        70
       +h  https://lichess.org/api        URL:https://lichess.org/api        codemadness.org        70
       +i                codemadness.org        70
        i* Stockfish:                  codemadness.org        70
        i  Strong open-source chess engine and analysis tool:                  codemadness.org        70
        h  https://stockfishchess.org/        URL:https://stockfishchess.org/        codemadness.org        70
 (DIR) diff --git a/output/rss_content.xml b/output/rss_content.xml
       @@ -13,10 +13,10 @@
                <dc:date>2024-02-02T00:00:00Z</dc:date>
                <author>Hiltjo</author>
                <description><![CDATA[<h1>Chess puzzle book generator</h1>
       -        <p><strong>Last modification on </strong> <time>2024-02-02</time></p>
       +        <p><strong>Last modification on </strong> <time>2024-02-04</time></p>
                <p>This was a christmas hack for fun and non-profit.
        I wanted to write a chess puzzle book generator.
       -Inspired by 1001 Deadly Checkmates by John Nunn, ISBN-13: 978-1906454258 and
       +Inspired by <a href="https://archive.org/details/1001deadlycheckm0000nunn">1001 Deadly Checkmates by John Nunn, ISBN-13: 978-1906454258</a> and
        similar puzzle books.</p>
        <h1>Example output</h1>
        <ul>
       @@ -31,6 +31,15 @@ similar puzzle books.</p>
        puzzles (not only checkmates) using the red "love" theme.
        It is optimized for his and her pleasure:</p>
        <p><a href="https://codemadness.org/downloads/puzzles-valentine/">https://codemadness.org/downloads/puzzles-valentine/</a></p>
       +<h2>Clone</h2>
       +<pre><code>git clone git://git.codemadness.org/chess-puzzles
       +</code></pre>
       +<h2>Browse</h2>
       +<p>You can browse the source-code at:</p>
       +<ul>
       +<li><a href="https://git.codemadness.org/chess-puzzles/">https://git.codemadness.org/chess-puzzles/</a></li>
       +<li><a href="gopher://codemadness.org/1/git/chess-puzzles">gopher://codemadness.org/1/git/chess-puzzles</a></li>
       +</ul>
        <h1>Quick overview of how it works</h1>
        <p>The generate.sh shellscript generates the output and files for the puzzles.</p>
        <p>The puzzles used are from the lichess.org puzzle database:
       @@ -52,15 +61,17 @@ data about the games played is also open.</p>
        <h1>generate.sh</h1>
        <p>Reads puzzles from the database and shuffle them. Do some rough sorting and
        categorization based on difficulty and assign score points.</p>
       -<p>The random shuffling is done using a hard-coded seed. This means on the same
       -machine with the same puzzle database it will regenerate the same sequence of
       -random puzzles in a deterministic manner.</p>
       -<p>It outputs HTML, with support for dark mode. It also outputs .vt files suitable
       -directly for the terminal and includes a plain-text listing of the solutions
       -for the puzzles.</p>
       +<p>The random shuffling is done using a hard-coded <a href="https://en.wikipedia.org/wiki/Random_seed">random seed</a>. This means on the
       +same machine with the same puzzle database it will regenerate the same sequence
       +of random puzzles in a deterministic manner.</p>
       +<p>It outputs HTML, with support for CSS dark mode and does not use Javascript.
       +It includes a plain-text listing of the solutions in PGN notation for the
       +puzzles.
       +It also outputs .vt files suitable for the terminal. It uses unicode symbols
       +for the chess pieces and RGB color sequence for the board theme</p>
        <h1>fen.c</h1>
       -<p>Read and parse the board state in FEN format and read the UCI moves. It can
       -output to various formats.</p>
       +<p>This is a program written in C to read and parse the board state in FEN format
       +and read the UCI moves. It can output to various formats.</p>
        <p>See the man page for detailed usage information.</p>
        <p>fen.c supports the following output formats:</p>
        <ul>
       @@ -71,7 +82,7 @@ output to various formats.</p>
        <li><a href="https://en.wikipedia.org/wiki/SVG">SVG</a> - Scalable Vector Graphics image.</li>
        <li>tty - Terminal output with some markup using escape codes.</li>
        </ul>
       -<p>fen.c can also run in CGI mode. This can be used on a HTTP server:</p>
       +<p>fen.c can also run in <a href="https://en.wikipedia.org/wiki/Common_Gateway_Interface">CGI</a> mode. This can be used on a HTTP server:</p>
        <p><img src="https://codemadness.org/onlyfens?fen=6k1/ppq3bp/2n2np1/5p2/2P2P2/4rBN1/PP3K1P/RQ6%20w%20-%20-%200%2023&amp;moves=f2e3&amp;flip=1" alt="Position from game: Rene Letelier Martner - Robert James Fischer, 1960-10-24" /></p>
        <ul>
        <li><a href="https://codemadness.org/onlyfens">https://codemadness.org/onlyfens</a></li>
       @@ -96,7 +107,7 @@ too.</p>
        </ul>
        <h1>Example script to stream games from Lichess</h1>
        <p>There is an included example script that can stream Lichess games to the
       -terminal. It uses the Lichess API.  It will display the board using terminal
       +terminal. It uses the <a href="https://lichess.org/api">Lichess API</a>.  It will display the board using terminal
        escape codes. The games are automatically annotated with PGN notation and with
        text how a human would say the notation. This can also be piped to a speech
        synthesizer like <a href="https://github.com/espeak-ng/espeak-ng/">espeak</a> as audio.</p>
       @@ -111,6 +122,9 @@ optimized animated gif. The last move (typically some checkmate) is displayed
        slightly longer.</p>
        <h1>References and chess related links</h1>
        <ul>
       +<li><p>chess-puzzles source-code:<br />  
       +<a href="https://www.codemadness.org/git/chess-puzzles/file/README.html">https://www.codemadness.org/git/chess-puzzles/file/README.html</a></p>
       +</li>
        <li><p>Lichess FEN puzzle database:<br />  
        <a href="https://database.lichess.org/#puzzles">https://database.lichess.org/#puzzles</a></p>
        </li>
       @@ -126,6 +140,9 @@ A great multi-purpose PGN manipulation program with many options:<br />
        <p>An example to convert PGN games to UCI moves:<br />  
        <code>pgn-extract --notags -Wuc</code></p>
        </li>
       +<li><p>Lichess API:<br />  
       +<a href="https://lichess.org/api">https://lichess.org/api</a></p>
       +</li>
        <li><p>Stockfish:<br />  
        Strong open-source chess engine and analysis tool:<br />  
        <a href="https://stockfishchess.org/">https://stockfishchess.org/</a></p>
 (DIR) diff --git a/output/sitemap.xml b/output/sitemap.xml
       @@ -2,7 +2,7 @@
        <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
        <url>
                <loc>https://www.codemadness.org/chess-puzzles.html</loc>
       -        <lastmod>2024-02-02</lastmod>
       +        <lastmod>2024-02-04</lastmod>
        </url>
        <url>
                <loc>https://www.codemadness.org/xargs.html</loc>
 (DIR) diff --git a/pages/chess-puzzles.cfg b/pages/chess-puzzles.cfg
       @@ -3,4 +3,4 @@ id = chess-puzzles
        description = Chess puzzle book generator
        keywords = chess, puzzles, lichess
        created = 2024-02-02
       -updated = 2024-02-02
       +updated = 2024-02-04
 (DIR) diff --git a/pages/chess-puzzles.md b/pages/chess-puzzles.md
       @@ -1,6 +1,6 @@
        This was a christmas hack for fun and non-profit.
        I wanted to write a chess puzzle book generator.
       -Inspired by 1001 Deadly Checkmates by John Nunn, ISBN-13: 978-1906454258 and
       +Inspired by [1001 Deadly Checkmates by John Nunn, ISBN-13: 978-1906454258](https://archive.org/details/1001deadlycheckm0000nunn) and
        similar puzzle books.
        
        
       @@ -22,6 +22,19 @@ It is optimized for his and her pleasure:
        <https://codemadness.org/downloads/puzzles-valentine/>
        
        
       +## Clone
       +
       +        git clone git://git.codemadness.org/chess-puzzles
       +
       +
       +## Browse
       +
       +You can browse the source-code at:
       +
       +* <https://git.codemadness.org/chess-puzzles/>
       +* <gopher://codemadness.org/1/git/chess-puzzles>
       +
       +
        # Quick overview of how it works
        
        The generate.sh shellscript generates the output and files for the puzzles.
       @@ -55,19 +68,21 @@ However, the website depends on your donations or contributions. If you can,
        Reads puzzles from the database and shuffle them. Do some rough sorting and
        categorization based on difficulty and assign score points.
        
       -The random shuffling is done using a hard-coded seed. This means on the same
       -machine with the same puzzle database it will regenerate the same sequence of
       -random puzzles in a deterministic manner.
       +The random shuffling is done using a hard-coded [random seed](https://en.wikipedia.org/wiki/Random_seed). This means on the
       +same machine with the same puzzle database it will regenerate the same sequence
       +of random puzzles in a deterministic manner.
        
       -It outputs HTML, with support for dark mode. It also outputs .vt files suitable
       -directly for the terminal and includes a plain-text listing of the solutions
       -for the puzzles.
       +It outputs HTML, with support for CSS dark mode and does not use Javascript.
       +It includes a plain-text listing of the solutions in PGN notation for the
       +puzzles.
       +It also outputs .vt files suitable for the terminal. It uses unicode symbols
       +for the chess pieces and RGB color sequence for the board theme
        
        
        # fen.c
        
       -Read and parse the board state in FEN format and read the UCI moves. It can
       -output to various formats.
       +This is a program written in C to read and parse the board state in FEN format
       +and read the UCI moves. It can output to various formats.
        
        See the man page for detailed usage information.
        
       @@ -80,7 +95,7 @@ fen.c supports the following output formats:
        * [SVG](https://en.wikipedia.org/wiki/SVG) - Scalable Vector Graphics image.
        * tty - Terminal output with some markup using escape codes.
        
       -fen.c can also run in CGI mode. This can be used on a HTTP server:
       +fen.c can also run in [CGI](https://en.wikipedia.org/wiki/Common_Gateway_Interface) mode. This can be used on a HTTP server:
        
        ![Position from game: Rene Letelier Martner - Robert James Fischer, 1960-10-24](https://codemadness.org/onlyfens?fen=6k1/ppq3bp/2n2np1/5p2/2P2P2/4rBN1/PP3K1P/RQ6%20w%20-%20-%200%2023&moves=f2e3&flip=1)
        
       @@ -112,7 +127,7 @@ For example:
        # Example script to stream games from Lichess
        
        There is an included example script that can stream Lichess games to the
       -terminal. It uses the Lichess API.  It will display the board using terminal
       +terminal. It uses the [Lichess API](https://lichess.org/api).  It will display the board using terminal
        escape codes. The games are automatically annotated with PGN notation and with
        text how a human would say the notation. This can also be piped to a speech
        synthesizer like [espeak](https://github.com/espeak-ng/espeak-ng/) as audio.
       @@ -134,6 +149,9 @@ slightly longer.
        
        # References and chess related links
        
       +* chess-puzzles source-code:  
       +  <https://www.codemadness.org/git/chess-puzzles/file/README.html>
       +
        * Lichess FEN puzzle database:  
          <https://database.lichess.org/#puzzles>
        
       @@ -150,6 +168,9 @@ slightly longer.
          An example to convert PGN games to UCI moves:  
          `pgn-extract --notags -Wuc`
        
       +* Lichess API:  
       +  <https://lichess.org/api>
       +
        * Stockfish:  
          Strong open-source chess engine and analysis tool:  
          <https://stockfishchess.org/>