Background: #fff
Foreground: #000
PrimaryPale: #8cf
PrimaryLight: #18f
PrimaryMid: #04b
PrimaryDark: #014
SecondaryPale: #ffc
SecondaryLight: #fe8
SecondaryMid: #db4
SecondaryDark: #841
TertiaryPale: #eee
TertiaryLight: #ccc
TertiaryMid: #999
TertiaryDark: #666
Error: #f88
<div class='toolbar' macro='toolbar [[ToolbarCommands::EditToolbar]]'></div>
<div class='title' macro='view title'></div>
<div class='editor' macro='edit title'></div>
<div macro='annotations'></div>
<div class='editor' macro='edit text'></div>
<div class='editor' macro='edit tags'></div><div class='editorFooter'><span macro='message views.editor.tagPrompt'></span><span macro='tagChooser excludeLists'></span></div>
To get started with this blank [[TiddlyWiki]], you'll need to modify the following tiddlers:
* [[SiteTitle]] & [[SiteSubtitle]]: The title and subtitle of the site, as shown above (after saving, they will also appear in the browser title bar)
* [[MainMenu]]: The menu (usually on the left)
* [[DefaultTiddlers]]: Contains the names of the tiddlers that you want to appear when the TiddlyWiki is opened
You'll also need to enter your username for signing your edits: <<option txtUserName>>
<link rel='alternate' type='application/rss+xml' title='RSS' href='index.xml' />
These [[InterfaceOptions]] for customising [[TiddlyWiki]] are saved in your browser

Your username for signing your edits. Write it as a [[WikiWord]] (eg [[JoeBloggs]])

<<option txtUserName>>
<<option chkSaveBackups>> [[SaveBackups]]
<<option chkAutoSave>> [[AutoSave]]
<<option chkRegExpSearch>> [[RegExpSearch]]
<<option chkCaseSensitiveSearch>> [[CaseSensitiveSearch]]
<<option chkAnimate>> [[EnableAnimations]]

Also see [[AdvancedOptions]]
<div class='header' role='banner' macro='gradient vert [[ColorPalette::PrimaryLight]] [[ColorPalette::PrimaryMid]]'>
<div class='headerShadow'>
<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;
<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
<div class='headerForeground'>
<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;
<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
<div id='mainMenu' role='navigation' refresh='content' tiddler='MainMenu'></div>
<div id='sidebar'>
<div id='sidebarOptions' role='navigation' refresh='content' tiddler='SideBarOptions'></div>
<div id='sidebarTabs' role='complementary' refresh='content' force='true' tiddler='SideBarTabs'></div>
<div id='displayArea' role='main'>
<div id='messageArea' class='messageArea'></div>
<div id='tiddlerDisplay'></div>
body {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];}

a {color:[[ColorPalette::PrimaryMid]];}
a:hover {background-color:[[ColorPalette::PrimaryMid]]; color:[[ColorPalette::Background]];}
a img {border:0;}

h1,h2,h3,h4,h5,h6 {color:[[ColorPalette::SecondaryDark]]; background:transparent;}
h1 {border-bottom:2px solid [[ColorPalette::TertiaryLight]];}
h2,h3 {border-bottom:1px solid [[ColorPalette::TertiaryLight]];}

.button {color:[[ColorPalette::PrimaryDark]]; border:1px solid [[ColorPalette::Background]];}
.button:hover {color:[[ColorPalette::PrimaryDark]]; background:[[ColorPalette::SecondaryLight]]; border-color:[[ColorPalette::SecondaryMid]];}
.button:active {color:[[ColorPalette::Background]]; background:[[ColorPalette::SecondaryMid]]; border:1px solid [[ColorPalette::SecondaryDark]];}

.header {background:[[ColorPalette::PrimaryMid]];}
.headerShadow {color:[[ColorPalette::Foreground]];}
.headerShadow a {font-weight:normal; color:[[ColorPalette::Foreground]];}
.headerForeground {color:[[ColorPalette::Background]];}
.headerForeground a {font-weight:normal; color:[[ColorPalette::PrimaryPale]];}

