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' 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>
<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]]; 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]];
	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]]; border:1px solid [[ColorPalette::PrimaryMid]];}
.wizard h1 {color:[[ColorPalette::PrimaryDark]]; border:none;}
.wizard h2 {color:[[ColorPalette::Foreground]]; border:none;}
.wizardStep {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];
	border:1px solid [[ColorPalette::PrimaryMid]];}
.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]];}
#messageArea .button {color:[[ColorPalette::PrimaryMid]]; background:[[ColorPalette::SecondaryPale]]; border:none;}

.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 1em 0 2em;}
.wizard h1 {font-size:2em; font-weight:bold; background:none; padding:0; margin:0.4em 0 0.2em;}
.wizard h2 {font-size:1.2em; font-weight:bold; background:none; padding:0; margin:0.4em 0 0.2em;}
.wizardStep {padding:1em 1em 1em 1em;}
.wizard .button {margin:0.5em 0 0; font-size:1.2em;}
.wizardFooter {padding:0.8em 0.4em 0.8em 0;}
.wizardFooter .status {padding:0 0.4em; margin-left:1em;}
.wizard .button {padding:0.1em 0.2em;}

#messageArea {position:fixed; top:2em; right:0; margin:0.5em; padding:0.5em; z-index:2000; _position:absolute;}
.messageToolbar {display:block; text-align:right; padding:0.2em;}
#messageArea 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%; 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; padding:1em;}
.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 1.5.0.2 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>
<!--}}}-->
''2008 explanation:'' ‘{{{@}}}’ has no special meaning, unless followed by a bus. ‘{{{bigsmoke@home.nl}}}’ has no effect what-so-ever.
<<list filter [tag[angel]]>>
http://www.xconomy.com/san-francisco/2012/08/07/the-next-internet-inside-parcs-vision-of-content-centric-networking/?single_page=true
''Take:''
*identification, testing and referencing (jumps, repetition, recursion, if)
*conditionality and dependence
*composition and membership (list items, sequence, division, sum, product)
*equality and inequality
*proximity and distance (greater/smaller than, difference)
''Add to this:''
*deduction and induction
and we got ourselves full-fledged artificial intelligence

''How:''
For identification we start to name things.
A name references everything carrying that name, thus returns a set
containing everything related as the “named” to that name.
This is already syntactic sugar for the most commonest of tests.
We can do the same with any kind of relationship. 
Relationships can be very complicated compound structures.

When things start to get complex, we may want the occurance of a
relationship to depend on the presence of some other relationship.
We thus need conditionality.

Relationships often come in pairs such as named><name.
They can be said to be “inversely equal” to each other.

Angel doesn't need namespaces, because namespaces are just an awkward way of
relating everything in that namespace to … the namespace. Hardly
spectacular. This is also why it doesn't need to be the same as RDF: RDF can
be quite effortlessly expressed in BULL. 

There's two kinds of relationships. Some relationships only exist because
they're defined, such as the relationship between a word and a sentence.
Other relationships can more generically be defined, such as the difference
between two numbers. A specific instance of such a relationship can then be
construed.

{{{
angel name >< named angel
angel family >< family member
angel child >< angel parent
angel creator >< angel creation
angel condition >< conditional angel
angel relation >< related angel (these 3 actually enable interesting queries)
relation subject >< subject relation 
relation relative >< relative relation
angel relative >< angel subject (this is actually a shorthand for the above)
angel called >< calls angel
tests angel >< angel tester
angel buffer >< buffer user
angel daemon >< posessed angel
daemon buffer >< buffer daemon
daemon command >< commanding daemon
daemon user >< posessing daemon
daemon policy >< police daemon
run priority >< run policy
running call >< call run
angel command >< commanding angel
command run buffer >< 
}}}

Normally, if you create an angel, it inherits all its relationships from
“angel”. The system informs you of this by creating a parent><child
relationship between “angel” and your new angel.

Angels are always created by context, meaning the relationships between other
angels. User input is just a filter which determines the output of some
running commands.

{{{
< is equal to >
< is inversely equal to >
sum >< term
difference >< addition
}}}
[[WTF? BULL]]
Each [[buffer]] has a size;
each [[string]] has a length.

Each buffer has a size, indicating the number of bits it consists of;
a string has a length indicating the number of substrings it consists of;
a table has a width, indicating the number of columns it consists of;
each tree has a depth; indicating the nesting level;
and a web has a span, indicating the number of relations(/nexus) it contains.
{{{
@[No dynamic content, thus a reference is returned.]

@(Dynamic content, thus a reference to the tory is returned.)
}}}
{{{
EAX \ < mov / 4
EBX \ < mov / EAX
}}}
[[WTF?|WTF? BULL]]

