WEBVTT
NOTE
Transcription provided by Podhome.fm
Created: 7/6/2024
5:18:24 PM
Duration: 2541.855
Channels: 1
1
00:00:13.905 -->
00:00:15.365 Hello, and welcome to podcast.init,
2
00:00:15.905 -->
00:00:22.790the podcast about Python and the people who make it great. I'd like to thank everyone who has donated to the show. Your contributions help us make the show sustainable.
3
00:00:23.650 -->
00:00:26.550Linode is sponsoring us this week, and you can check them out at linode.com/podcastinnit
4
00:00:27.650 -->
00:00:32.375and get a $20 credit to try out their fast and reliable Linux virtual servers for your next Python project.
5
00:00:33.235 -->
00:00:41.030We're also sponsored by Rollbar, which is a service for tracking and aggregating your application errors so that you can find and fix the bugs in your project before your users notice they exist.
6
00:00:41.330 -->
00:00:42.310Use the link rollbar.com/podcastinit
7
00:00:43.650 -->
00:00:49.095to get 90 days and 300, 000 errors tracked for free on the Bootstrap plan. You can also visit our site at pythonpodcast.com
8
00:00:50.035 -->
00:00:58.910to sign up for our newsletter, read the show notes, and get in touch. And to help other people find the show, you can leave a review on Itunes or Google Play Music and tell your friends and coworkers.
9
00:00:59.450 -->
00:01:12.385We also have a discourse forum where you can find out about upcoming guests, suggest questions, propose show ideas, and follow-up with past guests. And your host as usual is Tobias Macy. And today, I'm interviewing K Lars Lawn about his career, his art, and his work with Mozilla.
10
00:01:12.909 -->
00:01:14.929So, Lars, could you please introduce yourself?
11
00:01:15.869 -->
00:01:19.170 Well, hi. I'm Lars. I work for the Mozilla Corporation,
12
00:01:19.765 -->
00:01:21.465and I'm speaking to you today
13
00:01:21.845 -->
00:01:27.145from a yurt on an organic farm in the central or Willamette Valley of Oregon.
14
00:01:28.210 -->
00:01:31.110 And can you tell us a bit how you got introduced to Python?
15
00:01:32.210 -->
00:01:38.775 Well, there's a story behind that, just like there's a story behind everything I do. But I actually must thank Microsoft
16
00:01:39.555 -->
00:01:42.854for leading me to open source software and Python.
17
00:01:43.635 -->
00:01:45.170Back in 1999,
18
00:01:45.790 -->
00:01:47.330there was a dotcom crash.
19
00:01:47.790 -->
00:01:52.130And ironically, I weathered the dotcom crash by opening a dotcom.
20
00:01:53.255 -->
00:01:54.295I, started,
21
00:01:55.255 -->
00:01:56.155with a nursery,
22
00:01:57.415 -->
00:01:59.435selling rose bushes online.
23
00:01:59.840 -->
00:02:06.340And I hadn't done any research ahead of time and it was turned out that we were the only nursery online in 1999
24
00:02:06.640 -->
00:02:11.735that had a buy now button. We sold everything we had in the first 4 hours that we were open,
25
00:02:12.115 -->
00:02:12.615but
26
00:02:12.995 -->
00:02:15.095the business was actually really quite successful.
27
00:02:15.395 -->
00:02:17.015And fast forward to 2, 002,
28
00:02:17.980 -->
00:02:19.280and I got a letter
29
00:02:19.820 -->
00:02:20.320from
30
00:02:20.700 -->
00:02:28.775people called the Business Software Alliance or Association or something like that. And it was a threatening letter telling me that I had,
31
00:02:29.475 -->
00:02:31.655pirated software in my business
32
00:02:32.035 -->
00:02:46.165and that they were preparing to sue me. But there was an amnesty program, and if I paid this certain amount of money for all of these licenses for these Microsoft products, they would go away. I was stunned. There were 7 computers
33
00:02:46.625 -->
00:02:52.670in my business at that time. And the only software in them was the software that came from Dell
34
00:02:52.970 -->
00:02:54.830and the software that I wrote myself.
35
00:02:55.130 -->
00:03:02.115I, like I said, I was stunned. I didn't know what to do about this. And I know I couldn't find a single 1 of those certificates of authenticity
36
00:03:02.415 -->
00:03:08.440that came with the machines. So I had I guess no way of proving that I owned the software that was on my machines.
37
00:03:09.060 -->
00:03:12.840So after several sleepless nights and pouring over my budget,
38
00:03:13.140 -->
00:03:15.960I realized that I was gonna have to lay off an employee
39
00:03:16.575 -->
00:03:17.715in order to afford
40
00:03:18.334 -->
00:03:28.830to pay the amount that I was gonna have to pay. I finally decided which person I was going to lay off and then came up with a plan on how I was gonna get through an entire shipping season
41
00:03:29.130 -->
00:03:38.905short and employee. And I pulled out that letter and suddenly was shocked by something I hadn't noticed at the beginning. My business name was called The Uncommon Rose,
42
00:03:39.390 -->
00:03:40.370and the salutation
43
00:03:40.830 -->
00:03:43.970on the letter was dear miss Rose Uncommon.
44
00:03:44.349 -->
00:03:45.569What had happened apparently
45
00:03:45.870 -->
00:03:48.769is this business software group had purchased
46
00:03:49.455 -->
00:03:58.349marketing mailing list, and they just spammed everybody with the same message. I realized they knew nothing about my business at all. They didn't know anything.
47
00:03:58.890 -->
00:04:00.030I even had computers.
48
00:04:00.569 -->
00:04:03.549So I realized it was just some sort of protection racket.
49
00:04:03.930 -->
00:04:09.094I took the letter, copied it, sent it to the attorney general's office explaining what was going on,
50
00:04:09.394 -->
00:04:23.585and, then decided to ignore it and decided that Microsoft has no business having their hand in my revenue stream whatsoever. The software had been written entirely using Microsoft C plus plus, the Rogue Wave C plus plus libraries,
51
00:04:24.045 -->
00:04:26.785Microsoft SQL Server, and various other
52
00:04:27.165 -->
00:04:32.699Microsoft technologies, I decided to eliminate all of it. All the Microsoft keyboards and Microsoft
53
00:04:33.240 -->
00:04:34.120mice went to,
54
00:04:34.680 -->
00:04:39.495electronics recycling. I started doing some research. I discovered this language called Python,
55
00:04:39.795 -->
00:04:45.255which looked like a very good language to rapidly rewrite the entire software for the business.
56
00:04:45.955 -->
00:04:47.575I chose the Postgres database
57
00:04:48.160 -->
00:04:55.060and Linux and in 2 months, I entirely wrote the entire suite of software that ran the business
58
00:04:55.405 -->
00:04:55.905from
59
00:04:56.205 -->
00:04:57.345the greenhouse management
60
00:04:57.885 -->
00:05:00.065all the way through the website generation.
61
00:05:00.445 -->
00:05:02.945So like I say, I must thank Microsoft
62
00:05:03.250 -->
00:05:05.910for introducing me to Python and open source software.
63
00:05:06.930 -->
00:05:19.574 It's funny how many times I've heard people say that they came to Python because they had to completely rewrite an existing project in a short matter of time, and then they were surprised by how quickly they were able to actually achieve that.
64
00:05:21.090 -->
00:05:29.270 It was amazing. I I was really, really impressed with the Python language at that point. Having been a c plus plus programmer for
65
00:05:29.625 -->
00:05:32.845many years, and I started c plus plus way back in 87,
66
00:05:33.385 -->
00:05:34.525and the whole
67
00:05:35.225 -->
00:05:37.645cycle of writing and testing
68
00:05:39.140 -->
00:05:50.375 was an order of magnitude faster. Yeah. Having the REPL for being able to do things interactively and in an exploratory manner has really been sort of foundational in how I've approached my programming career.
69
00:05:50.835 -->
00:05:57.095Yep. When I was going through your blog to prepare for this interview, I noticed that you have an interesting pair of articles on your website
70
00:05:57.470 -->
00:06:11.795trying to detail how you perceive code and why you think that code formatting should be able to be configured in a manner similar to CSS. So I'm wondering if you can explain a bit how your particular way that you perceive code affects the ways that you program.
71
00:06:12.975 -->
00:06:14.355 Certainly. It is only
72
00:06:14.770 -->
00:06:17.350recently that I have really come to understand
73
00:06:17.650 -->
00:06:19.750how my brain is different
74
00:06:20.050 -->
00:06:22.455from most of the other programmers that I know.
75
00:06:22.935 -->
00:06:25.995I have a minor form what is called a synesthesia.
76
00:06:26.534 -->
00:06:28.074A synesthesia is when,
77
00:06:28.694 -->
00:06:29.835certain perceptions
78
00:06:30.220 -->
00:06:35.360are mixed up in the brain. People taste colors and things like that. Well, I see
79
00:06:35.900 -->
00:06:36.400complicated
80
00:06:36.780 -->
00:06:38.880twisted lines in colors
81
00:06:39.485 -->
00:06:41.025Even if they're not actually
82
00:06:41.485 -->
00:06:42.544done in colors.
83
00:06:42.845 -->
00:06:44.225To me, code
84
00:06:44.604 -->
00:06:47.720is the same sort of idea. I see it in colors
85
00:06:48.180 -->
00:06:57.134and that became first apparent to me when I was in graduate school. I was in an artificial intelligence class using the language lisp. The professor was giving
86
00:06:57.514 -->
00:07:03.694some sort of lecture on recursive pattern matching algorithms, and I probably was just doodling,
87
00:07:04.569 -->
00:07:08.830and not paying close attention. But I noticed all of a sudden a flash of blue
88
00:07:09.210 -->
00:07:20.145caught my eye, and he was writing on an overhead projector in black ink. And I stopped him and said, wait a minute, there's something wrong with your algorithm here. And then I said something vague about,
89
00:07:20.705 -->
00:07:31.949you lose context in the recursion at this point. He smiled at me and said well I've been using this example for 10 years and we know it works, etcetera, etcetera. And I backed down. I wasn't gonna tell him it's too blue.
90
00:07:32.815 -->
00:07:37.155So I backed down and he continued with his lecture. After a few minutes,
91
00:07:37.535 -->
00:07:39.635he suddenly stopped in mid sentence,
92
00:07:40.095 -->
00:07:42.900scrolled the overhead projector back to that algorithm,
93
00:07:43.440 -->
00:07:46.580looked at it for a moment, and then looked at me and grinned,
94
00:07:47.039 -->
00:07:51.380and said nobody has ever caught that problem. I didn't know it was there myself,
95
00:07:51.815 -->
00:07:55.675and ever since then I can say I can look at code
96
00:07:55.975 -->
00:07:57.755and if I see something blue,
97
00:07:58.135 -->
00:08:02.960I know there's a problem. I may not know what it is and it's not always completely reliable.
98
00:08:03.420 -->
00:08:03.920So
99
00:08:04.300 -->
00:08:05.520the way I code
100
00:08:05.980 -->
00:08:13.605is is kind of unique. I'm very and a very exploratory coder, and I believe very much in being very verbose
101
00:08:14.065 -->
00:08:15.285in writing code.
102
00:08:15.585 -->
00:08:17.285I believe that a variable name
103
00:08:17.640 -->
00:08:24.620shouldn't be a word. It should be an entire sentence describing what it is. A collection of
104
00:08:24.945 -->
00:08:25.445something.
105
00:08:25.825 -->
00:08:28.325Variable names such as looping variables.
106
00:08:28.785 -->
00:08:31.205I rarely ever use x or I.
107
00:08:31.585 -->
00:08:36.070I want to say what the object is, and I'm gonna use an article in front of it.
108
00:08:36.690 -->
00:08:37.830A blog post.
109
00:08:38.450 -->
00:08:43.670A integer, a rather an integer. Something like that. Because then the code to me
110
00:08:43.975 -->
00:08:45.515reads like English sentences.
111
00:08:45.975 -->
00:08:47.755If a blog post
112
00:08:48.454 -->
00:08:50.795is greater in length than etcetera.
113
00:08:51.140 -->
00:08:59.880So that's how code looks best to me. If it's written out in long form like that, I can go back to it and read it again. Unfortunately, it doesn't fit with many people's
114
00:09:00.275 -->
00:09:02.615or many organizations coding standards
115
00:09:03.155 -->
00:09:09.175and, you know, most of the people I know know never to actually talk to me about PEP 8,
116
00:09:09.660 -->
00:09:12.480Because for me PEP 8 is a disaster
117
00:09:13.340 -->
00:09:14.080and honestly,
118
00:09:14.620 -->
00:09:16.000it gives all code
119
00:09:16.300 -->
00:09:17.600a bluish cast.
120
00:09:18.365 -->
00:09:19.745It almost blinds me
121
00:09:20.125 -->
00:09:34.079to finding problems in code if I can't use this synesthesia that I have. The main problem and and it's certainly has been addressed in PEP 8 is line length. I have always felt that limiting line length to 79 characters
122
00:09:34.540 -->
00:09:42.305causes you to overload the meaning of white space. It no longer just shows structure, it also shows that you have,
123
00:09:43.325 -->
00:09:47.680lines that are too long, And with my variable names being long sentences,
124
00:09:48.060 -->
00:10:08.620almost every line is too long. And so I've had to modify how I I write code, and to me it becomes far less readable. Wouldn't it be great if we could find a way of looking at code and seeing it in the form of which we can read it the best? Now, the only thing I can think of that can do that sort of thing is the same way that HTML is styled in CSS.
125
00:10:09.245 -->
00:10:17.985I would love to see some way an editor of some sort to enable me to format my code in a way that I can read it
126
00:10:18.750 -->
00:10:21.250and then when someone else looks at it in their editor
127
00:10:21.550 -->
00:10:35.955it's formatted in the way they can read it most easily. I don't know the feasibility of this. I've sat down and tried to, think about how I would program this, played around with a few things, and really didn't get anywhere with it. It may never happen, at least in my lifetime,
128
00:10:36.575 -->
00:10:44.145 but it's a great fantasy. Yeah. It's definitely an interesting problem to ponder because as you said, different people view code differently,
129
00:10:51.185 -->
00:10:59.830Particularly when Yeah. Particularly when you're saying, for instance, the long variable names, you know, as far as the CSS system, 1 potential approach would be to have
130
00:11:00.235 -->
00:11:15.569maybe a long and a short form of the variable so that you could have a toggle that will determine how those render so that people who want shorter line lengths can use the abbreviated form, and people who prefer the more expressive variable name can view it in the in its original context.
131
00:11:16.795 -->
00:11:22.575 And then once you get to that point, then do you want to have, well, the variable in a different language
132
00:11:23.275 -->
00:11:30.880 and etcetera like that, that, and then, it becomes impossible to write code at all. Right. And and and then you have to deal with I a t n n before you can even actually write your program.
133
00:11:31.340 -->
00:11:31.840 Exactly.
134
00:11:32.245 -->
00:11:36.425 Yeah. It's an interesting interesting problem to ponder at least if not solve.
135
00:11:36.805 -->
00:11:37.305 Right.
136
00:11:37.685 -->
00:11:42.389 I'm curious if the manner in which you perceive complicated expressions
137
00:11:43.089 -->
00:11:49.605has contributed to some of your fascination with complexity theory, which we'll touch on a little bit later, but also your,
138
00:11:49.985 -->
00:11:51.365your interest and
139
00:11:51.745 -->
00:11:55.365proficiency in drawing, what I must say, are quite beautiful mazes.
140
00:11:56.270 -->
00:12:00.210 They're certainly quite closely related. Do you know of the language called APL?
141
00:12:00.830 -->
00:12:04.930 I am familiar with it. I have actually recently listened to a podcast on,
142
00:12:05.935 -->
00:12:11.795for somebody who was very familiar with the language, it was on the Functional Geekery podcast. So I'll put a link to that in the show notes.
143
00:12:12.870 -->
00:12:21.050 I love that language. When I lived on the Blackfeet Indian Reservation, I happened to be working for a man who was on the original design team for that language.
144
00:12:21.425 -->
00:12:27.764And we shared a love of it and its complexity and its ability to do an amazing number of things
145
00:12:28.144 -->
00:12:30.644in just very terse and brief,
146
00:12:31.810 -->
00:12:32.310statements
147
00:12:32.690 -->
00:12:49.790is very exciting to me. Of course, it doesn't fit well with my long variable name idea, but still I still appreciate it in that respect. So the code that I write, I often have a difficult time with the rest of the people on my team because I write code that is complex.
148
00:12:50.250 -->
00:12:54.670To me, many things that are complex are really quite clear. I love recursion.
149
00:12:55.050 -->
00:13:00.274I love multi threading. They are both make things so much simpler in my mind, but
150
00:13:00.654 -->
00:13:01.154complexity
151
00:13:01.695 -->
00:13:13.130is kind of a bad word in programming today, that there's always this move to move towards simplicity because it's easier code to maintain, but to me it makes code less interesting and I often
152
00:13:13.715 -->
00:13:16.615see code simplified to the point of being incorrect.
153
00:13:17.235 -->
00:13:24.980No longer properly modeling what it is you're attempting to model because I guess I can say that if the business process that you are attempting
154
00:13:25.360 -->
00:13:27.700to to model is more complicated
155
00:13:28.115 -->
00:13:57.460than the code you have written, then it's likely wrong. You have taken let's say, you've discovered that in the business model, there are 2 cases, x and y, and you realize in your mind that, wow, these 2 cases are really very similar so I'm gonna roll them into 1, but the business model didn't get changed, only your program got changed, and I'm gonna say that your program is now wrong because it merged those 2 cases, but it made the program simpler and perhaps easier to maintain, but it didn't model the business process anymore. Now
156
00:13:57.839 -->
00:13:59.860take this on to my
157
00:14:00.404 -->
00:14:06.904interest in mazes. I drew mazes as a kid. I found many programmers or people with with mathematical
158
00:14:07.445 -->
00:14:07.945backgrounds
159
00:14:08.269 -->
00:14:20.925were very interested in mazes as a kid. I stopped drawing them when I was in high school, and just never returned to it. Until about a year ago, when I was in an office depot, and I saw that they still make flare pens.
160
00:14:21.385 -->
00:14:33.079That's what I used as a kid to draw mazes. So I bought a set, and sat down and immediately started drawing mazes and thought this was this is amazing. I love this. After drawing about 20 of them, my husband suggested
161
00:14:34.214 -->
00:14:40.074that I try drawing them on a tablet instead. And so I got my Android tablet out and I bought a a
162
00:14:40.660 -->
00:15:00.060a pen for it and started drawing on that, and wow, it was amazing. I could really do some interesting things, and I realized with these drawing programs, I can do layering and make layer masks and put these things in the colors that I actually see them in in my mind. And from then, all of a sudden, these amazing things started coming out of me. These,
163
00:15:00.519 -->
00:15:01.019represented,
164
00:15:01.639 -->
00:15:16.930botanical drawings, and I stunned myself with these things. I've I've done I think I finished the 44th 1 just very recently. Some of them take up to 80 hours to draw, but it's as if maybe perhaps sometime a year ago, it's like I had a stroke
165
00:15:17.390 -->
00:15:21.810or something. And all of a sudden, I have an artistic ability that I never thought I had.
166
00:15:22.270 -->
00:15:25.089It's great to discover something new at age 56.
167
00:15:26.635 -->
00:15:35.055 Yeah. It's definitely an interesting story because viewing the images that you produce, you would think that you've been doing it all your life because I must say they're quite astounding and incredibly detailed.
168
00:15:35.530 -->
00:15:36.910 They're very therapeutic
169
00:15:37.290 -->
00:15:40.270to draw. I can sit for several hours
170
00:15:40.810 -->
00:15:43.550and just in a mindless state, almost
171
00:15:44.065 -->
00:15:45.445zen like meditation,
172
00:15:45.985 -->
00:15:49.845draw these things. They're drawn in several stages. I first draw the lines,
173
00:15:50.625 -->
00:15:53.790just on a whim exploring different sorts of patterns
174
00:15:54.170 -->
00:15:58.830and then I use the feature of drawing programs of flood fill
175
00:15:59.290 -->
00:16:09.644to find out what regions I have made connected lines in and then I engineer the maze from that using, I guess, my programming skills.
176
00:16:10.810 -->
00:16:14.190Maybe I should say I should use use my my skills of deceit
177
00:16:14.890 -->
00:16:22.945to try and to try and make these, mazes as difficult as possible. I don't think I don't know of anyone who has ever solved 1 of my mazes.
178
00:16:23.245 -->
00:16:24.785I know they all have solutions,
179
00:16:25.405 -->
00:16:42.415because I I prove it to myself before I publish them. I actually had an art show in my little town here in June. This show went for a month and I think for an unknown artist in an obscure gallery in a small town, I did extraordinarily well for selling 7 pieces
180
00:16:42.810 -->
00:17:00.145 that went for from 350 to $500 each. It was amazing. Perhaps I have a new career if I ever get out of this programming stuff. Yeah. If you get tired of slinging code all day, you certainly have the talent for it. And for anybody who hasn't seen them, I'm gonna put a link in the show notes. But, you know, if you look at them from a distance,
181
00:17:00.560 -->
00:17:06.580you would never guess that there's actually a second layer of purpose behind them beyond just visual artwork. And
182
00:17:06.960 -->
00:17:11.165the amount of detail that you can get out of it at the same time as incorporating
183
00:17:11.545 -->
00:17:18.125such complicated mazes is just astounding. And the fact that you start with just sort of an exploratory
184
00:17:18.825 -->
00:17:19.325approach
185
00:17:19.850 -->
00:17:31.655of seeing what sorts of shapes and patterns come about and then using that to then direct the creation of the maze. And I'm assuming as well the actual content of the image is pretty remarkable.
186
00:17:32.035 -->
00:17:47.105 I decide what the content of the image is going to be ahead of time. I don't just it doesn't doesn't spew out just whole. I'd said, okay. I'm gonna do a poppy here. And now I I sit and look I look at a poppy and and decide that what shapes are interesting and then start drawing them.
187
00:17:48.465 -->
00:17:51.765 And playing again on the subject of complexity,
188
00:17:52.225 -->
00:17:58.000at Mozilla, you've helped with the creation and stewardship of a project called Socorro, which
189
00:17:58.380 -->
00:18:14.090you mentioned in your keynote. You utilized some aspects of complexity analysis for being able to correlate the stack traces that you receive into this project. And I'm wondering how you sort of came across or approached that idea of incorporating that sort of level of theoretical application
190
00:18:14.870 -->
00:18:16.409to something like error monitoring?
191
00:18:17.350 -->
00:18:20.570 Well, the, the actual use of fractal dimension
192
00:18:21.029 -->
00:18:21.529for
193
00:18:22.005 -->
00:18:22.505categorizing
194
00:18:23.125 -->
00:18:30.345our classification of errors with something that never made it actually into the production code. We built the system over the last 10 years
195
00:18:30.805 -->
00:18:32.930and it's a complicated
196
00:18:33.710 -->
00:18:35.650multi process, multi threaded,
197
00:18:36.110 -->
00:18:36.610application
198
00:18:37.310 -->
00:18:47.419with my signatures all over it. And, at the final iteration before I've left that group, I create what created what is called the processor as a rule based system, so that classification
199
00:18:47.799 -->
00:18:54.620systems can easily be written and then just plugged into this system at configuration time. And so while writing the,
200
00:18:55.015 -->
00:19:04.555keynote, I was thinking about different uses of complexity and I thought, well, you know, or rather fractal dimension, I could write a classification system for Socorro
201
00:19:05.240 -->
00:19:17.365that used fractal dimension. And so I coded it up in just a few minutes and inserted it into my own personal copy of Socorro and then ran a a 1000000 crashes through it and discovered
202
00:19:17.985 -->
00:19:19.765that I could do some correlations
203
00:19:20.145 -->
00:19:31.465between crashes that the rest of the system hadn't detected that were similar crashes or from the same root cause. But then at that point, you know, I was doing that for the lecture not for Mozilla.
204
00:19:32.165 -->
00:19:33.304I found some counterexamples
205
00:19:33.605 -->
00:19:45.280where it didn't work as well, where it found some correlations, where there were not actual correlations. There may be something to it, but it would take a little bit more work, and I'm not with that group anymore. So it's kind of gone by the wayside.
206
00:19:46.445 -->
00:19:48.145 Well, it's still a very interesting
207
00:19:48.605 -->
00:19:51.105application of that kind of, analysis,
208
00:19:51.485 -->
00:19:58.620and it it'll be curious to see if that does evolve further and maybe some of the other areas that it might pop up. Mhmm.
209
00:19:59.400 -->
00:20:08.424So can you describe a bit about how the Socora project is architected and sort of how it works under the covers and maybe what the evolution over time has looked like for it? Certainly.
210
00:20:08.965 -->
00:20:10.985 I started on the Socorro project
211
00:20:11.820 -->
00:20:14.240in, I think, 07 or 08
212
00:20:14.540 -->
00:20:21.425just, before the release of Firefox 3. It had already been started, by some of the platform engineers
213
00:20:21.985 -->
00:20:46.265and then I was brought on to complete it. And, in some ways, it was kind of like after some nuclear disaster and all of the developers were just gone and all of a sudden the code base was given to me and there was no 1 to talk to about it or what it was. And the idea was that I had to make it work in a very short order and of course, Python is really good at that. And so I hacked the thing together to make it work and it worked mostly,
214
00:20:46.805 -->
00:20:51.300but it was an awful hack. And then for the next few years, we
215
00:20:51.760 -->
00:20:52.260did,
216
00:20:52.640 -->
00:20:56.420a group kind of formed around me and we did what I call retroactive
217
00:20:56.800 -->
00:20:57.300forethought.
218
00:20:57.875 -->
00:21:06.455We refactored the code and took the hacks out of it to make it, more of an engineered thing rather than something just thrown together.
219
00:21:06.880 -->
00:21:08.320So it consists of several,
220
00:21:08.640 -->
00:21:10.740independent parts running on separate machines.
221
00:21:11.280 -->
00:21:15.460A collector, which is just simply well, at the time was a Python,
222
00:21:16.115 -->
00:21:19.015It was actually a mod Python, I think, running under Apache
223
00:21:19.475 -->
00:21:19.975that,
224
00:21:20.435 -->
00:21:25.575catches the crashes as they come in from the field and stores them, on disk,
225
00:21:26.420 -->
00:21:31.080on the the web head. And then another process takes them off that disk
226
00:21:31.620 -->
00:21:33.400and sends them into,
227
00:21:33.860 -->
00:21:38.815long term storage. At that time, it was another disk and Postgres.
228
00:21:39.435 -->
00:21:42.175And then another process running on several machines,
229
00:21:42.715 -->
00:21:45.230pulls them off the disk and out of Postgres
230
00:21:45.770 -->
00:21:47.230and performs a miracle,
231
00:21:47.929 -->
00:21:48.429using
232
00:21:48.890 -->
00:21:51.150the stack walker and remarries
233
00:21:51.610 -->
00:21:55.465this binary blob of stack information with symbol tables,
234
00:21:56.005 -->
00:21:56.565so that,
235
00:21:57.284 -->
00:22:01.465we can find out exactly what the code was that crashed. And then there's a
236
00:22:01.799 -->
00:22:09.820a web app in front of that that, allows the developers then to go in and look at these crashes, categorize them, look at aggregate
237
00:22:10.615 -->
00:22:19.115information about them, and actually drill down into our source code system to find out exactly what lines and look at the lines of the code. It's all multi process,
238
00:22:19.679 -->
00:22:20.980multi threaded stuff.
239
00:22:21.440 -->
00:22:28.100I went from multi threaded from the very beginning back in 07 because I love multi threading and then over the years,
240
00:22:28.585 -->
00:22:29.965I started to do generalizations.
241
00:22:30.825 -->
00:22:39.0701 of the things that was most apparent about the project is it needed to be very quick on its feet for a changing environment.
242
00:22:39.530 -->
00:22:43.470We decided we were gonna in 2010, we decided to move and use HBase
243
00:22:43.770 -->
00:22:59.100to replace the file system storage. And so we built 8 HBase modules and and linked them into the system, but I wasn't satisfied with that because I knew that we were gonna add other things in the future. And so I came up with this library that I call ConfigMan
244
00:22:59.480 -->
00:23:02.780that does dynamic loading of modules in Python
245
00:23:03.085 -->
00:23:06.945so that like connecting Legos together at the configuration
246
00:23:07.325 -->
00:23:35.320time, we can change the front end or back end of this system at will. By the the climax of this in well, I can't remember was 4 between 14 15 that we had dropped HBase and we're moving all of our data to Amazon S3. We were able to put Amazon S3 module in and just tell the applications to sig hop, and so they added Amazon S3 in parallel with HBase
247
00:23:35.755 -->
00:23:47.630without shutting the programs down even. It just reload like reloaded configuration and kept right on running, not losing a step. Ran that way for a month till we verified that the Amazon s 3 and the HBase data was identical,
248
00:23:47.930 -->
00:23:53.455and then rewrote the configuration to take HBase out, sent sick hub to all of the,
249
00:23:53.934 -->
00:23:54.434applications.
250
00:23:55.134 -->
00:23:59.154HBase was gone. Again, the applications didn't even have to be shut down.
251
00:23:59.840 -->
00:24:01.620 That's quite a remarkable feat of engineering.
252
00:24:02.560 -->
00:24:04.500 It I I was very proud of it.
253
00:24:05.040 -->
00:24:05.540Unfortunately,
254
00:24:06.640 -->
00:24:09.195it adds a significant amount of complexity
255
00:24:09.495 -->
00:24:12.475to the system with the added benefit of the flexibility.
256
00:24:12.855 -->
00:24:14.555You know, I say that
257
00:24:14.880 -->
00:24:15.700in my career,
258
00:24:16.559 -->
00:24:17.940any of the software
259
00:24:18.240 -->
00:24:21.620that I hard coded any external resource,
260
00:24:21.925 -->
00:24:27.385that software is long gone. It had a 2 year life at most. But software that I've written
261
00:24:27.685 -->
00:24:30.640that allows to have dynamic configuration
262
00:24:31.020 -->
00:24:40.645and dynamic loading of modules, in other words future proofing it, it still is running today. I did something similar to this way back in my career in the 19 eighties
263
00:24:41.105 -->
00:24:43.365in the language Fortran to drive
264
00:24:43.745 -->
00:24:54.180flatbed plotters. A couple years ago, I went back and visited that company that I did this for and found that my Fortran code is still in use 30 years later.
265
00:24:55.745 -->
00:25:03.845 Speaking of somebody who hasn't had a technical career anywhere near that length yet, that is my my hat goes off to you, sir. Thank you. Thank you.
266
00:25:04.540 -->
00:25:12.080At this year's PyCon US out in Portland, Oregon, you presented the closing keynote, and I have to say that it was 1 of the most engaging
267
00:25:12.380 -->
00:25:12.880and
268
00:25:13.225 -->
00:25:16.044engrossing presentations that I've ever seen. And I'm wondering
269
00:25:16.424 -->
00:25:25.429where you got the inspiration for that talk, how you conceived of the mixed media approach to it, and as a follow on to that, how much you had to practice?
270
00:25:25.809 -->
00:25:32.165 Mhmm. Well, there's a story behind this too, and it all revolves around the regional conference, PIE Tennessee.
271
00:25:32.785 -->
00:25:37.525About 3 or 4 years ago, PIE Tennessee was looking for sponsors. They went to Mozilla.
272
00:25:38.465 -->
00:25:38.965Mozilla
273
00:25:39.390 -->
00:25:46.290sponsored them and they were look Mozilla was looking for someone to speak and I happen to have a whole bunch of friends that live in rural Tennessee
274
00:25:46.750 -->
00:25:48.865and so I just said I will volunteer to speak
275
00:25:49.265 -->
00:26:00.600and talk about Socorro. And so we arranged it and I spoke the conference and of course, you know, it's 1 of those multi track things. And I think I had about 5 people in my audience.
276
00:26:01.380 -->
00:26:10.495And I think the organizers of Pi Tennessee felt kind of bad about that. So the following year, I decided I was just I would submit papers,
277
00:26:10.875 -->
00:26:12.095proposals to PyTennessee,
278
00:26:12.475 -->
00:26:14.495and I submitted 3 proposals.
279
00:26:15.299 -->
00:26:21.3202 very serious very academic proposals. I think 1 was about multi threading and the other 1 was about configuration.
280
00:26:21.860 -->
00:26:25.035And then I decided I would send in a joke.
281
00:26:25.415 -->
00:26:26.715And so I made a proposal
282
00:26:27.095 -->
00:26:28.155about parallels
283
00:26:28.775 -->
00:26:30.155in software engineering
284
00:26:30.950 -->
00:26:33.130with baroque music from the 1700.
285
00:26:33.750 -->
00:26:35.850Well, they called my bluff.
286
00:26:36.870 -->
00:26:38.390They rejected the 2,
287
00:26:38.870 -->
00:26:39.370proposals,
288
00:26:39.755 -->
00:26:41.294the academic ones, and chose
289
00:26:42.395 -->
00:26:44.575the music 1. So I had to follow-up,
290
00:26:44.875 -->
00:26:48.655and that became my lecture called The Well Tempered API,
291
00:26:49.420 -->
00:26:55.040subtitled, I can play 300 year old music, but I can't open a Word document from 1990.
292
00:26:57.225 -->
00:26:57.665And,
293
00:26:58.105 -->
00:26:59.245it was multimedia.
294
00:26:59.545 -->
00:27:00.045I,
295
00:27:00.665 -->
00:27:05.410hadn't played a musical instrument since high school, and so I learned to play this,
296
00:27:05.810 -->
00:27:07.810electronic woodwind of mine and,
297
00:27:08.690 -->
00:27:13.110gave the presentation. There's a couple different recordings of it out there if you want to find it.
298
00:27:13.495 -->
00:27:25.070You can go on to either Air Mozilla or on YouTube and find Well Tempered API and you know there are a whole bunch of interesting parallels between music and software engineering. I was
299
00:27:25.530 -->
00:27:26.750realized that
300
00:27:27.130 -->
00:27:28.270cooperative multitasking
301
00:27:28.890 -->
00:27:31.470was done by organists in the 1700.
302
00:27:31.850 -->
00:27:35.135In fact, if you look up baroque cooperative multitasking
303
00:27:35.675 -->
00:27:51.360in, YouTube, you'll find a, an excerpt from my original talk at pi Tennessee that year. Then just as I was I'd finished that and figured that I was gonna be done speaking for a while, the Py Tennessee people invited me to do the keynote, the opening keynote for,
304
00:27:51.805 -->
00:27:53.265this year in 2016.
305
00:27:53.725 -->
00:27:59.265And I decided, well, let's just see how long I can stretch out this music thing. And
306
00:27:59.630 -->
00:28:01.730at that point in at Mozilla,
307
00:28:02.350 -->
00:28:03.010I was
308
00:28:03.549 -->
00:28:04.770getting very frustrated
309
00:28:05.309 -->
00:28:06.130with complexity
310
00:28:06.894 -->
00:28:14.195and the inability of so many of my co workers to understand my code because it was too complex. And then I decided to demonstrate
311
00:28:14.850 -->
00:28:18.470how if you don't think about it, everybody loves complexity.
312
00:28:18.929 -->
00:28:27.185If you look at a a soap opera, they constantly you have these like 7 or 8 second scenes that constantly jump between story lines.
313
00:28:27.645 -->
00:28:36.070That's cooperative multitasking, and we eat it up in entertainment, but we seem to not like it in programming because it's too complex. And so I made a,
314
00:28:36.530 -->
00:28:38.870a talk for their keynote that I called,
315
00:28:39.250 -->
00:28:40.870Fractal Dimension Music
316
00:28:41.235 -->
00:28:44.934and the Art of the Left Turn. And that was the genesis of my,
317
00:28:45.395 -->
00:28:49.815PyCon keynote because just like the day before I gave the keynote at PyTennessee,
318
00:28:50.320 -->
00:28:54.179I got the invitation to do a keynote at PyCon. And, so
319
00:28:54.639 -->
00:28:58.100I modified that talk to become the PyCon keynote.
320
00:28:58.804 -->
00:29:05.865I took out, the reference to to music. I changed a whole bunch of things in it. I shortened it a little bit.
321
00:29:06.520 -->
00:29:15.380I took out some very nice things I thought but I only had a certain amount of time to fill. I could well, as you're finding out in this interview, I can just talk on and on for hours.
322
00:29:17.455 -->
00:29:19.635And the idea in the the presentation
323
00:29:20.175 -->
00:29:20.995was to make
324
00:29:21.375 -->
00:29:22.435a as complex
325
00:29:23.220 -->
00:29:27.639a presentation as I could possibly make. Jumping back and forth between stories
326
00:29:28.100 -->
00:29:42.149and yet engage the audience as much as I can and and everybody was gonna get something different out of it. Everyone was gonna notice something different, but there was gonna be something for everyone and every skill level in there. When I was,
327
00:29:42.610 -->
00:29:44.950invited to do the the, PyCon,
328
00:29:46.049 -->
00:29:46.789I asked,
329
00:29:47.090 -->
00:29:49.590Brandon Rhodes about what should I talk about?
330
00:29:50.065 -->
00:29:58.470And he said, talk about motorcycles, talk about mazes, talk about music. And so I said, okay. I'll talk about everything. And that's what I ended up doing. So
331
00:29:58.950 -->
00:30:07.850as for how long did it take me to rehearse all of that? Having the Pi Tennessee experience behind me and doing parts of that presentation,
332
00:30:08.185 -->
00:30:10.765I'd say that I ran through the whole presentation
333
00:30:11.545 -->
00:30:12.3653 times
334
00:30:12.745 -->
00:30:14.845ahead of giving it at PyCon. However,
335
00:30:15.470 -->
00:30:16.210the music
336
00:30:16.590 -->
00:30:17.250in there,
337
00:30:17.790 -->
00:30:19.970I practiced to death.
338
00:30:20.669 -->
00:30:21.070I,
339
00:30:21.710 -->
00:30:24.915that is the the most stressful part of the presentation.
340
00:30:25.615 -->
00:30:32.275Playing music in front of a whole bunch of people. I am not a professional musicians. I have I have a high school music education
341
00:30:32.970 -->
00:30:38.270and well, I like my maze drawing just a very short time as an adult,
342
00:30:39.130 -->
00:30:53.820playing music. I know very little about music theory except what I learned for when I wrote the Well Tempered API talk and so that part of the presentation I rehearsed an awful lot. Still made a lot of mistakes. I can't stand to look at the video of PyCon because I
343
00:30:54.120 -->
00:30:57.020cringe at so many of the errors that I made in the music.
344
00:30:57.995 -->
00:31:01.054 Well, speaking as somebody who isn't as,
345
00:31:01.674 -->
00:31:09.820adept at musical theory or musical analysis, I thought it was very enjoyable. Thank you. And it seems that you've got a bit of incidental virtuosity
346
00:31:10.279 -->
00:31:12.679in as you, continue on in your life,
347
00:31:13.240 -->
00:31:16.325putting a lie to the fact that you can't teach an old dog new tricks.
348
00:31:16.625 -->
00:31:17.924Absolutely. Absolutely.
349
00:31:18.544 -->
00:31:20.645So another part of the presentation
350
00:31:21.105 -->
00:31:25.120that I think tied it all together quite well was the fact that you managed
351
00:31:25.600 -->
00:31:28.820to integrate a rather personal and impactful story
352
00:31:29.360 -->
00:31:29.860as
353
00:31:30.160 -->
00:31:32.820a, sort of it was almost a
354
00:31:33.280 -->
00:31:36.085secondary plot throughout the overall presentation
355
00:31:36.945 -->
00:31:38.885as sort of a subtext of complexity.
356
00:31:39.265 -->
00:31:50.470And so I'm wondering what what inspired you to bring that element of the presentation and mix it in with the complexity analysis and musical presentation and fractal dimensions.
357
00:31:51.775 -->
00:31:52.835 It was the realization
358
00:31:53.375 -->
00:32:09.000about how different my own mind is from other people's. I've spent a lot of time in the last year asking people how do their minds work? What do you think about? How do you program? How do you think? And in the same manner that it has become so evident
359
00:32:09.505 -->
00:32:12.565in the tech world about our lack of diversity,
360
00:32:12.945 -->
00:32:17.924not only in race and gender and gender identity, but there's also a lack of diversity
361
00:32:18.580 -->
00:32:19.960in our own minds.
362
00:32:20.260 -->
00:32:21.059If you are,
363
00:32:21.700 -->
00:32:22.820familiar with,
364
00:32:23.299 -->
00:32:29.065the professor, I think at Colorado State University named Temple Grandin, She has given some wonderful TED Talks,
365
00:32:29.685 -->
00:32:34.265about the way her mind works. And I think that we very much need
366
00:32:34.830 -->
00:32:41.169to embrace the different ways that people's minds work. We seem to push in software toward a monoculture.
367
00:32:41.470 -->
00:32:53.900We want everyone to code the same way. We want because it's easier to maintain. We want everyone to think the same way and sit in a cubicle, and there are lots of different ways to live one's life and a lot of different ways that our minds
368
00:33:00.940 -->
00:33:01.440the
369
00:33:02.425 -->
00:33:09.085the recursive partition sort. I wonder what how his mind worked and how he was different from his peers.
370
00:33:09.690 -->
00:33:16.990How he was different to the way mine my mind worked. And then it was such a tragic story that I never found out. And it was during
371
00:33:17.295 -->
00:33:18.115the Pi Tennessee
372
00:33:18.495 -->
00:33:24.995writing the the present at the keynote presentation for Pi Tennessee that I got out my copy of that book and discovered the translations
373
00:33:25.295 -->
00:33:41.215of what had been written in there, which was just stunning. I had I had no idea. It still brings tears to my eyes to think of how much regret I've had over my whole life and not knowing that the my absolution, so to speak, was in this book that I have been carrying with me for 30 years.
374
00:33:41.995 -->
00:34:01.840 Yeah. It's a very it's a very powerful story, and I think that it went well along with the presentation that you made with the motorcycle video Mhmm. Which I thought was well presented as well as the musical presentation, and it just it it blended all together really well. And I actually came home from the conference conference with, and they've said, you know, I I had to
375
00:34:03.100 -->
00:34:04.320show this presentation to this other person,
376
00:34:10.025 -->
00:34:18.125they've said, you know, I I had to show this presentation to this other person who isn't necessarily technical, but they were still able to appreciate what you put in there.
377
00:34:18.660 -->
00:34:21.480 Well, I was totally amazed by the the talks reception.
378
00:34:21.859 -->
00:34:26.180I knew it was a pretty good talk, but I had no idea that it would,
379
00:34:26.819 -->
00:34:28.119be that well received.
380
00:34:28.565 -->
00:34:32.585Plus, I must also say that I am proud of the fact
381
00:34:33.045 -->
00:34:33.545that
382
00:34:34.005 -->
00:34:34.905I can bring
383
00:34:35.205 -->
00:34:36.425that kind of emotion
384
00:34:36.860 -->
00:34:38.560to a group of technical people.
385
00:34:40.460 -->
00:34:43.280 Yes. There were That is an achievement in and of itself.
386
00:34:43.660 -->
00:34:45.760 Without violating the code of conduct.
387
00:34:46.085 -->
00:34:46.585 Yes.
388
00:34:48.964 -->
00:34:51.065So in addition to your
389
00:34:51.365 -->
00:34:57.940extensive technical career, you're also very focused on living in a manner that is sustainable and in tune with the environment
390
00:34:58.640 -->
00:35:04.605and your philosophies. And so I'm wondering what kinds of synergies and conflicts exist between your professional
391
00:35:04.905 -->
00:35:06.204and personal ideals.
392
00:35:07.224 -->
00:35:10.684 Well, I get pretty disgusted with the technical world
393
00:35:11.310 -->
00:35:13.570in how much energy and hardware
394
00:35:13.870 -->
00:35:14.610is wasted.
395
00:35:15.070 -->
00:35:17.490The fact that our computers and our phones
396
00:35:17.790 -->
00:35:27.085get turned over every 2 years and people who are lower on the economic scale, who have old computers because that's all they can afford,
397
00:35:27.705 -->
00:35:29.085but they get no support
398
00:35:30.089 -->
00:35:33.710and can't have the levels of security that we have.
399
00:35:34.010 -->
00:35:36.109I have some friends who live in rural Tennessee,
400
00:35:36.890 -->
00:35:42.225who use Apple Computers that are 10 years old. They can't get software updates anymore,
401
00:35:42.765 -->
00:35:46.065but it's all they can afford. And it really bothers me
402
00:35:46.480 -->
00:35:48.660that we have this stratification
403
00:35:49.600 -->
00:35:50.660of of technology.
404
00:35:51.760 -->
00:35:52.900Now as for
405
00:35:53.280 -->
00:35:54.260living sustainably,
406
00:35:54.715 -->
00:35:56.335I live on an organic farm,
407
00:35:56.635 -->
00:36:07.200I live in a yurt. 1 does not live in a yurt to be energy efficient because it is just a tent. Fortunately, my climate here is mild and our heating needs are fairly minimal,
408
00:36:07.500 -->
00:36:10.320but I do like the fact that my home
409
00:36:11.135 -->
00:36:13.315will last many many many years
410
00:36:13.775 -->
00:36:15.955and has a significant lower
411
00:36:16.335 -->
00:36:24.160significantly lower footprint than a house does. And at the point that I have to retire 1 of these tents, the yurts.
412
00:36:24.940 -->
00:36:29.075I can repurpose almost everything in it to some other other use.
413
00:36:29.695 -->
00:36:32.195I've started living in a yurt in 1995.
414
00:36:32.734 -->
00:36:45.280That particular yurt has been retired and there are pieces of it all over the farm serving all sorts of different kinds of duties from the parts that that didn't entirely wear out. We run our farm here as
415
00:36:45.745 -->
00:36:53.925essentially an incubator for people who wish to organically farm learn to organically farm. We lease the property out for 2 or 3 year blocks
416
00:36:54.280 -->
00:36:55.500to optimistic people,
417
00:36:55.960 -->
00:36:56.780and they
418
00:36:57.240 -->
00:37:02.060use our property to learn to farm. At the end of that 3 year period, they either graduate
419
00:37:02.360 -->
00:37:05.305and go off and buy their own properties and become farmers,
420
00:37:05.605 -->
00:37:09.890or they walk away glad they didn't spend more money learning they're not farmers.
421
00:37:10.450 -->
00:37:11.250And we have,
422
00:37:11.730 -->
00:37:13.750actually started at some very successful,
423
00:37:14.529 -->
00:37:15.269farm businesses
424
00:37:15.650 -->
00:37:19.109and had some pretty spectacular failures happen here too.
425
00:37:19.965 -->
00:37:27.460 And as somebody who is technically inclined, do you have a lot of agricultural automation or any sorts of, I guess,
426
00:37:28.020 -->
00:37:29.400sort of sensor driven,
427
00:37:30.020 -->
00:37:30.520agriculture?
428
00:37:31.780 -->
00:37:40.335 Not currently. When we were running the rose nursery, I sold the rose rose nursery in o 7, fortunately, right before the Rose Industry crashed. And,
429
00:37:40.715 -->
00:37:43.055I was just then starting to explore
430
00:37:43.355 -->
00:37:43.855using,
431
00:37:44.955 -->
00:37:45.455tagging,
432
00:37:46.075 -->
00:37:49.810of RFID tagging in plants to help track them in the greenhouses.
433
00:37:50.190 -->
00:37:57.494The system that I used, I I wrote for the for the uncommon rows in Python did some pretty amazing things that I still haven't seen reproduced
434
00:37:57.955 -->
00:38:01.655in other nurseries where customers would order plants,
435
00:38:02.210 -->
00:38:12.095to have them shipped to somewhere else in the country, and they generally in the rose industry, plants are ordered in the fall, they're shipped in the spring. The software that I wrote would go out to the websites
436
00:38:12.715 -->
00:38:14.095or the weather websites
437
00:38:14.555 -->
00:38:22.190and scrape data to find out what the conditions would be at the, destination locations for shipping. And if
438
00:38:22.490 -->
00:38:41.090the shipping route was likely to have bad weather or the destination was bad weather, it would automatically send an email to the customer suggesting we would like to delay shipment by 4 days because it's gonna be freezing in Denver, the likely route the plant will travel through in a truck and our customers love that and so we had that kind of sophistication
439
00:38:41.390 -->
00:38:52.025in our operation here, but that's all gone since we don't have the nursery anymore and the people who are doing farming here aren't particularly interested in that level of technology.
440
00:38:53.090 -->
00:38:55.510They're just trying to get plants to grow in the ground.
441
00:38:56.450 -->
00:39:00.285 That's great. Are there any other topics or questions that you think we should cover?
442
00:39:00.684 -->
00:39:05.905 Oh, I think we've talked often quite a bit here. I can't think of anything offhand.
443
00:39:06.444 -->
00:39:09.345I probably will, of course, 10 minutes after we
444
00:39:09.700 -->
00:39:10.359part, but
445
00:39:11.380 -->
00:39:22.915 I can live with that. Alright. Well, if you do think of anything else, you can feel free to join our discourse forum and continue the conversation there along with anybody else who cares to partake. Okay. That sounds great.
446
00:39:23.455 -->
00:39:29.520So for anybody who does want to follow what you're up to and keep in touch, what would be the best way for them to do that?
447
00:39:30.060 -->
00:39:30.560 My
448
00:39:31.100 -->
00:39:31.600website,
449
00:39:32.140 -->
00:39:32.8802 braids.com,
450
00:39:34.255 -->
00:39:34.755twobraids.com,
451
00:39:37.135 -->
00:39:41.154is where I do my blogging. That's where my portfolio of my art is,
452
00:39:42.250 -->
00:39:50.109and most of the stuff I do. I I tweet on Twitter at 2 braids, but it's the digit 2, braids.
453
00:39:51.215 -->
00:39:51.955Couldn't get
454
00:39:52.335 -->
00:39:53.875the spelled out 2 braids.
455
00:39:54.655 -->
00:40:01.540Unfortunately, the the poor woman who has that gets a lot of stuff directed to her that was supposed to be directed to me.
456
00:40:03.280 -->
00:40:10.055 And and for anybody who isn't familiar with your appearance, can you describe a bit about what the genesis of that name is?
457
00:40:11.315 -->
00:40:11.815 Back
458
00:40:12.195 -->
00:40:20.779in well, when I lived in the Blackfeet Indian Reservation, my beard is very long down to waist level, and I generally keep it braided into braids.
459
00:40:21.559 -->
00:40:22.059And,
460
00:40:22.520 -->
00:40:24.140you know, when I was teaching there,
461
00:40:24.920 -->
00:40:31.395I I gotta say I had 2 types of students, the men and the women. The women would say my name. The men
462
00:40:31.695 -->
00:40:38.580never would say my name. They'd always just call me white guy 2 braids. And so I embraced that and took the name 2 braids.
463
00:40:40.720 -->
00:40:46.765 That's great. It's a great story to go behind that. Alright. So with that, I will move us into the picks.
464
00:40:47.145 -->
00:41:10.950For my pick today, I'm going to choose Terry Pratchett because he is a wonderful author who has brought a lot of humor into this world and a lot of enjoyment for anybody who has read his books. I'm currently reading his last book that was published posthumously. So for anybody who has never discovered him or who has but has recently forgotten, I definitely recommend taking a look at anything that he's written. And with that, I will pass it to you, Lars.
465
00:41:11.750 -->
00:41:13.130 My pick for the day
466
00:41:13.589 -->
00:41:17.849is an old 1. I'm gonna say Johann Sebastian Bach's
467
00:41:18.265 -->
00:41:20.924tokata and fugue in d minor.
468
00:41:21.224 -->
00:41:24.204That's a great piece. If you listen to the fugue,
469
00:41:24.744 -->
00:41:26.125you will hear examples
470
00:41:27.220 -->
00:41:28.599of multi threading
471
00:41:28.900 -->
00:41:30.359and cooperative multitasking
472
00:41:31.059 -->
00:41:31.720in music.
473
00:41:32.420 -->
00:41:38.464 Alright. Well, I really appreciate you taking the time out of your day to join me and tell me about some of your
474
00:41:38.765 -->
00:41:40.545work history and philosophies
475
00:41:41.085 -->
00:41:53.380and, the wonderful stories that went into your and, the wonderful stories that went into your presentations and everything that you've done. So I appreciate it, and I hope you enjoy the rest of your evening. Thank you very much. It was an honor to talk with you, and have a good evening.