Hosting Server
The Distressica Stories Website is hosted on the Alt.Sex.Stories Text Repository (www.asstr.org), which also hosts the moderation system and archives for alt.sex.stories.moderated. This is a fully donation supported service that does not have advertisements and does not require registration to read its contents.
General
I use American English, including units of measurements. Outside of stories, dates uses ISO format (yyyy-mm-dd). Spell and grammar checking is done on the HTML versions (instead of plain text) in Microsoft Word (because it doesn’t handle paragraphs divided into lines, surprisingly).
The file sizes on The Stories page refers only to the body of the stories and does not include things like formatting, notes, references, contents, dividers, story codes, etc. The number of characters is given in KB, namely the closest multiple of 1024 (yes, I know k- is supposed to be 1000 while Ki- is 1024).
Story-Code Policy
My stories often border on nosex
so a definition of “sex” is
required. Biologically it’s anything that could lead to reproduction,
but that eliminates safe/oral/anal sex, etc. A broad definition is “any
non-incidental stimulation of the genitals, including the anus and the
breasts, excluding natural processes of giving birth, defecating, and
breast feeding.” I use this for the best
(bestiality) code. Most of
my stories would not be nosex
by this definition, but I’ll be more
conservative and use the definition “penetration by the penis or into
the vagina or anus.”
For nc
(non-consensual) I again take a more conservative definition
of “something the victim would rather not happen even if she agreed to
it.” I use Uther Pendragon’s Story Codes for Authors except that
I use bond
for restraints rather than bd
(bondage/discipline).
Also, I assume tort
includes pretty much anything that hurts rather
than going into the specifics not in the list. For snuff
, I will
only use it when death is inevitable in the universe in question. Things
that will generally lead to death are not snuff
because I generally
intend something to prevent that, even if I didn’t bother
fantasizing it.
Web Pages
The webpages are coded in standard HTML 4 with ISO Latin-1 encoding.
Curly quotes and dashes use named character references. High-level tags
are used, including cite
for referring to titles. Anchors are
provided on headings with id
attributes. Exact formatting is done
using CSS. The side margins are very wide to shorten lines, which is
supposed to make them easier to read. And I don’t feel the need to put
mini-menus on the side.
JavaScript is used to show and hide (foot)notes and references. The reason they’re not initially displayed is because sometime I (and presumably others) don’t want to read them. And yes, I know I’m not supposed to footnote fiction. Contents also pop out because they take up too much space. JavaScript is also used to handle alternate versions. Images, multimedia, and other JavaScript will only be used when indispensable (currently one figure).
External Link Policy
Many stories have many versions on the Internet, and I try (often not very hard, e.g. not doing another search in newsgroups, and not comparing different versions) (1) most complete (2) most recently dated by the author (3) fewest linked needed (4) from the author’s website (5) from where most of the author’s stories are posted (6) freely accessible (7) fewest advertisement. For newsgroup postings, use specific web archives such as assm.asstr.org; otherwise Google Groups. I mostly use Google to look for things. If some story is not clickable, it means I cannot find it (and some stuff is no longer available on the internet).
An author’s name may be linked to the author’s homepage, or to a list with many of the author’s stories. Mainstream books, movies, etc. are generally not linked. Erotic commercial products may be linked on the producer’s website. I will not link to specific items that do not seem to be posted with copyright owner’s permission.
Plain Text Versions
Stories posted to newsgroups, including alt.sex.stories.moderated, are in plain text format with ISO Latin-1 encoding. These currently do not include the notes and references. Paragraphs are separated by blank lines and are not indented (the TEX convention). Lines should be no more than 72 characters long and not much shorter. Curly quotes uses TEX convention (one or two single quotes) while dashes follow typewriter convention (one minus sign for hyphens and en dashes, two for em dashes). The plain text _italic_ and *bold* conventions are used, except that titles are quoted instead of italicized.
I consider the HTML versions to the official versions because most of my stories uses HTML features (hiding notes and references and alternate versions, images, extended characters/symbols) and some have essential features that cannot be expressed in plain text (currently, only the ability to link to the middle of a story without using headings or paragraph numbers).
FTP Access
ASSTR have FTP space where we’re supposed to put plain text versions of
stories, but I’m currently not putting anything there because plain text
versions of my stories are non-official. I only see two reasons for
making things available by FTP: for people don’t have convenient web
access, and for easy batch download. Most people who have FTP access
should have web access; if not, we can arrange something. As for batch
downloading, I put all stories in
http://www.asstr.org/~distressica/stories/
so a recursive downloading program can be used. Make sure not to
pull the rest of www.asstr.org
: I have links... For example, use
wget -m -np http://www.asstr.org/~distressica/stories/stories.html
I can also make
zip
files on request.
Generation
The master files for my stories are marked up in a way that roughly
resembles TEX/LATEX/texinfo (it has pretty minimal
disruption of the text). Stupid hacks in written in Perl converts to
SGML (which allows for much tag minimization by using a custom DTD),
which is expanded to XML by OpenSP’s sx
, which is converted to HTML
and plain text (for email and posting) by separate but similar XSLT
programs. The idea is to minimize duplication although I currently hand
write the copyright and disclaimers for each page. Everything is
controlled by make
, and runs on Cygwin, a Unix-like environment
running on top of Windows. Oh I really should design a smart
program that generates XML directly.
The original are word wrapped at 72 characters long and the final plain
text is not reflowed, so some lines are shorter as markups are removed.
For the HTML versions, I tried to tweak XSLT so the HTML sources look
reasonably good, although more markup is generally added. I do not use
programs to format the HTML. Just before making XML, TEX-style curly
quotes, dashes, and (
c
)
are converted to numerical character
entities (Unicode) with sed
. This is necessary because single quotes
are used in HTML and those are not to be converted. The XSLT
program I use can only output UTF-8 so I use GNU iconv
to convert to
Latin-1 and numerical character references. Then numerical character
references are converted to named ones with sed
, which also does
thing like “TEX”. I should find a program that does the character
encoding automatically.
Hidden Headings/Anchors
For hidden headings (used for anchors and Contents [more like Index] at the end with no evidence of it in the text), it would be easier to generate normal headings and hide them with CSS. But not all browsers support CSS, so my XSLT actually deletes the hidden headings and adds an anchor to paragraphs that immediately follows.
The Stories Page
The stories list page is generated from a list of files in order by
using XSLT to extract info, which is then processed the same way as the
other sources. The wc
program is used to count characters, words and
lines. A separate XSLT generates the text to count rather than using the
plain text versions because those have stuff that shouldn’t be counted
(also, each non-Latin1 character are replaced by XX so they count as
two, which is appropriate for Chinese embedded in English) and because
there would otherwise be circular dependency (the story list cannot
depend on the text versions because they depend on heading-links from
all pages, including the story list).
Links and URLs
In the name of reducing duplication, I try to build a data file of URLs and names used to refer to them (such as title of stories). A Perl program converts the data file to XML (which would require extra typing if I were to skip this step), and an XSLT program fills in URLs. The system is designed to handle multiple URLs for a link (mostly different parts or versions of stories).
The Perl program also adds links for the titles and headings of all of my webpages. Anchors for headings are generated from the heading text with sequences of non-alphanumerics replaced with a single underscroll. This is done in a separate pass in Perl because XSLT can’t cut it, and I only use the first line (so the Perl codes wouldn’t be too hairy).
There are complications with links having the same text, especially since I steal titles, so I have to use a hidden part to disambiguate. For the generated ones, I use special one-character prefixes. I hope all it’s worth the trouble in that I could update each URL just once.
Images
Line drawings (currently one) are hand written (so I have control) in PostScript (yes, there are others, but I know PostScript, and it’s programmable) and converted to PNG using ImageMagick which uses GhostScript. JPEG is not supposed to be for line drawings. There’s GIF, but for my first file, Grayscale PNG is slightly smaller.
Uploading
Changed files are re-uploaded whole, even if there are only cosmetic changes (with automatically generated files, it’s real hard to track changes manually). This causes ASSTR to generate a news entry on its front page, etc. That can’t helped unless ASSTR changes its process, for example, by having an option to announce only new files automatically , and changed files manually.
I created a Makefile target for automatic uploading changed files (by content comparison since it’s all generated) one by one using curl by FTP. It keeps a copy of uploaded files locally so it knows whether things changed. I know, this is not the best way to do this. I don’t know rsync, but I suspect that’s it, but I don’t think ASSTR supports that.