Compare commits

..

1 Commits

Author SHA1 Message Date
lucidiot 01d314670d Fix missing XML namespace in RSS feeds
Welp, same thing as dozens/cleric-plus-thief#1
2023-10-14 04:45:11 +00:00
77 changed files with 970 additions and 2397 deletions

View File

@ -1,4 +1,4 @@
``` ```tcl
(@)(@) {0,0} (@)(@) {0,0}
(~~~~) ./) ) (~~~~) ./) )
(>vv<) " " (>vv<) " "
@ -10,14 +10,14 @@ yeah that's it doncha know
``` ```
``` ```tcl
(@)(@) {0,0} -- Hoo? (@)(@) {0,0} -- Hoo?
(~~~~) ./) ) (~~~~) ./) )
(>vv<) " " (>vv<) " "
``` ```
``` ```tcl
(@)(@) {0,0} (@)(@) {0,0}
(~~~~) ./) ) (~~~~) ./) )
(>vv<) " " (>vv<) " "

View File

@ -1,28 +1,27 @@
``` ```tcl
(@)(@) {0,0} (@)(@) {0,0}
(~~~~) ./) ) (~~~~) ./) )
(>vv<) " " (>vv<) " "
\ \
...and that's how I became a YAML ...and that's how I became a YAML engineer.
engineer.
``` ```
``` ```tcl
(@)(@) {0,0} -- Hoo? (@)(@) {0,0} -- Hoo?
(~~~~) ./) ) (~~~~) ./) )
(>vv<) " " (>vv<) " "
``` ```
``` ```tcl
(@)(@) {0,0} (@)(@) {0,0}
(~~~~) ./) ) (~~~~) ./) )
(>vv<) " " (>vv<) " "
\ \
To be honest, I'm not sure it's a real To be honest, I'm not sure it's a real job either.
job either. But they keep giving me But they keep giving me YAML and I keep
YAML and I keep ENGINEERING it! ENGINEERING it!
``` ```

View File

@ -1,4 +1,4 @@
``` ```tcl
(@)(@) {0,0} (@)(@) {0,0}
(~~~~) ./) ) (~~~~) ./) )
(>vv<) " " (>vv<) " "
@ -8,14 +8,14 @@ So did you watch the Super Bowl?
``` ```
``` ```tcl
(@)(@) {0,0} -- Hoo? (@)(@) {0,0} -- Hoo?
(~~~~) ./) ) (~~~~) ./) )
(>vv<) " " (>vv<) " "
``` ```
``` ```tcl
(@)(@) {0,0} (@)(@) {0,0}
(~~~~) ./) ) (~~~~) ./) )
(>vv<) " " (>vv<) " "

View File

@ -1,4 +1,4 @@
``` ```tcl
(@)(@) {0,0} (@)(@) {0,0}
(~~~~) ./) ) (~~~~) ./) )
(>vv<) " " (>vv<) " "
@ -11,19 +11,19 @@ Budweiser beer?
``` ```
``` ```tcl
(@)(@) {0,0} -- Hoo? (@)(@) {0,0} -- Hoo?
(~~~~) ./) ) (~~~~) ./) )
(>vv<) " " (>vv<) " "
``` ```
``` ```tcl
(@)(@) {0,0} (@)(@) {0,0}
(~~~~) ./) ) (~~~~) ./) )
(>vv<) " " (>vv<) " "
\ \
Yep! I guess you could say it was a Yep! I guess you could say it was a SUPER BOWL
SUPER BOWL PROTO AD! PROTO AD!
``` ```

View File

@ -1,30 +1,29 @@
``` ```tcl
(@)(@) {0,0} (@)(@) {0,0}
(~~~~) ./) ) (~~~~) ./) )
(>vv<) " " (>vv<) " "
\ \
Who even ever asked for or wanted an Who even ever asked for or wanted an information
information SUPERHIGHWAY anyway? SUPERHIGHWAY anyway?
``` ```
``` ```tcl
(@)(@) {0,0} -- Hoo? (@)(@) {0,0} -- Hoo?
(~~~~) ./) ) (~~~~) ./) )
(>vv<) " " (>vv<) " "
``` ```
``` ```tcl
(@)(@) {0,0} (@)(@) {0,0}
(~~~~) ./) ) (~~~~) ./) )
(>vv<) " " (>vv<) " "
\ \
All I want is like a small cute remote All I want is like a small cute remote
information HIKING TRAIL somewhere out information HIKING TRAIL somewhere out in the
in the woods where I can see some woods where I can see some flowers and leaves and
flowers and leaves and listen to the listen to the birds and stuff.
birds and stuff.
``` ```

View File

@ -1,45 +1,42 @@
``` ```tcl
(@)(@) {0,0} (@)(@) {0,0}
(~~~~) ./) ) (~~~~) ./) )
(>vv<) " " (>vv<) " "
\ \
Is there even such a thing as Is there even such a thing as "mainstream"
"mainstream" anymore? I mean it used to anymore? I mean it used to be the case that
be the case that everybody watched the everybody watched the same nightly news and
same nightly news and listened to the listened to the same radio station. And
same radio station. And "counterculture" was growing your hair long
"counterculture" was growing your hair and listening to rock and roll. Now the duality
long and listening to rock and roll. of mainstream vs. counterculture seems as
Now the duality of mainstream vs. quaint as the idea that there are only two
counterculture seems as quaint as the genders or only two sexes. Kids don't listen to
idea that there are only two genders or rock & roll to rebel, they listen to soundcloud
only two sexes. Kids don't listen to emo rap, or whatever, and if the niche sound that
rock & roll to rebel, they listen to speaks directly to them doesn't exist, they can
soundcloud emo rap, or whatever, and if invent it and upload it for the world to hear with
the niche sound that speaks directly to little more than a cheap laptop.
them doesn't exist, they can invent it
and upload it for the world to hear
with little more than a cheap laptop.
``` ```
``` ```tcl
(@)(@) {0,0} -- Hoo? (@)(@) {0,0} -- Hoo?
(~~~~) ./) ) (~~~~) ./) )
(>vv<) " " (>vv<) " "
``` ```
``` ```tcl
(@)(@) {0,0} (@)(@) {0,0}
(~~~~) ./) ) (~~~~) ./) )
(>vv<) " " (>vv<) " "
\ \
At the other end of the LONG TAIL of At the other end of the LONG TAIL of the internet
the internet is a metaphorical infosec is a metaphorical infosec furry, and because of
furry, and because of them there are as them there are as many small STREAMS and
many small STREAMS and countercultures countercultures as there are individual
as there are individual people. people.
``` ```

View File

@ -1,26 +1,25 @@
# Pro Toad and Superb Owl
``` ```
(@)(@) {0,0} (@)(@) {0,0}
(~~~~) ./) ) (~~~~) ./)_)
(>vv<) " " (>vv<) " "
\ \
there should be no such thing as there should be no such thing
billionaires as billionaires
``` ```
``` ```
(@)(@) {0,0} -- Hoo? (@)(@) {0,0} -- Hoo?
(~~~~) ./) ) (~~~~) ./)_)
(>vv<) " " (>vv<) " "
``` ```
``` ```
(@)(@) {0,0} (@)(@) {0,0}
(~~~~) ./) ) (~~~~) ./)_)
(>vv<) " " (>vv<) " "
\
``` ```

View File

