changelog shortlog graph tags branches files raw help

Mercurial > org > docs / changeset: refactoring

changeset 9: 9a3d82d9072a
parent 8: 4cb5e087f588
child 10: b38886ced111
author: ellis <ellis@rwest.io>
date: Mon, 04 Dec 2023 21:09:11 -0500
files: business.org core/api/readme.org core/app/readme.org core/lib/readme.org core/notes.org core/readme.org infra/scripts.org meta/business.org meta/readme.org meta/style.org meta/tech.org meta/ulang.org readme.org style.org tech.org ulang.org
description: refactoring
     1.1--- a/business.org	Thu Nov 30 20:55:41 2023 -0500
     1.2+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.3@@ -1,17 +0,0 @@
     1.4-{{{header(business,
     1.5-Richard Westhaver,
     1.6-ellis@rwest.io,
     1.7-The Compiler Company Business Model)}}}
     1.8-
     1.9-In short, this document describes the business aspects of The Compiler
    1.10-Company LLC. We are designed to be small, fast, and agile. We
    1.11-infiltrate a market, apply our methodology, and develop solutions that
    1.12-are simply years ahead of the competition. We treat the market like
    1.13-we're the only supplier, because we can. This is in part due to our
    1.14-internal research & development pursuits, but also our approach to
    1.15-business. We build businesses and revenue streams the exact same way
    1.16-we build software -- with a bottom up approach. This is our secret
    1.17-weapon, and what gives us the ability to adapt to any environment
    1.18-where our interests lie.
    1.19-
    1.20-#+TOC: headlines 3
     2.1--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     2.2+++ b/core/api/readme.org	Mon Dec 04 21:09:11 2023 -0500
     2.3@@ -0,0 +1,3 @@
     2.4+{{{header(Core API Docs,Richard Westhaver,ellis@rwest.io)}}}
     2.5+#+OPTIONS: ^:nil toc:nil num:nil html-postamble:nil
     2.6+#+EXPORT_FILE_NAME: index
     3.1--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     3.2+++ b/core/app/readme.org	Mon Dec 04 21:09:11 2023 -0500
     3.3@@ -0,0 +1,3 @@
     3.4+{{{header(Core App Docs,Richard Westhaver,ellis@rwest.io)}}}
     3.5+#+OPTIONS: ^:nil toc:nil num:nil html-postamble:nil
     3.6+#+EXPORT_FILE_NAME: index
     4.1--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     4.2+++ b/core/lib/readme.org	Mon Dec 04 21:09:11 2023 -0500
     4.3@@ -0,0 +1,3 @@
     4.4+{{{header(Core Lib Docs,Richard Westhaver,ellis@rwest.io)}}}
     4.5+#+OPTIONS: ^:nil toc:nil num:nil html-postamble:nil
     4.6+#+EXPORT_FILE_NAME: index
     5.1--- a/core/notes.org	Thu Nov 30 20:55:41 2023 -0500
     5.2+++ b/core/notes.org	Mon Dec 04 21:09:11 2023 -0500
     5.3@@ -0,0 +1,3 @@
     5.4+{{{header(Core Notes,Richard Westhaver,ellis@rwest.io)}}}
     5.5+#+OPTIONS: ^:nil toc:nil num:nil html-postamble:nil
     5.6+
     6.1--- a/core/readme.org	Thu Nov 30 20:55:41 2023 -0500
     6.2+++ b/core/readme.org	Mon Dec 04 21:09:11 2023 -0500
     6.3@@ -1,4 +1,10 @@
     6.4 {{{header(docs/core,Richard Westhaver,ellis@rwest.io)}}}
     6.5 #+EXPORT_FILE_NAME: index
     6.6 
     6.7-- [[file:notes.org][Notes]] :: Internal Notes.
     6.8+- [[file:notes.org][Notes]] :: Internal Notes
     6.9+
    6.10+- [[file:app][App Docs]] :: High-level App Documentation
    6.11+
    6.12+- [[file:lib][Lib Docs]] :: High-level Lib Documentation
    6.13+
    6.14+- [[file:api][API Docs]] :: API Reference
     8.1--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     8.2+++ b/meta/business.org	Mon Dec 04 21:09:11 2023 -0500
     8.3@@ -0,0 +1,17 @@
     8.4+{{{header(business,
     8.5+Richard Westhaver,
     8.6+ellis@rwest.io,
     8.7+The Compiler Company Business Model)}}}
     8.8+
     8.9+In short, this document describes the business aspects of The Compiler
    8.10+Company LLC. We are designed to be small, fast, and agile. We
    8.11+infiltrate a market, apply our methodology, and develop solutions that
    8.12+are simply years ahead of the competition. We treat the market like
    8.13+we're the only supplier, because we can. This is in part due to our
    8.14+internal research & development pursuits, but also our approach to
    8.15+business. We build businesses and revenue streams the exact same way
    8.16+we build software -- with a bottom up approach. This is our secret
    8.17+weapon, and what gives us the ability to adapt to any environment
    8.18+where our interests lie.
    8.19+
    8.20+#+TOC: headlines 3
     9.1--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     9.2+++ b/meta/readme.org	Mon Dec 04 21:09:11 2023 -0500
     9.3@@ -0,0 +1,10 @@
     9.4+{{{header(Meta Docs,Richard Westhaver,ellis@rwest.io)}}}
     9.5+#+OPTIONS: ^:nil toc:nil num:nil html-postamble:nil
     9.6+#+EXPORT_FILE_NAME: index
     9.7+* [[file:ulang.org][ulang]]
     9.8+* [[file:style.org][style]]
     9.9+* [[file:tech.org][tech]]
    9.10+* [[file:business.org][business]]
    9.11+
    9.12+
    9.13+
    10.1--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    10.2+++ b/meta/style.org	Mon Dec 04 21:09:11 2023 -0500
    10.3@@ -0,0 +1,43 @@
    10.4+{{{header(style,
    10.5+Richard Westhaver,
    10.6+ellis@rwest.io,
    10.7+The Compiler Company Styleguide)}}}
    10.8+
    10.9+As an organization we maintain a styleguide[fn:1] which lists all of
   10.10+the style guidelines we use for our code. If you are contributing to
   10.11+one of our projects, you should review and understand the relevant
   10.12+sections below.
   10.13+
   10.14+You should also review the [[file:ulang.org][ulang]] document, which may shine some light
   10.15+on code comments and developer docs.
   10.16+
   10.17+[fn:1] https://google.github.io/styleguide/ 
   10.18+
   10.19+* General Programming
   10.20+- indent-offset = 2
   10.21+- max-line-width = 80
   10.22+- page-length ~ 32
   10.23+- module-length ~ 512
   10.24+- file-size ~ 1024
   10.25+
   10.26+- start every source-file with a header comment
   10.27+- use outline headings to organize your program
   10.28+- use ulang-comments as needed for referencing bugs, notes, etc.
   10.29+- inline documentation should be declarative. your code explains your
   10.30+  comments for you.
   10.31+- variables, imports, and exports belong at the top of a file
   10.32+- =main= functions belong at the bottom of a file
   10.33+* Common Lisp
   10.34+
   10.35+- prefer symbol docs to comments
   10.36+- use stdin/stdout/stderr correctly - see [[https://zenodo.org/records/3414191][CDR-11]]
   10.37+- always prefer =core= libraries over vendored dependencies
   10.38+- use the compiler internals - if a function or class is generally
   10.39+  useful, add it to the core
   10.40+* Rust
   10.41+- don't make =mod.rs= files
   10.42+  - use the =foo.rs=, =foo/*= pattern instead
   10.43+* Emacs Lisp
   10.44+* Org-mode
   10.45+* Shell
   10.46+* Python
    11.1--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    11.2+++ b/meta/tech.org	Mon Dec 04 21:09:11 2023 -0500
    11.3@@ -0,0 +1,24 @@
    11.4+{{{header(tech,
    11.5+Richard Westhaver,
    11.6+ellis@rwest.io,
    11.7+The Compiler Company Core Technologies)}}}
    11.8+
    11.9+* OS
   11.10+We primarily support [[https://unix.org][Unix-based]] Operating Systems. Check
   11.11+project-specific docs for officially supported targets.
   11.12+
   11.13+Development and CI is ran on [[https://archlinux.org/][Arch Linux]] (btw).
   11.14+* Core
   11.15+** [[https://lisp-lang.org/][Lisp]]
   11.16+** [[https://www.rust-lang.org/][Rust]]
   11.17+** [[https://www.gnu.org/software/emacs/][Emacs]]
   11.18+* Libs
   11.19+** [[https://rocksdb.org/][rocksdb]]
   11.20+** [[https://archlinux.org/pacman/][pacman]]
   11.21+** [[https://docs.kernel.org/filesystems/btrfs.html][btrfs]]
   11.22+** [[https://tree-sitter.github.io/tree-sitter/][tree-sitter]]
   11.23+** [[https://kernel.dk/io_uring.pdf][uring]]
   11.24+** [[https://github.com/BLAKE3-team/BLAKE3-specs/blob/master/blake3.pdf][blake3]]
   11.25+* Extras
   11.26+** [[https://ngn.codeberg.page/k][k]]
   11.27+** [[https://mlochbaum.github.io/BQN/][BQN]]
    12.1--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    12.2+++ b/meta/ulang.org	Mon Dec 04 21:09:11 2023 -0500
    12.3@@ -0,0 +1,166 @@
    12.4+{{{header(ulang,
    12.5+Richard Westhaver,
    12.6+ellis@rwest.io,
    12.7+The Universal Language)}}}
    12.8+#+OPTIONS: toc:t
    12.9+
   12.10+This document describes a *U-Language* as described by the late great
   12.11+[[https://iep.utm.edu/haskell-brooks-curry/][Haskell Curry]]:
   12.12+
   12.13+#+begin_quote
   12.14+Every investigation, including the present one, has to be communicated
   12.15+from one person to another by means of language. It is expedient to
   12.16+begin our study by calling attention to this obvious fact, by giving a
   12.17+name to the language being used, and by being explicit about a few of
   12.18+its features. We shall call the language being used the
   12.19+U-Language. [...] There would be no point in calling attention to it,
   12.20+if it were not for the fact that language is more intimately related
   12.21+to our job than of most others.
   12.22+#+end_quote
   12.23+
   12.24+In this document, we will be calling attention to our own language -
   12.25+examining it, and describing how it works.
   12.26+
   12.27+Our job is to solve problems. Hard problems preferred. So we ought to
   12.28+pay close attention to the language we use because it brings the
   12.29+reader and writer /closer/ to the problem at hand.
   12.30+
   12.31+For starters, we are primarily concerned with /written languages/ like
   12.32+the one you're reading now. We will skip past the obvious details -
   12.33+English is our primary form of communication for example. The line you
   12.34+are reading currently is a sentence which is part of a paragraph.
   12.35+
   12.36+There are some non-obvious questions which deserve inquiry though.
   12.37+
   12.38+- *Who is this for?* \\
   12.39+  This document is for authors and readers alike. It is a loose
   12.40+  specification, but also serves as introductory material into our
   12.41+  communication and design philosophy.
   12.42+  
   12.43+- *What is this for?* \\
   12.44+  The purpose of this document is to provide a /standard of
   12.45+  communication/.
   12.46+
   12.47+  All sources we write attempt to conform to this standard but this is
   12.48+  not strictly enforced. If there is a reason to not comply with a
   12.49+  rule, it is already broken.
   12.50+
   12.51+* Org Mode
   12.52+:PROPERTIES:
   12.53+:CUSTOM_ID: 98a02bb2-3f39-49c6-898a-68ccd8f3cbe1
   12.54+:END:
   12.55+[[https://www.gnu.org/software/emacs/][GNU Emacs]] is our text editor, so naturally [[https://orgmode.org/][Org Mode]] is our word
   12.56+processor.
   12.57+
   12.58+If you are already familiar with Emacs and Org-Mode, I recommend
   12.59+opening the source of this document in Emacs and following along.
   12.60+
   12.61+If not, I recommend browsing through the [[https://orgmode.org/worg/][Worg resources]], but we won't
   12.62+be getting too deep into tribal hacker knowledge of Emacs.
   12.63+
   12.64+What's important to know is this: There is /Org Syntax/ and
   12.65+/Org-mode/ - these are different things.
   12.66+
   12.67+Our =ulang= is almost /exclusively/ based on /Org Syntax/ and we are
   12.68+not concerned about /Org-mode/ the application in this document.
   12.69+
   12.70+* ulang
   12.71+:PROPERTIES:
   12.72+:ID: ulang
   12.73+:END:
   12.74+As the title suggest we refer to our *U-Language* as *ulang*. Each
   12.75+section of this document describes a feature.
   12.76+** Outlines
   12.77+In Org, headings can be summarize as any line starting with a star: =*
   12.78+H1=. Headings can be nested or 'demoted' by prepending another star:
   12.79+=** H2=.
   12.80+
   12.81+This is a useful pattern which we apply outside of Org - most commonly
   12.82+in our code comments.
   12.83+
   12.84+In our source code, we use the comment character instead of a star:
   12.85+#+begin_src lisp
   12.86+;;; foo
   12.87+(print "H1") ;; just an inline comment
   12.88+;;;; bar
   12.89+(print "H2")
   12.90+;;; baz
   12.91+(print "H1")
   12.92+#+end_src
   12.93+
   12.94+A collection of /headings/ is what we call an *Outline* - which is
   12.95+also the name of the major-mode utilized for this feature and of
   12.96+course - what Org itself is derived from.
   12.97+
   12.98+** Keywords
   12.99+:PROPERTIES:
  12.100+:CUSTOM_ID: 2cadda9a-22a3-4b42-ad4e-d7a774f74cba
  12.101+:END:
  12.102+
  12.103+The following keywords indicate the state of an element. They often
  12.104+appear as the first word in a heading to indicate a [[*Tasks][Task]].
  12.105+
  12.106+- TBD :: A task to be done at a later date.
  12.107+- TODO :: A task yet to be done.
  12.108+- FIXME :: Item that needs fixing.
  12.109+- WIP :: Work In Progress task.
  12.110+- WAIT :: A suspended task.
  12.111+- DEAD :: Item that will not be completed.
  12.112+- DONE :: Completed task.
  12.113+- BUG :: Designate a bug item.
  12.114+- IDEA :: Designate an idea item.
  12.115+- NOTE :: Designates a note item.
  12.116+- DRAFT :: Designates a draft item.
  12.117+- COMMENT :: A 'commented' item.
  12.118+** Tasks
  12.119+Tasks as they are known in Org, usually consist of a heading that
  12.120+starts with a [[#2cadda9a-22a3-4b42-ad4e-d7a774f74cba][Keyword]]. Here we describe some additional sections and
  12.121+metadata which are present in our collection of tasks.
  12.122+
  12.123+Our task management system is roughly a hybrid of two more
  12.124+conventional methods: GTD and Agile. For convenience I will describe
  12.125+these styles and how I use them separately, but the concepts may be
  12.126+spliced differently in real tasks.
  12.127+
  12.128+- *GTD* \\
  12.129+- *Agile* \\
  12.130+  It's a dirty word in some tech circles - the dreaded PIs, daily
  12.131+  standups, and still nobody knows what's going on, Oh my! Do not
  12.132+  worry. For the most part we just borrow the vocabulary.
  12.133+
  12.134+  Our /Agile/ workflow consists of roadmaps, features (epics/ARTs),
  12.135+  issues (user stories), and of course, tasks.
  12.136+** Ids
  12.137+We reference two different types of identifiers in documentation:
  12.138+- UUID :: CUSTOM_ID property
  12.139+- User-defined :: ID property
  12.140+
  12.141+UUIDs on =CUSTOM_ID= property is admittedly a kludge. This is done for
  12.142+reasons of portability. We may at some point rename this property
  12.143+=UUID= (TBD).
  12.144+
  12.145+Most of the time these Ids don't add any information for the reader -
  12.146+the UUIDs are used to index and graph documents, IDs are for
  12.147+convenience.
  12.148+** Macros
  12.149+:PROPERTIES:
  12.150+:CUSTOM_ID: cdb4976b-1d0d-49df-bfb1-3dbd5d99590e
  12.151+:END:
  12.152+Several *global* [[https://orgmode.org/manual/Macro-Replacement.html][Org Macros]] are used throughout our documents. They are listed
  12.153+here for convenience.
  12.154+
  12.155+#+name: ulang-macros
  12.156+#+begin_src emacs-lisp :exports both :results replace pp
  12.157+  org-export-global-macros
  12.158+#+end_src
  12.159+
  12.160+#+RESULTS: ulang-macros
  12.161+: (("header" .
  12.162+:   "#+TITLE: $1\n#+AUTHOR: $2\n#+EMAIL: $3\n#+DESCRIPTION: $4\n#+SUBTITLE: $4\n#+OPTIONS: ^:nil toc:nil num:nil html-postamble:nil\n#+HTML_HEAD: <link rel=\"stylesheet\" href=\"https://fonts.xz.style/serve/inter.css\"/>\n#+HTML_HEAD: <link rel=\"stylesheet\" type=\"text/css\" href=\"https://cdn.compiler.company/css/new.min.css\"/>\n#+HTML_HEAD: <link rel=\"stylesheet\" type=\"text/css\" href=\"https://cdn.compiler.company/css/night.css\"/>\n")
  12.163+:  ("opts" . "#+OPTIONS: $1\n"))
  12.164+
  12.165+Macros /are not expanded/ in source files - you will see them in the
  12.166+form ={{{NAME(ARGS)}}}=. You will need the relevant macro definition
  12.167+(in =ulang.el=) in order to use some Org-Mode functions (org-export)
  12.168+with our docs.
  12.169+
    13.1--- a/readme.org	Thu Nov 30 20:55:41 2023 -0500
    13.2+++ b/readme.org	Mon Dec 04 21:09:11 2023 -0500
    13.3@@ -5,11 +5,8 @@
    13.4   The Compiler Company Documentation)}}}
    13.5 #+EXPORT_FILE_NAME: index
    13.6 
    13.7-* [[https://compiler.company/docs/ulang.html][ulang]]
    13.8-* [[https://compiler.company/docs/style.html][style]]
    13.9-* [[https://compiler.company/docs/tech.html][tech]]
   13.10-* [[https://compiler.company/docs/core][core]]
   13.11-* [[https://compiler.company/docs/infra][infra]]
   13.12-* [[https://compiler.company/docs/business.html][business]]
   13.13-* projects
   13.14+* [[file:meta][Meta]]
   13.15+* [[file:core][Core]]
   13.16+* [[file:infra][Infra]]
   13.17+* products
   13.18 ** [[https://compiler.company/docs/nas-t][NAS-T]]
    14.1--- a/style.org	Thu Nov 30 20:55:41 2023 -0500
    14.2+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    14.3@@ -1,43 +0,0 @@
    14.4-{{{header(style,
    14.5-Richard Westhaver,
    14.6-ellis@rwest.io,
    14.7-The Compiler Company Styleguide)}}}
    14.8-
    14.9-As an organization we maintain a styleguide[fn:1] which lists all of
   14.10-the style guidelines we use for our code. If you are contributing to
   14.11-one of our projects, you should review and understand the relevant
   14.12-sections below.
   14.13-
   14.14-You should also review the [[file:ulang.org][ulang]] document, which may shine some light
   14.15-on code comments and developer docs.
   14.16-
   14.17-[fn:1] https://google.github.io/styleguide/ 
   14.18-
   14.19-* General Programming
   14.20-
   14.21-- indent-offset = 2
   14.22-- max-line-width = 80
   14.23-- page-length ~ 32
   14.24-- module-length ~ 512
   14.25-- file-size ~ 1024
   14.26-
   14.27-- start every source-file with a header comment
   14.28-- use outline headings to organize your program
   14.29-- use ulang-comments as needed for referencing bugs, notes, etc.
   14.30-- inline documentation should be declarative. your code explains your
   14.31-  comments for you.
   14.32-
   14.33-* Common Lisp
   14.34-
   14.35-- prefer symbol docs to comments
   14.36-- use stdin/stdout/stderr correctly - see [[https://zenodo.org/records/3414191][CDR-11]]
   14.37-- prefer =core= libraries over vendored
   14.38-
   14.39-** File templates
   14.40-* Rust
   14.41-- don't make =mod.rs= files
   14.42-  - use the =foo.rs=, =foo/*= pattern instead
   14.43-* Emacs Lisp
   14.44-* Org-mode
   14.45-* Shell
   14.46-* Python
    15.1--- a/tech.org	Thu Nov 30 20:55:41 2023 -0500
    15.2+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    15.3@@ -1,24 +0,0 @@
    15.4-{{{header(tech,
    15.5-Richard Westhaver,
    15.6-ellis@rwest.io,
    15.7-The Compiler Company Core Technologies)}}}
    15.8-
    15.9-* OS
   15.10-We primarily support [[https://unix.org][Unix-based]] Operating Systems. Check
   15.11-project-specific docs for officially supported targets.
   15.12-
   15.13-Development and CI is ran on [[https://archlinux.org/][Arch Linux]] (btw).
   15.14-* Core
   15.15-** [[https://lisp-lang.org/][Lisp]]
   15.16-** [[https://www.rust-lang.org/][Rust]]
   15.17-** [[https://www.gnu.org/software/emacs/][Emacs]]
   15.18-* Libs
   15.19-** [[https://rocksdb.org/][rocksdb]]
   15.20-** [[https://archlinux.org/pacman/][pacman]]
   15.21-** [[https://docs.kernel.org/filesystems/btrfs.html][btrfs]]
   15.22-** [[https://tree-sitter.github.io/tree-sitter/][tree-sitter]]
   15.23-** [[https://kernel.dk/io_uring.pdf][uring]]
   15.24-** [[https://github.com/BLAKE3-team/BLAKE3-specs/blob/master/blake3.pdf][blake3]]
   15.25-* Extras
   15.26-** [[https://ngn.codeberg.page/k][k]]
   15.27-** [[https://mlochbaum.github.io/BQN/][BQN]]
    16.1--- a/ulang.org	Thu Nov 30 20:55:41 2023 -0500
    16.2+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    16.3@@ -1,166 +0,0 @@
    16.4-{{{header(ulang,
    16.5-Richard Westhaver,
    16.6-ellis@rwest.io,
    16.7-The Universal Language)}}}
    16.8-#+OPTIONS: toc:t
    16.9-
   16.10-This document describes a *U-Language* as described by the late great
   16.11-[[https://iep.utm.edu/haskell-brooks-curry/][Haskell Curry]]:
   16.12-
   16.13-#+begin_quote
   16.14-Every investigation, including the present one, has to be communicated
   16.15-from one person to another by means of language. It is expedient to
   16.16-begin our study by calling attention to this obvious fact, by giving a
   16.17-name to the language being used, and by being explicit about a few of
   16.18-its features. We shall call the language being used the
   16.19-U-Language. [...] There would be no point in calling attention to it,
   16.20-if it were not for the fact that language is more intimately related
   16.21-to our job than of most others.
   16.22-#+end_quote
   16.23-
   16.24-In this document, we will be calling attention to our own language -
   16.25-examining it, and describing how it works.
   16.26-
   16.27-Our job is to solve problems. Hard problems preferred. So we ought to
   16.28-pay close attention to the language we use because it brings the
   16.29-reader and writer /closer/ to the problem at hand.
   16.30-
   16.31-For starters, we are primarily concerned with /written languages/ like
   16.32-the one you're reading now. We will skip past the obvious details -
   16.33-English is our primary form of communication for example. The line you
   16.34-are reading currently is a sentence which is part of a paragraph.
   16.35-
   16.36-There are some non-obvious questions which deserve inquiry though.
   16.37-
   16.38-- *Who is this for?* \\
   16.39-  This document is for authors and readers alike. It is a loose
   16.40-  specification, but also serves as introductory material into our
   16.41-  communication and design philosophy.
   16.42-  
   16.43-- *What is this for?* \\
   16.44-  The purpose of this document is to provide a /standard of
   16.45-  communication/.
   16.46-
   16.47-  All sources we write attempt to conform to this standard but this is
   16.48-  not strictly enforced. If there is a reason to not comply with a
   16.49-  rule, it is already broken.
   16.50-
   16.51-* Org Mode
   16.52-:PROPERTIES:
   16.53-:CUSTOM_ID: 98a02bb2-3f39-49c6-898a-68ccd8f3cbe1
   16.54-:END:
   16.55-[[https://www.gnu.org/software/emacs/][GNU Emacs]] is our text editor, so naturally [[https://orgmode.org/][Org Mode]] is our word
   16.56-processor.
   16.57-
   16.58-If you are already familiar with Emacs and Org-Mode, I recommend
   16.59-opening the source of this document in Emacs and following along.
   16.60-
   16.61-If not, I recommend browsing through the [[https://orgmode.org/worg/][Worg resources]], but we won't
   16.62-be getting too deep into tribal hacker knowledge of Emacs.
   16.63-
   16.64-What's important to know is this: There is /Org Syntax/ and
   16.65-/Org-mode/ - these are different things.
   16.66-
   16.67-Our =ulang= is almost /exclusively/ based on /Org Syntax/ and we are
   16.68-not concerned about /Org-mode/ the application in this document.
   16.69-
   16.70-* ulang
   16.71-:PROPERTIES:
   16.72-:ID: ulang
   16.73-:END:
   16.74-As the title suggest we refer to our *U-Language* as *ulang*. Each
   16.75-section of this document describes a feature.
   16.76-** Outlines
   16.77-In Org, headings can be summarize as any line starting with a star: =*
   16.78-H1=. Headings can be nested or 'demoted' by prepending another star:
   16.79-=** H2=.
   16.80-
   16.81-This is a useful pattern which we apply outside of Org - most commonly
   16.82-in our code comments.
   16.83-
   16.84-In our source code, we use the comment character instead of a star:
   16.85-#+begin_src lisp
   16.86-;;; foo
   16.87-(print "H1") ;; just an inline comment
   16.88-;;;; bar
   16.89-(print "H2")
   16.90-;;; baz
   16.91-(print "H1")
   16.92-#+end_src
   16.93-
   16.94-A collection of /headings/ is what we call an *Outline* - which is
   16.95-also the name of the major-mode utilized for this feature and of
   16.96-course - what Org itself is derived from.
   16.97-
   16.98-** Keywords
   16.99-:PROPERTIES:
  16.100-:CUSTOM_ID: 2cadda9a-22a3-4b42-ad4e-d7a774f74cba
  16.101-:END:
  16.102-
  16.103-The following keywords indicate the state of an element. They often
  16.104-appear as the first word in a heading to indicate a [[*Tasks][Task]].
  16.105-
  16.106-- TBD :: A task to be done at a later date.
  16.107-- TODO :: A task yet to be done.
  16.108-- FIXME :: Item that needs fixing.
  16.109-- WIP :: Work In Progress task.
  16.110-- WAIT :: A suspended task.
  16.111-- DEAD :: Item that will not be completed.
  16.112-- DONE :: Completed task.
  16.113-- BUG :: Designate a bug item.
  16.114-- IDEA :: Designate an idea item.
  16.115-- NOTE :: Designates a note item.
  16.116-- DRAFT :: Designates a draft item.
  16.117-- COMMENT :: A 'commented' item.
  16.118-** Tasks
  16.119-Tasks as they are known in Org, usually consist of a heading that
  16.120-starts with a [[#2cadda9a-22a3-4b42-ad4e-d7a774f74cba][Keyword]]. Here we describe some additional sections and
  16.121-metadata which are present in our collection of tasks.
  16.122-
  16.123-Our task management system is roughly a hybrid of two more
  16.124-conventional methods: GTD and Agile. For convenience I will describe
  16.125-these styles and how I use them separately, but the concepts may be
  16.126-spliced differently in real tasks.
  16.127-
  16.128-- *GTD* \\
  16.129-- *Agile* \\
  16.130-  It's a dirty word in some tech circles - the dreaded PIs, daily
  16.131-  standups, and still nobody knows what's going on, Oh my! Do not
  16.132-  worry. For the most part we just borrow the vocabulary.
  16.133-
  16.134-  Our /Agile/ workflow consists of roadmaps, features (epics/ARTs),
  16.135-  issues (user stories), and of course, tasks.
  16.136-** Ids
  16.137-We reference two different types of identifiers in documentation:
  16.138-- UUID :: CUSTOM_ID property
  16.139-- User-defined :: ID property
  16.140-
  16.141-UUIDs on =CUSTOM_ID= property is admittedly a kludge. This is done for
  16.142-reasons of portability. We may at some point rename this property
  16.143-=UUID= (TBD).
  16.144-
  16.145-Most of the time these Ids don't add any information for the reader -
  16.146-the UUIDs are used to index and graph documents, IDs are for
  16.147-convenience.
  16.148-** Macros
  16.149-:PROPERTIES:
  16.150-:CUSTOM_ID: cdb4976b-1d0d-49df-bfb1-3dbd5d99590e
  16.151-:END:
  16.152-Several *global* [[https://orgmode.org/manual/Macro-Replacement.html][Org Macros]] are used throughout our documents. They are listed
  16.153-here for convenience.
  16.154-
  16.155-#+name: ulang-macros
  16.156-#+begin_src emacs-lisp :exports both :results replace pp
  16.157-  org-export-global-macros
  16.158-#+end_src
  16.159-
  16.160-#+RESULTS: ulang-macros
  16.161-: (("header" .
  16.162-:   "#+TITLE: $1\n#+AUTHOR: $2\n#+EMAIL: $3\n#+DESCRIPTION: $4\n#+SUBTITLE: $4\n#+OPTIONS: ^:nil toc:nil num:nil html-postamble:nil\n#+HTML_HEAD: <link rel=\"stylesheet\" href=\"https://fonts.xz.style/serve/inter.css\"/>\n#+HTML_HEAD: <link rel=\"stylesheet\" type=\"text/css\" href=\"https://cdn.compiler.company/css/new.min.css\"/>\n#+HTML_HEAD: <link rel=\"stylesheet\" type=\"text/css\" href=\"https://cdn.compiler.company/css/night.css\"/>\n")
  16.163-:  ("opts" . "#+OPTIONS: $1\n"))
  16.164-
  16.165-Macros /are not expanded/ in source files - you will see them in the
  16.166-form ={{{NAME(ARGS)}}}=. You will need the relevant macro definition
  16.167-(in =ulang.el=) in order to use some Org-Mode functions (org-export)
  16.168-with our docs.
  16.169-