Home! |
I changed my mind - take me away from here!
Wayne's Wiki
Tip: use ctrl+F or find in page to navigate. Try IntroducingWaynesWiki to start...
Index
=====
- ChangeLog
- HowToWaynesWiki
- IdeasBehindWaynesWiki
- IntroducingWaynesWiki
- VimWaynesWikiAndYou
- WaynesWiki
- WhatIsWaynesWiki
- WhyNot
ChangeLog
=========
This Wiki is versioned with KeepAChangelog
[2026.10.05]
Initial page upload.
HowToWaynesWiki
===============
You don't *have* to, but using git, or some other version control system that's
designed to track & merge textual changes is a good way to keep your wiki
running smoothly.
I'm not going to teach you about git here, but if it were me then I would
simply have the `wiki` branch and then everyone would rebase their changes on
top of that branch. I would periodically pull people's forks and `--ff-only`
merge their branch in to accept their changes.
Anyway, a quick note on the TopicEntry formatting specified in WhatIsWaynesWiki.
ThisExampleWorks
================
ThisExampleDoesNot
------------------
# NeitherDoesThis
The first is the only *valid* TopicEntry. Technically speaking any of those
other options would be the same CommonMark/MarkDown formatting, but the other
two headers don't validate as WaynesWiki headers. WhyNot? Well, I needed to
draw the line somewhere and a double line is as good as any. You can use the
sub-headers within each section, or even a `# Header 1`. Honestly any valid
CommonMark goes!
Here's the step-by-step for creating your wiki. Start with:
```
Index
=====
- MyFirstWiki
MyFirstWiki
===========
This is the beginning of my wiki!
```
If you want to use Vim, see VimWaynesWikiAndYou.
The step-by-step when adding new TopicEntry is:
1. Add a new topic to the correct location in the Index.
2. Add the topic within the wiki at the correct location.
3. Add information to the topic entry.
Let's say we wanted to add `AnotherEntry`:
```
Index
=====
<!-- Step 1: add to the Index -->
- AnotherEntry
- MyFirstWiki
<!-- Step 2: add the topic -->
AnotherEntry
============
This is another entry
MyFirstWiki
===========
This is the beginning of my wiki!
But I've added AnotherEntry!
```
That's it. That's all it takes. Now you simply use your search tools to find the links between topics.
Simple!
IdeasBehindWaynesWiki
=====================
THe big ideas are in WhatIsWaynesWiki, but let's go ahead and re-enumerate them:
1. Text files are ubiquitous.
2. Everything can be a topic.
3. Links are powerful.
There are a few different organizational methods that I've come across, such as
ZettleKasten, JohnnyDecimal. And some inspirational ideas like Derek Sivers'
DailyJournal and TopicJournal.
There's also Apple's HyperCard and Sir Tim Berners-Lee's Hypertext Transfer
Protocol.
Also threading and table of contents as in the Get-It Done Guy's Master System.
The most fundamental piece I think is the idea from Sir Tim Berners-Lee that
*everything* can be a link. With .html quite literally any single
glyph/character including a space can link somewhere else. Within the modern
web a single *pixel* can link somewhere else. We don't need nearly as much
flexibility, though, really as long as it's some text, it can be a link, as
long as we can WikiText the word. And then it becomes a link. In Vim, it's
simply `*` for searching the word under the cursor.
Most other tools have similar shortcuts.
So if *anything* can be a link, then by virtue of using the WikiText as the
link that immediately gives us the reverse-link, so our links are roughly
bi-directional. And gives us the same advantage of ZettleKasten - by simply
searching for the WikiText, we can find all of the links to a particular topic.
Markdown, or CommonMark, especially with tables, gives us the ability to add a
boat load of functionality to our Wiki. We can use [external
links](https://example.com), add tables, we can even add images if we want! One
of the super cool bits -- With `[this style][of link]` we can have
```
[of link]: http://example.com?option=1
```
And we can also use tooling like `mermaidjs` for our code blocks to embed
graphs. Not that we *have* to use any kind of fancy graphical anything of
course! Which also makes WaynesWiki utterly fantastic for folks who need screen
readers, or other disability aids. But there's also nothing that's stopping us
from creating a fancy WikiMedia or c2-style wiki software on top of WaynesWiki.
It's very neat. There's probably some way to use RSS/Atom feeds to publish
entries or something.
IntroducingWaynesWiki
=====================
Welcome to WaynesWiki, arguably the wiki-est of them all! Ward Cunningham may have the original
and Wikipedia may have the largest, but mine is the simplest, consisting of a single text file.
Or in this case, a very weird HTML file.
You'll notice that this page is very simple, and not particularly sequential. That's by design.
See WhatIsWaynesWiki and HowToWaynesWiki for more.
VimWaynesWikiAndYou
===================
If you followed HowToWaynesWiki, then now you have a wiki! Here I'm going to
give you commands that you can run in Vim - but any editor should have similar
tools for sorting lines of text.
Let's go ahead and start with
```
Index
=====
- MyFirstWiki
MyFirstWiki
===========
This is my first wiki
```
Like in the how-to, we'll add `AnotherEntry`. You can type the following:
gg}o- AnotherEntry^[*vip:sort^Mnyyj*P2xVr=o^MTODO^M^[
(Note - ^[ means ctrl+[, or escape. ^M is ctrl+m, or enter)
But let's break that down:
1. Go to the top of the file - `gg`
2. Go down a paragraph - `}`
3. Add `- AnotherEntry` in the list (and then search for the word under the cursor) - `o- AnotherEntry^[*`
4. Select the whole list and sort it - `vip:sort^M`
5. Find "AnotherEntry", which should be the one in the list - `n`
6. Copy the line - `yy`
7. Go to the line below the our new topic. Search for that the entry (Usually this will be the first appearance but sometimes it isn't!) - `j*`
8. Paste the "- AnotherEntry" line above, remove the `- ` then copy/paste/replace with `=` - `P2xVr=`
9. Add whatever content you want - `o^MTODO^M^[`
That's it. That's all there is!
WaynesWiki
==========
See: WhatIsWaynesWiki
WhatIsWaynesWiki
================
WaynesWiki takes its inspiration from many sources. There are three primary ideas:
1. Text files are ubiquitous.
2. Everything can be a topic.
3. Links are powerful.
Almost everything that you consume is text. Sure, you probably spend a good
time on sites like YouTube, TikTok, or Instagram, but *so much* of the world is
text! And .txt files are pretty much the easiest thing. Even programs that power
your entire life are just .txt files by another name.
Now, the entirety of Wikipedia is like 20GB of compressed text in 2026, which is a massive
amount of data. But most wikis won't really grow that large. Even Ward
Cunningham's wiki at c2.com isn't that big, IIRC. I found a backup of it
somewhere and I think it was a few hundred MB. Now, I use the Vim TextEditor,
but honestly anything, including plain ol' Notepad, can probably handle
WaynesWiki just fine. There are a few bells and whistles that come baked into
Vim -- most other editors have them, I'm just not certain how to use them.
So text files are everywhere, and everyone can view and edit them as long as
they can figure out ASCII/UTF-8 encoding. I can't PredictTheFuture but it seems
likely that .txt files are FutureProof.
You can see just in here that pretty much any idea I have could stand alone on
its own. In Ward's Wiki, there is an idea that WikiText is all that you need to
do to create a new topic. That is, in fact, the case. When you're editing the
c2 wiki, you just CamelCase something and save the page, and if that something
exists already, like say WaynesWiki then you get a link that can take you to
that page. If the page does not exist then you get a link that can take you to
that page. It's just empty and tells you that it doesn't exist yet.
That (and a low barrier to editing) is all that's required to make the c2 wiki
insanely powerful. Wikipedia's software extended that idea. I simplified it. If
you were really into it, you could keep WaynesWiki on some paper. The
trick would be that you'd have a lot of CutAndPaste with scissors and, well,
paste. But you could do it!
And the linking, this WikiText stuff, is what takes this from a plain text file
and transforms it into WaynesWiki.
To explain in the simplest terms possible and reproducible:
WaynesWiki is a text file interpreted as CommonMark (with tables), that has an
Index at the top, comprised of a sorted list of KnownTopics. Each TopicEntry
consists of its name on a line by itself followed by a of the same length full
of `=`, or the ASCII char 61, and that line is followed by a blank line.
Anything after these lines is part of the TopicEntry, up until the next header.
The spec can be slightly more formalized, but that's the core of it. If you use
Linux, here's a quick tool to find all the WikiText in your wiki:
cat wiki.txt | grep -E '\b([A-Z][a-z]+){2,}\b' -o | sort | uniq
Or you can open up the JS console here in your browser and run:
[...new Set(document.body.innerText.match(/\b([A-Z][a-z]+){2,}\b/g))]
Those incantations might look like magic, but they're surprisingly
straightforward. For a step-by-step guide, see HowToWaynesWiki
WhyNot
======
I could break this down into several other comparsions like this:
- WhyNotC2Wiki
- WhyNotGitHubWiki
- WhyNotGitLabWiki
- WhyNotMediaWiki
But for now it's pretty reasonable to have this all in one TopicEntry. Because
generally, each one of the objections boil down to all of these require some
special software or some server access. With WaynesWiki you only intermittently
need server access, and you could also just use SneakerNet.