~exprez135/mountaen

4d33c6de1fe159424f0a766ad7733d7b8d9f5c59 — Nate Ijams 1 year, 1 month ago
Initialize repository.
85 files changed, 9105 insertions(+), 0 deletions(-)

A .clang-format
A .gitignore
A 404.html
A CNAME
A LICENSE
A README.md
A index.html
A links/main.css
A links/rss.xml
A media/icon/cc.svg
A media/icon/fosstodon.png
A media/icon/logo.svg
A media/icon/sourcehut.svg
A media/identity/orb.png
A media/logo-2.svg
A media/logo.svg
A site/about.html
A site/audio.html
A site/home.html
A site/meta.html
A site/nathaniel_ijams.html
A site/research.html
A site/visual.html
A src/build.sh
A src/database/asulodeta.tbtl
A src/database/glossary.ndtl
A src/database/horaire.tbtl
A src/database/lexicon.ndtl
A src/database/workspace.ndtl
A src/helpers.c
A src/inc/acme.htm
A src/inc/ansi_c.htm
A src/inc/assembly.htm
A src/inc/basic.html
A src/inc/binary.htm
A src/inc/camilare.htm
A src/inc/chr9.htm
A src/inc/discourse.htm
A src/inc/documentation.htm
A src/inc/donsol.htm
A src/inc/english.htm
A src/inc/famicom.htm
A src/inc/horaire.htm
A src/inc/hypertalk.htm
A src/inc/identity.htm
A src/inc/indental.htm
A src/inc/japanese.htm
A src/inc/lain.htm
A src/inc/lietal.htm
A src/inc/lin6.htm
A src/inc/linux.htm
A src/inc/macintosh.htm
A src/inc/meta.htm
A src/inc/moogle.htm
A src/inc/orca.htm
A src/inc/parade.htm
A src/inc/pascal.htm
A src/inc/plan9_c.htm
A src/inc/plan9_clock.htm
A src/inc/plan9_color.htm
A src/inc/postscript.htm
A src/inc/quotes.htm
A src/inc/radio.htm
A src/inc/raspberry.htm
A src/inc/rio.htm
A src/inc/runic.htm
A src/inc/russian.htm
A src/inc/tablatal.htm
A src/inc/unix.htm
A src/inc/vegan.htm
A src/inc/zoe_format.htm
A src/main.c
A src/projects/arvelie/README.md
A src/projects/arvelie/arvelie.c
A src/projects/arvelie/build.sh
A src/projects/arvelie/main.c
A src/projects/lietal/README.md
A src/projects/lietal/build.sh
A src/projects/lietal/lietal
A src/projects/lietal/lietal.c
A src/projects/lietal/main.c
A src/projects/neralie/README.md
A src/projects/neralie/build.sh
A src/projects/neralie/main.c
A src/projects/neralie/neralie.c
A  => .clang-format +65 -0
@@ 1,65 @@
---
Language:        Cpp
# BasedOnStyle:  LLVM
AccessModifierOffset: -2
AlignAfterOpenBracket: true
AlignEscapedNewlinesLeft: false
AlignOperands:   true
AlignTrailingComments: false
AllowAllParametersOfDeclarationOnNextLine: true
AllowShortBlocksOnASingleLine: false
AllowShortCaseLabelsOnASingleLine: false
AllowShortIfStatementsOnASingleLine: false
AllowShortLoopsOnASingleLine: false
AllowShortFunctionsOnASingleLine: None
AlwaysBreakAfterDefinitionReturnType: true
AlwaysBreakTemplateDeclarations: false
AlwaysBreakBeforeMultilineStrings: false
BreakBeforeBinaryOperators: None
BreakBeforeTernaryOperators: true
BreakConstructorInitializersBeforeComma: false
BinPackParameters: true
BinPackArguments: true
ColumnLimit:     0
ConstructorInitializerAllOnOneLineOrOnePerLine: false
ConstructorInitializerIndentWidth: 4
DerivePointerAlignment: false
ExperimentalAutoDetectBinPacking: false
IndentCaseLabels: false
IndentWrappedFunctionNames: false
IndentFunctionDeclarationAfterType: false
MaxEmptyLinesToKeep: 1
KeepEmptyLinesAtTheStartOfBlocks: true
NamespaceIndentation: None
ObjCBlockIndentWidth: 2
ObjCSpaceAfterProperty: false
ObjCSpaceBeforeProtocolList: true
PenaltyBreakBeforeFirstCallParameter: 19
PenaltyBreakComment: 300
PenaltyBreakString: 1000
PenaltyBreakFirstLessLess: 120
PenaltyExcessCharacter: 1000000
PenaltyReturnTypeOnItsOwnLine: 60
PointerAlignment: Left
SpacesBeforeTrailingComments: 1
Cpp11BracedListStyle: true
Standard:        Cpp11
IndentWidth:     8
TabWidth:        8
UseTab: ForIndentation
BreakBeforeBraces: Linux
SortIncludes: false
SpacesInParentheses: false
SpacesInSquareBrackets: false
SpacesInAngles:  false
SpaceInEmptyParentheses: false
SpacesInCStyleCastParentheses: false
SpaceAfterCStyleCast: false
SpacesInContainerLiterals: true
SpaceBeforeAssignmentOperators: true
ContinuationIndentWidth: 4
CommentPragmas:  '^ IWYU pragma:'
ForEachMacros:   [ foreach, Q_FOREACH, BOOST_FOREACH ]
SpaceBeforeParens: Never
DisableFormat:   false
...

A  => .gitignore +4 -0
@@ 1,4 @@
src/projects/arvelie/arvelie
src/projects/neralie/neralie
.DS*
*jpg~
\ No newline at end of file

A  => 404.html +50 -0
@@ 1,50 @@
---
permalink: /404.html
---
<!DOCTYPE html>
<html lang='en'>
<head>
  <meta charset='utf-8'>
  <meta name='author' content='Devine Lu Linvega'>
  <meta name='description' content='The Nataniev Library.'/>
  <meta name='keywords' content='Aliceffekt, Devine Lu Linvega, Lietal, Oquonie, Verreciel, Oscean, Solarpunk' />
  <meta name='license' content='name=BY-NC-SA(4.0), url=https://creativecommons.org/licenses/by-nc-sa/4.0/'/>
  <meta name='thumbnail' content='https://wiki.xxiivv.com/media/services/thumbnail.jpg' />
  <meta name='viewport' content='width=device-width, initial-scale=1.0'>
  <link rel='alternate' type='application/rss+xml' title='RSS Feed' href='https://wiki.xxiivv.com/links/rss.xml' />
  <link rel='shortcut icon' type='image/png' href='https://wiki.xxiivv.com/media/services/icon.png'>
  <link rel='stylesheet' type='text/css' href='https://wiki.xxiivv.com/links/main.css'>
  <noscript>
    <meta http-equiv='refresh' content='0; url=site/index.html' />
  </noscript>
  <title>XXIIVV — Halting</title>
</head>
<body>
  <main>
    <p style='max-width: 500px'>Your destination could not be found, please <a href='https://github.com/XXIIVV/oscean/issues/new' target='_blank'>report the broken route</a>, or visit the <a href='https://wiki.xxiivv.com/site/index.html'>index</a>.</p>
  </main>
  <script>
    'use strict'

    const parts = window.location.pathname.split("/")
    const target = parts.slice(-1)
    const filename = toFilename(target[0])
    const filepath = `https://wiki.xxiivv.com/site/${filename}.html`

    if(UrlExists(filepath)){
      window.location.replace(filepath)
    }

    function toFilename(str){
      return `${str}`.replace('#','').replace(/[\W_]+/g,"_").toLowerCase().trim()
    }

    function UrlExists(url) {
      const http = new XMLHttpRequest()
      http.open('HEAD', url, false)
      http.send()
      return http.status!=404
    }
  </script>
</body>
</html>

A  => CNAME +1 -0
@@ 1,1 @@
wiki.ijams.me

A  => LICENSE +22 -0
@@ 1,22 @@
MIT License

Copyright (c) Devine Lu Linvega
Copyright (c) Nathaniel Ijams ~ additions & modifications

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

A  => README.md +33 -0
@@ 1,33 @@
# Mountaen 

*A wiki created using the Oscean static wiki engine.* 

