changelog shortlog graph tags branches files raw help

Mercurial > org > blog / changeset: beep boop

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