changelog shortlog graph tags branches changeset files file revisions raw help

Mercurial > org > blog / annotate hello-world.org

changeset 17: b6380832df99
parent: 61204f8b2ff8
author: ellis <ellis@rwest.io>
date: Tue, 12 Dec 2023 21:50:58 -0500
permissions: -rw-r--r--
description: update
14
5747098f52b4 blog update
ellis <ellis@rwest.io>
parents: 13
diff changeset
1
 {{{header(hello world,
5747098f52b4 blog update
ellis <ellis@rwest.io>
parents: 13
diff changeset
2
 Richard Westhaver,
15
563b82fb73be hello-world updates
ellis <ellis@rwest.io>
parents: 14
diff changeset
3
 ellis@rwest.io)}}}
17
ellis <ellis@rwest.io>
parents: 16
diff changeset
4
 #+options: toc:t h:1
16
61204f8b2ff8 beep boop
ellis <ellis@rwest.io>
parents: 15
diff changeset
5
 * Introduction
17
ellis <ellis@rwest.io>
parents: 16
diff changeset
6
 Hello World,
16
61204f8b2ff8 beep boop
ellis <ellis@rwest.io>
parents: 15
diff changeset
7
 
17
ellis <ellis@rwest.io>
parents: 16
diff changeset
8
 I've worked in and around software systems for many years. Throughout
ellis <ellis@rwest.io>
parents: 16
diff changeset
9
 my journey I've worked with some incredibly capable programmers,
ellis <ellis@rwest.io>
parents: 16
diff changeset
10
 leaders, sales professionals, and curious minds from all walks of
ellis <ellis@rwest.io>
parents: 16
diff changeset
11
 life. I've been fortunate to witness some highly effective teams on
ellis <ellis@rwest.io>
parents: 16
diff changeset
12
 complex projects deliver under impossible constraints. I've also seen
ellis <ellis@rwest.io>
parents: 16
diff changeset
13
 the other side - where a team isn't effective for one reason or
ellis <ellis@rwest.io>
parents: 16
diff changeset
14
 another, even on simple problems.
16
61204f8b2ff8 beep boop
ellis <ellis@rwest.io>
parents: 15
diff changeset
15
 
17
ellis <ellis@rwest.io>
parents: 16
diff changeset
16
 My work as of late is stemmed from the simple premise that there
ellis <ellis@rwest.io>
parents: 16
diff changeset
17
 exists an /environment/ in which a team can be highly effective. My
ellis <ellis@rwest.io>
parents: 16
diff changeset
18
 goal is to find those local optimums in my areas of interest where
ellis <ellis@rwest.io>
parents: 16
diff changeset
19
 such an environment can be built and /great work/ can be done.
15
563b82fb73be hello-world updates
ellis <ellis@rwest.io>
parents: 14
diff changeset
20
 
17
ellis <ellis@rwest.io>
parents: 16
diff changeset
21
 In my professional experience, it is becoming much more difficult to
ellis <ellis@rwest.io>
parents: 16
diff changeset
22
 build an /environment/ where people can be effective. There are
ellis <ellis@rwest.io>
parents: 16
diff changeset
23
 several contributing factors which muddy the waters but it all boils
ellis <ellis@rwest.io>
parents: 16
diff changeset
24
 down to capabilities and politics.
16
61204f8b2ff8 beep boop
ellis <ellis@rwest.io>
parents: 15
diff changeset
25
 
17
ellis <ellis@rwest.io>
parents: 16
diff changeset
26
 Your environment must be capable. It must provide everything your team
ellis <ellis@rwest.io>
parents: 16
diff changeset
27
 needs now and /may/ need in the future. If the environment doesn't
ellis <ellis@rwest.io>
parents: 16
diff changeset
28
 provide something, you need to provide all building materials for it -
ellis <ellis@rwest.io>
parents: 16
diff changeset
29
 /even if you don't know what you're building yet/.
16
61204f8b2ff8 beep boop
ellis <ellis@rwest.io>
parents: 15
diff changeset
30
 
17
ellis <ellis@rwest.io>
parents: 16
diff changeset
31
 To build a capable environment you need to discard politics from your
ellis <ellis@rwest.io>
parents: 16
diff changeset
32
 decision-making process. In other words, drop the ego. This requires a
ellis <ellis@rwest.io>
parents: 16
diff changeset
33
 high degree of introspection. It's hard enough for individuals, let
ellis <ellis@rwest.io>
parents: 16
diff changeset
34
 alone an entire team or company. In the world of software we tend to
ellis <ellis@rwest.io>
parents: 16
diff changeset
35
 have two camps - the pro-dev who prefers ergonomic but proprietary
ellis <ellis@rwest.io>
parents: 16
diff changeset
36
 tools and the foss-dev who prefers clunky but open-source
ellis <ellis@rwest.io>
parents: 16
diff changeset
37
 alternatives. You can't limit your environment based on the camp you
ellis <ellis@rwest.io>
parents: 16
diff changeset
38
 align with.
10
5ae7a67b209e blog update
ellis <ellis@rwest.io>
parents: 9
diff changeset
39
 
5ae7a67b209e blog update
ellis <ellis@rwest.io>
parents: 9
diff changeset
40
 * The Compiler Company
16
61204f8b2ff8 beep boop
ellis <ellis@rwest.io>
parents: 15
diff changeset
41
 Without further ado, I'd like to announce /The Compiler Company,
17
ellis <ellis@rwest.io>
parents: 16
diff changeset
42
 LLC/. The purpose of /The Compiler Company/ is to /compile/
ellis <ellis@rwest.io>
parents: 16
diff changeset
43
 /companies/.
10
5ae7a67b209e blog update
ellis <ellis@rwest.io>
parents: 9
diff changeset
44
 