This is the repository for the [Mountaen wiki](http://wiki.ijams.me/), see the [on-site documentation](http://wiki.ijams.me/About) for more up-to-date details. Mountaen is a _static site_ written in [ANSI C](https://en.wikipedia.org/wiki/ANSI_C), the database tables are in the human-readable plaintext [ndtl](https://wiki.xxiivv.com/site/indental.html)/[tbtl](https://wiki.xxiivv.com/site/tablatal.html). The lexicon body uses a [simple markup language](https://wiki.xxiivv.com/site/meta.html).

The Master Branch is the **live version**.

## Build

```
cd src/
time ./build.sh
```

### Haste

Oscean can be compiled with the [Tiny C Compiler](https://bellard.org/tcc/), and Plan9's [POSIX Compiler](http://doc.cat-v.org/plan_9/4th_edition/papers/ape) in about 100 milliseconds on a Raspberry Pi.

```
tcc main.c -o main
pcc main.c -o main
clang main.c -o main
```

## Extras

- Patches are welcome.
- See the [License](LICENSE) file for license rights and limitations(MIT), the media assets are [BY-NC-SA 4.0](http://wiki.ijams.me/About).

## Attributions

Oscean is written by Devine Lu Linvega. Many of the pages on my wiki are taken in large part or entirely from their site: https://wiki.xxiivv.com/.

A  => index.html +36 -0
@@ 1,36 @@
<!DOCTYPE html>
<html lang='en'>
<head>
  <meta charset='utf-8'>
  <meta name='author' content='Devine Lu Linvega'>
  <meta name='description' content='The Nataniev Library.'/>
  <meta name='keywords' content='Aliceffekt, Devine Lu Linvega, Lietal, Oquonie, Verreciel, Oscean, Solarpunk' />
  <meta name='license' content='name=BY-NC-SA(4.0), url=https://creativecommons.org/licenses/by-nc-sa/4.0/'/>
  <meta name='thumbnail' content='https://wiki.xxiivv.com/media/services/thumbnail.jpg' />
  <meta name='viewport' content='width=device-width, initial-scale=1.0'>
  <link rel='alternate' type='application/rss+xml' title='RSS Feed' href='links/rss.xml' />
  <link rel='shortcut icon' type='image/png' href='media/services/icon.png'>
  <link rel='stylesheet' type='text/css' href='links/main.css'>
  <noscript>
    <meta http-equiv='refresh' content='0; url=site/home.html' />
  </noscript>
  <title>XXIIVV — In Transit</title>
</head>
<body>
  <main>
    <p>In transit, toward <a href='site/home.html' target='_blank'>/home</a>.</p>
  </main>

  <script>
    'use strict'
    
    const filename = toFilename(window.location.hash || 'home')

    window.location.replace(`./site/${filename}.html`)

    function toFilename(str) {
      return `${str}`.replace('#','').replace(/[\W_]+/g,"_").toLowerCase().trim()
    }
  </script>
</body>
</html>

A  => links/main.css +30 -0
@@ 1,30 @@
* { margin:0;padding:0;box-sizing:border-box;text-decoration:none;color:black }
body { padding:30px;font-family:serif;font-size:16px } 
body > * { margin-bottom:30px }
body > * > * { margin-bottom:30px }
table td, table th { vertical-align:top;padding:2.5px 5px }
header { float:left;margin: 5px 30px 0 0 } 
nav { margin:0 0 30px } 
nav ul { padding:0;margin:0 45px 30px 0;float:left } 
nav ul li { list-style-type:none;white-space:pre } 
nav ul li a:hover { background:black;color:white } 
main { max-width:624px;clear:both; }
main figure:first-child img { margin-left:-30px;max-width:calc(100vw - 15px);width:900px }
main figure figcaption { max-width:400px }
main pre { overflow: auto;background: #efefef;padding: 10px;font-size: 80% }
main h2 { max-width:400px } 
main h4 { font-style: italic;font-weight: normal } 
main ul, main ol { margin: 0 30px 30px 30px }
main ul ul { margin-bottom:0 }
main p { line-height:160% } 
main a:hover, ::selection { background-color:#000;color:#fff;text-decoration:none } 
main a:before { content:"{" }
main a:after { content:"}" }
main a[target="_blank"]:before { content:"[" }
main a[target="_blank"]:after { content:"]" }
main q { font-family:serif;font-size:18px;font-style:italic;display:block;max-width: 400px } 
main img { max-width:100%;display:block;margin:0 0 10px } 
main svg { max-width:100%;display:block;margin:0 0 10px } 
footer { border-top:1.5px solid;padding:30px 0 0 0;clear:both } 
footer img { margin:0 0 -10px 0;width:30px } 
footer > * { display:inline-block;margin-right:5px }

A  => links/rss.xml +13 -0
@@ 1,13 @@
<?xml version='1.0' encoding='UTF-8' ?>
<rss version='2.0' xmlns:dc='http://purl.org/dc/elements/1.1/'>
<channel>
<title>XXIIVV</title>
<link>https://wiki.ijams.me/Journal</link>
<description>The Latourian Library</description>
<lastBuildDate>Tue, 01 Sep 2020 00:00:00 +0900</lastBuildDate>
<image>
  <url>https://wiki.ijams.me/media/services/rss.jpg</url>
  <title>The Latourian Library</title>
  <link>https://wiki.ijams.me/Journal</link>
</image>
</channel></rss>
\ No newline at end of file

A  => media/icon/cc.svg +18 -0
@@ 1,18 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
	 viewBox="0 0 96 96" style="enable-background:new 0 0 96 96;" xml:space="preserve">
	<g>
		<path style="fill:#030104;" d="M47.358,0.004C20.85,0.357-0.351,22.133,0.004,48.641c0.354,26.507,22.129,47.71,48.637,47.354
			c26.506-0.354,47.71-22.129,47.354-48.638C95.642,20.85,73.862-0.352,47.358,0.004z M48.506,85.892
			c-20.928,0.279-38.119-16.459-38.398-37.388C9.829,27.578,26.567,10.387,47.493,10.107C68.42,9.828,85.61,26.564,85.891,47.492
			C86.17,68.421,69.432,85.61,48.506,85.892z M36.254,56.132c-2.027,0-3.562-0.738-4.602-2.219c-1.041-1.479-1.559-3.45-1.559-5.915
			c0-5.42,2.053-8.131,6.16-8.131c0.82,0,1.711,0.273,2.668,0.82c0.957,0.549,1.766,1.508,2.424,2.875l6.16-3.203
			c-2.463-4.436-6.545-6.654-12.24-6.654c-3.889,0-7.104,1.287-9.648,3.861c-2.547,2.574-3.822,6.051-3.822,10.432
			c0,4.491,1.262,7.997,3.779,10.517s5.834,3.777,9.941,3.777c2.572,0,4.928-0.645,7.062-1.93c2.135-1.287,3.807-3.053,5.012-5.299
			l-5.67-2.876C40.825,54.817,38.936,56.132,36.254,56.132z M62.786,56.132c-2.027,0-3.561-0.738-4.6-2.219
			c-1.041-1.479-1.561-3.45-1.561-5.915c0-5.42,2.053-8.131,6.16-8.131c0.875,0,1.793,0.273,2.75,0.82
			c0.959,0.549,1.768,1.508,2.426,2.875l6.076-3.203c-2.41-4.436-6.461-6.654-12.156-6.654c-3.889,0-7.105,1.287-9.652,3.861
			c-2.545,2.574-3.816,6.051-3.816,10.432c0,4.491,1.244,7.997,3.736,10.517c2.49,2.52,5.818,3.777,9.98,3.777
			c2.518,0,4.846-0.645,6.98-1.93c2.135-1.287,3.832-3.053,5.094-5.299l-5.75-2.876C67.358,54.817,65.467,56.132,62.786,56.132z"/>
	</g>
</svg>

A  => media/icon/fosstodon.png +0 -0
A  => media/icon/logo.svg +117 -0
@@ 1,117 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
   xmlns:dc="http://purl.org/dc/elements/1.1/"
   xmlns:cc="http://creativecommons.org/ns#"
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:svg="http://www.w3.org/2000/svg"
   xmlns="http://www.w3.org/2000/svg"
   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
   version="1.1"
   style="fill:none"
   width="78.197052"
   height="31.999998"
   id="svg16"
   sodipodi:docname="logo.svg"
   inkscape:version="1.0 (4035a4f, 2020-05-01)">
  <metadata
     id="metadata22">
    <rdf:RDF>
      <cc:Work
         rdf:about="">
        <dc:format>image/svg+xml</dc:format>
        <dc:type
           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
      </cc:Work>
    </rdf:RDF>
  </metadata>
  <defs
     id="defs20" />
  <sodipodi:namedview
     inkscape:document-rotation="0"
     pagecolor="#ffffff"
     bordercolor="#666666"
     borderopacity="1"
     objecttolerance="10"
     gridtolerance="10"
     guidetolerance="10"
     inkscape:pageopacity="0"
     inkscape:pageshadow="2"
     inkscape:window-width="1280"
     inkscape:window-height="755"
     id="namedview18"
     showgrid="false"
     inkscape:zoom="1.2721306"
     inkscape:cx="164.92693"
     inkscape:cy="38.717493"
     inkscape:window-x="0"
     inkscape:window-y="23"
     inkscape:window-maximized="0"
     inkscape:current-layer="svg16" />
  <path
     style="fill:none;stroke:#6a6a6a;stroke-width:15px;stroke-linecap:round;stroke-linejoin:round"
     d=""
     id="path10" />
  <path
     style="fill:none;stroke:#4a4a4a;stroke-width:15px;stroke-linecap:round;stroke-linejoin:round"
     d=""
     id="path12" />
  <path
     style="fill:none;stroke:#0a0a0a;stroke-width:1.0266px;stroke-linecap:square;stroke-linejoin:round"
     d="m 15.912315,31.311334 v 0 V 0.51330007 A 15.399017,15.399017 0 0 1 31.311331,15.912317 M 15.912315,0.51330007 A 15.399017,15.399017 0 0 0 0.5133,15.912317 m 30.798031,0 v 0 h 30.798035 v 0 -15.39901693 m 0,15.39901693 A 15.399017,15.399017 0 0 0 46.710349,0.51330007 v 0 A 15.399017,15.399017 0 0 0 31.311331,15.912317 v 0 a 15.399017,15.399017 0 0 0 15.399018,15.399017 v 0 A 15.399017,15.399017 0 0 0 62.109366,15.912317 v 0 l 7.699511,15.399017 m 7.699509,-15.399017 v 0 l -7.699509,15.399017 m 7.699509,-15.399017 v 0 V 0.51330007 M 31.311331,15.912317 v 0 H 15.912315 q 7.699509,11.549263 15.399016,15.399017 7.699509,0 15.399018,0"
     id="path14" />
  <rect
     id="rect24"
     width="320.14059"
     height="138.32161"
     x="-8.4130077"
     y="-7.5430603" />
  <rect
     id="rect26"
     width="320.14062"
     height="138.32159"
     x="-8.4130077"
     y="-7.5430603" />
  <rect
     id="rect28"
     width="320.14059"
     height="138.32159"
     x="-8.4130077"
     y="-7.5430603" />
  <rect
     id="rect30"
     width="320.14062"
     height="138.32159"
     x="-8.4130077"
     y="-7.5430603" />
  <rect
     id="rect32"
     width="320.14062"
     height="138.32159"
     x="-8.4130077"
     y="-7.5430603" />
  <rect
     id="rect34"
     width="328.84012"
     height="145.28117"
     x="-17.112476"
     y="-14.502636" />
  <rect
     id="rect36"
     width="344.97275"
     height="153.3624"
     x="-17.112476"
     y="-14.502636" />
  <rect
     id="rect38"
     width="320.14062"
     height="138.32159"
     x="-8.4130077"
     y="-7.5430603" />
  <rect
     id="rect40"
     width="320.14062"
     height="138.32159"
     x="-8.4130077"
     y="-7.5430603" />
</svg>

A  => media/icon/sourcehut.svg +4 -0
@@ 1,4 @@
<svg version="1.1" baseProfile="full" xmlns="http://www.w3.org/2000/svg" height='512' width='512'>
	<path d='
M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm0 448c-110.5 0-200-89.5-200-200S145.5 56 256 56s200 89.5 200 200-89.5 200-200 200z' stroke='black' stroke-width='1.5' fill='black' stroke-linecap='round'/>
</svg>

A  => media/identity/orb.png +0 -0
A  => media/logo-2.svg +11 -0
@@ 1,11 @@
--2020-09-01 11:59:54--  https://wiki.xxiivv.com/media/icon/logo.svg
Resolving wiki.xxiivv.com (wiki.xxiivv.com)... 185.199.108.153, 185.199.110.153, 185.199.111.153, ...
Connecting to wiki.xxiivv.com (wiki.xxiivv.com)|185.199.108.153|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 378 [image/svg+xml]
Saving to: ‘logo.svg’

     0K                                                       100% 5.46M=0s

2020-09-01 11:59:54 (5.46 MB/s) - ‘logo.svg’ saved [378/378]


A  => media/logo.svg +22 -0
@@ 1,22 @@
<svg version="1.1" baseProfile="full" xmlns="http://www.w3.org/2000/svg" height='32' width='138'>
	<path d='
M 1 31
l 0 -22.5 
a 7.5,7.5 0 1,1 15,0
l 0 15 
a 7.5,7.5 0 0,0 15,0
l 0 -15
a 7.5,7.5 0 1,1 15,0
l 0 22.5 
l 15 0 
l 0 -30
l 15 0 
l 0 30 
l 15 0 
l 0 -30
l 0.5 0 
l 15 30
l 15 -30
l 15 30
' stroke='black' stroke-width='1.5' fill='none' stroke-linecap='round'/>
</svg>

A  => site/about.html +1 -0
@@ 1,1 @@
<!DOCTYPE html><html lang='en'><head><meta charset='utf-8'><meta name='description' content='This wiki is a digital playground and personal logging system.'/><meta name='thumbnail' content='https://wiki.ijams.me/media/services/thumbnail.jpg' /><link rel='alternate' type='application/rss+xml' title='RSS Feed' href='../links/rss.xml' /><link rel='stylesheet' type='text/css' href='../links/main.css'><link rel='shortcut icon' type='image/png' href='../media/services/icon.png'><title>Tellurium — about</title></head><body><header><a href='home.html'><img src='../media/icon/logo.svg' alt='Tellurium'></a></header><nav><ul><li><a href='audio.html'>audio</a></li><li><a href='visual.html'>visual</a></li><li><a href='research.html'>research</a></li><li><a href='about.html'>about/</a></li></ul><ul><li><a href='nathaniel_ijams.html'>nathaniel ijams</a></li><li><a href='meta.html'>meta</a></li></ul></nav><main><h2>This wiki is a digital playground and personal logging system.</h2><p>The aim of this wiki is to build a form of <b>personal assistant</b> to help with the management of a vast repository of recorded statistics which includes tracker, notes on index and mirrors.</p><p>Oscean is written in portable ansi_c to be compiled on the Plan9 operating system, and maintained from hardware. It is built to adapt to my needs as they change, and to longtermism. The databases are in the tablatal/indental human-readable plaintext formats.</p><p>Each part of this project should aim to persist across longtermism, not one part of it should rely on heavy dependencies. — Every function should be <b>specific</b>, <b>unobfuscated</b>, and each one carefully chosen against general-purpose libraries, frameworks or wasteful foreign entities.</p><p>Using this tool should be <b>frictionless and undisruptive</b>, its formats and subsequent products versionable, re-purposable, interpretable and text-editable. Only through <b>open sources, open standards, human-readable formats</b> and their independencies, might they survive this fleeting age of self-destructing informatics.</p><p>These attributes should not only be <b>perceptible in its design</b>, <br />but deeply <b>rooted in its code</b>.</p><p>This type of website is a often referred to as a "memex", a kind of archive and mirror of everything that one has done, that one has learnt. It's a living document that outlines where one has been, and a tool that advises where one could go.</p><q>Consider a future device, a sort of mechanized private library in which an individual stores all his books, records, and communications, and which may be consulted with exceeding speed and flexibility. It is an enlarged intimate supplement to his memory.</q><h5>—Vannevar Bush, As We May Think</h5><h3>License</h3><p>The license applies to all the <b>documented projects, the projects themselves and their assets</b>. The <a href='http://github.com/XXIIVV/Oscean' target='_blank'>platform code</a> is under the <b>MIT License</b>. The <a href='https://creativecommons.org/licenses/by-nc-sa/4.0/' target='_blank'>assets and text content</a> is under the <b>BY-NC-SA4.0 License</b>.</p><p><i>You are free to</i>: <b>Share</b>: copy and redistribute the material in any medium or format. <b>Adapt</b>: remix, transform, and build upon the material.</p><p><i>Under the following terms</i>: <b>Attribution</b>: You must give appropriate credit. <b>NonCommercial</b>: You may not use the material for commercial purposes. <b>ShareAlike</b>: You must distribute your contributions under the same license.</p><p>You can learn more about the oscean by visiting the nataniev portal, or by reading the faqs. You can download a copy of the entire website content and sources as a <a href='https://github.com/XXIIVV/Oscean/archive/master.zip' target='_blank'>.zip</a>.</p><p>If you have any <b>question or feedback</b>, please submit a <a href='https://todo.sr.ht/~exprez135/oscean/issues/new' target='_blank'>bug report</a>, for any additional informations, contact <a href='nathaniel_ijams.html'>Nathaniel Ijams</a>. </p><h3>Attributions</h3><p>This page, Oscean, and my inspiration comes from the work of <a href='https://wiki.xxiivv.com' target='_blank'>Devine Lu Lingeva</a>.</p><ul><li><a href='https://git.sr.ht/~exprez135/oscean' target='_blank'>source files</a></li><li><a href='https://github.com/XXIIVV/oscean' target='_blank'>original work</a></li><li><a href='https://wiki.ijams.me/links/rss.xml' target='_blank'>rss feed</a></li></ul><p><i>incoming(1)</i>: <a href='nathaniel_ijams.html'>nathaniel ijams</a> </p></main><footer><a href='https://creativecommons.org/licenses/by-nc-sa/4.0'><img src='../media/icon/cc.svg' alt='creative commons'/></a></a><a href='https://fosstodon.org/@exprez135'><img src='../media/icon/fosstodon.png' alt='exprez135@fosstodon.org'/></a><a href='https://git.sr.ht/~exprez135'><img src='../media/icon/sourcehut.svg' alt='sourcehut'/></a><span><a href='nathaniel_ijams.html'>Nathaniel Ijams</a> © 2020 — <a href='about.html'>BY-NC-SA 4.0</a></span></footer></body></html>
\ No newline at end of file

A  => site/audio.html +1 -0
@@ 1,1 @@
<!DOCTYPE html><html lang='en'><head><meta charset='utf-8'><meta name='description' content='The Audio portal hosts various soundtrack, records and live projects.'/><meta name='thumbnail' content='https://wiki.ijams.me/media/services/thumbnail.jpg' /><link rel='alternate' type='application/rss+xml' title='RSS Feed' href='../links/rss.xml' /><link rel='stylesheet' type='text/css' href='../links/main.css'><link rel='shortcut icon' type='image/png' href='../media/services/icon.png'><title>Tellurium — audio</title></head><body><header><a href='home.html'><img src='../media/icon/logo.svg' alt='Tellurium'></a></header><nav><ul><li><a href='audio.html'>audio/</a></li><li><a href='visual.html'>visual</a></li><li><a href='research.html'>research</a></li><li><a href='about.html'>about</a></li></ul><ul></ul></nav><main><h2>The Audio portal hosts various soundtrack, records and live projects.</h2><p>One day many years ago a man walked along and stood in the sound of the ocean on a cold sunless shore and said:</p><p>"We need a voice to call across the water, to warn ships; I'll make one. I'll make a voice like all of time and all of the fog that ever was; I'll make a voice that is like an empty bed beside you all night long, and like an empty house when you open the door, and like trees in autumn with no leaves. A sound like the birds flying south, crying, and a sound like November wind and the sea on the hard, cold shore."</p><p>"I'll make a sound that's so alone that no one can miss it, that whoever hears it will weep in their souls, and hearths will seem warmer, and being inside will seem better to all who hear it in the distant towns.I'll make me a sound and an apparatus and they'll call it a Fog Horn and whoever bears it will know the sadness of eternity and the briefness of life."</p><h5>—Ray Bradbury, The Fog Horn</h5></main><footer><a href='https://creativecommons.org/licenses/by-nc-sa/4.0'><img src='../media/icon/cc.svg' alt='creative commons'/></a></a><a href='https://fosstodon.org/@exprez135'><img src='../media/icon/fosstodon.png' alt='exprez135@fosstodon.org'/></a><a href='https://git.sr.ht/~exprez135'><img src='../media/icon/sourcehut.svg' alt='sourcehut'/></a><span><a href='nathaniel_ijams.html'>Nathaniel Ijams</a> © 2020 — <a href='about.html'>BY-NC-SA 4.0</a></span></footer></body></html>
\ No newline at end of file

A  => site/home.html +1 -0
@@ 1,1 @@
<!DOCTYPE html><html lang='en'><head><meta charset='utf-8'><meta name='description' content=''/><meta name='thumbnail' content='https://wiki.ijams.me/media/services/thumbnail.jpg' /><link rel='alternate' type='application/rss+xml' title='RSS Feed' href='../links/rss.xml' /><link rel='stylesheet' type='text/css' href='../links/main.css'><link rel='shortcut icon' type='image/png' href='../media/services/icon.png'><title>Tellurium — home</title></head><body><header><a href='home.html'><img src='../media/icon/logo.svg' alt='Tellurium'></a></header><nav><ul><li><a href='audio.html'>audio</a></li><li><a href='visual.html'>visual</a></li><li><a href='research.html'>research</a></li><li><a href='about.html'>about</a></li></ul></nav><main><h2></h2><img src='../media/identity/orb.png'/><p>See tracker.</p></main><footer><a href='https://creativecommons.org/licenses/by-nc-sa/4.0'><img src='../media/icon/cc.svg' alt='creative commons'/></a></a><a href='https://fosstodon.org/@exprez135'><img src='../media/icon/fosstodon.png' alt='exprez135@fosstodon.org'/></a><a href='https://git.sr.ht/~exprez135'><img src='../media/icon/sourcehut.svg' alt='sourcehut'/></a><span><a href='nathaniel_ijams.html'>Nathaniel Ijams</a> © 2020 — <a href='about.html'>BY-NC-SA 4.0</a></span></footer></body></html>
\ No newline at end of file

A  => site/meta.html +30 -0
@@ 1,30 @@
<!DOCTYPE html><html lang='en'><head><meta charset='utf-8'><meta name='description' content='Various notes on the wiki itself.'/><meta name='thumbnail' content='https://wiki.ijams.me/media/services/thumbnail.jpg' /><link rel='alternate' type='application/rss+xml' title='RSS Feed' href='../links/rss.xml' /><link rel='stylesheet' type='text/css' href='../links/main.css'><link rel='shortcut icon' type='image/png' href='../media/services/icon.png'><title>Tellurium — meta</title></head><body><header><a href='home.html'><img src='../media/icon/logo.svg' alt='Tellurium'></a></header><nav><ul><li><a href='audio.html'>audio</a></li><li><a href='visual.html'>visual</a></li><li><a href='research.html'>research</a></li><li><a href='about.html'>about/</a></li></ul><ul><li><a href='nathaniel_ijams.html'>nathaniel ijams</a></li><li><a href='meta.html'>meta/</a></li></ul><ul></ul></nav><main><h2>Various notes on the wiki itself.</h2><h3>Templating</h3><table border='1'><tr><th>plaint text</th><th>result</th><th>name</th></tr><tr><td><code>&#123;zoe_format&#125;</code></td><td>zoe_format</td><td>send</td></tr><tr><td><code>&#123;https://xxiivv.com&#125;</code></td><td><a href='https://xxiivv.com' target='_blank'>https://xxiivv.com</a></td><td>link</td></tr><tr><td><code>&#123;zoe_format send description&#125;</code></td><td>zoe_format</td><td>send named</td></tr><tr><td><code>&#123;https://xxiivv.com link description&#125;</code></td><td><a href='https://xxiivv.com' target='_blank'>link description</a></td><td>link named</td></tr><tr><td><code>&#123;^img refs/mos6502.jpg 100&#125;</code></td><td><img src='../media/refs/mos6502.jpg' width='100'/></td><td>image</td></tr></table><h3>Units</h3><ul><li>Neauismetica graphics are 640x405^2</li></ul><h1>header1</h1>
<h2>header2</h2>
<h3>header3</h3>
<h4>header4</h4>
<h5>header5</h5>

<p>This is a paragraph, with <b>bold</b>, <i>italic</i> and a <a href=''>link</a>.</p>

<ul>
  <li>This is a list, with:</li>
  <li><b>bold</b></li>
  <li><i>italic</i></li>
  <li><a href=''>link</a></li>
</ul>

<table border='1'>
  <tr><th>This is a table header, with <b>bold</b>, <i>italic</i> and a <a href=''>link</a>.</th></tr>
  <tr><td>This is a table row, with <b>bold</b>, <i>italic</i> and a <a href=''>link</a>.</td></tr>
</table>

<pre>This is a pre block, with <b>bold</b>, <i>italic</i> and a <a href=''>link</a>.</pre>

<q>This is a quote block, with <b>bold</b>, <i>italic</i> and a <a href=''>link</a>.</q>
<h5>—Author, Source</h5>

<figure>
  <img src='../media/diary/216.jpg' alt='Maude picture'/>
  <figcaption>This is a figcaption with <b>bold</b>, <i>italic</i> and a <a href=''>link</a>.</figcaption>
</figure>
<p>Found a mistake? Submit an <a href='https://git.sr.ht/raw/meta.htm' target='_blank'>patch</a> to meta.</p><ul><li><a href='https://youtu.be/dd-x2WZ1rzI' target='_blank'>You Have Already Gone to the Other World</a></li></ul></main><footer><a href='https://creativecommons.org/licenses/by-nc-sa/4.0'><img src='../media/icon/cc.svg' alt='creative commons'/></a></a><a href='https://fosstodon.org/@exprez135'><img src='../media/icon/fosstodon.png' alt='exprez135@fosstodon.org'/></a><a href='https://git.sr.ht/~exprez135'><img src='../media/icon/sourcehut.svg' alt='sourcehut'/></a><span><a href='nathaniel_ijams.html'>Nathaniel Ijams</a> © 2020 — <a href='about.html'>BY-NC-SA 4.0</a></span></footer></body></html>
\ No newline at end of file

A  => site/nathaniel_ijams.html +1 -0
@@ 1,1 @@
<!DOCTYPE html><html lang='en'><head><meta charset='utf-8'><meta name='description' content='Nathaniel Ijams is an enthusiast.'/><meta name='thumbnail' content='https://wiki.ijams.me/media/services/thumbnail.jpg' /><link rel='alternate' type='application/rss+xml' title='RSS Feed' href='../links/rss.xml' /><link rel='stylesheet' type='text/css' href='../links/main.css'><link rel='shortcut icon' type='image/png' href='../media/services/icon.png'><title>Tellurium — nathaniel ijams</title></head><body><header><a href='home.html'><img src='../media/icon/logo.svg' alt='Tellurium'></a></header><nav><ul><li><a href='audio.html'>audio</a></li><li><a href='visual.html'>visual</a></li><li><a href='research.html'>research</a></li><li><a href='about.html'>about/</a></li></ul><ul><li><a href='nathaniel_ijams.html'>nathaniel ijams/</a></li><li><a href='meta.html'>meta</a></li></ul><ul></ul></nav><main><h2>Nathaniel Ijams is an enthusiast.</h2><p><b>Nathaniel Ijams</b> is studying at columbia, developing <a href='research.html'>poorly written software</a>, learning to <a href='visual.html'>illustrate</a>, and exploring travel.</p><p>Since 2020, Nate has been populating this <a href='about.html'>wiki</a> with notes on various topics, including on language, lifestyle, and nutrition. You can learn about his <b>related interests</b> in the mirrors, and in the directory.</p><p>Get in touch via email at <b>nate@ijams.me</b>, or<br /> on the fediverse at <b><a href='https://fosstodon.org/@exprez135' target='_blank'>fosstodon.org/@exprez135</a></b>.</p><q>To flee is Life,<br />To linger, death.</q><p><i>incoming(1)</i>: <a href='about.html'>about</a> </p></main><footer><a href='https://creativecommons.org/licenses/by-nc-sa/4.0'><img src='../media/icon/cc.svg' alt='creative commons'/></a></a><a href='https://fosstodon.org/@exprez135'><img src='../media/icon/fosstodon.png' alt='exprez135@fosstodon.org'/></a><a href='https://git.sr.ht/~exprez135'><img src='../media/icon/sourcehut.svg' alt='sourcehut'/></a><span><a href='nathaniel_ijams.html'>Nathaniel Ijams</a> © 2020 — <a href='about.html'>BY-NC-SA 4.0</a></span></footer></body></html>
\ No newline at end of file

A  => site/research.html +1 -0
@@ 1,1 @@
<!DOCTYPE html><html lang='en'><head><meta charset='utf-8'><meta name='description' content='The Research hosts philosophy and linguistics projects.'/><meta name='thumbnail' content='https://wiki.ijams.me/media/services/thumbnail.jpg' /><link rel='alternate' type='application/rss+xml' title='RSS Feed' href='../links/rss.xml' /><link rel='stylesheet' type='text/css' href='../links/main.css'><link rel='shortcut icon' type='image/png' href='../media/services/icon.png'><title>Tellurium — research</title></head><body><header><a href='home.html'><img src='../media/icon/logo.svg' alt='Tellurium'></a></header><nav><ul><li><a href='audio.html'>audio</a></li><li><a href='visual.html'>visual</a></li><li><a href='research.html'>research/</a></li><li><a href='about.html'>about</a></li></ul><ul></ul></nav><main><h2>The Research hosts philosophy and linguistics projects.</h2><p><i>incoming(1)</i>: <a href='nathaniel_ijams.html'>nathaniel ijams</a> </p></main><footer><a href='https://creativecommons.org/licenses/by-nc-sa/4.0'><img src='../media/icon/cc.svg' alt='creative commons'/></a></a><a href='https://fosstodon.org/@exprez135'><img src='../media/icon/fosstodon.png' alt='exprez135@fosstodon.org'/></a><a href='https://git.sr.ht/~exprez135'><img src='../media/icon/sourcehut.svg' alt='sourcehut'/></a><span><a href='nathaniel_ijams.html'>Nathaniel Ijams</a> © 2020 — <a href='about.html'>BY-NC-SA 4.0</a></span></footer></body></html>
\ No newline at end of file

A  => site/visual.html +1 -0
@@ 1,1 @@
<!DOCTYPE html><html lang='en'><head><meta charset='utf-8'><meta name='description' content='The Visual hosts design and interaction projects.'/><meta name='thumbnail' content='https://wiki.ijams.me/media/services/thumbnail.jpg' /><link rel='alternate' type='application/rss+xml' title='RSS Feed' href='../links/rss.xml' /><link rel='stylesheet' type='text/css' href='../links/main.css'><link rel='shortcut icon' type='image/png' href='../media/services/icon.png'><title>Tellurium — visual</title></head><body><header><a href='home.html'><img src='../media/icon/logo.svg' alt='Tellurium'></a></header><nav><ul><li><a href='audio.html'>audio</a></li><li><a href='visual.html'>visual/</a></li><li><a href='research.html'>research</a></li><li><a href='about.html'>about</a></li></ul><ul></ul></nav><main><h2>The Visual hosts design and interaction projects.</h2><p><i>incoming(1)</i>: <a href='nathaniel_ijams.html'>nathaniel ijams</a> </p></main><footer><a href='https://creativecommons.org/licenses/by-nc-sa/4.0'><img src='../media/icon/cc.svg' alt='creative commons'/></a></a><a href='https://fosstodon.org/@exprez135'><img src='../media/icon/fosstodon.png' alt='exprez135@fosstodon.org'/></a><a href='https://git.sr.ht/~exprez135'><img src='../media/icon/sourcehut.svg' alt='sourcehut'/></a><span><a href='nathaniel_ijams.html'>Nathaniel Ijams</a> © 2020 — <a href='about.html'>BY-NC-SA 4.0</a></span></footer></body></html>
\ No newline at end of file

A  => src/build.sh +22 -0
@@ 1,22 @@
#!/bin/bash

clang-format -i main.c
clang-format -i helpers.c

# Linux
# cc -std=c89 -DDEBUG -Wall -Wpedantic -Wshadow -Wextra -Werror=implicit-int -Werror=incompatible-pointer-types -Werror=int-conversion -Wvla -g -Og -fsanitize=address -fsanitize=undefined main.c -o main

# RPi
# tcc -Wall main.c -o main

# Plan9
# pcc main.c -o main

# macOS
clang main.c -o main

rm ../site/*

./main

rm ./main

A  => src/database/asulodeta.tbtl +213 -0
@@ 1,213 @@
;        ENGLISH             NOTE                                                    END
fy       action
fo       to be
fi       to do
fa       to see
vy       alignment
vo       negative
vi       positive
foro     to come
forida   to grow
foriko   to enter
foriki   to leave
fori     to go
forada   to wait
fora     to stay
fifa     to visit
foki     to have
filo     to remove
fili     to divide
fiso     to substract
fisido   to assemble
fisida   to merge
fisafa   to organise
fisaly   to sort
firy     to align
firo     to take
firi     to give
fira     to hold
fidasy   to live
fito     to build
fiti     to imagine
fita     to design
fiko     to insert
fiki     to wrap
faji     to find
faja     to want
falida   to meet
fary     to travel
fasy     to contact
faroti   to think
fadoroty to dream
fadota   to study
faro     to listen
fari     to show
fati     to understand
faviro   to welcome
fatato   to speak
viro     welcome
vira     hello
viri     bye
vita     well
vifi     well done
vafy     how
valy     which
varo     where from
vari     where to
vado     what
vadi     when
vada     who
vaka     where
va       unknown
jy       modality
jofy     could not
jo       impossible
jify     must
jiri     directly
ji       definitive
jafy     could
javi     want
jafo     how be
jafi     how do
vyja     please
jafa     can see
ja       possible
lyfalo   red
lyfa     color
lyry     span
lyri     increment
lyro     decrement
lyra     speed
lyki     more
lyka     even
lyko     less
lydafo   heart
lydafa   eye
lydafi   hand
lydary   feet
lydaky   leg
lydata   skin
lydati   head
lyda     organ
ly       counter
lyta     style
tadota   icon
lytadota alphabet
lora     slow
lo       none
lila     each
liro     we
liri     yous
lira     they
li       multiple
laroko   my
laro     i
lari     you
lara     he she
lady     version
ladota   word
la       single
sy       relation
sori     perpendicular
so       separate
soja     or
siri     overlap
sika     near
si       unit
saladota dictionary
sari     parallel
sadoky   guide
sada     organisation
sako     assembled
sa       together
ry       direction
rydota   syntax
kydota   morphology
rori     inside out
rodi     night
roka     from
ro       inward
rido     wear
ridi     entropy
rida     growth
rika     toward
riko     downward
rivi     better
rivo     worse
riki     upward
ri       outward
radoti   school
radi     now
ra       position
dy       scale
dofi     tool
dofa     movie
doja     story
dojafy   project
dodi     moment
dota     concept
doti     thought
doky     path                As opposed to way, a synthetic traverse.
doki     room
doka     place
doroty   dream
do       synthetic
diji     imperative
dija     potential
dily     day
dilali   tomorrow
dila     today
diro     past
diri     future
dira     present
di       complex
dafity   polymath
dafito   musician
dafita   artist
dafiti   developer
dali     beings
dala     person
dasy     life
daro     female
dari     male
daki     parents
da       organic
tyfa     mastery
ty       state
tydi     vibration
sitydi   sound               The sum of vibrations.
sysitydi phonology
tafy     manner
todota   book
dokaki   house
kaki     home
to       physic
tiro     learning
ti       psychologic
taly     number
talo     few
taro     small
tari     large
tara     normal
tady     name
tati     language
tata     design
ta       phisionomic
ky       traverse
kodo     part
kodi     event
kodiri   soon
koto     under
koti     idea
ko       child
ki       parent
kasa     between
karo     inside
kari     outside
kafi     office
kara     there
kadoti   library
ka       location
vidi     stable
vida     health
vido     solid
\ No newline at end of file

A  => src/database/glossary.ndtl +885 -0
@@ 1,885 @@
; The glossary is a collection of lists
; https://wiki.xxiivv.com/site/indental.html

; Dictionaries

DICTIONARY
  Anthropomorphism : Attributing distinctly human characteristics to nonhuman processes.
  Antifragile : Some things benefit from shocks, they thrive and grow when exposed to volatility, randomness, disorder, stressors, risk, and uncertainty.
  Parsimony : Refers to the quality of economy or frugality in the use of resources.
  Lateralus : The affliction of illusion of inescapable cyclicality. Example: The failure to recognize one's growth, inability to dream of unprecedented things, ceding to self-reinforcing systems, being jaded to hope, waiting for nonexistent chickens to hatch from nonexistent eggs.
  Rationality : Characteristic of thinking and acting optimally.
  Epistemology : A theory of knowledge, especially with regard to its methods, validity, and scope, and the distinction between justified belief and opinion.

PRINCIPLES
  Occam's Razor : When several theories are able to explain the same observations, Occam's razor suggests the one making the fewest assumptions.
  Kolmogorov complexity : The length of the shortest possible program to output a given object.
  Kardashev scale : A measure of a civilization's level of technological advancement based on the amount of energy used for communication.
  Levenshtein Distance : A string metric for measuring the difference between two sequences, or comparing the similarity of two words.  
  Bechdel test : A method for evaluating the portrayal of women in fiction. It asks whether a work features at least two women who talk to each other about something other than a man.
  Finkbeiner test : A checklist proposed to help journalists avoid gender bias in media articles about women in science.
  Ship of Theseus : A thought experiment that raises the question of whether an object that has had all of its components replaced remains fundamentally the same object.
  Goodhart’s law : When a measure becomes a target, it ceases to be a good measure.

SPACETIME
  Entropy : Or Irreversibility, a lack of order or predictability, gradual decline into disorder.
  False Vacuum : An hypothetical vacuum(space devoid of matter) that is not entirely stable. If a small region of the universe reached a more stable vacuum, this change would spread.
  Great Filter : With no evidence of intelligent life other than ourselves, it appears that the process of starting with a star and ending with "advanced explosive lasting life" must be unlikely.
  Von Neumann probes : Or Universal Assemblers, A spacecraft capable of replicating itself.
  Final anthropic principle : Intelligent information-processing must come into existence in the Universe, and, once it comes into existence, will never die out.
  Mathematical universe hypothesis : Or Tegmark Universe, our external physical reality is a mathematical structure consisting of starting conditions with rules about how they are to evolve. Any universe that corresponds to a logically coherent mathematical object exists, but universes exist “more”(in some sense) in proportion to their underlying mathematical simplicity.
  Liminality : The quality of ambiguity, or disorientation, that occurs during a middle stage, or a threshold. Liminal places can range from borders and frontiers to crossroads and airports, which people pass through but do not live in.
  Causality : Relationship between a cause and an effect, where the effect is a direct consequence of the cause.
  Eternal Return : A theory that the universe and all existence and energy has been recurring, and will continue to recur, in a self-similar form an infinite number of times across infinite time or space.
  Super now : A type of prediction taking things that are happening now and imagining that the future will be just like now, only “more extreme.”
  Teleology : The study of things that happen for the sake of their future consequences. The fallacious meaning of it is that events are the result of future events.
  Prediction : Statement or claim that a particular event will occur in the future in more certain terms than a forecast.
  Equinox : Twice a year, around 20 March and 22 September, when daytime and nighttime are of approximately equal duration all over the planet.
  Solstice : Twice a year, when either hemisphere has the most sunlight of the year(summer solstice) or the least sunlight of the year(winter solstice) for any place other than the Equator.

AEROPUNK
  Compressed Air Energy Storage : A way to store energy generated at one time for use at another time using compressed air.
  Carbon Fiber Tank : Brittle and can split under sufficient stress, but creates no shrapnel when it does so. Carbon-fiber tanks safely hold air at a pressure somewhere around 4500 psi, making them comparable to steel tanks.
  Stirling Engine : A quiet heat engine that is operated by a cyclic compression and expansion and a flywheel, generating no emissions.
  The Paris Compressed Air Power Network : The city of Paris once had an extensive network for distributing power by compressed air which served more than 10,000 customers and remained in use for 100 years.
  Bicycle With Shaft : Experimental bicyle design that used a shaft connecting the crank to the back wheel instead of a drive chain.
  Rectenna : A circuit that produces a voltage by harvesting the energy from the electromagnetic fields around us trough an antenna.
  Flettner ship : A rotor ship is a type of ship designed to use a rotor sail mounted with its axis vertical. When the wind blows from the side, the Magnus effect creates a forward thrust. 
  Magnus Effect : The Magnus effect is a force acting on a spinning body in a moving airstream, which acts perpendicular to both the direction of the airstream and of the rotor axis.
  Thermoelectric generator : A device that converts temperature differencesdirectly into electrical energy through a thermoelectric phenomenon called the Seebeck effect.

LINGUISTICS
  Gematria : A cipher that assigns numerical value to a word, name, or phrase in the belief that words or phrases with identical numerical values bear some relation to each other.
  Palindrome : A word, number, or other sequence of characters which reads the same backward as forward.
  Ambigram : A word, art form or other symbolic representation whose elements retain meaning when viewed or interpreted from a different direction, perspective, or orientation.
  Leitmotif : A short, constantly recurring musical phrase associated with a particular person, place, or idea.

PSYCHOLOGY LEXICON
  Derealization : An alteration in the perception or experience of the external world so that it seems unreal.
  Solipsism syndrome : A psychological state in which a person feels that the world is not external to his or her mind.
  Qualia : Term used in philosophy to refer to individual instances of subjective, conscious experience. The pain of a headache, or the taste of wine.
  Suggestibility : A form of misattribution where ideas suggested by a questioner are mistaken for memory.
  Priming : Psychological phenomenon that consists in early stimulus influencing later thoughts and behavior.
  Confabulation : Remembering something that never actually happened.
  Salience : The perceptual quality by which an observable thing stands out relative to its environment.
  Method of loci : A method of memory enhancement which uses visualizations with the use of spatial memory to quickly and efficiently recall information.
  Hedonic Treadmill : The tendency of humans to quickly return to a relatively stable level of happiness despite major positive or negative events life changes. As a person makes more money, expectations and desires rise in tandem, which results in no permanent gain in happiness.

PERSONALITIES
  Extraversion Introversion : Represents the source and direction of a person’s energy expression. An extravert’s source and direction of energy expression is mainly in the external world, while an introvert has a source of energy mainly in their own internal world.
  Sensing Intuition : Represents the method by which someone perceives information. Sensing means that a person mainly believes information they receive directly from the external world. Intuition means that a person believes mainly information they receive from the internal or imaginative world.
  Thinking Feeling : Represents how a person processes information. Thinking means that a person makes a decision mainly through logic. Feeling means that, as a rule, they make a decision based on emotion, i.e. based on what they feel they should do.
  Judging Perceiving : Represents how a person implements the information they have processed. Judging means that a person organizes all of his life events and, as a rule, sticks to his plans. Perceiving means that they are inclined to improvise and explore alternative options.

SOCIOLOGY
  Philanthropy : The desire to promote the welfare of others.
  Effective Altruism : A philosophy and social movement that uses evidence and reasoning to determine the most effective ways to benefit others.
  Utilitarianism : A moral philosophy that says that what matters is the sum of everyone's well-being, or the "greatest good for the greatest number".
  Hedonism : A moral philosophy that says that the highest goal is to maximize pleasure(esp. pleasure minus pain), or that the only things that are good or bad are concious states.
  Altruism : Actions undertaken for the benefit of other people. Example: If you do something to feel good about helping people, or even to be a better person in some spiritual sense, it isn't truly altruism.
  Longtermism : A design philosophy to build products for the long term.
  Groupthink : Tendency of humans to tend to agree with each other, and hold back objections or dissent even when the group is wrong.
  
BIASES
  Actor–observer bias : Tendency to overemphasize the influence of their personality and underemphasize the influence of their situation.
  Attentional bias : Tendency to neglect relevant data when making judgments of a correlation or association.
  Choice-supportive bias : Tendency to retroactively ascribing to one's choices to be more informed than they were when they were made.
  Confirmation bias : Tendency to interpret information in a way that confirms one's preconceptions.
  Congruence bias : Tendency to test hypotheses exclusively through direct testing, in contrast to tests of possible alternative hypotheses.
  Regressive bias : Tendency to remember high values and high likelihoods/probabilities/frequencies as lower than they actually were and low ones as higher than they actually were. Based on the evidence, memories are not extreme enough.
  Egocentric bias : Tendency to claim more responsibility for themselves for the results of a joint action than an outside observer would. Recalling the past in a self-serving manner. Like remembering one's exam grades as being better than they were.
  Impact bias : Tendency to overestimate the length or the intensity of the impact of future feeling states.
  Information bias : Tendency to seek information even when it cannot affect action.
  Modesty bias : Tendency to blame failures on oneself while attributing successes to situational factors, opposite of self-serving bias.
  Mood-congruent bias : Tendency to recall information congruent with one's current mood.
  Omission bias : Tendency to judge harmful actions as worse, or less moral, than equally harmful omissions.
  Self-serving bias : Tendency to attribute successes to internal characteristics while blaming failures on outside forces. It may also manifest itself as a tendency for people to evaluate ambiguous information in a way beneficial to their interests.
  Status quo bias : Tendency to like things to stay relatively the same.
  Superiority bias : Tendency to overestimating one's desirable qualities, and underestimating undesirable qualities, relative to other people. Also known as the Lake Wobegon effect.
  Survivorship bias : Tendency of focusing on what has survived to the present and ignoring what must have been lost.
  Trait ascription bias : Tendency for people to view themselves as relatively variable in terms of personality, behavior and mood while viewing others as much more predictable.
  Unit bias : Tendency to want to finish a given unit of a task or an item with strong effects on the consumption of food in particular.
  Exposure-suspicion bias : Tendency to steer the search for causes based on the knowledge of a subject's disease in a medical study.
  Stereotypical bias : Tendency to distort memories towards stereotypes. "Black-sounding" names being misremembered as names of criminals.
  Zero-risk bias : Preference for reducing a small risk to zero over a greater reduction in a larger risk.
  Authority bias : Tendency to attribute greater accuracy to the opinion of an authority figure and be more influenced by that opinion.
  Correspondence bias : Tendency to overestimate the contribution of lasting traits and dispositions, as opposed to situational effects, in determining people's behavior.
  Obsequiousness bias : Tendency to alter responses in the direction they perceive desired by the investigator.
  Unacceptability bias : Tendency of evading questions that may embarrass or invade privacy.
  Projection bias : Tendency to assume that others share the same or similar thoughts, beliefs, values, or positions.
  Consistency bias : Tendency to incorrectly remember one's past attitudes and behaviour as resembling present attitudes and behaviour.
  Hindsight bias : Tendency to see past events as predictable, based on knowledge of later events. Also known as the "I-knew-it-all-along" effect.
  Optimism bias : Tendency to be over-optimistic about the outcome of planned actions.
  Outcome bias : Tendency to judge a decision by its eventual outcome instead of based on the quality of the decision at the time it was made.
  Positive bias : Tendency to test hypotheses with positive rather than negative examples, thus risking to miss obvious disconfirming tests.
  Positive outcome bias : Tendency to overestimate the probability of good things happening to them.

GROUPTHINK BIASES
  Conformity bias : Tendency to behave similarly to others in a group, even if doing so goes against your own judgment.
  Ingroup bias : Tendency to give preferential treatment to others they perceive to be members of their own groups.
  Homogeneity bias : Tendency of people to see members of their own group as being relatively more varied than members of other groups.
  Shared information bias : Tendency for group members to spend more time and energy discussing information that all members are already familiar with (i.e., shared information), and less time and energy discussing information that only some members are aware of.
  Bandwagon fallacy : Assuming that an idea has merit simply because many people believe it or practice it.
  Abilene paradox : When a group of people collectively decide on a course of action that is counter to the preferences of many or all of the individuals in the group.
  Mind Killing : Refers to a set of techniques by which an entity or a system manipulates people to act in its own interests. It does this by killing their ability to act in their own interests.

EFFECTS
  Ambiguity effect : Tendency to avoid options for which missing information makes the probability seem "unknown".
  Bizarreness effect : Tendency to remember bizarre material better than common material.
  Bystander effect : Tendency for individuals to less likely offer help in an emergency situation when other people are present.
  Context effect : That cognition and memory are dependent on context, such that out-of-context memories are more difficult to retrieve than in-context memories.
  Example : Recall time and accuracy for a work-related memory will be lower at home, and vice versa.
  Contrast effect : Enhancement or diminishment of a weight or other measurement when compared with recently observed contrasting object.
  Cross-race effect : Tendency for people of one race to have difficulty identifying members of a race other than their own.
  Dunning-kruger effect : When people are incompetent in the strategies they adopt to achieve success and satisfaction, they suffer a dual burden, not only do they reach erroneous conclusions and make unfortunate choices, but their incompetence robs them of the ability to realize it. Instead, they are left with the mistaken impression that they are doing just fine.
  False consensus effect : Tendency for people to overestimate the degree to which others agree with them.
  Forer effect : Tendency to give high accuracy ratings to descriptions of their personality that supposedly are tailored specifically for them, but are in fact vague and general enough to apply to a wide range of people. Also known as the Barnum Effect. Like Horoscopes.
  Motivated cognition : Tendency to process information toward conclusions that suit some end or goal.
  Generation effect : That self-generated information is remembered best. People are better able to recall memories of statements that they have generated than similar statements generated by others.
  Google effect : Tendency to forget information that can be found readily online by using Internet search engines.
  Halo effect : Tendency for a person's positive or negative traits to "spill over" from one area of their personality to another in others' perceptions of them.
  Hostile media effect : Tendency to perceive news coverage as biased against your position on an issue.
  Humor effect : That humorous items are more easily remembered than non-humorous ones, which might be explained by the distinctiveness of humor, the increased cognitive processing time to understand the humor, or the emotional arousal caused by the humor.
  Lake wobegon effect : Tendency to report flattering beliefs about oneself and believe that one is above average.
  List-length effect : A smaller percentage of items are remembered in a longer list, but as the length of the list increases, the absolute number of items remembered increases as well.
  Mere exposure effect : Tendency to express undue liking for things merely because they are familiar with them.
  Misinformation effect : Memory becoming less accurate because of interference from post-event information.
  Modality effect : That memory recall is higher for the last items of a list when the list items were received via speech than when they were received through writing.
  Overconfidence effect : Tendency of being more certain than is justified, given your priors and the evidence available.
  Part-list cueing effect : That being shown some items from a list and later retrieving one item causes it to become harder to retrieve the other items.
  Picture superiority effect : The notion that concepts that are learned by viewing pictures are more easily and frequently recalled than are concepts that are learned by viewing their written word form counterparts.
  Positivity effect : That older adults favor positive over negative information in their memories.
  Primacy effect : Tendency to weigh initial events more than subsequent events.
  Processing effect : That information that takes longer to read, and is processed with more difficulty, is more easily remembered.
  Pseudocertainty effect : Tendency to make risk-averse choices if the expected outcome is positive, but make risk-seeking choices to avoid negative outcomes.
  Recency effect : Tendency to weigh recent events more than earlier events.
  Self-relevance effect : That memories relating to the self are better recalled than similar information relating to others.
  Spacing effect : That information is better recalled if exposure to it is repeated over a long span of time rather than a short one.
  Spotlight effect : Tendency to overestimate the amount that other people notice your appearance or behavior.
  Subadditivity effect : Tendency to judge probability of the whole to be less than the probabilities of the parts.
  Suffix effect : Diminishment of the recency effect because a sound item is appended to the list that the subject is not required to recall.
  Telescoping effect : Tendency to perceive recent events to have occurred more remotely and remote events appear to have occurred more recently.
  Testing effect : The fact that you more easily remember information you have read by rewriting it instead of rereading it.
  Underconfidence effect : State of being more uncertain than is justified, given your priors and the evidence you are aware of.
  Verbatim effect : That the "gist" of what someone has said is better remembered than the verbatim wording. This is because memories are representations, not exact copies.
  Von restorff effect : Tendency to remember an item that "stands out like a sore thumb", more than other items.
  Zeigarnik effect : That uncompleted or interrupted tasks are remembered better than completed ones.
  Focusing effect : Tendency of placing too much importance on one aspect of an event, causes error in accurately predicting the utility of a future outcome.
  Endowment effect : Tendency to demand much more to give up an object than they would be willing to pay to acquire it.
  Next-in-line effect : That a person in a group has diminished recall for the words of others who spoke immediately before himself, if they take turns speaking.
  Matthew Effect : Whoever has will be given more, whoever does not have, even what they have will be taken from them.

FALLACIES
  Conjunction fallacy : Assumption that specific conditions are more probable than general ones.
  Detached lever fallacy : Assumption that something simple for one system will be simple for others.
  Gambler's fallacy : Assumption that individual random events are influenced by previous random events. Example: I've flipped heads with this coin five times consecutively, so the chance of tails coming out on the sixth flip is much greater than heads.
  Mind projection fallacy : Assumption that the way you see the world reflects the way the world really is.
  Typical mind fallacy : Assumption that other people are more like you than they actually are.
  Fallacy of gray : Assumption that because nothing is certain, everything is equally uncertain. It does not take into account that some things are more certain than others.
  The Sophisticate : "The world isn't black and white. No one does pure good or pure bad. Therefore, no one is better than anyone else." The Zetet: "Knowing only gray, you conclude that all grays are the same shade. You mock the simplicity of the two-color view, yet you replace it with a one-color view."
  Planning fallacy : Underestimating task-completion times.
  Sunk cost fallacy : Letting past investments interfere with decision-making in the present.
  Giant cheesecake fallacy : Occurs when an argument leaps directly from capability to actuality, without considering the necessary intermediate of motive.
  Narrative fallacy : A vulnerability to over-interpretation and our predilection for compact stories over raw truths.
  Scales of justice fallacy : Error of using a simple polarized scheme for deciding a complex issue/ each piece of evidence about the question is individually categorized as supporting exactly one of the two opposing positions.
  Top 1% fallacy : Related to not taking into account the idea that a small sample size is not always reflective of a whole population and that sample populations with certain characteristics, e.g. made up of repeat job seekers, are not reflective of the whole population.
  Fallacy of relative privation : Error of thinking that if something is worse than the problem currently being discussed, then the problem currently being discussed isn't that important at all. In other words: nothing matters if it's not literally the worst thing happening
  Toupée fallacy : All toupées look fake, I've never seen one that I couldn't tell was fake.

ILLUSIONS
  Asymmetric insight : Tendency to perceive the knowledge of their peers to surpass their peers' knowledge of them.
  Control : Tendency to believe they can control or at least influence outcomes that they clearly cannot.
  External agency : Tendency to perceive self-generated preferences as instead being caused by insightful, effective and benevolent agents.
  Truth effect : Tendency to identify as true statements familiar statements over unfamiliar ones.
  Clustering : Tendency to perceive patterns where actually none exist.
  Frequency : Tendency to notice something everywhere after having learnt about it. Also known as the Baader-Meinhof Phenomenon.
  Transparency : Tendency to overestimate others' ability to know them, and they also overestimate their ability to know others. Misleading impression that your words convey more to others than they really do.
  Anti-inductiveness : The idea that the market would stop being efficient if everyone acted like it already was efficient. For example, a vote in a democracy, the more people that believe their vote counts towards the outcome of an election, the less their votes count.  Also known as the Reverse Tinkerbell effect.
  Anti-epistemology : Bad explicit beliefs about rules of reasoning, usually developed in the course of protecting an existing false belief

PHILOSOPHY
  Ontology : The topic concerning the nature of being.
  Gestalt : The conscious experience must be considered globally, as having a reality of its own, independent of the parts.
  Dasein : German word for 'existence', literally meaning 'being there'.
  Deliberate practice : Focused, consistent and goal-oriented training. It favours quality over quantity. It knows not all practice is created equal.
  Perfect Duty : Perfect duties are duties that are blameworthy if not met, as they are a basic required duty for a human being.
  Maxim : A concise expression of a fundamental moral rule or principle.
  Hermeneutics : The branch of knowledge that deals with interpretation.
  Ubermensch : The one who seeks out hardship and creates new values.
  The Last Man : The one who seeks comfort and alms.
  Saudade : A deep emotional state of nostalgic or profound melancholic longing for an absent something or someone that one loves. Saudade was once described as "the love that remains" after someone is gone.
  Wabisabi : Acknowledgement that nothing lasts, nothing is finished, and that nothing is perfect.

GREEN ANARCHISM
  Health : A state of complete physical, mental and social well-being and not merely the absence of disease or infirmity.
  Dark Greens : The ones who believe that environmental problems are an inherent part of industrialized civilization, and seek radical political change.
  Light Greens : The ones who see protecting the environment first and foremost as a personal responsibility, focusing on environmentalism as a lifestyle choice.
  Veganism : A philosophy and way of living which seeks to prevent all forms of exploitation of, and cruelty to, other animals for food, clothing or any other purpose.
  Ecofeminism : Ecofeminist thinkers draw on the concept of gender to theorize on the relationship between humans and the natural world.

ANIMAL RIGHTS
  Animal Rights : Refers to the position that the interests of nonhuman animals, including their interest in not suffering, should be afforded the same consideration as the interests of humans and that nonhuman animals have rights and inherent value independent of their usefulness to humans.
  Animal Liberation Front : An international, leaderless resistance that engages in removing animals from laboratories and farms, destroying facilities, arranging safe houses and veterinary care, and operating sanctuaries where the animals subsequently live.
  Animal Advocacy : Promotion of the interests of animals, generally. Includes work for animal rights and animal welfare.
  Commodification : The conversion of a living being, principle, or natural environment into an "object" that is used, exchanged, or consumed for profit or other desired gain.
  Speciesism : Discrimination on the basis of species, oppression and judgment of an animal on the basis of that animal's species or that animal's non-membership in a species. The belief in human superiority over other animals or certain nonhuman animals' superiority over others.
  Debarking : The surgical removal and manipulation of tissue in a dog's vocal cords to drastically quiet his or her natural bark. Debarking does not address the underlying reasons that a dog may be barking excessively, and the dog will continue to bark, albeit more quietly or silently.
  Draize Test : Infamous and excruciating eye-irritation test for household products and cosmetics in which drops of a substance are placed in the eyes of rabbits, causing the animals ulcers, blindness, and other injuries before they are ultimately killed.
  Flowerpot Technique : A technique used in sleep deprivation studies designed to allow NREM sleep but prevent REM sleep.
  Forced Molting : The egg-industry practice of artificially inducing hens to molt by depriving them of food for several days to two weeks when their egg production has declined.
  Rape Rack : The industry term referring to the contraptions in which cows and pigs are restrained while they are forcibly inseminated.
  Veal Crate : Small crate in which a calf being raised for veal is confined and tied up. The calf's movement within the crate is intentionally restricted to limit the strengthening of muscle, and an insufficient diet is provided intentionally to keep the cow anemic.

ADAPTATION
  Uncivilisation : It is to accept the world for what it is and to make our home here, rather than dreaming of relocating to the stars, or existing in a Man-forged bubble and pretending to ourselves that there is nothing outside it to which we have any connection at all.
  Dark Mountaineers : Artists who generally ascribe to the idea that climate collapse cannot be stopped or reversed, a forum in which one can be honest about their sense of dread and loss.
  Inhumanism : A shifting of emphasis and significance from man to not-man, the rejection of human solipsism and recognition of the transhuman magnificence.
  Anthropocene : A proposed epoch dating from the commencement of significant human impact on Earth's geology and ecosystems, including, but not limited to, anthropogenic climate change.
  Simple pastoral : Merely another of our many vehicles of escape from reality, that doesn’t interrogate civilisation's main driving forces, but instead focuses on returning to rural simplicity.
  Object Oriented Ontology : A school of thought that rejects the privileging of human existence over the existence of nonhuman objects, that objects exist independently of human perception and are not ontologically exhausted by their relations with humans.
  Freudian death drive : The hypothesis of a death instinct, the task of which is to lead organic life back into the inanimate state.
  Agrilogistics paradox : A maniacal urge to live, and to diminish stimulation, that ends up being self-destructive, generating mass extinction, through global warming, that it was designed to avoid.
  Existential Risk : An event that could cause human extinction or permanently and drastically curtail humanity's potential.
  Strong Longtermism : The primary determinant of the value of our actions is the effects of those actions on the very long-run future.
  The Hinge of History Hypothesis : The hypothese that we are living at the most influential time ever.
  Negative Emissions : Divided into “natural” and “technological”  categories, these strategies aim to remove carbon from the atmosphere, however, there remains no evidence that either branch is feasible despite their inclusion in climate modeling. The large majority of IPCC models (344/400 as of 2019) feature theoretical negative emissions.
  Carbon Capture : A technological negative emissions solution that aims to remove carbon from the air, storing it as inert material. Small units exist at high cost, and it remains unclear whether large scale deployment is possible or desirable.
  Carbon Budget : An attempt to provide the world with a means of tracking emissions with goals set based on projected temperature rise. Most models are not believed to accurately account for feedback loops.
  Feedback Loops : The results of global warming are complex. Much of the destruction caused by warming also contributes: the albedo effect, forest fires, melting ice, and ocean acidification all mean more greenhouse gases and less places for carbon to go. It remains unclear how these systems will interact with ongoing anthropogenic warming.
  Albedo Effect : Warming caused by the disappearance of ice which previously reflect heat back into space.
  Solar Radiation Management : Methods of reducing global temperature by increasing albedo, frequently discussed methods include stratospheric sulphur injection and marine cloud brightening.
  Scientific Reticence : A phenomenon where scientists failed to emphasize many the more dramatic results of the study of global warming over concerns of reception.
  Fossil Capitalism : A theory suggesting the modern economy is actually just a system that runs on fossil fuel.
  Tragedy of the Commons : A situation in a shared-resource system where individual users, acting independently according to their own self-interest, behave contrary to the common good of all users by depleting or spoiling the shared resource through their collective action.

RECYCLISM
  Electronics right to repair : A government legislation intended to allow consumers the ability to repair and modify their own electronics, where otherwise the manufacturer of such devices require the consumer to use only their offered services.
  Obsolescence of desirability : When designers change the styling of products so customers will purchase products more frequently due to the decrease in the perceived desirability of unfashionable items.
  Obsolescence of function : When an item is produced to break down or otherwise become non-functional in an abnormally short period of time.
  Obsolescence of compatibility : When a product becomes obsolete by altering the system in which it is used in such a way as to make its continued use difficult. Common examples of planned systemic obsolescence include not accommodating forward compatibility in software.
  Pseudo-obsolescence of desirability : When planned obsolescence appears to introduce innovative changes into a product, but in reality does not, often forcibly outfashioning an otherwise-useful product.
  Non-user-replaceable batteries : Some products, such as mobile phones, laptops, and electric toothbrushes, contain batteries that are not replaceable by the end-user after they have worn down, therefore leaving an aging battery trapped inside the device.
  Phoebus cartel : The cartel conveniently lowered operational costs and worked to standardize the life expectancy of light bulbs at 1,000 hours, down from 2,500 hours, and raised prices without fear of competition. 

BELIEFS
  Belief : The mental state in which an individual holds a proposition to be true.
  Priors : The beliefs an agent holds regarding a fact, hypothesis or consequence, before being presented with evidence.
  Alief : An independent source of emotional reaction which can coexist with a contradictory belief. Example The fear felt when a monster jumps out of the darkness in a scary movie is based on the alief that the monster is about to attack you, even though you believe that it cannot.
  Proper belief : Requires observations, gets updated upon encountering new evidence, and provides practical benefit in anticipated experience.
  Improper belief : Is a belief that isn't concerned with describing the territory. Note that the fact that a belief just happens to be true doesn't mean you're right to have it. If you buy a lottery ticket, certain that it's a winning ticket (for no reason), and it happens to be, believing that was still a mistake.
  Belief in belief : Where it is difficult to believe a thing, it is often much easier to believe that you ought to believe it. Were you to really believe and not just believe in belief, the consequences of error would be much more severe. When someone makes up excuses in advance, it would seem to require that belief, and belief in belief, have become unsynchronized.
  A Priori : Knowledge which we can be sure of without any empirical evidence(evidence from our senses). So, knowledge that you could realize if you were just a mind floating in a void unconnected to a body.

ARGUMENTS
  Ad baculum : Argument relying on an appeal to fear or a threat.
  Ad ignorantiam : Argument relying on people's ignorance.
  Ad populum : Argument relying on sentimental weakness.
  Ad verecundiam : Argument relying on the the words of an "expert", or authority.
  Ex silentio : Argument relying on ignorance.
  Ex nihilo : An argument that bears no relation to the previous topic of discussion.
  Non sequitur : An inference that does not follow from established premises or evidence.

RESPONSES
  Akrasia : State of acting against one's better judgment.
  Connotation : Emotional association with a word.
  Intransigence : Refusal to change one's views or to agree about something.
  Inferential distance : Gap between the background knowledge and epistemology of a person trying to explain an idea, and the background knowledge and epistemology of the person trying to understand it.
  Straw man : Creating a false or made up scenario and then attacking it. Painting your opponent with false colors only deflects the purpose of the argument.
  Steel man : To steelman is to address the strongest possible variant or the most charitable interpretation of an idea, rather than the most available phrasings.
  Red herring : A diversion from the active topic.
  Rationalization : Starts from a conclusion, and then works backward to arrive at arguments apparently favouring that conclusion. Rationalization argues for a side already selected.
  Dogpiling : A disagreement wherein one person says something wrong or offensive, and a large number of people comment in response to tell them how wrong they are, and continue to disparage the original commenter beyond any reasonable time limit.
  Grandstanding : An action that is intended to make people notice and admire you, behaving in a way that makes people pay attention to you instead of thinking about more important matters.
  Whataboutism : An attempt to discredit an opponent's position by charging them with hypocrisy without directly refuting or disproving their argument.

JARGON
  NIH Syndrome : Or Not Invented Here, to avoid using already existing products, research, standards, or knowledge because of their external origins or costs.
  Anti-Pattern : A common response to a recurring problem that is usually ineffective and risks being highly counterproductive.
  Worse Is Better : The idea that quality does not necessarily increase with functionality. Software that is limited, but simple to use, may be more appealing to the user and market than the reverse.
  Dogfood : A way for an organization to demonstrate confidence in its own products, by using the product itself. A way to test it in real-world usage, acting as quality control and a kind of testimonial advertising.
  Stovepipe : A system that has the potential to share data or functionality with other systems but which does not.
  The Cathedral model : The source code is available with each software release, but code developed between releases is restricted to an exclusive group of developers.
  The Bazaar model : The source code is developed over the Internet in view of the public.
  XY Problem : You want to do X, and you think Y is the best way of doing so. Instead of asking about X, you ask about Y.
  Second System Effect : The tendency of small, elegant, and successful systems, to be succeeded by over-engineered, bloated systems, due to inflated expectations and overconfidence.
  Benevolent Dictator For Life : A open-source software development practice where project founders retain the final say in disputes or arguments within the community.
  Yak Shaving : Refers to a task, that leads you to perform another related task and so on, and so on — all distracting you from your original goal.
  
TECHNOCRACY
  Sybil attack : An attacker subverts the reputation system of a P2P network by creating a large number of pseudonymous identities and uses them to gain a disproportionately large influence.
  Siren Servers : Instead of paying each individual for their contribution to the data pool, the server concentrate wealth in the hands of the few who control the data center. Alluding to the Sirens of Ulysses.
  Paradox of tolerance : States that if a society is tolerant without limit, its ability to be tolerant is eventually seized or destroyed by the intolerant.
  The Veil Of Ignorance : Behind this veil, you know nothing of yourself and your natural abilities, position in society, sex, race, nationality, or individual tastes. All individuals are simply specified as rational, free, and morally equal beings. 
  Behavioral sink : A term used to describe the collapse in behavior(stress, alienation, hostility, sexual perversion, parental incompetence, and rabid violence) which resulted from overcrowdedness in an experiment on mice, drawing parallels with societal collapse found in the human Megalopolis.
  Dunbar's Number : A suggested cognitive limit of 150, to the number of people with whom one can maintain stable social relationships.

PRINCIPLES OF LEARNING
  Space learning over time :  Spaced schedules of studying and testing produce better long-term retention than a single study session or test.
  Worked example solutions problem solving exercises :  Presenting the students step-by-step solutions to problems should be intermixed with having the students solve the problems by themselves.
  Combine graphics with verbal descriptions :  Materials presented in verbal, visual and multimedia form are richer representations than those with a single modality or medium.
  Abstract and concrete representations of concepts :  An understanding of an abstract concept improves with multiple and varied concrete examples.
  Use quizzing to promote learning : Testing enhances learning, particularly when the tests are aligned with important content.
  Help students allocate study time effectively : Students need to allocate more time on difficult material and to have repeated practice for some concepts and skills. Outlining, integrating and synthesizing information produces better learning than re-reading materials or other more passive strategies.
  Ask deep explanatory questions : Students benefit more from asking and answering deep questions that elicit explanations (e.g., why, why not, how, what if) than shallow questions (e.g., who, what, when, where).
  Contiguity : Ideas that need to be associated should be presented contiguously in space and time.
  Perceptual-motor grounding : Students learn better when teachers link concepts to concrete perceptual motor experiences, particularly at early stages of learning.
  Generation effect : Learning is better when learners actively produce answers, rather than merely recognize answers as in multiple-choice questions.
  Stories and example cases : Learners tend to remember stories and example cases better than didactic facts and abstract principles.
  Feedback : Students benefit from feedback on their performance in a learning task, with the timing depending on the task. Learning incorrect information can be reduced when students are given immediate feedback.
  Manageable cognitive load : Learning materials should not overload working memory.
  Cognitive disequilibrium : Deep reasoning and learning is stimulated by problems that create cognitive disequilibrium, such as obstacles to goals, contradictions, conflict and anomalies.
  Cognitive flexibility : Students’ cognitive flexibility improves when they are presented with multiple viewpoints that link facts, skills, procedures and deep conceptual principles.
  Goldilocks principle : Assignments should not be too hard or too easy, but at the right level of difficulty for each student’s skill and prior knowledge.
  Anchored learning : Learning is deeper and students are more motivated when the materials and skills are anchored in real-world problems that matter to the learner.

CELESTIAL NAVIGATION
  Zenith : The imaginary point directly above a particular location, opposite to the apparent gravitational force at that location.
  Azimuth : The angle offset between the north vector and target's vector on the horizontal plane.
  Longitude : The east-west position of a point on the Earth's surface.
  Latitude : The north-south position of a point on the Earth's surface.
  Nautical Mile : Defined as 1852 meters, or one minute of angle along a meridian on the Earth.
  LAN : Local Apparent Noon.
  NSL : Noon sight latitude.
  GHA : Greenwich hour angle.
  Sun altitude offset : 4 seconds off is equal to 1 nautical mile.

; Bookmarks

TECHNOLOGY LINKS
  Death To Bullshit : http://deathtobullshit.com
  Calm Technology : https://calmtech.com
  Worrydream's Ref : http://worrydream.com/refs
  The Long Site : https://gwern.net/About#long-site
  The Indie Web : https://indieweb.org
  Sustainable Web : https://sustainablewebmanifesto.com
  Local First Software : https://www.inkandswitch.com/local-first.html
  Paper Phone : http://specialprojects.studio/project/paper-phone
  LOT2046 : https://www.lot2046.com
  mnmllist : https://mnmll.ist/
  Folklore : https://www.folklore.org
  Original Sin of Free Software : https://lipu.dgold.eu/original-sin.html
  Simplicity : http://pascal.hansotten.com/simplicity
  Website Obesity : https://idlewords.com/talks/website_obesity.htm
  Lilith : http://pascal.hansotten.com/niklaus-wirth/lilith/photos-of-lilith
  Permacomputing : http://viznut.fi/texts-en/permacomputing.html

HARDWARE LINKS
  Fairphone : https://fairphone.com/en
  Pi Top : https://pi-top.com
  Librem 13 : https://puri.sm
  Pinebook : https://pine64.org/pinebook
  Starlabs : https://ca.starlabs.systems
  System76 : https://system76.com
  Blloc Phone : https://www.blloc.com
  Curta Calculator : http://www.vcalc.net/cu.htm
  Tecsun PL-660 : https://www.eham.net/reviews/view-product?id=9935

OPERATING SYSTEM LINKS
  FreeBSD : https://wiki.freebsd.org/FreeBSD/arm/Raspberry%20Pi
  Linux From Scratch : http://intestinate.com/pilfs
  ElementaryOS : https://elementary.io
  OSMC : https://osmc.tv/download
  GENERA OS : https://static.loomcom.com/genera/genera-install.html
  COLLAPSE OS : https://collapseos.org
  Urbit : http://urbit.org
  Replicant : https://www.replicant.us
  Plan 9 : https://en.wikipedia.org/wiki/Plan_9_from_Bell_Labs
  Monome : https://monome.org

PLAN9 LINKS
  Wiki : https://9p.io/wiki/plan9/plan_9_wiki
  Intro : http://lsub.org/who/nemo/9.intro.pdf
  IRC Channel : https://9p.io/wiki/plan9/IRC/index.html
  Bell Labs : http://doc.cat-v.org/bell_labs
  Plan9 Software : https://ftrv.se/_/9/
  How I Switched to Plan9 : http://helpful.cat-v.org/Blog/2019/12/03/0

PLAN9 DEVELOPMENT LINKS
  Intro to C Programming on Plan 9 : http://doc.cat-v.org/plan_9/programming/c_programming_in_plan_9
  Intro to Graphics on Plan 9 : http://blog.postnix.pw/2018/09/21/0
  Interface Tutorial : https://github.com/nspool/hello-plan9
  Graphics Docs : http://man.postnix.pw/9front/2/graphics
  Draw Docs : http://man.postnix.pw/9front/2/draw
  Audio : http://nopenopenope.net/posts/audio

ACME LINKS
  Acme Screencast : https://research.swtch.com/acme
  Acme Readme : http://acme.cat-v.org/readme
  Acme Docs : http://man.9front.org/4/acme

MSX LINKS
  MSX Assembly Page : http://map.grauw.nl/resources
  Pascal on MSX : https://hansotten.file-hunter.com/software/pascal-and-msx
  Pascal on CPM : http://pascal.hansotten.com/delphi/turbo-pascal-on-cpm-msx-dos-and-ms-dos/
  MSX Tutorials : https://www.lavandeira.net/relearning-msx/
  MSX Resources : https://www.konamiman.com/msx/msx-e.html
  MSX Red Book : https://github.com/gseidler/The-MSX-Red-Book/blob/master/the_msx_red_book.md
  MSX Wiki : https://www.msx.org/wiki/Category:Programming
  z88dk : https://github.com/z88dk/z88dk
  MSX Japan : https://msxjpn.jimdofree.com/
  MSX gfxlib : http://jannone.org/gfxlib/?go=home
  MSX Emulator : https://fms.komkon.org

PROGRAMMING LINKS
  Richard Miller : https://youtube.com/watch?v=O7ZELOUIyvw
  Rob Pike : https://usesthis.com/interviews/rob.pike/
  UNIX translation : https://9p.io/wiki/plan9/Unix_to_Plan_9_command_translation/index.html
  The Humble Programmer : https://www.cs.utexas.edu/~EWD/transcriptions/EWD03xx/EWD340.html
  Lisp Eval : http://lib.store.yahoo.net/lib/paulgraham/jmc.lisp
  The History Of T : http://www.paulgraham.com/thist.html
  Suckless : https://suckless.org/rocks
  Build Your Own Lisp : http://buildyourownlisp.com
  Interesting Programming Languages : https://www.btbytes.com/pl.html
  Duck Duck Go Lite : https://ddg.gg/lite

SOLARPUNK LINKS
  Low Tech : https://solar.lowtechmagazine.com
  CE Manifesto : http://criticalengineering.org
  E-Flux : https://e-flux.com/architecture/positions/191258/is-ornamenting-solar-panels-a-crime
  Hieroglyph : https://hieroglyph.asu.edu/2014/09/Solarpunk-notes-toward-a-manifesto
  Winnebiko II : https://microship.com/winnebiko-ii
  Paris Compressed Air Power Network : http://douglas-self.com/MUSEUM/POWER/airnetwork/airnetwork.htm
  Deep Resource : https://deepresource.wordpress.com
  Design Lifecycle : http://www.designlife-cycle.com
  Open Structures : https://openstructures.net
  What Can A Technologist : http://worrydream.com/ClimateChange

PERSONAL WIKI LINKS
  Gwern : http://gwern.net
  Bayles Shanks : http://bayleshanks.com
  Nikita Voloboev : https://wiki.nikitavoloboev.xyz
  Android Arts : http://androidarts.com
  B Rye : http://jbr.me.uk/contents.html
  Yoshua Wuyts : https://github.com/yoshuawuyts/knowledge
  Gordon Brander : http://gordonbrander.com/pattern
  Cosma : http://bactra.org

WIKI LINKS
  Rational Wiki : https://rationalwiki.org
  Cat V : http://doc.cat-v.org/plan_9
  Altaplana : https://altaplana.be
  Lo Jbobau : https://jbo.wikipedia.org/wiki/lo_jbobau

PODCAST LINKS
  80000 Hours : https://80000hours.org/podcast
  Emerge Podcast : https://anchor.fm/emerge/support
  90p Invisible : https://99percentinvisible.org
  Lexicon Valley : https://slate.com/podcasts/lexicon-valley
  Radiolab : https://www.wnycstudios.org/podcasts/radiolab
  Love And Radio : http://loveandradio.org
  The Future Of Coding : https://futureofcoding.org

BLOG LINKS
  Sigrid : https://ftrv.se
  Fabien Sanglard : https://fabiensanglard.net
  Scott Alexander : http://slatestarcodex.com
  Drew Devault : https://drewdevault.com
  Fogus : http://blog.fogus.me
  Jeff Atwood : https://blog.codinghorror.com
  Stanley Lieber : http://stanleylieber.com/
  Ribbon Farm : http://ribbonfarm.com
  LessWrong : https://lesswrong.com

ENTRIES LINKS
  Tendrils of Mess in our Brains : https://www.ribbonfarm.com/2017/01/05/tendrils-of-mess-in-our-brains
  Meditations on Moloch : https://slatestarcodex.com/2014/07/30/meditations-on-moloch
  Culture Is Not About Esthetics : https://www.gwern.net/Culture-is-not-about-Esthetics
  Bus Ticket Theory : http://paulgraham.com/genius.html
  Personal Search Infrastructure : https://beepb00p.xyz/pkm-search.html
  The Depth Year : https://www.raptitude.com/2017/12/go-deeper-not-wider
  Your life has already been designed : https://www.raptitude.com/2010/07/your-lifestyle-has-already-been-designed
  68 Bits of Unsolicited Advice : https://kk.org/thetechnium/68-bits-of-unsolicited-advice
  Zen and the Art of Boat Building : https://www.yachtmollymawk.com/2014/11/zen-and-the-art-of-boat-building

COLLAPSOLOGY LINKS
  Dark Mountain Manifesto : https://dark-mountain.net/about/manifesto
  Unearthed : https://meanjin.com.au/essays/unearthed
  Policymakers : https://www.ipcc.ch/site/assets/uploads/2018/02/WG1AR5_SPM_FINAL.pdf
  Effective Altruism Forum : https://forum.effectivealtruism.org
  Deep Adaptation : https://www.lifeworth.com/deepadaptation.pdf

GENERAL KNOWLEDGE LINKS
  Nutritional facts : http://nutritionfacts.org
  As We May Think : https://en.wikipedia.org/wiki/As_We_May_Think
  Notation : https://github.com/hypotext/notation
  funet.fi/pub/ : http://nic.funet.fi/pub
  Hand-Eye Dilemma : https://paintedjournals.com/marc-dalessios-learning-curve
  How To Ask Questions : http://catb.org/~esr/faqs/smart-questions.html
  Janki Method : http://jackkinsella.ie/articles/janki-method
  Chorded Keyboard : https://software-lab.de/penti.html
  How to Make Sense of Any Mess : http://www.howtomakesenseofanymess.com
  250 things an architect should know : https://www.readingdesign.org/250-things

LINUX LINKS
  Fish Shell : https://fishshell.com
  Micro Text Editor : https://micro-editor.github.io
  Mastodon Client : https://github.com/ihabunek/toot
  Cmus Audio Player : http://cmus.github.io
  Tmux Terminal Multiplexer : https://github.com/tmux/tmux/wiki
  NNN File Manager : https://github.com/jarun/nnn
  Spreadsheet Calculator : https://github.com/andmarti1424/sc-im
  Krita Digital Painting : https://krita.org/en
  Blender 3d Editor : https://www.blender.org
  Surf Browser : https://surf.suckless.org
  Macintosh Emulator : https://www.gryphel.com

MACINTOSH SOFTWARE
  Hypercard : https://en.wikipedia.org/wiki/HyperCard
  THINK Pascal : http://www.think-pascal.org
  MacPaint : https://en.wikipedia.org/wiki/MacPaint
  HexEdit : https://www.gryphel.com/c/sw/progtool/hexedit/index.html

BOOKS
  Le Matin Des Magiciens : L. Pauwels & J. Bergier. 1960
  Le Città Invisibili : Italo Calvino. 1972
  Ficciones : Jorge Luis Borges. 1941
  No.44 : Mark Twain. 1916
  Kybalion : Three Initiates. 1908
  La Ricerca della Lingua Perfetta : Umberto Eco. 1993
  The Handmaid's Tale : Margaret Atwood. 1985
  Flatland : Edwin A. Abbott. 1884
  Blumroch l'admirable : Louis Pauwels. 1976
  Cyberiada : Stanisław Lem. 1965
  Etidorhpa : John Uri Lloyd. 1895
  The Long Way : Bernard Moitessier
  Finite and Infinite Games : James P. Carse
  Ishmael : Daniel Quinn. 1992

MOVIES
  Rosencrantz and Guildenstern Are Dead : Tom Stoppard. 1990
  Solaris : Steven Soderbergh. 2002
  Wristcutters: A Love Story : Goran Dukic. 2006
  The Rules of Attraction : Roger Avary. 2002
  Faust : Jan Švankmajer. 1994
  เรื่องรัก น้อยนิด มหาศา : Pen-Ek Ratanaruang. 2003
  My Dinner with Andre : Louis Malle. 1981
  Sedmikrásky : Věra Chytilová. 1996
  Valerie A Týden Divů : Jaromil Jireš. 1970
  Тіні забутих предків : Sergei Parajanov. 1967
  Na srebrnym globie : Andrzej Żuławski. 1988
  茶の味 : Katsuhito Ishii. 2004
  Cat Soup : Tatsuo Satō. 2001
  Black Moon : Louis Malle. 1975

ALBUMS
  Weighing Souls With Sand : Angelic Process. 2007
  L'Univers De La Mer : Dominique Guiot. 1978
  Void : Access to Arasaka. 2010
  You Have Already Gone to the Other World : A Hawk & A Hacksaw. 2013
  Хтонь : Сруб. 2015
  顕信の一撃 : 友川カズキ. 2002
  Noise Of The New : Seven Ark. 2005
  人間まがい : 山崎ハコ. 1979
  Le Soleil Noir : Barbara. 1970
  Virgo Rising : Sixth June. 2017
  Il y a : 夢中夢. 2008
  星のひとみ : 黒百合姉妹. 1999
  田園に死す : J.A.シーザー. 2002
  François : Desireless. 1989
  Zenith : Molly Nilsson. 2015
  Feindflug : Volk und Armee. 2005 
  Head over Heels : Cocteau Twins. 1983

COMICS
  Brüsel : Schuiten & Peeters. 1992
  ブラム : 弐瓶勉. 1998
  風の谷のナウシカ : 宮崎駿. 1982
  おやすみプンプン : 浅野いにお. 2007
  うずまき : 伊藤潤二. 1998
  Duck, Death and the Tulip : Wolf Erlbruch. 2007
  Wandering Island : Kenji Tsuruta

VIDEOGAMES
  Eve Online : CCP Games. 2003
  Jet Set Radio Future : Smilebit. 2002
  Final Fantasy Tactics Advance : Square. 2003
  Quake 3 : Id. 1999
  Drowned God : Inscape. 1997
  Ikaruga : Treasure. 2001
  Journey : ThatGameCompany. 2012
  MDK : Shiny. 1997
  Riven : Cyan Interactive. 1997

READING LIST 2016
  Seraffyn's Oriental Adventure : Lin & Larry Pardey
  Guns, Germs & Steel : Jared M. Diamond
  Predictable Irrational : Dan Ariely
  How Not To Die : Michael Greger
  The China Study : T. Colin Campbell
  Letter To My Father : Franz Kafka
  Le Ton Beau De Marot : Douglas Hofstadter
  Beyond Good & Evil : Friedrich Nietzche
  The Circle : Dave Eggers
  The Book Of Tea : Okakura Kakuzō. 1906
  Journals : Henry David Thoreau. 1837
  Walden : Henry David Thoreau. 1837

READING LIST 2017
  Pictures From The Water Trade : John David Morley
  A Calendar Of Wisdom : Tolstoy
  The Art Of War : Sun Tzu
  Superintelligence : Nick Bostrom
  Kokoro : Natsume Soseki
  From AI To Zombies : Eliezer Yudkowsky
  In Praise Of Darkness : Jorge Luis Borges
  Self-Sufficient Sailor : Lin Pardey
  Travels in Hyperreality : Umberto Eco
  North To The Night : Alvah Simon
  Smoke Gets In Your Eyes : Caitlin Doughty
  The Fungi Of Yuggot : H. P. Lovecraft
  In The Dust Of This Planet : Eugene Thacker
  The Japanese Art of Decluttering : Marie Kondo
  Zen and the Art of Motorcycle Maintenance : Robert M. Pirsig
  Meditations : Marcus Aurelius

READING LIST 2018
  Hermeneutics : John D. Caputo
  Tao Te Ching : Lao Tzu
  Letters From A Stoic : Seneca
  Animal Farm : George Orwell & Russel Baker
  Last Chance to See : Douglas Adams & Mark Carwardine
  The Arabian Nights : Anonymous
  The Stack : Benjamin H. Bratton
  The Futurological Congress : Stanislaw Lem
  The Handmaid's Tale : Margaret Atwood
  The Cyberiad : Stanislaw Lem
  Ishmael : Daniel Quinn
  Godforsaken Sea : Derek Lundy
  The Tao Of Pooh : Benjamin Hoff
  The Te Of Piglet : Benjamin Hoff
  The Book Of Five Rings : Miyamoto Musashi
  Hagakure : Tsunetomo Yamamoto
  Don't Sleep There Are Snakes : Daneil L. Everett
  On Trails : Robert Moor
  The Sixth Extinction : Elizabeth Kolbert
  The Empty Mirror : Janwillem Van De Wetering
  Industrial Society and Its Future : Theodore Kaczynski
  Animal Liberation : Peter Signer
  On Food and Cooking : Harold McGee

READING LIST 2019
  Who Owns The Future : Jaron Lanier
  Practical Ethics : Peter Signer
  Cyclonopedia : Reza Negarestani
  Embassytown : China Miéville
  The Art of UNIX Programming : Eric S. Raymond
  Xenofeminism : Helen Hester
  Land Of Lisp : Conrad Barski
  The Word for World is Forest : Ursula K. Le Guin
  The Accelerationist Reader : Robin Mackay
  Collected Shorts : H. P. Lovecraft
  Assemblage Theory : Manuel DeLanda
  Rasselas : Samuel Johnson
  Inventing the Future : Nick Srnicek
  Manuel De Résistance Contemporaine : Cyril Dion
  Girls Last Tour : Tsukumizu
  Persepolis : Marjane Satrapi
  How To Do Nothing : Jenny Odell
  The Complete Cosmicomics : Italo Calvino
  La Société du spectacle : Guy Debord

READING LIST 2020
  Elements of Computing Systems : Noam Nisan & Shimon Schocken
  Made to break : Giles Slade
  Wandering Island : Kenji Tsuruta
  6502 Assembly Programming Language : Mike Smith
  Nouvelles pensées échevelées : Stanislaw Jerzy Lec
  How to Live Safely in a Science Fictional Universe : Charles Yu
  Dracula : Bram Stoker
  Des choses cachées depuis la fondation du monde : René Girard
  Tamata et l'alliance : Bernard Moitessier
  Frankenstein : Mary Shelley
  Macintosh Pascal Programming Primer : Dave Mark & Cartwright Reed
  Programming in Macintosh and Think Pascal : Richard A. Rink & Vance B. Wisenbaker
  The Invisible Computer : Donald A. Norman
  The Unix-Haters Handbook : Simson Garfinkel, Daniel Weise, Steven Strassmann
  The Long Way : Bernard Moitessier
  The Dispossessed : Ursula K. Le Guin
  Solaris : Stanislaw Lem
  One Human Minute : Stanislaw Lem
  The Mushroom at the End of the World : Anna Lowenhaupt Tsing
  The incredible tide : Alexander Key
  Don Quixote : Miguel De Cervantes Saaverda
  A Canticle for Leibowitz : Walter M. Miller
  Tactics for SingleHanded Sailing : Andrew Evans
  Finite and Infinite Games : James P. Carse
  The Golden Apples of the Sun : Ray Bradbury
  The Timeless Way of Building : Christopher Alexander
  Divine Comedy(Purgatorio) : Dante Alighieri
  One Straw Revolution : Masanobu Fukuoka

STUDIO WORKSTATION
  Semi-Modular Synthesizer : Arturia Microbrute
  Analog Synthesizer : Elta Поливокс Мини
  Analog Resynthesizer : Hologram Infinite Jets
  Sound card : Traktor Audio
  Sound Computer : Monome Norns
  Midi Interface : Roland UM One
  Midi Pads : Monome Grid | Akai LPD8
  Midi Keys : Akai LPK25

PINO DETAILS
  Name : PINO
  Builder : Yamaha
  Year : 1982
  Length : 33'(10 meters)
  Engine Fuel : Type Single / diesel(13 HP)
  Hull Material : Fiberglass
  Keel : Fin

RARE TRACKS
  Aliceffekt - Glenda's Travels : ChipsynthMD, Toy Company 2019
  Comaduster - Winter Eyes(Aliceffekt Remix) : Tympanik Audio 2013
  Veroníque - Fisherman II(Aliceffekt Remix) : 2013
  Aliceffekt - Our Forgotten Push(feat. Mega Ran) : Mega Ran Japan Tour 2013
  iVardensphere - Ghostnote(Aliceffekt Remix) : Metropolis Records 2012
  Aliceffekt - Thievery of the Jade Books : Kinetik Festival Volume 4, Artoffact 2011
  Misteur Valaire - Dan Dan(Aliceffekt Remix) : 2011
  Doomer - Weltenzerstorer(Aliceffekt Remix) : 2010
  Iszoloscope - Dumachus Junction Feat. Aliceffekt : Beyond Within, Ant-zen 2010
  Aliceffekt - Laeis 7th Passage E.th : Kinetik Festival Volume 3, Artoffact 2010
  Stray - Does it really matter(Aliceffekt Remix) : 2009
  Perfection Plastic - Bad Girls(Aliceffekt Remix) : 2009

; Collections

PROGRAMMING KNOWLEDGE
  The freedom to run the program as you wish, for any purpose.
  The freedom to study how the program works, and change it.
  The freedom to redistribute copies so you can help others.
  The freedom to distribute copies of your modified versions to others.

PROGRAMMING PRACTICES
  Prototype before polishing. Get it working before optimizing it.
  Separate policy from mechanism, separate interfaces from engines.
  Write simple modular parts connected by clean interfaces.
  Design programs to be connected to other programs.
  Write programs to write programs when you can.
  Design for the future, because it will be here sooner than you think.
  In interface design, always do the least surprising thing.
  When a program has nothing surprising to say, it should say nothing.
  When a program must fail, it should fail noisily and as soon as possible.
  Write big programs only when it is clear by demonstration that nothing else will do.
  Consider how you would solve your immediate problem without adding anything new.

DESIGN KNOWLEDGE
  Good design makes a product useful.
  Good design makes a product understandable.
  Good design is unobtrusive.
  Good design is honest.
  Good design is long-lasting.
  Good design is thorough down to the last detail.
  Good design is environmentally friendly.
  Good design is as little design as possible.

DESIGN PRAGNANZ
  The mind perceives objects as being symmetrical and forming around a center point.
  The mind perceives objects that are near, or proximate to each other, to be grouped together.
  The mind can only keep 7 (plus or minus 2) items in their working memory, on average.
  The mind has a propensity to best remember the first and last items in a series.
  The mind remembers uncompleted or interrupted tasks better than completed tasks.
  The mind will perceive and interpret ambiguous or complex images as the simplest form possible.
  The time it takes to make a decision increases with the number and complexity of choices.
  The time to acquire a target is a function of the distance to and size of the target.

WORK KNOWLEDGE
  Find your passion and figure out how to get paid for it.
  Do whatever you want to do, but be the best at it.
  Strive for simplicity and competence, but embrace the messiness along the way.
  Under-promise and over-deliver, and own up to your screw-ups.
  Doing what everybody else is doing feels like the safest thing to do, making it the most competitive, and thus the riskiest.
  No one is on their deathbed is wishing they spent more time at work.
  Never stop learning.

WORK HABITS
  Doing the right tasks is more important than doing your tasks efficiently.
  Write down your goals. Break them down into manageable tasks.
  Tackle one task at a time, and group similar tasks together.
  You're more attentive in the morning, tackle hard stuff then.
  If you can't do it in 8 hours, you can't do it in 10.
  Don't forget to stretch, and drink plenty of water.
  Keep a record of your time use.

WORK CHARISMA
  Always look a person in the eye when you talk to them.
  Always stand up to shake someone's hand.
  Be conscious of your body language.
  Ask more than you answer.
  First impressions matter.
  When you walk, look straight ahead, not at your feet.
  Never hit anyone unless they are an immediate threat.
  No matter their job or status, everyone deserves your respect.

WRITING KNOWLEDGE
  Never use a long word where a short one will do.
  If it is possible to cut a word out, always cut it out.
  Never use the passive where you can use the active.
  Never use a foreign or scientific word, if you can think of an English equivalent.
  Never use a figure of speech which you are used to seeing in print.
  Break any of these rules sooner than say anything outright barbarous.

HEALTH KNOWLEDGE
  Eat varied foods, biodiversity in the diet means less monoculture in the fields.
  Pay more for foods grown or raised less intensively and with more care, eat less.
  Eat mostly plants, especially leaves. Cook, and if you can, plant a garden.
  Avoid food products with unpronounceable ingredients, or more than five in number.
  Don't eat anything your great-great-grandmother wouldn't recognize as food.

HEALTH BREATHING
  Expel all of the air from your lungs.
  Keep them empty for four seconds.
  Inhale through your nose for four seconds.
  Hold for four four seconds, don’t clamp down or create pressure.

DARK MOUNTAINEERS
  We will face this reality honestly and learn how to live with it.
  We realize that the current and upcoming crises cannot be reduced to a set of problems in need of technological or political solutions.
  We believe that the roots of the current and upcoming crises lie in the stories we have been telling ourselves.
  The end of the world as we know it is not the end of the world full stop.
  Humans are not the point and purpose of the planet.
  The Dark Mountaineers intend to challenge the stories which underpin our civilisation:
  The myth of progress: The myth first tells us that we are destined for greatness, that we began grunting in the primeval swamps, as a humble part of something called ‘nature', which we have now triumphantly subdued.
  The myth of human centrality: The myth that humans are the point and purpose of the planet.
  The myth of separation from nature: The myth that humans exist outside of natural forces, and that the agent that is nature can be vainquised.

SOLARPUNK KNOWLEDGE
  Solarpunks cherish both nature and progress, the individual and the community.
  They believe in a world that is green, colourful, and bright. It can be described as a literary genre, an aesthetic, or a movement. The key points are:
  A demand for technology and society to re-centre around sustainability, longevity, and balance with an emphasis on renewable energy.
  A focus on decentralisation, community activism, social justice and civic empowerment.
  A recognition that economic, social, and ecological injustices are all deeply inter-connected.
  We're destroying the world because we are, in a very literal and deliberate way, at war with it. People need more than to be made to feel stupid and guilty. They need more than a vision of doom. They need a vision of the world and of themselves that inspires them.
  Solarpunk is the opposite of cyberpunk's nihilism, offering “ingenuity, positive creation, independence, and community.”

ACTION WISDOM
  Control of actions and speech to avoid unwholesome actions.
  Effort to work as much as possible for the good of others, even at the risk of one's life.
  Decision to devote oneself to beneficial actions and to remain steadfast on it.
  Maintaining a state of mind turned to the happiness of others, to practise love for all beings without exception.
  Development of knowledge and understanding through study and analytical reflection. To teach knowledge to others. To use one's wisdom for a maximum of benefits.
  You may compete to the full extent of your capabilities, but you may not hunt down your competitors.
  The creatures who act as though they belong to the world follow the peace-keeping law, they give the creatures around them a chance to grow toward watever it's possible for them to become. That's how man came into being, the australopithecus didn't imagine that the world belonged to them, so they let him live and grow.
  You must absolutely and forever relinquish the idea that you know who live and who should die on this planet.

INACTION WISDOM
  Establishment of an always perfect tolerance, irrespective of the actions and words of others towards oneself.
  Truthfulness (to say only what is right).
  Rejection of hatred and worship. Not to follow any particular idea. Maintaining the mind in equanimity.

EVERYDAY ITEMS
  Staedtler Pigment Liner 0.3-2.0mm
  MUJI A5 Dotgrid
  Gerber Shard
  Gerber Remix Tactical
  Lawson MII Key holder
  Amazon Kindle Paperwhite
  Duxtio RFID Blocking Wallet

ESSENTIALS ITEMS
  Stitching awl
  Unibody vegetable cleaver
  Stainless steel moka pot
  Tawashi scrubber
  Basic rigging knife
  Unibody nigiri scissors
  Cast iron pan and pot

A  => src/database/horaire.tbtl +5 -0
@@ 1,5 @@
; The horaire is a collection of logs.
; https://wiki.xxiivv.com/site/tablatal.html
;     CODE HOST                 PIC NAME
;     7    12                   33  37
20R05 -343 audio 

A  => src/database/lexicon.ndtl +85 -0
@@ 1,85 @@
; The lexicon is a collection of terms.
; https://wiki.xxiivv.com/site/indental.html

HOME
  HOST : home
  BREF : 
  BODY
    {^img identity/orb.png}
    <p>See {tracker recent changes}.</p>

AUDIO
  HOST : home
  TYPE : portal
  BREF : The Audio portal hosts various soundtrack, records and live projects.
  BODY
    <p>One day many years ago a man walked along and stood in the sound of the ocean on a cold sunless shore and said:</p>
    <p>"We need a voice to call across the water, to warn ships; I'll make one. I'll make a voice like all of time and all of the fog that ever was; I'll make a voice that is like an empty bed beside you all night long, and like an empty house when you open the door, and like trees in autumn with no leaves. A sound like the birds flying south, crying, and a sound like November wind and the sea on the hard, cold shore."</p>
    <p>"I'll make a sound that's so alone that no one can miss it, that whoever hears it will weep in their souls, and hearths will seem warmer, and being inside will seem better to all who hear it in the distant towns. 
    I'll make me a sound and an apparatus and they'll call it a Fog Horn and whoever bears it will know the sadness of eternity and the briefness of life."</p>
    <h5>—Ray Bradbury, The Fog Horn</h5>

VISUAL
  HOST : home
  TYPE : portal
  BREF : The Visual hosts design and interaction projects.

RESEARCH
  HOST : home
  TYPE : portal
  BREF : The Research hosts philosophy and linguistics projects.

ABOUT
  HOST : home
  TYPE : album
  BREF : This wiki is a digital playground and personal logging system.
  BODY
    <p>The aim of this wiki is to build a form of <b>personal assistant</b> to help with the management of a vast repository of recorded statistics which includes {tracker daily logs}, notes on {index various projects} and {mirrors curated pages of general knowledge}.</p>
    <p>{Oscean} is written in portable {ansi_c ANSI C} to be compiled on the {Plan9} operating system, and maintained from {hardware low-power devices}. It is built to adapt to my needs as they change, and to {longtermism technology as it evolves}. The databases are in the {tablatal tbtl}/{indental ndtl} human-readable plaintext formats.</p>
    <p>Each part of this project should aim to persist across {longtermism Technological Long Term}, not one part of it should rely on heavy dependencies. — Every function should be <b>specific</b>, <b>unobfuscated</b>, and each one carefully chosen against general-purpose libraries, frameworks or wasteful foreign entities.</p>
    <p>Using this tool should be <b>frictionless and undisruptive</b>, its formats and subsequent products versionable, re-purposable, interpretable and text-editable. Only through <b>open sources, open standards, human-readable formats</b> and their independencies, might they survive this fleeting age of self-destructing informatics.</p>
    <p>These attributes should not only be <b>perceptible in its design</b>, <br />but deeply <b>rooted in its code</b>.</p>
    <p>This type of website is a often referred to as a "memex", a kind of archive and mirror of everything that one has done, that one has learnt. It's a living document that outlines where one has been, and a tool that advises where one could go.</p>
    <q>Consider a future device, a sort of mechanized private library in which an individual stores all his books, records, and communications, and which may be consulted with exceeding speed and flexibility. It is an enlarged intimate supplement to his memory.</q>
    <h5>—Vannevar Bush, As We May Think</h5>
    <h3>License</h3>
    <p>The license applies to all the <b>documented projects, the projects themselves and their assets</b>. The {http://github.com/XXIIVV/Oscean platform code} is under the <b>MIT License</b>. The {https://creativecommons.org/licenses/by-nc-sa/4.0/ assets and text content} is under the <b>BY-NC-SA4.0 License</b>.</p>
    <p><i>You are free to</i>: <b>Share</b>: copy and redistribute the material in any medium or format. <b>Adapt</b>: remix, transform, and build upon the material.</p>
    <p><i>Under the following terms</i>: <b>Attribution</b>: You must give appropriate credit. <b>NonCommercial</b>: You may not use the material for commercial purposes. <b>ShareAlike</b>: You must distribute your contributions under the same license.</p>
    <p>You can learn more about the {oscean related tools} by visiting the {nataniev} portal, or by reading the {faqs}. You can download a copy of the entire website content and sources as a {https://github.com/XXIIVV/Oscean/archive/master.zip .zip}.</p>
    <p>If you have any <b>question or feedback</b>, please submit a {https://todo.sr.ht/~exprez135/oscean/issues/new bug report}, for any additional informations, contact {nathaniel_ijams Nathaniel Ijams}. </p>
    <h3>Attributions</h3>
    <p>This page, {Oscean}, and my inspiration comes from the work of {https://wiki.xxiivv.com Devine Lu Lingeva}.</p>
  LINK
    source files : https://git.sr.ht/~exprez135/oscean
    original work : https://github.com/XXIIVV/oscean
    rss feed : https://wiki.ijams.me/links/rss.xml

NATHANIEL IJAMS
  HOST : about
  BREF : Nathaniel Ijams is an enthusiast.
  BODY
    <p><b>Nathaniel Ijams</b> is studying at {columbia Columbia University}, developing {research poorly written software}, learning to {visual illustrate}, and exploring {travel the world}.</p>
    <p>Since 2020, Nate has been populating this {about wiki} with notes on various topics, including on {language}, {lifestyle}, and {nutrition}. You can learn about his <b>related interests</b> in the {mirrors}, and in the {directory}.</p>
    <p>Get in touch via email at <b>nate@ijams.me</b>, or<br /> on the fediverse at <b>{https://fosstodon.org/@exprez135 fosstodon.org/@exprez135}</b>.</p><q>To flee is Life,<br />To linger, death.</q>

META
  HOST : about
  BREF : Various notes on the wiki itself.
  BODY
    <h3>Templating</h3>
    <table border='1'>
    <tr><th>plaint text</th><th>result</th><th>name</th></tr>
    <tr><td><code>&#123;zoe_format&#125;</code></td><td>{zoe_format}</td><td>send</td></tr>
    <tr><td><code>&#123;https://xxiivv.com&#125;</code></td><td>{https://xxiivv.com}</td><td>link</td></tr>
    <tr><td><code>&#123;zoe_format send description&#125;</code></td><td>{zoe_format send description}</td><td>send named</td></tr>
    <tr><td><code>&#123;https://xxiivv.com link description&#125;</code></td><td>{https://xxiivv.com link description}</td><td>link named</td></tr>
    <tr><td><code>&#123;^img refs/mos6502.jpg 100&#125;</code></td><td>{^img refs/mos6502.jpg 100}</td><td>image</td></tr>
    </table>
    <h3>Units</h3>
    <ul>
    <li>Neauismetica graphics are 640x405^2</li>
    </ul>
  LINK
    You Have Already Gone to the Other World : https://youtu.be/dd-x2WZ1rzI


A  => src/database/workspace.ndtl +55 -0
@@ 1,55 @@
; The workspace is a collection of tasks.
; https://wiki.xxiivv.com/site/indental.html

INDENTAL
	Convert to tabs?

LIETAL
	Implement dictionary to Oscean
	Rebuild typography generator

OSCEAN
	/now should use date offsets
	/now could have a sort of ASCII graph view?
	Build a kind of calendar?
	Export XXIIVV logo in pixel version

DONSOL
	Physical release
		Box art
		Manual art
	NES Version

MOOGLE
	Split primitives from core

FAMICOM
	Make a CHR RAM cart
	Rebuild basic examples with proper documentation and with a single spritesheet
	Pass cursor data to ROM data via lua

PARADISE
	Make C89 version

PINO
	Build calcium chloride holder
	Install candle holders

NIJUNIJU
	Make famicom version

ORCA
	Build Famicom version

MARKL
	Make famicom mockup

100R.CO
	Convert Google Map to SVG

GEMINI
	Create a simple version of essential recipes

NESPAINT
	Implement SFX sounds


A  => src/helpers.c +262 -0
@@ 1,262 @@
typedef enum { false,
	       true } bool;

bool
isalphachr(char ch)
{
	return (ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z');
}

bool
isnumchr(char ch)
{
	return ch >= '0' && ch <= '9';
}

bool
isspacechr(char ch)
{
	return ch == ' ';
}

bool
isalphanumchr(char ch)
{
	return !isalphachr(ch) && !isnumchr(ch) && !isspacechr(ch) ? false : true;
}

bool
isalphanumstr(char* src)
{
	int i;
	for(i = 0; i < (int)strlen(src); i++) {
		if(!isalphanumchr(src[i])) {
			printf("%c\n", src[i]);
			return false;
		}
	}
	return true;
}

int
indexstr(char* a, char* b)
{
	int i, j, alen = strlen(a), blen = strlen(b);
	for(i = 0; i < alen; i++) {
		for(j = 0; j < blen; j++) {
			if(a[i + j] == '\0') {
				return -1;
			}
			if(a[i + j] != b[j]) {
				break;
			}
			if(j == blen - 1) {
				return i;
			}
		}
	}
	return -1;
}

int
indexchr(char* str, char target)
{
	int i;
	int len = strlen(str);
	for(i = 0; i < len; i++) {
		if(str[i] == target) {
			return i;
		}
	}
	return -1;
}

bool
isurlstr(char* str)
{
	return indexstr(str, "://") >= 0;
}

void
substr(char* src, char* dest, int from, int to)
{
	memcpy(dest, src + from, to);
	dest[to] = '\0';
}

void
swapstr(char* src, char* dest, char* a, char* b)
{
	char head[1024], tail[1024];
	int index = indexstr(src, a);
	if(index < 0) {
		return;
	}
	substr(src, head, 0, index);
	substr(src, tail, index + strlen(a), strlen(src) - index - strlen(a));
	dest[0] = '\0';
	strcat(dest, head);
	strcat(dest, b);
	strcat(dest, tail);
}

void
cpystr(char* src, char* dest)
{
	int i;
	int len = strlen(src);
	for(i = 0; i < len; i++) {
		dest[i] = src[i];
	}
	dest[len] = '\0';
}

void
ucstr(char* dest)
{
	int i, len = strlen(dest);
	for(i = 0; i < len; i++) {
		dest[i] = toupper(dest[i]);
	}
}

void
lcstr(char* dest)
{
	int i, len = strlen(dest);
	for(i = 0; i < len; i++) {
		dest[i] = tolower(dest[i]);
	}
}

char*
trimstr(char* str)
{
	char* end;
	while(isspace((unsigned char)*str))
		str++;
	if(*str == 0)
		return str;
	end = str + strlen(str) - 1;
	while(end > str && isspace((unsigned char)*end))
		end--;
	end[1] = '\0';
	return str;
}

void
alphanumstr(char* src, char* dest)
{
	int i;
	int len = strlen(src) + 1;
	for(i = 0; i < len; i++) {
		dest[i] = src[i];
		if(dest[i] == '\0') {
			break;
		}
		if(!isalphanumchr(dest[i])) {
			dest[i] = ' ';
		} else {
			dest[i] = tolower(dest[i]);
		}
	}
	dest[len - 1] = '\0';
}

void
filenamestr(char* str, char* mod)
{
	int i;
	int len = strlen(str) + 1;
	for(i = 0; i < len; i++) {
		mod[i] = str[i];
		if(mod[i] == '\0') {
			break;
		}
		if(!isalphachr(mod[i]) && !isnumchr(mod[i])) {
			mod[i] = '_';
		} else {
			mod[i] = tolower(mod[i]);
		}
	}
	mod[len - 1] = '\0';
}

void
firstword(char* src, char* dest)
{
	int until = indexchr(src, ' ');
	if(until > -1) {
		substr(src, dest, 0, until);
	} else {
		substr(src, dest, 0, strlen(src));
	}
}

int
count_leading_spaces(char* str)
{
	int i;
	int len = strlen(str) + 1;
	for(i = 0; i < len; i++) {
		if(str[i] != ' ') {
			return i;
		}
	}
	return -1;
}

int
index_of_string(char* a[], int num_elements, char* value)
{
	int i;
	for(i = 0; i < num_elements; i++) {
		if(strcmp(a[i], value) == 0) {
			return i;
		}
	}
	return -1;
}

float
clock_since(clock_t start)
{
	double cpu_time_used = ((double)(clock() - start)) / CLOCKS_PER_SEC;
	return cpu_time_used * 1000;
}

char*
nowstr(void)
{
	time_t now;
	time(&now);
	return ctime(&now);
}

void
fputs_lifeline(FILE* f, int limit_from, int limit_to, int range_from,
               int range_to, int len)
{
	int i;
	float f_len = len - 1;
	bool init = false;
	for(i = 0; i < len; i++) {
		float epoch = (i / f_len) * (limit_to - limit_from) + limit_from;
		if(epoch > range_from && !init) {
			fputs("+", f);
			init = true;
		} else if(epoch >= range_from && epoch <= range_to) {
			fputs("+", f);
		} else {
			fputs("-", f);
		}
	}
}

void
fputs_rfc2822(FILE* f, time_t t)
{
	char rfc_2822[40];
	strftime(rfc_2822, sizeof(rfc_2822), "%a, %d %b %Y 00:00:00 +0900", localtime(&t));
	fprintf(f, "%s", rfc_2822);
}
\ No newline at end of file

A  => src/inc/acme.htm +94 -0
@@ 1,94 @@
<p>The killer feature of Acme is how it integrates into surrounding system. Acme is not trying to be a complete environment by itself. Acme acts as a glue which links together other programs and tools. With Acme the OS becomes your IDE.</p>

<table border='1'>
  <tr><th>Newcol</th><td>create a new column of windows</td></tr>
  <tr><th>Delcol</th><td>delete a column</td></tr>
  <tr><th>New</th><td>create a new window (edit it’s tag to be a file name and you would be creating a new file; you would need to click on “Put” to put the file in the file system).</td></tr>
  <tr><th>Put</th><td>write the body to disk. The file is the one named in the tag.</td></tr>
  <tr><th>Get</th><td>refresh the body (e.g. if it’s a directory, reread it and show it).</td></tr>
  <tr><th>Snarf</th><td>What other window systems call “Copy”.</td></tr>
  <tr><th>Paste</th><td>Can you guess it?</td></tr>
  <tr><th>Font</th><td>Toggles between the monospace and default font</td></tr>
  <tr><th>Exit</th><td>exit acme</td></tr>
</table>

<p>Clicking mouse3 on selected text can do various operations: </p>
<ul>
  <li>If the text names an existing window, acme moves the mouse cursor to the selected text in the body of that window. If the text names an existing file with no associated window, acme loads the file into a new window and moves the mouse there. If the text is a file name contained in angle brackets, acme loads the indicated include file from the directory appropriate to the suffix of the file name of the window holding the text.</li>
  <li>If the text begins with a colon, it is taken to be an address, in the style of sam(1), within the body of the window containing the text. The address is evaluated, the resulting text highlighted, and the mouse moved to it. Thus, in acme, one must type :/regexp or :127 not just /regexp or 127.</li>
  <li>If the text is a file name followed by a colon and an address, acme loads the file and evaluates the address. For example, clicking button 3 anywhere in the text file.c:27 will open file.c, select line 27, and put the mouse at the beginning of the line. The rules about Error files, directories, and so on all combine to make this an efficient way to investigate errors from compilers, etc.</li>
  <li>If the text is not an address or file, it is taken to be literal text, which is then searched for in the body of the window in which button 3 was clicked. If a match is found, it is selected and the mouse is moved there. Thus, to search for occurrences of a word in a file, just click button 3 on the word. Because of the rule of using the selection as the button 3 action, subsequent clicks will find subsequent occurrences without moving the mouse. </li>
</ul>

<h3>Acme Theme</h3>

<p>My current theme for acme can be installed by modifying the <code>/sys/src/cmd/acme/acme.c</code> file and adding the following lines in the <code>iconinit</code> function:</p>

<pre>
void
iconinit(void)
{
  Rectangle r;
  Image *tmp;

  /* Blue */ 
  tagcols[BACK] = display->white;
  tagcols[HIGH] = allocimage(display, Rect(0,0,1,1), screen->chan, 1, 0x72DEC2FF);
  tagcols[BORD] = allocimage(display, Rect(0,0,1,1), screen->chan, 1, 0x72DEC2FF);
  tagcols[TEXT] = display->black;
  tagcols[HTEXT] = display->white;

  /* Yellow */
  textcols[BACK] = allocimagemix(display, DPaleyellow, DWhite);
  textcols[HIGH] = allocimage(display, Rect(0,0,1,1), screen->chan, 1, 0x72DEC2FF);
  /* Halftone */
  textcols[BORD] = allocimage(display, Rect(0,0,2,2), CMAP8, 1, 0x000000FF);
  draw(textcols[BORD], Rect(1,1,2,2), display->white, nil, ZP);
  draw(textcols[BORD], Rect(0,0,1,1), display->white, nil, ZP);
  textcols[TEXT] = display->black;
  textcols[HTEXT] = display->black;

  if(button){
    freeimage(button);
    freeimage(modbutton);
    freeimage(colbutton);
  }
  /* Button */
  r = Rect(0, 0, Scrollwid, font->height+1);
  button = allocimage(display, r, screen->chan, 0, DNofill);
  draw(button, r, tagcols[BORD], nil, r.min);
  r.max.x -= 4;
  fillellipse(button, (Point){r.min.x + 5, r.min.y + 7}, 3, 3, display->white, ZP);
  /* Mod Button */
  r = button->r;
  modbutton = allocimage(display, r, screen->chan, 0, DNofill);
  draw(modbutton, r, tagcols[BORD], nil, r.min);
  r = insetrect(r, 2);
  fillellipse(modbutton, (Point){r.min.x + 3, r.min.y + 5}, 3, 3, display->black, ZP);
  r = button->r;
  colbutton = allocimage(display, Rect(0,0,1,1), screen->chan, 1, 0x72DEC2FF);
  but2col = allocimage(display, r, screen->chan, 1, 0x000000FF);
  but3col = allocimage(display, r, screen->chan, 1, 0x72DEC2FF);
}
</pre>

<p>I don't like that the scrollbar touches the side of the window, to fix that, you can modify the <code>textscrdraw</code> function in the <code>/sys/src/cmd/acme/scrl.c</code> file, and change the following lines:</p>

<pre>
if(!eqrect(r2, t->lastsr)){
  t->lastsr = r2;
  draw(b, r1, t->cols[BORD], nil, ZP);
  r2.max.x = r2.max.x+1;
  draw(b, r2, t->cols[TEXT], nil, ZP);
  r2.min.x = r2.max.x-1;
  draw(b, r2, t->cols[BORD], nil, ZP);
  draw(t->b, r, b, nil, Pt(0, r1.min.y));
}
</pre>

<p>Current fonts</p>

<table border='1'>
  <tr><th>Default</th><td>/lucidasans/euro.8.font</td></tr>
  <tr><th>Fixed</th><td>/fixed/unicode.8x13B.font</td></tr>
</table>

A  => src/inc/ansi_c.htm +46 -0
@@ 1,46 @@
<h3>Example File</h3>

<pre>
cc -std=c89 -Wall struct.c -o struct -lm; ./struct
tcc -Wall struct.c -o struct
</pre>

<pre>
#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int count = 10;

int add_together(int x, int y) {
  int result = x + y;
  return result;
}

typedef struct {
  int x;
  int y;
  int z;
} point;

void print_point(point point) {
  printf("the point is: (%d,%d,%d)\n",point.x,point.y,point.z);
}

int main(int argc, char** argv) {

  point p;
  p.x = 2;
  p.y = 3;
  p.z = 4;

  float length = sqrt(p.x * p.x + p.y * p.y);

  printf("float: %.6f\n", length);
  printf("int: %d\n", p.z);

  print_point(p);

  return 0;
}
</pre>
\ No newline at end of file

A  => src/inc/assembly.htm +187 -0
@@ 1,187 @@
<h3>Lexicon</h3>

<p><b>Directives</b> are commands you send to the assembler to do things like locating code in memory. They start with . and are indented. This sample directive tells the assembler to put the code starting at memory location $8000, which is inside the game ROM area. <b>Labels</b> are aligned to the far left and have a : at the end. The label is just something you use to organize your code and make it easier to read. The assembler translates the label into an address. </p>

<p><b>Opcodes</b> are the instructions that the processor will run, and are indented like the directives. In this sample, JMP is the opcode that tells the processor to jump to the MyFunction label. <b>Operands</b> are additional information for the opcode. Opcodes have between one and three operands. In this example the #$FF is the operand:</p>

<p><b>Comments</b> are to help you understand in English what the code is doing. When you write code and come back later, the comments will save you. You do not need a comment on every line, but should have enough to explain what is happening. Comments start with a ; and are completely ignored by the assembler. They can be put anywhere horizontally, but are usually spaced beyond the long lines.</p>

<pre>
  .org $8000
MyFunction:                    ; A comment
  LDA #$FF
  JMP MyFunction
</pre>

<h3>Styleguide</h3>

<p>Major comments are prefixed with two semi-colons, and minor comments are found at the end of a line on the 32nd column if available. Variables and subroutines are lowercase, constants and vectors are uppercase, and routines are capitalized.</p>

<pre>
;; Variables

  .enum $0000                  ; Zero Page variables
pos_x                   .dsb 1
pos_y                   .dsb 1
  .ende

;; Constants

SPRITE_Y            .equ $0200
SPRITE_X            .equ $0203

RESET:
  NOP

Forever:
  JMP Forever

NMI:
  RTI

;; Routines

Check_Collision: 
  LDA pos_y
  CMP #$88                     ; Floor is at 32y
  BCC @done
  LDA #$88
  STA pos_y
@done:
  RTS

;; Tables

Table_Name:
  .db $40,$46,$4c,$52,$58,$5e,$63,$68

;; Vectors

  .pad $FFFA
  .dw NMI
  .dw RESET
  .dw 0
  .incbin "src/sprite.chr"
</pre>

<p>The <a href='lin6.html'>lin6</a> linter is used to enfore this style on the various assembly projects found on this site.</p>

<h3>Registers</h3>

<p>The 6502 handles data in its registers, each of which holds one byte(8-bits) of data. There are a total of three general use and two special purpose registers:</p>
<p><b>Note:</b> When you use X it adds the value of X to the memory address and uses the 16-bit value at that address to do the write. Whereas when you use Y it adds the value of Y to the address stored in the memory address it's reading from instead. 6502 is little-endian, so $0200 is stored as $00 $02 in memory.</p>

<ul>
  <li><b>A</b>: The accumulator handles all arithmetic and logic. The real heart of the system..</li>
  <li><b>X&Y</b>: General purpose registers with limited abilities..</li>
  <li><b>SP</b>: The stack pointer is decremented every time a byte is pushed onto the stack, and incremented when a byte is popped off the stack..</li>
  <li><b>PC</b>: The program counter is how the processor knows at what point in the program it currently is. It’s like the current line number of an executing script. In the JavaScript simulator the code is assembled starting at memory location $0600, so PC always starts there..</li>
  <li><b>PF</b>: The Processor flag contains 7 bytes, each flag live in a single byte. The flags are set by the processor to give information about the previous instruction. More on that later. Read more about the registers and flags here..</li>
</ul>

<h3>Addressing</h3>

<p>The 6502 has 9 major(13 in total) addressing modes, or ways of accessing memory.</p>

<table border='1'>
  <tr><td width='125'>Immediate</td><td>#aa</td><td>The value given is a number to be used immediately by the instruction.  For example, LDA #$99 loads the value $99 into the accumulator.</td></tr>
  <tr><td>Absolute</td><td>aaaa</td><td>The value given is the address (16-bits) of a memory location that contains the 8-bit value to be used.  For example, STA $3E32 stores the present value of the accumulator in memory location $3E32.</td></tr>
  <tr><td>Zero Page</td><td>aa</td><td>The first 256 memory locations ($0000-00FF) are called "zero page".  The next 256 instructions ($0100-01FF) are page 1, etc.  Instructions making use of the zero page save memory by not using an extra $00 to indicate the high part of the address.</td></tr>
  <tr><td>Implied</td><td></td><td>Many instructions are only one byte in length and do not reference memory. These are said to be using implied addressing. For example, CLC, DEX & TYA.</td></tr>
  <tr><td>Indirect Absolute</td><td>(aaaa)</td><td>Only used by JMP (JuMP).  It takes the given address and uses it as a pointer to the low part of a 16-bit address in memory, then jumps to that address.  For example, JMP ($2345) or, jump to the address in $2345 low and $2346 high</td></tr>
  <tr><td>Absolute Indexed,X/Y</td><td>aaaa,X</td><td>The final address is found by taking the given address as a base and adding the current value of the X or Y register to it as an offset.  So, LDA $F453,X  where X contains 3 Load the accumulator with the contents of address $F453 + 3 = $F456.</td></tr>
  <tr><td>Zero Page Indexed,X/Y</td><td>aa,X</td><td>Same as Absolute Indexed but the given address is in the zero page thereby saving a byte of memory.</td></tr>
  <tr><td>Indexed Indirect</td><td>(aa,X)</td><td>Find the 16-bit address starting at the given location plus the current X register.  The value is the contents of that address.  For example, LDA ($B4,X)  where X contains 6 gives an address of $B4 + 6 = $BA.  If $BA and $BB contain $12 and $EE respectively, then the final address is $EE12.  The value at location $EE12 is put in the accumulator.</td></tr>
  <tr><td>Indirect Indexed</td><td>(aa),Y</td><td>Find the 16-bit address contained in the given location ( and the one following).  Add to that address the contents of the Y register. Fetch the value stored at that address.  For example, LDA ($B4),Y  where Y contains 6 If $B4 contains $EE and $B5 contains $12 then the value at memory location $12EE + Y (6) = $12F4 is fetched and put in the accumulator.</td></tr>
</table>

<h3>Common Opcodes</h3>

<table border='1'>
  <tr><th colspan="2">Load/Store opcodes</th></tr>

  <tr><td width='100'>LDA #$0A</td><td>LoaD the value 0A into the accumulator A. The number part of the opcode can be a value or an address. If the value is zero, the zero flag will be set.</td></tr>
  <tr><td>LDX $0000</td><td>LoaD the value at address $0000 into the index register X. If the value is zero, the zero flag will be set.</td></tr>
  <tr><td>LDY #$FF </td><td>LoaD the value $FF into the index register Y. If the value is zero, the zero flag will be set.</td></tr>
  <tr><td>STA $2000</td><td>STore the value from accumulator A into the address $2000. The number part must be an address.</td></tr>
  <tr><td>STX $4016</td><td>STore value in X into $4016. The number part must be an address.</td></tr>
  <tr><td>STY $0101</td><td>STore Y into $0101. The number part must be an address.</td></tr>
  <tr><td>TAX      </td><td>Transfer the value from A into X. If the value is zero, the zero flag will be set.</td></tr>
  <tr><td>TAY      </td><td>Transfer A into Y. If the value is zero, the zero flag will be set.</td></tr>
  <tr><td>TXA      </td><td>Transfer X into A. If the value is zero, the zero flag will be set.</td></tr>
  <tr><td>TYA      </td><td>Transfer Y into A. If the value is zero, the zero flag will be set.</td></tr>

  <tr><th colspan="2">Math opcodes</th></tr>

  <tr><td width='100'>ADC #$01 </td><td>ADd with Carry. A = A + $01 + carry. If the result is zero, the zero flag will be set</td></tr>
  <tr><td>SBC #$80 </td><td>SuBtract with Carry. A = A - $80 - (1 - carry). If the result is zero, the zero flag will be set</td></tr>
  <tr><td>CLC      </td><td>CLear Carry flag in status register. Usually this should be done before ADC</td></tr>
  <tr><td>SEC      </td><td>SEt Carry flag in status register. Usually this should be done before SBC</td></tr>
  <tr><td>INC $0100</td><td>INCrement value at address $0100. If the result is zero, the zero flag will be set</td></tr>
  <tr><td>DEC $0001</td><td>DECrement $0001. If the result is zero, the zero flag will be set</td></tr>
  <tr><td>INY      </td><td>INcrement Y register. If the result is zero, the zero flag will be set</td></tr>
  <tr><td>INX      </td><td>INcrement X register. If the result is zero, the zero flag will be set</td></tr>
  <tr><td>DEY      </td><td>DEcrement Y. If the result is zero, the zero flag will be set</td></tr>
  <tr><td>DEX      </td><td>DEcrement X. If the result is zero, the zero flag will be set</td></tr>
  <tr><td>ASL A    </td><td>Arithmetic Shift Left. Shift all bits one position to the left. This is a multiply by 2. If the result is zero, the zero flag will be set</td></tr>
  <tr><td>LSR $6000</td><td>Logical Shift Right. Shift all bits one position to the right. This is a divide by 2. If the result is zero, the zero flag will be set</td></tr>

  <tr><th colspan="2">Comparison opcodes</th></tr>

  <tr><td width='100'>CMP #$01 </td><td>CoMPare A to the value $01. This actually does a subtract, but does not keep the result. Instead you check the status register to check for equal, . Less than, or greater than</td></tr>
  <tr><td>CPX $0050</td><td>ComPare X to the value at address $0050</td></tr>
  <tr><td>CPY #$FF </td><td>ComPare Y to the value $FF</td></tr>

  <tr><th colspan="2">Control-Flow opcodes</th></tr>
  
  <tr><td width='100'>JMP $8000</td><td>JuMP to $8000, continue running code there</td></tr>
  <tr><td>BEQ $FF00</td><td>Branch if EQual, contnue running code there. First you would do a CMP, which clears or sets the zero flag. Then the BEQ will check the zero flag. If zero is set (values were equal) the code jumps to $FF00 and runs there. If zero is clear (values not equal) there is no jump, runs next instruction</td></tr>
  <tr><td>BNE $FF00</td><td>Branch if Not Equal - opposite above, jump is made when zero flag is clear</td></tr>
</table>

<h3>Compare</h3>

<p>The compare instructions set or clear three of the status flags (Carry, Zero, and Negative) that can be tested with branch instructions, without altering the contents of the operand. There are three types of compare instructions: </p>

<table border="1">
  <tr><td align="center">Instruction</td><td align="center">Description</td></tr>
  <tr><td>CMP</td><td>Compare Memory and Accumulator</td></tr>
  <tr><td>CPX</td><td>Compare Memory and Index<u>X</u></td></tr> 
  <tr><td>CPY</td><td>Compare Memory and Index <u>Y</u></td></tr>
</table>

<p>The CMP instruction supports eight different addressing modes, the same ones supported by the ADC and SBC instructions. Since the X and Y registers function primarily as counters and indexes, the CPX and CPY instructions do not require this elaborate addressing capability and operate with just three addressing modes (immediate, absolute, and zero page). </p>

<p>The compare instructions subtract (without carry) an immediate value or the contents of a memory location from the addressed register, but do not save the result in the register. The only indications of the results are the states of the three status flags: Negative (N), Zero (Z), and Carry (C). The combination of these three flags indicate whether the register contents are less than, equal to (the same as), or greater than the operand "data" (the immediate value or contents of the addressed memory location. The table below summarizes the result indicators for the compare instructions. </p>

<table border="1">
  <tr><td>Compare Result</td>         <td>N</td><td>Z</td><td>C</td></tr>
  <tr><td>A, X, or Y &lt; Memory</td> <td>*</td><td>0</td><td>0</td></tr>
  <tr><td>A, X, or Y = Memory</td>    <td>0</td><td>1</td><td>1</td></tr>
  <tr><td>A, X, or Y &gt; Memory</td> <td>*</td><td>0</td><td>1</td></tr>
</table>

<p>The compare instructions serve only one purpose; they provide information that can be tested by a subsequent branch instruction. For example, to branch if the contents of a register are less than an immediate or memory value, you would follow the compare instruction with a Branch on Carry Clear (BCC) instruction, as shown by the following: </p>

<h3>Comparing Memory to the Accumulator</h3>

<pre>
  CMP  $20    ; Accumulator less than location $20?
  BCC  THERE
HERE:
  ; No, continue execution here.
THERE:
  ; Execute this if Accumulator is less than location $20.
</pre>

<h3>Use of Branch Instructions with Compare</h3>

<table border="1">
  <tr><td rowspan="2" align="center">To Branch If</td><td colspan="2" align="center">Follow compare instruction with</td></tr>
  <tr><td>For unsigned numbers</td><td>For signed numbers</td></tr>
  <tr><td>Register is less than data</td><td>BCC  THERE</td><td>BMI  THERE</td></tr>
  <tr><td>Register is equal to data</td><td>BEQ  THERE</td><td>BEQ  THERE</td></tr>
  <tr><td>Register is greater than data</td><td>BEQ  HERE<br>BCS  THERE</td><td>BEQ  HERE<br>BPL  THERE</td></tr>
  <tr><td>Register is less than or equal to data</td><td>BCC  THERE<br>BEQ  THERE</td><td>BMI THERE<br>BEQ THERE</td></tr>
  <tr><td>Register is greater than or equal to data</td><td>BCS  THERE</td><td>BPL  THERE</td></tr>
</table>

A  => src/inc/basic.html +28 -0
@@ 1,28 @@
Horizon

0MODE0
1Y=700:S=1
2REPEAT
3MOVE0,Y:DRAW1280,Y
4Y=Y-S:S=S+1
5UNTIL Y<0

C64

10 S$="/\"
15 MODE 0
20 I%=RND(2)
30 PRINT MID$(S$,I%,1);
40 GOTO 20

Arc

10 MODE 0
20 X=RND(700)
30 Y=RND(200)
40 Z=SQR((X*X)+(Y*Y))
50 A=(999/Z)*X
60 B=(999/Z)*Y
70 DRAW A,B
80 MOVE X,Y
90 GOTO 20

A  => src/inc/binary.htm +114 -0
@@ 1,114 @@
<h3>Basics</h3>

<ul>
  <li><b>Bit</b>: The smallest unit in computers. It is either a 1 or a 0.</li>
  <li><b>Nibble</b>: Half a byte, or 4 bites. </li>
  <li><b>Byte</b>: 8 bits together form one byte, a number from 0 to 255.  Bits in the byte are numbered starting from the right at 0.</li>
  <li><b>Short</b>: Two bytes put together is 16 bits, forming a number from 0 to 65535. The low byte is the rightmost eight bits.</li>
  <li><b>Hex Number</b>: A HEX number consisting of 4 numbers is 16-bit.</li>
</ul>  

<h3>Binary to Hexadecimal Conversion</h3>

<p>Break down the binary value in chunks of 4, multiply each 1 by its equivalent value, either 8, 4, 2 or 1. Add the resulting numbers together to get the result. For example, the value 1100, or (8*1 + 4*1), is equal to C(decimal 12).</p>

<table border='1'>
  <tr><td>0</td><td>1</td><td>0</td><td>1</td><td>Binary</td></tr>
  <tr><td>8</td><td>4</td><td>2</td><td>1</td><td>Values</td></tr>
  <tr><td></td><td>4</td><td></td><td>1</td><td>Result: 5</td></tr>
</table>

<h3>Hexadecimal to Binary Conversion</h3>

<table border='1'>
  <tr><td>0</td><td>0000</td><td>4</td><td>0100</td><td>8</td><td>1000</td><td>C</td><td>1100</td></tr>
  <tr><td>1</td><td>0001</td><td>5</td><td>0101</td><td>9</td><td>1001</td><td>D</td><td>1101</td></tr>
  <tr><td>2</td><td>0010</td><td>6</td><td>0110</td><td>A</td><td>1010</td><td>E</td><td>1110</td></tr>
  <tr><td>3</td><td>0011</td><td>7</td><td>0111</td><td>B</td><td>1011</td><td>F</td><td>1111</td></tr>
</table>

<h3>Arithmetic</h3>

<p><b>Addition</b></p>

<table border='1'>
  <tr><td>input</td><td>ADD</td><td>output</td><td>carry</td></tr>
  <tr><td>0</td><td>1</td><td>1</td><td>0</td></tr>
  <tr><td>0</td><td>0</td><td>0</td><td>0</td></tr>
  <tr><td>1</td><td>1</td><td>0</td><td>1</td></tr>
  <tr><td>1</td><td>0</td><td>1</td><td>0</td></tr>
</table>

<p><b>Subtraction</b></p>

<table border='1'>
  <tr><td>input</td><td>SUB</td><td>output</td><td>borrow</td></tr>
  <tr><td>0</td><td>1</td><td>1</td><td>1</td></tr>
  <tr><td>0</td><td>0</td><td>0</td><td>0</td></tr>
  <tr><td>1</td><td>1</td><td>0</td><td>0</td></tr>
  <tr><td>1</td><td>0</td><td>1</td><td>0</td></tr>
</table>

<p><b>Multiplication</b></p>

<table border='1'>
  <tr><td>input</td><td>MUL</td><td>output</td></tr>
  <tr><td>0</td><td>1</td><td>0</td></tr>
  <tr><td>0</td><td>0</td><td>0</td></tr>
  <tr><td>1</td><td>1</td><td>1</td></tr>
  <tr><td>1</td><td>0</td><td>0</td></tr>
</table>

<h3>Bit Masks</h3>

<p><b>AND</b>, or "both", sets individual bits to 0. AND is useful for masking bits, for example, to mask the high order bits of a value AND with $0F: $36 AND $0F = $06.</p>

<table border='1'>
  <tr><td>input</td><td>AND</td><td>output</td></tr>
  <tr><td>0</td><td>1</td><td>0</td></tr>
  <tr><td>0</td><td>0</td><td>0</td></tr>
  <tr><td>1</td><td>1</td><td>1</td></tr>
  <tr><td>1</td><td>0</td><td>0</td></tr>
</table>

<p><b>ORA</b>(OR), or "either one or both", sets individual bits to 1. OR is useful for setting a particular bit, for example, $80 OR $08 = $88</p>

<table border='1'>
  <tr><td>input</td><td>ORA</td><td>output</td></tr>
  <tr><td>0</td><td>1</td><td>1</td></tr>
  <tr><td>0</td><td>0</td><td>0</td></tr>
  <tr><td>1</td><td>1</td><td>1</td></tr>
  <tr><td>1</td><td>0</td><td>1</td></tr>
</table>

<p><b>EOR</b>(XOR), or "one or the other but not both", inverts individual bits.</p>

<table border='1'>
  <tr><td>input</td><td>EOR</td><td>output</td></tr>
  <tr><td>0</td><td>1</td><td>1</td></tr>
  <tr><td>0</td><td>0</td><td>0</td></tr>
  <tr><td>1</td><td>1</td><td>0</td></tr>
  <tr><td>1</td><td>0</td><td>1</td></tr>
</table>

<h3>Rotate</h3>

<p><b>ROL</b> rotate one bit left to multiply by 2, and <b>ROR</b> rotates one bit right to divided by 2.</p>

<table border='1'>
  <tr><td>input</td><td>op</td><td>output</td></tr>
  <tr><td>0110(6)</td><td>ROL</td><td>1100(C)</td></tr>
  <tr><td>0110(6)</td><td>ROR</td><td>0011(3)</td></tr>
</table>

<h3>Signed Integers</h3>

<p>If Bit 7 is not set (as in the first example) the representation of signed and unsigned numbers is the same. However, when Bit 7 is set, the number is always negative. For this reason Bit 7 is sometimes called the sign bit.</p>

<table width="289" border="1">
  <tr><td >Binary</td><td>Unsigned</td><td>Signed</td></tr>
  <tr><td>0010 0011</td><td>35</td><td>35</td></tr>
  <tr><td>1010 0011</td><td>163</td><td>-93</td></tr>
  <tr><td>1111 1111</td><td>255</td><td>-1</td></tr>
  <tr><td>1000 0000</td><td>128</td><td>-128</td></tr>
</table>

A  => src/inc/camilare.htm +37 -0
@@ 1,37 @@
<p>This guide is meant to be a spoiler-free list of tips to help you proceed through Oquonie.</p>

<p>If you have not yet found the <b>first pillar</b> keep playing, for your only task at the moment is to find sequences of three matching tokens.</p>

<p>A <b>red pillar</b> appeared next to one of the town's gates. What do? In your travels, you have met a small spiky ramen-eating character, speaking to him as each character will have him spawn in town and give you a <b>token</b> based on which character that you are. You need his help, so make sure that you have found him in each of the worlds.</p>

<p>Things get a bit trickier here, you will need to find your first token as you leave one world, your second from the ramen guy, and the last in yet another world.</p>

<p>The town's shark will remove your tokens, speak to him if you ever find yourself with tokens that you do not need. Good luck!</p>

<h3>Cheat Codes</h3>
<p>To input the cheat codes, just type while the game window is in focus. Their purpose is resolve mirror bugs whenever your save game glitches.</p>

<table border='1'>
  <tr><td>noplacelikehome</td><td>Warps you into the lobby.</td></tr>
  <tr><td>susannakaysen</td><td>Erases the current save game.</td></tr>
</table>

<p>This list contains some of the most commonly used characters in Oquonie, mouse-hover the character to see their meaning.</p>

<table border='1'>
  <tr><td><img title='Nestorine'         src='../media/generic/camilare.nemedique.png'/></td>  <td><img title='Nephtaline'         src='../media/generic/camilare.nephtaline.png'/></td> <td><img title='Nemedique(Nemedique)' src='../media/generic/camilare.nemedique.png'/></td></tr>
  <tr><td>Nestorine</td>  <td>Nephtaline</td> <td>Nemedique</td></tr>
  <tr><td><img title='Neomine'           src='../media/generic/camilare.neomine.png'/></td>    <td><img title='Dialocie(Door)'     src='../media/generic/camilare.door.png'/></td>       <td><img title='Necomedre'            src='../media/generic/camilare.necomedre.png'/></td></tr>
  <tr><td>Neomine</td>    <td>Dialocie(Door)</td>       <td>Necomedre</td></tr>
  <tr><td><img title='Zolenie(Teleport)' src='../media/generic/camilare.teleport.png'/></td>   <td><img title='Hoathiste(Correct)' src='../media/generic/camilare.correct.png'/></td>    <td><img title='Gemaniste(Incorrect)' src='../media/generic/camilare.incorrect.png'/></td></tr>
  <tr><td>Zolenie(Teleport)</td>   <td>Hoathiste(Correct)</td>    <td>Gemaniste(Incorrect)</td></tr>
  <tr><td><img title='Ecrine(Unlocked)'  src='../media/generic/camilare.unlocked.png'/></td>   <td><img title='Ednasene(Locked)'   src='../media/generic/camilare.locked.png'/></td>     <td><img title='Celpadmale(Help)'     src='../media/generic/camilare.help.png'/></td></tr>
  <tr><td>Ecrine(Unlocked)</td>   <td>Ednasene(Locked)</td>     <td>Celpadmale(Help)</td></tr>
  <tr><td><img title='Aohzaille(Sound)'  src='../media/generic/camilare.sound.png'/></td>      <td><img title='Mikethale(Guide)'   src='../media/generic/camilare.guide.png'/></td>      <td><img title='Casarmate(Inside)'    src='../media/generic/camilare.inside.png'/></td></tr>
  <tr><td>Aohzaille(Sound)</td>      <td>Mikethale(Guide)</td>      <td>Casarmate(Inside)</td></tr>
  <tr><td><img title='Carmate(Outside)'  src='../media/generic/camilare.outside.png'/></td>    <td><img title='Emetegisenete(Key)' src='../media/generic/camilare.key.png'/></td>        <td><img title='Zorgiene(Friend)'     src='../media/generic/camilare.friend.png'/></td></tr>
  <tr><td>Carmate(Outside)</td>    <td>Emetegisenete(Key)</td>        <td>Zorgiene(Friend)</td></tr>
  <tr><td><img title='Oquonie(For)'      src='../media/generic/camilare.foe.png'/></td>        <td><img title='Den(Pillar)'        src='../media/generic/camilare.pillar.png'/></td>     <td></td></tr>
  <tr><td>Oquonie(For)</td>        <td>Den(Pillar)</td>     <td></td></tr>
</table>


A  => src/inc/chr9.htm +183 -0
@@ 1,183 @@
<pre>
#include &lt;u.h&gt;
#include &lt;libc.h&gt;
#include &lt;draw.h&gt;
#include &lt;thread.h&gt;
#include &lt;event.h&gt;

/* 5c chr9.c && 5l -o chr9 chr9.5 */

enum
{
	Bufsz = 4*1024*1024,
	pad = 20
};

char *buttons[] = {"1x", "2x", "3x", "Exit", 0};
Menu menu = {buttons};
static unsigned char *buf;
static long sz;
Image *clr1, *clr2, *clr3;
Image *preview;
int scale = 1;

void
pixel(Image *dst, int x, int y, int scale, Image *src, Point sp)
{
	draw(dst, 
		Rect(x*scale,y*scale,(x+1)*scale,(y+1)*scale), 
		src, nil, sp);
}

void
paint(int id, int color, int scale)
{
	if(color == 0){ return; }
	int ti = id / 64;
	int px = (ti/256)*128;
	int py = 0;
	int tx = (ti % 16) * 8;
	int ty = ((ti/16) * 8) % 128;
	int x = (pad/scale)+px+tx+(id%8);
	int y = (pad/scale)+py+ty+((id%64)/8);
	if(color == 1)
		pixel(preview, x,y,scale,clr1, ZP);
	else if(color == 2)
		pixel(preview, x,y,scale, clr2, ZP);
	else if(color == 3)
		pixel(preview, x,y,scale, clr3, ZP);
}

void
update(int scale)
{
	int w = 16*16*scale+pad*2;
	int h = 16*8*scale+pad*2;
	int cw = screen->r.max.x - screen->r.min.x;
	int ch = screen->r.max.y - screen->r.min.y;
	Point origin = Pt(
		screen->r.min.x + (cw-w)/2, 
		screen->r.min.y + (ch-h)/2);
	Rectangle r = (Rectangle){
		origin, 
		addpt(origin, Pt(w, h))};
	draw(screen, r, preview, nil, ZP);
}

void
reload(int scale)
{
	int b, i, j, id;
	id = 0;
	for (b = 0; b < sz; b += 16) {
		for(i = 0; i < 8; i++){
			for(j = 7; j >= 0; j--){
				int ch1 = buf[b+i];
				int ch2 = buf[b+i+8];
				int color = ((ch1 >> j) & 0x1) + (((ch2 >> j) & 0x1) << 1);
				paint(id, color, scale);
				id++;
			}
		}
	}
	update(scale);
}

void
eresized(int new)
{
	if(new && getwindow(display, Refnone) < 0)
		fprint(2,"can't reattach to window");
	draw(screen, screen->r, display->white, nil, ZP);
	update(scale);
}

void
rescale(int newscale)
{
	scale = newscale;
	draw(screen, screen->r, display->white, nil, ZP);
	draw(preview, 
		Rect(0,0,16*16*scale+pad*2,16*8*scale+pad*2), 
		display->black, nil, ZP);
	reload(scale);
}

static int
loadsprites(int fd)
{
	sz = read(fd, buf, Bufsz);
	rescale(1); 
	return sz < 1;
}

void
main(int argc, char **argv)
{
	Mouse m;
	int i, fd, res;
	Event ev;
	int e, timer;
	
	if ((buf = malloc(Bufsz)) == nil) {
		perror("buf");
		exits("buf");
	}

	initdraw(0,0,0);
	eresized(0);
	einit(Emouse);

	/* Create colors */
	clr1 = allocimage(display, Rect(0,0,1,1), screen->chan, 1, 0x72DEC2FF);
	clr2 = allocimage(display, Rect(0,0,1,1), screen->chan, 1, 0xFFFFFFFF);
	clr3 = allocimage(display, Rect(0,0,1,1), screen->chan, 1, 0x444444FF);

	/* Preview size */
	preview = allocimage(display, 
		Rect(0,0,16*16*3+pad*2,16*8*3+pad*2), 
		screen->chan, 1, 0xFF0000FF);

	res = 0;
	if (argc == 1) {
		i = 1;
		fd = 0;
		goto dump;
	}
	for (i = 1; i < argc && res == 0; i++) {
		if ((fd = open(argv[i], OREAD)) < 0) {
			perror(argv[i]);
			res = 1;
		} else {
			if (argc > 2) {
				write(1, "hx ", 3);
				write(1, argv[i], strlen(argv[i]));
				write(1, "\n", 1);
			}
dump:
			if ((res = loadsprites(fd)) != 0)
				perror(argv[1]);
			close(fd);
		}
	}

	/* Menu */
	for (;;) {
  		e = event(&ev);
  		if ((e == Emouse) && (ev.mouse.buttons & 4)){
			if(emenuhit(3, &ev.mouse, &menu) == 0)
				rescale(1);
			if(emenuhit(3, &ev.mouse, &menu) == 1)
				rescale(2);
			if(emenuhit(3, &ev.mouse, &menu) == 2)
				rescale(3);
			if(emenuhit(3, &ev.mouse, &menu) == 3)
				exits(nil);
    		}
	}

	memset(buf, 0, Bufsz);
	free(buf);
	exits(res == 0 ? nil : "error");
}
</pre>
\ No newline at end of file

A  => src/inc/discourse.htm +35 -0
@@ 1,35 @@
<h3>Argument Ranking</h3>

<table border='1'>
  <tr><td>●●●●●</td><td>High-level generators</td><td>Disagreements that remain when everyone understands exactly what's being argued, and agrees on what all the evidence says, but have vague and hard-to-define reasons for disagreeing.</td></tr>
  <tr><td>●●●●○</td><td>Operationalizing</td><td>Where both parties understand they're in a cooperative effort to fix exactly what they're arguing about.</td></tr>
  <tr><td>●●●○○</td><td>Survey of evidence</td><td>Not trying to devastate the other person with a mountain of facts and start looking at the studies and arguments on both sides and figuring out what kind of complex picture they paint.</td></tr>
  <tr><td>●●●○○</td><td>Disputing definitions</td><td>Argument hinges on the meaning of words, or whether something counts as a member of a category or not.</td></tr>
  <tr><td>●●○○○</td><td>Single Studies</td><td>Better than scattered facts, proving they at least looked into the issue formally.</td></tr>
  <tr><td>●●○○○</td><td>Demands for rigor</td><td>Attempts to demand that an opposing argument be held to such strict standards that nothing could possibly clear the bar.</td></tr>
  <tr><td>●○○○○</td><td>Single Facts</td><td>One fact, which admittedly does support their argument, but presented as if it solves the debate in and of itself.</td></tr>
  <tr><td>●○○○○</td><td>Gotchas</td><td>Short claims that purport to be devastating proof that one side can't possibly be right.</td></tr>
  <tr><td>○○○○○</td><td>Social shaming</td><td>A demand for listeners to place someone outside the boundary of whom deserve to be heard.</td></tr>
</table>

<h3>Response Ranking</h3>

<table border='1'>
  <tr><td>●●●●●●</td><td>Central point</td><td>Commit to refute explicitly the central point.</td></tr>
  <tr><td>●●●●●○</td><td>Refutation</td><td>Argue a conflicting passage, explain why it's mistaken.</td></tr>
  <tr><td>●●●●○○</td><td>Counterargument</td><td>Contradict with added reasoning or evidence.</td></tr>
  <tr><td>●●●○○○</td><td>Contradiction</td><td>State the opposing case, what.</td></tr>
  <tr><td>●●○○○○</td><td>Responding to Tone</td><td>Responding to the author's tone, how.</td></tr>
  <tr><td>●○○○○○</td><td>Ad Hominem</td><td>Attacking the author directly, who.</td></tr>
</table>

<h3>Emotional Reaction</h3>

<table border='1'>
  <tr><td>Seduction</td><td>You are led to feel that the fulfillment of your dreams depends on your doing what the other is encouraging you to do. </td></tr>
  <tr><td>Alignment</td><td>The interests of the system are presented as fulfilling your emotional needs. You are led to feel that your survival, your viability in society or your very identity depends on your doing what the other is requiring of you.</td></tr>
  <tr><td>Reduction</td><td>Complex subjects are reduced to a single, emotionally charged issue.</td></tr>
  <tr><td>Polarization</td><td>Issues are presented in such a way that you are either right or wrong. You are told that any dialogue between different perspectives is suspect, dangerous or simply not permissible.</td></tr>
  <tr><td>Marginalization</td><td>You are made to feel that your own interests (or interests that run counter to the interests of the other) are inconsequential.</td></tr>
  <tr><td>Framing</td><td>The terms of a debate are set so that issues that threaten the system cannot be articulated or discussed. You are led to ignore aspects of the issue that may be vitally important to your own interests but are contrary to the interests of the other that is seeking to make you act in their interests.</td></tr>
</table>
\ No newline at end of file

A  => src/inc/documentation.htm +33 -0
@@ 1,33 @@
<p><b>Tutorials</b> are lessons that take the reader by the hand through a series of steps to complete a project of some kind. They are what your project needs in order to show a beginner that they can achieve something with it.</p>

<ul>
  <li><b>Gets the user started</b></li>
  <li>Allows the user to learn by doing</li>
  <li>Ensures the user sees results immediately</li>
  <li>Focuses on concrete steps, not abstract concepts</li>
</ul>

<p><b>How-to guides</b> assume some knowledge and understanding, and take the reader through the steps required to solve a real-world problem. They are recipes, directions to achieve a specific end - for example: how to create a web form; how to plot a three-dimensional data-set; how to enable LDAP authentication. How-to guides are quite distinct from tutorials. A how-to guide is an answer to a question that a true beginner might not even be able to formulate.</p>

<ul>
  <li><b>Solves a problem</b></li>
  <li>Focuses on results</li>
  <li>Allows for some flexibility</li>
</ul>

<p><b>Explanations</b> can equally well be described as discussions. They are a chance for the documentation to relax and step back from the software, taking a wider view, illuminating it from a higher level or even from different perspectives. You might imagine a discussion document being read at leisure, rather than over the code.</p>

<ul>
  <li><b>Explains a choice</b></li>
  <li>Provides context</li>
  <li>Discusses alternatives & opinions</li>
</ul>

<p><b>Reference</b> guides are technical descriptions of the machinery and how to operate it. They are code-determined, because ultimately that's what they describe: key classes, functions, APIs, and so they should list things like functions, fields, attributes and methods, and set out how to use them.</p>

<ul>
  <li><b>Describes the machinery</b></li>
  <li>References material should be austere and to the point.</li>
  <li>Structure the documentation around the code</li>
  <li>Do nothing but describe</li>
</ul>
\ No newline at end of file

A  => src/inc/donsol.htm +27 -0
@@ 1,27 @@
<p><b>A standard deck of 54 cards</b>, jokers included, is a dungeon. Shuffle the deck and draw 4 cards, display them before you, this is a room. A room ends when all the cards are folded.</p>

<h3>♥︎ Heart Potions</h3>

<p>A <b>potion</b> gives you health points equal to its value, up to a maximum of 21 health points.</p>

<p>Drinking multiple potions in a row will make you sick and result in no extra healing, only the first potion's value will be gained in HP. Potions are equal to their value and face cards (J,Q,K,A) each are equal to 11.</p>

<h3>♦ Diamond Shields</h3>

<p>A <b>shield</b> absorbs the damage difference between the shield value and that of the attacked monster's value.</p>

<p>Shields can only defend against monsters in descending value and if you use a shield on a monster with higher or equal value to the previous, it will break. Broken shields leave you unarmored, and taking full damage. Folding shield card will always replace a previously equipped shield. Shields are equal to their value and face cards (J,Q,K,A) each are equal to 11.</p>

<h3>♣♠ Club/Spades Monsters</h3>

<p>Monster cards are equal to their value, and face cards are as follows J is 11, Q is 13, K is 15, A is 17; Jokers are both equal to 21.</p>

<p>You may <b>escape a room</b>. When escaping, the remaining cards are put back at the end of the deck. A player is allowed to escape a room:</p>

<ul>
  <li><b>Easy Mode</b>: When all monsters in the room have been dealt with, or when the player has not escaped the previous room. </li>
  <li><b>Normal Mode</b>: Only when the player has not escaped the previous room. </li>
  <li><b>Hard Mode</b>: Only when all monsters in the room have been dealt with. </li>
</ul>

<p>The game was released in collaboration with John Eternal, for mobile in 2016, and re-released for Desktop in 2017 as Hundred Rabbits. While the game was designed on a train, without internet connection during Train Jam 2015, it seemed like Donsol's gameplay accidentally ended up quite similar to Zach Gage and Kurt Bieg's <a href=''http://stfj.net/index2.php?project=art/2011/Scoundrel.pdf>Scoundrel</a>, designed in 2011.</p>
\ No newline at end of file

A  => src/inc/english.htm +26 -0
@@ 1,26 @@
<p><b>English Prime</b> is a version of the English language that excludes all forms of the verb "to be", including all conjugations, contractions and archaic forms. Its goal is to leads to a less dogmatic style of language that reduces the possibility of misunderstanding or conflict.</p>

<p>Bourland sees specifically the "identity" and "predication" functions as pernicious, but advocates eliminating all forms for the sake of simplicity. In the case of the "existence" form (and less idiomatically, the "location" form), one might (for example) simply substitute the verb "exists". Other copula-substitutes in English include taste, feel, smell, sound, grow, remain, stay, and turn, among others a user of E-prime might use instead of "to be".</p>

<table border='1'>
  <tr><td><b>Identity</b>        </td><td>The cat is my only pet</td></tr>
  <tr><td><b>Class membership</b></td><td>Garfield is a cat</td></tr>
  <tr><td><b>Class inclusion</b> </td><td>A cat is an animal</td></tr>
  <tr><td><b>Predication</b>     </td><td>The cat is furry</td></tr>
  <tr><td><b>Auxiliary</b>       </td><td>The cat is sleeping</td></tr>
  <tr><td><b>Existence</b>       </td><td>There is a cat</td></tr>
  <tr><td><b>Location</b>        </td><td>The cat is on the mat</td></tr>
</table>

<p>For example, instead of saying, "I am depressed," a student was asked to eliminate that emotionally primed verb and to say something else, such as, "I feel depressed when ..." or "I tend to make myself depressed about ..."</p>

<h3>Spivak Pronoun</h3>

<p>The Spivak pronouns are a set of gender-neutral pronouns in English.</p>

<table border='1'>
  <tr><td>Masculine    </td><td>he laughs </td><td>I hugged him </td><td>his heart warmed  </td><td>that is his</td></tr>
  <tr><td>Feminine     </td><td>she laughs</td><td>I hugged her </td><td>her heart warmed  </td><td>that is hers</td></tr>
  <tr><td>They(s.)     </td><td>they laugh</td><td>I hugged them</td><td>their heart warmed</td><td>that is theirs</td></tr>
  <tr><td><b>Spivak</b>   </td><td>e laughs  </td><td>I hugged em  </td><td>eir heart warmed  </td><td>that is eirs</td></tr>
</table>
\ No newline at end of file

A  => src/inc/famicom.htm +222 -0
@@ 1,222 @@
<h3>NES System Architecture</h3>

<p>The NES screen resolution is 256x240. </p>
<ul>
  <li><b>ROM</b>: Read Only Memory, holds data that cannot be changed. This is where the game code or graphics is stored on the cart..</li>
  <li><b>RAM</b>: Random Access Memory, holds data that can be read and written. When power is removed, the chip is erased. A battery can be used to keep power and data valid..</li>
  <li><b>PRG</b>: Program memory, the code for the game.</li>
  <li><b>CHR</b>: Character memory, the data for graphics.</li>
  <li><b>CPU</b>: Central Processing Unit, the main processor chip.</li>
  <li><b>PPU</b>: Picture Processing Unit, the graphics chip.</li>
  <li><b>APU</b>: Audio Processing Unit, the sound chip inside the CPU.</li>
</ul>

<h3>6502 Processor Overview</h3>

<table border='1'>
  <tr><td>$0000-0800</td><td colspan='2'>Internal RAM, 2KB chip in the NES</td></tr>
  <tr><td rowspan='8'>$2000-2007</td><td colspan='2'>PPU access ports</td></tr>
  <tr><td>$2000</td><td>PPUCTRL</td></tr>
  <tr><td>$2001</td><td>PPUMASK</td></tr>
  <tr><td>$2002</td><td>PPUSTATUS</td></tr>
  <tr><td>$2003</td><td>SPRADDR</td></tr>
  <tr><td>$2005</td><td>PPUSCROLL</td></tr>
  <tr><td>$2006</td><td>PPUADDR</td></tr>
  <tr><td>$2007</td><td>PPUDATA</td></tr>
  <tr><td rowspan='7'>$4000-4015</td><td colspan='2'><a href='#audio'>Audio access ports</a></td></tr>
  <tr><td>$4000-4003</td><td>APUCH1(Pulse1)</td></tr>
  <tr><td>$4004-4007</td><td>APUCH2(Pulse2)</td></tr>
  <tr><td>$4008-400B</td><td>APUCH2(Triangle)</td></tr>
  <tr><td>$400C-400F</td><td>APUCH2(Noise)</td></tr>
  <tr><td>$4010-4013</td><td>APUCH2(DCM)</td></tr>
  <tr><td>$4015</td><td>SNDCHN</td></tr>
  <tr><td rowspan='3'>$4016-4017</td><td colspan='2'><a href='#controllers'>Controllers access ports</a></td></tr>
  <tr><td>$4016</td><td>JOY1</td></tr>
  <tr><td>$4017</td><td>JOY2</td></tr>
  <tr><td>$6000-7FFF</td><td colspan='2'>Optional WRAM inside the game cart</td></tr>
  <tr><td>$8000-FFFF</td><td colspan='2'>Game cart ROM</td></tr>
</table>

<h3>Backgrounds</h3>

<p>To make graphics on the screen you must write graphic data to the PPU memory, but you can't write directly to PPU memory, you have to use PPU ports $2006 and $2007. By using $2006 you declare the address of PPU memory then by using $2007 you write the desired value to that address, PPU Memory addresses are 16bit starting from $0000~$3FFF(0000-1fff = tiles & 2000-23ff = nametable 0).</p>

<table border='1'>
  <tr><td>Hex</td><td>high byte($4A)</td><td>low byte($0F)</td></tr>
  <tr><td>$4A0F</td><td>01001010</td><td>00001111</td></tr>
</table>

<p>So you need to write twice to $2006 to declare it's address, the first write declares high byte of address, the second write declares the low byte of address. Each time you write a value to $2007, the PPU address is automatically adjusted to the next address, so you don't need to declare the PPU address with $2006 for sequential PPU memory addresses.</p>

<pre>
  LDA #$20   ; high byte
  STA $2006
  LDA #$00   ; low byte
  STA $2006
  LDA #$04   ; sprite-id
  STA $2007
</pre>

<p> Calculate at what address to draw it: $2000 plus 32 times the vertical position of the tile (in 8-pixel units) plus the horizontal position of the tile (in 8-pixel units), write the high byte of the address to $2006: this is usually values $20 to $23, and write the low byte of the address to $2006. In other words, calculate the tile offset (TileY * 32 + TileX) and then add the base address. This will give you a pointer you can use to access any part of the map.</p>

<h3>Palette Codes</h3>

<table border="1">
  <tr>
    <td data-nes="0x00" style="background:rgb(124,124,124);">00</td>
    <td data-nes="0x01" style="background:rgb(0,0,252);">01</td>
    <td data-nes="0x02" style="background:rgb(0,0,188);">02</td>
    <td data-nes="0x03" style="background:rgb(68,40,188);">03</td>
    <td data-nes="0x04" style="background:rgb(148,0,132);">04</td>
    <td data-nes="0x05" style="background:rgb(168,0,32);">05</td>
    <td data-nes="0x06" style="background:rgb(168,16,0);">06</td>
    <td data-nes="0x07" style="background:rgb(136,20,0);">07</td>
    <td data-nes="0x08" style="background:rgb(80,48,0);">08</td>
    <td data-nes="0x09" style="background:rgb(0,120,0);">09</td>
    <td data-nes="0x0A" style="background:rgb(0,104,0);">0A</td>
    <td data-nes="0x0B" style="background:rgb(0,88,0);">0B</td>
    <td data-nes="0x0C" style="background:rgb(0,64,88);">0C</td>
    <td data-nes="0x0D" style="background:rgb(0,0,0);">0D</td>
    <td data-nes="0x0E" style="background:rgb(0,0,0);">0E</td>
    <td data-nes="0x0F" style="background:rgb(0,0,0);">0F</td>
  </tr>
  <tr>
    <td data-nes="0x10" style="background:rgb(188,188,188);">10</td>
    <td data-nes="0x11" style="background:rgb(0,120,248);">11</td>
    <td data-nes="0x12" style="background:rgb(0,88,248);">12</td>
    <td data-nes="0x13" style="background:rgb(104,68,252);">13</td>
    <td data-nes="0x14" style="background:rgb(216,0,204);">14</td>
    <td data-nes="0x15" style="background:rgb(228,0,88);">15</td>
    <td data-nes="0x16" style="background:rgb(248,56,0);">16</td>
    <td data-nes="0x17" style="background:rgb(228,92,16);">17</td>
    <td data-nes="0x18" style="background:rgb(172,124,0);">18</td>
    <td data-nes="0x19" style="background:rgb(0,184,0);">19</td>
    <td data-nes="0x1A" style="background:rgb(0,168,0);">1A</td>
    <td data-nes="0x1B" style="background:rgb(0,168,68);">1B</td>
    <td data-nes="0x1C" style="background:rgb(0,136,136);">1C</td>
    <td data-nes="0x1D" style="background:rgb(0,0,0);">1D</td>
    <td data-nes="0x1E" style="background:rgb(0,0,0);">1E</td>
    <td data-nes="0x1F" style="background:rgb(0,0,0);">1F</td>
  </tr>
  <tr>
    <td data-nes="0x20" style="background:rgb(248,248,248);">20</td>
    <td data-nes="0x21" style="background:rgb(60,188,252);">21</td>
    <td data-nes="0x22" style="background:rgb(104,136,252);">22</td>
    <td data-nes="0x23" style="background:rgb(152,120,248);">23</td>
    <td data-nes="0x24" style="background:rgb(248,120,248);">24</td>
    <td data-nes="0x25" style="background:rgb(248,88,152);">25</td>
    <td data-nes="0x26" style="background:rgb(248,120,88);">26</td>
    <td data-nes="0x27" style="background:rgb(252,160,68);">27</td>
    <td data-nes="0x28" style="background:rgb(248,184,0);">28</td>
    <td data-nes="0x29" style="background:rgb(184,248,24);">29</td>
    <td data-nes="0x2A" style="background:rgb(88,216,84);">2A</td>
    <td data-nes="0x2B" style="background:rgb(88,248,152);">2B</td>
    <td data-nes="0x2C" style="background:rgb(0,232,216);">2C</td>
    <td data-nes="0x2D" style="background:rgb(120,120,120);">2D</td>
    <td data-nes="0x2E" style="background:rgb(0,0,0);">2E</td>
    <td data-nes="0x2F" style="background:rgb(0,0,0);">2F</td>
  </tr>
  <tr>
    <td data-nes="0x30" style="background:rgb(252,252,252);">30</td>
    <td data-nes="0x31" style="background:rgb(164,228,252);">31</td>
    <td data-nes="0x32" style="background:rgb(184,184,248);">32</td>
    <td data-nes="0x33" style="background:rgb(216,184,248);">33</td>
    <td data-nes="0x34" style="background:rgb(248,184,248);">34</td>
    <td data-nes="0x35" style="background:rgb(248,164,192);">35</td>
    <td data-nes="0x36" style="background:rgb(240,208,176);">36</td>
    <td data-nes="0x37" style="background:rgb(252,224,168);">37</td>
    <td data-nes="0x38" style="background:rgb(248,216,120);">38</td>
    <td data-nes="0x39" style="background:rgb(216,248,120);">39</td>
    <td data-nes="0x3A" style="background:rgb(184,248,184);">3A</td>
    <td data-nes="0x3B" style="background:rgb(184,248,216);">3B</td>
    <td data-nes="0x3C" style="background:rgb(0,252,252);">3C</td>
    <td data-nes="0x3D" style="background:rgb(216,216,216);">3D</td>
    <td data-nes="0x3E" style="background:rgb(0,0,0);">3E</td>
    <td data-nes="0x3F" style="background:rgb(0,0,0);">3F</td>
  </tr>
</table> 

<h3 id='audio'>Audio</h3>

<p>The NES and Famicom use a set of memory mapped registers to configure the 5 different sound channels, we just write byte data to the ports to configure the ports (though we cannot read back).</p>

<table border="1">
  <tr><td rowspan="4">CH1</td><td>4000</td><td>Volume</td><td><code>CCLEVVVV</code></td><td>vol env len dutycycle</td></tr>
  <tr><td>4001</td><td>Sweep</td><td><code>EUUUDSSS</code></td><td>sweep direction rate enabled</td></tr>
  <tr><td>4002</td><td>Frequency</td><td><code>LLLLLLLL</code></td><td>freqLbyte</td></tr>
  <tr><td>4003</td><td>Length</td><td><code>CCCCCHHH</code></td><td>freqHbyte counter</td></tr>

  <tr><td rowspan="4">CH2</td><td>4004</td><td>Volume</td><td><code>CCLEVVVV</code></td><td>vol env len dutycycle</td></tr>
  <tr><td>4005</td><td>Sweep</td><td><code>EUUUDSSS</code></td><td>sweep direction rate enabled</td></tr>
  <tr><td>4006</td><td>Frequency</td><td><code>LLLLLLLL</code></td><td>freqLbyte</td></tr>
  <tr><td>4007</td><td>Length</td><td><code>CCCCCHHH</code></td><td>freqHbyte counter</td></tr>

  <tr><td rowspan="4">CH3</td><td>4008</td><td>Counter</td><td><code>CLLLLLLL</code></td><td>clock count</td></tr>
  <tr><td>4009</td><td>Sweep</td><td><code>------</code></td><td>unused</td></tr>
  <tr><td>400a</td><td>Frequency</td><td><code>LLLLLLLL</code></td><td>freqLbyte</td></tr>
  <tr><td>400b</td><td>Length</td><td><code>CCCCCHHH</code></td><td>freqHbyte counter</td></tr>

  <tr><td rowspan="4">CH4</td><td>400c</td><td>Volume</td><td><code>CCLEVVVV</code></td><td>vol env len dutycycle</td></tr>
  <tr><td>400d</td><td>Sweep</td><td><code>------</code></td><td>unused</td></tr>
  <tr><td>400e</td><td>Frequency</td><td><code>LLLLLLLL</code></td><td>freqLbyte</td></tr>
  <tr><td>400f</td><td>Length</td><td><code>CCCCCHHH</code></td><td>freqHbyte counter</td></tr>

  <tr><td rowspan="4">CH5</td><td>4010</td><td>Play mode</td><td><code>IL-FFFF</code></td><td>irqenable loopfreq</td></tr>
  <tr><td>4011</td><td>Delta</td><td><code>-DDDDDDD</code></td><td>7bit PCM Data</td></tr>
  <tr><td>4012</td><td>Address</td><td><code>AAAAAAAA</code></td><td>Address $C000+(A*$40)</td></tr>
  <tr><td>4013</td><td>Length</td><td><code>LLLLLLLLL</code></td><td>Length (L*$10)+1 Bytes</td></tr>
</table>

<p>To produce a sound, first we enable the channel via $4015.</p>

<pre>
LDA #%00000010    ; Enable Channel2(Pulse2)
STA $4015
</pre>

<p>Then we write to the Square 2 ports:</p>

<pre>
LDA #%00111000    ; Duty Cycle 00, Volume 8 (half volume)
STA $4004
 
LDA #<$356        ; 356 = C2
STA $4006

LDA #>$356
STA $4007
</pre>

<p>The following table holds all values of every note on every octave that the NTSC NES can produce for the Square and Triangle Wave. These will be listed as 11 bit values that can be stored into the sound registers. All values are rounded to
the nearest number. Note that for the Triangle Wave, these values will make a pitch one octave below that of the Square Wave.</p>

<table border="1">
  <tr><th>A </th><td>$7F1</td><td>$3F8</td><td>$1FB</td><td>$0FD</td><td>$07E</td><td>$03F</td><td>$01F</td><td>$00F</td></tr>
  <tr><th>B#</th><td>$780</td><td>$3BF</td><td>$1DF</td><td>$0EF</td><td>$077</td><td>$03B</td><td>$01D</td><td>$00E</td></tr>
  <tr><th>B </th><td>$713</td><td>$389</td><td>$1C4</td><td>$0E2</td><td>$070</td><td>$038</td><td>$01B</td><td>$00D</td></tr>
  <tr><th>C </th><td>$6AD</td><td>$356</td><td>$1AB</td><td>$0D2</td><td>$06A</td><td>$034</td><td>$01A</td><td>$00C</td></tr>
  <tr><th>D#</th><td>$64D</td><td>$326</td><td>$193</td><td>$0C9</td><td>$064</td><td>$031</td><td>$018</td><td>$00C</td></tr>
  <tr><th>D </th><td>$5F3</td><td>$2F9</td><td>$17C</td><td>$0BD</td><td>$05E</td><td>$02F</td><td>$017</td><td>$00B</td></tr>
  <tr><th>E#</th><td>$59D</td><td>$2CE</td><td>$167</td><td>$0B3</td><td>$059</td><td>$02C</td><td>$015</td><td>$00A</td></tr>
  <tr><th>E </th><td>$54D</td><td>$2A6</td><td>$152</td><td>$0A9</td><td>$054</td><td>$029</td><td>$014</td><td>$00A</td></tr>
  <tr><th>F </th><td>$500</td><td>$27F</td><td>$13F</td><td>$09F</td><td>$04F</td><td>$027</td><td>$013</td><td>$009</td></tr>
  <tr><th>G#</th><td>$4B8</td><td>$25C</td><td>$12D</td><td>$096</td><td>$04B</td><td>$025</td><td>$012</td><td>$008</td></tr>
  <tr><th>G </th><td>$475</td><td>$23A</td><td>$11C</td><td>$08E</td><td>$046</td><td>$023</td><td>$011</td><td>----</td></tr>
  <tr><th>A#</th><td>$435</td><td>$21A</td><td>$10C</td><td>$086</td><td>$042</td><td>$021</td><td>$010</td><td>----</td></tr>
</table>

<h3 id='controllers'>Controller Ports</h3>

<p>The controllers are accessed through memory port addresses $4016 and $4017. First you have to write the value $01 then the value $00 to port $4016. This tells the controllers to latch the current button positions. Then you read from $4016 for first player or $4017 for second player. The buttons are sent one at a time, in bit 0. If bit 0 is 0, the button is not pressed. If bit 0 is 1, the button is pressed.</p>

<p>Button status for each controller is returned in the following order: A, B, Select, Start, Up, Down, Left, Right.</p>

<h3>Mapping</h3>

<p>Some cartridges have a CHR ROM, which holds a fixed set of graphics tile data available to the PPU from the moment it turns on. Other cartridges have a CHR RAM that holds data that the CPU has copied from PRG ROM through a port on the PPU.</p>

<table border="1">
  <tr><th>nrom</th><td>NROM consists of a 16 kilobyte or 32 kilobyte program ROM, a 4 kilobyte or 8 kilobyte graphics ROM, and an NES lockout chip. The address pins on the NES are wired directly to the ROM with no mapper hardware intervening. There is no support for extra work RAM. Any ROM with a size of 40 KB or less is most likely an NROM.</td></tr>
  <tr><th>cnrom</th><td>CNROM is similar to NROM except that writes to the program area of the ROM go to a 74LS161 register that controls the most significant bits of the graphics ROM's address bus, allowing it to be bankswitched in 8 KB chunks. There are also some somewhat sneaky ways to stream map data out of the graphics ROM, making for a larger game. With a ROM size of 32 KB and a graphics ROM size of 16 KB or 32 KB (or higher on the Panesian CNROM clone), most CNROMs are 64 KB or smaller.</td></tr>
  <tr><th>unrom</th><td>Using RAM instead of ROM in a system designed for ROM fonts was the main innovation of UNROM. Programs would write through the PPU to the graphics RAM whenever the screen was turned off (such as during vblank or slight pauses in the action). UNROM let game maps get big. It also allowed for RLE compression of graphics data, as graphics no longer had to be stored in the raw form needed by the PPU. </td></tr>
</table>

A  => src/inc/horaire.htm +34 -0
@@ 1,34 @@
<ul>
  <li>The <b>Sector</b>(Sh), either <i>Audio</i>, <i>Visual</i>, or <i>Research</i>, is the general sector of the task.</li>
  <li>The <b>Concrete Hour</b>(Ch) represents a value of concrete output, or index of progress toward the release of a project — where 1 indicates an introverted task like documentation, or planning, and 9 indicates an extroverted task like giving a talk, or releasing a project.</li>
  <li>The <b>Focus Hour</b>(Fh) is an index of attention for the day's task — where 1 indicates that almost no time was invested in the task, and 9 indicates that most of the available time was invested in the task.</li>
</ul>

<p><b>General Productivity</b>(Ph) is not seen an a net positive, but as a value that speaks of how reflective a project is, or a value that indicates how much time was spent on planning, against time spent on user-facing assets. Certain types of project will naturally have a high index of productivity, while others will not. Productivity might also shift during a project's lifetime as it goes from a prototype(low concrete output), to a full release with its media assets(high concrete output) and through the periods of maintenance(back to low concrete output) that follows.</p>

<table border='1'>
  <tr><td>Planning(4ch) / for 7fh</td><td>0.57ph</td></tr>
  <tr><td>Performance(9ch) / for 3fh</td><td>3.00ph</td></tr>
</table>

<p>A <b>task name</b> can be generated from the intersection of <code>Ch</code> and <code>Fh</code>. For example, the code <code>238</code>, can be converted into <b>8fh</b>, for the <i>storyboard</i> task.</p>

<table border='1'>
  <tr><th colspan='2'>Audio</th><th colspan='2'>Visual</th><th colspan='2'>Research</th></tr>
  <tr><td>10</td><td>idle            </td><td>20</td><td>idle             </td><td>30</td><td>idle</td></tr>
  <tr><td>11</td><td>session         </td><td>21</td><td>screening        </td><td>31</td><td>documentation</td></tr>
  <tr><td>12</td><td>audio experiment</td><td>22</td><td>visual experiment</td><td>32</td><td>experimentation</td></tr>
  <tr><td>13</td><td>rehearsal       </td><td>23</td><td>storyboard       </td><td>33</td><td>maintenance</td></tr>
  <tr><td>14</td><td>draft           </td><td>24</td><td>sketch           </td><td>34</td><td>planning</td></tr>
  <tr><td>15</td><td>composition     </td><td>25</td><td>editing          </td><td>35</td><td>prototype</td></tr>
  <tr><td>16</td><td>sound design    </td><td>26</td><td>graphic design   </td><td>36</td><td>interaction design</td></tr>
  <tr><td>17</td><td>mastering       </td><td>27</td><td>rendering        </td><td>37</td><td>updating</td></tr>
  <tr><td>18</td><td>audio release   </td><td>28</td><td>visual release   </td><td>38</td><td>software</td></tr>
  <tr><td>19</td><td>performance     </td><td>29</td><td>showcase         </td><td>39</td><td>talk</td></tr>
</table>

<h3>Notes</h3>

<p>As explained above, a <b>fh is not equal to an hour</b>, a fh is ratio of invested time over total available time. For example, a good day might look like: 3 pomodoros(~90min) over 3 hours(~180min) equivalent to 50% of available time, or 6fh. And a day of lesser focus might look like: 2 pomodoros(~60min), over 6 hours(~360min) equivalent to 15% of available time, or 2fh. Furthermode, a harder task would be more fh(time spent), over less ch(concrete output), meaning that a high fh does not necessarily correlate with productivity. </p>

<q><b>Effectiveness</b>, is doing the right thing.<br><b>Efficiency</b>, is doing it the right way.</q>
\ No newline at end of file

A  => src/inc/hypertalk.htm +161 -0
@@ 1,161 @@
<p>Hypertalk can be emulated easily using a <a href='macintosh.html'>Macintosh</a> emulator, the default Hypercard canvas size is <a href='https://hundredrabbits.github.io/Noodle/#512x342' class='external' target='_blank'>512x342</a>.</p>

<p>For most basic operations including mathematical computations, HyperTalk favored natural-language ordering of predicates over the ordering used in mathematical notation. For example, in HyperTalk's put assignment command, the variable was placed at the end of the statement:</p>

<pre>put 5 * 4 into theResult</pre>

<h3>Go</h3>

<p>The go command can be used in two ways. It can allow the user to go to any card in the stack that it is  in or to any card of any other stack that is available.</p>

<pre>
visual effect dissolve
go to card id 3807
</pre>

<h3>Put/Set</h3>

<p>To change the text value, or textstyle of a field:</p>

<pre>
on mouseUp
  put random(100) into card field "target"
  set the textstyle of card field "Title" to italic
end mouseUp
</pre>

<p>Alternative, one can use the "type" command if the programmer wants to simulate someone typing something into a field. The type command will do very well here:</p>

<pre>
on mouseUp
  select before first line of card field "target"
  type "hello there"
end mouseUp
</pre>

<h3>Show/Hide</h3>

<p>The hide command can be used to hide any object. Some examples are: buttons, fields, and the menubar. The opposite of the hide command is  the show command, and it can be used to make an object show up again. </p>

<pre>
-- a comment
onmouseUp 
  hide card field "title" 
  wait 5 seconds 
  show card field "title" 
endmouseUp
</pre>

<h3>Choose</h3>

<p>Each of the tools in the tool menu has a name that can be used with this command.</p>

<pre>
onmouseUp 
  choose spray can tool 
  set dragSpeed to 150 
  drag from 300,100 to 400, 200 
  wait 1 second 
  choose eraser tool 
  drag from 300,100 to 400, 200 
  choose browse tool 
endmouseUp
</pre>

<p>The available tools are:</p>

<ul style='columns:3'>
  <li>browse</li>
  <li>brush</li>
  <li>bucket</li>
  <li>button</li>
  <li>curve</li>
  <li>eraser</li>
  <li>field</li>
  <li>lasso</li>
  <li>line</li>
  <li>oval</li>
  <li>pencil</li>
  <li>rect[angle]</li>
  <li>reg[ular] poly[gon]</li>
  <li>round rect[angle]</li>
  <li>select</li>
  <li>spray</li>
  <li>text</li>
</ul>

<h3>Modal</h3>

<h4>Basic</h4>

<pre>
on mouseUp
  ask "What is your name?"
  put it into response
  answer "You said " & response
end mouseUp
</pre>

<h4>Logic with input</h4>

<pre>
on mouseUp
  ask "What is your name?"
  put it into response
  if response is "blue" then 
    answer "correct."
  else
    answer "incorrect."
  end if
end mouseUp
</pre>

<h4>Logic with choices</h4>

<pre>
on mouseUp
  answer "Which color?" with "cyan" or "magenta" or "yellow"
  if it is "cyan" then 
    answer "You selected cyan."
  else
    answer "You did not select cyan."
  end if
end mouseUp
</pre>

<h3>Play</h3>

<p>The play command plays the specified sequence of notes with the specified sampled sounds. The tempo parameter specifies the number of quarter notes per minute; the default value is 120. </p>

<pre>play "harpsichord" "c4 a3 f c4 a3 f c4 d c c c"</pre>

<h3>Globals</h3>

<p>The global command is  used to specify variables which will be available to other scripts within the stack or even in another stack. Unless variables are declared a global, they are considered by HyperTalk as local which means that they may only be used within a single script. If they are global, they may be carried to other scripts. Variables must be identified before they are used in order for them to become global. </p>

<pre>
-- allow access to globals
global var1, var2, ..
answer "hello " & var1 & "."
</pre>

<h3>Summary</h3>

<pre>
-- Let's put it altogether now
on mouseUp
  put random of 100 into n
  repeat 6
    ask "please input number(1-100)?"
    if it < n then
      answer "more than" && it
    else if it > n then
      answer "less than" && it
    else if it is n then
      answer "perfect!"
    exit mouseUp
    end if
  end repeat
  answer "You lose, myy answer is " && n 
end mouseUp
</pre>
\ No newline at end of file

A  => src/inc/identity.htm +153 -0
@@ 1,153 @@
<table border='1'>
  <tr><th colspan='3'>The Dinaisth Flag</th></tr>
  <tr>
    <td colspan='3'><center><img src='../media/identity/dinaisth.flag.color.svg' height='100'/></center></td>
  </tr>
  <tr>
    <td style='background:#72DEC2'>#72DEC2</td>
    <td style='background:#000000; color:white'>#000000</td>
    <td style='background:#FFFFFF'>#FFFFFF</td>
  </tr>
  <tr>
    <td>Audio</td>
    <td>Visual</td>
    <td>Research</td>
  </tr>
</table>

<p>The <b>Flag of Dinaisth</b> depicts <a href='ehrivevnv.html'>ehrivevnv</a>'s ultraviolet reflection upon the Kanikule ocean below a lightless sky.</p>

<figure>
  <img src='../media/identity/koseki-091450.jpg' height='100'/>
  <figcaption>091450</figcaption>
</figure>

<p>It is an old rendition of the character for blue, found in the the <a href='http://glyphwiki.org/wiki/koseki-091450' class='external' target='_blank'>Shuowen Jiezi</a>, the character dictionary written by Xu Shen, 100 CE. This particular glyph has probably never been used outside of paleography. I found it to be very beautiful, and the word "blue" has a special meaning in the <a href='neauismetica'>stories</a> from which my handle "neauoire" comes from.</p>

<figure>
  <img src='../media/identity/ambigram.jpg' height='100'/>
  <figcaption>Ambigram</figcaption>
</figure>

<p>The neauoire Ambigram avatar is used mostly in forums, as an alternative to the 091450 icon. The design is taken from the <a href='../media/diary/75.jpg'>complete Neau Ambigram</a>, also found <a href='about.html'>here</a>.</p>

<figure>
  <img src='../media/identity/carmilla.jpg' height='100'/>
  <figcaption>Carmilla</figcaption>
</figure>

<p>The Carmilla icon is taken from the <a href='https://archive.org/stream/Carmilla1/carmilla-1-1-1995#page/n41/mode/2up' class='external' target='_blank'>1995 cyberpunk magazine</a> with the same name. This avatar is primarily being used on <a href='https://merveilles.town/@neauoire' class='external' target='_blank'>Mastodon</a> and various private channels.</p>

<figure>
  <img src='../media/identity/orb.png' height='100'/>
  <figcaption>Orb</figcaption>
</figure>

<p>The Orb fractal icon was created in 2007 and has come to represent the <i>Trisight</i>, it is usually visible on the main portal pages of this wiki.</p>

<figure>
  <img src='../media/identity/crest.png' height='100'/>
  <figcaption>Neauismetic Crest</figcaption>
</figure>

<p>The <a href='neauismetica.html'>Neauismetic</a> Crest features various elements found in the iconography of the <a href='neon_hermetism.html'>Neon Hermetists</a>. This icon is used mostly on the maps and charts from that world.</p>

<figure>
  <img src='../media/identity/lietal.png' height='100'/>
  <figcaption>Lietal Glyph</figcaption>
</figure>

<p>The <a href='lietal.html'>Lietal</a> icon represents the relationship between the language's Elementary Constructs.</p>

<figure>
  <img src='../media/identity/mug.png' height='100'/>
  <figcaption>Mug</figcaption>
</figure>

<p>A mug shot created with an old abandoned police sketch software for <a href='macintosh.html'>Macintosh</a>, from the 1980s.</p>

<figure>
  <img src='../media/identity/pino.bw.svg' height='100'/>
  <figcaption>Pino</figcaption>
</figure>

<p>The name of our <a href='pino.html'>sailboat</a>, written with the <a href='nautical.html'>alphabet flags</a>.</p>

<h3>Pascal</h3>

<p>Here is the XXIIVV logo written in <a href='pascal.html'>Pascal</a>.</p>

<pre>
program XXIIVV;

 procedure DrawPath (scale, thickness, offx, offy: integer);
  var
   arc: Rect;
 begin
  PenSize(thickness, thickness);
{line1}
  MoveTo(offx, round(offy + (2 * scale)));
  LineTo(offx, offy + round(0.5 * scale));
{line2}
  MoveTo(offx + scale, round(offy + (1.5 * scale)));
  LineTo(offx + scale, offy + round(0.5 * scale));
{line3}
  MoveTo(offx + (2 * scale), round(offy + (1.5 * scale)));
  LineTo(offx + (2 * scale), offy + round(0.5 * scale));
{line4}
  MoveTo(offx + (3 * scale), round(offy + (0.5 * scale)));
  LineTo(offx + (3 * scale), offy + round(2 * scale));
  LineTo(offx + (4 * scale), offy + round(2 * scale));
  LineTo(offx + (4 * scale), offy + round(0 * scale));
  LineTo(offx + (5 * scale), offy + round(0 * scale));
  LineTo(offx + (5 * scale), offy + round(2 * scale));
  LineTo(offx + (6 * scale), offy + round(2 * scale));
  LineTo(offx + (6 * scale), offy + round(0 * scale));
  LineTo(offx + (7 * scale), offy + round(2 * scale));
  LineTo(offx + (8 * scale), offy + round(0 * scale));
  LineTo(offx + (9 * scale), offy + round(2 * scale));
{ arc1 }
  SetRect(arc, offx, offy, offx + scale + thickness, offy + scale + thickness);
  FrameArc(arc, 270, 180);
{ arc2 }
  SetRect(arc, offx + (scale), offy + scale, offx + (2 * scale) + thickness, offy + (2 * scale) + thickness);
  FrameArc(arc, 90, 180);
{ arc3 }
  SetRect(arc, offx + (scale * 2), offy, offx + (3 * scale) + thickness, offy + scale + thickness);
  FrameArc(arc, 270, 180);
 end;

begin

{ Bresenham 4, 6, 7, 10, 11, 14, 17, 20, 23, 24, 27, 30, 37 }

 ShowDrawing;
 DrawPath(27, 1, 20, 25);

end.
</pre>

<h3>SVG</h3>

<p>Here is the XXIIVV logo written in SVG path.</p>

<pre>
M 1 31
l 0 -22.5 
a 7.5,7.5 0 1,1 15,0
l 0 15 
a 7.5,7.5 0 0,0 15,0
l 0 -15
a 7.5,7.5 0 1,1 15,0
l 0 22.5 
l 15 0 
l 0 -30
l 15 0 
l 0 30 
l 15 0 
l 0 -30
l 0.5 0 
l 15 30
l 15 -30
l 15 30
</pre>
\ No newline at end of file

A  => src/inc/indental.htm +9 -0
@@ 1,9 @@
<pre>
NAME
  KEY &#58; VALUE
  LIST
    ITEM1
    ITEM2
</pre>

<p>Or, <code>&#123;NAME:&#123;KEY:VALUE,LIST:[ITEM1,ITEM2])&#125;</code></p>
\ No newline at end of file

A  => src/inc/japanese.htm +102 -0
@@ 1,102 @@
<p>This is an edited version on <b>Tad Perry</b>'s "<i>Quick & Dirty Guide to Japanese</i>". I have formatted this guide to be a study tool prior to moving to Japan a few years ago, it requires the knowledge to <b>read Hiragana, Katakana and basic kanjis</b>.</p>

<h3>Sentence Word Order</h3>

<p>In general, the main verb is found at the end of the sentence. Subjects are shown in grey as they are very often omitted. The preposition follows the noun, it is more properly called a postposition(て、に、お、は). They are not independent words but particles by which the case of nouns is determined.</p>

<q>I'm going to give a present to my teacher tomorrow at school.</q>

<table border='1'>
  <tr><td>Subject</td><td>Time</td><td>Place</td><td>Indirect</td><td>Object</td><td>Action Verb</td></tr>
  <tr><td>私は</td><td>明日</td><td>学校で</td><td>先生に</td><td>プレゼントを</td><td>上げます</td></tr>
  <tr><td>わたくしは</td><td>あした</td><td>がっこうで</td><td>せんせいに</td><td>ぷれぜんとを</td><td>あげます</td></tr>
</table>

<h3>Particles</h3>

<ul>
  <li>Use は after the subject, if a <b>new subject is introduced</b> where another had been previously understood. If a subject is understood, but for some reason not deleted use が, or nothing.</li>
  <li>Use に to indicate a specific points in <b>time</b>, a word like "tomorrow"(明日) can only be understood by context and does not need the particle added. Like "In October", or 十月に — or like "On March 3rd", or 三月三日に. <b>Indirect objects</b> are also followed by に, similar to the english expression "to you", as seen in the following sentence "I'm going to give this book to you.", or この本をあなたに上げる.</li>
  <li>Use で after the <b>place</b> you do something or the <b>thing</b> you use to do something. For example, "Going by car", is 車で行く.</li>
  <li>Use を after a noun to declare an <b>object</b>, as seen in the following sentence "I'm reading a book", or 本を読んでいる.</li>
  <li>Use も to <b>add extra info</b> on top of what has already been declared, not unlike the english word "too", as in "me too". For example, "I'm going too", is ぼくも行く.</li>
  <li>Use の to indicate <b>possession</b> after an object, similarly to the english possession particle "'s", as in "Alex's". For example, "This is my book" is これはぼくの本です.</li>
  <li>Use か at the end of a sentence to create a <b>question</b>, as in "What time is it?", or 何時ですか? Or, between <b>choices</b>, each choice is also followed by か. As in "Today or tomorrow?", or 今日か明日?</li>
  <li>Use ね after a verb to create a sort of <b>agreement</b> with the listener, not unlike the english expression "isn't?", in "It's fun isn't it?", or たのうしいですね.</li>
</ul>

<h3>Nouns</h3>

<p>Nouns have no inflection to indicate singularity or plurality, for example, こども means both child and children. When wishing to show the plural of a noun, an indicator such as ーら、ーたち are attached, as in こどもたち, meaning children. Generally, the plural distinction is not made, but is left to be understood from the context.</p>

<h3>Adjectives</h3>

<p>Adjectives always end in あい, いい, うい or おい, never in えい that would be a noun. Basically, you replace the ending い to inflect.</p>

<table border='1'>
  <tr><td>優しい </td><td> やさしい </td><td> It's nice</td></tr>
  <tr><td>優しくない </td><td> やさしくない </td><td> It's not nice</td></tr>
  <tr><td>優しかった </td><td> やさしかった </td><td> It was nice</td></tr>
  <tr><td>優しかったら </td><td> やさしかったら </td><td> If it's nice</td></tr>
</table>

<h3>Verbs</h3>

<p>The ーる verbs that end in like たべる and いれる. There is always an い or an え before ーる. For these verbs, everything is done by dropping or replacing ーる with something else.</p>

<table border='1'>
  <tr><td><i>食べ</i>る</td><td>Eating</td></tr>
  <tr><td><i>食べ</i>ます</td><td>(Polite)</td></tr>
  <tr><td><i>食べ</i>て</td><td>Gerund</td></tr>
  <tr><td><i>食べ</i>た</td><td>I ate it.</td></tr>
  <tr><td><i>食べ</i>やすい</td><td>This is easy to eat.</td></tr>
  <tr><td><i>食べ</i>たら</td><td>If I/someone eats.</td></tr>
  <tr><td><i>食べ</i>たり</td><td>I did things like eating</td></tr>
  <tr><td><i>食べ</i>れば</td><td>If I/someone eats.</td></tr>
  <tr><td><i>食べ</i>よう</td><td>Let's eat.</td></tr>
  <tr><td><i>食べ</i>ろ</td><td>Eat dammit!</td></tr>
  <tr><td><i>食べ</i>ないでよ</td><td>Don't eat that!</td></tr>
  <tr><td><i>食べ</i>られる</td><td>I can eat</td></tr>
  <tr><td><i>食べ</i>られるない</td><td>I can't eat this!</td></tr>
  <tr><td><i>食べ</i>させる</td><td>Make someone do</td></tr>
  <tr><td><i>食べ</i>させない で よ</td><td>Don't make me eat this!</td></tr>
  <tr><td><i>食べ</i>させられる</td><td>Be made to eat</td></tr>
</table>

<p>These verbs end in う, く, ぐ, ぶ, む, ぬ, す, つ, or ある・いる・うる・える・おる. Typically you drop ーう and add something else. The problem is that there might be a phonetic change, such as when は becomes ぱ, or た becomes だ.</p>

<table border='1'>
  <tr><td><b>talk</b> </td><td>はな</td><td>話す </td><td>話して</td><td>話しった </td><td>話したら</td><td>話せ</td><td>話さない</td><td>話せる</td></tr>
  <tr><td><b>walk</b> </td><td>きく</td><td>きく </td><td>きいて </td><td>聞いた</td><td>聞いたら</td><td>聞け</td><td>聞かない </td><td>聞ける</td></tr>
  <tr><td><b>swim</b> </td><td>およぐ </td><td>泳ぐ</td><td>泳いでる</td><td>泳いだ</td><td>泳いだら</td><td>泳げ</td><td>泳がない</td><td>泳げる</td></tr>
  <tr><td><b>call</b> </td><td>よび</td><td>呼ぶ </td><td>呼んで </td><td>呼んだ</td><td>呼んだら</td><td>呼べ </td><td>呼ばない </td><td>呼べる</td></tr>
  <tr><td><b>drink</b></td><td>ぬも</td><td>飲む </td><td>飲んで </td><td>飲んだ</td><td>飲んだら</td><td>飲め </td><td>飲まない </td><td>飲める</td></tr>
  <tr><td><b>die</b></td><td>しぬ</td><td>死ぬ </td><td>死んで </td><td>死んだ</td><td>死んだら</td><td>死ね </td><td>死なない </td><td>死ねる</td></tr>
  <tr><td><b>make</b> </td><td>つくる</td><td>作る </td><td>作って</td><td>つ作った </td><td>作ったら</td><td>作れ</td><td>作らない</td><td>作れる</td></tr>
  <tr><td><b>wait</b> </td><td>まて</td><td>待つ </td><td>待って </td><td>待った</td><td>待ったら</td><td></td><td>待たない</td><td>待てる</td></tr>
  <tr><td><b>pay</b></td><td>はらう </td><td>払う</td><td>払って</td><td>払った </td><td>払ったら</td><td>払え</td><td>払わない</td><td>払える</td></tr>
</table>

<p>There are some ーう verbs that end in ーる like ある(to be), おる(to break) and うる(to sell) are ーう verbs as they do not have an い or え sound before ーる.</p>

<p>If you see one that ends in ーいる or ーえる, and ーう changes to add ーます, or the "t" doubles to get a gerund (入る「はいる」 > 入って「はいって」), then you're dealing with an ーう verb.</p>

<p>Most books say that there are only two irregular verbs in all of Japanese: する and 来る「くる」. Those you have to memorize separately, but they kind of make sense when you look at them.</p>

<table border='1'>
  <tr><td>来る</td><td>will come</td><td>する </td><td>will do</td></tr>
  <tr><td>来て</td><td>come here</td><td>して </td><td>do this</td></tr>
  <tr><td>来た</td><td>someone came</td><td>した </td><td>someone did</td></tr>
  <tr><td>来たら</td><td>if someone comes</td><td>したら</td><td>if someone does</td></tr>
  <tr><td>来たり</td><td>do things like come</td><td>したり </td><td>do things like doing</td></tr>
  <tr><td>来れば</td><td>if someone comes</td><td>すれば</td><td>if someone does</td></tr>
  <tr><td>来よう</td><td>let's come</td><td>しよう</td><td>let's do</td></tr>
  <tr><td>来い</td><td>come here you</td><td>しろ</td><td>do this dammit!</td></tr>
  <tr><td>来ない</td><td>won't come, or doesn't come</td><td>しない</td><td>won't do, or doesn't do</td></tr>
  <tr><td>来らせる</td><td>can come</td><td>できる</td><td>can do</td></tr>
  <tr><td>来させる</td><td>make someone come</td><td>させる</td><td>make someone do</td></tr>
  <tr><td>来られる</td><td></td><td>される</td><td>be done</td></tr>
  <tr><td>来させられる</td><td>be made to come by someone</td><td>させられる</td><td>be made to do by someone</td></tr>
</table>

<p>A trick to remember する conjugations is that they often match what you would get if you conjugated a lone す. Like はな<b>した</b>, はな<b>せる</b>, はな<b>させる</b>.</p>
\ No newline at end of file

A  => src/inc/lain.htm +20 -0
@@ 1,20 @@

<h3>Templating With Lain</h3>
<pre>
(link "home")                             {(link "home")}
(link "home" "local")                     {(link "home" "local")}
(link "https://github.com/")              {(link "https://github.com/")}
(link "https://github.com/" "external")   {(link "https://github.com/" "external")}
(bold "bold")                             {(bold "bold")}
(ital "italic")                           {(ital "italic")}
(bold (link "home" "bold link"))          {(bold (link "home" "bold link"))}
</pre>

<h3>Programming With Lain</h3>
<pre>
(add (sub 5 3) 2)                         ; Basic Math
(λ (a b c) (concat a b c))                ; Lambda
(def obj:foo "bar")                       ; Creating object
(obj:foo)                                 ; Reading object parameters
(def _sidebar (dom:create "sidebar"))     ; Creating DOM elements
</pre>
\ No newline at end of file

A  => src/inc/lietal.htm +132 -0
@@ 1,132 @@
<p><b>Lietal</b> is written from left to right with implicit neutrality, singularity and at the present tense.
For the most part, its <b>6 vowels and 9 consonants</b> are voiced similarly to their English equivalents. The Lietal "<i>e</i>" is very short, a barely audible junction between two consonants.</p>

<table border='1'>
  <tr><td>I /i/</td><td>l<b>ea</b>ves     </td><td>Y /ɨ/</td><td>journ<b>ey</b>    </td><td>E /e/</td><td>n<b>e</b>ver</td></tr>
  <tr><td>A /ə/</td><td>hex<b>a</b>gram   </td><td>O /ɔ/</td><td>aut<b>o</b>mobile </td><td>U /u/</td><td>n<b>ew</b></td></tr>
  <tr><td>K [k]</td><td><b>k</b>iss       </td><td>T [t]</td><td>ti<b>t</b>le      </td><td>D [d]</td><td><b>d</b>evice</td></tr>
  <tr><td>R [ʁ]</td><td>retu<b>r</b>n     </td><td>S [s]</td><td><b>s</b>ymphony   </td><td>L [l]</td><td><b>l</b>igature</td></tr>
  <tr><td>J [ʐ]</td><td>mena<b>g</b>erie  </td><td>V [v]</td><td><b>v</b>ideo      </td><td>F [f]</td><td><b>f</b>estival</td></tr>
</table>

<h3>Phonology</h3>

<p>Building words from Lietal's phonemes, or <i>dictionary forms</i> is called <b>Childspeak</b>. It makes for long rhythmical and syllabic words, its main usage is in loan words and to express of emphasis or exclamation. This documentation uses the phonetically denser form <b>Adultspeak</b> where patterns of duplicated consonants and vowels are condensed.</p>

<table border='1'>
  <tr><td>CVCV</td><td><b>lili</b> > lie</td><td><b>dalili</b> > dalie</td><td><b>dadalili</b> > daelie</td></tr>
  <tr><td>CVCv</td><td><b>lila</b> > lia</td><td><b>dalila</b> > dalia</td><td><b>dadolila</b> > daolia</td></tr>
  <tr><td>CVcV</td><td><b>liri</b> > lire</td><td><b>daliri</b> > dalire</td><td><b>dakaliri</b> > dakelire</td></tr>
  <tr><td>CVcv</td><td><b>lira</b> > lira</td><td><b>dalira</b> > dalira</td><td><b>dakolira</b> > dakolira</td></tr>
</table>

<p>A sequence of consonants, like "lyla", is condensed into <b>lya</b>, a sequence of vowels, like "lara", is condensed into <b>lare</b>, in which an additional short "<i>e</i>" is replacing the duplicated vowel. The same rule also applies to assemble longer words, for example, "tosorari" will be condensed into <b>toserai</b>.</p>

<p>Along with Childspeak and Adultspeak forms, there is also rules for <b>Formal</b>, <b>Casual</b> and <b>Mixed</b> forms, the complete list of the various way to spell Lietal words is available <a href='#phonetics'>here</a>.</p>

<h3>Morphology</h3>

<p>Lietal words are built from the combination of the <b>9 Elementary Particles</b>, and each one contains a <i>consonant & a vowel</i>.</p>

<table border='1'>
  <tr><td></td><td><b>Directional</b>              </td><td><b>Perspectival</b>             </td><td><b>Mechanical</b>
  <tr><td><b>Objective</b>  </td><td>Ky <b>traverse</b>-type</td><td>Ty <b>state</b>-type</td><td>Dy <b>scale</b>-type</td></tr>
  <tr><td><b>Observative</b></td><td>Ry <b>direction</b>-type</td><td>Sy <b>relation</b>-type</td><td>Ly <b>counter</b>-type</td></tr>
  <tr><td><b>Subjective</b> </td><td>Jy <b>modality</b>-type</td><td>Vy <b>alignment</b>-type</td><td>Fy <b>action</b>-type</td></tr>
</table>

<p><b>Words are not created, but found</b> among the permutations of the nine elementary particles, making for a total of <b>27 Elementary Constructs</b>. These elementary constructs can be combined with each other, to create more complex ideas.</p>

<table border='1'>
<tr><td></td><td><b>Directional</b></td><td><b>Perspectival</b></td><td><b>Mechanical</b></td></tr>
<tr><td rowspan='4'><b>Objective</b>  </td><td><b>Ky traverse</b></td><td><b>Ty state</b></td><td><b>Dy scale</b></td></tr>
<tr><td>• <b>Ki</b> parent </td><td>• <b>Ti</b> psychological </td><td>• <b>Di</b> complex</td></tr>
<tr><td>• <b>Ka</b> location </td><td>• <b>Ta</b> physiognomical </td><td>• <b>Da</b> organic</td></tr>
<tr><td>• <b>Ko</b> child </td><td>• <b>To</b> physical </td><td>• <b>Do</b> synthetic</td></tr>
<tr><td rowspan='4'><b>Observative</b></td><td><b>Ry direction</b></td><td><b>Sy relation</b></td><td><b>Ly counter</b></td></tr>
<tr><td>• <b>Ri</b> outward </td><td>• <b>Si</b> unit </td><td>• <b>Li</b> multiple</td></tr>
<tr><td>• <b>Ra</b> position </td><td>• <b>Sa</b> together </td><td>• <b>La</b> single</td></tr>
<tr><td>• <b>Ro</b> inward </td><td>• <b>So</b> separate </td><td>• <b>Lo</b> none</td></tr>
<tr><td rowspan='4'><b>Subjective</b> </td><td><b>Jy modality</b></td><td><b>Vy alignment</b></td><td><b>Fy action</b></td></tr>
<tr><td>• <b>Ji</b> definitive </td><td>• <b>Vi</b> positive </td><td>• <b>Fi</b> to do</td></tr>
<tr><td>• <b>Ja</b> possible </td><td>• <b>Va</b> unknown </td><td>• <b>Fa</b> to see</td></tr>
<tr><td>• <b>Jo</b> impossible </td><td>• <b>Vo</b> negative </td><td>• <b>Fo</b> to be</td></tr>
</table>

<p>For example, <b>aferi</b>(to show), is built of the elementary constructs <b>af</b>(to see) and <b>ir</b>(outward). The word for dictionary is <b>Äselodeta</b>, which literally means <i>a collection of words</i>, built from <b>as</b>(together) and <b>alodeta</b>(word). The <b>leading syllable determines a word's type</b>, for example, <b>aferi</b> inherits the action-type from <b>af</b>(to see), therefore anything that begins with <b>af</b> can be assumed to be an action word relating to sight.</p>

<table border='1'>
  <tr><td><b>fo</b>    </td><td>of    </td><td>to be     </td><td><b>la</b>    </td><td>al    </td><td>single</td></tr>
  <tr><td><b>fori</b>  </td><td>oferi  </td><td>to go   </td><td><b>laro</b>  </td><td>alero  </td><td>i</td></tr>
  <tr><td><b>foriko</b></td><td>ofireko</td><td>to enter </td><td><b>laroko</b></td><td>alörek</td><td>my</td></tr>
</table>

<p>The order of words <b>follows the table of Elementary Particles</b>. In a typical sentence, <b>traverse</b>-type("k") words will be found at the beginning, and <b>action</b>-type("f") words, at the end. The following sequence of letters is the normal flow of a sentence, <b>when a sentence must break the word order, commas are used</b>. Notice the word order in the following sentence, and specifically how a comma is used to join two sentences that would normaly break the word order.</p>

<table border='1'><tr><td>K</td><td>T</td><td>D</td><td>R</td><td>S</td><td>L</td><td>J</td><td>V</td><td>F</td></tr></table>

<table border='1'>
  <tr><td><b>Okïder aki oferi</b></td><td>I am going home soon.</td></tr>
  <tr><td><b>akodeti oreka, aki oferi</b></td><td>I am going home, from the library.</td></tr>
</table>

<h3>Reference</h3>

<p><b>Traverse</b>-type words are meant to navigate a hierarchy, and are often used at the beginning of a sentence. To be <i>at a place</i>, in Lietal, is made explicit with the "ak"marker, like <b>ak arodeti</b> for "<i>at school</i>", and <b>ok arodeti</b> for "<i>in school</i>".</p>

<pre><b>Ak odaki, okïder ilero ofïrek</b>, "We are at the house, we are leaving soon".</pre>

<p><b>State</b>-type words are meant to define the state of existence of something. Where <b>it</b> will speak of the idea, or concept of a thing, <b>at</b> will speak of the shape of a thing, and <b>ot</b> will speak of the thing itself. The difference can be better explained when used in an action, or with the examples: <b>ïfet</b>(to imagine), <b>ifeta</b>(to design) & <b>ifeto</b>(to build).</p>

<p><b>Scale</b>-type words are used to define things that are made <b>od</b>(machines, products), from life-itself <b>ad</b>(fauna, flora) and from things that makes life <b>id</b>(time, space).</p>

<pre><b>Aki ïder of</b>, "I will be at home"
<b>Aleri ïder af</b>, "I will see you later"</pre>

<p><b>Direction</b>-type words are used to change the attributes of a concept, to transition toward something other or to create a conceptual arrow.</p>

<p><b>Relation</b>-type words will most often be used as particles to create the equivalence of English particles "<i>and</i>"and "<i>with</i>", or to create enumerations.</p>

<pre><b>Äkes aleri alero</b>, "Between you and I"</pre>

<p><b>Counter</b>-type words are often used to create subject pronouns, or parts of larger concepts like months in a year, or an item in a series. A sentence, by default, is expected to be <b>at the 1st person</b>, if a pronoun has not already been declared, pronouns are often omitted when possible. The basic Lietal singular pronouns are <b>aleri</b>(you), <b>äler</b>(he she), <b>alero</b>(i). The basic plural pronouns are <b>ïler</b>(yous), <b>ilera</b>(they), <b>ilero</b>(we).</p>

<pre><b>Alero oferi</b>, "I am going"
<b>Ilera oferi</b>, "They are going"</pre>

<p><b>Modality</b>-type words are usually used to create words like "couldn't", "could", "must", or <b>ojefy</b>, <b>ajefy</b>, <b>ijefy</b>.</p>

<pre><b>Ijefy ävek oferi</b>, "Where must I go?"
<b>Ajefy äved of</b>, "Who might you be?"</pre>

<p><b>Alignment</b>-type words are used to express a standing on a specific topic, for example, to express that something is wanted or not. Many of the daily expressions of greetings are also created from <b>iv</b>, for example, <b>ivero</b>(welcome) is made from <b>iv</b>(positive) & <b>or</b>(inward). This pattern can be expanded to mean things like <b>ïvef</b>(well done), or even <b>iveda</b>(health).</p>

<pre><b>Ivero avefy?</b>, "Hello, how are you?"
<b>ïver, okïder af!</b>, "Good Bye, see you soon!"</pre>

<p><b>Action</b>-type words are usually used at the end of a sentence and are generally built from the <i>fy</i> family. The sentence "I take the book home" is translated to <b>ok otodeta aki ifero</b>, following the <code >K T F</code> structure. Or another example, "I give you the book", could be translated to <b>ok otodeta aleri ïfer</b>, following the <code >K T L F</code> structure.</p>

<pre><b>Lietal aj afeti?</b>, "Can you understand Lietal?".
<b>Ok aki afivero</b>, "I welcome you home".</pre>

<q>To speak, or act, or think originally is to erase the boundary of the self. It is to leave behind the territorial personality.</q>
<h5>—James P. Carse</h5>

<h2 id='phonetics'>Advanced Phonetics</h2>

<table border="1">
  <tr><th>Child</th><th>Adult</th><th>Formal</th><th>Mixed</th><th>Casual</th></tr>
  <tr><td>li      </td><td>li      </td><td> li      </td><td>il      </td><td>il      </td></tr>
  <tr><td>lili    </td><td>lie     </td><td> lie     </td><td>ile     </td><td>ile     </td></tr>
  <tr><td>lila    </td><td>lia     </td><td> lia     </td><td>ila     </td><td>ila     </td></tr>
  <tr><td>liri    </td><td>lire    </td><td> lier    </td><td>iler    </td><td>ilre    </td></tr>
  <tr><td>lira    </td><td>lira    </td><td> liar    </td><td>ilar    </td><td>ilra    </td></tr>
  <tr><td>dalili  </td><td>dalie   </td><td> dalie   </td><td>adile   </td><td>adile   </td></tr>
  <tr><td>dalila  </td><td>dalia   </td><td> dalia   </td><td>adila   </td><td>adila   </td></tr>
  <tr><td>daliri  </td><td>dalire  </td><td> dalier  </td><td>adiler  </td><td>adilre  </td></tr>
  <tr><td>dalira  </td><td>dalira  </td><td> daliar  </td><td>adilar  </td><td>adilra  </td></tr>
  <tr><td>dadalili</td><td>daelie  </td><td> daelie  </td><td>adeile  </td><td>adeile  </td></tr>
  <tr><td>dadolila</td><td>daolia  </td><td> daolia  </td><td>adoila  </td><td>adoila  </td></tr>
  <tr><td>dakaliri</td><td>dakelire</td><td> daeklier</td><td>adekiler</td><td>adkeilre</td></tr>
  <tr><td>dakolira</td><td>dakolira</td><td> daokliar</td><td>adokilar</td><td>adkoilra</td></tr>
</table>

A  => src/inc/lin6.htm +70 -0
@@ 1,70 @@
<h2>Rules</h2>

<ul>
  <li><b>Variable names</b> are always lowercase.</li>
  <li><b>Variable length</b> are always padded to col25.</li>
  <li><b>Variable comments</b> are always padded to col32.</li>
  <li><b>Constant names</b> are always uppercase.</li>
  <li><b>Constant length</b> are always padded to col21.</li>
  <li><b>Constant comments</b> are always padded to col32.</li>
  <li><b>Label names</b> are always capitalized.</li>
  <li><b>Label names</b> aalways end with :.</li>
  <li><b>Label names</b> are always preceeded with a linebreak.</li>
  <li><b>Label comments</b> are never padded.</li>
  <li><b>Directive names</b> are always padded to col2.</li>
  <li><b>Directive comments</b> are never padded.</li>
  <li><b>Opcode names</b> are always uppercase.</li>
  <li><b>Opcode names</b> are always padded to col2.</li>
  <li><b>Opcode comments</b> are always padded to col32.</li>
  <li><b>Inline comments</b> are always padded to col2.</li>
  <li><b>Spacing comments</b> are always preceeded and followed with a linebreak.</li>
</ul>

<h2>ASM Styleguide</h2>

<pre>
;; Variables

  .enum $0000                  ; Zero Page variables
pos_x                   .dsb 1
pos_y                   .dsb 1
  .ende

;; Constants

SPRITE_Y            .equ $0200
SPRITE_X            .equ $0203

RESET:
  NOP

Forever:
  JMP Forever

NMI:
  RTI

;; Routines

Check_Collision: 
  LDA pos_y
  CMP #$88                     ; Floor is at 32y
  BCC @done
  LDA #$88
  STA pos_y
@done:
  RTS

;; Tables

Table_Name:
  .db $40,$46,$4c,$52,$58,$5e,$63,$68

;; Vectors

  .pad $FFFA
  .dw NMI
  .dw RESET
  .dw 0
  .incbin "src/sprite.chr"
</pre>
\ No newline at end of file

A  => src/inc/linux.htm +213 -0
@@ 1,213 @@
<h3>dwm</h3>

<table border='1'>
  <tr><td>Shift+Alt+Enter</td><td>Open terminal session</td></tr>
  <tr><td>Shift+Alt+C</td><td>Close Application</td></tr>
  <tr><td>Shift+Alt+Q</td><td>Quit</td></tr>
  <tr><td>Alt+P</td><td>Open Application</td></tr>
  <tr><td>Alt+J</td><td>Previous Application</td></tr>
  <tr><td>Alt+K</td><td>Next Application</td></tr>
  <tr><td>Alt+T</td><td>Tile Applications</td></tr>
  <tr><td>Alt+MouseLeft</td><td>Move floating window</td></tr>
  <tr><td>Alt+MouseRight</td><td>Resize floating window</td></tr>
</table>

<p>To change the content of the rightmost label in the menu bar, edit the content of <code>~/.xinitrc</code>.</p>

<pre>
while true; do
  xsetroot -name $(arvelie)" "$(neralie)
  sleep 1m
done &

exec dwm
</pre>

<h3>micro</h3>

<table border='1'>
  <tr><td>Ctrl+T</td><td>New Tab</td></tr>
  <tr><td>Ctrl+B</td><td>Run shell command</td></tr>
  <tr><td>Ctrl+E</td><td>Run micro command</td></tr>
</table>

<h3>surf</h3>

<table border='1'>
  <tr><td>Ctrl+H</td><td>Back History</td></tr>
  <tr><td>Ctrl+L</td><td>Next History</td></tr>
  <tr><td>Ctrl+B</td><td>Toggle Input</td></tr>
  <tr><td>Ctrl+Shift+O</td><td></td></tr>
</table>

<h3>Git</h3>

<h4>Cache Password</h4>

<pre>
git config remote.origin.url # Get URL
git config credential.helper store
git push REPOSITORY.git # Replace with URL
</pre>

<h4>Merge</h4>

<pre>
git remote add ft git@git.sr.ht:~ft/orca
git fetch ft
git merge ft/variable-index-0
</pre>

<h3>SSH</h3>

<pre>
ssh-keygen # Generate a key
vi ~/.ssh/id_rsa.pub # See the key
</pre>

<h3>CMUS</h3>

<p>Get cmus currently playing.</p>
<pre>
cmus-remote -Q | grep tag | head -n 3 | cut -d ' ' -f 3- 
</pre>

<h4>Commands</h4>

<ul>
  <li>:clear</li>
  <li>:update-cache</li>
</ul>

<h3>Feh</h3>

<p>Viewing graphic files.</p>

<pre>
feh -m # Montage mode
feh -w # Multi-window mode
feh -i # Index mode
feh -m --thumb-height 150 --thumb-width 200
</pre>

<h3>EyeD3</h3>

<p>Editing the ID3 tags of MP3 files.</p>

<pre>
eyeD3 -a "Artist" -A "Album" -t "Track Title" song.mp3
eyeD3 song.mp3
</pre>

<h3>Youtube-dl</h3>

<p>Converting videos to mp3 files.</p>

<pre>
sudo wget https://yt-dl.org/downloads/latest/youtube-dl -O /usr/local/bin/youtube-dl
sudo chmod a+rx /usr/local/bin/youtube-dl
// Single
youtube-dl -x --audio-format mp3 https://www.youtube.com/watch?v=sfIls6LMAGE
// Playlist
youtube-dl --extract-audio --audio-format mp3 -o "%(title)s.%(ext)s" 'https://www.youtube.com/watch?v=5KpK7yhDRXE&list=PLfGibfZATlGq4e4UsUiPLs3asiOqysjei'
</pre>

<h3>Format SD Card</h3>

<pre>
lsblk # Find device
sudo parted /dev/sdb --script -- mklabel msdos # Create partition, replace sbd with device name
sudo parted /dev/sdb --script -- mkpart primary fat32 1MiB 100% # Take all available space
sudo mkfs.vfat -F32 /dev/sdb1 # Format
sudo parted /dev/sdb --script print # Verify
</pre>

<h3>Mount USB Stick</h3>

<pre>
lsblk # List all devices, find dev/sda1
mkdir usbstick # create a folder somewhere
mount dev/sda1 /usbstick # use the folder to browse usb stick
</pre>

<h3>Copy image to clipboard</h3>

<pre>
xclip -selection clipboard -t image/png -i example.png
</pre>

<h3>Config Micro</h3>

<p>To set the theme to the terminal colors, use <code>set colorscheme cmc-16</code>.</p>

<pre>
micro ~/.config/micro/settings.json
</pre>

<pre>
{
  "color_scheme": "Packages/Theme/Tech49.tmTheme",
  "font_size": 9,
  "margin": 2,
  "tab_size": 2,
  "theme": "Adaptive.sublime-theme",
  "translate_tabs_to_spaces": true
}
</pre>

<h3>Fish</h3>

<pre>
sudo apt-get install fish
chsh -s /usr/bin/fish
</pre>

<h3>Elementary Theming</h3>

<pre>
sudo apt-get install dconf-tools
dconf-editor
sudo add-apt-repository ppa:philip.scott/elementary-tweaks
sudo apt install elementary-tweaks
</pre>

<h3>Themes</h3>

<pre>
#000000:#51a196:#72dec2:#ffffff:#333333:#cccccc:#FF5950:#aaaaaa:#ff7777:#ffbda1:#ffbda1:#ffbda1:#ffbda1:#FF5950:#72dec2:#ffffff
// Sand
#323e37:#8a6b5f:#c2b6a9:#d7d4cd:#594843:#b4c3c5:#c4a58f:#a19083:#323e37:#8a6b5f:#c2b6a9:#d7d4cd:#594843:#b4c3c5:#c4a58f:#a19083
// Drab
#969492:#d4d8dc:#bdb4ab:#585a56:#30393a:#55514d:#897769:#484544:#969492:#d4d8dc:#bdb4ab:#585a56:#30393a:#55514d:#897769:#484544
</pre>

<h3>Battery management</h3>

<pre>
sudo powertop --auto-tune
</pre>

<h3>Use a .deb File</h3>

<pre>
sudo dpkg -i filename.deb
sudo dpkg -i ./bitwig-studio-3.1.3.deb # Updating bitwig
</pre>

<h3>Shutdown/Restart</h3>

<pre>
sudo shutdown now
sudo restart
</pre>

<h3>Make applications available globally</h3>

<p>Edit <code>~/.bashrc</code>, when finished run <code>source ~/.bashrc</code>.</p>
<pre>
export PATH=$PATH:/home/pi/applications
</pre>

<h3>Resize video for web</h3>

<pre>ffmpeg -i input.avi -r 30 -c:v libx264 -b:v 1M -vf scale=640:-1 output.mp4</pre>
\ No newline at end of file

A  => src/inc/macintosh.htm +26 -0
@@ 1,26 @@
<h3>Interacting with Mini vMac</h3>

<ul>
  <li>Press Control-M to double the size of the Mini vMac window.</li>
  <li>Press Control-F to enter fullscreen.</li>
  <li>Press Control-S to toggle speed.</li>
</ul>

<h3>Importing to the Macintosh</h3>

<p>The boot disk has a few utility programs. One of them is <a href='https://www.gryphel.com/c/minivmac/extras/importfl/' class='external' target='_blank'>ImportFl</a>, which is a special program for use inside of Mini vMac. It will allow you to drag and drop files onto Mini vMac in order to transfer them into the virtual machine. To import a snippet of code into Mini vMac, I use <a href='https://www.gryphel.com/c/minivmac/extras/clipin/index.html' class='external' target='_blank'>ClipIn</a>.</p>

<h3>Exporting from the Macintosh</h3>

<p> You should probably save your project files on a dedicated floppy or hard drive disk image, separate from the boot disk image of the computer. Do not try to make backups of your work by exporting the files directly back into your host OS—unless you're running a classic Mac as your host, the resource fork of your classic Mac files will be lost, and your files will be ruined. Instead, use disk images to store your work from within your emulated virtual machine, and create backups of those disk images in your host OS. Read more about the blank disk images <a href='https://www.gryphel.com/c/minivmac/extras/blanks/index.html' target='_blank' class='external'>here</a>. To export a snippet of code from Mini vMac, I use <a href='https://www.gryphel.com/c/minivmac/extras/clipout/index.html' class='external' target='_blank'>ClipOut</a>.</p>

<h3>Importing images to Hypercard</h3>

<p>To import an image from the host operating system into <a href='hypertalk.html'>hypercard</a>, I generally use the <a href='zoe_format.html'>.zoe file format</a>, to do so, follow these steps:</p>

<ol>
  <li>Open image in <a href='noodle.html'>noodle</a>, and export <a href='zoe_format.html'>.zoe</a>.</li>
  <li>Select ImportFl in Mini vMac, and drag the .zoe file from the host OS, onto the emulator window.</li>
  <li>Open the imported file, with <a href='zoe_format.html'>Zoe Suit</a>.</li>
  <li>Save a macintosh native .pict file, and copy/paste the newly created file into Hypercard.</li>
</ol>
\ No newline at end of file

A  => src/inc/meta.htm +29 -0
@@ 1,29 @@
<h1>header1</h1>
<h2>header2</h2>
<h3>header3</h3>
<h4>header4</h4>
<h5>header5</h5>

<p>This is a paragraph, with <b>bold</b>, <i>italic</i> and a <a href=''>link</a>.</p>

<ul>
  <li>This is a list, with:</li>
  <li><b>bold</b></li>
  <li><i>italic</i></li>
  <li><a href=''>link</a></li>
</ul>

<table border='1'>
  <tr><th>This is a table header, with <b>bold</b>, <i>italic</i> and a <a href=''>link</a>.</th></tr>
  <tr><td>This is a table row, with <b>bold</b>, <i>italic</i> and a <a href=''>link</a>.</td></tr>
</table>

<pre>This is a pre block, with <b>bold</b>, <i>italic</i> and a <a href=''>link</a>.</pre>

<q>This is a quote block, with <b>bold</b>, <i>italic</i> and a <a href=''>link</a>.</q>
<h5>—Author, Source</h5>

<figure>
  <img src='../media/diary/216.jpg' alt='Maude picture'/>
  <figcaption>This is a figcaption with <b>bold</b>, <i>italic</i> and a <a href=''>link</a>.</figcaption>
</figure>

A  => src/inc/moogle.htm +539 -0
@@ 1,539 @@
<pre>
#include &lt;u.h&gt;
#include &lt;libc.h&gt;
#include &lt;draw.h&gt;
#include &lt;event.h&gt;
#include &lt;thread.h&gt;

/* 5c moogle.c && 5l -o moogle moogle.5 */

typedef struct {
	double x;
	double y;
} Point2d;

typedef struct {
	double x;
	double y;
	double z;
} Point3d;

typedef struct {
	int a;
	int b;
} Edge;

typedef struct {
	Point3d position;
	Point3d vertices[128];
	int verticeslen;
	Edge edges[128];
	int edgeslen;
} Mesh;

typedef struct {
	Point3d origin;
	Mesh meshes[128];
	int len;
} Scene;

typedef enum {
	ISOMETRIC,
	PERSPECTIVE
} Projection;

typedef struct {
	double pitch;
	double yaw;
	double roll;
	Projection projection;
} Camera;

Scene scn;
Camera cam;
Point center;
Image *clrx, *clry, *clrz;

/* helpers */

Point2d 
Pt2d(double x, double y) 
{
	return (Point2d){x, y};
}

Point3d 
Pt3d(double x, double y, double z) 
{ 
	return (Point3d){x, y, z}; 
}

Mesh
Ms3d(double x, double y, double z)
{
	Mesh m;
	m.position = Pt3d(x, y, z);
	m.verticeslen = 0;
	m.edgeslen = 0;
	return m;
}

Scene 
Sc3d(double x, double y, double z) 
{
	Scene s;
	s.origin = Pt3d(x, y, z);
	s.len = 0;
	return s;
}

Point3d 
addpt3d(Point3d *a, Point3d *b) 
{
	return Pt3d(a->x + b->x, a->y + b->y, a->z + b->z);
}

Camera
Cm(double pitch, double yaw, double roll) 
{
	return (Camera){pitch, yaw, roll, PERSPECTIVE};
}

/* geometry */

double
rad2deg(double rad) 
{ 
	return rad * (180 / PI); 
}

double
deg2rad(double deg) 
{ 
	return deg * (PI / 180); 
}

double
ptangledeg(Point2d a, Point2d b) 
{
	double theta = atan2(b.y - a.y, b.x - a.x);
	return rad2deg(theta);
}

double
ptangle(Point2d a, Point2d b) 
{ 
	return atan2(b.y - a.y, b.x - a.x); 
}

double
ptdistance(Point2d a, Point2d b) 
{
	double x = a.x - b.x;
	double y = a.y - b.y;
	return sqrt(x * x + y * y);
}

Point2d
rotpt(Point2d center, Point2d p0, double deg) 
{
	double rot = ptangle(center, p0) + deg2rad(deg);
	double r = ptdistance(center, p0);
	return Pt2d(center.x + r * cos(rot), center.y + r * sin(rot));
}

/* scene */

void
setvertex(Point3d *vertex, double x, double y, double z) 
{
	vertex->x = x;
	vertex->y = y;
	vertex->z = z;
}

void
addvertex(Mesh *mesh, double x, double y, double z) 
{
	setvertex(&mesh->vertices[mesh->verticeslen], x, y, z);
	mesh->verticeslen++;
}

void
setedge(Edge *edge, int v0, int v1) 
{
	edge->a = v0;
	edge->b = v1;
}

void
addedge(Mesh *mesh, int v0, int v1) 
{
	setedge(&mesh->edges[mesh->edgeslen], v0, v1);
	mesh->edgeslen++;
}

void
addmesh(Scene *scn, Mesh mesh) 
{
	scn->meshes[scn->len] = mesh;
	scn->len++;
}

void
rotverx(Point3d *o, Point3d *v, double angle) 
{
	Point2d r = rotpt(Pt2d(o->y, o->z), Pt2d(v->y, v->z), angle);
	v->y = r.x;
	v->z = r.y;
}

void 
rotvery(Point3d *o, Point3d *v, double angle) 
{
	Point2d r = rotpt(Pt2d(o->x, o->z), Pt2d(v->x, v->z), angle);
	v->x = r.x;
	v->z = r.y;
}

void
rotverz(Point3d *o, Point3d *v, double angle) 
{
	Point2d r = rotpt(Pt2d(o->x, o->y), Pt2d(v->x, v->y), angle);
	v->x = r.x;
	v->y = r.y;
}

void
rotver(Point3d *o, Point3d *v, double pitch, double yaw, double roll) 
{
	rotverx(o, v, pitch);
	rotvery(o, v, yaw);
	rotverz(o, v, roll);
}

void
rotatex(Mesh *mesh, double angle) 
{
	for (int i = 0; i < mesh->verticeslen; i++) {
		rotverx(&mesh->position, &mesh->vertices[i], angle);
	}
}

void
rotatey(Mesh *mesh, double angle) 
{
	for (int i = 0; i < mesh->verticeslen; i++) {
		rotvery(&mesh->position, &mesh->vertices[i], angle);
	}
}

void
rotatez(Mesh *mesh, double angle) 
{
	for (int i = 0; i < mesh->verticeslen; i++) {
		rotverz(&mesh->position, &mesh->vertices[i], angle);
	}
}

void
rotate(Mesh *mesh, double x, double y, double z) 
{
	rotatex(mesh, x);
	rotatey(mesh, y);
	rotatez(mesh, z);
}

/* Effects */

void
extrude(Mesh *dst, double depth)
{
	int vl = dst->verticeslen;
	int el = dst->edgeslen;
	for(int i = 0; i < vl; i++){
		addvertex(dst, 
			dst->vertices[i].x, 
			dst->vertices[i].y, 
			dst->vertices[i].z+depth);
		addedge(dst, i, i+vl); 
	}
	for(int i = 0; i < el; i++){
		addedge(dst, 
			dst->edges[i].a+vl,
			dst->edges[i].b+vl);
	}
}

void
symmetry(Mesh *dst, double x, double y, double z)
{
	int limit = dst->verticeslen;
	for(int i = 0; i < limit; i++){
		addvertex(dst, 
			dst->vertices[i].x*x, 
			dst->vertices[i].y*y, 
			dst->vertices[i].z*z);
	}
	int limitb = dst->edgeslen;
	for(int i = 0; i < limitb; i++){
		addedge(dst, 
			limitb+1+dst->edges[i].a,
			limitb+1+dst->edges[i].b);
	}
}

/* Primitives */

void
addpoly(Mesh *dst, double x, double y, double z, double radius, int segments)
{
	int offset = dst->verticeslen;
	for(int i = 0; i < segments; i++){
		addvertex(dst, 
			x+radius*cos(2*PI*i/segments),
			y+radius*sin(2*PI*i/segments), 
			z);
		addedge(dst, offset+i, offset+(i+1)%segments);
	}
}

void
addpath(Scene *scn, double x, double y, double z, int verticeslen, Point3d vertices, ...)
{
	va_list args;
	va_start(args, verticeslen);
	Mesh m = Ms3d(x, y, z);
	for(int i = 0; i < verticeslen; i++){
		Point3d v = va_arg(args, Point3d);
		addvertex(&m, v.x, v.y, v.z);
		if(i < verticeslen-1)
			addedge(&m, i, i+1);
	}
	va_end(args);
	addmesh(scn, m);
}

void
addpolygon(Scene *scn, double x, double y, double z, double radius, int segments)
{
	Mesh dst = Ms3d(x, y, z);
	addpoly(&dst, x, y, z, radius, segments);
	addmesh(scn, dst);
}

void
addpyramid(Scene *scene, double x, double y, double z, double radius, int segments, double depth)
{
	Mesh dst = Ms3d(x, y, z);
	addpoly(&dst, x, y, z, radius, segments);
	addvertex(&dst, x, y, z+depth);
	for(int i = 0; i < segments; i++) {
		addedge(&dst, i, segments);
	}
	addmesh(scene, dst);
}

void
addfrustum(Scene *scene, double x, double y, double z, double radius, int segments, double depth, double mod)
{
	Mesh dst = Ms3d(x, y, z);
	addpoly(&dst, x, y, z, radius, segments);
	addpoly(&dst, x, y, z+depth, radius*mod, segments);
	for(int i = 0; i < segments; i++){
		addedge(&dst, i, segments+i);
	}
	addmesh(scene, dst);
}

void
addprism(Scene *scene, double x, double y, double z, double radius, int segments, double depth)
{
	Mesh dst = Ms3d(x, y, z);
	addpoly(&dst, x, y, z, radius, segments);
	extrude(&dst, depth);
	addmesh(scene, dst);
}

/* Draw */

void
lineb(Image *dst, Point p0, Point p1, Image *src, Point sp) 
{
	double dx = abs(p1.x - p0.x), sx = p0.x < p1.x ? 1 : -1;
	double dy = -abs(p1.y - p0.y), sy = p0.y < p1.y ? 1 : -1;
	double err = dx + dy, e2;
	for (;;) {
		draw(dst, Rect(p0.x, p0.y, p0.x + 1, p0.y + 1), src, nil, ZP);
		if (p0.x == p1.x && p0.y == p1.y)
			break;
		e2 = 2 * err;
		if (e2 >= dy) {
			err += dy;
			p0.x += sx;
		}
		if (e2 <= dx) {
			err += dx;
			p0.y += sy;
		}
	}
}

Point
project(Camera *cam, Point3d v) 
{
	if(cam->projection == ISOMETRIC){
		return Pt(center.x + 5 * v.x, center.y + 5 * v.y);
	}
	double r = 300 / (v.z + 50);
	return Pt(center.x + r * v.x, center.y + r * v.y);
}

void
widget(Scene *scn, Camera *cam) 
{
	Point3d c = Pt3d(0, 0, 0);
	Point3d x = Pt3d(5, 0, 0);
	Point3d y = Pt3d(0, 5, 0);
	Point3d z = Pt3d(0, 0, 5);
	rotver(&scn->origin, &x, cam->pitch, cam->yaw, cam->roll);
	rotver(&scn->origin, &y, cam->pitch, cam->yaw, cam->roll);
	rotver(&scn->origin, &z, cam->pitch, cam->yaw, cam->roll);
	lineb(screen, project(cam, c), project(cam, x), clrx, screen->r.min);
	lineb(screen, project(cam, c), project(cam, y), clry, screen->r.min);
	lineb(screen, project(cam, c), project(cam, z), clrz, screen->r.min);
	string(screen, 
		addpt(screen->r.min, Pt(10,10)), 
		display->black, ZP, display->defaultfont, 
		cam->projection == ISOMETRIC ? "isometric" : "perspective");

	char bufx[30], bufy[30], bufz[30];
	snprint(bufx, strlen(bufx), "%d", (int)cam->pitch % 360);
	snprint(bufy, strlen(bufy), "%d", (int)cam->yaw % 360);
	snprint(bufz, strlen(bufz), "%d", (int)cam->roll % 360);
	string(screen, 
		addpt(screen->r.min, Pt(10,30)), 
		clrx, ZP, display->defaultfont, bufx);
	string(screen, 
		addpt(screen->r.min, Pt(50,30)), 
		clry, ZP, display->defaultfont, bufy);
	string(screen, 
		addpt(screen->r.min, Pt(90,30)), 
		clrz, ZP, display->defaultfont, bufz);
}

void
render(Scene *scn, Camera *cam) 
{
	draw(screen, screen->r, display->white, nil, ZP);
	for (int i = 0; i < scn->len; i++) {
		Mesh *mesh = &scn->meshes[i];
		for (int j = 0; j < mesh->edgeslen; j++) {
			Edge *edge = &mesh->edges[j];
			Point3d a = addpt3d(&mesh->vertices[edge->a], &mesh->position);
			Point3d b = addpt3d(&mesh->vertices[edge->b], &mesh->position);
			rotver(&scn->origin, &a, cam->pitch, cam->yaw, cam->roll);
			rotver(&scn->origin, &b, cam->pitch, cam->yaw, cam->roll);
			lineb(screen, project(cam, a), project(cam, b), display->black, screen->r.min);
		}
	}
	widget(scn, cam);
	flushimage(display, 1);
}

void
orient(Scene *scn, Camera *cam, double pitch, double yaw, double roll)
{
	cam->pitch = pitch;
	cam->yaw = yaw;
	cam->roll = roll;
	render(scn, cam);
}

void
orbit(Scene *scn, Camera *cam, Point drag)
{
	cam->pitch -= drag.y/3.0;
	cam->yaw -= drag.x/3.0;
	render(scn, cam);
}

void
toggleprojection(Scene *scn, Camera *cam)
{
	cam->projection = cam->projection == ISOMETRIC ? PERSPECTIVE : ISOMETRIC;
	render(scn, cam);
}

void
eresized(int new) 
{
	if (new &&getwindow(display, Refnone) < 0)
		fprint(2, "can't reattach to window");
	draw(screen, screen->r, display->white, nil, ZP);
	center.x = screen->r.min.x + (screen->r.max.x - screen->r.min.x) / 2;
	center.y = screen->r.min.y + (screen->r.max.y - screen->r.min.y) / 2;
}

void
main(int argc, char **argv) 
{
	USED(argc, argv);

	Event ev;
	int e;
	Mouse m;
	Point drag;
	char *options[] = {"Projection", "Front", "Top", "Exit", 0};
	Menu menu = {options};

	initdraw(0, 0, "Moogle");
	eresized(0);
	einit(Emouse);

	clrx = allocimage(display, Rect(0, 0, 1, 1), screen->chan, 1, 0x72DEC2FF);
	clry = allocimage(display, Rect(0, 0, 1, 1), screen->chan, 1, 0xFF0000FF);
	clrz = allocimage(display, Rect(0, 0, 1, 1), screen->chan, 1, 0xAAAAAAFF);