changeset 16: |
61204f8b2ff8 |
parent 15: |
563b82fb73be |
child 17: |
b6380832df99 |
author: |
ellis <ellis@rwest.io> |
date: |
Wed, 06 Dec 2023 23:27:43 -0500 |
files: |
hello-world.org |
description: |
beep boop |
1.1--- a/hello-world.org Mon Nov 27 18:25:26 2023 -0500
1.2+++ b/hello-world.org Wed Dec 06 23:27:43 2023 -0500
1.3@@ -1,63 +1,123 @@
1.4 {{{header(hello world,
1.5 Richard Westhaver,
1.6 ellis@rwest.io)}}}
1.7+#+options: toc:t
1.8+* Introduction
1.9+Hello World.
1.10
1.11-My name is Richard. I'm a 29yo, US-based computer programmer and today
1.12-marks the birth of my first company: /The Compiler Company/.
1.13+Today I would like to share something I've been working on for the
1.14+past few months, but has been on my mind for a few years.
1.15+
1.16+** On Computers
1.17+First, let's talk about computers. (beep boop)
1.18+
1.19+If you've met me in the past decade, you probably know that I am
1.20+extremely passionate about computers. Let me first explain why.
1.21+
1.22+On the most basic level computers are little (or big) machines that
1.23+can be programmed to do things, or /compute/ if we're being
1.24+technical.[fn:1]
1.25+
1.26+They host and provide access to the Internet, which is a pretty big
1.27+thing, but they do little things too like unlock your car door and
1.28+tell your microwave to beep at you. They solve problems. Big or small.
1.29+
1.30+They're also /everywhere/ - which can be scary to think about, but
1.31+ultimately helps propel us into the future.
1.32+
1.33+There's something pretty cool about that - when you look at the
1.34+essence of computation. There are endless quantities of these machines
1.35+which follow the same basic rules and can be used to solve /real/
1.36+problems.
1.37+
1.38+*** The Programmer
1.39+Now, let us consider the /programmer/. They have power. /real/
1.40+power. They understand the language of computers, can whisper to them
1.41+in various dialects. It can be intimidating to witness until you
1.42+realize how often the programmer says the wrong thing - a bug.
1.43+
1.44+In reality, the programmer has a symbiotic relationship with
1.45+computers. Good programmers understand this relationship well.
1.46
1.47+#+begin_annecdote
1.48+One day after I got my first job at a software company, I remember
1.49+being on an all-hands meeting due to a client service outage. We had
1.50+some management, our lead devs, product team, and one curious looking
1.51+man who happened to be our lead IT consultant who had just joined. He
1.52+was sitting up on a hotel bed, shirtless, vaping an e-cig, typing
1.53+away in what I can only imagine was a shell prompt.
1.54+
1.55+After several minutes he took a swig from a bottle of Coke and said
1.56+"Node 6 is sick." then a few seconds later our services were
1.57+restored. For the next hour on the call he explained what happened and
1.58+why, but that particular phrase always stuck with me. He didn't say
1.59+Node 6 was down, or had an expired cert - his diagnosis was that /it/
1.60+was /sick/.
1.61+#+end_annecdote
1.62+
1.63+The more you work closely with computers, the more you start to think
1.64+of them this way. You don't start screaming when the computer does the
1.65+wrong thing, you figure out what's wrong and learn from it. With
1.66+experience, you start to understand the different behaviors of the
1.67+machines you work with. I like to call this /Machine Empathy/.
1.68+
1.69+*** Programs
1.70+I already mentioned bugs - I write plenty of those, but usually I try
1.71+to write /programs/. Programs to me are like poetry. I like to think
1.72+they are for the computer too.
1.73+
1.74+Just like computers, /computer programs/ come in different shapes and
1.75+sizes but in basic terms they are sets of instructions used to control
1.76+a computer.
1.77+
1.78+You can write programs to do anything - when I first started, my
1.79+programs made music. The program was a means to an end. Over time, I
1.80+started to see the program as something much more. I saw it as the
1.81+music itself.
1.82+
1.83+[fn:1] ... perform computations
1.84
1.85 * The Compiler Company
1.86-I intend for /The Compiler Company/ to be a hub for developing various
1.87-interconnected products and services based on cutting-edge software
1.88-and research.
1.89+Without further ado, I'd like to announce /The Compiler Company,
1.90+LLC/. It is my first venture into the encorporated world but won't be
1.91+my last, because what I'm really building is a company incubator. The
1.92+purpose of /The Compiler Company/ is to /compile/ /companies/.
1.93
1.94-I'm the sole owner and operator and will probably keep it that way for
1.95-quite some time. My intention is to operate at minimal cost while I
1.96-build prototypes.
1.97+More specifically, I'm writing a software suite which specializes in
1.98+building, operating, and automating companies.
1.99
1.100-** Software
1.101+The software isn't for everyone - modules will be rewritten
1.102+frequently, code may be terse in places, we use specialized and highly
1.103+customized tools, custom compilers, and rely on advanced CPU and
1.104+storage hardware features. It's for a specific type of person - an
1.105+/operator/ if you will, who uses the library and programs for
1.106+rapid-development of their own programs (or companies).
1.107
1.108-The software provided by /The Compiler Company/ is a powerful but
1.109-opinionated programming environment. It consists of a GNU/Linux
1.110-kernel, some vendored programs and libraries, and a suite of custom
1.111-software.
1.112-
1.113-The software is modular by design. You can pick and choose which
1.114-components to embed in your own projects and you are encouraged to
1.115-modify any part of the system to meet your goals.
1.116+In addition to software, I'm build a robust infrastructure to host our
1.117+services, support our projects, and most importantly - consume
1.118+information.
1.119
1.120-In general, our software is designed for:
1.121-- early adoption :: integrate research, protocols, libraries, and
1.122- hardware features from leading research orgs faster than anyone else
1.123-- rapid development :: interaction, code introspection, tooling, and
1.124- automation built for prototyping at massive scale
1.125-- power :: using our environment should feel like cheating - macros,
1.126- DSLs, and unmatched hackability
1.127+Something that is missing from many organizations big or large, is an
1.128+effective way to store and access information, even about their own
1.129+org.
1.130
1.131-*** Langs
1.132-/The Compiler Company/ is above all, a =Lisp Company=. The most
1.133-powerful software requires the most powerful code.
1.134-
1.135-Lisp isn't enough though. =Rust= is our imperative language of choice
1.136-at the time of writing and generally suited for system-level software
1.137-components.
1.138+It can be difficult problem to solve - usually there's the official
1.139+one, say Microsoft Sharepoint and then the list of unofficial sources
1.140+which becomes tribal corporate hacker knowledge. Maybe the unofficial
1.141+ones are more current, or are annotated nicely, but their very
1.142+existence breaks the system. There's no longer a single source of
1.143+truth.
1.144
1.145-We make use of the Steel Bank Common Lisp compiler (SBCL) and the
1.146-nightly Rust compiler toolchain.
1.147-
1.148-*** OS
1.149-/The Compiler Company/ is a =Linux Company=. There may be minimal
1.150-support for Darwin-based systems, but Microsoft Windows systems will
1.151-never be officially supported.
1.152+My priority in this department is writing services which process and
1.153+store information from a variety of sources in a distributed knowledge
1.154+graph. The graph can later be queried to access information on-demand.
1.155
1.156-One of the /anti-goals/ of our software is ~portability~. For all of
1.157-the features we optimize for, portability becomes a burden, especially
1.158-with closed-source OS kernels. We are also explicitly driven to reduce
1.159-consumer dependence on these closed-source systems, especially in a
1.160-distributed network. They are simply unfit for use with the software
1.161-we produce.
1.162-**** TODO Windows Subsystem for Linux (WSL)
1.163-- State "TODO" from [2023-11-26 Sun 19:18]
1.164+My idea of infrastructure is in fact to build my own Cloud. Needless
1.165+to say I don't have an O365 subscription, and wherever possible I'll
1.166+be relying on hardware I have physical access to. I'm not opposed to
1.167+cloud services at large but based on principle I like to think we
1.168+shouldn't be built on them.
1.169+
1.170 * Next Steps
1.171 We have a long way to go. The important thing is to keep up the
1.172 momentum. Before the start of 2024 you can expect another update on