[[Syntax]]
[[Core axioms]]
[[Truisms]]
[[Questions]]
[[Angels]]
{{{
\\ ?< name / Rowan		= Rowan
\\ ?< name / child		= child
Popko \ < child / Rowan		= [\\ ? < name / Rowan ]\  <[\\ ? < name / child ]  /[\\ ? < name / Rowan]

Popko \ < angel child / Rowan	= Popko | Rowan

@ Popko				= angel call | + \ < call target / ? \ <name / "Popko"


company | + \ [
     < name / Sicirec
  ^\ < KvK nummer / 24322432
]
==
INSERT INTO companies (name, `KvK nummer`) VALUES ('Sicirec', '24322432');

company | ?[\ ??< KvK nummer / 24322432 ] 
==
SELECT * FROM companies WHERE `KVK nummer` = '24322432';

company | ?[\ ??< KvK nummer / 24322432]
 [\ < 
==
}}}
Select everything derived from 'company';
Add a condition. The test results for the condition are returned from the relation in the nested block.
<<list filter [tag[question]]>>
''B''igSmoke's ''U''nified ''L''inking ''L''anguage
BULL
''Angel definition:'' {{{ [parent | child ] }}}
''Command definition:'' {{{ (command | child ) }}}
''Content call:'' {{{ @[] }}}
''Command call:'' {{{ @() }}}

Relate all multiplication terms with each other:
{{{
[multiplication \ < term / ! \ < multiplied by / [
}}}

{{{
[book \
  <[chapter / + \
    <[title
}}}

''2008 jot''

{{{
[chapter |
  & [/preceding \> </following \] &
  </title | A random chapter ]
  </paragraph |
    </phrase | This is not \] ^ </emphasis | just \]
  ]
]

[chapter |
  & [preceding> <following] &
  ^ </title | On chapters \>
  ^ </subtitle | Chapters in contemporary logic \>
  ^ </paragraph | I'm writing this chapter to test a certain idea.
      This idea consists mainly of the notion that I've
      know enough bull to bullshit my way out of [acronym | BULL ].
    \>
  ^ </paragraph | By now I know that [acronym | BULL ] need not be a complex
      language for all it conveys is the simplest of metaphors.
      ^ </subparagraph | Sometimes, though, you have to actually
          [emphasis | test ] something before getting all cocky.
        \>
    \>
  ^ </paragraph | I think it is rather interesting to see to what uses we
      can put the `^'-character. This particular character can, for instance,
      be used not only to denote the relationship of a given bus to its
      defining bus but also to imply an (often sequential) relation
      that can tie various defined busses together using a predefined
      [emphasis | knot ]
    \>
]

[angel @ LDAP |
]

[angel |@ ldap
  ^ </entry |
      ^ </attribute |
          ^ </name | ]
          ^ </value | ]
        ]
    ]
  ^ </request |
    ]
  ^ </request |@ search
      ^ </scope ]
    ]
  ^ </search |@ sub @ list @ read |
      ^ </scope | @[^ <search\] <//name ##]  ]
    ]
  ^ </result |
    ]
]
}}}

1) If subjects are omitted, the previous relatives, which are related to the previous subjects, are implicitly used as subject.

2) Each next length is executed only if the previous length is true.

From {{{~/bull/bs.net/angel-standard.bull}}}:

{{{
[book \
  ^<name / Angel standard ]
  ^<title / A standard for angels ]
  ^</English language ]

  ^<content /\
    ^<dedication \ verse \
      ^<line / Because it's true ]
      ^<line / that I did and do ]
      ^<line / love yer angel's cue, ]
      ^<line / this system (where, too, ]
      ^<line / angels pue) ]
      ^<line / is dedicated to ]
      ^<line / a person named you. ]
    ]

    ^<chapter /\
      ^<name / UTF-8 BULL ]
      ^<title / BULL encoded in human-readable UTF-8 ]
      ^<example /
        
      ]

      ^<paragraph \
        In ^[reference > [/ UTF-8 BULL ]
      ]
    ]
  ]
]
}}}
*A condition is still a condition even if it's the predicate in an XPath expression or parts of a switch or whatever.
*Loops are not primitives. Recursion is king.
*Sorting is not a primitive operation.
*A condition is always a test for the existance of a relation.
''2008 jot''

{{{
my undesired angel \ name > / - \ < angel relation
}}}
BULL seems to work this way:

*Stuff needs to be said.
*There's not two equivalent ways to say the same thing,
**though different sayings might occasionally point in the same direction.

But what needs to be said? Way too much, if you ask me.

Let me start by saying: “BULL is not really a language. It's a notation.” What I mean by this is that whereas human languages have very close written relatives, there's hardly a relationship between what is written and the information that is being transferred. BULL is quite the opposite; it's "just" a notation for the information that is being described. Nothing more. But neither does it lack anything in this sense. It's complete because you can describe "anything", human language being one of the more trivial but complex things you can describe.

Imagine the following sentence for example:

>“There's something that I need to tell you: I love strawberries.”

There's a ridiculous amount of information compressed into this small sentence:

*A subject (I) loves strawberries. The sentence doesn't describe what or who “I” is. Neither does is describe what a strawberry is or what it means “to love” something. This knowledge is assumed from the reader.
*“I need to tell you something”: there's a difficult nuance in this phrase. Is this some type of confession? Perhaps it's an exclamation in gratitude upon receiving some strawberries. Either way, the answer depends on the context of the sentence. We also need the context to define who the speaker is.

We need context for almost anything. We need to know who is saying what. We need to know what language they're using. We need to know the story.

To encode all this information in a manner that is comprehensible to a computer is actually quite boring and painful, but it doesn't need to be. Enter the World Wide Web, a distributed collection of so-called “web pages” containing select phrases linking to other pages on the web.

The next version of the Web is called the Semantic Web (Web 3.0), meaning that it'll encode information in such a way that it's comprehensible by computers. This is a pretty big deal and BULL is based on this concept, except without all the creepy formalism and layer upon layer of needless legacy crap. RDF sucks for precisely the reason that URLs suck, for precisely the reason that URIs still suck and why Git is taking over from Subversion.

Decentralization is the key to the succes of the web, but DNS isn't decentralized. It's merely “distributed”. The only “cute” thing about URLs (don't get me started about URIs) is that name part, which doesn't do justice to the nature of the 'Net. The other cute thing that contributed to the succes of the web was the original simplicity of HTML. Everyone could learn it in minutes. HTML is no longer cute. It's encumbered by layer upon layer of crap and cruft like CSS and JavaScript. Then, there's RDF, which makes the thing that is most crucial for the web (linking) even more difficult than it ever was before the web was invented.

My proposal is to get rid of all that crap. While we're at it, let's get rid of all our programming languages and data formats as well. They suck. Besides, they aren't getting us anywhere. We don't need languages. We already have enough of those, most of them even before we ever //dreamed// of computers. We just need a notation for a universal data model. A temporary notation, until computers have gotten fed enough information to start acting intelligent of their own accord.

XML is not a universal notation. It doesn't come even close. Data isn't hierarchical in nature and never has been. To pretend otherwise is about as useful as following the Pope's advice on birth control: you still get screwed, just on more different levels at once.

RDF is close to the perfect data model, except that is uses identifiers which are masturbatingly formal, which is an indication that using URIs instead of URLs didn't keep anyone from actually identifying with locators. RDF still looks like it's describing locations, which is too bad because the universe doesn't consist of locations. It consists of relations.

So rid yourself of RDF's mental baggage and start afresh. All you need is this: a relation between point A and B. Let's call point A the subject and point B the relative. This is intuitive and at least doesn't sound like it is mostly meant to keep the terminology restricted to an exclusive and select group of computer scientists.

There we have our model. Let's expand it a bit by saying that there aren't really any subjects or relatives. Not only are they not locations or identifiers. They simply don't exists. Strangely enough, this doesn't mean that they can't be located or identified. Of course they can! That's what we have relationships for!

All we need to be able to do is to define and to traverse relationships. The rest is syntactic sugar for our notation, but our model needs to be able to comprehend this difference.

This already allows us to describe anything! There's nothing that can't be described in term of its relationship to other “things”. What it doesn't give us yet is comprehension. How does the computer know what everything (or anything) means? For that we just need to define a concise bunch of axioms, a set that's compact enough for us to easily describe to the computer. Then we can relate //anything//, //literally anything// we want to these axioms to make the computer understand our information. How's that for artificial intelligence?
''2008 jot''

{{{
angel
  name
  hat
  parents
  children
}}}

Angels don't exist but have a name, run around in hats and inherit their parents' properties, sometimes getting their own children.

Unless in path context, the first lie an angel tells is about its name.
''2008 jot''

{{{
buffer
  size
  type
  stor
  system
}}}

A buffer holds anything that is or will be.

Buffers are derived from [[angels|angel]], but they're more physical.
They _contain_ content of a certain size and type, which is stored in
the buffer's stor.
A buffer can be part of a more complex system: a byte can be part of
an ASCII string, an array can be part of a matrix and so on.

''2008 jot''

{{{
command
  args
  caller
  run
  buffer
}}}

A command represents something that'll act upon request.

Commands, too, are derived from [[angels|angel]], but they're more practical, since
they can act, possibly filling a buffer which is returned to the command's
calller. Commands can be called with arguments. When they're called,
they run as part of a jog.
{{{
daemon
  users
  commands
  policy
}}}
{{{
event
  occured
  chain
  causes
  effects
}}}

An event resambles anything that takes place.

Events occur when something happens. Events have (a) cause(s) and also effects if they manipulate something or if they're filtered.

{{{
event
  definition
  change
  run
    start
    stop
    continue
    break
    wait
    finish
  call
  query
  destruction
  retirement
}}}