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>>
<<importTiddlers>>
<!--{{{-->
<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'>
  <div class='headerShadow'>
    <span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;
    <span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
  </div>
  <div class='headerForeground'>
    <span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;
    <span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
  </div>
</div>
<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>
<div id='displayArea' role='main'>
<div id='messageArea'></div>
<div id='tiddlerDisplay'></div>
</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]]; }
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: -moz-linear-gradient(to bottom, [[ColorPalette::PrimaryLight]], [[ColorPalette::PrimaryMid]]);
	background: linear-gradient(to bottom, [[ColorPalette::PrimaryLight]], [[ColorPalette::PrimaryMid]]);
}
.header a:hover {background:transparent;}
.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]];
	background:[[ColorPalette::TertiaryPale]];
	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 { background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]]; box-shadow: 1px 2px 5px [[ColorPalette::TertiaryMid]]; }
.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]]; }

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

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

.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::TertiaryLight]]; }
.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]]; }

.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 th, .viewer thead td, .twtable th, .twtable thead td { background: [[ColorPalette::SecondaryMid]]; color: [[ColorPalette::Background]]; }
.viewer td, .viewer tr, .twtable td, .twtable tr { border: 1px solid [[ColorPalette::TertiaryLight]]; }
.twtable caption { color: [[ColorPalette::TertiaryMid]]; }

.viewer pre {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);}
/*}}}*/
/*{{{*/
body { font-size:.75em; font-family:arial,helvetica,sans-serif; margin:0; padding:0; }

* html .tiddler {height:1%;}

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;}

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;}

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


a {text-decoration:none;}

.externalLink {text-decoration:underline;}

.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;}
.headerShadow {position:relative; padding:3em 0 1em 1em; left:-1px; top:-1px;}
.headerForeground {position:absolute; padding:3em 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; }
.wizardFooter .status { padding: 0.3em 1em; }
.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; width: 1em; } /* width for IE */
.messageArea__text a { text-decoration:underline; }

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

.tiddlerPopupButton {padding:0.2em;}
.popupTiddler {position: absolute; z-index:300; padding:1em; margin: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;}
.tagged li, .tagging li { margin: 0.3em 0; }
.tagClear {clear:both;}

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

.annotation { padding: 0.5em 0.8em; margin: 0.5em 1px; }

.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 0; }
.viewer th, .viewer td, .viewer tr, .viewer caption, .twtable th, .twtable td, .twtable tr, .twtable caption { padding: 0.2em 0.4em; }
.twtable caption { font-size: 0.9em; }
table.listView { margin: 0.8em 1.0em; }
table.listView th, table.listView td, table.listView tr { text-align: left; }
.listView > thead { position: sticky; top: 0; }

* html .viewer pre {width:99%; padding:0 0 1em 0;}
.viewer pre {padding:0.5em; overflow:auto;}
pre, code { font-family: monospace, monospace; font-size: 1em; }
.viewer pre, .viewer code { line-height: 1.4em; }

.editor {font-size:1.1em; line-height:1.4em;}
.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 0;}