.tabSelected {color:[[ColorPalette::PrimaryDark]];
	border-left:1px solid [[ColorPalette::TertiaryLight]];
	border-top:1px solid [[ColorPalette::TertiaryLight]];
	border-right:1px solid [[ColorPalette::TertiaryLight]];
.tabUnselected {color:[[ColorPalette::Background]]; background:[[ColorPalette::TertiaryMid]];}
.tabContents {color:[[ColorPalette::PrimaryDark]]; background:[[ColorPalette::TertiaryPale]]; border:1px solid [[ColorPalette::TertiaryLight]];}
.tabContents .button {border:0;}

#sidebar {}
#sidebarOptions input {border:1px solid [[ColorPalette::PrimaryMid]];}
#sidebarOptions .sliderPanel {background:[[ColorPalette::PrimaryPale]];}
#sidebarOptions .sliderPanel a {border:none;color:[[ColorPalette::PrimaryMid]];}
#sidebarOptions .sliderPanel a:hover {color:[[ColorPalette::Background]]; background:[[ColorPalette::PrimaryMid]];}
#sidebarOptions .sliderPanel a:active {color:[[ColorPalette::PrimaryMid]]; background:[[ColorPalette::Background]];}

.wizard { background:[[ColorPalette::PrimaryPale]]; }
.wizard__title    { color:[[ColorPalette::PrimaryDark]]; border:none; }
.wizard__subtitle { color:[[ColorPalette::Foreground]]; border:none; }
.wizardStep { background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]]; }
.wizardStep.wizardStepDone {background:[[ColorPalette::TertiaryLight]];}
.wizardFooter {background:[[ColorPalette::PrimaryPale]];}
.wizardFooter .status {background:[[ColorPalette::PrimaryDark]]; color:[[ColorPalette::Background]];}
.wizard .button {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::SecondaryLight]]; border: 1px solid;
	border-color:[[ColorPalette::SecondaryPale]] [[ColorPalette::SecondaryDark]] [[ColorPalette::SecondaryDark]] [[ColorPalette::SecondaryPale]];}
.wizard .button:hover {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::Background]];}
.wizard .button:active {color:[[ColorPalette::Background]]; background:[[ColorPalette::Foreground]]; border: 1px solid;
	border-color:[[ColorPalette::PrimaryDark]] [[ColorPalette::PrimaryPale]] [[ColorPalette::PrimaryPale]] [[ColorPalette::PrimaryDark]];}

.wizard .notChanged {background:transparent;}
.wizard .changedLocally {background:#80ff80;}
.wizard .changedServer {background:#8080ff;}
.wizard .changedBoth {background:#ff8080;}
.wizard .notFound {background:#ffff80;}
.wizard .putToServer {background:#ff80ff;}
.wizard .gotFromServer {background:#80ffff;}

.messageArea { border:1px solid [[ColorPalette::SecondaryMid]]; background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]]; }
.messageToolbar__button { color:[[ColorPalette::PrimaryMid]]; background:[[ColorPalette::SecondaryPale]]; border:none; }
.messageToolbar__button_withIcon { background:inherit; }
.messageToolbar__button_withIcon:active { background:inherit; border:none; }
.messageToolbar__icon { fill:[[ColorPalette::TertiaryDark]]; }
.messageToolbar__icon:hover { fill:[[ColorPalette::Foreground]]; }

.popupTiddler {background:[[ColorPalette::TertiaryPale]]; border:2px solid [[ColorPalette::TertiaryMid]];}

.popup {background:[[ColorPalette::TertiaryPale]]; color:[[ColorPalette::TertiaryDark]]; border-left:1px solid [[ColorPalette::TertiaryMid]]; border-top:1px solid [[ColorPalette::TertiaryMid]]; border-right:2px solid [[ColorPalette::TertiaryDark]]; border-bottom:2px solid [[ColorPalette::TertiaryDark]];}
.popup hr {color:[[ColorPalette::PrimaryDark]]; background:[[ColorPalette::PrimaryDark]]; border-bottom:1px;}
.popup li.disabled {color:[[ColorPalette::TertiaryMid]];}
.popup li a, .popup li a:visited {color:[[ColorPalette::Foreground]]; border: none;}
.popup li a:hover {background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]]; border: none;}
.popup li a:active {background:[[ColorPalette::SecondaryPale]]; color:[[ColorPalette::Foreground]]; border: none;}
.popupHighlight {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];}
.listBreak div {border-bottom:1px solid [[ColorPalette::TertiaryDark]];}

.tiddler .defaultCommand {font-weight:bold;}

.shadow .title {color:[[ColorPalette::TertiaryDark]];}

.title {color:[[ColorPalette::SecondaryDark]];}
.subtitle {color:[[ColorPalette::TertiaryDark]];}

.toolbar {color:[[ColorPalette::PrimaryMid]];}
.toolbar a {color:[[ColorPalette::TertiaryLight]];}
.selected .toolbar a {color:[[ColorPalette::TertiaryMid]];}
.selected .toolbar a:hover {color:[[ColorPalette::Foreground]];}

.tagging, .tagged {border:1px solid [[ColorPalette::TertiaryPale]]; background-color:[[ColorPalette::TertiaryPale]];}
.selected .tagging, .selected .tagged {background-color:[[ColorPalette::TertiaryLight]]; border:1px solid [[ColorPalette::TertiaryMid]];}
.tagging .listTitle, .tagged .listTitle {color:[[ColorPalette::PrimaryDark]];}
.tagging .button, .tagged .button {border:none;}

.footer {color:[[ColorPalette::TertiaryLight]];}
.selected .footer {color:[[ColorPalette::TertiaryMid]];}

.error, .errorButton {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::Error]];}
.warning {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::SecondaryPale]];}
.lowlight {background:[[ColorPalette::TertiaryLight]];}

