the web log of ~vilmibm
back to my home page
rss feed, ass feed
give him his medicine
there won't be another chance
his sweet
throbbing body
him still more beautiful
in her heart
they withdrew
having returned most of his belongings
still the music played
made using trunkless
sources: RICH MEN'S CHILDREN, CHILDREN OF THE CHRONOTRON, THE CONFLICT WITH SLAVERY, THE LIGHTNING'S COURSE,
THE MANTLE, AND OTHER STORIES, THE YOUNGER SISTER: A NOVEL, VOL. II, CHRONICLES OF ENGLAND,
SCOTLAND AND IRELAND 2 OF 6): ENGLAND 08 OF 12), THE MESA TRAIL, THE PATCHWORK GIRL OF OZ
In a previous post I described how certain ideas, situations, and
stimuli can cause my brain to act like it’s just seen a rattlesnake
before my conscious self is even aware of what’s happening. For reasons
inexplicable, the idea of sitting down and doing any amount of video
game development has caused such fear responses. I was able to get
through a class on Unity and ended up enjoying it rather a lot; I’ve
also done several tutorials in a few game engines. They go fine.
Whenever I tried to make something from scratch, though: panic city.
Due to being a volunteer with the lovely
MADE video game museum I was asked by
the events coordinator at Internet Archive to see if there was interest
in collaborating around the
DiscMaster Jam. I am
very eager to see my employer and the MADE work together more so I
connected some folks. The result was an in-person jam day cosponsored by
the MADE and IA.
I had a convenient excuse for not doing the jam: I work full time. I
just did not have the brainspace to do a game jam after work. I intended
to sit during the in-person jam day on Saturday and work on something
for the town. I couldn’t not think about DiscMaster, though, as I
chatted with the people around me. I’ll just poke around, maybe, I
thought.
I ended up imagining a very dumb, simple game where you launch
something at various assets and win them as prizes: a silly ring toss
game. I sketched it out in my notebook, pulled up a Godot tutorial (that
I’ve done over and over) for reference, and went with it.
My wife and a friend ended up hanging out with me at the MADE and
they, too, found DiscMaster irresistible. We refined the little idea
into a distant parody of pokemon and worked together on asset hunting
and tweaking.
The absolute stupidest thing I did, which I mention for others out
there insecure about game making, was to recall how in my game
development class we learned how to implement a scrolling tiled
background to simulate horizontal movement of something in the
foreground. I labored over replicating that for way too long. Once I got
it working well enough, I wondered: ok, now how to keep the CD-ROM (our
stand-in for a pokeball) from flying off screen?
It pains me to write these words.
I had no need to fake movement: I was using the physics system to
actually throw rigid bodies around. The background needed to tile, yes,
but it had to tile as a camera moved around 2D space. Very embarrassing.
I then struggled to get the camera to work and not lose track of the
flying CD-ROM. Another embarrassment, as the solution was to just always
have the camera’s position locked on the CD-ROM itself. One line of code
(camera.global_position = disc.global_position
) instead of
the mishmash I’d been throwing at the problem.
I was pretty intent on shipping after overcoming these hurdles. I
worked all day Sunday and all evening Monday to get my dumb little guy
ready for the deadline. And, warts and all,
Disc Masterz
exists.
I had a great time. I want to jam again. A lot of the stuff I
struggled with this time around I can breeze through next time, leaving
energy for figuring stuff out like, uh, how to properly configure
resolution and canvas sizes. And menus. And text that scales
properly.
I’m really thankful for the
Godot Engine. After the game
development class I took a few years ago I realized that I just did not
enjoy working in Unity. I found Unreal intimidating and struggled to
find good tutorials. I happened to catch a talk by the Godot lead
developer in SF around the time Godot 4 was out and was sold, utterly,
on the vision and roadmap. I even got sold on GDscript.
If you haven’t tried it, I can’t recommend it enough. Wonderful
documentation, a fast and friendly UI (that only crashed once in three
days of heavy use as opposed to every few hours like Unity), great linux
support. And it’s free. And it’s open source. It’s truly a gem. I want
only for vim keybindings in the in-engine text editor
^_^()
Please do go check out the
jam
submissions. There is a lot of amazing work in there. And, of
course, go wander around in
DiscMaster!
after 10 years of squatting in cloud company provided virtual
machines, town is now planning a move to a physical server. you can read
all the details on the tilde town
blog.
I recently got a pomera because
I struggle to resist purchasing small computers. I spent a day walking
around the big city nearby with a stop amid a forested park to write.
The pomera fit easily in my small bag (a faithful reproduction of a
Musette Française modèle 1892) and was a total joy to work on.
A big reason I got the pomera (besides my lack of self control) was
its bespoke UI. I wanted to experience a brand new, minimal, keyboard
driven interface. I am not disappointed. It’s thoughtful, cute, and very
pleasing to navigate around. I also love the “export as QR code” feature
which prevents me from having to bother with internet connectivity.
I tried a Freewrite a while ago and really didn’t like it.
Bulky, flimsy housing; an e-ink screen with way too low of a refresh
rate; a frustrating UI. I thought I just wasn’t into the whole “neo word
processor” form factor but the pomera has proved the concept for me.
I came down from the forest for dinner with friends. I showed off the
pomera and their young daughter was intrigued. She fervently typed away
while we chatted. I was pleased to learn that she had (unwittingly) been
making ASCII art. We explained what that was and I offered to publish
her piece. It doesn’t have a title so I’m calling it “The Importance of
Being Random.”
. . . . . . . . . . . . . . . . ..
.HHHEEELLLOOO PPPEEEEEEPPPSSS!!! .
. * * * .
. La la la la la la la la la !!! .
. * * * .
. . . . Ok? Ok. . . >-< . . .!!! .
. * * * .
.Hi.hi.hi.hi.hi.hi.hi.hi.hi.hi!!!.
. * * * .
. . . . . . . . . . . . . . . . ..
BY,
???
- - - - - - - - - - - - - - - - -
P.S random stuff is VERY important
(especially this book: Random Stuff
By,???)
(the text file can be downloaded from
here)
Give more children monospaced text editors, I say.
The story, called I Found Out My Real Father-in-Law is Vladimir
Putin…And He Wants Me Dead?! can be read and downloaded for free on
the Internet
Archive.
I have written fiction for as long as I can remember. I only write in
spurts as the melancholic howl permits. Some unlucky few have read my
work–teachers, friends, family. Many have given useful feedback over the
years. Every shred of encouragement nudged me a little closer to
releasing something for a wider audience.
My recent writing has been non-fiction: essays and travelogues. Or
poetry. My dream was, and is, to be a writer of prose fiction. I’ve got
a chunk of such I’m prepared to toss over the imposing wall of my brain
pan into the front yards of the public.
I’ll just admit it up front: yes, this story was inspired by a
nightmare I had. The writing is not dream recounting, however. I
promise.
I started writing in October of 2023 which meant that these paltry
6,000 or so words took over a year to produce; though the document’s
revision history shows I worked on it for two months then ignored it for
a year. Checks out. That’s how most anything I start tends to go.
This glacial pace of 12.32 words a day has been improving for me,
however. I recently wrote a whole page of a new story in a single day
and, last November, wrote over 20,000 words towards a novel. My
friend’s advice to intentionally
write terrible prose continues to be the secret to advancement. That
advice pairs perfectly with this
article
I found very helpful about editing.
If you happen to read my thing, let me know what you think. If you
don’t, no sweat. The upside about being primates as hairless as we are
sad is that there is a lot of this writing stuff out there. A lot of
that stuff is really quite compelling. So I do insist, rudely, that if
you don’t read my work, that you pick up the work of
someone and read that instead. In general I recommend
cultivating the habit of stopping whatever it is you are doing and
asking yourself, “why am I not reading a book right now?” The goal is to
not shame: there are many valid reasons why to not be reading. However,
there also exist many invalid reasons. Check in with yourself and make a
ranking. Make a tier list of “reasons I am not reading right now,”
record a video about tier list, upload it to a private YouTube channel,
then irreparably change your password and set your account email to
something ephemeral. Then consider reading a book.
Maybe try some
Jane de La
Vaudère. You could also check out someone whose stuff hit me real
hard in 2024: Anna
Kavan. I name all of my computers after authors who have inspired me
and both Vaudère and Kavan entered that particular cyber pantheon last
year.
Unrelated, I also have a new album coming out at the end of the
month. It’s called DROWNED IN MY HEART BLOOD. It’s pretty good.
I’ll have it up on Bandcamp and, for the first time, on CDs for selling
in meatspace.
ok bye.
On New Year’s Eve, 2024, I went to see Sonic the Hedgehog 3
in 4DX. I had not seen the first two films in the franchise and had
never experienced a 4DX theater before. My attending this showing felt
accidental and was the result of a joke my wife had made on New Year’s
Eve Eve that ended up becoming reality.
About two weeks prior, I had watched Salò, or the 120 Days of
Sodom, a movie from 1975 I have spent 20 years putting off watching
after my friend told me he spent hours vomiting as a result of watching
it. I had recently come across the Criterion blu-ray release of the film
and bought it on a whim, figuring I might as well finally see it after
watching several other works by the director in 2024.
Now, it’s 2025, and my brain has drawn a bright and sad line between
these two films. I did not set out to watch them as any kind of filmic
couplet nor did I expect to be so moved by the overlapping experience of
watching them. I don’t think anyone would ever, up front, decide to
watch and consider these movies together. However, having done so, I
must exorcise my thoughts about what I perceive as their deep
entwinement.
Sonic the Hedgehog 3 is the third movie in a franchise of 21st
century films based on a 20th century video game franchise called Sonic
the Hedgehog. The video game franchise heavily features fast paced
obstacle course traversal and a cast of cute, irreverent,
anthropomorphic animals. These animals have inspired a passionate,
massive, and likely eternal fanbase across multiple generations of game
players.
The 21st century adaptation franchise is aimed at children and mixes
CGI renditions of the Sonic characters with live actors in unsurprising
narratives about good defeating evil. It is suffused with topical humor,
references to other media you might know about, fourth wall breaking,
and nostalgia triggers.
Salò, or the 120 Days of Sodom is the final movie made by
the Italian director Pier Paolo Pasolini. Pasolini was assassinated,
most likely by a far right terrorist organization, while the film was
being prepared for release. The movie is an adaptation of the Marquis de
Sade book The 120 Days of Sodom, transposing the violent
exploits of 18th century libertines to the last days of fascist
Italy.
Salò depicts a crowd of teenagers trapped in a chateau being
forced to fornicate, consume feces, and die at the exacting command of a
trio of fascist men. Victims are punished with immediate execution for
religious expression and are subject to a strict book of rules governing
their behavior. The perpetrators discuss philosophies of power and
society while committing their acts and the film does not relegate any
of its content to suggestion or subtext: the audience is subjected to
graphic depiction of textual brutality.
4DX is a type of theater that incorporates various sensations into a
movie viewing beyond the traditional duo of sight and sound. Viewers sit
in elaborate, motorized seats that jerk and cavort under them and are
blasted by jets of air, strobe lights, sprays of water, and smells. At
time of publication there is no known way to experience Salò in
4DX, but bombastic adventure films like Sonic seem to commonly enjoy the
treatment.
I had not gone to see Sonic 3 expecting to enjoy it and, indeed, I
did not. However, the constant physical punishment I received at the
hands of my 4DX seat enhanced the experience. It elevated my discomfort
into hilarity. More seriously, I felt that it was a punishment I
deserved for knowingly attending a movie I knew I would not care
for.
“Is this what you wanted?” the seat seemed to ask of me as it blasted
lukewarm water directly into my face. “Isn’t this what you paid for?” it
hissed as unidentifiable smells possibly representing a campfire
enveloped me.
Towards the end of the movie as the explosion laden climax caused my
chair to violently hurl me forward and backward I thought of
Salò. It was a tiny, self pitying thought. Was this chair my
master? If I were to utter a prayer would a dagger emerge from the seat
and pierce my back? Is this movie a meal of shit?
This seems to correspond with the message of Salò. Pasolini
was clear about his intentions when he made his final film. He felt that
the destructive power of fascism had been supplanted not by freedom but
by consumerism. Pasolini referred to the global yet heavily American
mode of post-war consumerism as a kind of new fascism. It was (is) a
form of pure power that shaped (shapes) culture and attempted (attempts)
to subjugate humans into servitude. Were we in the audience like the
victims of Salò? Was the shit they ate like the corporate
artifact we were consuming there in the theater?
I ruminated on this shallow comparison as the film’s credits rolled.
It didn’t fit quite right.
Sonic and his friends began life as corporate mascots. In 1991, the
video game company Sega wanted a clearly recognizable character to
represent their console in the marketplace. They wanted a mascot for the
same reason any corporation wants a mascot: to humanize a brand and make
it relatable. To transmute a brand into something you felt you could
befriend. Sonic’s creation and insertion into the cultural brain stream
was exactly the kind of shit buffet catering that Pasolini warned us
about. We ate it up, though, because some shit just tastes better than
other shit.
Sonic did not stay a mere corporate mascot. If that’s all Sonic ever
was I wouldn’t be sitting here typing this out. Sonic inspired a fervent
fandom which, as fervent fin de siècle fandoms tend to do, generates
heaps and heaps of passionate fan art and fiction. People create their
own characters to hang out with Sonic in their dream lands. People
identify with characters from the game, endlessly replay the franchise’s
games, and sing the songs from Sonic soundtracks.
Pasolini despaired over the death of bottom up culture: traditions
borne from a place and a people. Small scale histories and regional
cuisines. What is a fandom, though, if not the kind of cultural
expression he saw as disappearing? Consumerism has indeed rebirthed the
world since the 1950s. But, abob in the ocean of its coca-cola reeking
afterbirth, are we not building islands of the kind of cultural
expression one might have found in a small Italian town in the centuries
before fascism?
The Sonic movies would not exist if not for the franchise’s enduring
fandom. The fandom endures because of the rich cultural expression
around the games and is not, itself, a corporate product. Sonic
and his friends live outside of their corporate context. These
movies are a corporate attempt to capture, detain, and reassert control
over these characters.
Thus, I revised my assessment while the mid-credits scene rolled. I
chose to go see the Sonic movie even if it started out as a joke. I was
not kidnapped, stripped, and denigrated against my will. I went in
freely. Sonic, Tails, Knuckles, and Eggman, however: they had no choice.
Despite decades of fans imagining and reimagining new stories around
their folk heroes here were these little guys depicted in what amounted
to a feature length commercial for Sega branded products.
However, unlike the tortured prisoners of Salò, the Sonic
team could not even cry out to God for the quick release of death.
At the end of Salò (spoilers? I guess? lol), the three
perpetrators of violence take turns as murderer, assistant, or voyeur in
the final bloody purge of their detainees. One sits in a room
overlooking a courtyard with field glasses watching as another holds
people down and the third kills them.
As the post-credits teaser finished, I realized that if it was Sonic
trapped by the new fascism of consumerism then the audience there in the
theater, wiping the misted water from their brow and nursing their
backsides sore from the fourth dimensional chair bucking, must be
playing a different role.
Is the audience, then, the voyeur? The assistant? Or the killer?
i'm shiver stalking
through winter's wind
chant crying:
MAN IS AN ADAPTABLE ANIMAL
I AM AN ADAPTABLE ANIMAL
MAN IS AN ADAPTABLE ANIMAL
I AM AN ADAPTABLE ANIMAL
to every reptile and fly
(they can't hear me)
(they are asleep)
i'm breaking off my frozen biles
tucking chunks in tree holes
prepping for unseen springs
In Pattern Recognition, William Gibson coined the term “soul delay.”
It describes the sensation brought on by jet lag of your physical self
being in one place but your inner self feeling distantly stretched
somewhere far away. Your inner self is drawn back to you, slowly, as you
adjust to being in some far away time zone.
I don’t think jet lag is the only way to experience soul delay,
though. I’m 11 days past TOWN CON 2024 (though publishing this post much
later) and feel like my inner self is still behind me, somewhere,
mingling in that venue with townies. In fact, it doesn’t just feel like
soul delay, but like an entire soul effects line. Perhaps soul
distortion, then soul delay, then finally a shimmery soul reverb.
I’m not complaining. However, I need my soul to snap back in so I can
focus on other things (chiefly, a pretty rough time at work). I feel
this beckoning backwards to think on TOWN CON and process it in the
hopes that it pulls me back into myself.
background
TOWN CON was not the first physical meetup for townies. There have
been regional get-togethers and one on one meetups intermittently since
town’s inception. This was the most official and, as far as I know, the
biggest event of its kind. I’d been kicking an idea back in forth in my
head about maybe organizing some online thing to celebrate the town’s
tenth birthday throughout 2023 but was largely incredulous that it would
be a success.
Then, the topic came up on our mailing lists–people wanted to do a
conference.
Seeing such an event come up organically on the server fueled me. I
talked it over with my wife with whom I’ve run significant events (Code
For Good once and Django Girls workshops several times, not to mention
our wedding) and she was enthusiastic about the idea.
Ever the coward, the support of my wife and internet friends was what
I needed to bolster me into saying TOWN CON was real. I announced it
with no firm plans but the will to see something through.
My initial vision was to compute the airport closest to the
geographical center of the continental USA and book its hotel for us.
Normalize the borders into a rectangle, find the actual middle of
nowhere. I saw us all inhabiting the drab, musty convention center of a
probably Nebraskan airport. We’d create something beautiful there in
defiance of the great gray ghost filled chambers which were certainly
not designed for a community like ours to use for celebration.
This particular notion didn’t last long. I imagined sitting on
scratchy furniture picking the meat out of an uninspiring sandwich in
the yellowed light of a cut glass chandelier. No–I wasn’t ready. I
wasn’t up to it. I wanted to feed us all nice food.
Toward the end of 2023 my wife and I learned that she had been
extended the offer to do an internship in a suburb outside of Chicago.
There was our location. Chicago is well connected by air, rail, and
highway and covers a huge geographical area. I made a more detailed
announcement about the event and started the important work of anxiously
procrastinating acquiring the actual venue.
~spinecone, who recreationally looks at housing, volunteered to pick
something out with me. We first had the idea of getting a big suburban
house not far from the O’Hare airport. I wanted to recreate a 2010s
style “happy hacker house” environment which seemed to necessitate a
house. We picked out a beautifully hideous McMansion but in going over
the house rules saw one about how wearing shoes inside was “absolutely
forbidden” and if evidence of shoe wearing was discovered bad things
would happen. We moved on.
The ultimate venue was a converted warehouse called Loft 606–not in a
suburb, not next to an airport, and not a drab spartan place for us to
rebel against. I caved to the big, communal space and the convenience of
being in the city proper for things like food and sundries.
I just had to plan an event, now. I had a lot on my mind:
- what kind of event even is this?
- is this a tech conference?
- oh god do i even like tech conferences anymore?
- are we a technical community
- what would an artist squat do?
- how to include people not coming to the physical venue
- how to ensure people who came from far away felt it was worth the
trip
- some kind of schedule to make it a real event
- quiet spaces for people to calm down in
- noisy spaces for people to party in
- where everyone’s going to sleep
- how to organize information about and for attendees
- what the hell are we doing
- what the hell is tilde.town
- twenty people said they wanted to come in person
- they’re all going to look at me
- there is going to be a moment when twenty well intentioned far
traveled people all turn and look at me for direction, guidance, or
assurance and in that moment I might not know what to say and I will
just have to avert their gaze and exit the building and walk until I
reach Lake Michigan and then stare at Lake Michigan whose ebbing and
flowing will proceed with or without me and whose depths teem with
safely forgotten things I can contemplate as I try to imagine myself
safely hidden inside a lake cosplaying as an ocean
I had collected initial, tentative, water testing interest in TOWN
CON via a Google form. For actual, real RSVPs I wanted to be able to tie
people’s form submissions indelibly to a user account on the server.
I’ve made plenty of TUI forms so I figured I’d make a new tool to track
who was coming in person and to disseminate information about the
event.
I decided to use the tool as a gathering mechanism for proposals, as
well. I did want people to be able to submit “talks” like you might find
at a tech conference (say, PyCon or RubyConf) but, given that I think of
the town as an artists’ squat more than a user group, didn’t want people
to just submit talks. I also didn’t want a fully synchronous schedule of
live content that would be hard for people across timezones to
attend.
In the lead up to TOWN CON I dusted off the current version of my now
years-old attempt at making my own MUSH. I had grand plans of finishing
it in time and then modeling the physical venue in the virtual world to
thin out the veil between meat and cyber. This did not come to fruition;
however, thinking in this way did lead me to the idea of a virtual art
gallery. I’d take whatever people submitted and slot each thing into a
“viewing period;” some of these things would be live talks, but they’d
get scheduled alongside of things like writing and music and
software.
I’ve never heard of or attended anything like this but it felt right.
Thus, the town con
command on the server could give you
information about the event and accept an RSVP or submission. I’m quite
pleased with how that worked out. The tool emailed me form inputs and I
manually added each thing to a spreadsheet for further processing.
I had grand plans for the people coming in person. We’d go out in
nature or take a big school trip style outing to a museum. I’d have it
all planned out with transportation. This didn’t happen. I couldn’t
really design the perfect outing and I figured a bunch of seasoned
computer touchers would not all be on the same page at the same time
about going out into the sun squinting world of loud meat together. So I
thought of a few options that didn’t require much advance planning and
left it for the day of.
Similarly, I mapped out an elaborate catering plan. The only remnant
of this to survive was the deep dish pizza night on the 11th. I felt
like I was failing; but in retrospect this was the right call. TOWN CON
is about celebrating creativity, chaos, and diversity. Railroading us
all into a set schedule with meal times would have been
inappropriate.
day 0: humans appear
The first human to appear came early on the 10th: ~kingcons.
~kingcons is not a very active member of the town itself but is both an
old friend of mine and active on
tiny tilde website. The thing
about ~kingcons is that he is relentlessly dapper. True to form, though
sleep deprived and subject to much air and bus travel, my friend
appeared at my place in a tasteful linen blazer and his signature,
infectious, glowing Cheshire smile.
We dug in and rambled and reminisced as I pushed on con prep. I stood
at my kitchen island and delivered my hastily written
keynote for
the assessment of ~kingcons; without it, it would have been a far weaker
talk. A truly satisfying and fortuitous beginning to the event, I
decided.
The next arrival was ~m455. It was my second time meeting him in
person. ~m455’s is a soothing presence. He is supportive, kind,
attentive, and liable to bring me delicious Sichuan snacks. The three of
us loaded up my car and we drove to the venue.
A major factor in the selection of the venue was the massive disco
ball suspended from the ceiling of the main room. Its controls were
inscrutable but after prodding and begging and cajoling the sphere began
to slowly spin. Success. Everything else could fail, I thought, as long
as the disco ball doesn’t stop spinning.
~kindrobot, ~ivycreek, and ~archenoth all arrived as the evening wore
on. ~m455 bravely climbed furniture to flip a set of curtains around and
make a white screen for projecting on. We put IRC up and ~nebula
entertained us with ascii art.
Even though I did not manage to complete my MUSH project in time I
still wanted some kind of connectivity between the cyber and meat parts
of the event. My brain clumsily combined some ideas that have been
sitting in the back of my brain fridge since I wrote up the patreon
“rewards” for tilde.town’s funding. One of them was a fully terminal/ssh
based teleconferencing solution for the town. I’d idly designed some
combination of asciified video and text chat but never followed through.
Since shelving that, though, there have been significant advances in
both asciify’ing video and in automatic voice transcription.
I successfully prototyped the local ascii-fication of a video feed
combined with voice transcription using whisper.cpp
. Being
all text in a terminal, I realized I could use netcat
to
shunt it all onto town. Users could then watch over SSH by attaching to
a read-only tmux session with panes set to receive the
netcat
output.
I’m still astonished it worked as well as it did.
~kindrobot, in a true demonstration of their eponymous kindness,
schlepped a desktop computer all the way from Canada and helped me
recreate my prototype. Since I wanted cyberfolk to be able to call in
and talk, the setup ended up like this:
- a Google Meet call
- a desktop dialed in to the call
- OBS running on the desktop, recording the browser window with the
call
- a virtual camera created by OBS
- the program
tplay
reading the virtual camera and
converting it to grayscale ascii
- a pipe from
tplay
to netcat
- an M3 macbook pro with a nice microphone and a webcam attached also
on the call
whisper.cpp
running on the macbook listening to the
microphone
- a pipe from
whisper.cpp
to netcat
- a script on town called
watchcon
that attached
read-only to a tmux session
A beautiful contraption and one so precarious and fragile there’s no
way I could have done it without ~kindrobot’s help. It’s possible this
ended up being no more than a novelty–anyone really desiring to see live
talks called in to the Google Meet call. For me, it was a very town
appropriate centerpiece to the event. It was also fertile ground for
future text based teleconference inspirations.
In a running theme for the event, I realized that night was
approaching and I hadn’t eaten in something like seven hours. As if
bearing manna from heaven, ~kindrobot and ~ivycreek appeared with
burritos. I consumed the food tube like a bank drive through inhaling a
plastic pneumatic vessel.
More people arrived: ~signalnine, ~noelle, ~grendel84.
Townies settled in for a night of, I assume, playing a lot of smash
on ~kingcons’s Wii. I thought I would need to sleep back at my place due
to car logistics but was able to work things out with ~spinecone such
that we could return and stay the night at the venue. I’m glad that
worked out and thankful to ~spinecone for adjusting her commute during
an intensely busy week at work.
day 1: 11
Nightmares. Vivid and real. In my dreams I woke for the con. Somehow,
over a hundred people had shown up while I overslept. They packed the
venue and had brought kids, dogs, cats, piles of food, boomboxes, picnic
blankets. They all looked at me. I struggled to get the A/V setup
together and kept forgetting what time it was or what was supposed to
happen first. Pockets of rebellion erupted into their own miniature
conferences. A dozen simultaneous talks began. I was so hungry and tired
and didn’t know if I wanted to be looked at or forgotten in this sea of
strangers and their kids and their dogs and their cats.
I woke up for actual real and things were quiet and fine. I wanted to
be able to provide something for breakfast and went to Cafe Umbria down
the block with ~spinecone. We arrived just as they opened and got boxes
of coffee plus a big box of pastries. ~spinecone went on to work and
~m455 and ~grendel84 appeared to help me get objects back to the
venue.
We started on time. I improvised some opening remarks and did not
think to record them. The main thrust was that TOWN CON was not supposed
to be a one-to-many event but a many-to-many event: a maximally
connected, cyclic graph of community and collaboration. I encouraged
people to get in front of the webcam as desired and talk to other
townies online or off.
Unless I have carefully excised it from my spotless mind, nothing
really went wrong. We did decide to give up on the projector–turns out a
massive skylight makes any kind of daytime projection impossible. The
A/V setup rotated to the TV mid-day in time for live talks. I updated
the topic for #con
in IRC as viewing periods for works went
on. There were last minute changes to the schedule but nothing too
serious.
Once again, I found myself at a meal time on a cavernously empty
stomach and once again ~kindrobot and ~ivycreek appeared with tubular
alimentary salvation (though subway sandwiches this time instead of
burritos).
I gave the first live talk: a survey of tooling I use to administer
the town. It also occurred to me to show off the current state of my
MUSH lest anyone (fairly) disbelieved that I had actually made a bunch
of progress on it. ~kingcons and ~m455 spoke about identity, life paths,
and computers.
Townies arrived throughout the day: ~hush, ~polyrtm, ~duckbilledwren,
~mikewilsonstl, ~spinecone, ~insom.
I gave my
keynote and
cried less than the two times I practiced it.
The big catering order was supposed to have been delivered but the
restaurant decided they “couldn’t get anyone to do it” despite being a
mile away (and promising delivery). I sent two very brave townies into
the waning light to acquire our massive pile of deep dish pizza:
~grendel84 and ~archenoth. They were not unscathed in the endeavor but
succeeded none the less.
We ate; it pleased me to perform the cultural ambassador task of
introducing people to giardiniera and deep dish (they already got into
the malort the night before).
~spinecone had appeared bearing two surprise cakes and celebratory
candles to go with. One was for the town (chocolate) and one was for me
(carrot). We sang happy birthday to the town and all blew air
symbolically at the candles. It was very cute.
We had our last live talk (by ~spinecone and sadly only partially
recorded because I plugged in the camera wrong). I shut off the A/V at
22:00. I probably did closing remarks. I can’t remember. We chatted and
wandered and whorled. People constructed badges out of the dead media
and crafts ~spinecone and I had assembled. Music was made and people
played games.
Of special note was the joy of getting to hear ~m455 and
~mikewilsonstl both playing acoustic guitar.
My final fret for the night was making sure ~nebula could make it in
late with both a parking spot and a place to sleep. ~duckbilledwren
graciously went and unblocked the venue’s parking spot by helping me
push a big dumpster out of the way. It felt like a puzzle from The Last
of Us. ~spinecone discovered a cache of air mattresses and we set up a
bed.
I slept, and with far fewer nightmares.
day 2: is this an arboretum?
Saturday the 12th had no cyber component and was a day for the
in-person attendees of con to do whatever they felt like. Pastries
appeared once more from Cafe Umbria as well as not just a box of coffee
but one of their actual, branded coffee urns. I know ~m455 was involved
in that adventure because he joked that he stole it (thanks to whoever
else helped with that!).
I did some loud dad yelling to get everyone informed about options
for the day. We ended up coalescing around:
- a field trip to the arboretum
- a field trip downtown to see the bean
- just chilling at the venue.
I really needed to see some trees and helped lead the arboretum
expedition. Two car loads of townies (thank you ~noelle for driving car
#2!!!) headed to ~spinecone’s place of work in a far flung suburb.
The trees were good. Many people learned what an arboretum is for the
first time. We learned first hand that ~m455 has a secret talent for
improvising completely fake yet utterly convincing latin names for
plants. Ask him to identify a plant sometime.
I hear the bean was good, too. A week later, I went out for a bike
ride and found myself there staring at it. ~insom said he appreciated
the bean; that it was at once a familiar thing (a mirror) and yet a very
confusing thing since it was hard to find yourself reflected in it. I
stood for a long time at the bean unable to find myself and instead
looking at the reflection of the assembled tourists mobbed closer in. I
found a new appreciation for the bean.
By Saturday evening I was quite tired. Not unhappy; just naturally
exhausted. I couldn’t quite focus on smash or music jamming or
programming and just floated from human cluster to human cluster. I
stood alone for a bit and just listened. People were talking, laughing,
making pretty sounds, tapping on keyboards.
It was exactly what I hoped for and I wish it was still going.
day 3: bye
I woke on the 13th to find that people had already done a tremendous
amount of cleaning and prep for our departure (thank you :’)). We
wrapped up without issue and resolved to have a final brunch before
dispersing. This was somewhat unwise, though I probably would think that
less if while waiting for my food to appear I didn’t panic about a
surprise reboot of the town being a possible security event. I was too
exhausted to think and had a rough day after that, but by the evening we
were all good. It put a pallor on the final moments of con and I regret
that. I got a good ~m455 hug before he went to the airport, though.
so
~spinecone, at some point, described TOWN CON as feeling “like
college except I like all of these people.” I agreed. Communal
existence, with the right set of people, is an immensely satisfying
thing. I’m so grateful to everyone who gave it a chance that weekend in
person and to everyone who hangs out on town doing it digitally. I’m so
grateful to all the people who jumped up to help out and volunteer
throughout the event.
I talk about it in my
keynote, but
originally TOWN CON was going to be a chance for me to announce my
retirement from running tilde.town. However, in the lead-up to the
event, the idea of retirement vanished from my mind. Not only can’t I
imagine departing this community, I can’t imagine not having another con
in 2025, too.
I hope to see y’all there.
Today I am releasing
Trunkless, a new web based
soft ware for creating
cut-up
poetry from 1,267,620,693 possible phrases extracted from large
quantities of thematic text.

At launch, I’m offering five corpora to play with:
For now you can only work within one corpus at a time. I’m open to
adding new corpora. Send me an email or open an issue
on github to
chat about it. You can also, of course, get Trunkless’s
source locally and
add your own corpora.
Background
I left high school in the 2000s with the fervent desire to be a
writer. Fear of poverty and a sense of alienation meant I was thinking
about how to support myself from the first moment I picked which college
classes to take. Because I had expressed interest in some amount of
computer science study, I had been assigned a computer science professor
as my advisor. I remember going over the list of classes and nervously
signing up for every computer class I could. Even my CS advisor
questioned my logic. I brought this fear of eventual employability into
every class registration meeting and he brought a soft resistance that
stood no chance. I contend that some amount of this fear is
healthy for anyone attending a liberal arts college. I, however, regret
my excess.
For my senior year of college I did a thesis. Despite my nervous
insistence I take all the computer science classes I could take, I still
rebelled against the idea of being a programmer and even a computer
scientist. I did not want to do a “traditional” computer science thesis.
I wanted to “make art,” whatever that meant. I did not want my thesis to
wear a tie (which was something I didn’t yet know programmers didn’t
do).
William S. Burroughs was a great inspiration to me throughout high
school. His cut-up technique lit up my brain and led me to appreciate
aleatoric art in general. My brain
didn’t work so
well and applying chance to the creative process was a way to get
somewhere with art when my mind wasn’t cooperating.
Throughout college I was a performing noise musician. I did a lot
more composition than might have been obvious at my shows, but within
the structure of a performed work I did a lot of improvisation. I
followed the lead of feedback and samples and the random slamming of
effect pedals. I had been making bots on this early “twitter” thing that
smashed search results for random words together, slicing up text
without reason. I used text manipulation to generate flyers for my
campus radio show, DEAD AIR. All of this led me to my thesis proposal:
what if William S. Burroughs had not scissors, paper, and paste–but a
computer?
I remain proud of my thesis these many years later, arrogant and smug
though it was. The code was clumsy and full of bad decisions. Still, I
used it to create some pieces I liked. I presented my thesis (it’s on
youtube sliced up into 10 minute chunks as all youtube videos were at
the time. I will leave finding it as an exercise to the reader).
I kept coming back to this software throughout the years. This used
to embarrass me. Only a loser keeps making the same work of art over and
over, I told myself. Why not make new, radical things? As I matured I
noticed several examples of artists I deeply respected seeming to
iterate on the same basic piece over and over. William Gibson is a good
example: each of his novels is different, but think about them enough
and you’ll find the same essential themes. In the 1980s Gibson took a
big bite of some meaty ideas and today he is yet chewing on them. We are
lucky to snuffle out the crumbs that fall from his wit-wet lips.
I transmuted my shame into pride and, thus, now present to you the
latest iteration of the cut-up poetry software I have been chewing on
since 2009: Trunkless.
The stages of growth that got us here:
- Weltanschauung, 2009 (perl)
- node-prosaic, 2012 (coffeescript, though a custom dialect inspired
by haskell. yes, it’s completely terrible)
- hy-prosaic, 2014 (hy, with a code structure inspired by the cthulhu
mythos. i can’t explain this now)
- Prosaic, 2015 (python)
- prosaic.party, 2015 (a web based version of prosaic. it suffered
from a terrible ux, memory leaks, extremely slow performance)
- Trunkless, 2024 (go/javascript)
I did poetic work with each iteration. By
Save Scum I had a
consistent workflow of generating a dozen or so lines, copying and
pasting the lines that stood out to me, writing some original “glue”
lines, then generating new lines and looking for the final pieces to
whatever puzzle was taking shape. Prior to Trunkless, I was fixated on
the idea of “decaying templates” or “weakening rules” which I felt set
my work apart from previous computer poetry tools. A user supplied
prosaic with a line template like
{"keywords":["sex", "love", "god"], "alliteration": true, "rhyme": "A"}
.
Prosaic would search its database for phrases that exactly matched the
template. If a match was not found, the template was “weakened” and
re-run. To weaken a rule, prosaic would pick a random property and make
it crappier: looser rhymes would be accepted or alliteration would be
dropped, for example. Rules would be weakened until a line was found.
During Save Scum, however, I found myself just using the “blank
template” to get a truly randomized phrase. I would see a connective
thread between two random lines and build a poetic narrative or picture
around it.
This process felt like sculpting and I imagined myself at a pottery
wheel, feeling the bumps on each random line and molding them into a
coherent shape. A poetry wheel, if you will indulge my metaphor.
Trunkless’s interface
Trunkless is a radical departure from prosaic
and an
attempt to crystallize the approach at which I arrived after working in
this mode for well over a decade. Trunkless is also an attempt to share
my approach with others in a low friction way. I have completely dropped
the idea of templates: now you just get one random line out of a truly
massive corpus. I’ve focused instead on the human-interactive parts of
my workflow. Trunkless is the poetry wheel: sit, sculpt, share.
To get started with Trunkless, note what corpus you are working with.
It’s gutenberg
by default. You can pick a different one and
hit go
to switch. See what lines you received from the
æther. Each line’s source identifier is on the right side under the row
of buttons. If you see lines you like, you can click the padlock button
to lock it in place; it will enbolden. You can regenerate unwanted lines
either using the per-line regenerate button or by clicking “regenerate
lines” at the top; any unlocked line will be replaced.
If you want to trim a line’s content, click its edit
button. Once you are happy with changes, hit your enter
key
or click the edit button again. Note that if the new version of the line
is not a proper substring of the original line, the source attribution
changes to original.
Delete lines with the delete
button. Add new lines at
the end with add new line
. Any unlocked line can be
reordered by clicking a line and dragging it to a new position.
When you have a piece you want to share or take elsewhere to edit
further, you have several options:
- copy to your clipboard as an image
- copy to your clipboard as plain text
- save as an image to your computer
- save as a
.txt
file to your computer
In any of those scenarios you can include a listing of source
attribution with the include sources
checkbox.
Technical Details
I used Go for all of the text extraction and for the web backend. The
frontend is vanilla Javascript using web components. The only library I
included on the front end is the very useful
html2canvas, a
tool I also reached for in the blackout engine.
Trunkless is written as a Go CLI application that exposes a few
subcommands:
cutup
: cut-up raw plaintext files into files full of
poetry ready phrases
ingest
: use files full of poetry ready phrases to
create a corpus in the database
serve
: run the web frontend
I began this work with the requirement that a random line should
always be retrievable in constant time. This was to allow me to embrace
very large corpora and also make the “poetry wheel” approach to cut-up
as pleasant as possible. There is no “get a random row” operation in
PostgreSQL, so I evaluated two options:
- pre-generate an indexed, random value for every phrase row then
query for a row closest to a randomly generated value over the same
range
- give every row a sequential integer ID, cache the maximum ID value,
then generate a random integer between 0 and the maximum ID value
I went with the latter approach. I typically would never rely on the
assumption of gapless IDs but I was not building a traditional database
schema. Corpora are synthesized; once generated, they are read only. I
would only ever be regenerating them from scratch. I felt comfortable
relying on gapless, sequential IDs and the approach worked quite
well.
A major challenge was optimizing write speed when writing a corpus. I
wrote sufficiently fast Go code to cut up and produce phrases from
various sources but was getting bottlenecked when trying to insert all
of the phrases into a table. This challenge led me to abandon the
database I started with, sqlite3, and switch to PostgreSQL in order to
take advantage of the COPY
operation which can achieve
extremely fast table write speeds.
The basic unit of input for Trunkless is a plaintext file. The
cutup
subcommand is pointed at a directory of plaintext
files. By default, filenames are used as source identifiers. Every
source’s identifier is hashed to use as a primary key in the database.
cutup
does no database operations but instead outputs
phrases cut from the source files to a new file of phrases per source.
This allows for the cutup phrases to be QA’d manually or used for other
purposes. Each phrase file is a tsv with its source identifier’s hash
and the resulting phrase. A supplmental file,
_title_index.tsv
, is also written for easy translation
between the source identifier hash and source’s plaintext title while
performing ingestion.
The ingest
subcommand creates a corpus from the pile of
phrase files output by cutup
. Each phrase file is inserted
via COPY
, allowing postgresql to write entire files at once
into the corpus’s phrase table. It’s worth noting here that I commit
another grave database sin. In the “real” world I would have three
tables: phrases, sources, and corpora. Phrase rows would have foreign
keys to source rows and source rows would have foreign keys to corpora
rows. In my extensively pathological usecase, however, I can’t afford to
do joining or queries more complicated than
SELECT phrase FROM phrases WHERE id = 123
. So, how do I
know which phrases belong to which corpora? I hash the corpus name as
part of ingest
and create a phrase table for it with the
hash as part of the table name. Then, when querying, I STRING
INTERPOLATE the corpus name hash to select from its phrase table
(yes, I defend against SQL injection). Judge me; I will cackle, just as
I did after describing all of this to my software engineer wife one
day.
“It’s fine,” I insisted.
“It’s definitely not fine,” she said. She’s right, of course, but
this is art. Art shouldn’t be fine.
On the front end I have committed many more crimes which I will not
enumerate here. It works well enough and I’m quite pleased with web
components. I would have used vanilla JS either way since I think React
is worse than
MUMPS.
I’m running PostgreSQL in a very sqlite3 flavored way thanks to this
guide a friend contributed to another one of my projects:
Run
a Little Postgres Without sudo.
Corpora
Initially, Trunkless was going to exclusively be based on Project
Gutenberg just like the blackout engine. While working on the blackout
engine, I was not able to get the entirety of Project Gutenberg’s
English holdings and this gnawed at me (despite saying in the blackout
engine’s announcement post that I would not let such things gnaw at me).
Part of getting Trunkless going, thus, was once again throwing myself at
getting the full Gutenberg corpus. I succeeded, though not without
effort. I found Gutenberg’s catalog file: a massive CSV that lists every
book in their collection. Sadly, this CSV has corruption that makes many
(~10,000) rows unreadable. I composed bash
one liners until
I cleaned up all the issues and uploaded a corrected CSV to
the Internet
Archive. Using this corrected catalog, I was able to use a mirror of
Gutenberg to fetch all of the English language books. This resulted in a
pile of 57,000 books. I’ve compiled and uploaded
those files to
the Archive as well. I hope this is valuable work for others to build
on. There are other, similar compilations floating around out there but
the most recent ones I found were several years out of date.
I cut all of Gutenberg up into a sqlite3 database and let tilde.town
users play with an early Trunkless. It was well received. I really
wanted additional corpora, however, and that desire led to a lot of the
changes described above. I’m glad I did that work. Adding new corpora is
now fast and easy. Some source files need more handling than others and
the cutup
subcommand accepts a --flavor
flag
to apply source-specific hacks like filtering out Gutenberg book headers
and footers.
So
Exactly
one
year ago I mentioned via mastodon that I was breaking ground on a
new poetry project. It’s satisfying to deliver on that given how in the
past year some significant things happened in my life: departing github
after five years, experiencing the unexpected death of my mother, moving
across the country, starting a new job. This work had a lot of false
starts and dead ends. I was going to simultaneously release a CLI
version. I was going to allow custom corpora uploads and a public feed
of cut-up poems. I wanted people to be able to mix and match sources to
fine tune corpora and change the weighting of various sources. I wanted
people to be able to pick a cute, custom frame and color scheme for
their finished poems.
I didn’t do most of what I wanted. Given the year I’ve had I think
that’s okay. I used to not finish creative projects because of all the
things I felt I couldn’t get to. I realized that if you release a work
of art to the world, the things you didn’t get to are only known to you.
People can’t see what you didn’t do; they see what you did do. I hope
you like what I did.
Tilde.town turns ten in october!
To celebrate, i’m planning a low key conference with both in person
and digital components for october 11th and october 12th.
In person stuff will take place in Chicago, Illinois, USA.
If you are a townie reading this please do me a favor and log into
the server, check BBJ for the town con post, and look for the call to
action there to help me capacity plan for the event.
a walk in the dark, or, a brief diary on mental illness, or, spiders loom larger when one is glued to their webs
Sat Aug 3 07:40:13 UTC 2024

Tonight I had a proper walk about. I let my feet take me wherever
they felt led to go from the Hammer museum back to my hotel. I did not
give in to fear. I reached a place of peace. I thought about horror
movies in the shadowy sculpture garden outside of the UCLA theater. I
thought about horror movies as I was spooked by a woman standing among
the sculptures for a photo opportunity. I was spooked because she stood
very still with her back to me and I assumed with full innocence that
she was a sculpture. She was not. I enjoyed the scare and welcomed the
frisson. Earlier, as Force11 was ending for the day, I stood at my
laptop. A man sneezed nearby. Another attendee was in front of me. The
sneeze echoed around and the attendee yelped and jumped and grasped at
their torso. It was genuine fear.
“I thought it was. I thought something terrible had happened,” they
gasped.
The sneeze did not bother me as I was on the cusp of entering my
place of peace. I think such a place is required to truly enjoy horror.
Later, I walked down whatever dark path I felt like seeing. I reflected
on a unfortunate experience with trespassing years ago–a misfire of my
urban exploration hobby. I was doing something unwise in that moment
that I regret doing and should not have done. However, it is equally
true that (in my ignorance of my surroundings) I was doing something
that I enjoyed: existing in dark, liminal, unmapped space. I have been
on a collection mission to identify the activities that inspire joy in
me. The list is short so far and I treasure each entry like an unearthed
artifact from a dead, gilded age. “Quietly walking around a large
unknown environment in the dark” is the most specific entry in the list
so far but I am happy to have found it; I am also happy I can now
acknowledge the error while appreciating its context (nota bene: i
caused no harm or damage, i just wandered into somewhere i wasn’t
supposed to be thinking it was somewhere else and got caught). Crossing
the line into transgression had not been necessary to generate joy; it
was a mistake. Historically, I have been unable to sort these feelings
out from the intense shame and terror of having committed a mistake like
that in view of authorities. The extent to which it was an honest
mistake depends on how you scale clemency to levels of intoxication.
Returning to my hotel room, I had every good intention to sit and
write by hand in my journal. I was tired, though (the wrist-wrapped
self-surveillance tool says 16,686 steps), and the bed seemed inviting.
My laptop also seemed inviting. Computers used to bring me joy in an
easy and automatic way. While I am not prepared to add them without
qualification to the new joy list I am comfortable saying that they have
at least reached a joy probationary period. I feel at home on my
computer tonight like I’m settling into a comfortable sweater. I have
spent today and yesterday at a conference. Conferences are another thing
I can remember finding joy in long ago. Since 2016, however, I can only
recall them as disillusioning and disappointing experiences undone by my
own paranoia and fear. This one felt good. Ironically it felt good in
part because I kept my laptop handy and allowed myself to slip into
cyberspace whenever I wanted to dip out of the world around me. I worked
on slides (before my talk) or on code here and there (after my talk). I
did meet several interesting people at this event but frequently needed
to turn from the flesh world. Not hide; not flee; not smother; not
escape; just shift away.
There is a longstanding daydream I have. I imagine that I am lying in
my bed but my bed has been placed at the center of some kind of bustling
activity. Usually I imagine the auction house where my dad worked for
forty-some-odd years and where I and my siblings all worked while
teenagers. On auction night there was constant motion: My dad, like a
stage manager, instructed us movers what to get and where to stand.
There was to be no delay in between the sales of lots. His directions
were clear and sure. I felt like I was part of a dramatic engine,
ticking away scenes with the exactitude of a pendulum. It was soothing
to know exactly what my place was and what I should be doing. This
informs my daydream. I would use it to fall asleep as a teenager. I
would get home from auction nights with throbbing feet and buzzing, sore
limbs. I would lie down and shut my eyes and still see the warehouse
swirling with lots moving on and off stage. My role was to sleep,
though. I was supposed to be in bed regardless of what swirled around
me.
The daydream has since taken other forms. Most common is a busy
intersection. I imagine my bed is at the very center of Shibuya
crossing, for example. No one in the dream ever questions me or wakes
me. Cars smoothly navigate around me. I am accepted as much as I am
ignored. I’m not invisible – no one would ever crash into me in this
daydream – but I am spared the torture of engagement.
Being around most humans is work. I toil in their mines. Most humans
behave in ways I find inscrutable. I have to stare and study to find
meaning in their smiles and winks and idioms and motions. Such things
are without any a priori meaning to me. I am in any
conversation as if I’m stroking the contours of the
Lament
Configuration: perhaps a way forward will open, but it will bring
pain and pleasure indivisible. Such is socializing.
Today I realized my computer was my bed in the bustle of the
conference. I felt like I was supposed to be there, jacked in, even as I
was still aware of the fleshy commotion around me. In the early 2000s,
when I was a teenager, my extended family still got together with
regularity. I neither despised nor disparaged this. However, I could
only handle so much of it. I did not know what to say to anyone. As soon
as the material parts of dinner were over I would promptly get back on
the family computer. It was situated at the open border between the
living room and dining room (it still is, though with a 90 degree
rotation). I can clearly remember the sensation of my family being
around me. Like the auction daydream it was comfortable. I listened to
and internalized conversations even though I was not engaging directly
with them. I was on their fringe while my primary senses melded with the
screen. It probably seemed rude. Perhaps my family didn’t notice. I
don’t know.
My brain is injured. It is not damaged in a physical sense. Rather, I
have been diagnosed with complex PTSD. The practical effect of this is
my being sent into severe panic by innocuous triggers. Human memory, as
I have experienced it since childhood, is a sublime graph (as a computer
scientist, when I say graph, I mean a series of nodes connected to each
other by lines like a subway map). I cannot intuit the boundaries of the
graph. I can only traverse it from a node randomly accessed via sensory
input. A smell might remind me of an autumn day on which I walked home
from the bus stop with my neighbor from china who loved Jesus who died
on a cross shaped like the “t” in “texas” which at one time was the
farthest west I had ever gone in America which is a country where my
stuff is. Each of these memories is a node; each sensorial or
phantasmagoric overlap a line between them. PTSD means that some of
these nodes are cursed. Being led to such a node means that my muscles
lock, my throat tightens, my eyes dart and quiver, my focus explodes
away like a family of frightened deer. Complex PTSD means that I have
many cursed nodes each subtly pointed to in surprising ways.
Given this psychological premise, imagine what happens if a cursed
node is also on the connective path to a node that I associate with joy:
The joy becomes inaccessible. Sensory input that should result in joy
results in panic. Luckily, this can be healed, though it is a long and
torturous process. It requires traversing memories and accepting that
some will inspire fear. When one does inspire fear, I have to
proactively re-associate the memory node with safety and security. I
have to climb into bed while the panic gesticulates around me. I have to
open the laptop while the carnival of souls shuffles around me.
My two days at this conference have shown me that this healing
proceeds and I write to acknowledge that such healing is worthy of
celebration even if its pace feels glacial. If your brain is injured
like mine I hope this is encouraging. If not, I hope this inspires
empathy or at least curiosity.
Either way, I encourage you to gather yourself and go take a walk in
a dark place.
my friend E sent me a link some weeks ago to a short youtube video
about hauntology; specifically, cultural hauntology:
the video on
youtube
The following is an e-letter to E I wrote out immediately after
viewing:
I have been giving myself the brainspace today to catch up on my tab
queue and finally watched that Hauntology video you sent me. I liked it
a lot. I appreciated ending on the observation/question about how the
nostalgia mining is clearly the result of a need people have as opposed
to (victim) blaming the people partaking in it of being wrong/stupid. I
think an argument “against” (not fully) the Fisherism of cultural
hauntology is the assertion that all art (and thus culture) has to start
in the past; it has to be a reaction to / conversation with the past. so
I think this endless recycling is not a neoliberalism exclusive thing; I
think neoliberalism has just capped how much imagination one can bring
to the past/present conversation that is art.
I said in the
preface to
my cyberpunk cutup collection that I was (to steal phrasing from
burroughs) cutting into the past as a kind of divination into the
present in the hopes of then imagining and constructing an alternate
future which I think all these years later is still the guiding
principle of all my dives into the past (VHS, tilde.town, old books,
etc). I butt heads all the time with people who just want to dig into
the past for the past’s sake and I find it really troubling and I feel
like that’s echoed well in the hauntology video
when I think about creating futures the most clear examples that jump
to mind are 20th century revolutionary movements–fascism, sovietism,
maoism. there are effectively infinite nightmares that occurred
within/because of those movements and i often wonder if we’re
collectively terrified that trying to dream up the truly new has to lead
to immense suffering. neoliberalism with its short term commitment to
big-tent-ism feels so safe even as long term it flings us into the
apocalypse toilet. it leads me to think that all human attempts at
organization are inherently deathward and the only real choices are
ardent anarchism (short term localized suffering for potential long term
chill) or continuing to sink into the neoliberal drug fog (short term
pleasure(?) for long term disaster)
lately i have been feeling extremely TWO WOLVES as a result of my
history research. one wolf is turbo anarchist, all states must be
destroyed, all centralization of power has a greater cost than benefit;
the other wolf is swooning for the visions of early communists
(egalitarianism, science, atheism, frugality, collectivism, all wrapped
up in a motherly state that can defend itself) and asking me to wonder
“maybe this time?? maaayyybbeee this time???” even as i research the
nightmare totalitarian end state of communist nations
(end)
I also linked the video in tilde town which spurred some good
discussion. I reflected on hauntology, cut-up, and LLM “art” (reproduced
below with other replies edited out):
22:02:05 @vilmibm | i think the video's perceived negativity is from mourning this
| seeming difficulty in imagining new futures
22:02:30 @vilmibm | what i said in my notes to a friend about it was that this video
| could observe that /all/ art starts in the past since all art is a
| reaction to what an artist has seen
22:02:56 @vilmibm | and what's changed is not starting out making art/culture based on
| the past but a newfound difficulty of taking that inspiration and
| making something new with it
22:03:09 @vilmibm | as opposed to just regurgitating it wholesale but in 4k or whatever
22:07:16 @vilmibm | personally the video hits at a creative concern near and dear to
| me: cutup poetry vs. LLM-generated "art". i think the level of
| human involvement in the former leads to taking the past (the
| content being cut up) and turning it into something new (ie meaning
| created through more than mere juxtaposition). meanwhile, LLMs can
| only autocomplete art
22:07:16 @vilmibm | that has already been made, offering novelty in terms of
| juxtaposition but never being able to rise above mere juxtaposition
22:07:42 @vilmibm | humans imbue cutup pieces with a new narrative; LLMs can only
| autocomplete old narratives
22:10:12 @vilmibm | whereas a human artist might be doing 90% pastiche but invent a
| whole new art form in that last 10%
22:10:30 @vilmibm | which to me is the thing most interesting about humans
reposting it all here in case it inspires conversation for anyone
else. there are no comments here (YET) but there is always email.
a lonesome death needs not be
the only future for a life
lived as a tear wet
apology
(content warning: suicide)
I don’t know when I came across the
memory palace
technique but I thought it was interesting. I historically do not think
of myself as a person with a “good memory” so I filed away this concept
to try at some point. What ended up sticking with me and resurfacing was
not the idea that a memory palace could help me memorize things but
instead wonderment at the idea of building physical spaces in my head at
all.
I first noticed myself creating such spaces in the early 2010s when I
was groping at an understanding of my severe, suicidal depression. I had
started obsessively journaling (in addition to therapy) in this detached
and impersonal sense in order to see how my emotions fluctuated day to
day. I started getting this notion of depression as a room I would wake
up in with no windows and no doors–the lack of escape representing my
obsession with suicide as the only means of dealing with my life.
Realizing based on my journal/therapy that sometimes I was not
in the doorless room was key to treating my depression. In other
words–my brainspace could feel inescapable and I could feel incapable of
remembering that any other type of brainspace existed but if I held onto
there being places outside of the doorless room as an article of faith I
could weather the worst depressive episodes (nota bene: though I still
have the occasional depressive episode, the worst of my depression is
years behind me and I do not experience suicidal thoughts).
Years later I was struggling to explain what the inside of my head
was like to a new therapist. I ended up visualizing what the experience
of having my consciousness felt like as a physical space like I had done
years prior with the doorless room.
I remember two distinct visualizations. One was of sitting in a
massive room surrounded by ropes that led off into the darkness. The
ropes would twitch and I could follow one towards some idea but I end up
with a bunch of ropes in my hand I can’t manage and would start dropping
them. Once I drop enough I would be lost in the dark with no sense of
self. The other visualization was of sitting in an armchair with a
massive wall of TVs before me, all rapidly changing channels. I could
try and focus on one but I would either be distracted by another or
caught off guard by a channel change.
My therapist used somatic techniques to help me calm and focus; I
ended up visualizing these, too. For example I would close my eyes and
imagine the wall of TVs but also imagine whatever somatic distraction he
had going–a candle, an aroma, a sound–in my consciousness too. I would
imagine looking from the TV wall away at the distraction. The effect was
to be aware of the TV wall “behind” me but focusing on the somatic
distraction. This was super helpful and led to my being able to calm
myself on a more regular basis.
I don’t remember when but at some point during the pandemic I was
reflecting on how these room metaphors had helped so much with my
therapy. I took stock of the various “rooms” that I had come up with and
at this point was reminded of another interest of mine:
MUDs. A
MUD maps out a world in terms of “rooms” which have connections between
them. So from some starting room (often called a foyer) you could go
north to somewhere or east to somewhere and then so on. I don’t know why
but I decided to build a MUD in my head using my space visualization
therapy techniques.
I started with a foyer. It has a tiled floor with black and white
checkering, dark wood panel walls with red velvet padding, a rosewood
hat rack, and a plain wooden chair.
North from there there is an entry hallway with a similar aesthetic.
It has doors to the north, east, and west and a staircase up. The door
east opens into a
WWI
era trench. I go here in times of crisis and hunker into a dugout
while artillery explodes and bullets fly overhead. To the west is the
pillow room which is warm but not hot, fragrant but not reeking, and
absolutely stuffed with pillows. I go here when I’m allowing myself to
relax.
Up the stairs is a long landing with doors along the wall. The first
door is the room of constant suffering. In this room I can’t close my
eyes and everywhere I look is a gilded framed picture playing out the
worst scenes I can imagine (like Salò x 100). I can hear an incessant,
surrounding wall of screaming anguish and the harshest feedback. I don’t
really choose to go in here. I just find myself in here during panic
attacks.
Next is the TV room, then the rope room. After that, a door opens
into a glass dome I call the observation deck. Outside the glass dome is
whatever I’m seeing in “real” life. I go here when I’m in a situation
that is uncomfortable and “watch” it from behind the glass, putting
myself on autopilot.
North from the entryway is another hallway with a door for the
library which is just a library. I go here to review ideas and things
I’ve read. At the end of the hallway is a staircase down which goes to
the basement of my parents’ house circa 2001. It’s dark and wet down
there and under foot are broken toys. I can hear sobbing.
Floating somewhere with no connecting doorways (something that can
happen in a MUD if a door object is destroyed) is the doorless room.
I “go” into this palace a lot and it helps when I’m experiencing
panic, depression, or executive dysfunction. By focusing on “being”
there and moving around I can start a cognitive feedback loop that
affects my mood and state of being.
Recently I was having a very rough panic episode about my life and
quitting my job. I went into the foyer and sat down unsure where to go.
It occurred to me that I had never visualized the south “wall” of the
foyer. I’m always sitting in it peering north into the structure. I
decided to imagine turning southward and opening the “front door” of the
palace.
My imagination populated the “space” beyond the open door with an
infinite swell of blue-white light that pulsated. I perceived it as my
unconscious/subconscious/reactive self and saw it with a total sense of
compassion and love; it was like a wild creature and I wanted to care
for it. This experience really affected me and has stayed vibrant and
powerful in the weeks since. It feels like it represents one of the most
significant leaps forward for my daily mental health in years.
Ultimately I can’t say whether all of this is a fluke of my own
overactive imagination or if it has any applicability for others. I also
don’t know if this “technique” is what has helped me with mental health
over the years or if it’s just a retroactive way of telling a story
about my self-work with therapy, journaling, and meditation. I’ve never
met anyone else who has described this sort of thing but I feel like the
memory palace approach to memorization must be psychologically very
similar.
Addendum: I shared a draft of this with a friend and he pointed out
that whatever it is I’m doing, it has a lot in common with
mandala techniques
.
I made a new thing: a website for making blackout poetry with over
nine million chunks of text extracted from Project Gutenberg. It’s here
at blackout.tilde.town .

Ever since ~kc posted
this page I’ve been
inspired by blackout poetry. I wanted an interface not only for doing
it, but for giving me novel text to work with as well.
I used Project Gutenberg’s
robot access
instructions to get about 12 gigabytes of compressed plaintext
English language books. It translated to about 35,000 books once
duplicate encodings were ignored.
This code ,
gutchunk, uncompressed the books and combed through them for what i’m
calling “chunks.” I was looking for meaty sections of text that would
make for good blackout poetry fodder. My approach is fairly naive. I
store text in a buffer until I see two newlines, then check if I have
enough in the buffer; if I do, I cut a chunk. If I don’t, I discard
it.
To my extreme pleasure I ended up with over nine million chunks. This
is all sitting in a sqlite3 database on the town and if you’re reading
this and are also a townie, let me know if you want access to it.
When I was working on
prosaic over the years
I got a lot of junk from my sloppy parsing of gutenberg books. I was
young and silly and not writing great code then. I was also afflicted
with this perverse need to ingest ALL of the text into my cut-up
corpora. I got a lot of cruft: chapter headings, tables of content,
captions, and similar. So far I’ve pulled well over a hundred of my nine
million chunks and they all look quite good. My simple heuristic avoided
a lot of the noise that I get when running prosaic. Of course, I’m
missing some text: short bits of dialogue, for example. This kind of
thing would have haunted me in the past, but now knowing that mystery
remains in these books feels good. I don’t like finding
the bottom of the swamp
.
If you’re interested, the code for blackout.tilde.town is also up on
our gitea .
There is no way to iterate over the chunks; you get a random one
every single page load. Given the size of the ID space, this should mean
an infinitesimally small chance for repeats. I wanted an experience like
the library
of babel ; one of wandering and digging up scraps to scrawl
upon.
I’m hosting this decidedly personal project on tilde.town because I
felt like it was a nice fit for our community. It’s also my house and I
can do whatever, though I try not to have that mindset too often.
I may also make an SSH-hosted text-mode version. I haven’t
decided.
I’ve already been really pleased with the experience of making poems
using the new site and hope you like it, too. Please let me know on
mastodon or wherever
if you’re making stuff with it.
I made a new piece of
software . It’s a
command line piece of art.

The software accepts any number of filenames as arguments. each file
is then interleaved, character by character, into a grid. the grid of
characters is then ignited and the fire spreads downward. characters
eventually become smoke particles that float upward and wisp away into
nothing.
You can read about the practice that inspired this project on
on wikipedia .
I made this program because I wanted something I could run
ritualistically. Initially, it was to run on a computer as a way to make
it feel like a home. I’ve been using it, however, as a meditation aid.
Before commiting to a potentially stressful task, I get a related text
file and then watch it burn away. It’s comforting and gives me some
space and time to breathe.
Ritual is important. It can help nudge the brain into certain states.
It can provide structure to a day or event which in turn can help focus
a mind in turmoil. It provides an intentional space for reflection. I
don’t get much out of rituals involving physical objects, however. I
think living in America my whole life has made me consider many physical
goods as a form of
kipple
. This was less true growing up when I lived in a forest since I could
wander out and find a weird stick or rock or curious leaf covered in
gall; but since then, even if I go out and obtain something from the
natural world to use ritualistically, I am distracted by how shallow and
capitalist it feels. It’s also frowned on to be seen burning things in
an urban environment.
the smudge program is a way to address this for me. Text files feel
like special objects. They occur organically and have a shape to them
that is incidental, like something from a forest floor. And digital
conflagration can’t burn down my house. I have found this program to be
highly satisfying for its intended end.
It is written in Go. I have been slowly adding to a tiny “framework”
for doing this kind of programming in Go on the command line based on a
library I really like called
tcell . If you are
interested in that code, you can see it
on
github. I might split it out into its own library. Let me know if
that seems useful.
If you want to download and use smudge, you can get a binary from
its
release page for your OS.
I got a new computer. It’s a thinkpad (x1 carbon gen10) and came with
Ubuntu preinstalled. I often say this about new computers, but I really
like it. I tend to get to a point when I’m mad at the new computer and
then all feels lost until the next one. This one feels different; it
feels like home. This is a blog post about bookmarks but first: a tour
through computing disappointments from the thinkpad I had in 2010 to
today:
- the thinkpad in 2010 did not let me down. I loved it. I lost it in a
very bad breakup.
- job gave me a macbook. it was heavy and hot. I put ubuntu on it and
it barely worked. I hated it.
- next job gave me a dell xps 13 with ubuntu. it was hot and sharp.
the hard drive eventually died.
- I actually have no idea what the next job gave me. I just don’t
remember at all. that’s weird. probably a mac book pro.
- next job gave me a thinkpad x1 carbon gen5. I put linux on it. I
liked it mostly but it had very quiet speakers and a dim screen. Also
hot.
- job forced a switch to mac. mac book pro 2018. I hated the touchbar.
heavy and hot. really bad keyboard.
- microsoft surface go. this thing was adorable. Basically a netbook.
Awkward on my lap, though, and ran real slow.
- microsoft suface book. the worst designed laptop I have ever used.
screen cracked in my bag and it cut my thumb a few times.
- microsoft surface pro x. Also awkward on my lap and blue screened
once a day. laughably unusable.
- system76 lemur pro. I had such high hopes. terrible keyboard, bad
speakers, bad touchpad, and serious hardware issue around battery
consumption. gave it away.
- job gave me an m1 mbp. I came pretty close to liking this laptop.
ultimately it was macos that made it unpleasant for me. also, i did not
love the keyboard.
This new bud has a beautiful screen. decent speakers. A
luxurious keyboard and touchpad. Big SSD. even the fingerprint reader
works in Ubuntu. Since its first boot this laptop has felt like
home.
Something about this home feeling has made me feel comfortable. Like
I’m sinking into a cozy chair and taking stock of a warm, safe, familiar
cottage. I set up Firefox and synced my stuff and felt like arranging my
big pile of unsorted bookmarks from the past decade-ish.
here’s some that felt notable. maybe i’ll add more later.
increpare.com a large
collection of interesting little games, many of which are playable in
the browser. I do not know how or when I came across this.
neo
habitat a remake of the original graphical multiplayer game.
A
PDF of Richard Bartle’s Designing Virtual Worlds book Unfortunately
his site has gone down but the Wayback machine has a backup.
lincoln brigade database
database of americans that volunteered in the
spanish civil
war
this
da share zone tweet my wife and i reference constantly
this
gif
imdb entry for Colony
Mutation Came across this fascinating, kind of
cronenberg-without-budget movie recorded onto a blank VHS tape in a
thrift store.
the patent
for disco balls
the
wikipedia article for Leopold von Sacher-Masoch. Masochism is named
for him. Though he didn’t want that.
drama
in alphaworld
a gallery of cyberpunk/hacker
zines some really cool stuff i haven’t seen elsewhere.
tl;dr
I’m fully rewriting the
tildemush MOO engine
as hermeticum and
actually plan to release it for real this time ^_^
huh what
A few years ago I shipped an alpha version of a new
MOO style system called
tildemush. It was
crude in many respects, but did function. In addition to basic account
creation and chatting features, it supported:
- a custom lisp-like language called WITCH for scripting objects
- a bidirectional key/value system for object metadata mutated through
code
- a permission system for objects
- an in-client editing interface for objects’ code
- ability to create rooms in client and move among them
- a way to view a map of the world’s rooms using ascii graphics
- support for transitive and intrasitive verb handling
Unfortunately, it had an insurmountably large amount of technical
debt and continuing development on it was not pleasant. I shelved the
project for almost four years, seriously unwilling to admit that I felt
it was unsalvagable. I was not able to shake the dream of seeing this
project through, however, and decided it was worth a full rewrite.
Thus, this blog post serves as an announcement of
Hermeticum, a full
rewrite and re-imagining of tildemush. I waited to make a statement like
this until I actually had something working. I’m pleased to say I have a
rudimentary client and server going in the Go language, including a new
version of WITCH powered by Lua instead of Hy.
The vision of the project remains the same: a social, creative place
targeted at the tilde town community
that embraces the spirit of MOO/MUSH/MUD/MUCK engines with a fresh
perspective.
Though huge features are still missing, I am very excited about the
foundation I have laid and am more optimistic on delivering a compelling
experience than I ever was with tildemush. If you want to follow along,
I’m tracking progress in a
roadmap
file.
rambling pontification
You, dear hypothetical reader, might be asking why I’m bothering with
all this. It’s 2022; there are both decades-old existing
MOO/MUSH/MUD/MUCK engines as well as a whole world that has moved on
from them. Why not try and revitalize interest in existing technology?
or just go live inside of the metaverse forging NFTs or whatever with my
digital blood, cyber sweat, and virtual tears?
I have, since youth, been obsessed with the idea of being “inside” a
computer. To this end I have created things like
tilde town,
murepl, and other
communities and technologies long since dead. I have also tried a bunch
of MUDs and MOOs. To date, however, none of my creations or dabbling
with pre-existing communities has fully scratched the itch I have had
since I first used a computer in like 1992 or whatever.
I feel that existing MOO/MUD/MUCK/MUSH technology is saddled by both
technical and community debt. Technically, such engines had to make
engineering trade-offs for very constrained execution environments.
These trade-offs led to scripting experiences very difficult for
beginners to understand. They are also from the telnet era, which
seriously constrains both client capability and security.
Community-wise, MOO/MUD/MUCK/MUSH engines rose up out of a kind of
competitive and often exclusive nerd culture. There was a lot to love
about this era of culture (most notably how it fostered techno-utopian
feminist thinkers), but I like less RTFM-style environments in favor of
those that welcome the kind of spontaneous creativity that newcomers can
bring to a place if they feel sufficiently welcomed.
As far as why I’m still so invested in “antiquated” text-based
experiences in this (cursed) world of ponzicoins and addiction-oriented
graphical MMOs? Text is a perfect jumping-off point for imagination and
creativity. It’s endlessly mutable and highly accessible. I love text
and don’t see a reason to abandon it, especially in a post-unicode
world.
do you want to help?
The user registration/login code both client and server side needs
help and is isolated from the actual game engine stuff that I’ll be
focusing on in the short term.
Additionally, I’d love help shaping WITCH, the in-game object
scripting language. This requires folks interested in doing some beta
testing–creating objects, giving them behavior, and providing feedback
on its ease of use. I’m new to Lua and would appreciate feedback on how
I’m using it.
For now the development is happening on GitHub. I’d like it to be
elsewhere, but haven’t made up my mind where it should go.
anyway, uh
have a good one!
driving from chicago to berkeley we chose to go through south dakota
because to my friend and me it was a mysterious, unvisited place. the
wall drug signs begin soon after crossing the border on 80. i was
unfamiliar, but my friend filled me in: a place that exists
self-referentially. it doesn’t offer services beyond that of any typical
rest stop, and the draw to go there is the chance to experience what
amounts to a meme (in the classical sense). in other words, a tourist
trap.
it got me thinking about self referential advertising: ads for a
place that exists only to serve ads for itself. the place makes money by
selling advertising (ie tchotchkes with Wall Drug on them).
then, Marvel movies popped into my head. my experience of Marvel
movies is that they lack any real substance. they are an IP portfolio: a
collection of brands that interact in surface and shallow ways in order
to sell merchandising. a Marvel movie is a commercial; the commercial is
for itself.
ultimately i decided i preferred Wall Drug since, unlike the Marvel
Cinematic Universe, at least Wall Drug gives you free ice water.
i have moved to berkeley. of chief importance is finding the coffee.
the following is the result of initial recon bike rides.
- artis. the first espresso i had here was capital P Perfect. the
second two were Pretty Good. the cafe music switching over to top 40 at
some point was disconcerting.
- réveille coffee. it was pretty good, though i wasn’t too into the
breakfast burrito. Further recon revealed that their chilaquiles are
really delicious, though.
- highwire (san pablo). perfectly cromulent
- cafenated. the espresso was in no way bad, just the one i was least
excited about. i did rather enjoy their breakfast burrito, though.
- coffee conscious. i really hate to say this. i do. but it’s the
worst coffee i have had in the city. i’ve been multiple times in
disbelief. i also do not like the donuts they carry.
- my coffee. have only been once but the espresso was very, very
good.
- signal. pretty good. similar tier as Cafenated.
- the hidden cafe. i do not remember the coffee from here which means
it was neither notably bad nor good. mostly i just remember how cramped
it is trying to go there if the weather is at all nice out.
still to try: breadxcoffee, coro, royal ground, souvenir, hal’s
taking dark steps and eating half the breadcrumbs is how i live. i no
longer try to find the exit, just remember the rooms. meal time with the
minotaur. the maze has it all: a trade in lunacy, nickelodeons,
international coinage, soliloquies, eulogies, biscuits. when the imagery
gets vivid i don’t depart in death–it’s just imperative to keep moving.
it’s imperative to keep moving and not get stuck in the windowless room
that sometimes forgets its own door. there is an infinity of better
rooms than that. there’s the screaming room where ears can’t be covered
eyes can’t be closed and in every direction the worst thing you ever
beheld. there is the room of soft walls always yielding but never
suffocating full of dry warmth and lavender. the library smelling of
book mold and dark woods. the study with green glass lamps and green
felt desk beds and pens and pens. the dark room where there is nothing.
most critically, the foyer with the umbrella bucket and the coat pegs
and the wash stand with the white marble. there’s a chair in the foyer
and i’ll sit here when i don’t know which door to open. the chair is
made of wood and has a creak to it.
I made a blog. I haven’t had one in years. When I did it was mostly
for dream logging and poetry. I was always pretty self conscious about
what I put there. I published my town feels
posts as a
“blog” for a while, but that never felt right. My feels
content was overly personal, diaristic, and vulnerable. I used to think
you could either be authentic (vulnerable to a fault) or inauthentic
(crafting a personal brand), but now think often of a phrase I heard an
actor use in an interview about learning to be “private in public.” I
interpreted that as being forthcoming with yourself in the public eye –
which we’re all in, now, thanks to the internet – but being defensive
about what you share.
Another reason I’m making one of these again is self-actualization.
Historically I’ve thought very poorly of myself and agonized over anyone
actually caring what I posted. Now, I’m just excited to share whatever
I’m excited about or mentally chewing on, not out of
self-aggrandizement, but because the stuff I find interesting is
interesting because I find it interesting. It’s a very cozy tautology.
I’m not interested in building a following or crafting a brand: just
sharing what inspires me in an honest way while still keeping some of
myself to myself.
Finally, I like to mark time with the discovery of artifacts. I’m
always hunting for inspiring things–books, sites, objects, people–and
feel an urge to catalogue them so I can be re-inspired in the future. I
post on social media about these things sometimes, but social media is
uniquely unsuited to reflection and later perusal. I liked Tumblr for
this to an extent but never got comfy posting there; too many numbers
and buttons and noise there for me to feel like I could collect my
thoughts or feel like I was posting for myself instead of a hypothetical
audience that might “like” something. I also don’t like being beholden
to corporate platforms.
Some initial posting fodder:
- Going through a decade’s worth of unsorted bookmarks and posting
interesting finds
- Reporting on 1990s primary “cyber media” that I collect like
academic books on hypertext and trashy web magazines
- Project ideas that I’ll never get to
- Project ideas that I have gotten to
- My “religious” interests in Discordianism and Hermeticism
- Fiction/poetry/essays
Technically speaking, this is all powered by some markdown files with
custom metadata embedded in it, a <100 line bash script, and a Go
program for handling a little linking macro. I wanted to be able to
author links in a consistent way but have sensible renderings in HTML,
Gemini, and Gopher. All of this, including posts, can be found in
this repository. I
considered a static site generator…but I prefer scripting my own thing
wrt blogging. It keeps me humble and I find that I don’t use most of the
features of off the shelf things.