.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; }
}
/*}}}*/
<!--{{{-->
<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|https://alexschroeder.ch/]] is the creator of [[Oddmuse]], and a philosopher of the [[wiki]] community. He keeps a long-running blog about this and many other things.
[[AntiWiki|https://felix.plesoianu.ro/web/antiwiki/]] is the spiritual successor to BrutalWiki, but preserves little except the default page layout and [[wiki syntax]]. ~AntiWiki is a desktop app that's part note-taking tool and part site builder, in a thousand-line Python script, and all of it matters.
As of 2022, [[Bouncepaw|https://bouncepaw.com/]] is one of the few people trying to keep wikis alive as a community and movement, not just web apps. He develops a personal engine, meant for a [[digital garden]].
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 [[wiki syntax]] 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.
Some people make websites without any styling. Others build ever bigger frameworks and toolchains. I prefer drop-in stylesheets that can be pasted into any web page and make it look good right away. But making them small enough is an art.

Inspirations vary. [[This one|Dualtronic]] was made for a specific site, while [[this one|Stark Retro]] was inspired by a conversation with a friend.
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
[[Writing]]
[[Wikis]]
[[Web]]
It might seem odd to call [[Domino|https://kool.tools/domino/]] 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 go when not bound to the old ways.
I don't usually make dark mode stylesheets. This is the exception. It's also larger than others, at twelve lines of code, despite not having many features.

{{{
body { Width: 70ex; Max-width: 70%; Margin: 2ex auto; }
body { Font-family: sans-serif; Font-size: 16pt; Padding: 3ex; }
body, blockquote { Border-style: groove; Border-width: 0.25ex; }
img { Max-width: 100%; } pre { Overflow: auto; }
blockquote { Margin: 1ex; Padding: 2ex 3ex; }
body { Color: #deeed6; Background-color: #140c1c; }
body, hr, blockquote { Border-color: #dad45e; }
html, blockquote { Background-color: #442434; }
a { Color: #597dce; }
a:visited { Color: #8595a1; }
a:active, a:hover { Color: #6dc2ca; }
}}}

Dualtronic follows up from a much bigger website theme called Electronic, and uses the same ~DB16 color palette.
Some things really are as good as they sound. At under 64KB in size, [[Feather Wiki|https://feather.wiki/]] belongs to the new generation of [[Markdown]]-based wiki engines, which can be useful for migrating data from other sources. It's also explicitly inspired by TiddlyWiki. Good uses:

* online books
* making a [[link directory]]
* website mirroring

Feather Wiki also has a rich [[text editor]], which solves a longstanding accessibility issue, and pages can be arranged in a tree.
[[That would be me|https://felix.plesoianu.ro/]]: just a lonely orange cat watching the moon from the windowsill on a starry night.

If you're looking for cool wiki people, here's a few names:

* [[Alex Schroeder]]
* [[Bouncepaw]]
* [[Robbie Antenesse]]
A handful of microfiction pieces, as befits this wiki; they were added to it before, removed again while it still didn't have clear purpose or direction, and finally put back in. [[This one|Last man on Earth]] and [[its sequel|Inherit the Earth]] were written on Twitter before it all went downhill, while [[a third|To hell in a hamper]] was added later (and doesn't quite fit in).
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.
I once called it a glorified social network, where programmers go to make themselves known. However, that undersells the problem. Stay away if you can.
HTML is a programming language. There, I said it.

It's a programming language because it lets people tell the computer to do cool stuff. In this case, show all kinds of things on screen. That's not much, you say? So what. It's fun. Meaningful. Often even useful.

So, you can't use HTML to perform computation. Big deal. It's been a long time since computers were all, or even mainly, about computation. Deal with it.
I once described HTML5 as an admission by manufacturers that major browsers never truly implemented the previous 4.0 standard. That's a bad thing; as a friend pointed out, web standards are now dictated by Google, and we're even worse off (in this regard) than two decades ago before Firefox came out. But at least we're more honest now about how the web actually works in practice.

Besides, you can use it for example to add graphics right into a web page via SVG:

<html>
 <svg width="50" height="50">
  <rect x="10" y="10" width="40" height="40">
 </svg>
</html>

How cool is that?
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.
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.
The year is 2028. Discarded smartphones litter the streets, crinkling and crackling as self-driving cars ride over them. Drones circle above, swooping down now and then to perch on a public charge pad. A solar-powered ad flickers, croaking something about Mars colonies.
There's a tension between the timely and the atemporal online. [[Wikis]] want to be the latter, but end up needing the former. Then there's the implicit timeliness of recent changes versus explicitly [[keeping a journal]]. In the end, you always need both.
The year is 2028. A drone delivers fast food from an automated restaurant to the top of a corporate tower. A security robot carts it inside, next to dozens of similar packages, all unopened. The last man on Earth, CEO of Final Corp Inc., doesn't get up. He was too busy.
πŸ“– [[Writing]]
🚍 [[Wikis]]
🌐 [[Web]]
----
πŸ˜… [[Humor]]
πŸš€ [[Fiction]]
🌺 [[Haiku]]
----
πŸ“° [[Journal]]
<<timeline created 10 filter:[tag[Journal]]>>
[[Markdown|https://daringfireball.net/projects/markdown/]] is one of those technologies that succeeded despite massive technical problems. It's infamously ambiguous, hard to parse correctly (or at all), arguably overhyped...

And nobody cares, because it's the most readable and human-friendly out there. That was the point. But it does put a burden on those who have to create and/or integrate implementations.

Like [[wiki syntax]], Markdown has been standardized, and likewise without much success.
[[Oddmuse|https://oddmuse.org/]] is one of the few surviving wiki engines that are 1) written in Perl and 2) still maintained as of 2023. It's two decades old as of this writing, but was updated a few years ago to the HTML5 standard. Its creator is [[Alex Schroeder]], --who also uses it on his personal website.--

Oddmuse has a tiny core, but ships with hundreds of plugins. It has built-in support for [[keeping a journal]], which can be further extended. Since pages are rendered on save (and then cached), [[markup]] plugins can be changed without breaking anything, at least until the next edit.

Unusually, the only way to alter a wiki's appearance is via [[CSS]]. Even so, there used to be a large collection of stylesheets.
I used [[PmWiki|https://www.pmwiki.org/]] for ten years, then tore it all down.

I tried going back later, more than once. Made [[several skins|https://felix.plesoianu.ro/web/]] for it. They're still good and useful. My current setup barely sees any use however.

Can't help but notice that nowadays PmWiki is described as a [[CMS]]. It's not the only [[wiki engine]] to go that way. Wonder if that's really helping. But yeah. Nothing beats the ease of making themes for this one. No wonder it's the #1 feature advertised on the home page.
When it comes to wikis, few people are starting from scratch nowadays. As the creator of [[Feather Wiki]] and enthusiastic promoter of similar technologies, [[Robbie Antenesse|https://robbie.antenesse.net/]] is an exception well worth mentioning.
This is a 10-line stylesheet based on the one I made for BrutalWiki, itself grown from the first three lines, written for another web page to make a point.

{{{
body { Width: 80ex; Max-width: 80%; Margin: 1em auto; }
body { Font-family: sans-serif; Font-size: 16pt; Padding: 1em; }
body { Color: darkslategray; Background-color: seashell; }
a { Color: teal; } a:visited { Color: darkviolet; }
a:hover, a:active { Color: aquamarine; }
nav, th { Color: seashell; Background-color: darkslategray; }
nav p { Text-align: center; Padding: 1ex; Margin: 1ex 0; }
nav a { Color: turquoise; } nav a:visited { Color: violet; }
pre { Overflow: auto; Font-size: 75%; } img { Max-width: 100%; }
table { Border: 1px solid darkslategray; } th, td { Padding: 0.5ex; }
}}}

This wiki's ColorPalette is based on it.
<<search>><<closeAll>><<permaview>><<newTiddler>><<newJournal "YYYY-0MM-0DD" "Journal">><<saveChanges>><<slider chkSliderOptionsPanel OptionsPanel "options Β»" "Change TiddlyWiki advanced options">>
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
Bric-a-brac
https://felix.plesoianu.ro/wiki.html
I wrote this one partly to beat [[my previous record|Sand Beach]], and partly to prove that the default browser stylesheet is fine and only needs minor adjustments to looks good in the 2020s.

{{{
body { Max-width: 160ex; Margin: 0 auto; Padding: 1ex; }
img { Max-width: 100%; } pre { Overflow: auto; }
nav { Font-weight: bold; } main { Font-size: large; }
main { Text-align: justify; Line-height: 1.6em; }
body { Color: midnightblue; Background-color: ghostwhite; }
a { Color: dodgerblue; } a:visited { Color: darkred; }
a:hover, a:active { Color: deepskyblue; }
}}}

Stark Retro actually has [[its own homepage|https://felix.plesoianu.ro/web/stark-retro.html]], that discusses origins and inspirations.
body { Font-size: 1em; Margin-bottom: 1ex; }
#mainMenu .listTitle, #mainMenu .listLink { List-style: none; }
<<timeline modified 50>>
This part of my website is made with [[TiddlyWiki Classic|https://classic.tiddlywiki.com/]]. 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 so much anymore. But TiddlyWiki still has its perks:

* It always makes an impression. Everyone loves those little animations!
* Makes for a wonderful means of exploring the structure of a new website.
* It's genuinely fun to use, and only requires a mainstream web browser.

Reasons not to use it:

* If you have to edit from the command line and/or cater to text browsers.
* If you want your site indexed by search engines (not always the case!)

But it can always be just a part of and/or an alternative to a larger website.
"The world is going to hell in a hamper," Karen thought to herself, struggling to coax an overfull shopping cart across the supermarket's parking lot, among ~SUVs that screeched and honked. In the distance, firefighting engines raced, lights flashing.
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|https://en.wikipedia.org/wiki/Wabi-sabi]]:

> 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|https://wabisabi.cg.net.ru/]] survives as of this writing, but hasn't been updated since 2012.
The web is eating the world. It has subsumed most other facets of the internet, to the point that young people no longer realize e-mail or chat exist outside the browser. It's everything to everyone, and then some. One ring to rule them all.

The web is huge. Each part of my website has a [[link directory]] of its own, on top of the big one with everything else in it. I'm not alone in this, either. We all need to do it just to keep track of stuff somewhat, and it's still overwhelming. But we can! That's what [[links]] are for. That's how the web works, by design.
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 one. 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.
* That said, they were right about one thing: an "everything wiki" doesn't work. It must have a focus, or mission. But it can be hard to articulate well.
!Funnies
A bit of involuntary humor from Wikipedia's page on the [[CIA World Factbook|https://en.wikipedia.org/wiki/The_World_Factbook#Factual]]:

> //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 [[blogging]] platform for well over ten years, with a huge chunk of the market share. That's a bad thing.
This is a wiki about wikis, writing and the web. It's all very [[meta]]. Also very [[personal|Felix]]. There are probably some bad takes in here. Some bad poetry, too. Proceed at your own risk.
!Advice
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 easier to add than to cut; if in doubt write sketchily and flesh it out later.
Available from [[zim-wiki.org|https://zim-wiki.org/]], 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 (also supported by other apps) and has rich text editing, a rare feature in its class.

Zim lacks important [[markup]] such as block quotes, but supports indented paragraphs. It's arguably most useful when you already have a folder full of little text files and want to manage them more easily than with a file manager plus [[text editor]].
[[Agora|https://anagora.org/]] is an intriguing experiment: each participant has a repository full of [[Markdown]] files on a software forge. The application pulls down all of them and weaves together files with the same name in different repositories, so for example when you click on [[digital garden]], you can see what everyone has to see about the concept. It's a great way to discover new people //and// new topics at the same time: two axes of a possibility space.
Formally, an [[awesome list|https://github.com/sindresorhus/awesome]] is no different from a simple, one-page [[link directory]]. But since the first one a few years ago, they've become a cultural phenomenon, likely fueled by ease of collaboration: it takes little to no technical knowledge to fork a GitHub project, edit a file to add a link or three and make a pull request.

Besides, it's right there is the name: these lists are meant to be //awesome//. It's not just community curation, but a certain way of doing it.
It wasn't blogs that [[broke the web|https://stackingthebricks.com/how-blogs-broke-the-web/]], but not for lack of trying.

Blogging is a trap. It continually buries the past under an avalanche of new verbiage. Coupled with the internet's disastrous track record when it comes to [[media]] preservation, that's a recipe for trouble.

Human beings aren't fond of learning from the past anyway. What happens when we even forget what we've forgotten?
Categories are sometimes useful and sometimes not, but always political. Handle with care.

PmWiki has categories. TiddlyWiki has tags. WordPress has both. They're not the same.
I don't know why many simple ideas have fancy, pompous or even snobbish names that make them sound much more important than they are.

Everyone, chill. You're taking notes, not reinventing human cognition. Making a task list, not managing a CEO's agenda.

Thinking about it is cool. Coming up with specific terms can be useful. But stay grounded.
Meatball Wiki has a lot to say [[about cybertext|http://meatballwiki.org/wiki/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?

Conversely, there are kinds of text that only make sense on a computer and/or get fundamentally shaped by the medium, even if they're not interactive. For example [[markup]] languages.
[[Digital gardens|https://maggieappleton.com/garden-history]] are the modern term for what old-timers like me would call a [[personal wiki]]. There are [[many definitions|https://anagora.org/digital-garden]]. Some of them might even be correct. What matters is that the concept can prove surprisingly useful even when not applied directly as such.

For example: knowledge wants to be used, grown and connected. Add [[links]] to your pages. Then add stories to the links, so you don't forget what the point was.

See also: [[On Blogs and Digital Gardens|https://flamedfury.com/posts/on-blogs-and-digital-gardens/]].
For the past 15 years or so as of this writing, hashtags have become an indelible part of human culture, more proof that microblogging gave us means of expression we didn't know we needed. TiddlyWiki uses a separate field for tags, which has advantages, but hashtags are [[markup]]: they belong in the text, and force the writer to think which words matter.

PmWiki also points to page [[categories]] in-band, via special [[wiki links]], thus gaining similar qualities.
I've been [[blogging]] since 2006, sometimes two-three times a week for years at a stretch. I recommend keeping a journal instead.

A journal is more relaxed and personal. It's about letting people know what you've been doing, when you feel ready to share. There's no pressure, and no need to be profound. Just more thoughtful than when rattling off quips on a microblog.
The age of big, impersonal directories has passed, but web curation is more important than ever. The big search engines have betrayed people. There's a new generation, but it will need time to catch up. And it's not easy to make a search engine.

A link directory can be as simple as one web page divided into sections. In fact an [[awesome list]] or blogroll is little more than that. Yet they hold the web together. And nobody needs permission to make their own.

See also: [[Why Personal Link Directories are Better|https://www.bikobatanari.art/posts/2023/personal-link-directories-are-better]].
[[Wikis]] exposed a problem with the web. Namely, that not all links are created equal. There are at least two types: internal links, that point to pages within the same application and can be easily checked for validity; and external links, pointing to an arbitrary address online that you can't vouch for in any way. The internal kind can be further divided into regular links, which point to other pages, and tags or [[categories]], that set up an ontology.

Here's where things get interesting: the earliest wikis distinguished between internal (using WikiWords) and external links. As later engines moved to free links, //something was lost//. I first noticed that while working on BrutalWiki and finally fixed the problem by giving AntiWiki a distinct syntax for each type.

Note how even modern wiki engines display external links differently. That's basically an admission that //the distinction matters//.
When people start writing books, they soon learn that language isn't just words, and writing isn't just speech transcribed to paper. There begins the path to becoming enlightened.
Marking up text has been a thing since way before computers. Think underlining a passage, or drawing a vertical line down the side. But in the digital realm it gained new dimensions, for at least two reasons:

# It has to be in-band, because [[plain text]] has no concept of drawing lines or whatever.
# A computer can //act// on markup, and render it as a link or spoiler, requiring interaction.

Nowadays the word "markup" has become almost synonymous with things like [[Markdown]], as opposed to [[HTML]].
"The medium is the message", goes a former saying. I don't know about that, but media make a difference.
These are clippings from my cutting room floor. A microcosm of my personal website in one file. Somewhere to write down half-formed thoughts before they become full-blown web pages.

At least that was the initial plan. Now it's becoming another home. A place for philosophy. And as it turns out, a tool for learning.

If you're looking for cool and strange places, try [[anagora.org]] or maybe one of these:
* [[Jayeless.net|https://www.jayeless.net/]]
* [[gavart.ist|https://gavart.ist/]]
* [[joejenett.com|https://joejenett.com/]]

(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.)
It seems pretty certain now that I only get the itch to work on wikis every half a year or so. Ought to do this more often, but whatever.

This autumn's theme appears to be rotating old entries. Turns out, the danger with a place like this one is that it risks becoming a repository of dusty knick-knacks and not much else. Sometimes, however, things I don't care about anymore are deeply enmeshed into the site structure, and extricating them takes work. On the flipside, [[new additions|digital garden]] can turn out to already fit in just fine.

Yes, I'm thinking out loud. That's another use I found for these notes recently: to remind myself of what I've already figured out a while ago, so I don't have to start over all the time. Note to self: general [[concepts]] live longer than any one place or group of [[people]].

Making sure the journal setup looks and works correctly with more than one entry is only a bonus. But it sure feels good.
I don't like outlines. They enforce hierarchy and promote linearity. Any [[outline|https://en.m.wikipedia.org/wiki/Outline_(list)]] is by definition prescriptive, wanting to impose a predetermined view on the world.
An [[outliner|https://en.m.wikipedia.org/wiki/Outliner]] promises to help navigate the inherent bureaucracy of [[outline]] documents. But after the nth time frantically folding and unfolding sections, trying to locate a particular one, that promise starts to ring hollow.

Outliners work //with// outlines, that's just it. They are tools of the system.
The internet links people together, not computers.
The first [[wiki]] was a community, and for a long time the two [[concepts]] appeared inextricable. Then people saw that wikis were good, and started using such on their personal websites. Early on these privately-run wikis were still open, but then spam became unbearable, so most of them were locked down, becoming essentially single-user. From there to their evolution into [[digital gardens|digital garden]] there was only one step.

For me, the turning point was likely the release of TiddlyWiki, which can't even be edited online out of the box, but only when opened as a file from disk (server-side setups exist). As [[Bouncepaw]] points out, that can be a problem, because how do you edit your wiki on the go then? But as it turns out, I don't do that very often at all, and then there are ways.

Editing a wiki is still a very solitary activity when not even your friends want the editor password.
[[Plain text|https://plaintextproject.online/articles.html]] is the universal medium. That's both good and bad.

Good, because it can in principle express anything: prose, code, event art. It can be worked with [[universal tools|text editor]], that don't need to know what it means, where it comes from or where it will go from there.

Bad, because structure is in the eye of the beholder, and [[text files]] have limited means of expressing what they're supposed to be. And computers hate ambiguity.
Practice makes perfect. Wait, no, that's not it.

In theory, there's no difference between theory and practice. In practice, there is.

Practice self-care. Practice thoughtfulness.
A quine is a computer program whose output is a copy of itself. That was an academic curiosity until TiddlyWiki came along; now other apps apply the same principle, such as [[Domino]].

Come to think of it: is this any different from DOS being able to install itself onto any floppy disk you put into the drive, way back?
Not all apps are created equal. Each imposes its unique style and structure on the text you put in. So it's worth choosing them consciously.
An idea picked up from TiddlyWiki 5: tag system tiddlers accordingly, so they can be easily found again (the Classic edition doesn't care otherwise). The hard part is remembering it.
[[Text editors|https://texteditors.org/cgi-bin/wiki.pl]] are the universal computer experience. That's both good and bad.

Good, because [[plain text]] is as simple as it gets. No moving parts. Only what you put there, no more and no less. Forever accessible.

Bad, because the text editor is a jack of all trades, but a master of none. Mastery matters. Also [[text files]] have no structure except what we attribute to them. And often it's not clear what the intent was.
Text files are great because you can put anything you want in them. That's also the problem.

Consider the following fragment. Is it an org file, or [[Markdown]]?

{{{
# The problem with text files

* Considerations

Text files are:

- [X] universal
- [X] future-proof
- [ ] unambiguous
}}}

Trick question! It can be either, or both. There's no way to tell without more context. And it matters, because //semantics differ//.
Finally upgraded this thing to TiddlyWiki Classic 2.9.3, almost a year after it came out (edit: and then to 2.9.4 less than a month later). I hope they keep working on it; there are some visible improvements in this version, and reasons to use it over newer alternatives.

I took the opportunity to look into customizing the [[wiki]] more. Turns out there's plenty to do:

* It's possible to fix up the default title and tags for a new journal. [[Date formats|https://classic.tiddlywiki.com/#%5B%5BDate%20Formats%5D%5D]] are unusual, but well-documented.
* Better yet, the [[timeline macro|https://classic.tiddlywiki.com/#%5B%5Btimeline%20macro%5D%5D]] can sort tiddlers by creation date, and filter them by tag, making for a proper list of entries.

BRB, letting people know what I've been up to around here, and more importantly why.
[[What is a wiki?|https://garden.bouncepaw.com/hypha/what_is_a_wiki]] Opinions vary; [[Bouncepaw]] has a good overview of recent discussions. Let's just say that 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. Other [[wiki syntax]] is just as easy.
* 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|personal wiki]], 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.

This happens because each engine encourages a certain style and structure, shaping the text entrusted to it.
The very first wiki used WikiWords to create links. That made a lot of people angry and has been widely regarded as a bad move. Modern wikis almost all use the double-square-bracket format instead; it's now almost as well-known as [[hashtags]].

Either way, wiki links aren't just easier to write than in [[HTML]]. They also refer to another page by name rather than asking people to think about addresses and protocols.

On the minus side, each [[wiki engine]] has its own way to turn a page name into an address. TiddlyWiki keeps the page name intact, complete with letter case, so text has to be carefully planned. At the opposite extreme, PmWiki munges links in a clever way, which lets many different phrasings refer to the same page.
Meatball Wiki has this to say [[on syntax|http://meatballwiki.org/wiki/WikiSyntax]]:
<<<
One, ''there should be no standard syntax''. The ~WikiSyntax is the ~UserInterface, it is not the data encoding.
<<<
As they go on to say, this point is lost on many. I'll add that like software, markup shapes the text you use it on. Syntax adds features. For example: a modern [[wiki engine]] will often use [[Markdown]] rather than Creole or a custom language... and they have to add some form of [[wiki links]], because Markdown has no concept of local, internal linking.
While the [[wiki]] as a medium isn't as popular as it once was (or rather, it has faded into the background), 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. Popular note-taking apps, often based on [[Markdown]], allow for links between notes, and my own AntiWiki is a deliberate reaction to some of their shortcomings.