The Annals of the Lesser Occult Institute

TiddlyWiki (TW) has been coming up in the Matrix channel that hosts discussion for the Malleable Systems Collective. It was correctly observed that first-time user onboarding is... rough. It's easy for even professionally technical people to bounce off, having made configuration choices that don't match their goals, and to conclude that TW does not meet their needs. If they find solutions that make them happy, godspeed! But in an attempt to be helpful I'll lay out how I have mine set up. I should say that I use “note” and “tiddler” interchangeably because I hate “tiddler” as a term. Skim the headings and skip to Configuration if you don't care about the rationale.

Principles

First let me lay out the values that inform my choice of TW and my approach to its configuration.

Interlinking is one of the most valuable things you can do to organize information. I compromise on my commitment-phobia for links. Links have this inconvenient need to know where they go, so you have to come down from your maximally-agnostic high horse and provide them some concrete indicators. That said, I refuse to think too hard here—Joplin, for instance, is a really lovely open source Evernote replacement that I was considering but discarded because of the internal link syntax. It looks like [Target note](:/6d55a1e4d87946099bb8aeb24f663f96), with one being dependent on the application to get the blobby note IDs. I want to be able to turn "Hang on to your youthful enthusiasms -- you’ll be able to use them better when you’re older." --Seneca into something like"Hang on to your youthful [enthusiasms](#enthusiasm) -- you’ll be able to use them better [when you’re older](#aging)." --[Seneca](#seneca) fluidly.

Everyone in this space seems to have fallen in love with Roam Research and their very, very impressive demos. The tl;dr: if I link from A to B when B doesn't exist and then navigate to B, B shows me the link context in A with a link back to A. If I add content to B, the link from A still displays below that content. The point of this is that it allows one to build up associations among topics, authors, etc. that are perusable. (Tags also function in this way, but tags are not central to my organization in the way that I center links)

Everything everywhere: browser access

I don't compromise on the portability the Google ecosystem can offer. I can log in from someone else's laptop and note down an address. I can write down an album recommendation from my phone typing with my thumbs. All my devices can access everything and I don't have to think about what's been left in what backpack.

Commitment-phobia

No new markup language: only Markdown

My life is lived in Markdown, for better or worse, at work and at play. Even Facebook Messenger supports a subset. I'm not memorizing anything else for my own notes when it's so helpful to have Markdown syntax in one's muscle memory.

No data lock-in: simple files

If I'm writing in Markdown, I should be storing in Markdown. An .md file, or a folder of .md files, feels timeless—or timeless enough to be translated to the next thing, at least. The underlying data is in this kind of storage—what lives on top is just a view layer.

Let there be pretty: customizable

My needs here are somewhat less demanding than I was of my middle school MySpace CSS, but I want plain Markdown files and I want cutesy background images and I get both. If I want to be persnickety about fonts, I can be to my own satisfaction. The view layer is usable by default but has enough knobs for visual tinkering.

Flat organization: no hierarchy

Hierarchies are so 2nd millennium. Links and tags ought to be enough. This verges dangerously on relating more to my philosophy of notetaking than my technical needs, but I want a tangle, not a tree, and my tools can't force the latter on me.

Bonus: offline function for alternate use

I know that I've said I want everything available everywhere—and that's true for the great bulk of what I do. But it's also valuable for me to be able to take notes on my work. I work at a big tech company. People throw enough three letter acronyms around internally that you could hit on real ones by sharpieing letters on some dice. I need to remember a lot of non-public information. It's not kosher to store that where it doesn't need to be—so if I can use the same kind of view layer locally to see Markdown files that never leave my work laptop, that's a great bonus.

Configuration

There. You now have a basic server that will autosave your changes as you edit to a bunch of markdown files in theFolderYouChose/tiddlers. Here's documentation on how to use it. Making it available everywhere is then a question of web hosting. I am not qualified to give advice on how to configure a reverse proxy and whatnot. There are also different auth solutions you will want to consider. The built in username / plaintext password is not ideal for long-term use, but will work for testing it out. Your reverse proxy can help here. For a while, I had this running on an EC2 instance. If you do this, I recommend creating some kind of backup as well (push the directory to S3 every so often, rely on EBS snapshots if lazy and deep-pocketed, sync with git every so often, etc.). I now run it from a machine I have physical access to for recovery, but I should still probably have a better backup story. (We should all have a better backup story.)

Snazzier configuration

  • If you use the “journal” feature for daily logs, it's possible to create a modified button that will open the journal of the day with the markdown format selected. (If you care about this but don't want to fuss with it yourself, DM me on Mastodon and I'll share the modifications necessary.)
  • Backlinks – install this context plugin and create a tiddler with the content:

    <$list filter="[all[current]backlinks[]sort[title]]" emptyMessage="">
    <$link to={{!!title}}><$view field="title"/>: </$link>
    <$context length=80 term=<<storyTiddler>> />
    <br>
    </$list>
    

    and tag it $:/tags/ViewTemplate. I use this footer along with a list of notes tagged with the title of the current note, but this is simple for you to try to see if you like this backlinks feature.

  • Decoration – I'm not going to say it would be reasonable to do so, but if one wanted to have little images floating at the bottom of one's notes based on some tag, one could use a. the fact that every note gets the CSS class .tc-tagged-{TAG} for every tag, b. every note tagged $:/tags/Stylesheet being included as CSS, c. the TW markup language to process transclusion before this CSS inclusion happens, and d. a cute image stored as base64 as a separate note. It might look something like this:

Drawbacks

Images

The native thing to do involves embedding the images, more or less, in the big blob of content that gets sent across the wire on first load. Base64 encoding is involved for whatever reason. There is lazy loading available that reduces the performance penalty, but I haven't tried it out (not sure how it will mix with my nginx auth_request redirect setup). The whole thing makes me realize that I'm not sure I have a good story around saving images to be mixed with text content.

Plugin discovery

The TW plugin experience in the technical sense is stellar. If someone hosts their TW publicly and they have a plugin you like, you can click and drag it over to your TW and it Just Works™. Perhaps because of this easy p2p plugin sharing, however, there is very poor discoverability around the really great plugins out there. The whole community exists primarily in Google Groups, for God's sake.

Alternatives

Org-roam

If you're an emacs person, do check out org-roam.

David Gifford's TW adaptations

Someone who's twiddled with TW with the aim of producing UX somewhat like Roam without requiring user configuration to get there. His latest iteration is named Stroll. I don't care for it. That's because it's not a minimal plugin to TW focusing on specific functionality, but an attempt to develop an overall experience including multiple existing plugins to TW—and as the latter, it has all kinds of modifications to layout and such that I don't want to have to deal with in trying to hone in on my own preferences. I mention it because, as always, Your Mileage May Vary.

Nice Girls Don't Stay For Breakfast

Retrograde sassiness.

Yellow Eyes

Sort of loony, and while I'm not sure what the kids call metal these days, it certainly has the metal song structure in that the structure is all over the place. Proggy in that there is a lot of Intelligent chords / rhythm going on. Four slight headbangs through noise canceling headphones out of five.

Virus/Priest

Something kind of Cher-like about this, and I mean that in the best way. Others can attest to their consistency — careful in construction of a vibe while not mindlessly imitative — better than I.

Pretty/Terror Jr.

This was an anthem for me for a while in Seattle.

Galileo (Lead Into Gold Mix)

This is not a Puscifer recommendation. This was my eclipse song: sat out on the steps staring up at the moon while people would move by, look at me, follow my gaze, look back, look awkward...

Rad Drugz/MISSIO

Hipster youth pastor vibes? Yes, a bit. But it's somehow an oddly wholesome counterpart to e.g. Post Malone.

Cry Little Sister vs. Hello Zepp/Celldweller

Have I mentioned recently that I'm trash?

Veneno/Anitta

Don't sleep on her. Downtown??? Yes, it is

Freak

Hear that Kylie Minogue vocal/production touch on the chorus? No? Just me?

CEASE AND DESIST

Do you miss Aural Vampire? Do you enjoy mishearing song lyrics?

Don't Fuck With My Money

Listen to that synth bass though. So catchy! Disco vocals!

She Bad/Cardi B, YG

I think this guy is skeezy, but I don't really care because he has one of those Snoop Dogg voices that I want to have read textbooks as audio books.

We Appreciate Power/Grimes, HANA

Grimes, what the fuck happened to you? Elon Musk, really?

Evolution Once Again/Big Data

I know we all know them for that Joywave/Big Data thing, right? Anyway, this makes me think I'm going to hear vocal fry era Britney and then something else emerges! Excellent. Vocal harmonies! Lovely.

Bad Girl(s)

Lyrics a little edgelordy I'm Not Like The Other Girls, but the vibe is excellent.

Gravedigger

Somehow reminds me of Lana Del Rey, but if her maneating thing were less wistful and more aggro vampire.

Martyrs / Soen

So I like a lot of brainy metal, but I always favor ones that have some kind of satisfying chorus, and being able to bellow along “SPIRIT OF THE WATER” with this chorus is just great.

Munchhausen by Proxy

violin! unexpected synth break! feel like you are in a 22nd century carnival

Proper Funds

It's 92 seconds you won't want back.

hope is a dangerous thing for a woman like me to have

Let me be very explicit: being a young woman into Sylvia Plath is a cliche I have chosen to embrace, and Lana Del Rey has explicitly chosen to sing about, and I never stood a chance against it.

Love You Wrong

This is up there with “Tear You Apart” in terms of stuff that would get some kind of “Possessiveness” tag on AO3 but has such an unironic color that your inner teenager is deeply pleased.

Karchata

This is the kind of thing I like listening to while I program. >Oh, crow chicks are in the mountains, and girls are in the valley, >Cut and chop the trees, it's all green wherever you look, crow chicks. Ukrainian, Not Russian.

needy

The kids are all right.

Balalaika Metal

This is great for programming.

Scherzo No. 5 in Death Minor

Give it past the intro. Good instrumental one for programming playlists.

I've Had It

If I jogged, I would have this on that playlist.

12 Years

If ASMR is something I have ever experienced, it was with this song.

Keep It Real Dumb

Catchy, there's cowbell... Feels like good 2000s indie.

Spider Heard

I don't understand this but I love it.

Crazy Milk

It's like a classic Neyo song or something, but.... kawaii electronic music?

No Going Back

5/4, you know my weakness.

Nuts

Sort of a cross between Rico Nasty and Grimes? Somehow?

Dreezy

Are we all up on Dreezy by now?

Alina Baraz

Got into a relationship, got all into the music you put on playlists with euphemistic names, what a cliche

Millennial Falcon

Is the pun not enough? Sleazy guitar sound I love.

Belinda

I miss her. So this song that has her voice in it, I of course went nuts for.

Spectral Friends

“weeeee are spectral friends, dananaNAna no... you know....”

Lady Macbeth's Lament

Did you think you'd gotten away with so little stark female vocal acapella?

Creature Kind

This one is good to dance around to in your apartment.

Dale Gas/Snow Tha Product

I will never give up on her.

Can't Stop Now/Allie X

Queen.

Honorable Mentions

...baby one more time

introducing randomness into chaos: culture, oblique strategies, and tarot for engineers

In Tarot for Hackers, Christine Dodrill lays out a method of applying traditional cartomancy as a tool to help one debug. It's a cool post—go read it. Back now? The stereotypical response one might imagine: it's just random; why would you try to find meaning in randomness? Why would you introduce a random element upon which to perform exegesis? Especially in the context of debugging, when you have limited clues and an intrinsically imperfect understanding of the context, when you're already struggling to suss out what is signal and what is noise, why would you give yourself this random bit of noise to ponder?

I think there's a compelling answer.

Scott Alexander has written a very interesting review of the book The Secret of Our Success (by Joseph Henrich). The review is worth reading, and it's gotten the book on my queue, but here I'll just excerpt a small part.

A certain skepticism is warranted venturing into this; pop anthropology is a dangerous game. The status of the Removed Anthropological View is a self-assigned superiority that it's too easy to assume in one's normal human relations. You exist within the strictures of society; I have awareness of these strictures and therefore have an existence outside of them as well. (See also: cognitive bias, logical fallacies, anything psychoanalytical...) But if we give up all pop social science, none of us will have any interesting anecdotes at parties anymore, so best to strike a careful medium.

Alexander cites Henrich citing the Naskapi foragers of Labrador, Canada: If a hunter shows any bias to return to previous spots, where he or others have seen caribou, then the caribou can benefit (survive better) by avoiding those locations (where they have previously seen humans). Thus, the best hunting strategy requires randomizing. Can cultural evolution compensate for our cognitive inadequacies? Traditionally, Naskapi hunters decided where to go to hunt using divination and believed that the shoulder bones of caribou could point the way to success. To start the ritual, the shoulder blade was heated over hot coals in a way that caused patterns of cracks and burnt spots to form. This patterning was then read as a kind of map, which was held in a pre-specified orientation. The cracking patterns were (probably) essentially random from the point of view of hunting locations, since the outcomes depended on myriad details about the bone, fire, ambient temperature, and heating process. Thus, these divination rituals may have provided a crude randomizing device that helped hunters avoid their own decision-making biases.

That is: Divination can introduce something close to true randomness into decision-making where a random distribution is better for the society as a whole than the aggregation of many individuals' careful choices. Okay, sure, you may say. But that's an aggregate benefit. For individual engineers? For debugging? Can a random factor really bring us closer to understanding what may seem like chaos?

There's some “test of creativity” where you list all the uses you can think of for an object. Everything you can do with a brick: go! Your list is then rated: did you think only of the solidity of the brick? Its weight? Did you fail to consider what its sturdiness unlocks? Its color, to be ground for pigment? When your thinking becomes locked in to one idea or another, one perspective on brick-ness, it becomes harder to come up with other uses tied to aspects outside of that perspective. (Thermal properties of the brick: heat it in a fire and use it to keep a small space warm.)

But you can see here that I am using a mechanism to unlock my perspective: I am listing properties of the brick. By setting down one property of the brick and picking up an orthogonal one, I make it easier to think of a new use.

In the situation where I am trying to imagine what may have caused an issue, so that I may seek out new data to confirm or disconfirm our hypotheses (well, sorry, if you've reached Full Observability perhaps none of this applies to you), I can get similarly stuck. Perhaps I hypothesize that it's got to do with malformed input. This hypothesis, even if disproven, may influence my thinking to narrow to similar causes, and these can prove similarly fruitless. If I allow a random factor to guide me away from where my reasoned understanding is pointing me, I may have a better chance of coming across the real cause.

So when Dodrill suggests laying out Tarot cards to divine the nature of a bug, there are a lot of levels on which this strategy works well.

But something didn't connect with me about the post-not because I don't truck with divination, but because I truck heavily with it.

The thing that's really beautiful about astrology, about Tarot, about palm-reading: they have crystallized a way of looking at the world. Divide up all your concerns in life into weighted categories, please. How will you do it? What is the Huffman encoding of your life? If it were me, an embarrassing thing to admit is that I could probably devote one whole twelfth to The Explaining of Systems, as with whiteboarded box and line graphs, or awkwardly non-linear emails. In a sense, divination is a way of reminding me to not weight these concerns too heavily: family, travel, partnership, romance, money, friends... each of these has its slice of the medieval sky. Intellectual concerns, work success, they have lines on the palm, stars and houses-but their part of the distribution is limited. The transient metrics that can define my day at work are nowhere to be found: Latency is not given a Tarot card, nor CPU utilization a planet in the sky.

So I don't want to take the meanings of Tarot and apply them to my work, not when I rely on them to slap me in the face and remind me that the world is wider than failed unit test assertions. But as I've laid out: I think there's really something here for us engineers, be we debugging or designing.

We shall consult another resource: decades before my time, Brian Eno and Peter Schmidt wrote a deck of Oblique Strategies, which C J Silverio has made programmatically available on Github. This itself is kind of what we're looking for: cryptic prompts for further exploration of a problem. The format, a deck, suggests a similar cartomancy. But the phrases alone seem sterile to me; better to provide the subconscious mind more hooks to catch at insight.

So I present to you a mapping, courtesy of Darius K. on github's lovely Tarot JSON, of Tarot cards to strategies. I suggest joining this data to whichever fields of Darius's tarot interpretations seem like the right amount of “woo” to you, and to present yourself with a randomly chosen entry. (Those of you who are more advanced will probably want to draw a physical card and only refer back to these entries; this carries superior juju and will keep your coworkers on their toes.) Consider it carefully, and imagine that it contains, however cryptically, the solution you seek. Take it to an extreme, or apply it subtly. Exhaust its possibilities. Don't pull another card just because the one you have seems obviously inapplicable; consider it as if it must be applicable, if only from some other angle.

And with it, I wish you good fortune.