changelog shortlog graph tags branches changeset file revisions annotate raw help

Mercurial > org > blog / hello-world.org

revision 18: d77884ec2b44
parent 17: b6380832df99
child 19: 84097475a40a
     1.1--- a/hello-world.org	Tue Dec 12 21:50:58 2023 -0500
     1.2+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.3@@ -1,90 +0,0 @@
     1.4-{{{header(hello world,
     1.5-Richard Westhaver,
     1.6-ellis@rwest.io)}}}
     1.7-#+options: toc:t h:1
     1.8-* Introduction
     1.9-Hello World,
    1.10-
    1.11-I've worked in and around software systems for many years. Throughout
    1.12-my journey I've worked with some incredibly capable programmers,
    1.13-leaders, sales professionals, and curious minds from all walks of
    1.14-life. I've been fortunate to witness some highly effective teams on
    1.15-complex projects deliver under impossible constraints. I've also seen
    1.16-the other side - where a team isn't effective for one reason or
    1.17-another, even on simple problems.
    1.18-
    1.19-My work as of late is stemmed from the simple premise that there
    1.20-exists an /environment/ in which a team can be highly effective. My
    1.21-goal is to find those local optimums in my areas of interest where
    1.22-such an environment can be built and /great work/ can be done.
    1.23-
    1.24-In my professional experience, it is becoming much more difficult to
    1.25-build an /environment/ where people can be effective. There are
    1.26-several contributing factors which muddy the waters but it all boils
    1.27-down to capabilities and politics.
    1.28-
    1.29-Your environment must be capable. It must provide everything your team
    1.30-needs now and /may/ need in the future. If the environment doesn't
    1.31-provide something, you need to provide all building materials for it -
    1.32-/even if you don't know what you're building yet/.
    1.33-
    1.34-To build a capable environment you need to discard politics from your
    1.35-decision-making process. In other words, drop the ego. This requires a
    1.36-high degree of introspection. It's hard enough for individuals, let
    1.37-alone an entire team or company. In the world of software we tend to
    1.38-have two camps - the pro-dev who prefers ergonomic but proprietary
    1.39-tools and the foss-dev who prefers clunky but open-source
    1.40-alternatives. You can't limit your environment based on the camp you
    1.41-align with.
    1.42-
    1.43-* The Compiler Company
    1.44-Without further ado, I'd like to announce /The Compiler Company,
    1.45-LLC/. The purpose of /The Compiler Company/ is to /compile/
    1.46-/companies/.
    1.47-
    1.48-More specifically, I'm writing a software suite which specializes in
    1.49-building environments.
    1.50-
    1.51-The software isn't for everyone - modules will be rewritten
    1.52-frequently, code may be terse in places, with specialized tools,
    1.53-custom compilers, and advanced hardware features. It's for a specific
    1.54-type of programmer - an /operator/ if you will, who may use it for
    1.55-rapid-development of their own programs (or companies). The barrier to
    1.56-entry is high.
    1.57-
    1.58-At this stage, I'm interested in *systems*, *processes*, and
    1.59-*protocols* - not *products* and *services*. /The Compiler Company/'s
    1.60-most valuable assett its ideas. A /demo/ system is being written which
    1.61-serves as a reference implementation but this is currently designed
    1.62-for internal benchmarking.
    1.63-
    1.64-** [[https://compiler.company/docs/core][core]]
    1.65-The =core= is a collection of applications and libraries built from
    1.66-the bottom-up with modularity in mind. It's primarily written in
    1.67-Common Lisp and Rust with minimal external dependencies.
    1.68-
    1.69-*Lisp* is a first-class citizen of our internal environment. We
    1.70-currently rely on the Steel Bank Common Lisp compiler but even if we
    1.71-switch to a different implementation there will always be Lisp. It's
    1.72-our dedicated high-level programming language (and much more, as we'll
    1.73-explain later).
    1.74-
    1.75-*Rust* is second-class. It meets an arbitrary criteria for what I
    1.76-would consider /good enough/ but there are many contenders including
    1.77-C, C++, and Zig. It helps fill the gaps in our Lisp environment which
    1.78-would be extremely difficult to implement from scratch like
    1.79-eliminating GC, compile-time type safety, cross-compilation features,
    1.80-and advanced networking protocols. The community support and my
    1.81-personal experience with the language are also contributing
    1.82-factors. The trade-off is that we need to support another language
    1.83-environment in parallel to Lisp.
    1.84-
    1.85-** [[https://compiler.company/docs/infra][infra]]
    1.86-Unfortunately, ideas can't host themselves. We need a robust
    1.87-infrastructure to compensate for this. The project =infra= contains
    1.88-scripts for building and maintaing the entire corporate
    1.89-infrastructure.
    1.90-
    1.91-We typically host services on Arch Linux. Podman and QEMU are used for
    1.92-virtualization. Modules can be built and deployed separately to make
    1.93-host-migration easier as we expand.