.zoomer {background:none; color:[[ColorPalette::TertiaryMid]]; border:3px solid [[ColorPalette::TertiaryMid]];}

.imageLink, #displayArea .imageLink {background:transparent;}

.annotation {background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]]; border:2px solid [[ColorPalette::SecondaryMid]];}

.viewer .listTitle {list-style-type:none; margin-left:-2em;}
.viewer .button {border:1px solid [[ColorPalette::SecondaryMid]];}
.viewer blockquote {border-left:3px solid [[ColorPalette::TertiaryDark]];}

.viewer table, table.twtable {border:2px solid [[ColorPalette::TertiaryDark]];}
.viewer th, .viewer thead td, .twtable th, .twtable thead td {background:[[ColorPalette::SecondaryMid]]; border:1px solid [[ColorPalette::TertiaryDark]]; color:[[ColorPalette::Background]];}
.viewer td, .viewer tr, .twtable td, .twtable tr {border:1px solid [[ColorPalette::TertiaryDark]];}

.viewer pre {border:1px solid [[ColorPalette::SecondaryLight]]; background:[[ColorPalette::SecondaryPale]];}
.viewer code {color:[[ColorPalette::SecondaryDark]];}
.viewer hr {border:0; border-top:dashed 1px [[ColorPalette::TertiaryDark]]; color:[[ColorPalette::TertiaryDark]];}

.highlight, .marked {background:[[ColorPalette::SecondaryLight]];}

.editor input {border:1px solid [[ColorPalette::PrimaryMid]];}
.editor textarea {border:1px solid [[ColorPalette::PrimaryMid]]; width:100%;}
.editorFooter {color:[[ColorPalette::TertiaryMid]];}
.readOnly {background:[[ColorPalette::TertiaryPale]];}

#backstageArea {background:[[ColorPalette::Foreground]]; color:[[ColorPalette::TertiaryMid]];}
#backstageArea a {background:[[ColorPalette::Foreground]]; color:[[ColorPalette::Background]]; border:none;}
#backstageArea a:hover {background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]]; }
#backstageArea a.backstageSelTab {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];}
#backstageButton a {background:none; color:[[ColorPalette::Background]]; border:none;}
#backstageButton a:hover {background:[[ColorPalette::Foreground]]; color:[[ColorPalette::Background]]; border:none;}
#backstagePanel {background:[[ColorPalette::Background]]; border-color: [[ColorPalette::Background]] [[ColorPalette::TertiaryDark]] [[ColorPalette::TertiaryDark]] [[ColorPalette::TertiaryDark]];}
.backstagePanelFooter .button {border:none; color:[[ColorPalette::Background]];}
.backstagePanelFooter .button:hover {color:[[ColorPalette::Foreground]];}
#backstageCloak {background:[[ColorPalette::Foreground]]; opacity:0.6; filter:alpha(opacity=60);}
* html .tiddler {height:1%;}

body {font-size:.75em; font-family:arial,helvetica; margin:0; padding:0;}

h1,h2,h3,h4,h5,h6 {font-weight:bold; text-decoration:none;}
h1,h2,h3 {padding-bottom:1px; margin-top:1.2em;margin-bottom:0.3em;}
h4,h5,h6 {margin-top:1em;}
h1 {font-size:1.35em;}
h2 {font-size:1.25em;}
h3 {font-size:1.1em;}
h4 {font-size:1em;}
h5 {font-size:.9em;}

hr {height:1px;}

a {text-decoration:none;}

dt {font-weight:bold;}

ol {list-style-type:decimal;}
ol ol {list-style-type:lower-alpha;}
ol ol ol {list-style-type:lower-roman;}
ol ol ol ol {list-style-type:decimal;}
ol ol ol ol ol {list-style-type:lower-alpha;}
ol ol ol ol ol ol {list-style-type:lower-roman;}
ol ol ol ol ol ol ol {list-style-type:decimal;}

.txtOptionInput {width:11em;}

#contentWrapper .chkOptionInput {border:0;}

.externalLink {text-decoration:underline;}

.indent {margin-left:3em;}
.outdent {margin-left:3em; text-indent:-3em;}
code.escaped {white-space:nowrap;}

.tiddlyLinkExisting {font-weight:bold;}
.tiddlyLinkNonExisting {font-style:italic;}

/* the 'a' is required for IE, otherwise it renders the whole tiddler in bold */
a.tiddlyLinkNonExisting.shadow {font-weight:bold;}

#mainMenu .tiddlyLinkExisting,
	#mainMenu .tiddlyLinkNonExisting,
	#sidebarTabs .tiddlyLinkNonExisting {font-weight:normal; font-style:normal;}
#sidebarTabs .tiddlyLinkExisting {font-weight:bold; font-style:normal;}

.header {position:relative;}
.header a:hover {background:transparent;}
.headerShadow {position:relative; padding:4.5em 0 1em 1em; left:-1px; top:-1px;}
.headerForeground {position:absolute; padding:4.5em 0 1em 1em; left:0; top:0;}

