changelog shortlog graph tags branches changeset files file revisions raw help

Mercurial > org / annotate notes/20231212.org

changeset 20: 3d1d5115a5b7
author: ellis <ellis@rwest.io>
date: Tue, 12 Dec 2023 21:51:28 -0500
permissions: -rw-r--r--
description: notes
20
ellis <ellis@rwest.io>
parents:
diff changeset
1
 * On Computers
ellis <ellis@rwest.io>
parents:
diff changeset
2
 If you've met me in the past decade, you probably know that I am
ellis <ellis@rwest.io>
parents:
diff changeset
3
 extremely passionate about computers. Let me first explain why.
ellis <ellis@rwest.io>
parents:
diff changeset
4
 
ellis <ellis@rwest.io>
parents:
diff changeset
5
 On the most basic level computers are little (or big) machines that
ellis <ellis@rwest.io>
parents:
diff changeset
6
 can be programmed to do things, or /compute/ if we're being
ellis <ellis@rwest.io>
parents:
diff changeset
7
 technical.[fn:1]
ellis <ellis@rwest.io>
parents:
diff changeset
8
 
ellis <ellis@rwest.io>
parents:
diff changeset
9
 They host and provide access to the Internet, which is a pretty big
ellis <ellis@rwest.io>
parents:
diff changeset
10
 thing, but they do little things too like unlock your car door and
ellis <ellis@rwest.io>
parents:
diff changeset
11
 tell your microwave to beep at you. They solve problems. Big or small.
ellis <ellis@rwest.io>
parents:
diff changeset
12
 
ellis <ellis@rwest.io>
parents:
diff changeset
13
 They're also /everywhere/ - which can be scary to think about, but
ellis <ellis@rwest.io>
parents:
diff changeset
14
 ultimately helps propel us into the future.
ellis <ellis@rwest.io>
parents:
diff changeset
15
 
ellis <ellis@rwest.io>
parents:
diff changeset
16
 There's something pretty cool about that - when you look at the
ellis <ellis@rwest.io>
parents:
diff changeset
17
 essence of computation. There are endless quantities of these machines
ellis <ellis@rwest.io>
parents:
diff changeset
18
 which follow the same basic rules and can be used to solve /real/
ellis <ellis@rwest.io>
parents:
diff changeset
19
 problems.
ellis <ellis@rwest.io>
parents:
diff changeset
20
 
ellis <ellis@rwest.io>
parents:
diff changeset
21
 ** The Programmer
ellis <ellis@rwest.io>
parents:
diff changeset
22
 Now, let us consider the /programmer/. They have power. /real/
ellis <ellis@rwest.io>
parents:
diff changeset
23
 power. They understand the language of computers, can whisper to them
ellis <ellis@rwest.io>
parents:
diff changeset
24
 in various dialects. It can be intimidating to witness until you
ellis <ellis@rwest.io>
parents:
diff changeset
25
 realize how often the programmer says the wrong thing - a bug.
ellis <ellis@rwest.io>
parents:
diff changeset
26
 
ellis <ellis@rwest.io>
parents:
diff changeset
27
 In reality, the programmer has a symbiotic relationship with
ellis <ellis@rwest.io>
parents:
diff changeset
28
 computers. Good programmers understand this relationship well.
ellis <ellis@rwest.io>
parents:
diff changeset
29
 
ellis <ellis@rwest.io>
parents:
diff changeset
30
 #+begin_annecdote
ellis <ellis@rwest.io>
parents:
diff changeset
31
 One day after I got my first job at a software company, I remember
ellis <ellis@rwest.io>
parents:
diff changeset
32
 being on an all-hands meeting due to a client service outage. We had
ellis <ellis@rwest.io>
parents:
diff changeset
33
 some management, our lead devs, product team, and one curious looking
ellis <ellis@rwest.io>
parents:
diff changeset
34
 man who happened to be our lead IT consultant who had just joined. He
ellis <ellis@rwest.io>
parents:
diff changeset
35
 was sitting up on a hotel bed, shirtless, vaping an e-cig, typing
ellis <ellis@rwest.io>
parents:
diff changeset
36
 away in what I can only imagine was a shell prompt.
ellis <ellis@rwest.io>
parents:
diff changeset
37
 
ellis <ellis@rwest.io>
parents:
diff changeset
38
 After several minutes he took a swig from a bottle of Coke and said
ellis <ellis@rwest.io>
parents:
diff changeset
39
 "Node 6 is sick." then a few seconds later our services were
ellis <ellis@rwest.io>
parents:
diff changeset
40
 restored. For the next hour on the call he explained what happened and
ellis <ellis@rwest.io>
parents:
diff changeset
41
 why, but that particular phrase always stuck with me. He didn't say
ellis <ellis@rwest.io>
parents:
diff changeset
42
 Node 6 was down, or had an expired cert - his diagnosis was that /it/