16
61204f8b2ff8 beep boop
ellis <ellis@rwest.io>
parents: 15
diff changeset
45
 More specifically, I'm writing a software suite which specializes in
17
ellis <ellis@rwest.io>
parents: 16
diff changeset
46
 building environments.
12
6b286d6cf099 org publishing
ellis <ellis@rwest.io>
parents: 11
diff changeset
47
 
16
61204f8b2ff8 beep boop
ellis <ellis@rwest.io>
parents: 15
diff changeset
48
 The software isn't for everyone - modules will be rewritten
17
ellis <ellis@rwest.io>
parents: 16
diff changeset
49
 frequently, code may be terse in places, with specialized tools,
ellis <ellis@rwest.io>
parents: 16
diff changeset
50
 custom compilers, and advanced hardware features. It's for a specific
ellis <ellis@rwest.io>
parents: 16
diff changeset
51
 type of programmer - an /operator/ if you will, who may use it for
ellis <ellis@rwest.io>
parents: 16
diff changeset
52
 rapid-development of their own programs (or companies). The barrier to
ellis <ellis@rwest.io>
parents: 16
diff changeset
53
 entry is high.
13
ae3d87d236cf hello-world update
ellis <ellis@rwest.io>
parents: 12
diff changeset
54
 
17
ellis <ellis@rwest.io>
parents: 16
diff changeset
55
 At this stage, I'm interested in *systems*, *processes*, and
ellis <ellis@rwest.io>
parents: 16
diff changeset
56
 *protocols* - not *products* and *services*. /The Compiler Company/'s
ellis <ellis@rwest.io>
parents: 16
diff changeset
57
 most valuable assett its ideas. A /demo/ system is being written which
ellis <ellis@rwest.io>
parents: 16
diff changeset
58
 serves as a reference implementation but this is currently designed
ellis <ellis@rwest.io>
parents: 16
diff changeset
59
 for internal benchmarking.
15
563b82fb73be hello-world updates
ellis <ellis@rwest.io>
parents: 14
diff changeset
60
 
17
ellis <ellis@rwest.io>
parents: 16
diff changeset
61
 ** [[https://compiler.company/docs/core][core]]
ellis <ellis@rwest.io>
parents: 16
diff changeset
62
 The =core= is a collection of applications and libraries built from
ellis <ellis@rwest.io>
parents: 16
diff changeset
63
 the bottom-up with modularity in mind. It's primarily written in
ellis <ellis@rwest.io>
parents: 16
diff changeset
64
 Common Lisp and Rust with minimal external dependencies.
10
5ae7a67b209e blog update
ellis <ellis@rwest.io>
parents: 9
diff changeset
65
 
17
ellis <ellis@rwest.io>
parents: 16
diff changeset
66
 *Lisp* is a first-class citizen of our internal environment. We
ellis <ellis@rwest.io>
parents: 16
diff changeset
67
 currently rely on the Steel Bank Common Lisp compiler but even if we
ellis <ellis@rwest.io>
parents: 16
diff changeset
68
 switch to a different implementation there will always be Lisp. It's
ellis <ellis@rwest.io>
parents: 16
diff changeset
69
 our dedicated high-level programming language (and much more, as we'll
ellis <ellis@rwest.io>
parents: 16
diff changeset
70
 explain later).
10
5ae7a67b209e blog update
ellis <ellis@rwest.io>
parents: 9
diff changeset
71
 
17
ellis <ellis@rwest.io>
parents: 16
diff changeset
72
 *Rust* is second-class. It meets an arbitrary criteria for what I
ellis <ellis@rwest.io>
parents: 16
diff changeset
73
 would consider /good enough/ but there are many contenders including
ellis <ellis@rwest.io>
parents: 16
diff changeset
74
 C, C++, and Zig. It helps fill the gaps in our Lisp environment which
ellis <ellis@rwest.io>
parents: 16
diff changeset
75
 would be extremely difficult to implement from scratch like
ellis <ellis@rwest.io>
parents: 16
diff changeset
76
 eliminating GC, compile-time type safety, cross-compilation features,
ellis <ellis@rwest.io>
parents: 16
diff changeset
77
 and advanced networking protocols. The community support and my
ellis <ellis@rwest.io>
parents: 16
diff changeset
78
 personal experience with the language are also contributing
ellis <ellis@rwest.io>
parents: 16
diff changeset
79
 factors. The trade-off is that we need to support another language
ellis <ellis@rwest.io>
parents: 16
diff changeset
80
 environment in parallel to Lisp.
16
61204f8b2ff8 beep boop
ellis <ellis@rwest.io>
parents: 15
diff changeset
81
 
15
563b82fb73be hello-world updates
ellis <ellis@rwest.io>
parents: 14
diff changeset
82
 ** [[https://compiler.company/docs/infra][infra]]
17
ellis <ellis@rwest.io>
parents: 16
diff changeset
83
 Unfortunately, ideas can't host themselves. We need a robust
ellis <ellis@rwest.io>
parents: 16
diff changeset
84
 infrastructure to compensate for this. The project =infra= contains
ellis <ellis@rwest.io>
parents: 16
diff changeset
85
 scripts for building and maintaing the entire corporate
ellis <ellis@rwest.io>
parents: 16
diff changeset
86
 infrastructure.
ellis <ellis@rwest.io>
parents: 16
diff changeset
87
 
ellis <ellis@rwest.io>
parents: 16
diff changeset
88
 We typically host services on Arch Linux. Podman and QEMU are used for
ellis <ellis@rwest.io>
parents: 16
diff changeset
89
 virtualization. Modules can be built and deployed separately to make
ellis <ellis@rwest.io>
parents: 16
diff changeset
90
 host-migration easier as we expand.