@ -1,39 +1,37 @@
``` ```tcl
(@)(@) {0,0} (@)(@) {0,0}
(~~~~) ./) ) (~~~~) ./) )
(>vv<) " " (>vv<) " "
\ \
There was a sense of euphoria while we There was a sense of euphoria while we were in
were in flow, like we were invinsible, flow, like we were invinsible, but afterwards
but afterwards everything seemed everything seemed brittle and fragile like it
brittle and fragile like it was held was held together with duct tape and kite string
together with duct tape and kite string and like it might all come crumbling down if the
and like it might all come crumbling wind blew in from the wrong direction. And there
down if the wind blew in from the wrong we were in the aftermath, unsure whether we
direction. And there we were in the accomplished our goals, who we hurt in the
aftermath, unsure whether we process, or if there was anything good about it
accomplished our goals, who we hurt in all.
the process, or if there was anything
good about it all.
``` ```
``` ```tcl
(@)(@) {0,0} -- Hoo? (@)(@) {0,0} -- Hoo?
(~~~~) ./) ) (~~~~) ./) )
(>vv<) " " (>vv<) " "
``` ```
``` ```tcl
(@)(@) {0,0} (@)(@) {0,0}
(~~~~) ./) ) (~~~~) ./) )
(>vv<) " " (>vv<) " "
\ \
So anyway that's what we call a So anyway that's what we call a "hackathon". The
"hackathon". The tech bros invited me tech bros invited me to "do some lines" and at
to "do some lines" and at this point I this point I can't remember if it was code or
can't remember if it was code or coke. coke.
``` ```

View File

@ -1,46 +1,42 @@
``` ```tcl
(@)(@) {0,0} (@)(@) {0,0}
(~~~~) ./) ) (~~~~) ./) )
(>vv<) " " (>vv<) " "
\ \
So I picked up a book in the middle of So I picked up a book in the middle of this epic
this epic fantasy series. It's by this fantasy series. It's by this author who I heard
author who I heard does really good does really good sword and sorcery stories, and
sword and sorcery stories, and I'm into I'm into that. Anyway the story opens on a
that. Anyway the story opens on a tragic, lonely noble lord, last of his line,
tragic, lonely noble lord, last of his subject to disfigurement because of the family
line, subject to disfigurement because curse and whatnot. But, get this, it totally
of the family curse and whatnot. But, takes place in Old Germany during the rise of the
get this, it totally takes place in Old Nazi party!
Germany during the rise of the Nazi
party!
``` ```
``` ```tcl
(@)(@) {0,0} -- Hoo? (@)(@) {0,0} -- Hoo?
(~~~~) ./) ) (~~~~) ./) )
(>vv<) " " (>vv<) " "
``` ```
``` ```tcl
(@)(@) {0,0} (@)(@) {0,0}
(~~~~) ./) ) (~~~~) ./) )
(>vv<) " " (>vv<) " "
\ \
I was so disoriented that I looked it I was so disoriented that I looked it up, and
up, and there will eventually be a there will eventually be a classic fantasy
classic fantasy storyline that storyline that interweaves with the modern
interweaves with the modern nazi nazi storyline.
storyline.
Which means eventually the hero is Which means eventually the hero is literally
literally going ride a dragon to going ride a dragon to Hitler's bunker and punch
Hitler's bunker and punch him in the him in the face and if there's one thing this
face and if there's one thing this world needs more of, it's mother fucking
world needs more of, it's mother dragons beating the shit out of nazis.
fucking dragons beating the shit out of
nazis.
``` ```

View File

@ -1,32 +1,31 @@
``` ```tcl
(@)(@) {0,0} (@)(@) {0,0}
(~~~~) ./) ) (~~~~) ./) )
(>vv<) " " (>vv<) " "
\ \
a guy was looking for a priest to a guy was looking for a priest to officiate his
officiate his wedding and narrowed it wedding and narrowed it down to his final two
down to his final two choices. the choices. the first one walked in with two
first one walked in with two beetles beetles and started praying over the bugs. the
and started praying over the bugs. the second one started spraying everybody with
second one started spraying everybody holy water from a water gun. Know who he chose?
with holy water from a water gun. Know
who he chose?
``` ```
``` ```tcl
(@)(@) {0,0} -- Hoo? (@)(@) {0,0} -- Hoo?
(~~~~) ./) ) (~~~~) ./) )
(>vv<) " " (>vv<) " "
``` ```
``` ```tcl
(@)(@) {0,0} (@)(@) {0,0}
(~~~~) ./) ) (~~~~) ./) )
(>vv<) " " (>vv<) " "
\ \
He chose the blesser of two weevils He chose the blesser of two weevils
``` ```

View File

@ -1,43 +1,39 @@
``` ```tcl
(@)(@) {0,0} (@)(@) {0,0}
(~~~~) ./) ) (~~~~) ./) )
(>vv<) " " (>vv<) " "
\ \
So I was down by the capitol and I So I was down by the capitol and I noticed some
noticed some kind of protest was kind of protest was happening. I saw a couple
happening. I saw a couple people people wearing US flags and thought to myself,
wearing US flags and thought to myself, ew, probably a bunch of treasonous right-wing
ew, probably a bunch of treasonous fundamentalist bastards. Which, you know, is
right-wing fundamentalist bastards. always the first thing you think when you see
Which, you know, is always the first somebody wearing the US flag. But then I saw
thing you think when you see somebody somebody holding a "My Body My Choice" sign and
wearing the US flag. But then I saw thought, aw, it must be some pro-choicers! And I
somebody holding a "My Body My Choice" decided to get a little closer to check it out.
sign and thought, aw, it must be some
pro-choicers! And I decided to get a
little closer to check it out.
``` ```
``` ```tcl
(@)(@) {0,0} -- Hoo? (@)(@) {0,0} -- Hoo?
(~~~~) ./) ) (~~~~) ./) )
(>vv<) " " (>vv<) " "
``` ```
``` ```tcl
(@)(@) {0,0} (@)(@) {0,0}
(~~~~) ./) ) (~~~~) ./) )
(>vv<) " " (>vv<) " "
\ \
I got close enough to see a bunch of I got close enough to see a bunch of the other
the other signs and they were all like, signs and they were all like, "No Jab! No
"No Jab! No Vaccine!" and that's when I Vaccine!" and that's when I knew I had been
knew I had been tricked. It WAS a bunch tricked. It WAS a bunch of treasonous
of treasonous right-wing fundamentalist right-wing fundamentalist bastards! I said
bastards! I said "ew" again and turned "ew" again and turned around and ran away.
around and ran away.
``` ```

View File

@ -1,4 +1,4 @@
``` ```tcl
(@)(@) {0,0} (@)(@) {0,0}
(~~~~) ./) ) (~~~~) ./) )
(>vv<) " " (>vv<) " "
@ -8,14 +8,14 @@ Ed is the standard text editor!
``` ```
``` ```tcl
(@)(@) {0,0} -- Hoo? (@)(@) {0,0} -- Hoo?
(~~~~) ./) ) (~~~~) ./) )
(>vv<) " " (>vv<) " "
``` ```
``` ```tcl
(@)(@) {0,0} (@)(@) {0,0}
(~~~~) ./) ) (~~~~) ./) )
(>vv<) " " (>vv<) " "

View File

@ -1,4 +1,4 @@
``` ```tcl
(@)(@) {0,0} (@)(@) {0,0}
(~~~~) ./) ) (~~~~) ./) )
(>vv<) " " (>vv<) " "
@ -8,14 +8,14 @@ You can't fathom the unfathomable.
``` ```
``` ```tcl
(@)(@) {0,0} -- Hoo? (@)(@) {0,0} -- Hoo?
(~~~~) ./) ) (~~~~) ./) )
(>vv<) " " (>vv<) " "
``` ```
``` ```tcl
(@)(@) {0,0} (@)(@) {0,0}
(~~~~) ./) ) (~~~~) ./) )
(>vv<) " " (>vv<) " "

View File

