1.1--- a/pitch.org Sun Aug 11 10:09:31 2024 -0400
1.2+++ b/pitch.org Sun Aug 11 14:47:55 2024 -0400
1.3@@ -2,6 +2,9 @@
1.4 #+author: Richard Westhaver <ellis@rwest.io>
1.5 #+setupfile: ../../clean.theme
1.6 * Get Off of My Cloud
1.7+:PROPERTIES:
1.8+:ID: 6dbb0064-1421-41bb-b2df-36f694efce0a
1.9+:END:
1.10 - industry has moved away from client-side, distributed compute in
1.11 favor of centralized server-side compute resources behind API
1.12 gateways.
1.13@@ -17,6 +20,9 @@
1.14 can collect and profit from
1.15
1.16 * Death of the Programmer
1.17+:PROPERTIES:
1.18+:ID: 138f4a50-1d52-4e13-bf67-f225ef9f6747
1.19+:END:
1.20 - The role of the programmer is changing
1.21 - programmers are no longer required to understand how computers
1.22 work to have a successful career
2.1--- a/readme.org Sun Aug 11 10:09:31 2024 -0400
2.2+++ b/readme.org Sun Aug 11 14:47:55 2024 -0400
2.3@@ -5,8 +5,26 @@
2.4 #+EXPORT_FILE_NAME: index
2.5 #+setupfile: ../../clean.theme
2.6 * [[file:ulang.org][ulang]]
2.7+:PROPERTIES:
2.8+:ID: 0ecd9330-de4d-4adf-bb7f-75d12f973a0a
2.9+:END:
2.10 * [[file:style.org][style]]
2.11+:PROPERTIES:
2.12+:ID: f07097d7-afd7-4671-8bbb-386acbf6048f
2.13+:END:
2.14 * [[file:tech.org][tech]]
2.15+:PROPERTIES:
2.16+:ID: fe8dbc96-ebc2-4461-a6fa-8a90f60a8df9
2.17+:END:
2.18 * [[file:business.org][business]]
2.19+:PROPERTIES:
2.20+:ID: b46cae62-6f62-4a54-a9aa-f5cbacbf000e
2.21+:END:
2.22 * [[file:mindset.org][mindset]]
2.23+:PROPERTIES:
2.24+:ID: 7a338797-f0bb-46ee-8bc0-81b9c874b7bb
2.25+:END:
2.26 * [[file:workflows.org][workflows]]
2.27+:PROPERTIES:
2.28+:ID: c7dc2ecf-7655-4ce6-b6e7-52674364e8fc
2.29+:END:
3.1--- a/style.org Sun Aug 11 10:09:31 2024 -0400
3.2+++ b/style.org Sun Aug 11 14:47:55 2024 -0400
3.3@@ -13,6 +13,9 @@
3.4 [fn:1] https://google.github.io/styleguide/
3.5
3.6 * General Programming
3.7+:PROPERTIES:
3.8+:ID: 5cee979a-3732-45ed-87f5-cadf591cac42
3.9+:END:
3.10 - indent-offset = 2
3.11 - max-line-width = 80
3.12 - page-length ~ 32
3.13@@ -28,6 +31,9 @@
3.14 - =main= functions belong at the bottom of a file
3.15 - use LSP wherever possible (eglot, slime)
3.16 * Common Lisp
3.17+:PROPERTIES:
3.18+:ID: d4c25810-ce35-411e-a371-67ab7e814260
3.19+:END:
3.20 - prefer symbol docs to comments
3.21 - use stdin/stdout/stderr correctly - see [[https://zenodo.org/records/3414191][CDR-11]]
3.22 - always prefer =core= libraries over vendored dependencies
3.23@@ -38,11 +44,17 @@
3.24 polished
3.25 - don't be afraid of macros
3.26 ** Systems
3.27+:PROPERTIES:
3.28+:ID: 2a323c4c-362c-429f-9849-587e2a7311f5
3.29+:END:
3.30 - define systems using keyword symbols
3.31 - use slash instead of dash for path separation in system names: =:foo/bar=
3.32 - define your test system in the same file with a name of: =:foo/tests=
3.33 - where possible, avoid collisions with systems in Quicklisp
3.34 ** Packages
3.35+:PROPERTIES:
3.36+:ID: f735b4b5-4818-408b-a244-e2fb506c7ded
3.37+:END:
3.38 - declare packages in a file named =pkg.lisp=
3.39 - when multiple packages are being declared, consider a wrapper
3.40 package
3.41@@ -51,8 +63,14 @@
3.42 system name as their root path.
3.43 - use ~:NICKNAMES~ to declare alternative names for your package
3.44 ** CLOS
3.45+:PROPERTIES:
3.46+:ID: 5068e164-764a-4843-be8f-126754938ef9
3.47+:END:
3.48 - prefer =:default-initargs= over =:initform=.
3.49 * Rust
3.50+:PROPERTIES:
3.51+:ID: 8e414073-36b6-45d4-9a11-e6de8a0a65e9
3.52+:END:
3.53 - always prefer =core= libraries to vendored dependencies
3.54 - don't make =mod.rs= files
3.55 - use the =foo.rs=, =foo/*= pattern instead
3.56@@ -61,6 +79,18 @@
3.57 - derive default methods for =Default=, =Hash=, =Copy=, etc where possible
3.58 - use generics where appropriate: =foo<P:AsRef<Path>>(path:P){p.as_ref();}=
3.59 * Emacs Lisp
3.60+:PROPERTIES:
3.61+:ID: 8b17f8a3-74f2-44cd-a5ce-7df540e2544c
3.62+:END:
3.63 * Org-mode
3.64+:PROPERTIES:
3.65+:ID: ea4fa698-7a46-46d6-a7a0-5b497119edf2
3.66+:END:
3.67 * Shell
3.68+:PROPERTIES:
3.69+:ID: 10904e36-e4ac-4841-b602-d4dc68a54c71
3.70+:END:
3.71 * Python
3.72+:PROPERTIES:
3.73+:ID: 5b402ced-2329-4a16-b512-76859157a9d6
3.74+:END:
4.1--- a/tech.org Sun Aug 11 10:09:31 2024 -0400
4.2+++ b/tech.org Sun Aug 11 14:47:55 2024 -0400
4.3@@ -5,26 +5,74 @@
4.4 #+setupfile: ../../clean.theme
4.5
4.6 * OS
4.7+:PROPERTIES:
4.8+:ID: 0c3a8097-e0bb-4c8a-9de2-907cffddbb8f
4.9+:END:
4.10 We primarily support [[https://unix.org][Unix-based]] Operating Systems. Check
4.11 project-specific docs for officially supported targets.
4.12
4.13 Development and CI is ran on [[https://archlinux.org/][Arch Linux]] (btw).
4.14 * Core
4.15+:PROPERTIES:
4.16+:ID: f6d8cc58-e6ec-4482-b6b8-3977e771a578
4.17+:END:
4.18 ** [[https://lisp-lang.org/][Lisp]]
4.19+:PROPERTIES:
4.20+:ID: 765d7aea-1f04-47ac-b59a-b5e83ce05194
4.21+:END:
4.22 ** [[https://www.rust-lang.org/][Rust]]
4.23+:PROPERTIES:
4.24+:ID: e4fce1b9-dc0f-4bd9-b26e-3b41e583e901
4.25+:END:
4.26 ** [[https://www.gnu.org/software/emacs/][Emacs]]
4.27+:PROPERTIES:
4.28+:ID: da8b7be1-28c9-44cb-b013-9e6edf2f0581
4.29+:END:
4.30 * Libs
4.31+:PROPERTIES:
4.32+:ID: e0db5df8-5e99-4199-a042-5bfab74f3711
4.33+:END:
4.34 ** [[https://rocksdb.org/][rocksdb]]
4.35+:PROPERTIES:
4.36+:ID: e363bbaa-57ad-4e73-af2b-7fe487f67c7c
4.37+:END:
4.38 ** [[https://archlinux.org/pacman/][pacman]]
4.39+:PROPERTIES:
4.40+:ID: e2ce47d2-2a6d-4f7b-acd7-3835463072a8
4.41+:END:
4.42 ** [[https://docs.kernel.org/filesystems/btrfs.html][btrfs]]
4.43+:PROPERTIES:
4.44+:ID: 4e99345f-9e2b-4edb-9f97-5daf6fb66c14
4.45+:END:
4.46 ** [[https://tree-sitter.github.io/tree-sitter/][tree-sitter]]
4.47+:PROPERTIES:
4.48+:ID: b13a05bd-cc78-4d9b-84db-873f2714f32c
4.49+:END:
4.50 ** [[https://kernel.dk/io_uring.pdf][uring]]
4.51+:PROPERTIES:
4.52+:ID: 016e1ebc-56b0-47f6-a610-1f8761bf69dd
4.53+:END:
4.54 ** [[https://github.com/BLAKE3-team/BLAKE3-specs/blob/master/blake3.pdf][blake3]]
4.55+:PROPERTIES:
4.56+:ID: a0898683-d3ce-4d44-aaf7-b989cc5418d8
4.57+:END:
4.58 * Extras
4.59+:PROPERTIES:
4.60+:ID: e1bf8a4c-a9d6-478a-879d-49d6b5a2a72b
4.61+:END:
4.62 ** [[https://ngn.codeberg.page/k][k]]
4.63+:PROPERTIES:
4.64+:ID: 0f4175ad-656b-4348-9328-5e409379b3fd
4.65+:END:
4.66 ** [[https://mlochbaum.github.io/BQN/][BQN]]
4.67+:PROPERTIES:
4.68+:ID: 3cc89f3d-20a5-420f-bc7e-0731254e5040
4.69+:END:
4.70
4.71 * Our Software
4.72+:PROPERTIES:
4.73+:ID: 06de34a3-60b4-4f48-bcab-eabeb3fe41c3
4.74+:END:
4.75 The software provided by /The Compiler Company/ is a powerful but
4.76 opinionated programming environment. It consists of a GNU/Linux
4.77 kernel, some vendored programs and libraries, and a suite of custom
4.78@@ -43,6 +91,9 @@
4.79 DSLs, and unmatched hackability
4.80
4.81 ** Langs
4.82+:PROPERTIES:
4.83+:ID: f5411514-19d6-4fb0-bdbe-48c4b5581e5c
4.84+:END:
4.85 /The Compiler Company/ is above all, a =Lisp Company=. The most
4.86 powerful software requires the most powerful code.
4.87
4.88@@ -54,6 +105,9 @@
4.89 nightly Rust compiler toolchain.
4.90
4.91 ** OS
4.92+:PROPERTIES:
4.93+:ID: 1ae69e1e-1e01-4e48-b205-e28fb0fd0b1e
4.94+:END:
4.95 /The Compiler Company/ is a =Linux Company=. There may be minimal
4.96 support for Darwin-based systems, but Microsoft Windows systems will
4.97 never be officially supported.
5.1--- a/ulang.org Sun Aug 11 10:09:31 2024 -0400
5.2+++ b/ulang.org Sun Aug 11 14:47:55 2024 -0400
5.3@@ -1,12 +1,14 @@
5.4-#+title: Universal Languages
5.5+#+title: Universal Language
5.6 #+author: Richard Westhaver
5.7 #+email: ellis@rwest.io
5.8-#+OPTIONS: toc:t
5.9-#+setupfile: ../../clean.theme
5.10-
5.11+#+setupfile: ../clean.theme
5.12+#+infojs_opt: toc:nil home:https://compiler.company up:./ view:showall
5.13+* Introduction
5.14+:PROPERTIES:
5.15+:ID: e63d129f-9024-4cd8-9e2c-77f4bc614663
5.16+:END:
5.17 This document describes a *U-Language* as described by the late great
5.18 [[https://iep.utm.edu/haskell-brooks-curry/][Haskell Curry]]:
5.19-
5.20 #+begin_quote
5.21 Every investigation, including the present one, has to be communicated
5.22 from one person to another by means of language. It is expedient to
5.23@@ -30,22 +32,14 @@
5.24 English is our primary form of communication for example. The line you
5.25 are reading currently is a sentence which is part of a paragraph.
5.26
5.27-There are some non-obvious questions which deserve inquiry though.
5.28-
5.29-- *Who is this for?* \\
5.30- This document is for authors and readers alike. It is a loose
5.31+- This document is for authors and curious readers. It is a loose
5.32 specification, but also serves as introductory material into our
5.33 communication and design philosophy.
5.34-
5.35-- *What is this for?* \\
5.36- The purpose of this document is to provide a /standard of
5.37- communication/.
5.38-
5.39- All sources we write attempt to conform to this standard but this is
5.40+- All sources we write attempt to comply to this standard but it is
5.41 not strictly enforced. If there is a reason to not comply with a
5.42 rule, it is already broken.
5.43
5.44-* Org Mode
5.45+** Org Mode
5.46 :PROPERTIES:
5.47 :ID: 98a02bb2-3f39-49c6-898a-68ccd8f3cbe1
5.48 :END:
5.49@@ -64,21 +58,61 @@
5.50 Our =ulang= is almost /exclusively/ based on /Org Syntax/ and we are
5.51 not concerned about /Org-mode/ the application in this document.
5.52
5.53+For the remainder of this document, we assume basic knowledge of Org
5.54+Mode.
5.55+
5.56 * ulang
5.57 :PROPERTIES:
5.58-:ID: ulang
5.59+:CUSTOM_ID: ulang
5.60+:ID: 236227a5-b30c-4548-8cad-360428d74d67
5.61+:END:
5.62+Our *U-Language* is colloquially termed *ulang*. Each section of this
5.63+document describes a feature or property of our ulang.
5.64+** Emphasis
5.65+:PROPERTIES:
5.66+:ID: 88bf1177-b5b7-4945-8bdc-5229803e617e
5.67 :END:
5.68-As the title suggest we refer to our *U-Language* as *ulang*. Each
5.69-section of this document describes a feature.
5.70-** Outlines
5.71+We derive all text emphasis syntax for rich contents from [[https://orgmode.org/manual/Emphasis-and-Monospace.html][Org Mode]].
5.72+#+name: org-emphasis
5.73+#+begin_src org
5.74+ - *bold*
5.75+ - /italic/
5.76+ - _underlined_
5.77+ - =verbatim=
5.78+ - ~code~
5.79+ - +strike-through+
5.80+#+end_src
5.81+- *bold*
5.82+- /italic/
5.83+- _underlined_
5.84+- =verbatim=
5.85+- ~code~
5.86+- +strike-through+
5.87+
5.88+Text emphasis markers may be embedded in any syntax as long as it does
5.89+not cause any conflicts with the host language.
5.90+** Headings
5.91+:PROPERTIES:
5.92+:ID: ed035298-f7fa-4726-ad58-2d542323bb61
5.93+:END:
5.94 In Org, headings can be summarize as any line starting with a star: =*
5.95 H1=. Headings can be nested or 'demoted' by prepending another star:
5.96 =** H2=.
5.97
5.98+#+name: org-headings
5.99+#+begin_src org
5.100+,* H1
5.101+,** H2
5.102+,*** H3
5.103+,** H2
5.104+,* H1
5.105+#+end_src
5.106+
5.107 This is a useful pattern which we apply outside of Org - most commonly
5.108 in our code comments.
5.109
5.110 In our source code, we use the comment character instead of a star:
5.111+#+name: lisp-headings
5.112 #+begin_src lisp
5.113 ;;; foo
5.114 (print "H1") ;; just an inline comment
5.115@@ -88,17 +122,37 @@
5.116 (print "H1")
5.117 #+end_src
5.118
5.119+#+name: rust-headings
5.120+#+begin_src rust
5.121+ /// foo
5.122+ println!("H1");
5.123+ //// bar
5.124+ println!("H2");
5.125+ /// baz
5.126+ println!("H1");
5.127+#+end_src
5.128+
5.129+** Outlines
5.130+:PROPERTIES:
5.131+:ID: 7b4d3229-d85f-4464-b9d0-6beccb1f7b2e
5.132+:END:
5.133 A collection of /headings/ is what we call an *Outline* - which is
5.134 also the name of the major-mode utilized for this feature and of
5.135 course - what Org itself is derived from.
5.136-
5.137 ** Keywords
5.138 :PROPERTIES:
5.139 :ID: 2cadda9a-22a3-4b42-ad4e-d7a774f74cba
5.140 :END:
5.141
5.142-The following keywords indicate the state of an element. They often
5.143-appear as the first word in a heading to indicate a [[*Tasks][Task]].
5.144+In Org, TODO keywords are used to key track of the state of a [[https://orgmode.org/manual/TODO-Items.html][TODO
5.145+Item]].
5.146+
5.147+In ulang, they are used for this purpose and [[https://orgmode.org/manual/TODO-Extensions.html][extended]] to support a
5.148+variety of stateful item types beyond just tasks - for example =NOTE=
5.149+and =PROJECT=.
5.150+
5.151+The following keywords indicate the state of a heading element. They
5.152+often appear as the first word in a heading.
5.153
5.154 - TBD :: A task to be done at a later date.
5.155 - TODO :: A task yet to be done.
5.156@@ -112,9 +166,20 @@
5.157 - NOTE :: Designates a note item.
5.158 - DRAFT :: Designates a draft item.
5.159 - COMMENT :: A 'commented' item.
5.160-** Tasks
5.161+- PROJECT :: Designates a project item containing a sequence of tasks.
5.162+
5.163+#+begin_src org
5.164+ ,* PROJECT project
5.165+ ,** DONE foo
5.166+ ,** TODO bar
5.167+#+end_src
5.168+
5.169+** COMMENT Tasks
5.170+:PROPERTIES:
5.171+:ID: 0f4c0afd-a774-4b98-900b-1ab44f9fd2ef
5.172+:END:
5.173 Tasks as they are known in Org, usually consist of a heading that
5.174-starts with a [[#2cadda9a-22a3-4b42-ad4e-d7a774f74cba][Keyword]]. Here we describe some additional sections and
5.175+starts with a [[id:2cadda9a-22a3-4b42-ad4e-d7a774f74cba][Keyword]]. Here we describe some additional sections and
5.176 metadata which are present in our collection of tasks.
5.177
5.178 Our task management system is roughly a hybrid of two more
5.179@@ -130,34 +195,61 @@
5.180
5.181 Our /Agile/ workflow consists of roadmaps, features (epics/ARTs),
5.182 issues (user stories), and of course, tasks.
5.183-** IDs
5.184+** Properties
5.185+:PROPERTIES:
5.186+:ID: 174a993b-a5dc-4324-b4f8-dda8101a55b7
5.187+:END:
5.188+*** IDs
5.189+:PROPERTIES:
5.190+:ID: 3944c851-e46c-4d75-b8f5-07b5c052177a
5.191+:END:
5.192 We reference two different types of identifiers in documentation:
5.193-- UUID :: ID property
5.194-- User-defined :: CUSTOM_ID property
5.195+- UUID :: =ID= property
5.196+- User-defined :: =CUSTOM_ID= property
5.197
5.198-Most of the time these Ids don't add any information for the reader -
5.199+Most of the time these IDs don't add any information for the reader -
5.200 the UUIDs are used to index and graph documents, CUSTOM_IDs are for
5.201 convenience but are rarely necessary given the many ways of
5.202 identifying a headline.
5.203-** Macros
5.204+** Tags
5.205 :PROPERTIES:
5.206-:ID: cdb4976b-1d0d-49df-bfb1-3dbd5d99590e
5.207+:ID: a7ae1b2a-559e-46e9-8cab-33e39a218288
5.208 :END:
5.209-Several *global* [[https://orgmode.org/manual/Macro-Replacement.html][Org Macros]] are used throughout our documents. They are listed
5.210-here for convenience.
5.211+[[https://orgmode.org/manual/Tags.html][Tags]] are used liberally throughout our documents. They are simple
5.212+strings usually following a headline as a =:=-separated list.
5.213
5.214-#+name: ulang-macros
5.215-#+begin_src emacs-lisp :exports both :results replace pp
5.216- org-export-global-macros
5.217-#+end_src
5.218-
5.219-#+RESULTS: ulang-macros
5.220-: (("header" .
5.221-: "#+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")
5.222-: ("opts" . "#+OPTIONS: $1\n"))
5.223-
5.224-Macros /are not expanded/ in source files - you will see them in the
5.225-form ={{{NAME(ARGS)}}}=. You will need the relevant macro definition
5.226-(in =ulang.el=) in order to use some Org-Mode functions (org-export)
5.227-with our docs.
5.228-
5.229+A tag can be any text without newlines, although it is recommended to
5.230+treat them as unique identifiers and usage of whitespace is
5.231+discouraged (but not disallowed).
5.232+*** Tag Types
5.233+:PROPERTIES:
5.234+:ID: b686dbc5-3505-49d7-b66a-0772bcf1a726
5.235+:END:
5.236+Tags may be prefixed with one of the following characters, indicating
5.237+a special tag type:
5.238+- =@= :: location-tag \\
5.239+ A /location tag/ refers to some context-dependent named point in
5.240+ space, such as a user's home address, a popular fast food
5.241+ restaurant, or a specific room found in most houses.
5.242+ - =@home=, =@taco-bell=, =@bedroom=
5.243+- =!= :: timestamp-tag \\
5.244+ /Timestamp tags/ refer to some point in time, often named for
5.245+ convenience. You may use literal [[https://orgmode.org/manual/Timestamps.html][Timestamps]] too. Timestamp tags
5.246+ should not /directly reference/ scheduling information, doing so is
5.247+ often a code-smell.
5.248+ - =!now=, =!christmas=, =!someday=
5.249+- =#= :: anchor-tag \\
5.250+ An /anchor tag/ implies a link to the object identified by some [[id:3944c851-e46c-4d75-b8f5-07b5c052177a][ID]].
5.251+ - =#readme=, =#a7ae1b2a-559e-46e9-8cab-33e39a218288=, =#custom-id=
5.252+*** Tag Lists
5.253+:PROPERTIES:
5.254+:ID: 805862be-ba2b-4288-a2e3-791c0aa3802f
5.255+:END:
5.256+** Links
5.257+:PROPERTIES:
5.258+:ID: 7ecaec5d-c656-44e1-8fad-185915655cee
5.259+:END:
5.260+*** Link Types
5.261+:PROPERTIES:
5.262+:ID: 6aedc026-36d0-4763-adc8-8ae1a79f1b3e
5.263+:END:
6.1--- a/workflows.org Sun Aug 11 10:09:31 2024 -0400
6.2+++ b/workflows.org Sun Aug 11 14:47:55 2024 -0400
6.3@@ -3,15 +3,34 @@
6.4 #+email: ellis@rwest.io
6.5 #+description: Meta Workflows
6.6 #+setupfile: ../../clean.theme
6.7+* Roadmap
6.8+:PROPERTIES:
6.9+:ID: be90c808-6c3b-4381-a032-af07d54f5907
6.10+:END:
6.11
6.12 * Task Management
6.13-
6.14+:PROPERTIES:
6.15+:ID: 66333c80-aa6f-43d7-a305-44e218dde045
6.16+:END:
6.17 * Project Management
6.18-
6.19-* Roadmap
6.20-
6.21+:PROPERTIES:
6.22+:ID: 560f4094-e077-4389-9e09-dba1e0d4004e
6.23+:END:
6.24 * Source Code Management
6.25+:PROPERTIES:
6.26+:ID: 81da5e76-2619-42c3-8a2a-dea2b815b261
6.27+:END:
6.28
6.29 * Data Management
6.30+:PROPERTIES:
6.31+:ID: e5c4702e-581d-41b7-a484-76730435f056
6.32+:END:
6.33
6.34-* Resource Management
6.35+* Attachments
6.36+:PROPERTIES:
6.37+:ID: c179c71d-3ad6-480b-bb52-76307b4a6316
6.38+:END:
6.39+* Archive
6.40+:PROPERTIES:
6.41+:ID: ca0dcc07-0517-4d04-86f0-905537cb7801
6.42+:END: