changelog shortlog graph tags branches changeset files file revisions raw help

Mercurial > org > docs / annotate meta/ulang.org

changeset 28: a0017112db77
parent: c363ae4d1aac
author: Richard Westhaver <ellis@rwest.io>
date: Thu, 06 Jun 2024 23:15:50 -0400
permissions: -rw-r--r--
description: style update
22
889970442a12 docs bump
Richard Westhaver <ellis@rwest.io>
parents: 9
diff changeset
1
 #+title: Universal Languages
889970442a12 docs bump
Richard Westhaver <ellis@rwest.io>
parents: 9
diff changeset
2
 #+author: Richard Westhaver
889970442a12 docs bump
Richard Westhaver <ellis@rwest.io>
parents: 9
diff changeset
3
 #+email: ellis@rwest.io
8
ellis <ellis@rwest.io>
parents: 6
diff changeset
4
 #+OPTIONS: toc:t
28
a0017112db77 style update
Richard Westhaver <ellis@rwest.io>
parents: 25
diff changeset
5
 #+setupfile: ../../clean.theme
5
bb51c61e4d4b blog update
ellis <ellis@rwest.io>
parents: 4
diff changeset
6
 
2
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
7
 This document describes a *U-Language* as described by the late great
8
ellis <ellis@rwest.io>
parents: 6
diff changeset
8
 [[https://iep.utm.edu/haskell-brooks-curry/][Haskell Curry]]:
1
ellis <ellis@rwest.io>
parents:
diff changeset
9
 
ellis <ellis@rwest.io>
parents:
diff changeset
10
 #+begin_quote
ellis <ellis@rwest.io>
parents:
diff changeset
11
 Every investigation, including the present one, has to be communicated
ellis <ellis@rwest.io>
parents:
diff changeset
12
 from one person to another by means of language. It is expedient to
ellis <ellis@rwest.io>
parents:
diff changeset
13
 begin our study by calling attention to this obvious fact, by giving a
ellis <ellis@rwest.io>
parents:
diff changeset
14
 name to the language being used, and by being explicit about a few of
ellis <ellis@rwest.io>
parents:
diff changeset
15
 its features. We shall call the language being used the
ellis <ellis@rwest.io>
parents:
diff changeset
16
 U-Language. [...] There would be no point in calling attention to it,
ellis <ellis@rwest.io>
parents:
diff changeset
17
 if it were not for the fact that language is more intimately related
ellis <ellis@rwest.io>
parents:
diff changeset
18
 to our job than of most others.
ellis <ellis@rwest.io>
parents:
diff changeset
19
 #+end_quote
ellis <ellis@rwest.io>
parents:
diff changeset
20
 
8
ellis <ellis@rwest.io>
parents: 6
diff changeset
21
 In this document, we will be calling attention to our own language -
ellis <ellis@rwest.io>
parents: 6
diff changeset
22
 examining it, and describing how it works.
ellis <ellis@rwest.io>
parents: 6
diff changeset
23
 
ellis <ellis@rwest.io>
parents: 6
diff changeset
24
 Our job is to solve problems. Hard problems preferred. So we ought to
ellis <ellis@rwest.io>
parents: 6
diff changeset
25
 pay close attention to the language we use because it brings the
ellis <ellis@rwest.io>
parents: 6
diff changeset
26
 reader and writer /closer/ to the problem at hand.
ellis <ellis@rwest.io>
parents: 6
diff changeset
27
 
ellis <ellis@rwest.io>
parents: 6
diff changeset
28
 For starters, we are primarily concerned with /written languages/ like
ellis <ellis@rwest.io>
parents: 6
diff changeset
29
 the one you're reading now. We will skip past the obvious details -
ellis <ellis@rwest.io>
parents: 6
diff changeset
30
 English is our primary form of communication for example. The line you
ellis <ellis@rwest.io>
parents: 6
diff changeset
31
 are reading currently is a sentence which is part of a paragraph.
ellis <ellis@rwest.io>
parents: 6
diff changeset
32
 
ellis <ellis@rwest.io>
parents: 6
diff changeset
33
 There are some non-obvious questions which deserve inquiry though.
2
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
34
 
8
ellis <ellis@rwest.io>
parents: 6
diff changeset
35
 - *Who is this for?* \\
ellis <ellis@rwest.io>
parents: 6
diff changeset
36
   This document is for authors and readers alike. It is a loose
ellis <ellis@rwest.io>
parents: 6
diff changeset
37
   specification, but also serves as introductory material into our
ellis <ellis@rwest.io>
parents: 6
diff changeset
38
   communication and design philosophy.
ellis <ellis@rwest.io>
parents: 6
diff changeset
39
   
ellis <ellis@rwest.io>
parents: 6
diff changeset
40
 - *What is this for?* \\
ellis <ellis@rwest.io>
parents: 6
diff changeset
41
   The purpose of this document is to provide a /standard of
ellis <ellis@rwest.io>
parents: 6
diff changeset
42
   communication/.
2
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
43
 
8
ellis <ellis@rwest.io>
parents: 6
diff changeset
44
   All sources we write attempt to conform to this standard but this is
ellis <ellis@rwest.io>
parents: 6
diff changeset
45
   not strictly enforced. If there is a reason to not comply with a
ellis <ellis@rwest.io>
parents: 6
diff changeset
46
   rule, it is already broken.
2
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
47
 
8
ellis <ellis@rwest.io>
parents: 6
diff changeset
48
 * Org Mode
4
1c57e053f043 org publishing
ellis <ellis@rwest.io>
parents: 2
diff changeset
49
 :PROPERTIES:
25
Richard Westhaver <ellis@rwest.io>
parents: 22
diff changeset
50
 :ID: 98a02bb2-3f39-49c6-898a-68ccd8f3cbe1
4
1c57e053f043 org publishing
ellis <ellis@rwest.io>
parents: 2
diff changeset
51
 :END:
8
ellis <ellis@rwest.io>
parents: 6
diff changeset
52
 [[https://www.gnu.org/software/emacs/][GNU Emacs]] is our text editor, so naturally [[https://orgmode.org/][Org Mode]] is our word
ellis <ellis@rwest.io>
parents: 6
diff changeset
53
 processor.
2
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
54
 
8
ellis <ellis@rwest.io>
parents: 6
diff changeset
55
 If you are already familiar with Emacs and Org-Mode, I recommend
ellis <ellis@rwest.io>
parents: 6
diff changeset
56
 opening the source of this document in Emacs and following along.
2
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
57
 
5
bb51c61e4d4b blog update
ellis <ellis@rwest.io>
parents: 4
diff changeset
58
 If not, I recommend browsing through the [[https://orgmode.org/worg/][Worg resources]], but we won't
8
ellis <ellis@rwest.io>
parents: 6
diff changeset
59
 be getting too deep into tribal hacker knowledge of Emacs.
2
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
60
 
8
ellis <ellis@rwest.io>
parents: 6
diff changeset
61
 What's important to know is this: There is /Org Syntax/ and
ellis <ellis@rwest.io>
parents: 6
diff changeset
62
 /Org-mode/ - these are different things.
ellis <ellis@rwest.io>
parents: 6
diff changeset
63
 
ellis <ellis@rwest.io>
parents: 6
diff changeset
64
 Our =ulang= is almost /exclusively/ based on /Org Syntax/ and we are
ellis <ellis@rwest.io>
parents: 6
diff changeset
65
 not concerned about /Org-mode/ the application in this document.
5
bb51c61e4d4b blog update
ellis <ellis@rwest.io>
parents: 4
diff changeset
66
 
8
ellis <ellis@rwest.io>
parents: 6
diff changeset
67
 * ulang
ellis <ellis@rwest.io>
parents: 6
diff changeset
68
 :PROPERTIES:
ellis <ellis@rwest.io>
parents: 6
diff changeset
69
 :ID: ulang
ellis <ellis@rwest.io>
parents: 6
diff changeset
70
 :END:
ellis <ellis@rwest.io>
parents: 6
diff changeset
71
 As the title suggest we refer to our *U-Language* as *ulang*. Each
ellis <ellis@rwest.io>
parents: 6
diff changeset
72
 section of this document describes a feature.
ellis <ellis@rwest.io>
parents: 6
diff changeset
73
 ** Outlines
ellis <ellis@rwest.io>
parents: 6
diff changeset
74
 In Org, headings can be summarize as any line starting with a star: =*
ellis <ellis@rwest.io>
parents: 6
diff changeset
75
 H1=. Headings can be nested or 'demoted' by prepending another star:
ellis <ellis@rwest.io>
parents: 6
diff changeset
76
 =** H2=.
6
713c22bdab6a organizing
ellis <ellis@rwest.io>
parents: 5
diff changeset
77
 
8
ellis <ellis@rwest.io>
parents: 6
diff changeset
78
 This is a useful pattern which we apply outside of Org - most commonly
ellis <ellis@rwest.io>
parents: 6
diff changeset
79
 in our code comments.
6
713c22bdab6a organizing
ellis <ellis@rwest.io>
parents: 5
diff changeset
80
 
8
ellis <ellis@rwest.io>
parents: 6
diff changeset
81
 In our source code, we use the comment character instead of a star:
ellis <ellis@rwest.io>
parents: 6
diff changeset
82
 #+begin_src lisp
ellis <ellis@rwest.io>
parents: 6
diff changeset
83
 ;;; foo
ellis <ellis@rwest.io>
parents: 6
diff changeset
84
 (print "H1") ;; just an inline comment
ellis <ellis@rwest.io>
parents: 6
diff changeset
85
 ;;;; bar
ellis <ellis@rwest.io>
parents: 6
diff changeset
86
 (print "H2")
ellis <ellis@rwest.io>
parents: 6
diff changeset
87
 ;;; baz
ellis <ellis@rwest.io>
parents: 6
diff changeset
88
 (print "H1")
ellis <ellis@rwest.io>
parents: 6
diff changeset
89
 #+end_src
6
713c22bdab6a organizing
ellis <ellis@rwest.io>
parents: 5
diff changeset
90
 
8
ellis <ellis@rwest.io>
parents: 6
diff changeset
91
 A collection of /headings/ is what we call an *Outline* - which is
ellis <ellis@rwest.io>
parents: 6
diff changeset
92
 also the name of the major-mode utilized for this feature and of
ellis <ellis@rwest.io>
parents: 6
diff changeset
93
 course - what Org itself is derived from.
5
bb51c61e4d4b blog update
ellis <ellis@rwest.io>
parents: 4
diff changeset
94
 
8
ellis <ellis@rwest.io>
parents: 6
diff changeset
95
 ** Keywords
4
1c57e053f043 org publishing
ellis <ellis@rwest.io>
parents: 2
diff changeset
96
 :PROPERTIES:
25
Richard Westhaver <ellis@rwest.io>
parents: 22
diff changeset
97
 :ID: 2cadda9a-22a3-4b42-ad4e-d7a774f74cba
4
1c57e053f043 org publishing
ellis <ellis@rwest.io>
parents: 2
diff changeset
98
 :END:
2
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
99
 
8
ellis <ellis@rwest.io>
parents: 6
diff changeset
100
 The following keywords indicate the state of an element. They often
ellis <ellis@rwest.io>
parents: 6
diff changeset
101
 appear as the first word in a heading to indicate a [[*Tasks][Task]].
2
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
102
 
8
ellis <ellis@rwest.io>
parents: 6
diff changeset
103
 - TBD :: A task to be done at a later date.
ellis <ellis@rwest.io>
parents: 6
diff changeset
104
 - TODO :: A task yet to be done.
ellis <ellis@rwest.io>
parents: 6
diff changeset
105
 - FIXME :: Item that needs fixing.
ellis <ellis@rwest.io>
parents: 6
diff changeset
106
 - WIP :: Work In Progress task.
ellis <ellis@rwest.io>
parents: 6
diff changeset
107
 - WAIT :: A suspended task.
ellis <ellis@rwest.io>
parents: 6
diff changeset
108
 - DEAD :: Item that will not be completed.
ellis <ellis@rwest.io>
parents: 6
diff changeset
109
 - DONE :: Completed task.
ellis <ellis@rwest.io>
parents: 6
diff changeset
110
 - BUG :: Designate a bug item.
ellis <ellis@rwest.io>
parents: 6
diff changeset
111
 - IDEA :: Designate an idea item.
ellis <ellis@rwest.io>
parents: 6
diff changeset
112
 - NOTE :: Designates a note item.
ellis <ellis@rwest.io>
parents: 6
diff changeset
113
 - DRAFT :: Designates a draft item.
ellis <ellis@rwest.io>
parents: 6
diff changeset
114
 - COMMENT :: A 'commented' item.
ellis <ellis@rwest.io>
parents: 6
diff changeset
115
 ** Tasks
ellis <ellis@rwest.io>
parents: 6
diff changeset
116
 Tasks as they are known in Org, usually consist of a heading that
ellis <ellis@rwest.io>
parents: 6
diff changeset
117
 starts with a [[#2cadda9a-22a3-4b42-ad4e-d7a774f74cba][Keyword]]. Here we describe some additional sections and
ellis <ellis@rwest.io>
parents: 6
diff changeset
118
 metadata which are present in our collection of tasks.
1
ellis <ellis@rwest.io>
parents:
diff changeset
119
 
8
ellis <ellis@rwest.io>
parents: 6
diff changeset
120
 Our task management system is roughly a hybrid of two more
ellis <ellis@rwest.io>
parents: 6
diff changeset
121
 conventional methods: GTD and Agile. For convenience I will describe
ellis <ellis@rwest.io>
parents: 6
diff changeset
122
 these styles and how I use them separately, but the concepts may be
ellis <ellis@rwest.io>
parents: 6
diff changeset
123
 spliced differently in real tasks.
2
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
124
 
8
ellis <ellis@rwest.io>
parents: 6
diff changeset
125
 - *GTD* \\
ellis <ellis@rwest.io>
parents: 6
diff changeset
126
 - *Agile* \\
ellis <ellis@rwest.io>
parents: 6
diff changeset
127
   It's a dirty word in some tech circles - the dreaded PIs, daily
ellis <ellis@rwest.io>
parents: 6
diff changeset
128
   standups, and still nobody knows what's going on, Oh my! Do not
ellis <ellis@rwest.io>
parents: 6
diff changeset
129
   worry. For the most part we just borrow the vocabulary.
2
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
130
 
8
ellis <ellis@rwest.io>
parents: 6
diff changeset
131
   Our /Agile/ workflow consists of roadmaps, features (epics/ARTs),
ellis <ellis@rwest.io>
parents: 6
diff changeset
132
   issues (user stories), and of course, tasks.
25
Richard Westhaver <ellis@rwest.io>
parents: 22
diff changeset
133
 ** IDs
8
ellis <ellis@rwest.io>
parents: 6
diff changeset
134
 We reference two different types of identifiers in documentation:
25
Richard Westhaver <ellis@rwest.io>
parents: 22
diff changeset
135
 - UUID :: ID property
Richard Westhaver <ellis@rwest.io>
parents: 22
diff changeset
136
 - User-defined :: CUSTOM_ID property
2
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
137
 
8
ellis <ellis@rwest.io>
parents: 6
diff changeset
138
 Most of the time these Ids don't add any information for the reader -
25
Richard Westhaver <ellis@rwest.io>
parents: 22
diff changeset
139
 the UUIDs are used to index and graph documents, CUSTOM_IDs are for
Richard Westhaver <ellis@rwest.io>
parents: 22
diff changeset
140
 convenience but are rarely necessary given the many ways of
Richard Westhaver <ellis@rwest.io>
parents: 22
diff changeset
141
 identifying a headline.
8
ellis <ellis@rwest.io>
parents: 6
diff changeset
142
 ** Macros
5
bb51c61e4d4b blog update
ellis <ellis@rwest.io>
parents: 4
diff changeset
143
 :PROPERTIES:
25
Richard Westhaver <ellis@rwest.io>
parents: 22
diff changeset
144
 :ID: cdb4976b-1d0d-49df-bfb1-3dbd5d99590e
5
bb51c61e4d4b blog update
ellis <ellis@rwest.io>
parents: 4
diff changeset
145
 :END:
bb51c61e4d4b blog update
ellis <ellis@rwest.io>
parents: 4
diff changeset
146
 Several *global* [[https://orgmode.org/manual/Macro-Replacement.html][Org Macros]] are used throughout our documents. They are listed
bb51c61e4d4b blog update
ellis <ellis@rwest.io>
parents: 4
diff changeset
147
 here for convenience.
bb51c61e4d4b blog update
ellis <ellis@rwest.io>
parents: 4
diff changeset
148
 
bb51c61e4d4b blog update
ellis <ellis@rwest.io>
parents: 4
diff changeset
149
 #+name: ulang-macros
6
713c22bdab6a organizing
ellis <ellis@rwest.io>
parents: 5
diff changeset
150
 #+begin_src emacs-lisp :exports both :results replace pp
5
bb51c61e4d4b blog update
ellis <ellis@rwest.io>
parents: 4
diff changeset
151
   org-export-global-macros
bb51c61e4d4b blog update
ellis <ellis@rwest.io>
parents: 4
diff changeset
152
 #+end_src
bb51c61e4d4b blog update
ellis <ellis@rwest.io>
parents: 4
diff changeset
153
 
bb51c61e4d4b blog update
ellis <ellis@rwest.io>
parents: 4
diff changeset
154
 #+RESULTS: ulang-macros
6
713c22bdab6a organizing
ellis <ellis@rwest.io>
parents: 5
diff changeset
155
 : (("header" .
713c22bdab6a organizing
ellis <ellis@rwest.io>
parents: 5
diff changeset
156
 :   "#+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")
713c22bdab6a organizing
ellis <ellis@rwest.io>
parents: 5
diff changeset
157
 :  ("opts" . "#+OPTIONS: $1\n"))
5
bb51c61e4d4b blog update
ellis <ellis@rwest.io>
parents: 4
diff changeset
158
 
bb51c61e4d4b blog update
ellis <ellis@rwest.io>
parents: 4
diff changeset
159
 Macros /are not expanded/ in source files - you will see them in the
bb51c61e4d4b blog update
ellis <ellis@rwest.io>
parents: 4
diff changeset
160
 form ={{{NAME(ARGS)}}}=. You will need the relevant macro definition
8
ellis <ellis@rwest.io>
parents: 6
diff changeset
161
 (in =ulang.el=) in order to use some Org-Mode functions (org-export)
ellis <ellis@rwest.io>
parents: 6
diff changeset
162
 with our docs.
5
bb51c61e4d4b blog update
ellis <ellis@rwest.io>
parents: 4
diff changeset
163