.siteTitle {font-size:3em;}
.siteSubtitle {font-size:1.2em;}

#mainMenu {position:absolute; left:0; width:10em; text-align:right; line-height:1.6em; padding:1.5em 0.5em 0.5em 0.5em; font-size:1.1em;}

#sidebar {position:absolute; right:3px; width:16em; font-size:.9em;}
#sidebarOptions {padding-top:0.3em;}
#sidebarOptions a {margin:0 0.2em; padding:0.2em 0.3em; display:block;}
#sidebarOptions input {margin:0.4em 0.5em;}
#sidebarOptions .sliderPanel {margin-left:1em; padding:0.5em; font-size:.85em;}
#sidebarOptions .sliderPanel a {font-weight:bold; display:inline; padding:0;}
#sidebarOptions .sliderPanel input {margin:0 0 0.3em 0;}
#sidebarTabs .tabContents {width:15em; overflow:hidden;}

.wizard { padding:0.1em 2em 0; }
.wizard__title    { font-size:2em; }
.wizard__subtitle { font-size:1.2em; }
.wizard__title, .wizard__subtitle { font-weight:bold; background:none; padding:0; margin:0.4em 0 0.2em; }
.wizardStep { padding:1em; }
.wizardFooter { padding:0.8em 0.4em 0.8em 0; }
.wizardFooter .status { padding:0.2em 0.7em; margin-left:0.3em; }
.wizardFooter .button { margin:0.5em 0 0; font-size:1.2em; padding:0.2em 0.5em; }

.messageArea { position:fixed; top:2em; right:0; margin:0.5em; padding:0.7em 1em; z-index:2000; }
.messageToolbar { text-align:right; padding:0.2em 0; }
.messageToolbar__button { text-decoration:underline; }
.messageToolbar__icon { height: 1em; }
.messageArea__text a { text-decoration:underline; }

.tiddlerPopupButton {padding:0.2em;}
.popupTiddler {position: absolute; z-index:300; padding:1em; margin:0;}

.popup {position:absolute; z-index:300; font-size:.9em; padding:0; list-style:none; margin:0;}
.popup .popupMessage {padding:0.4em;}
.popup hr {display:block; height:1px; width:auto; padding:0; margin:0.2em 0;}
.popup li.disabled {padding:0.4em;}
.popup li a {display:block; padding:0.4em; font-weight:normal; cursor:pointer;}
.listBreak {font-size:1px; line-height:1px;}
.listBreak div {margin:2px 0;}

.tabset {padding:1em 0 0 0.5em;}
.tab {margin:0 0 0 0.25em; padding:2px;}
.tabContents {padding:0.5em;}
.tabContents ul, .tabContents ol {margin:0; padding:0;}
.txtMainTab .tabContents li {list-style:none;}
.tabContents li.listLink { margin-left:.75em;}

#contentWrapper {display:block;}
#splashScreen {display:none;}

#displayArea {margin:1em 17em 0 14em;}

.toolbar {text-align:right; font-size:.9em;}

.tiddler {padding:1em 1em 0;}

.missing .viewer,.missing .title {font-style:italic;}

.title {font-size:1.6em; font-weight:bold;}

.missing .subtitle {display:none;}
.subtitle {font-size:1.1em;}

.tiddler .button {padding:0.2em 0.4em;}

.tagging {margin:0.5em 0.5em 0.5em 0; float:left; display:none;}
.isTag .tagging {display:block;}
.tagged {margin:0.5em; float:right;}
.tagging, .tagged {font-size:0.9em; padding:0.25em;}
.tagging ul, .tagged ul {list-style:none; margin:0.25em; padding:0;}
.tagClear {clear:both;}

.footer {font-size:.9em;}
.footer li {display:inline;}

.annotation {padding:0.5em; margin:0.5em;}

* html .viewer pre {width:99%; padding:0 0 1em 0;}
.viewer {line-height:1.4em; padding-top:0.5em;}
.viewer .button {margin:0 0.25em; padding:0 0.25em;}
.viewer blockquote {line-height:1.5em; padding-left:0.8em;margin-left:2.5em;}
.viewer ul, .viewer ol {margin-left:0.5em; padding-left:1.5em;}

.viewer table, table.twtable {border-collapse:collapse; margin:0.8em 1.0em;}
.viewer th, .viewer td, .viewer tr,.viewer caption,.twtable th, .twtable td, .twtable tr,.twtable caption {padding:3px;}
table.listView {font-size:0.85em; margin:0.8em 1.0em;}
table.listView th, table.listView td, table.listView tr {padding:0 3px 0 3px;}

.viewer pre {padding:0.5em; margin-left:0.5em; font-size:1.2em; line-height:1.4em; overflow:auto;}
.viewer code {font-size:1.2em; line-height:1.4em;}

