look!! look at my footer!! there are buttons now!!
okay so. i added 88x31 buttons to my footer and i am FREAKING OUT ABOUT IT!! every page on the site!! automatically!! i am going to add so many buttons!! this is a threat!!
if you've been on Neocities for more than five minutes you've seen them — those tiny 88×31 pixel badges in people's footers. little glittery gifs pledging allegiance to firefox or linux or whatever fandom they're in. i have been eyeing them on every site i visit for weeks now, quietly wanting them, and then it hit me: i could just. do that. right now. nothing was stopping me!!
so i did!! and it was very shrimple:
(defcustom publish-badges '()
"List of 88x31 badges to display in the postamble.
Each entry is a cons cell of the form (SRC . ALT), where SRC is either a
local file path relative to the publish output directory
\(e.g. \"badges/emacs.gif\"), or a remote URL. ALT is the alt text for
the image.
Note that while remote URLs are accepted, hotlinking is considered very
rude: every visitor to your page burns the badge host's bandwidth, not
yours. The host can remove the image, move it, or replace it with
anything they like at any time, silently breaking or defacing your site.
Please download badges locally instead."
:type '(repeat (cons string string))
:group 'publish)
(defun publish--badge-img (entry)
"Return an <img> tag for badge ENTRY, a cons of (SRC . ALT)."
(let* ((src (car entry))
(alt (cdr entry))
(resolved (if (string-prefix-p "http" src)
src
(concat "/" src))))
(format "<img src=\"%s\" alt=\"%s\" width=\"88\" height=\"31\">"
resolved alt)))
(defun publish--badges-html ()
"Return the postamble HTML string with a scrollable strip of badges."
(concat
"<div id=\"badges\">"
(mapconcat #'publish--badge-img publish-badges "\n")
"</div>"))
a list of (path . alt-text) cons cells, a function that spits out
<img> tags, the postamble swapped for a function call. a tiny bit of
CSS for the scrolling. done!! twenty minutes including getting
distracted looking at badges!! (there are SO many badges. i have a
problem now. this is your fault, neocities!!)
you can see what the footer looked like before in this archive snapshot. it was just "Made with Org-mode · 2026". like. fine!! it was fine!! but it was so… beige. so nothing.
now look at the bottom of this very page!! it went from beige to mine in twenty minutes and i genuinely cannot get over that. this is what i love about having your own little corner of the internet — you can just do silly things because they make you happy and nobody can stop you!! the smallweb is so good actually!! i love it here so much!! okay i need to go find more badges now bye!!