@ -1,23 +1,23 @@
``` ```tcl
(@)(@) {0,0} (@)(@) {0,0}
(~~~~) ./) ) (~~~~) ./) )
(>vv<) " " (>vv<) " "
\ \
So there's this librarian who logged So there's this librarian who logged into a
into a remote server to tell everybody remote server to tell everybody on irc to keep
on irc to keep the chatter down the chatter down
``` ```
``` ```tcl
(@)(@) {0,0} -- Hoo? (@)(@) {0,0} -- Hoo?
(~~~~) ./) ) (~~~~) ./) )
(>vv<) " " (>vv<) " "
``` ```
``` ```tcl
(@)(@) {0,0} (@)(@) {0,0}
(~~~~) ./) ) (~~~~) ./) )
(>vv<) " " (>vv<) " "

View File

@ -1,27 +1,27 @@
``` ```tcl
(@)(@) {0,0} (@)(@) {0,0}
(~~~~) ./) ) (~~~~) ./) )
(>vv<) " " (>vv<) " "
\ \
dang it yall hvae me writing a bunch of dang it yall hvae me writing a bunch of other fun
other fun stuff in there stuff in there
``` ```
``` ```tcl
(@)(@) {0,0} -- Hoo? (@)(@) {0,0} -- Hoo?
(~~~~) ./) ) (~~~~) ./) )
(>vv<) " " (>vv<) " "
``` ```
``` ```tcl
(@)(@) {0,0} (@)(@) {0,0}
(~~~~) ./) ) (~~~~) ./) )
(>vv<) " " (>vv<) " "
\ \
I wonder if i can find something I wonder if i can find something somebody calls
somebody calls home home
``` ```

View File

@ -1,4 +1,4 @@
``` ```tcl
(@)(@) {0,0} (@)(@) {0,0}
(~~~~) ./) ) (~~~~) ./) )
(>vv<) " " (>vv<) " "
@ -8,14 +8,14 @@ Having fun isn't hard!
``` ```
``` ```tcl
(@)(@) {0,0} -- Hoo? (@)(@) {0,0} -- Hoo?
(~~~~) ./) ) (~~~~) ./) )
(>vv<) " " (>vv<) " "
``` ```
``` ```tcl
(@)(@) {0,0} (@)(@) {0,0}
(~~~~) ./) ) (~~~~) ./) )
(>vv<) " " (>vv<) " "

View File

@ -1,30 +1,30 @@
``` ```tcl
(@)(@) {0,0} (@)(@) {0,0}
(~~~~) ./) ) (~~~~) ./) )
(>vv<) " " (>vv<) " "
\ \
today, I'm playing camp counselor at today, I'm playing camp counselor at work and
work and also facing the reality I need also facing the reality I need to upgrade my very
to upgrade my very old cell phone old cell phone
``` ```
``` ```tcl
(@)(@) {0,0} -- Hoo? (@)(@) {0,0} -- Hoo?
(~~~~) ./) ) (~~~~) ./) )
(>vv<) " " (>vv<) " "
``` ```
``` ```tcl
(@)(@) {0,0} (@)(@) {0,0}
(~~~~) ./) ) (~~~~) ./) )
(>vv<) " " (>vv<) " "
\ \
hahaha, one is just emotional, the hahaha, one is just emotional, the other is me
other is me doing the emotional labor doing the emotional labor of redirecting other
of redirecting other folks energies so folks energies so that they don't do a murder or
that they don't do a murder or something something
``` ```

View File

@ -1,4 +1,4 @@
``` ```tcl
(@)(@) {0,0} (@)(@) {0,0}
(~~~~) ./) ) (~~~~) ./) )
(>vv<) " " (>vv<) " "
@ -8,19 +8,18 @@ hello my friends wit hshell access
``` ```
``` ```tcl
(@)(@) {0,0} -- Hoo? (@)(@) {0,0} -- Hoo?
(~~~~) ./) ) (~~~~) ./) )
(>vv<) " " (>vv<) " "
``` ```
``` ```tcl
(@)(@) {0,0} (@)(@) {0,0}
(~~~~) ./) ) (~~~~) ./) )
(>vv<) " " (>vv<) " "
\ \
but my mood is good, which trumps but my mood is good, which trumps everything
everything
``` ```

View File

@ -1,25 +0,0 @@
```
(@)(@) {0,0}
(~~~~) ./) )
(>vv<) " "
\
horse
```
```
(@)(@) {0,0} -- Hoo?
(~~~~) ./) )
(>vv<) " "
```
```
(@)(@) {0,0}
(~~~~) ./) )
(>vv<) " "
\
bhuururRrURhurU
```

View File

@ -1,26 +0,0 @@
```
(@)(@) {0,0}
(~~~~) ./) )
(>vv<) " "
\
I went thrifting yesterday
```
```
(@)(@) {0,0} -- Hoo?
(~~~~) ./) )
(>vv<) " "
```
```
(@)(@) {0,0}
(~~~~) ./) )
(>vv<) " "
\
or as I like to call it, Goodwill
Hunting
```

View File

@ -1,25 +0,0 @@
```
(@)(@) {0,0}
(~~~~) ./) )
(>vv<) " "
\
Ya know I used to be addicted to soap
```
```
(@)(@) {0,0} -- Hoo?
(~~~~) ./) )
(>vv<) " "
```
```
(@)(@) {0,0}
(~~~~) ./) )
(>vv<) " "
\
But now I'm clean
```

View File

@ -1,32 +0,0 @@
```
(@)(@) {0,0}
(~~~~) ./) )
(>vv<) " "
\
Mickey is at his attorney's office
filing for divorce. Lawyer says, "I'm
sorry Mickey, I just don't think you
have a case. You can't divorce Minnie
for being weird..."
```
```
(@)(@) {0,0} -- Hoo?
(~~~~) ./) )
(>vv<) " "
```
```
(@)(@) {0,0}
(~~~~) ./) )
(>vv<) " "
\
Mickey, getting visibly frustrated,
says, "You're not listening! I never
said she's WEIRD, I said she's FUCKING
GOOFY!"
```

View File

@ -1,28 +0,0 @@
```
(@)(@) {0,0}
(~~~~) ./) )
(>vv<) " "
\
She was convinced she could just run it
through the dishwasher
```
```
(@)(@) {0,0} -- Hoo?
(~~~~) ./) )
(>vv<) " "
```
```
(@)(@) {0,0}
(~~~~) ./) )
(>vv<) " "
\
and I was like MOM! You should NOT
trust something that can COOK SALMON to
CLEAN your KEYBOARD!
```

View File

@ -1,26 +0,0 @@
```
(@)(@) {0,0}
(~~~~) ./) )
(>vv<) " "
\
I once broke up with a guy because he
just wouldn't stop counting
```
```
(@)(@) {0,0} -- Hoo?
(~~~~) ./) )
(>vv<) " "
```
```
(@)(@) {0,0}
(~~~~) ./) )
(>vv<) " "
\
I wonder what he's up to now
```

View File

@ -1,26 +0,0 @@
```
(@)(@) {0,0}
(~~~~) ./) )
(>vv<) " "
\
Hey I've got a whole big box full of
dead batteries here if you want them.
```
```
(@)(@) {0,0} -- Hoo?
(~~~~) ./) )
(>vv<) " "
```
```
(@)(@) {0,0}
(~~~~) ./) )
(>vv<) " "
\
They're free of charge!
```

View File

@ -1,10 +1,3 @@
# Pro Toad and Superb Owl # Pro Toad and Superb Owl
two best friends having adventures two best friends having adventures
<p>
This site is part of the dozensweb webring:
<a href="https://tilde.town/%7Edozens/webring/dozens/index.html?name=protoad&dir=prev">previous</a>
<a href="https://tilde.town/%7Edozens/webring/dozens/index.html">index</a>
<a href="https://tilde.town/%7Edozens/webring/dozens/index.html?name=protoad&dir=next">next</a>
</p>

