I feel like we are basically done. Marco Antoniotti offered [his __xhtmlambda__](https://xhtmlambda.common-lisp.dev/) for making the rss xml file [on the Mastodon](https://gamerplus.org/@marcoxa@mastodon.social), so I am going to use that. Ugh, Marco, I am tired from the previous sections of my article and did not want to figure out how easy xhtmlambda is to extend, of which it is pretty easy, thank-you.

```
(ql:quickload :xhtmlambda)
(asdf:load-system :cl-json)
(in-package :xhtmlambda)

(defparameter *articles*
  (json-file-to-alist
   "screwlisps-kitten/db/Articles.fragment.js" 1))

(def-element rss :specific-attributes (:version))
(def-element channel)
(def-element title)
(def-element link)
(def-element item)
(def-element pubdate)
(def-element description)

(with-html-syntax-output
    (t)
    (rss
     '(:version "2.0")
     (channel
      ()
      (title () "Screwlisp proposes kittens")
      (link () "https://screwlisp.small-web.org")
      (description () "Lisp, Common Lisp, computer history, programming, LambdaMOO, gopher, kitten, Mastodon, fediverse, the lispy gopher climate podcast, art writings by screwlisp (or screwtape; previously lived in the screwtape proposes a toast gopherhole)."
		   )
      (ITEM
  (TITLE NIL
         "Minor python and ansi cl slicing comparison with a lisp read macro")
  (PUBDATE NIL "Fri, 16 Jan 2026 04:17:40 Z")
  (LINK NIL
        "https://screwlisp.small-web.org//momentary/a-python-tutorial-lisped/"))
 (ITEM (TITLE NIL "My lisp 2025 thanks and 2026 plans")
       (PUBDATE NIL "Tue, 30 Dec 2025 02:26:05 Z")
       (LINK NIL
             "https://screwlisp.small-web.org//momentary/my-cl-2025-and-2026/")))))
```

well, this works:

```
<rss>
    (VERSION 2.0)
    <channel>
        <title>
            Screwlisp proposes kittens
        </title>
        <link>
            https://screwlisp.small-web.org
        </link>
        <description>
            Lisp, Common Lisp, computer history, programming, LambdaMOO, gopher, kitten, Mastodon, fediverse, the lispy gopher climate podcast, art writings by screwlisp / screwtape: previously lived in the screwtape proposes a toast gopherhole.
        </description>
        <item>
            <title>
                Minor python and ansi cl slicing comparison with a lisp read macro
            </title>
            <pubdate>
                Fri, 16 Jan 2026 04:17:40 Z
            </pubdate>
            <link>
                https://screwlisp.small-web.org//momentary/a-python-tutorial-lisped/
            </link>
        </item>
        <item>
            <title>
                My lisp 2025 thanks and 2026 plans
            </title>
            <pubdate>
                Tue, 30 Dec 2025 02:26:05 Z
            </pubdate>
            <link>
                https://screwlisp.small-web.org//momentary/my-cl-2025-and-2026/
            </link>
        </item>
    </channel>
</rss>
```
though I did not figure out how to nest the loop inside with-html-syntax-output properly yet but I can build the s-expression for it separately.
```
(loop
  :with blog = "https://screwlisp.small-web.org/"
  :for article :in (subseq *articles* 0 2)
  :for title := (cdr (assoc :name article))
  :for rellink := (cdr (assoc :link article))
  :for link := (concatenate
		'string
		blog
		(if (equal "/" (subseq rellink 0 1))
		    ""
		    "/")
		rellink)
  :for date := (cdr (assoc :date article))
  :for pubdate := (ut-to-rfc882
		   (fipa-iso8601-to-ut date))
  :collect
  `(item
    (title () ,title)
    (pubdate () ,pubdate)
    (link () ,link)))
 ```

We have gone on for much too long! I will make one or several articles exploring this one in the next week, its useage, including ways I think you and others could sanely use the code. This article was me haphazardly making stuff work.

I will talk about time in lisp and RSS on the peertube live in two hours ( https://toobnix.org/w/gXLXQqxf5MYg1NDF2Ua6oA ) which will also be a debugging episode just in case something broke between last year and this.

(One hour) video livestream of the code in emacs useage: https://toobnix.org/w/evepEXh69p6YaWYsPe6rLs