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