remove rendered files in public/ from repo
This was a useful experiment in publishing, but it wound up being a giant pain in the ass in practice. Going forward, I'm either going to render server-side like I used to do (which is easy, so why not), or rsync a publication directory. I might even version the published material, but I don't think I'll do it in the same repo as the source archives. It's just too much crap to deal with, and minor changes in something like a template lead to a huge amount of noise.
|19 hours ago|
|archives||4 days ago|
|bin||1 month ago|
|code.p1k3.com||2 months ago|
|files||11 months ago|
|includes||2 months ago|
|public||19 hours ago|
|templates||2 weeks ago|
|topics||3 months ago|
|.gitignore||19 hours ago|
|Makefile||19 hours ago|
|README.md||2 months ago|
|asset_update_tag||1 week ago|
|wrt-lynx-preview.json||1 year ago|
|wrt.json||1 month ago|
archives/ contains the actual entries. Layout is generally something like:
2009/ `-1/ |+27/ |+3/ |-cart_small.jpg `-index
2009 is a year,
1 is the month of January, and everything below that level
is a day. Some days are simple blobs of markup, others are directories which
may contain an index file with the main text of entry, binaries like images,
and one or more sub-entries.
bin/ contains various utility scripts for manipulating the contents of
/archives. Most of these are invoked from the
Makefile, and include:
linkdump.pl: generate the linkdump from a couple of RSS feeds
photos.sh: generate thumbnails and JSON indices for photos
list-by-property.py: generate contents of
tagger.sh: a utility for grepping the archive for strings and applying topic tags
templates/ contains template files.
public/ is mostly a target for rendering public files in.
files/ contains large static files, stored with git-annex. (These will not
be available unless they’ve been copied to the current clone of the
includes/ is for things that are reused in entries or templates with the
<include> tag. At this writing, it contains
shortlinks.md, which is a set
of links for use in Markdown. The idea is that if a link changes or
disappears, it can easily be edited or replaced with a local page. All of the
enclosed links begin with
sl- for easy grepping in future.
topics/ contains vimwiki pages which are used to describe various topics
covered in the entries; these are combined with an automatically rendered
list of tagged entries to create the contents of
code.p1k3.com/ contains the home page for
code.p1k3.com, which for the moment is hosted on the
See https://code.p1k3.com/gitea/brennen/wrt for the tools I use to render the entries here.
You can read these files without any special tools, but rendering or publishing
the full site requires a few things. As a baseline, it expects a GNU/Linux
system; Debian or a derivative will probably work best. There’s a
with a bunch of little commands, and the
bin/ directory contains utilities
for generating different kinds of files.
It also uses some other projects.
wrt is a mostly-Perl static site generator, formerly known as Display.pm. This is the main thing, since it builds almost the entire site.
If you have a working Perl, you can probably install the latest stable release with:
sudo cpan -i App::WRT
gallery-html is a small python script for making HTML image galleries and thumbnails. It can be installed with:
sudo pip3 install galleryhtml
I use git-annex to store large files like photos in only some copies of the repository.
bin/list-by-property.py uses lxml and dominate to pull titles out of pages
and generate topic lists. It also requires docopt for handling command-line
options. You can probably install these with:
sudo pip3 install lxml sudo pip3 install dominate sudo pip3 install docopt
Make sure you have GNU Make and the rest of the aforementioned dependencies installed, then try running:
public/ directory should be updated with the latest HTML version of the
Various other targets are available.