ellis <ellis@rwest.io>
parents:
diff changeset
43
 was /sick/. 
ellis <ellis@rwest.io>
parents:
diff changeset
44
 #+end_annecdote
ellis <ellis@rwest.io>
parents:
diff changeset
45
 
ellis <ellis@rwest.io>
parents:
diff changeset
46
 The more you work closely with computers, the more you start to think
ellis <ellis@rwest.io>
parents:
diff changeset
47
 of them this way. You don't start screaming when the computer does the
ellis <ellis@rwest.io>
parents:
diff changeset
48
 wrong thing, you figure out what's wrong and learn from it. With
ellis <ellis@rwest.io>
parents:
diff changeset
49
 experience, you start to understand the different behaviors of the
ellis <ellis@rwest.io>
parents:
diff changeset
50
 machines you work with. I like to call this /Machine Empathy/.
ellis <ellis@rwest.io>
parents:
diff changeset
51
 
ellis <ellis@rwest.io>
parents:
diff changeset
52
 ** Programs
ellis <ellis@rwest.io>
parents:
diff changeset
53
 I already mentioned bugs - I write plenty of those, but usually I try
ellis <ellis@rwest.io>
parents:
diff changeset
54
 to write /programs/. Programs to me are like poetry. I like to think
ellis <ellis@rwest.io>
parents:
diff changeset
55
 they are for the computer too.
ellis <ellis@rwest.io>
parents:
diff changeset
56
 
ellis <ellis@rwest.io>
parents:
diff changeset
57
 Just like computers, /computer programs/ come in different shapes and
ellis <ellis@rwest.io>
parents:
diff changeset
58
 sizes but in basic terms they are sets of instructions used to control
ellis <ellis@rwest.io>
parents:
diff changeset
59
 a computer.
ellis <ellis@rwest.io>
parents:
diff changeset
60
 
ellis <ellis@rwest.io>
parents:
diff changeset
61
 You can write programs to do anything - when I first started, my
ellis <ellis@rwest.io>
parents:
diff changeset
62
 programs made music. The program was a means to an end. Over time, I
ellis <ellis@rwest.io>
parents:
diff changeset
63
 started to see the program as something much more. I saw it as the
ellis <ellis@rwest.io>
parents:
diff changeset
64
 music itself.
ellis <ellis@rwest.io>
parents:
diff changeset
65
 
ellis <ellis@rwest.io>
parents:
diff changeset
66
 [fn:1] ... perform computations
ellis <ellis@rwest.io>
parents:
diff changeset
67
 
ellis <ellis@rwest.io>
parents:
diff changeset
68
 
ellis <ellis@rwest.io>
parents:
diff changeset
69
 * On Infra
ellis <ellis@rwest.io>
parents:
diff changeset
70
 Something that is missing from many organizations big or large, is an
ellis <ellis@rwest.io>
parents:
diff changeset
71
 effective way to store and access information, even about their own
ellis <ellis@rwest.io>
parents:
diff changeset
72
 org.
ellis <ellis@rwest.io>
parents:
diff changeset
73
 
ellis <ellis@rwest.io>
parents:
diff changeset
74
 It can be difficult problem to solve - usually there's the official
ellis <ellis@rwest.io>
parents:
diff changeset
75
 one, say Microsoft Sharepoint and then the list of unofficial sources
ellis <ellis@rwest.io>
parents:
diff changeset
76
 which becomes tribal corporate hacker knowledge. Maybe the unofficial
ellis <ellis@rwest.io>
parents:
diff changeset
77
 ones are more current, or are annotated nicely, but their very
ellis <ellis@rwest.io>
parents:
diff changeset
78
 existence breaks the system. There's no longer a single source of
ellis <ellis@rwest.io>
parents:
diff changeset
79
 truth.
ellis <ellis@rwest.io>
parents:
diff changeset
80
 
ellis <ellis@rwest.io>
parents:
diff changeset
81
 My priority in this department is writing services which process and
ellis <ellis@rwest.io>
parents:
diff changeset
82
 store information from a variety of sources in a distributed knowledge
ellis <ellis@rwest.io>
parents:
diff changeset
83
 graph. The graph can later be queried to access information on-demand.
ellis <ellis@rwest.io>
parents:
diff changeset
84
 
ellis <ellis@rwest.io>
parents:
diff changeset
85
 My idea of infrastructure is in fact to build my own Cloud. Needless
ellis <ellis@rwest.io>
parents:
diff changeset
86
 to say I don't have an O365 subscription, and wherever possible I'll
ellis <ellis@rwest.io>
parents:
diff changeset
87
 be relying on hardware I have physical access to. I'm not opposed to
ellis <ellis@rwest.io>
parents:
diff changeset
88
 cloud services at large but based on principle I like to think we
ellis <ellis@rwest.io>
parents:
diff changeset
89
 shouldn't be built on them.