21
bin/rss.sh 100755
View File

@ -0,0 +1,21 @@
#!/bin/sh
echo '<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>It'"'"'s Pro Toad and Superb Owl</title>' > feed.xml
echo "<link>https://git.tilde.town/dozens/protoadandsuperbowl</link><description>It's Pro Toad and Superb Owl!</description><atom:link rel=\"self\" type=\"application/rss+xml\" href=\"https://git.tilde.town/dozens/protoadandsuperbowl/raw/branch/master/feed.xml\"/><generator>/bin/sh</generator>" >> feed.xml
for f in *.md; do
if [ $f == "README.md" ]; then
continue
fi
echo "<item>
<title>$f</title>
<link>https://git.tilde.town/dozens/protoadandsuperbowl/raw/branch/master/$f</link>
<pubDate>$(git log --follow --format=%ad --date default $f | tail -1)</pubDate>
<description><![CDATA[" >> feed.xml
pandoc $f >> feed.xml
echo "]]></description>
</item>" >> feed.xml
done
echo '</channel></rss>' >> feed.xml

196
bin/toad.md 100644
View File

@ -0,0 +1,196 @@
# toad.md
> the pro toad and superb owl comic generator
## about
This program reads a script file and interpolates its contents with some ascii art, and then writes the result to stdout.
The end goal is automating the creation of [Pro Toad and Superb Owl][ptso] comics.
[ptso]: https://git.tilde.town/dozens/protoadandsuperbowl
## usage
$ retro toad.md path/to/script.txt > comic.txt
## components
the components of the program are:
1. IO - open the text file, read it line by line, close the file, write to stdout
2. input parser - there are 2 line types in the script file:
- a text line, and
- a separator line: a special `---` line to separate panels.
3. comic builder - build the first panel, the second panel (no input needed, just output tanel 2), and the 3rd panel (repeat steps needed for 1st panel)
4. panel builder - for as long as art array has length, and as long as the current input line has length or until the input parser hits the separator line or the end of the file, call the line builder with the next line of the art array (if there is one) and the input line.
If the input line has no length, and the next line is not the separator, have the line builder insert a "blank line" and get a new input line.
5. line builder - given two strings, build a new string containing the first, and appending words from the second up to a total of ~80 cols.
## argument validation
print a helpful message if the script is called without an argument
~~~
script:arguments #0 eq? [ 'Error:_Missing_argument s:put ] if;
~~~
## panels
okay let's go
There are two panels: one where toad speaks, and one where owl speaks. Let's save each to an array, one string per line.
Here's toad (panels 1 & 3):
~~~
'toad var
{
'_(@)(@)_____{0,0}__
'_(~~~~)____./)_)___
'_(>vv<)______"_"___
'___________________
'_____\_____________
} !toad
~~~
Here's owl (panel 2):
~~~
'owl var
{
'_(@)(@)_____{0,0}__--_Hoo?
'_(~~~~)____./)_)__________
'_(>vv<)______"_"__________
} !owl
~~~
Also here are some code fences, because we'll need those too:
~~~
:fences-open '```tcl s:put nl ;
:fences-close '``` s:put nl ;
~~~
## Input/output
open the file for reading and save the file handle to `handle`
save the file fize. we'll use this to check for end of file.
~~~
'handle var
'size var
#0 script:get-argument
file:open-for-reading !handle !size
:get-line @handle file:read-line ;
~~~
## Input Parser
TODO: this isn't tested or used anywhere yet.
~~~
{{
:end-of-file? (-) @handle file:tell @size gteq? ;
:separator? (m-f) '--- eq? ;
---reveal---
:end-of-section? (-f) separator? end-of-file? or ;
}}
~~~
## Line wrapping
Here's a line wrapping module.
~~~
{{
#0 'displayed var-n
#40 'wrap-at var-n
:wrap? dup @displayed + @wrap-at gt? ;
:display [ nl !displayed ] [ displayed v:inc-by ] choose s:put sp ;
---reveal---
:s:put-wrapped (s-) ASCII:SPACE s:tokenize
[ dup s:length wrap? display ] a:for-each
#0 !displayed ;
}}
~~~
src:
<https://github.com/crcx/retroforth/blob/master/example/wordwrap.retro>
## Panel 1
print out the first panel
ascii art:
~~~
fences-open
@toad [ s:put nl ] a:for-each
~~~
text:
~~~
[
get-line
dup '--- s:eq? not [
dup s:put-wrapped nl
] if
'--- s:eq? not
] while
~~~
wrap it up:
~~~
fences-close nl nl
~~~
## Panel 2
~~~
fences-open
@owl [ s:put nl ] a:for-each
fences-close nl nl
~~~
## Panel 3
print the ascii:
~~~
fences-open
@toad [ s:put nl ] a:for-each
~~~
print the text:
~~~
[
get-line
s:put-wrapped nl
@handle file:size @handle file:tell gt?
] while
~~~
wrap it up
~~~
fences-close
~~~
## Conclusion
That's all! That's the end

View File

@ -1,139 +0,0 @@
%rec: comic
%doc: a hilarious webcomic about two best friends
%type: date date
%key: id
%unique: id
%auto: date
%mandatory: id top bottom date
%allowed: id top bottom date
%sort: date
id: 00001
top: ya see, some people go real fast
+ and other people they go real slow
+ yeah that's it doncha know
bottom: yeah that's the real root cause of most workplace conflict
date: 2021-08-14
id: 00002
top: ...and that's how I became a YAML engineer.
bottom: To be honest, I'm not sure it's a real job either. But they keep giving me YAML and I keep ENGINEERING it!
date: 2021-08-29
id: 00003
top: So did you watch the Super Bowl?
bottom: Yeah, me neither.
date: 2021-08-29
id: 00004
top: Did you know that one of the very first television advertisements during the AFLNFL World Championship Game was for Budweiser beer?
bottom: Yep! I guess you could say it was a SUPER BOWL PROTO AD!
date: 2021-08-29
id: 00005
top: Who even ever asked for or wanted an information SUPERHIGHWAY anyway?
bottom: All I want is like a small cute remote information HIKING TRAIL somewhere out in the woods where I can see some flowers and leaves and listen to the birds and stuff.
date: 2021-08-29
id: 00006
top: Is there even such a thing as "mainstream" anymore? I mean it used to be the case that everybody watched the same nightly news and listened to the same radio station. And "counterculture" was growing your hair long and listening to rock and roll. Now the duality of mainstream vs. counterculture seems as quaint as the idea that there are only two genders or only two sexes. Kids don't listen to rock & roll to rebel, they listen to soundcloud emo rap, or whatever, and if the niche sound that speaks directly to them doesn't exist, they can invent it and upload it for the world to hear with little more than a cheap laptop.
bottom: At the other end of the LONG TAIL of the internet is a metaphorical infosec furry, and because of them there are as many small STREAMS and countercultures as there are individual people.
date: 2021-08-29
id: 00007
top: there should be no such thing as billionaires
bottom:
date: 2021-08-29
id: 00008
top: There was a sense of euphoria while we were in flow, like we were invinsible, but afterwards everything seemed brittle and fragile like it was held together with duct tape and kite string and like it might all come crumbling down if the wind blew in from the wrong direction. And there we were in the aftermath, unsure whether we accomplished our goals, who we hurt in the process, or if there was anything good about it all.
bottom: So anyway that's what we call a "hackathon". The tech bros invited me to "do some lines" and at this point I can't remember if it was code or coke.
date: 2021-08-29
id: 00009
top: So I picked up a book in the middle of this epic fantasy series. It's by this author who I heard does really good sword and sorcery stories, and I'm into that. Anyway the story opens on a tragic, lonely noble lord, last of his line, subject to disfigurement because of the family curse and whatnot. But, get this, it totally takes place in Old Germany during the rise of the Nazi party!
bottom: I was so disoriented that I looked it up, and there will eventually be a classic fantasy storyline that interweaves with the modern nazi storyline.
+ Which means eventually the hero is literally going ride a dragon to Hitler's bunker and punch him in the face and if there's one thing this world needs more of, it's mother fucking dragons beating the shit out of nazis.
date: 2021-08-29
id: 00010
top: a guy was looking for a priest to officiate his wedding and narrowed it down to his final two choices. the first one walked in with two beetles and started praying over the bugs. the second one started spraying everybody with holy water from a water gun. Know who he chose?
bottom: He chose the blesser of two weevils
date: 2021-12-01
id: 00011
top: So I was down by the capitol and I noticed some kind of protest was happening. I saw a couple people wearing US flags and thought to myself, ew, probably a bunch of treasonous right-wing fundamentalist bastards. Which, you know, is always the first thing you think when you see somebody wearing the US flag. But then I saw somebody holding a "My Body My Choice" sign and thought, aw, it must be some pro-choicers! And I decided to get a little closer to check it out.
bottom: I got close enough to see a bunch of the other signs and they were all like, "No Jab! No Vaccine!" and that's when I knew I had been tricked. It WAS a bunch of treasonous right-wing fundamentalist bastards! I said "ew" again and turned around and ran away.
date: 2022-02-03
id: 00012
top: Ed is the standard text editor!
bottom: ?
+ ?
+ ?
date: 2022-08-25
id: 00013
top: You can't fathom the unfathomable.
bottom: You can't derstand the understandable!
date: 2022-11-04
id: 00014
top: So there's this librarian who logged into a remote server to tell everybody on irc to keep the chatter down
bottom: It was a ssh shh
date: 2022-12-01
id: 00015
top: dang it yall hvae me writing a bunch of other fun stuff in there
bottom: I wonder if i can find something somebody calls home
date: 2023-08-23
id: 00016
top: Having fun isn't hard!
bottom: ... when you have a library card!
date: 2023-10-01
id: 00017
top: today, I'm playing camp counselor at work and also facing the reality I need to upgrade my very old cell phone
bottom: hahaha, one is just emotional, the other is me doing the emotional labor of redirecting other folks energies so that they don't do a murder or something
date: 2023-10-02
id: 00018
top: hello my friends wit hshell access
bottom: but my mood is good, which trumps everything
date: 2023-10-06
id: 00019
top: horse
bottom: bhuururRrURhurU
date: 2024-01-07
id: 00020
top: I went thrifting yesterday
bottom: or as I like to call it, Goodwill Hunting
date: 2024-01-10
id: 00021
top: Ya know I used to be addicted to soap
bottom: But now I'm clean
date: 2024-01-14
top: Mickey is at his attorney's office filing for divorce. Lawyer says, "I'm sorry Mickey, I just don't think you have a case. You can't divorce Minnie for being weird..."
bottom: Mickey, getting visibly frustrated, says, "You're not listening! I never said she's WEIRD, I said she's FUCKING GOOFY!"
id: 00022
date: 2024-01-17
top: She was convinced she could just run it through the dishwasher
bottom: and I was like MOM! You should NOT trust something that can COOK SALMON to CLEAN your KEYBOARD!
id: 00023
date: 2024-01-17
top: I once broke up with a guy because he just wouldn't stop counting
bottom: I wonder what he's up to now
id: 00024
date: 2024-02-18
top: Hey I've got a whole big box full of dead batteries here if you want them.
bottom: They're free of charge!
id: 00025
date: 2024-04-07

View File

@ -1,27 +0,0 @@
%rec: feed
%doc: metadata about a recfeed
%type: updated date
%type: author,title,summary,location line
%mandatory: author title location updated
%allowed: author title summary location updated contact
author: dozens
title: protoad and superbowl
summary: webcomic
location: /Users/cb/blogs/protoadandsuperbowl/db/feed.rec
updated: 2024-02-18T22:25:29-07:00
%rec: item
%doc: an item belonging to a recfeed
%key: id
%type: id int
%auto: id
%type: title,summary,location line
%type: published,updated date
%mandatory: id title location published
%allowed: id title location published summary updated
id: 0
title: protoad and superbowl
location: /Users/cb/blogs/protoadandsuperbowl/db/database.rec
published: 2024-02-18T22:25:29-07:00

1288
feed.xml

File diff suppressed because it is too large Load Diff

View File

@ -1,32 +0,0 @@
# 00001
```
(@)(@) {0,0}
(~~~~) ./) )
(>vv<) " "
\
ya see, some people go real fast
and other people they go real slow
yeah that's it doncha know
```
```
(@)(@) {0,0} -- Hoo?
(~~~~) ./) )
(>vv<) " "
```
```
(@)(@) {0,0}
(~~~~) ./) )
(>vv<) " "
\
yeah that's the real root cause of most
workplace conflict
```
=> gemini://tilde.town/~dozens/comic

View File

@ -1,32 +0,0 @@
# 00002
```
(@)(@) {0,0}
(~~~~) ./) )
(>vv<) " "
\
...and that's how I became a YAML
engineer.
```
```
(@)(@) {0,0} -- Hoo?
(~~~~) ./) )
(>vv<) " "
```
```
(@)(@) {0,0}
(~~~~) ./) )
(>vv<) " "
\
To be honest, I'm not sure it's a real
job either. But they keep giving me
YAML and I keep ENGINEERING it!
```
=> gemini://tilde.town/~dozens/comic

View File

@ -1,29 +0,0 @@
# 00003
```
(@)(@) {0,0}
(~~~~) ./) )
(>vv<) " "
\
So did you watch the Super Bowl?
```
```
(@)(@) {0,0} -- Hoo?
(~~~~) ./) )
(>vv<) " "
```
```
(@)(@) {0,0}
(~~~~) ./) )
(>vv<) " "
\
Yeah, me neither.
```
=> gemini://tilde.town/~dozens/comic

View File

@ -1,33 +0,0 @@
# 00004
```
(@)(@) {0,0}
(~~~~) ./) )
(>vv<) " "
\
Did you know that one of the very first
television advertisements during the
AFLNFL World Championship Game was for
Budweiser beer?
```
```
(@)(@) {0,0} -- Hoo?
(~~~~) ./) )
(>vv<) " "
```
```
(@)(@) {0,0}
(~~~~) ./) )
(>vv<) " "
\
Yep! I guess you could say it was a
SUPER BOWL PROTO AD!
```
=> gemini://tilde.town/~dozens/comic

View File

@ -1,34 +0,0 @@
# 00005
```
(@)(@) {0,0}
(~~~~) ./) )
(>vv<) " "
\
Who even ever asked for or wanted an
information SUPERHIGHWAY anyway?
```
```
(@)(@) {0,0} -- Hoo?
(~~~~) ./) )
(>vv<) " "
```
```
(@)(@) {0,0}
(~~~~) ./) )
(>vv<) " "
\
All I want is like a small cute remote
information HIKING TRAIL somewhere out
in the woods where I can see some
flowers and leaves and listen to the
birds and stuff.
```
=> gemini://tilde.town/~dozens/comic

View File

@ -1,49 +0,0 @@
# 00006
```
(@)(@) {0,0}
(~~~~) ./) )
(>vv<) " "
\
Is there even such a thing as
"mainstream" anymore? I mean it used to
be the case that everybody watched the
same nightly news and listened to the
same radio station. And
"counterculture" was growing your hair
long and listening to rock and roll.
Now the duality of mainstream vs.
counterculture seems as quaint as the
idea that there are only two genders or
only two sexes. Kids don't listen to
rock & roll to rebel, they listen to
soundcloud emo rap, or whatever, and if
the niche sound that speaks directly to
them doesn't exist, they can invent it
and upload it for the world to hear
with little more than a cheap laptop.
```
```
(@)(@) {0,0} -- Hoo?
(~~~~) ./) )
(>vv<) " "
```
```
(@)(@) {0,0}
(~~~~) ./) )
(>vv<) " "
\
At the other end of the LONG TAIL of
the internet is a metaphorical infosec
furry, and because of them there are as
many small STREAMS and countercultures
as there are individual people.
```
=> gemini://tilde.town/~dozens/comic

View File

@ -1,30 +0,0 @@
# 00007
```
(@)(@) {0,0}
(~~~~) ./) )
(>vv<) " "
\
there should be no such thing as
billionaires
```
```
(@)(@) {0,0} -- Hoo?
(~~~~) ./) )
(>vv<) " "
```
```
(@)(@) {0,0}
(~~~~) ./) )
(>vv<) " "
\
```
=> gemini://tilde.town/~dozens/comic

View File

@ -1,43 +0,0 @@
# 00008
```
(@)(@) {0,0}
(~~~~) ./) )
(>vv<) " "
\
There was a sense of euphoria while we
were in flow, like we were invinsible,
but afterwards everything seemed
brittle and fragile like it was held
together with duct tape and kite string
and like it might all come crumbling
down if the wind blew in from the wrong
direction. And there we were in the
aftermath, unsure whether we
accomplished our goals, who we hurt in
the process, or if there was anything
good about it all.
```
```
(@)(@) {0,0} -- Hoo?
(~~~~) ./) )
(>vv<) " "
```
```
(@)(@) {0,0}
(~~~~) ./) )
(>vv<) " "
\
So anyway that's what we call a
"hackathon". The tech bros invited me
to "do some lines" and at this point I
can't remember if it was code or coke.
```
=> gemini://tilde.town/~dozens/comic

View File

@ -1,50 +0,0 @@
# 00009
```
(@)(@) {0,0}
(~~~~) ./) )
(>vv<) " "
\
So I picked up a book in the middle of
this epic fantasy series. It's by this
author who I heard does really good
sword and sorcery stories, and I'm into
that. Anyway the story opens on a
tragic, lonely noble lord, last of his
line, subject to disfigurement because
of the family curse and whatnot. But,
get this, it totally takes place in Old
Germany during the rise of the Nazi
party!
```
```
(@)(@) {0,0} -- Hoo?
(~~~~) ./) )
(>vv<) " "
```
```
(@)(@) {0,0}
(~~~~) ./) )
(>vv<) " "
\
I was so disoriented that I looked it
up, and there will eventually be a
classic fantasy storyline that
interweaves with the modern nazi
storyline.
Which means eventually the hero is
literally going ride a dragon to
Hitler's bunker and punch him in the
face and if there's one thing this
world needs more of, it's mother
fucking dragons beating the shit out of
nazis.
```
=> gemini://tilde.town/~dozens/comic

View File

@ -1,36 +0,0 @@
# 00010
```
(@)(@) {0,0}
(~~~~) ./) )
(>vv<) " "
\
a guy was looking for a priest to
officiate his wedding and narrowed it
down to his final two choices. the
first one walked in with two beetles
and started praying over the bugs. the
second one started spraying everybody
with holy water from a water gun. Know
who he chose?
```
```
(@)(@) {0,0} -- Hoo?
(~~~~) ./) )
(>vv<) " "
```
```
(@)(@) {0,0}
(~~~~) ./) )
(>vv<) " "
\
He chose the blesser of two weevils
```
=> gemini://tilde.town/~dozens/comic

View File

@ -1,47 +0,0 @@
# 00011
```
(@)(@) {0,0}
(~~~~) ./) )
(>vv<) " "
\
So I was down by the capitol and I
noticed some kind of protest was
happening. I saw a couple people
wearing US flags and thought to myself,
ew, probably a bunch of treasonous
right-wing fundamentalist bastards.
Which, you know, is always the first
thing you think when you see somebody
wearing the US flag. But then I saw
somebody holding a "My Body My Choice"
sign and thought, aw, it must be some
pro-choicers! And I decided to get a
little closer to check it out.
```
```
(@)(@) {0,0} -- Hoo?
(~~~~) ./) )
(>vv<) " "
```
```
(@)(@) {0,0}
(~~~~) ./) )
(>vv<) " "
\
I got close enough to see a bunch of
the other signs and they were all like,
"No Jab! No Vaccine!" and that's when I
knew I had been tricked. It WAS a bunch
of treasonous right-wing fundamentalist
bastards! I said "ew" again and turned
around and ran away.
```
=> gemini://tilde.town/~dozens/comic

View File

@ -1,31 +0,0 @@
# 00012
```
(@)(@) {0,0}
(~~~~) ./) )
(>vv<) " "
\
Ed is the standard text editor!
```
```
(@)(@) {0,0} -- Hoo?
(~~~~) ./) )
(>vv<) " "
```
```
(@)(@) {0,0}
(~~~~) ./) )
(>vv<) " "
\
?
?
?
```
=> gemini://tilde.town/~dozens/comic

View File

@ -1,29 +0,0 @@
# 00013
```
(@)(@) {0,0}
(~~~~) ./) )
(>vv<) " "
\
You can't fathom the unfathomable.
```
```
(@)(@) {0,0} -- Hoo?
(~~~~) ./) )
(>vv<) " "
```
```
(@)(@) {0,0}
(~~~~) ./) )
(>vv<) " "
\
You can't derstand the understandable!
```
=> gemini://tilde.town/~dozens/comic

View File

@ -1,31 +0,0 @@
# 00014
```
(@)(@) {0,0}
(~~~~) ./) )
(>vv<) " "
\
So there's this librarian who logged
into a remote server to tell everybody
on irc to keep the chatter down
```
```
(@)(@) {0,0} -- Hoo?
(~~~~) ./) )
(>vv<) " "
```
```
(@)(@) {0,0}
(~~~~) ./) )
(>vv<) " "
\
It was a ssh shh
```
=> gemini://tilde.town/~dozens/comic

View File

@ -1,31 +0,0 @@
# 00015
```
(@)(@) {0,0}
(~~~~) ./) )
(>vv<) " "
\
dang it yall hvae me writing a bunch of
other fun stuff in there
```
```
(@)(@) {0,0} -- Hoo?
(~~~~) ./) )
(>vv<) " "
```
```
(@)(@) {0,0}
(~~~~) ./) )
(>vv<) " "
\
I wonder if i can find something
somebody calls home
```
=> gemini://tilde.town/~dozens/comic

View File

@ -1,29 +0,0 @@
# 00016
```
(@)(@) {0,0}
(~~~~) ./) )
(>vv<) " "
\
Having fun isn't hard!
```
```
(@)(@) {0,0} -- Hoo?
(~~~~) ./) )
(>vv<) " "
```
```
(@)(@) {0,0}
(~~~~) ./) )
(>vv<) " "
\
... when you have a library card!
```
=> gemini://tilde.town/~dozens/comic

View File

@ -1,34 +0,0 @@
# 00017
```
(@)(@) {0,0}
(~~~~) ./) )
(>vv<) " "
\
today, I'm playing camp counselor at
work and also facing the reality I need
to upgrade my very old cell phone
```
```
(@)(@) {0,0} -- Hoo?
(~~~~) ./) )
(>vv<) " "
```
```
(@)(@) {0,0}
(~~~~) ./) )
(>vv<) " "
\
hahaha, one is just emotional, the
other is me doing the emotional labor
of redirecting other folks energies so
that they don't do a murder or something
```
=> gemini://tilde.town/~dozens/comic

View File

@ -1,30 +0,0 @@
# 00018
```
(@)(@) {0,0}
(~~~~) ./) )
(>vv<) " "
\
hello my friends wit hshell access
```
```
(@)(@) {0,0} -- Hoo?
(~~~~) ./) )
(>vv<) " "
```
```
(@)(@) {0,0}
(~~~~) ./) )
(>vv<) " "
\
but my mood is good, which trumps
everything
```
=> gemini://tilde.town/~dozens/comic

View File

@ -1,29 +0,0 @@
# 00019
```
(@)(@) {0,0}
(~~~~) ./) )
(>vv<) " "
\
horse
```
```
(@)(@) {0,0} -- Hoo?
(~~~~) ./) )
(>vv<) " "
```
```
(@)(@) {0,0}
(~~~~) ./) )
(>vv<) " "
\
bhuururRrURhurU
```
=> gemini://tilde.town/~dozens/comic

View File

@ -1,30 +0,0 @@
# 00020
```
(@)(@) {0,0}
(~~~~) ./) )
(>vv<) " "
\
I went thrifting yesterday
```
```
(@)(@) {0,0} -- Hoo?
(~~~~) ./) )
(>vv<) " "
```
```
(@)(@) {0,0}
(~~~~) ./) )
(>vv<) " "
\
or as I like to call it, Goodwill
Hunting
```
=> gemini://tilde.town/~dozens/comic

View File

@ -1,29 +0,0 @@
# 00021
```
(@)(@) {0,0}
(~~~~) ./) )
(>vv<) " "
\
Ya know I used to be addicted to soap
```
```
(@)(@) {0,0} -- Hoo?
(~~~~) ./) )
(>vv<) " "
```
```
(@)(@) {0,0}
(~~~~) ./) )
(>vv<) " "
\
But now I'm clean
```
=> gemini://tilde.town/~dozens/comic

View File

@ -1,36 +0,0 @@
# 00022
```
(@)(@) {0,0}
(~~~~) ./) )
(>vv<) " "
\
Mickey is at his attorney's office
filing for divorce. Lawyer says, "I'm
sorry Mickey, I just don't think you
have a case. You can't divorce Minnie
for being weird..."
```
```
(@)(@) {0,0} -- Hoo?
(~~~~) ./) )
(>vv<) " "
```
```
(@)(@) {0,0}
(~~~~) ./) )
(>vv<) " "
\
Mickey, getting visibly frustrated,
says, "You're not listening! I never
said she's WEIRD, I said she's FUCKING
GOOFY!"
```
=> gemini://tilde.town/~dozens/comic

View File

@ -1,32 +0,0 @@
# 00023
```
(@)(@) {0,0}
(~~~~) ./) )
(>vv<) " "
\
She was convinced she could just run it
through the dishwasher
```
```
(@)(@) {0,0} -- Hoo?
(~~~~) ./) )
(>vv<) " "
```
```
(@)(@) {0,0}
(~~~~) ./) )
(>vv<) " "
\
and I was like MOM! You should NOT
trust something that can COOK SALMON to
CLEAN your KEYBOARD!
```
=> gemini://tilde.town/~dozens/comic

View File

@ -1,30 +0,0 @@
# 00024
```
(@)(@) {0,0}
(~~~~) ./) )
(>vv<) " "
\
I once broke up with a guy because he
just wouldn't stop counting
```
```
(@)(@) {0,0} -- Hoo?
(~~~~) ./) )
(>vv<) " "
```
```
(@)(@) {0,0}
(~~~~) ./) )
(>vv<) " "
\
I wonder what he's up to now
```
=> gemini://tilde.town/~dozens/comic

View File

@ -1,30 +0,0 @@
# 00025
```
(@)(@) {0,0}
(~~~~) ./) )
(>vv<) " "
\
Hey I've got a whole big box full of
dead batteries here if you want them.
```
```
(@)(@) {0,0} -- Hoo?
(~~~~) ./) )
(>vv<) " "
```
```
(@)(@) {0,0}
(~~~~) ./) )
(>vv<) " "
\
They're free of charge!
```
=> gemini://tilde.town/~dozens/comic

View File

@ -1,31 +0,0 @@
# Pro Toad and Superb Owl
Two best friends have adventures!
=> 00025.gmi 2024-04-07 - 00025
=> 00024.gmi 2024-02-18 - 00024
=> 00023.gmi 2024-01-17 - 00023
=> 00022.gmi 2024-01-17 - 00022
=> 00021.gmi 2024-01-14 - 00021
=> 00020.gmi 2024-01-10 - 00020
=> 00019.gmi 2024-01-07 - 00019
=> 00018.gmi 2023-10-06 - 00018
=> 00017.gmi 2023-10-02 - 00017
=> 00016.gmi 2023-10-01 - 00016
=> 00015.gmi 2023-08-23 - 00015
=> 00014.gmi 2022-12-01 - 00014
=> 00013.gmi 2022-11-04 - 00013
=> 00012.gmi 2022-08-25 - 00012
=> 00011.gmi 2022-02-03 - 00011
=> 00010.gmi 2021-12-01 - 00010
=> 00009.gmi 2021-08-29 - 00009
=> 00008.gmi 2021-08-29 - 00008
=> 00007.gmi 2021-08-29 - 00007
=> 00006.gmi 2021-08-29 - 00006
=> 00005.gmi 2021-08-29 - 00005
=> 00004.gmi 2021-08-29 - 00004
=> 00003.gmi 2021-08-29 - 00003
=> 00002.gmi 2021-08-29 - 00002
=> 00001.gmi 2021-08-14 - 00001
=> gemini://tilde.town/~dozens/comic

View File

@ -4,83 +4,20 @@ default:
# build rss feed # build rss feed
rss: rss:
#!/bin/sh @./bin/rss.sh
exec > feed.xml
echo "<rss version=\"2.0\" xmlns:atom=\"http://www.w3.org/2005/Atom\">"
echo " <channel>"
echo " <title>It's Pro Toad and Superb Owl</title>"
echo " <link>https://git.tilde.town/dozens/protoadandsuperbowl</link>"
echo " <description>It's Pro Toad and Superb Owl!</description>"
echo " <atom:link rel=\"self\" type=\"application/rss+xml\" href=\"https://git.tilde.town/dozens/protoadandsuperbowl/raw/branch/master/feed.xml\"/>"
echo " <generator>/bin/sh</generator>"
recsel db/database.rec | recfmt -f templates/feed.tmpl
echo "</channel></rss>"
# watch toad.md for changes # watch toad.md for changes
watch: watch:
echo "TODO" @ls bin/toad.md | entr -c retro bin/toad.md src/00001.txt
alias dev := watch alias dev := watch
# build markdown comics # build all comics
markdown: build:
#!/bin/sh #!/usr/bin/env sh
for ((i = 0; i < $(recsel -c db/database.rec); i++)) for f in $(ls src/*.txt); do
do base=`basename ${f}`
id=$(recsel -P id -n $i db/database.rec) retro bin/toad.md ${f} > "${base/txt/md}"
recsel -n $i db/database.rec | recfmt -f templates/page.tmpl | fold -s -w 40 > $id.md
done done
# build gemini
gemini:
#!/bin/sh
for ((i = 0; i < $(recsel -c db/database.rec); i++))
do
id=$(recsel -P id -n $i db/database.rec)
exec > gemini/$id.gmi
echo "# $id"
echo
recsel -n $i db/database.rec | recfmt -f templates/page.tmpl | fold -s -w 40
echo
echo "=> gemini://tilde.town/~dozens/comic"
done
# build gemini index
index:
#!/bin/sh
exec > gemini/index.gmi
echo "# Pro Toad and Superb Owl"
echo
echo "Two best friends have adventures!"
echo
recsel db/database.rec \
| recfmt "=> {{{{id}}.gmi {{{{date}} - {{{{id}}---" \
| sed 's/---/\n/g' \
| tail -r
echo
echo "=> gemini://tilde.town/~dozens/comic"
# go gemini
upload:
rsync -vurp gemini/* $HOME/blogs/gemini/comic
# build and rss # build and rss
all: markdown gemini index upload rss all: build rss
# new script
new:
#!/usr/bin/env sh
count=$(recsel -c db/database.rec)
read -p "first line: " top
read -p "second line: " bottom
printf -v id "%05d" $((++count))
recins --verbose -t comic \
-f "top" -v "$top" \
-f "bottom" -v "$bottom" \
-f "id" -v "$id" \
-f "date" -v "$(date -I)" \
db/database.rec
# update recfeed
recfeed:
recset db/feed.rec -t item -e 'id = 0' -f published -s `gdate -Iseconds`
recset db/feed.rec -t feed -n 0 -f updated -s `gdate -Iseconds`

5
src/00001.txt 100644
View File

@ -0,0 +1,5 @@
ya see, some people go real fast
and other people they go real slow
yeah that's it doncha know
---
yeah that's the real root cause of most workplace conflict

3
src/00002.txt 100644
View File

@ -0,0 +1,3 @@
...and that's how I became a YAML engineer.
---
To be honest, I'm not sure it's a real job either. But they keep giving me YAML and I keep ENGINEERING it!

3
src/00003.txt 100644
View File

@ -0,0 +1,3 @@
So did you watch the Super Bowl?
---
Yeah, me neither.

3
src/00004.txt 100644
View File

@ -0,0 +1,3 @@
Did you know that one of the very first television advertisements during the AFLNFL World Championship Game was for Budweiser beer?
---
Yep! I guess you could say it was a SUPER BOWL PROTO AD!

3
src/00005.txt 100644
View File

@ -0,0 +1,3 @@
Who even ever asked for or wanted an information SUPERHIGHWAY anyway?
---
All I want is like a small cute remote information HIKING TRAIL somewhere out in the woods where I can see some flowers and leaves and listen to the birds and stuff.

3
src/00006.txt 100644
View File

@ -0,0 +1,3 @@
Is there even such a thing as "mainstream" anymore? I mean it used to be the case that everybody watched the same nightly news and listened to the same radio station. And "counterculture" was growing your hair long and listening to rock and roll. Now the duality of mainstream vs. counterculture seems as quaint as the idea that there are only two genders or only two sexes. Kids don't listen to rock & roll to rebel, they listen to soundcloud emo rap, or whatever, and if the niche sound that speaks directly to them doesn't exist, they can invent it and upload it for the world to hear with little more than a cheap laptop.
---
At the other end of the LONG TAIL of the internet is a metaphorical infosec furry, and because of them there are as many small STREAMS and countercultures as there are individual people.

3
src/00008.txt 100644
View File

@ -0,0 +1,3 @@
There was a sense of euphoria while we were in flow, like we were invinsible, but afterwards everything seemed brittle and fragile like it was held together with duct tape and kite string and like it might all come crumbling down if the wind blew in from the wrong direction. And there we were in the aftermath, unsure whether we accomplished our goals, who we hurt in the process, or if there was anything good about it all.
---
So anyway that's what we call a "hackathon". The tech bros invited me to "do some lines" and at this point I can't remember if it was code or coke.

5
src/00009.txt 100644
View File

@ -0,0 +1,5 @@
So I picked up a book in the middle of this epic fantasy series. It's by this author who I heard does really good sword and sorcery stories, and I'm into that. Anyway the story opens on a tragic, lonely noble lord, last of his line, subject to disfigurement because of the family curse and whatnot. But, get this, it totally takes place in Old Germany during the rise of the Nazi party!
---
I was so disoriented that I looked it up, and there will eventually be a classic fantasy storyline that interweaves with the modern nazi storyline.
Which means eventually the hero is literally going ride a dragon to Hitler's bunker and punch him in the face and if there's one thing this world needs more of, it's mother fucking dragons beating the shit out of nazis.

4
src/00010.txt 100644
View File

@ -0,0 +1,4 @@
a guy was looking for a priest to officiate his wedding and narrowed it down to his final two choices. the first one walked in with two beetles and started praying over the bugs. the second one started spraying everybody with holy water from a water gun. Know who he chose?
---
He chose the blesser of two weevils

3
src/00011.txt 100644
View File

@ -0,0 +1,3 @@
So I was down by the capitol and I noticed some kind of protest was happening. I saw a couple people wearing US flags and thought to myself, ew, probably a bunch of treasonous right-wing fundamentalist bastards. Which, you know, is always the first thing you think when you see somebody wearing the US flag. But then I saw somebody holding a "My Body My Choice" sign and thought, aw, it must be some pro-choicers! And I decided to get a little closer to check it out.
---
I got close enough to see a bunch of the other signs and they were all like, "No Jab! No Vaccine!" and that's when I knew I had been tricked. It WAS a bunch of treasonous right-wing fundamentalist bastards! I said "ew" again and turned around and ran away.

5
src/00012.txt 100644
View File

@ -0,0 +1,5 @@
Ed is the standard text editor!
---
?
?
?

3
src/00013.txt 100644
View File

@ -0,0 +1,3 @@
You can't fathom the unfathomable.
---
You can't derstand the understandable!

3
src/00014.txt 100644
View File

@ -0,0 +1,3 @@
So there's this librarian who logged into a remote server to tell everybody on irc to keep the chatter down
---
It was a ssh shh

3
src/00015.txt 100644
View File

@ -0,0 +1,3 @@
dang it yall hvae me writing a bunch of other fun stuff in there
---
I wonder if i can find something somebody calls home

3
src/00016.txt 100644
View File

@ -0,0 +1,3 @@
Having fun isn't hard!
---
... when you have a library card!

3
src/00017.txt 100644
View File

@ -0,0 +1,3 @@
today, I'm playing camp counselor at work and also facing the reality I need to upgrade my very old cell phone
---
hahaha, one is just emotional, the other is me doing the emotional labor of redirecting other folks energies so that they don't do a murder or something

3
src/00018.txt 100644
View File

@ -0,0 +1,3 @@
hello my friends wit hshell access
---
but my mood is good, which trumps everything

View File

@ -1,34 +0,0 @@
<item>
<title>{{id}}</title>
<link>https://git.tilde.town/dozens/protoadandsuperbowl/raw/branch/master/{{id}}.md</link>
<pubDate>{{date}}</pubDate>
<description>
<![CDATA["
```
(@)(@) {0,0}
(~~~~) ./) )
(>vv<) " "
\
{{top}}
```
```
(@)(@) {0,0} -- Hoo?
(~~~~) ./) )
(>vv<) " "
```
```
(@)(@) {0,0}
(~~~~) ./) )
(>vv<) " "
\
{{bottom}}
```
"]]>
</description>
</item>

View File

@ -1,25 +0,0 @@
```
(@)(@) {0,0}
(~~~~) ./) )
(>vv<) " "
\
{{top}}
```
```
(@)(@) {0,0} -- Hoo?
(~~~~) ./) )
(>vv<) " "
```
```
(@)(@) {0,0}
(~~~~) ./) )
(>vv<) " "
\
{{bottom}}
```