changelog shortlog graph tags branches files raw help

Mercurial > org > meta / changeset: init meta

changeset 0: e8da1c55dcbe
child 1: d119ae1ce0d5
author: Richard Westhaver <ellis@rwest.io>
date: Sun, 11 Aug 2024 10:09:31 -0400
files: .hgignore business.org mindset.org pitch.org readme.org style.org tech.org ulang.org workflows.org
description: init meta
     1.1--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2+++ b/.hgignore	Sun Aug 11 10:09:31 2024 -0400
     1.3@@ -0,0 +1,1 @@
     1.4+[.]html
     1.5\ No newline at end of file
     2.1--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     2.2+++ b/business.org	Sun Aug 11 10:09:31 2024 -0400
     2.3@@ -0,0 +1,17 @@
     2.4+#+title: business
     2.5+#+author: Richard Westhaver
     2.6+#+email: ellis@rwest.io
     2.7+#+description: The Compiler Company Business Model
     2.8+#+setupfile: ../../clean.theme
     2.9+In short, this document describes the business aspects of The Compiler
    2.10+Company LLC. We are designed to be small, fast, and agile. We
    2.11+infiltrate a market, apply our methodology, and develop solutions that
    2.12+are simply years ahead of the competition. We treat the market like
    2.13+we're the only supplier, because we can. This is in part due to our
    2.14+internal research & development pursuits, but also our approach to
    2.15+business. We build businesses and revenue streams the exact same way
    2.16+we build software -- with a bottom up approach. This is our secret
    2.17+weapon, and what gives us the ability to adapt to any environment
    2.18+where our interests lie.
    2.19+
    2.20+#+TOC: headlines 3
     3.1--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     3.2+++ b/mindset.org	Sun Aug 11 10:09:31 2024 -0400
     3.3@@ -0,0 +1,4 @@
     3.4+#+title: mindset
     3.5+#+author: Richard Westhaver
     3.6+#+description: A Reflection on the CC Mindset
     3.7+#+setupfile: ../../clean.theme
     4.1--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     4.2+++ b/pitch.org	Sun Aug 11 10:09:31 2024 -0400
     4.3@@ -0,0 +1,31 @@
     4.4+#+title: the big picture
     4.5+#+author: Richard Westhaver <ellis@rwest.io>
     4.6+#+setupfile: ../../clean.theme
     4.7+* Get Off of My Cloud
     4.8+  - industry has moved away from client-side, distributed compute in
     4.9+    favor of centralized server-side compute resources behind API
    4.10+    gateways.
    4.11+  - entire businesses are built on a single Cloud Provider and are
    4.12+    fundamentally incapable of moving off that Cloud.
    4.13+    - they /think/ in terms of that Provider. The Provider influences
    4.14+      all of their decisions.
    4.15+  - users control very little compute power
    4.16+    - personal computing hardware (consumer-grade) is limited in capability
    4.17+      - non-servicable architectures, planned obsolescence, closed firmware
    4.18+    - mainstream operating systems don't optimize for resource
    4.19+      efficiency - they maximize for the volume of telemetry data they
    4.20+      can collect and profit from
    4.21+
    4.22+* Death of the Programmer
    4.23+  - The role of the programmer is changing
    4.24+  - programmers are no longer required to understand how computers
    4.25+    work to have a successful career
    4.26+    - Cloud Providers wrap all low-level details in their own
    4.27+      proprietary vocabulary and APIs
    4.28+    - To program on the cloud, you need to use the Cloud vocabulary
    4.29+      and are discouraged from thinking of computers as they actually
    4.30+      exist in the real world
    4.31+  - Cloud Providers influence college cirruculums, replacing compute
    4.32+    and systems theory with courses designed to teach you how to
    4.33+    configure Cloud Services.
    4.34+
     5.1--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     5.2+++ b/readme.org	Sun Aug 11 10:09:31 2024 -0400
     5.3@@ -0,0 +1,12 @@
     5.4+#+title: Meta Docs
     5.5+#+author: Richard Westhaver
     5.6+#+email: ellis@rwest.io
     5.7+#+OPTIONS: ^:nil toc:nil num:nil html-postamble:nil
     5.8+#+EXPORT_FILE_NAME: index
     5.9+#+setupfile: ../../clean.theme
    5.10+* [[file:ulang.org][ulang]]
    5.11+* [[file:style.org][style]]
    5.12+* [[file:tech.org][tech]]
    5.13+* [[file:business.org][business]]
    5.14+* [[file:mindset.org][mindset]]
    5.15+* [[file:workflows.org][workflows]]
     6.1--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     6.2+++ b/style.org	Sun Aug 11 10:09:31 2024 -0400
     6.3@@ -0,0 +1,66 @@
     6.4+#+title: The Compiler Company Styleguide
     6.5+#+author: Richard Westhaver
     6.6+#+email: ellis@rwest.io
     6.7+#+setupfile: ../../clean.theme
     6.8+As an organization we maintain a styleguide[fn:1] which lists all of
     6.9+the style guidelines we use for our code. If you are contributing to
    6.10+one of our projects, you should review and understand the relevant
    6.11+sections below.
    6.12+
    6.13+You should also review the [[file:ulang.org][ulang]] document, which may shine some light
    6.14+on code comments and developer docs.
    6.15+
    6.16+[fn:1] https://google.github.io/styleguide/ 
    6.17+
    6.18+* General Programming
    6.19+- indent-offset = 2
    6.20+- max-line-width = 80
    6.21+- page-length ~ 32
    6.22+- module-length ~ 512
    6.23+- file-size ~ 1024
    6.24+
    6.25+- start every source-file with a header comment
    6.26+- use outline headings to organize your program
    6.27+- use ulang-comments as needed for referencing bugs, notes, etc.
    6.28+- inline documentation should be declarative. your code explains your
    6.29+  comments for you.
    6.30+- variables, imports, and exports belong at the top of a file
    6.31+- =main= functions belong at the bottom of a file
    6.32+- use LSP wherever possible (eglot, slime)
    6.33+* Common Lisp
    6.34+- prefer symbol docs to comments
    6.35+- use stdin/stdout/stderr correctly - see [[https://zenodo.org/records/3414191][CDR-11]]
    6.36+- always prefer =core= libraries over vendored dependencies
    6.37+- use the compiler built-ins - if a function or class is generally
    6.38+  useful, add it to the core
    6.39+- use conditions, restarts, and error handling where appropriate
    6.40+- save type declarations and hairy optimizations for when the API is
    6.41+  polished
    6.42+- don't be afraid of macros
    6.43+** Systems
    6.44+- define systems using keyword symbols
    6.45+- use slash instead of dash for path separation in system names: =:foo/bar=
    6.46+- define your test system in the same file with a name of: =:foo/tests=
    6.47+- where possible, avoid collisions with systems in Quicklisp
    6.48+** Packages
    6.49+- declare packages in a file named =pkg.lisp=
    6.50+- when multiple packages are being declared, consider a wrapper
    6.51+  package
    6.52+  - declare with ~UIOP:DEFINE-PACKAGE~ and ~:USE-REEXPORT~
    6.53+- package names are either the same as their system name or have the
    6.54+  system name as their root path.
    6.55+- use ~:NICKNAMES~ to declare alternative names for your package
    6.56+** CLOS
    6.57+- prefer =:default-initargs= over =:initform=.
    6.58+* Rust
    6.59+- always prefer =core= libraries to vendored dependencies
    6.60+- don't make =mod.rs= files
    6.61+  - use the =foo.rs=, =foo/*= pattern instead
    6.62+- derive =Debug= and =Clone= always
    6.63+- write a sensible =Display= impl
    6.64+- derive default methods for =Default=, =Hash=, =Copy=, etc where possible
    6.65+- use generics where appropriate: =foo<P:AsRef<Path>>(path:P){p.as_ref();}=
    6.66+* Emacs Lisp
    6.67+* Org-mode
    6.68+* Shell
    6.69+* Python
     7.1--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     7.2+++ b/tech.org	Sun Aug 11 10:09:31 2024 -0400
     7.3@@ -0,0 +1,66 @@
     7.4+#+title: tech
     7.5+#+author: Richard Westhaver
     7.6+#+email: ellis@rwest.io
     7.7+#+description: The Compiler Company Core Technologies
     7.8+#+setupfile: ../../clean.theme
     7.9+
    7.10+* OS
    7.11+We primarily support [[https://unix.org][Unix-based]] Operating Systems. Check
    7.12+project-specific docs for officially supported targets.
    7.13+
    7.14+Development and CI is ran on [[https://archlinux.org/][Arch Linux]] (btw).
    7.15+* Core
    7.16+** [[https://lisp-lang.org/][Lisp]]
    7.17+** [[https://www.rust-lang.org/][Rust]]
    7.18+** [[https://www.gnu.org/software/emacs/][Emacs]]
    7.19+* Libs
    7.20+** [[https://rocksdb.org/][rocksdb]]
    7.21+** [[https://archlinux.org/pacman/][pacman]]
    7.22+** [[https://docs.kernel.org/filesystems/btrfs.html][btrfs]]
    7.23+** [[https://tree-sitter.github.io/tree-sitter/][tree-sitter]]
    7.24+** [[https://kernel.dk/io_uring.pdf][uring]]
    7.25+** [[https://github.com/BLAKE3-team/BLAKE3-specs/blob/master/blake3.pdf][blake3]]
    7.26+* Extras
    7.27+** [[https://ngn.codeberg.page/k][k]]
    7.28+** [[https://mlochbaum.github.io/BQN/][BQN]]
    7.29+
    7.30+* Our Software
    7.31+The software provided by /The Compiler Company/ is a powerful but
    7.32+opinionated programming environment. It consists of a GNU/Linux
    7.33+kernel, some vendored programs and libraries, and a suite of custom
    7.34+software.
    7.35+
    7.36+The software is modular by design. You can pick and choose which
    7.37+components to embed in your own projects and you are encouraged to
    7.38+modify any part of the system to meet your goals. 
    7.39+
    7.40+In general, our software is designed for:
    7.41+- early adoption :: integrate research, protocols, libraries, and
    7.42+  hardware features from leading research orgs faster than anyone else
    7.43+- rapid development :: interaction, code introspection, tooling, and
    7.44+  automation built for prototyping at massive scale
    7.45+- power :: using our environment should feel like cheating - macros,
    7.46+  DSLs, and unmatched hackability
    7.47+
    7.48+** Langs
    7.49+/The Compiler Company/ is above all, a =Lisp Company=. The most
    7.50+powerful software requires the most powerful code.
    7.51+
    7.52+Lisp isn't enough though. =Rust= is our imperative language of choice
    7.53+at the time of writing and generally suited for system-level software
    7.54+components.
    7.55+
    7.56+We make use of the Steel Bank Common Lisp compiler (SBCL) and the
    7.57+nightly Rust compiler toolchain.
    7.58+
    7.59+** OS
    7.60+/The Compiler Company/ is a =Linux Company=. There may be minimal
    7.61+support for Darwin-based systems, but Microsoft Windows systems will
    7.62+never be officially supported.
    7.63+
    7.64+One of the /anti-goals/ of our software is ~portability~. For all of
    7.65+the features we optimize for, portability becomes a burden, especially
    7.66+with closed-source OS kernels. We are also explicitly driven to reduce
    7.67+consumer dependence on these closed-source systems, especially in a
    7.68+distributed network. They are simply unfit for use with the software
    7.69+we produce and the systems we build.
     8.1--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     8.2+++ b/ulang.org	Sun Aug 11 10:09:31 2024 -0400
     8.3@@ -0,0 +1,163 @@
     8.4+#+title: Universal Languages
     8.5+#+author: Richard Westhaver
     8.6+#+email: ellis@rwest.io
     8.7+#+OPTIONS: toc:t
     8.8+#+setupfile: ../../clean.theme
     8.9+
    8.10+This document describes a *U-Language* as described by the late great
    8.11+[[https://iep.utm.edu/haskell-brooks-curry/][Haskell Curry]]:
    8.12+
    8.13+#+begin_quote
    8.14+Every investigation, including the present one, has to be communicated
    8.15+from one person to another by means of language. It is expedient to
    8.16+begin our study by calling attention to this obvious fact, by giving a
    8.17+name to the language being used, and by being explicit about a few of
    8.18+its features. We shall call the language being used the
    8.19+U-Language. [...] There would be no point in calling attention to it,
    8.20+if it were not for the fact that language is more intimately related
    8.21+to our job than of most others.
    8.22+#+end_quote
    8.23+
    8.24+In this document, we will be calling attention to our own language -
    8.25+examining it, and describing how it works.
    8.26+
    8.27+Our job is to solve problems. Hard problems preferred. So we ought to
    8.28+pay close attention to the language we use because it brings the
    8.29+reader and writer /closer/ to the problem at hand.
    8.30+
    8.31+For starters, we are primarily concerned with /written languages/ like
    8.32+the one you're reading now. We will skip past the obvious details -
    8.33+English is our primary form of communication for example. The line you
    8.34+are reading currently is a sentence which is part of a paragraph.
    8.35+
    8.36+There are some non-obvious questions which deserve inquiry though.
    8.37+
    8.38+- *Who is this for?* \\
    8.39+  This document is for authors and readers alike. It is a loose
    8.40+  specification, but also serves as introductory material into our
    8.41+  communication and design philosophy.
    8.42+  
    8.43+- *What is this for?* \\
    8.44+  The purpose of this document is to provide a /standard of
    8.45+  communication/.
    8.46+
    8.47+  All sources we write attempt to conform to this standard but this is
    8.48+  not strictly enforced. If there is a reason to not comply with a
    8.49+  rule, it is already broken.
    8.50+
    8.51+* Org Mode
    8.52+:PROPERTIES:
    8.53+:ID: 98a02bb2-3f39-49c6-898a-68ccd8f3cbe1
    8.54+:END:
    8.55+[[https://www.gnu.org/software/emacs/][GNU Emacs]] is our text editor, so naturally [[https://orgmode.org/][Org Mode]] is our word
    8.56+processor.
    8.57+
    8.58+If you are already familiar with Emacs and Org-Mode, I recommend
    8.59+opening the source of this document in Emacs and following along.
    8.60+
    8.61+If not, I recommend browsing through the [[https://orgmode.org/worg/][Worg resources]], but we won't
    8.62+be getting too deep into tribal hacker knowledge of Emacs.
    8.63+
    8.64+What's important to know is this: There is /Org Syntax/ and
    8.65+/Org-mode/ - these are different things.
    8.66+
    8.67+Our =ulang= is almost /exclusively/ based on /Org Syntax/ and we are
    8.68+not concerned about /Org-mode/ the application in this document.
    8.69+
    8.70+* ulang
    8.71+:PROPERTIES:
    8.72+:ID: ulang
    8.73+:END:
    8.74+As the title suggest we refer to our *U-Language* as *ulang*. Each
    8.75+section of this document describes a feature.
    8.76+** Outlines
    8.77+In Org, headings can be summarize as any line starting with a star: =*
    8.78+H1=. Headings can be nested or 'demoted' by prepending another star:
    8.79+=** H2=.
    8.80+
    8.81+This is a useful pattern which we apply outside of Org - most commonly
    8.82+in our code comments.
    8.83+
    8.84+In our source code, we use the comment character instead of a star:
    8.85+#+begin_src lisp
    8.86+;;; foo
    8.87+(print "H1") ;; just an inline comment
    8.88+;;;; bar
    8.89+(print "H2")
    8.90+;;; baz
    8.91+(print "H1")
    8.92+#+end_src
    8.93+
    8.94+A collection of /headings/ is what we call an *Outline* - which is
    8.95+also the name of the major-mode utilized for this feature and of
    8.96+course - what Org itself is derived from.
    8.97+
    8.98+** Keywords
    8.99+:PROPERTIES:
   8.100+:ID: 2cadda9a-22a3-4b42-ad4e-d7a774f74cba
   8.101+:END:
   8.102+
   8.103+The following keywords indicate the state of an element. They often
   8.104+appear as the first word in a heading to indicate a [[*Tasks][Task]].
   8.105+
   8.106+- TBD :: A task to be done at a later date.
   8.107+- TODO :: A task yet to be done.
   8.108+- FIXME :: Item that needs fixing.
   8.109+- WIP :: Work In Progress task.
   8.110+- WAIT :: A suspended task.
   8.111+- DEAD :: Item that will not be completed.
   8.112+- DONE :: Completed task.
   8.113+- BUG :: Designate a bug item.
   8.114+- IDEA :: Designate an idea item.
   8.115+- NOTE :: Designates a note item.
   8.116+- DRAFT :: Designates a draft item.
   8.117+- COMMENT :: A 'commented' item.
   8.118+** Tasks
   8.119+Tasks as they are known in Org, usually consist of a heading that
   8.120+starts with a [[#2cadda9a-22a3-4b42-ad4e-d7a774f74cba][Keyword]]. Here we describe some additional sections and
   8.121+metadata which are present in our collection of tasks.
   8.122+
   8.123+Our task management system is roughly a hybrid of two more
   8.124+conventional methods: GTD and Agile. For convenience I will describe
   8.125+these styles and how I use them separately, but the concepts may be
   8.126+spliced differently in real tasks.
   8.127+
   8.128+- *GTD* \\
   8.129+- *Agile* \\
   8.130+  It's a dirty word in some tech circles - the dreaded PIs, daily
   8.131+  standups, and still nobody knows what's going on, Oh my! Do not
   8.132+  worry. For the most part we just borrow the vocabulary.
   8.133+
   8.134+  Our /Agile/ workflow consists of roadmaps, features (epics/ARTs),
   8.135+  issues (user stories), and of course, tasks.
   8.136+** IDs
   8.137+We reference two different types of identifiers in documentation:
   8.138+- UUID :: ID property
   8.139+- User-defined :: CUSTOM_ID property
   8.140+
   8.141+Most of the time these Ids don't add any information for the reader -
   8.142+the UUIDs are used to index and graph documents, CUSTOM_IDs are for
   8.143+convenience but are rarely necessary given the many ways of
   8.144+identifying a headline.
   8.145+** Macros
   8.146+:PROPERTIES:
   8.147+:ID: cdb4976b-1d0d-49df-bfb1-3dbd5d99590e
   8.148+:END:
   8.149+Several *global* [[https://orgmode.org/manual/Macro-Replacement.html][Org Macros]] are used throughout our documents. They are listed
   8.150+here for convenience.
   8.151+
   8.152+#+name: ulang-macros
   8.153+#+begin_src emacs-lisp :exports both :results replace pp
   8.154+  org-export-global-macros
   8.155+#+end_src
   8.156+
   8.157+#+RESULTS: ulang-macros
   8.158+: (("header" .
   8.159+:   "#+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")
   8.160+:  ("opts" . "#+OPTIONS: $1\n"))
   8.161+
   8.162+Macros /are not expanded/ in source files - you will see them in the
   8.163+form ={{{NAME(ARGS)}}}=. You will need the relevant macro definition
   8.164+(in =ulang.el=) in order to use some Org-Mode functions (org-export)
   8.165+with our docs.
   8.166+
     9.1--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     9.2+++ b/workflows.org	Sun Aug 11 10:09:31 2024 -0400
     9.3@@ -0,0 +1,17 @@
     9.4+#+title: meta/workflows
     9.5+#+author: Richard Westhaver
     9.6+#+email: ellis@rwest.io
     9.7+#+description: Meta Workflows
     9.8+#+setupfile: ../../clean.theme
     9.9+
    9.10+* Task Management
    9.11+
    9.12+* Project Management
    9.13+
    9.14+* Roadmap
    9.15+
    9.16+* Source Code Management
    9.17+
    9.18+* Data Management
    9.19+
    9.20+* Resource Management