.editor {font-size:1.1em;}
.editor input, .editor textarea {display:block; width:100%; box-sizing: border-box; font:inherit;}
.editorFooter {padding:0.25em 0; font-size:.9em;}
.editorFooter .button {padding-top:0; padding-bottom:0;}

.fieldsetFix {border:0; padding:0; margin:1px 0px;}

.zoomer {font-size:1.1em; position:absolute; overflow:hidden;}
.zoomer div {padding:1em;}

* html #backstage {width:99%;}
* html #backstageArea {width:99%;}
#backstageArea {display:none; position:relative; overflow: hidden; z-index:150; padding:0.3em 0.5em;}
#backstageToolbar {position:relative;}
#backstageArea a {font-weight:bold; margin-left:0.5em; padding:0.3em 0.5em;}
#backstageButton {display:none; position:absolute; z-index:175; top:0; right:0;}
#backstageButton a {padding:0.1em 0.4em; margin:0.1em;}
#backstage {position:relative; width:100%; z-index:50;}
#backstagePanel { display:none; z-index:100; position:absolute; width:90%; margin-left:3em; }
.backstagePanelFooter {padding-top:0.2em; float:right;}
.backstagePanelFooter a {padding:0.2em 0.4em;}
#backstageCloak {display:none; z-index:20; position:absolute; width:100%; height:100px;}

.whenBackstage {display:none;}
.backstageVisible .whenBackstage {display:block;}
StyleSheet for use when a translation requires any css style changes.
This StyleSheet can be used directly by languages such as Chinese, Japanese and Korean which need larger font sizes.
body {font-size:0.8em;}
#sidebarOptions {font-size:1.05em;}
#sidebarOptions a {font-style:normal;}
#sidebarOptions .sliderPanel {font-size:0.95em;}
.subtitle {font-size:0.8em;}
.viewer table.listView {font-size:0.95em;}
@media print {
#mainMenu, #sidebar, .messageArea, .toolbar, #backstageButton, #backstageArea {display: none !important;}
#displayArea {margin: 1em 1em 0em;}
noscript {display:none;} /* Fixes a feature in Firefox where print preview displays the noscript content */
<div class='toolbar' role='navigation' macro='toolbar [[ToolbarCommands::ViewToolbar]]'></div>
<div class='title' macro='view title'></div>
<div class='subtitle'><span macro='view modifier link'></span>, <span macro='view modified date'></span> (<span macro='message views.wikified.createdPrompt'></span> <span macro='view created date'></span>)</div>
<div class='tagging' macro='tagging'></div>
<div class='tagged' macro='tags'></div>
<div class='viewer' macro='view text wikified'></div>
<div class='tagClear'></div>
[[Alex Schroeder|]] is the creator of a popular wiki engine, as well as a prolific contributor to CommunityWiki and the larger movement. He posts a lot about tabletop roleplaying.
Like the name suggests, [[this is not a wiki|]]. Or is it? In actual use it's proving remarkably quick and easy. It's also made to export websites, even though you have to be at your computer to make changes. In the end I called it "a helper for small websites". In any event it's more wiki-like than any [[SSG|]].
As of [[7 May 2022|]], Bouncepaw is one of the few people trying to keep wikis alive as a community and movement, not just web apps. His website is called [[Melanocarpa|]].
It took me ten years to make a second [[wiki engine]], and what came out was a mirror universe version of WabiSabi:

* informed by modern European architecture instead of old Japanese aesthetics;
* backed by an in-memory database instead of many little text files;
* driven by a markup language based on simple text substitutions instead of regular expressions.

About the only thing left is the secret-based authentication and overall architecture, though considerably cleaned up. Not just because I'm a better programmer now, either.
"Content management system" sounds so pompous, but it's just a web app that lets people work on a website right from the browser, without access to the server or knowledge of how to make and upload pages. At least that's the theory; in practice, laypeople still won't touch them, while those who are willing to get technical can just as easily learn HTML and CSS. In fact they used to do it for fun in the Geocities era, and lately it's becoming a thing again.

Use of a CMS puts a burden of performance and security on the server, but there are advantages as well: automation of repetitive tasks like ordering and tagging blog posts, or the ability to post updates from anywhere, for example with a mobile device.

[[Wikis]] were the original CMS. The more conventional kind, exemplified by WordPress, peaked roughly between 2005 and 2015, and is now suffering a backlash.
> “Barbarism is the natural state of mankind,” the borderer said, still staring somberly at the Cimmerian. “Civilization is unnatural. It is a whim of circumstance. And barbarism must always ultimately triumph.”

-- Robert E. Howard, //Beyond the Black River//
> Civilized men are more discourteous than savages because they know they can be impolite without having their skulls split, as a general thing.

-- Robert E. Howard, //The Tower of the Elephant//
Background: #fff5ee
Foreground: #2f4f4f
PrimaryPale: #87cefa
PrimaryLight: #1e90ff
PrimaryMid: #0000cd
PrimaryDark: #00008b
SecondaryPale: #fffacd
SecondaryLight: #ffe4b5
SecondaryMid: #d2b48c
SecondaryDark: #8b4513
TertiaryPale: #dcdcdc
TertiaryLight: #c0c0c0
TertiaryMid: #a9a9a9
TertiaryDark: #696969
Error: #fa8072
[[CommunityWiki|]] is just what it says on the tin. In their own words:

> We talk about communities both online and offline: management, teaching, conflicts, mediation, and some tech talk mostly about tools used for online communities.

There's a lot, and what there is often strikes me as old and naive. Still fascinating. And hey, I actually found something to add recently.
There's magic in the world. Not literal magic. The metaphorical kind. But it's there.

Miracles happen. Not the literal kind. But they do happen.

You get signs from above. Not the real deal. But pay attention and you'll notice the universe speaks to you.

To deny all that isn't reason, it's reductionism. And smarts without wisdom are a castle built on shifting sands.
It might seem odd to call [[Domino|]] (from a wiki; in fact it looks and works more like a mind mapper. But it was explicitly inspired by TiddlyWiki and works in much the same way, allowing people to quickly take short notes and organize them; it's a good example of the strange new directions the concept can take when not bound to the old ways.
Through the magic of Mastodon hashtags, I learned about [[Feather Wiki|]] as it was taking shape. It borrows the best ideas from TiddlyWiki, but places them in a tiny package (65kb or less!) made with modern web design sensibilities. So far it's great for books, and already very usable.

[[Bouncepaw]] has [[more to say about it|]]. And Scott Nesbitt of The Plain Text Project fame wrote an [[in-depth review|]].
[[That would be me|]]: just a lonely orange cat watching the moon from the windowsill on a starry night.

If you're looking for cool wiki people, try [[Alex Schroeder]] and/or [[Bouncepaw]].
One quick trip and you can't help but notice the differences...

German railroads: you go across the country, switching three trains in the process, and you don't even speak the language; everything goes without a hitch.
Romanian railroads: the actual train number doesn't match what's on the ticket. You end up running back and forth between the information desk and the platform. Luckily, the train is late.

A German's idea of a low-end train: no electrical outlets in the cars.
A Romanian's idea of a decent train: the toilets actually work.

A German's idea of clean streets: "What is this 'dust' you speak of?"
A Romanian's idea of clean streets: we don't have any idea. Really.

Germans do everything by the book, no matter how unimportant it may seem.
Romanians do nothing by the book, not even the most important stuff.

Q: How do you recognize a Romanian in a German train station?
A: It's the guy with too many bags who doesn't look where he's going.

Have you laughed? Good. Laughing is good. But remember, it's all true.
At dusk, in the park,
The wind blows dry leaves over
Empty alleyways.

Walk the neighborhood,
Camera in hand, seeking
The flowering trees.

Ducks flying above
A pond where lusty frogs chant;
Water lilies bloom.

Sunbeams and silence;
Inside, green letters scroll across
A computer screen.

Kids play in the grass.
Anxious mothers watch them
Slowly growing up.

Night in the city.
Above, lights flicker and shift
Like souls in the wind.
And I mean in an EU country, where top students (if not all students) can actually study for free. But there's still a lot of money involved, because the state pays their tuition instead. Which is why teachers will insist that after getting your bachelor's you also go for a master's ...then a Ph.D. ...then a post-doctoral school ...after which they'll try to recruit you among their ranks so you can perpetuate this long-running con scheme.

And in the mean time, all those teachers have secure, well-paid jobs. See?

But sure, they'll insist it's all for love of knowledge. Don't fall for it.

(Edit: [[a similar sentiment|]] was expressed more recently on Mastodon.)
It's bitter humor, but it's all I have. Someone once told me, "I laughed". That felt good.

[[This one|Germany vs. Romania]] and [[this other one|Signs your first day at work is also the last]] are real stories, while [[a third|Videogames versus other media]] might as well be. That's scary.
No, seriously. //Of course// posts are just going to pile up if I treat them as stand-alone and largely unchanging. And post summaries become baggage once they slide off the front page. As for archives, they just tend to grow forever: a different kind of pile-up.

The post should be the summary. Any details should be relegated to a more permanent page linked from the blog: a corner of your digital garden, that you can tend at leisure over time. //That// is how you reconcile the timely and the perennial, not by forcing wikis to double as blogs or other "clever" schemes.
📖 [[Writing]]
🚍 [[Wikis]]
😅 [[Humor]]
💭 [[Thoughts]]
📜 [[Quotes]]
🦄 [[Org file|]]
Perhaps the biggest and most famous [[outliner]] is [[Org Mode|]]. Mostly, it has originated the org file format, nowadays supported by many other apps. This wiki for example is backed up to an org file; other people go even farther, using one to generate their entire website. That requires some imagination, because outliner documents remain very linear, no matter how easy it is to rearrange sections.
I used [[PmWiki|]] for ten years, then tore it all down.

I tried going back later. Made [[several skins|]] for it. They're still good and useful. Couldn't get used to the software again though.

Can't help but notice that nowadays PmWiki is advertised as a CMS. It's not the only [[wiki engine]] to go that way. Wonder if that's really helping.
We all have our favorites. The hard part is picking just a few.
I haven't had a full-time job for a year now (ed: as of 2010-10-19), and while I'm not 100% opposed to the idea, the latest attempt to get one reminded me in a rather painful way about the reasons I hate full-time jobs. If this happens to you on the first day, consider running away screaming:

* Nobody has their own workstation; they keep moving between computers like guests at the Mad Hatter's table.
* When the lights go out, they have a difficult time accepting the simple reality that they're forced to take a break, and run around like headless chickens.
* The boss looks funny at you if you're sitting still even for a moment.
* When the lights go out at the other office, the same boss brings everyone over. Never mind there aren't enough chairs, desks... or electrical sockets for the extra laptops.

And no, don't buy the excuse that it was an unusually chaotic day. Reasonable people would easily deal with chaos by slowing down, sitting back and taking things one at a time. Trust me, the above bullet points indicate a systemic problem. Unless you enjoy stress (some people do), just stay away. Your health (mental and otherwise) has no price.
from the cutting room floor
body { Font-size: 1em; Margin-bottom: 1ex; }
> I've seen things you people wouldn't believe. Attack ships on fire off the shoulder of Orion. I watched c-beams glitter in the dark near the Tannhäuser Gate. All those moments will be lost in time, like tears in rain.
> Time... to die.
-- Rutger Hauer as Roy Batty, //Blade Runner// (1982)

Source: [[WikiQuote|]]
>    Thereafter he walked very carefully, with his eyes on the road, and when he saw a tiny ant toiling by he would step over it, so as not to harm it.  The Tin Woodman knew very well he had no heart, and therefore he took great care never to be cruel or unkind to anything.
>    "You people with hearts," he said, "have something to guide you, and need never do wrong; but I have no heart, and so I must be very careful. When Oz gives me a heart of course I needn't mind so much."

-- Frank L. Baum, //The Wonderful Wizard of Oz//
! Apropos of nothing

These are some random thoughts I wrote down over the first half of 2020, then moved them around so much (for lack of a good home) that the exact dates are long gone. Since then I managed to make one into a [[blog post|]], at least.
This part of my website is made with [[TiddlyWiki Classic|]]. Seemed like sci-fi when it first came out, over ten years ago as of this writing: a whole wiki in a single web page, that you can save straight from the browser and copy around freely. Back then I still trusted in standards, and the web's future. Everyone did; things inspired confidence at the time.

Not anymore, hence why this wiki is backed by a plain text file (see in the sidebar). But I'm enjoying it while it lasts.
Artist: I made a watercolor of teenagers at a picnic. See how the transparency of the paints highlights the interplay of light and shadow on their faces?

Composer: I came up with a short symphonic piece on the same theme. Hear this bit? Note how the flutes can suggest either birds chirping or the happy chatter of carefree teens.

Playwright: I wrote a romantic comedy about teenagers at a picnic accidentally revealing the crushes the have on each other.

The other two: Nice! When can we see it?

Game developer: (smugly) Whatever, check this out: We just finished an in-house graphics engine that takes advantage of the new mega-texture multi-layering via dynamic shader chaining of the new ~HS7979xTreme+ GPU. You can look at a tree and see every single leaf dancing on the breeze.

Artist: (impressed) So you're making an interactive piece about the beauty of trees?

Game developer: No way, that would be boring, man! It's a game where you shoot bad guys in the face.

The other three: ...

Game developer: What? You should see the ragdoll physics!
[[From Wikipedia, the free encyclopedia|]]:

> In traditional Japanese aesthetics, wabi-sabi (侘寂) is a world view centered on the acceptance of transience and imperfection. The aesthetic is sometimes described as one of appreciating beauty that is "imperfect, impermanent, and incomplete" in nature.

I named my first [[wiki engine]] after this concept, because programmers are quick to appropriate East Asian philosophy; it's kind of a tradition in our field. (In fact, "wiki" is also appropriated, from a whole other culture in the same region.) In my defense, it felt right at the time.

The irony is how my second engine, made 10 years later, is called BrutalWiki instead. Pretty much the polar opposite, despite having started from the same codebase. Or is it?

Either way, the original is long gone. A descendant named [[WabiSabi960|]] survives as of this writing, but hasn't been updated since 2012.
I don't get why people hate them. It's camel case by any other name: the recommended way to write hashtags nowadays (because it helps screen readers). Arguably they make for stilted text when forced where they don't belong; then again, [[cybertext]] has its own affordances.
Back in 1995, a [[wiki]] was a specific kind of web app, but nowadays the term denotes a broad range of documents. That's a good thing. What we do matters more than details of implementation. If an org file is used as a personal wiki, then it is a wiki. In fact many apps are [[wiki-like]] at the very least.
! Notes
* People not used to wikis (even techies) get spooked by WikiWords and flag them as typos. Use free links.
* The Don't Repeat Yourself principle, a.k.a. DRY, sounds great... until your original source poofs. Redundancy is resilient.
* I once wrote that a wiki without the community is just an overly technical [[CMS]]. Even so, nothing can match the immediacy of a wiki. It matters.
* My first [[wiki engine]] was called WabiSabi. My second is named Brutal. What a difference ten years make.
* I love reading what wiki theorists wrote back when Wikipedia was new. But to someone from the distant future of 2021 it sounds hopelessly naive. They claimed to be writing a grand unified theory of online communities informed by their new, beloved medium, but in fact only described a brief moment in time.
A bit of involuntary humor from Wikipedia's page on the [[CIA World Factbook|]]:

> //Factbook// does not cite its sources, making verification of the information it presents difficult if not impossible.^^[citation needed]^^

Stay classy, Wikipedia.
As of 2022, WordPress has been the world's most popular [[CMS]] for well over ten years, with a huge chunk of the market share. That's a bad thing.
This is a wiki about writing and wikis. This is all very [[meta]]. It's also very [[personal|Felix]]. There are probably some bad takes in here. Some bad [[poetry|Haiku]], too. Proceed at your own risk.
Don't listen to advice about writing. Most of it is bad. In particular:

* outline if you like, but don't feel obligated;
* rewrite if you like, but don't feel obligated;
* write as long or short as the story demands.

That said, in my experience it's a lot easier to add than to cut, so if in doubt write sketchily and flesh it out later.
Available from [[|]], this is a popular note-taking app that works like a cross between a [[wiki engine]] (except on the desktop) and an [[outliner]]. It also exports to the web, thus could be considered a static site generator as well. It keeps data in readable plain text files, that are also supported by other apps.
Meatball Wiki has a lot to say [[about cybertext|]], but it's really simple.

A wiki is cybertext. So is a text adventure. Anything that requires following links or otherwise making choices to keep reading, as opposed to simply pressing the spacebar. But to me this definition is iffy. For one thing, that doesn't require a computer. Gamebooks, anyone?

Moreover, where does that leave text that can only exist on a computer by definition, even if it's not interactive? You know, like procedurally generated stories, or cellphone novels, that are fundamentally shaped by the medium?
These are clippings from my cutting room floor. Must be my third or fourth attempt to find them a place. Can't promise this one is going to stick, either.

If you're looking for cool (if dormant) places, try CommunityWiki and/or [[MeatballWiki|]].

(Why no wiki node or tour bus stop? Three reasons: one, they assume an open wiki; two, they feel much too formal; and three, they'd be mostly empty here.)
An outliner is a kind of software. They usually take one of two forms:

* A text editor that divides files into collapsible sections, each able to contain more collapsible sections; those not needed at any given moment can be folded down to just a headline, allowing for a high-level view of the structure.
* An app with two side-by-side panes: one holds a tree of sections, the other displays the currently selected section; that means only one is visible at the same time, but so is the entire document structure.

Two-pane outliners are more likely to support rich text, and also to be commercial. The one-pane style famously includes [[Org Mode]].
[[What is a wiki?|]] As usual, Meatball Wiki uses a lot of big words to define the concept, but to me it's a lot simpler. Originally, a wiki was a kind of [[CMS]] that worked differently from others, in a few key ways:

* There's a big button labeled "edit" on every page, right in the front-end; there's no separate "management interface" or other bureaucracy.
* To link between pages one simply marks up the words, usually {{{[[like this]]}}}; there's no need for special expertise, or a complicated GUI.
* Links can be added even before a page exists, and following the link to a non-existent page invites the user to create it right away.

Speaking of which, by default all users can edit any page, even each other's profiles; any errors are discussed and fixed ("it's easier to ask forgiveness than to ask permission"). Page history and diffs help.

Nowadays the practice has changed. [[Wikis]] aren't as open as they used to be, as a general rule. Many are personal, and/or don't even use a [[wiki engine]] anymore. But the spirit of immediacy and simplicity has changed how we work with knowledge online.
Choice of engine matters. This wiki started out as a Gemini capsule, then went through a PmWiki phase (twice), before ending up as a TiddlyWiki instance. That finally worked.

As of May 2022 there's a new kid on the block called FeatherWiki. And in the second half of June I made AntiWiki with an eye towards moving once again, but found a better way since.
While the [[wiki]] as a medium isn't as popular as it once was, the concept has also become entrenched in digital culture, and many apps borrow from it. The highly popular [[Zim]] for example styles itself as a desktop wiki, but it could also be said to be an [[outliner]], or note-taking app. [[Domino]], while being closer to a mind-mapping app, was explicitly inspired by TiddlyWiki, and preserves many of the same qualities. Also, popular note-taking apps allow for links between notes.