WEBVTT
NOTE
Transcription provided by Podhome.fm
Created: 7/6/2024
5:36:47 PM
Duration: 4763.239
Channels: 1
1
00:00:15.424 -->
00:00:16.965 Hello, and welcome to podcast.init,
2
00:00:17.710 -->
00:00:24.609the podcast about Python and the people who make it great. We are recording today on July 20, 2015.
3
00:00:25.335 -->
00:00:28.314Your host as usual are Tobias Macy and Chris Patti,
4
00:00:28.855 -->
00:00:32.074and you can follow us on Itunes, Stitcher, or TuneIn Radio.
5
00:00:32.590 -->
00:00:40.210You can also follow us on Twitter and Google plus with links in the show notes. And please give us feedback. You can leave us a review on iTunes,
6
00:00:40.525 -->
00:00:43.185contact us on Twitter, send us an email at hostpodcastinit.com,
7
00:00:44.525 -->
00:00:48.945or leave a comment in our show notes. You can also leave a comment on our Google plus page.
8
00:00:49.730 -->
00:00:56.950We donate our time to you because we love Python and its community. If you'd like to return the favor, you can send us a donation with details on our site.
9
00:00:57.275 -->
00:01:02.015Everything that we don't spend on producing the show will be donated to the PSF to keep the community alive.
10
00:01:02.555 -->
00:01:04.495Today, we're interviewing Glyph Lefkowitz
11
00:01:04.875 -->
00:01:06.815about software and ethics.
12
00:01:07.150 -->
00:01:08.850Glyph, could you please introduce yourself?
13
00:01:09.950 -->
00:01:14.050 I'm Glyph. I'm a software developer at Rackspace, although most famously,
14
00:01:14.430 -->
00:01:19.585the founder of the Twisted Project. I like writing programs, and apparently, I like talking about it.
15
00:01:21.165 -->
00:01:24.145 In that vein, how did you get introduced to Python?
16
00:01:25.190 -->
00:01:28.170 So my introduction to Python was, in the year 2000,
17
00:01:28.790 -->
00:01:34.410around Python version 1 5 2. I was working on a sprawling multi user gaming server
18
00:01:34.744 -->
00:01:35.485for collaborative
19
00:01:35.945 -->
00:01:37.645text based gaming in Java.
20
00:01:38.265 -->
00:01:38.765And,
21
00:01:39.465 -->
00:01:46.420long story short, it wasn't working so good. And, Python introduced me to a whole new and vastly simpler way to think about the problem.
22
00:01:47.040 -->
00:01:52.274Python actually introduced me to asynchronous IO via the Select module because it was much more,
23
00:01:52.975 -->
00:01:58.274low level and direct mapping to what the operating system was doing, so it gave me a much better
24
00:01:58.780 -->
00:02:00.799understanding of how my computer is
25
00:02:01.180 -->
00:02:04.400actually doing the IO, which allowed me to write much less buggy
26
00:02:04.860 -->
00:02:07.119software and I pretty much haven't looked back since.
27
00:02:07.765 -->
00:02:12.825 That's great. And that certainly leads into the question that we're not gonna ask, which is what led you to develop Twisted?
28
00:02:13.125 -->
00:02:14.885 Cool. Well, there are definitely lots of other,
29
00:02:15.739 -->
00:02:23.440podcasts and interviews and blog posts where you can go read that story of how Twisted came to be. Yeah. It's a refreshing change to not have people ask about it right off.
30
00:02:24.735 -->
00:02:32.595 So let's start with the bad news. What are some of the potential widespread implications of less than ethical software that you were referring to you in your PyCon talk?
31
00:02:33.069 -->
00:02:37.730 Well, I think there's 1 obvious 1 which I did mention in the talk, which is, Robot Apocalypse.
32
00:02:38.030 -->
00:02:41.810I think we need to be watching out for that 1. But more seriously, there are,
33
00:02:42.334 -->
00:02:50.090I think that a lot of discussion around this tends to get derailed. The reason I brought up the robot apocalypse kind of as a joke in the talk was
34
00:02:50.650 -->
00:02:56.349a lot of the discussion around this derails into sort of nightmare scenarios where you have
35
00:02:56.650 -->
00:02:57.709bridges collapsing
36
00:02:58.010 -->
00:02:58.510and
37
00:02:59.075 -->
00:03:03.495cities catching fire and, like, that kind of stuff, I think. Yeah. There are dramatic examples
38
00:03:04.515 -->
00:03:10.200of software causing really serious issues, like the Therac 25 radiation therapy machine. Oh, yeah. It's
39
00:03:10.580 -->
00:03:14.920like off-site of example. Or more recently, I mean, this, you know, Therac 25 is the
40
00:03:15.460 -->
00:03:16.280mid eighties.
41
00:03:16.595 -->
00:03:20.135But more recently, the Toyota unintended acceleration scandal.
42
00:03:20.435 -->
00:03:26.519The and, again, I think earlier this week even, Toyota was in the news again for a half a 1000000 vehicle recall
43
00:03:26.980 -->
00:03:34.840relating to a less dramatic software bug that just turned off the hybrid system sometimes. Though those happened on teams that were engineering physical products
44
00:03:35.205 -->
00:03:45.610and that had existing codes of medical and engineering ethics, so there are always lapses. Right? Like, it's not really unique to software And a lot of the really dramatic examples
45
00:03:46.150 -->
00:03:47.690are things which,
46
00:03:48.390 -->
00:03:51.610although the flaw was due to software, it was more due to
47
00:03:52.135 -->
00:03:52.635incompetence
48
00:03:53.495 -->
00:04:05.410or just being too early in the field rather than a lack of ethical judgment. The real consequence that I'm practically worried about is the sort of gradual erosion of trust in computers and programmers.
49
00:04:06.085 -->
00:04:22.080Much of the world today does all of their computing via mobile devices already, and given that you need, like, a professional programmer to write this offer for your mobile device, it On a general purpose computer, it's sort of hypothetically possible that you could write all your own apps. Of course, it's prohibitively expensive, but
50
00:04:22.785 -->
00:04:23.685it's at least
51
00:04:24.465 -->
00:04:24.965conceivable.
52
00:04:25.345 -->
00:04:25.845Whereas,
53
00:04:26.225 -->
00:04:34.200on a, on a mobile device, you are dependent on someone with a real computer to write that software for you for both licensing
54
00:04:35.060 -->
00:04:36.280and, and practical,
55
00:04:36.740 -->
00:04:38.360sort of, form factor reasons.
56
00:04:38.735 -->
00:04:42.115And given that we have that increasing level of trust where there's multiple
57
00:04:42.655 -->
00:04:45.315classes of people in their relationship with technology,
58
00:04:45.890 -->
00:05:00.465If the people who really depend on technology to live their lives, but I think it was the European Union famously recently said, to be a productive member of modern society, you need Internet access, and Internet access should be a human right. If that access is mediated by basically untrustworthy
59
00:05:00.765 -->
00:05:04.110people who are just trying to sell more ads, I think that that's
60
00:05:04.509 -->
00:05:07.810going to produce a pretty bad outcome for society generally. And
61
00:05:08.189 -->
00:05:11.725the really, the the end game of that scenario is that
62
00:05:12.125 -->
00:05:16.785there will be lots and lots of things which could make many people's lives better, which we could do with computers,
63
00:05:17.485 -->
00:05:32.225and people just won't do them because they won't believe that it would be trustworthy. So we will be living in an intentionally backward society because the people who could be pushing us to the frontiers of progress are not trustworthy. So I wanna avoid that.
64
00:05:32.925 -->
00:05:33.425 Absolutely.
65
00:05:33.805 -->
00:05:39.025It just occurs to me, a really recent example of that is the Office of Personnel Management
66
00:05:39.430 -->
00:05:44.650breach that happened with the federal government. And I was just listening to a podcast this morning where
67
00:05:44.950 -->
00:05:53.145all the people who are in charge are now saying things like, oh, maybe we should go back to paper. It's that kind of thing. Right? Like, the people who
68
00:05:53.525 -->
00:05:55.305use this system that the OPM
69
00:05:55.900 -->
00:05:58.240u utilized to vet all these employees,
70
00:05:59.180 -->
00:06:05.914suddenly, they're gonna have to wait probably months months longer to get the job done and to get that job they're looking for because
71
00:06:06.375 -->
00:06:14.520we're no longer using a nice, like, automated web based system. We now have to deal with paper being lost, found, buried in peat moss, and exhumed.
72
00:06:15.300 -->
00:06:16.500 Right. And I I think it's,
73
00:06:17.700 -->
00:06:26.854you you might wanna talk to some federal employees about the software they're using before you use terms like NICE, slick, and automated to describe it. But, yes, I think that you're
74
00:06:27.155 -->
00:06:28.930you're you're pointing out another sort of
75
00:06:29.330 -->
00:06:30.710dramatic but more practical
76
00:06:31.330 -->
00:06:34.789area where these types of lapses happen and that is security.
77
00:06:35.650 -->
00:06:37.910And again, like, I don't think that the OPM
78
00:06:38.335 -->
00:06:52.069was that was a sort of explicit ethical breach. There was no mustache twirling villain. Of course, the people who broke in stole all the stuff, that that was potentially, at least, nominally evil. But the people who developed the software that was vulnerable,
79
00:06:52.449 -->
00:06:57.715probably just didn't know that it was vulnerable. And moreover, we don't have good industry standards
80
00:06:58.175 -->
00:06:58.915to indicate
81
00:06:59.855 -->
00:07:00.995what vulnerability
82
00:07:02.015 -->
00:07:06.010is and what what an acceptable set of practices to mitigate those vulnerabilities is.
83
00:07:06.790 -->
00:07:14.330So, the place where the discussion about ethics needs to start, and this is in the session that we had after the talk, at PyCon. We had a sort of breakout
84
00:07:14.795 -->
00:07:15.855roundtable discussion.
85
00:07:16.315 -->
00:07:18.575This is the very first place that we went there too.
86
00:07:19.595 -->
00:07:27.500The first thing you need to have a good code of ethics is a clear understanding of the realities that you are trying to
87
00:07:27.880 -->
00:07:29.979litigate, basically. You need to understand
88
00:07:31.414 -->
00:07:33.354what actually does make secure software.
89
00:07:33.655 -->
00:07:34.155That's
90
00:07:34.534 -->
00:07:38.875where we are right now. We don't know. There are lots of people who think that they know.
91
00:07:39.319 -->
00:07:49.865And lots of snake oil salespeople and lots of very well intentioned people. Like, I certainly have my own opinions about what makes software secure, and I will happily tell you what they are. But we don't have a general social understanding
92
00:07:50.965 -->
00:08:03.060of, like, okay, there's established science. We know that if you do x, y, and z, you will get a good result, you will get secure software, you will get ethical software that faithfully exceeds the user's intent. And then,
93
00:08:03.824 -->
00:08:10.164on the flip side, if you do things a, b, and c, you will get bad results, you will get insecure software, and so on. And,
94
00:08:11.130 -->
00:08:13.670you know, even the few things that we do know about
95
00:08:14.370 -->
00:08:19.145software development at this point, like, I can't remember who said this, It might have been my dad, honestly.
96
00:08:19.544 -->
00:08:22.925But the only reproducible result in software engineering research
97
00:08:23.305 -->
00:08:27.564is that you have to give programmers offices with floors that close.
98
00:08:28.700 -->
00:08:33.200If you look over the history of software engineering research, you will see that result over and over and over again. Distractions
99
00:08:33.660 -->
00:08:34.160and
100
00:08:34.780 -->
00:08:35.785the lack
101
00:08:36.185 -->
00:08:38.845of uninterrupted periods of time to get work done
102
00:08:39.785 -->
00:08:49.820are very serious impediments to defect rate and all kinds of other things. But if you look at these modern, state of the art in industry, we're not even paying attention to those very basic results.
103
00:08:51.080 -->
00:09:07.090As I mentioned, I work at Rackspace. I'm favorably inclined towards my employer. They're generously donating the time for me to be on this podcast. They like the fact that I'm talking about ethics and it's the kind of culture that we have at Fact Space. But we don't have offices with doors that close. And
104
00:09:07.790 -->
00:09:13.545in in a way, that's a competitive reality. Right? Like, you you have an industry where people expect a certain
105
00:09:13.925 -->
00:09:16.425retail price per square foot in real estate,
106
00:09:16.964 -->
00:09:17.464and
107
00:09:18.005 -->
00:09:30.260then do the math and say, Well, it's going to cost 4 times as much if you put people in officesi. I I made that number up, I donit know if itis 4 times as much. I Sure. I But, you do that kind of analysis, and you say, iThereis a very concrete cost we can tie to this
108
00:09:30.865 -->
00:09:37.445aspect of development. We know that it is going to cost $X more to give people this interior walls, the construction,
109
00:09:38.350 -->
00:09:39.250the square footage.
110
00:09:39.710 -->
00:09:49.495We don't really know. Even with all those lovely experimental results from, all the different studies that have shown that doors with clothes help, we don't know how much they help. We don't know how
111
00:09:50.035 -->
00:09:53.654how well that's gonna, you know, push along our,
112
00:09:54.035 -->
00:09:55.815our development practices. So given,
113
00:09:56.410 -->
00:10:05.070this big unknown cost on the 1 hand and unknown cost on the other, we have to make the only responsible decision available to us, which is to make the mistake according to
114
00:10:05.404 -->
00:10:12.625software engineering research, because the research isn't thorough enough. It's not well understood enough. So, I think, really, the place where a
115
00:10:13.170 -->
00:10:16.870solid founding for ethics will begin is in academia,
116
00:10:17.330 -->
00:10:17.830in
117
00:10:18.370 -->
00:10:22.230research, and particularly in treating software development more like psychology
118
00:10:22.735 -->
00:10:24.035than, like, computer science.
119
00:10:25.055 -->
00:10:37.190 In your talk, you commented on the training courses that lawyers are required to take as part of their certification. Do you think the fact that there is no standardized certification body for software development contributes to a lack of widely held ethical principles in software engineering?
120
00:10:38.290 -->
00:10:41.524 I think the lack of ethical principles
121
00:10:41.825 -->
00:10:50.084and the lack of a standard certification body are both indications or symptoms of the same root cause, which is that software is a very,
122
00:10:50.709 -->
00:10:51.850very new field.
123
00:10:52.230 -->
00:10:56.490And like I was just saying about the scientific understanding of the field, there's
124
00:10:57.269 -->
00:10:58.170that, that
125
00:10:59.014 -->
00:11:00.875novelty, that newness is
126
00:11:01.415 -->
00:11:02.634makes it so that
127
00:11:03.095 -->
00:11:06.154we have a whole bunch of different approaches all going on at the same time,
128
00:11:06.699 -->
00:11:10.160and nobody really knows what's the best 1 is. So
129
00:11:10.860 -->
00:11:15.279you get these these standard certification authorities, the kind of standard curricula in
130
00:11:15.935 -->
00:11:21.714various other fields tend to arise in very long periods of time. The canon gets established.
131
00:11:22.255 -->
00:11:23.795And then once it's established,
132
00:11:24.580 -->
00:11:32.200then there have been a couple of notable examples of people not learning it and screwing up, then you get the codes of ethics in the professional organizations.
133
00:11:33.015 -->
00:11:34.235So I feel like
134
00:11:34.615 -->
00:11:35.115we're
135
00:11:37.015 -->
00:11:42.990the the question is a little bit leading. It's like, should we have that kind of, you know, certification authority? Should we have that central
136
00:11:43.770 -->
00:11:47.230establishment for for gating who can become a software developer?
137
00:11:48.090 -->
00:11:55.375And I think it's too early for that because if we try to do that, we don't know enough yet. We need to be having this very
138
00:11:55.995 -->
00:12:00.415robust discussion about what is really required and that's gonna
139
00:12:00.770 -->
00:12:05.350take some time. And I know that this is the the weird thing about this discussion is, of course,
140
00:12:05.890 -->
00:12:07.855that novelty and that newness that
141
00:12:08.415 -->
00:12:15.235software developers, you know, are attracted to the field because of it. We all love moving fast and, you know, doing things quickly and coming to consensus
142
00:12:15.730 -->
00:12:26.295on as little data as we can just so we can move forward. And this is 1 of those places where we really, really can't do that. It's it's gonna take it might take longer than, you know, our lifetimes to really
143
00:12:26.915 -->
00:12:33.415nail this down. I hope not. I hope that I will live to see a standard ethical code for software developers. But I think
144
00:12:34.470 -->
00:12:37.430a decade would be optimistic at this 0.1
145
00:12:37.430 -->
00:12:48.625of the reasons I'm so interested in this topic and I'm trying to talk about it as much as I can now is that if we're gonna be done within a decade, this needs to be a broad discussion with the the industry getting a lot of different voices
146
00:12:49.005 -->
00:12:52.760involved and hearing, you know, what a lot of different people think.
147
00:12:53.860 -->
00:12:54.760 Yeah. So
148
00:12:55.380 -->
00:12:58.680to your point about whether or not there needs to be a standardized
149
00:12:59.220 -->
00:13:01.255certification board or something of that
150
00:13:02.375 -->
00:13:13.980type, there's definitely a risk that if we were to instate such a such an entity that it could drive people away from software engineering or it could keep people from wanting to get involved in it. Because
151
00:13:14.440 -->
00:13:21.334as you said, it is a new and very popular field. And a lot of people are flocking to it. And people are even
152
00:13:21.635 -->
00:13:24.855leaving jobs of other types to start software engineering,
153
00:13:25.610 -->
00:13:30.910whether they go through a boot camp process or they're entirely self taught or go back to school for it.
154
00:13:31.290 -->
00:13:31.790And
155
00:13:32.925 -->
00:13:35.585having that barrier could potentially hinder
156
00:13:36.205 -->
00:13:40.145adoption of software as a profession. So 1 of the
157
00:13:40.540 -->
00:13:45.440things about software is that there is the potential to get started at it with
158
00:13:46.380 -->
00:13:52.264fairly minimal investment depending on how you go about it. And if if we were to add any gateways, it could potentially
159
00:13:52.964 -->
00:14:01.320exclude people who would otherwise get involved who may not have the resources or the time or the inclination to submit themselves to that standardization?
160
00:14:02.660 -->
00:14:09.615 Oh, absolutely. I mean, I I think it would be an absolute death knell for the industry if we were to try to institute some kind
161
00:14:10.395 -->
00:14:13.295of requirement or credential that was standard.
162
00:14:13.600 -->
00:14:20.019I mean, most of the good software developers that I know, most of the best, dropped out of college or even dropped out of high school in many cases.
163
00:14:20.399 -->
00:14:23.060And so whatever strategy we developed for
164
00:14:23.384 -->
00:14:43.605dealing with the ethical obligations that we have in the field really needs to figure out some way to take that into account. Like I don't think the traditional schooling works super well for software development. Arguably, it doesn't work super well for anything, but that's probably a different podcast. The software developers who are getting into the field now need to be able to keep getting into the field and we need to figure out a way to
165
00:14:44.464 -->
00:14:46.884promote a culture of ethical responsibility
166
00:14:47.665 -->
00:14:48.644to those folks
167
00:14:49.110 -->
00:15:00.705without having to put them through the central gatekeeping process. And that may mean that unlike the fields, that I allude to and and that I compare us to, like medicine and engineering and so on,
168
00:15:01.485 -->
00:15:03.345those those fields are
169
00:15:03.805 -->
00:15:09.140while I think there's useful things to emulate there, they're also very old fields that have a lot you know, like,
170
00:15:09.520 -->
00:15:18.964the idea of engineering certification goes back to the, I think the Roman Empire, where the engineering certification process. And this is something we might wanna we might wanna
171
00:15:19.345 -->
00:15:28.199take for, software developers just to think about. When you wanted to become a certified engineer in the Roman Empire, you would build an arch, and then you would stand under it for 10 minutes.
172
00:15:29.139 -->
00:15:31.880And, you know, if you survived, then you were an engineer.
173
00:15:32.495 -->
00:15:36.835That that was a pretty lightweight process, but it had an obvious consequence. And I think that
174
00:15:37.615 -->
00:15:38.355we could
175
00:15:38.735 -->
00:15:39.795develop something
176
00:15:40.390 -->
00:15:46.170even even in the days of the Roman Empire, like engineering was an older profession than software development is right now. So
177
00:15:46.710 -->
00:15:48.330I think we could develop something
178
00:15:48.915 -->
00:15:56.455along the lines of ethical certification process that was opt in, that was something that you could, like, agree to and use to market yourself
179
00:15:56.820 -->
00:16:03.060as an individual or as a company. I think that 1 of the problems with the way that we have the dialogue around this is that,
180
00:16:03.779 -->
00:16:07.195in the case of doctors and lawyers, the ethical responsibility
181
00:16:07.575 -->
00:16:08.075is,
182
00:16:08.615 -->
00:16:15.675although there are sometimes institutional problems, it very clearly lies with the individual, unlike the the penalties of, like, disbarment and,
183
00:16:16.060 -->
00:16:24.680you know, having your medical license revoked are individual punishments because it really comes down to the decisions of a single person. Whereas in in software, I think
184
00:16:25.095 -->
00:16:32.795most of the kind of really challenging ethical problems that we're facing today at least are not the result of individual rogue software developer
185
00:16:33.490 -->
00:16:37.430going off doing and doing some shady thing. It's mostly
186
00:16:37.810 -->
00:16:46.385like teams that have incentives which cause them to do things which their employer has explicitly asked them to do. And of course, you could in,
187
00:16:47.425 -->
00:16:48.404dramatic fashion
188
00:16:49.180 -->
00:16:51.680say, Oh, well, I'm not going to do that thing. It's unethical.
189
00:16:52.060 -->
00:16:59.945In reality, that wouldn't be that helpful because there's still, like, 6 more people on your team and they've got ETH and so somebody is probably going to do it.
190
00:17:00.885 -->
00:17:06.105We have to think, in the software industry, how are we going to make these ethical obligations
191
00:17:08.120 -->
00:17:22.765beholden to like, make make software engineering managers, make executives beholden to these ethical principles as well. It it's gotta be a tree you do have to have the individual engineers caring about it, but you also can't be punishing the individuals too harshly for
192
00:17:23.679 -->
00:17:26.740systematic things, especially because we're not talking about
193
00:17:27.440 -->
00:17:33.845black and white war crimes type moral decisions, we're talking about really subtle things about, like, you
194
00:17:34.304 -->
00:17:42.965know, how do you present a user interface choice or how big does the ad get to be in the in your software and what how
195
00:17:43.809 -->
00:17:54.625what kinds of UIs are misleading, what are dark patterns, what are not, you know, those those are really complicated, subtle questions that end up getting debated by a group. So the whole group has to have a a shared understanding
196
00:17:55.165 -->
00:18:01.910of what the right, if not the right answer, at least the right way to go about getting to a good ethical answer would be. So
197
00:18:02.210 -->
00:18:05.910 assuming that we can all agree on a set of relatively strict professional ethics,
198
00:18:06.210 -->
00:18:09.670how would we enforce those ethics? Do you advocate an honor system?
199
00:18:10.274 -->
00:18:14.855 Well, ethics are almost by definition an honor system, especially professional ethics.
200
00:18:15.315 -->
00:18:18.830I think, enforcing them is reasonably straightforward.
201
00:18:19.210 -->
00:18:32.655You would need a professional organization to maintain some kind of record and then you'd need the public to pay attention to that record. In the case of individuals, you could have lawyers pay attention to it, but like I said, most infractions are going to be committed by organizations,
202
00:18:32.955 -->
00:18:41.610not by individuals. So that it I think that actually the easiest way that we can kind of get the ball rolling early, and by early I mean in the next 5 years maybe,
203
00:18:41.910 -->
00:18:43.690is to have some kind of
204
00:18:44.925 -->
00:18:45.425ethical
205
00:18:45.885 -->
00:18:50.945standards trademark that you can say, like, well, you know, we we got this proposed code of ethics.
206
00:18:51.390 -->
00:18:52.050This organization
207
00:18:53.070 -->
00:19:01.355claims to adhere to it. They can put the banner on their website, and then to use the legal enforcement mechanisms behind trademark law of, like, you can't display this banner
208
00:19:01.735 -->
00:19:02.235unless
209
00:19:03.254 -->
00:19:05.575we have a clean record for you. And,
210
00:19:06.215 -->
00:19:06.860I think
211
00:19:07.260 -->
00:19:26.970you also need to have a very careful maintenance of that record. It could obviously be used especially against individuals to, like, destroy their prospects for employment. That said I mean I think we do need better laws around software too. I don't think I've seen a single legislature anywhere in the world doing a good job regulating software. Mostly I think though it needs to be better
212
00:19:27.669 -->
00:19:28.169jurisprudence.
213
00:19:28.870 -->
00:19:31.690Like, judges need to do a better job of
214
00:19:32.295 -->
00:19:35.115just interpreting existing law in the context of
215
00:19:35.575 -->
00:19:36.075computers.
216
00:19:36.455 -->
00:19:37.995Quite often, the decisions
217
00:19:38.295 -->
00:19:41.310that come out of cases relating to things like
218
00:19:41.710 -->
00:19:43.570like harassment. Harassment's illegal.
219
00:19:44.030 -->
00:19:48.210It's always been illegal basically. There's threatening people as
220
00:19:48.885 -->
00:20:03.220there are various punishments for that in various contexts. But you put it on the internet and suddenly it's cyber, and you need to have a whole new discussion about how this is gonna work. And 1 of the things I wanna stay away from in the discussion of, you know, software development ethics is to say, like, it's not that
221
00:20:03.679 -->
00:20:05.385you need a whole new ethics of
222
00:20:06.025 -->
00:20:17.549making stuff or medicine or you know any of these other fields. We already have pretty well established codes of ethics there to the extent that you're making medical devices with software, you should mostly be following existing
223
00:20:17.850 -->
00:20:22.110medical device engineering codes of ethics for how that should operate.
224
00:20:23.055 -->
00:20:28.195So it's not that something being in software makes it magical. It's that software has a couple of
225
00:20:28.575 -->
00:20:43.605other properties that we need to take into consideration, like the fact that someone can have a device, tell the device to do something, and that device can kind of countermand their wishes. You can't have a lever that if you push down on it it actually pushes backwards, right? Like
226
00:20:43.985 -->
00:20:53.420that that's not a machine that could exist in the real world, but computers can kind of do stuff you didn't want them to. And that that's the big ethical challenge there.
227
00:20:54.840 -->
00:21:00.684 Absolutely. And it also seems to me that with regards to the honor system, you know, versus a professional organization
228
00:21:00.985 -->
00:21:01.485enforcement,
229
00:21:02.424 -->
00:21:23.425I really like your idea of Underwriters Labs of ethical software dev because you're never gonna prevent the people like, to use another infosec example, the hacking team from selling really just downright evil malicious software to, let's say, governments like the Sudan, because they're gonna be able to make money hand over fist doing it, and no amount of
230
00:21:23.885 -->
00:21:24.945professional organization
231
00:21:25.690 -->
00:21:28.030demerits and violations are gonna stop them.
232
00:21:28.570 -->
00:21:30.110 Right. And that is a
233
00:21:30.410 -->
00:21:35.310a great example of the underwriters' labs. And the thing about somebody like hacking team is
234
00:21:35.875 -->
00:21:37.575while they had a lot of problems,
235
00:21:38.115 -->
00:21:48.880I think there's there's kind of 2 separate things and you have to look at them separately and say, like, which 1 do I care about more? Because you have to make trade offs sometimes. And 1 is being a basically decent
236
00:21:49.580 -->
00:21:50.480human individual.
237
00:21:51.100 -->
00:21:51.600And
238
00:21:52.355 -->
00:21:59.495a software engineering code of ethics will not tell you how to do that and really shouldn't tell you how to do that. In my mind, and I there's a lot of, debating
239
00:21:59.795 -->
00:22:09.640back and forth over this, and organizations charged enforcement of ethics, so this is more of a personal opinion, generally accepted thing. But in my mind, professional ethics are all about the counterintuitive
240
00:22:10.100 -->
00:22:17.304parts of your relationship to society in a particular profession, and not necessarily so much about good and evil. So, like, the
241
00:22:17.684 -->
00:22:18.345the examples,
242
00:22:18.799 -->
00:22:24.179you know, I mentioned this in my talk and they're often brought up in in lots of other contexts. You know, a doctor
243
00:22:24.480 -->
00:22:27.380saving a patient who's gonna go on and kill people or
244
00:22:27.905 -->
00:22:31.205a lawyer who's, you know, a defense attorney for a a murderer.
245
00:22:32.385 -->
00:22:36.405In in Hacking Team's case, like, sometimes you actually need the people
246
00:22:36.785 -->
00:22:37.285to
247
00:22:38.240 -->
00:22:51.610go and, you know, do quote unquote bad stuff with computers because they're making a weapon. I mean, Alan Turing was basically a hacker. Right? I mean, he cracked encryption and broke into people's, you know, communications, like,
248
00:22:52.330 -->
00:22:58.590but I think we're all pretty glad he did. But the the thing there is, you know, if if you have an unethical application,
249
00:22:59.105 -->
00:23:02.005you know, of software development, you're using it to do something malicious,
250
00:23:03.424 -->
00:23:05.265there are also circumstances where,
251
00:23:06.145 -->
00:23:07.605you might wanna use a weapon.
252
00:23:07.970 -->
00:23:13.190And, like, if you're willing to pause it that there are cases where you might wanna have, like, a military,
253
00:23:14.130 -->
00:23:17.110who's gonna use actual physical weapons to shoot at people,
254
00:23:17.565 -->
00:23:28.010then that ethical discussion moves into a different realm and is not really about, like, at that point you can evaluate, like, okay, we have software developers working for the military. For them to be ethical, they have to,
255
00:23:28.470 -->
00:23:36.995you know, make the software that targets the guns shoot at the right targets and yes the result the outcome of that software is going to be, you know, human death and suffering.
256
00:23:37.455 -->
00:23:47.940Right. But that's that's not really a, you know, was this software ethical ethically developed kind of question. That's like a should we be doing this at all kind of question. In a sense, it's almost like
257
00:23:48.240 -->
00:23:51.625 the hacking team or somebody like them could conceivably
258
00:23:52.005 -->
00:24:01.970earn the, you know, ethical software developer underwriter's seal if they were totally clear about the weapons that they were building and what they did and and represented them,
259
00:24:03.149 -->
00:24:03.649honestly
260
00:24:04.190 -->
00:24:16.245 to their users. Right. Like, we are merchants of death, and that's what we do. Right? Like, if you buy this software, it will kill some people. And that's maybe that's a terrible thing. Maybe it's a good thing. Maybe that that's really called for.
261
00:24:16.930 -->
00:24:26.915You know, that's it's more about, like and, of course, you know, Hacking Team had other issues. Like, if you're a company called Hacking Team, maybe you wanna make sure you don't get hacked. Like,
262
00:24:27.615 -->
00:24:32.195that that that kind of stuff, I think, might put them into a grayer area with the, you know, ethical
263
00:24:32.975 -->
00:24:37.720development standards. Whenever we start talking about ethical software development, it immediately goes to security.
264
00:24:38.420 -->
00:24:41.640And it's there's also kind of an operational security
265
00:24:42.365 -->
00:24:48.545aspect of security, which has nothing to do with the software that you've developed and has more to do with, like, how it's deployed, how it's run, how it's monitored.
266
00:24:48.925 -->
00:24:50.700So, like, there's a there's a big
267
00:24:51.179 -->
00:25:01.735gray spectrum that we need to make CRISPR and say, like, whose responsibility is this really? Because you can have breaches on totally secure systems. Right? Social engineering will get you into a system
268
00:25:02.195 -->
00:25:05.495more easily than technical exploits, 9 times out of 10. So,
269
00:25:06.034 -->
00:25:07.735you know, at that point,
270
00:25:08.400 -->
00:25:15.285it it becomes a much trickier proposition to say, like, well, is the software at fault? Right? Well, it probably should have
271
00:25:15.845 -->
00:25:18.905afforded some better password reset mechanism or something.
272
00:25:19.445 -->
00:25:24.185It it's it's not straightforward that it's always the software's fault when there's security issues.
273
00:25:25.490 -->
00:25:27.670 Yeah. That goes back to your point about
274
00:25:28.690 -->
00:25:29.190separating
275
00:25:29.650 -->
00:25:34.865the intent or purpose of the software from the way in which it was created,
276
00:25:35.804 -->
00:25:37.505you know, that's definitely a very important
277
00:25:38.125 -->
00:25:43.345delineation to make during any aspect of conversation around ethics is
278
00:25:44.130 -->
00:25:44.630that
279
00:25:45.970 -->
00:25:49.270the purpose and intent of what is being created isn't necessarily
280
00:25:49.570 -->
00:25:52.950inextricably linked with how it was created. And the
281
00:25:53.275 -->
00:25:56.255particular subject matter that we're discussing here is
282
00:25:56.715 -->
00:25:58.495making sure that our
283
00:25:58.955 -->
00:26:00.095process of creation
284
00:26:00.715 -->
00:26:02.495is ethical and
285
00:26:02.870 -->
00:26:05.370adheres to a particular set of standards.
286
00:26:05.750 -->
00:26:06.890And the actual
287
00:26:07.510 -->
00:26:16.455purpose of that software is entirely dependent on the business case, and that goes into a whole another realm of ethics that is dependent on making sure that businesses
288
00:26:16.915 -->
00:26:20.054and governments are producing things that are
289
00:26:21.600 -->
00:26:23.940ethical in the broader scope of
290
00:26:24.480 -->
00:26:24.980humanity
291
00:26:25.360 -->
00:26:26.180and society
292
00:26:26.720 -->
00:26:29.700and trying to encompass all of that within
293
00:26:30.144 -->
00:26:33.184a code that is specifically targeting software just really
294
00:26:34.144 -->
00:26:36.565it goes it it goes completely out of scope.
295
00:26:37.105 -->
00:26:44.020 Right. And this is where I, you know, I mentioned in my talk, we have existing professional organizations. They have existing codes of ethics.
296
00:26:44.480 -->
00:27:02.350But most, I mean, most of the audience have not even heard of them. Like, some of them were very, you know, vociferously came up to me after the talk. And I'm like, did you know, you know, this code of ethics is already accepted by so many people? The thing is that the IEEE and ACM codes of ethics are both basically, like, you should develop your software
297
00:27:02.935 -->
00:27:13.769in accordance with the user's interests and in accordance with the public interest and in accordance with the law and you should be a good person and you should do what your employer wants. It's like, okay, we have, like, 10 constraints here,
298
00:27:14.230 -->
00:27:26.095and you can't satisfy all of them. So, do they have a priority order? Like, if I have to sacrifice 1, which is it? Or if I have to sacrifice any 1 of them, do am I morally obligated to just walk away? Like,
299
00:27:26.555 -->
00:27:30.540if every project required that every ethical developer on it,
300
00:27:30.940 -->
00:27:38.755you know, just walk away if it was not in the maximal public interest and their employer's interest and the user's interest and their own interest and, like,
301
00:27:39.235 -->
00:27:44.215if you if you try to maximize all those simultaneously, you're obviously not going to be able to do it. But,
302
00:27:44.515 -->
00:27:45.015so
303
00:27:45.475 -->
00:27:53.230that's why I think a lot of these are insufficient is that they they they tried hard to just say, well, software is confusing, you should be a good person.
304
00:27:54.090 -->
00:27:57.070And, 1 of the things that we also have to, like, remember is
305
00:27:57.695 -->
00:27:59.395we have as a civilization
306
00:27:59.775 -->
00:28:06.670very different ideas of what it means to be a good person. And if we try to cram all of those in this code of ethics, we will never have any
307
00:28:07.070 -->
00:28:07.890 consensus. Exactly.
308
00:28:08.510 -->
00:28:09.570The different cultural
309
00:28:10.110 -->
00:28:11.810norms and the
310
00:28:12.190 -->
00:28:18.495different value, you know, value systems of people dependent on whether it's their nationality or their belief system or
311
00:28:18.795 -->
00:28:20.175whatever might be the case.
312
00:28:20.715 -->
00:28:29.690As you said, it's just too large of a scope to even begin trying to think about encompassing within a ethical code that is targeting a professional activity.
313
00:28:30.310 -->
00:28:42.789 Right. And we and we have to be looking at, you know, to the extent that we need an ethical code to target that professional activity, it's what's special and different about that professional activity than about everyday life. And really, the moral
314
00:28:43.410 -->
00:28:44.390problem that
315
00:28:44.850 -->
00:28:46.470I'm interested in preventing is
316
00:28:47.090 -->
00:28:48.150using our
317
00:28:49.365 -->
00:28:50.505position of privilege
318
00:28:50.885 -->
00:28:53.305in terms of, like, superior knowledge of these systems'
319
00:28:53.845 -->
00:28:54.905ability to control
320
00:28:56.330 -->
00:28:56.990computer systems
321
00:28:57.610 -->
00:29:00.190to provide this kind of social advantage.
322
00:29:00.650 -->
00:29:03.390And, like, 1 example I could give you there is
323
00:29:03.965 -->
00:29:04.865if you have
324
00:29:05.405 -->
00:29:07.825just the entire way the economy of the Internet works,
325
00:29:08.445 -->
00:29:08.945advertisements.
326
00:29:09.965 -->
00:29:12.385The entire notion of an ad driven
327
00:29:13.190 -->
00:29:14.250software economy
328
00:29:14.630 -->
00:29:20.890means that the way that software is paid for is you have a tiny piece of the software always visible
329
00:29:21.545 -->
00:29:28.285that is not under the user's control. Right? They can't, they're, they're not allowed to hide it. They can't make it go away.
330
00:29:28.750 -->
00:29:40.455And so their computer is which they paid a lot of good money for, is constantly doing stuff to annoy them and to distract them and to try to get them to spend their money, which, you know, in a good advertising ecosystem,
331
00:29:40.755 -->
00:29:42.135maybe there's a net benefit.
332
00:29:42.675 -->
00:29:44.455You know, maybe the ads are
333
00:29:44.835 -->
00:29:52.290showing them things that they want to buy and that will improve their lives. But, you know, we've all used the Internet. We know that's not true. So
334
00:29:52.590 -->
00:29:53.410long term
335
00:29:53.870 -->
00:30:00.925of course, right now, I'm not I'm not trying to call out advertisers and say, like, they're, you know, they're evil or this is unethical behavior. But it's more
336
00:30:01.305 -->
00:30:05.410like long term, if that's the way computers work, if we accepted
337
00:30:05.870 -->
00:30:06.370practices,
338
00:30:06.830 -->
00:30:13.785well, you have the piece of code which is running on the user's computer that they want there, and then you have the tiny piece of malware which
339
00:30:14.565 -->
00:30:16.665is actually facilitating the business model.
340
00:30:17.685 -->
00:30:20.790Is it okay to escalate that from advertising to
341
00:30:21.730 -->
00:30:33.605bitcoin mining on people's computers? If it's okay to escalate to bitcoin mining, is it okay to escalate beyond that and try to exploit their computers just steal their credit card directly? Like okay at some point it becomes obvious across the line but
342
00:30:34.565 -->
00:30:38.679yeah I think that the line is is fuzzier than a lot of people think, especially because
343
00:30:39.059 -->
00:30:42.440you can definitely see the continuum in the advertising world
344
00:30:43.140 -->
00:30:44.120between, like,
345
00:30:44.885 -->
00:30:56.930people like Project Wonderful, who are, like, you know, we're we're targeting a specific market. We only wanna show you ads that we know that because you're already on this type of site, you probably want to see anyway and we're going to make sure they're unobtrusive
346
00:30:57.790 -->
00:31:01.250and meet with the theme of the site that we're advertising on all the way to
347
00:31:01.945 -->
00:31:02.765those weird,
348
00:31:03.225 -->
00:31:11.360you know, around the web type ads, which look like they're part of the site, but are actually a paid advertisement. It should take you to this other thing that looks like it's got
349
00:31:11.920 -->
00:31:27.345buttons that are faking, trying to be dialog boxes. And so there is this continuum already. And I think it's pretty clear that 1 of the things that the whole advertising economy raises, which is thing this thing I like from other industries or other professions is if you become a
350
00:31:27.805 -->
00:31:29.985professional client of someone, you become
351
00:31:30.670 -->
00:31:34.370a lawyer's client, like when money exchanges when money changes hands,
352
00:31:34.750 -->
00:31:35.650that sort of
353
00:31:36.190 -->
00:31:38.610creates this relationship which is inviolate.
354
00:31:39.174 -->
00:31:42.875I I wish we had something like that for software.
355
00:31:44.294 -->
00:31:45.355 Yeah. There's definitely
356
00:31:46.270 -->
00:31:47.090a lot
357
00:31:47.870 -->
00:31:49.090of discussion around
358
00:31:49.630 -->
00:31:53.090how can we improve sort of the de facto business model
359
00:31:54.325 -->
00:32:01.785from being advertising based to something that is more sustainable both from a user and a business perspective because
360
00:32:02.350 -->
00:32:03.170as you said,
361
00:32:03.630 -->
00:32:06.750it really puts the user in a position where they are
362
00:32:08.510 -->
00:32:15.835they no longer are the direct customer. And so the business and the engineering team behind it isn't
363
00:32:16.135 -->
00:32:20.519directly working in their particular interest for the software that they're using.
364
00:32:21.299 -->
00:32:23.159And instead, they are
365
00:32:23.460 -->
00:32:26.039trying to commoditize the user information
366
00:32:26.580 -->
00:32:28.440in order to be able to
367
00:32:28.825 -->
00:32:35.805run the business and provide the user with something that they actually want. There are certainly businesses that do have a model where they
368
00:32:36.140 -->
00:32:41.760take payment in exchange for a service. And in those cases, they generally do away with the advertising revenue
369
00:32:42.140 -->
00:32:43.040or the advertisements.
370
00:32:44.215 -->
00:32:49.434But there are a wealth of systems where a consumer isn't necessarily going to be interested in
371
00:32:49.735 -->
00:32:50.235paying
372
00:32:50.695 -->
00:32:56.970directly to the company. And so we need to sort of figure out a better middle ground for those particular situations.
373
00:32:57.670 -->
00:33:02.414 Yeah. And, I mean, I think that it's important to keep the focus on the sort of, like, what exactly
374
00:33:02.715 -->
00:33:15.419should be like, what is okay and what is not okay? Like, where is the ethical line and not just so much on the advertising business model because for example, you know, I love to take examples from other industries wherever we can because
375
00:33:15.924 -->
00:33:20.985most of the problems we're facing are actually not all that novel. But in case of like magazines for example,
376
00:33:21.525 -->
00:33:22.665when you buy a magazine
377
00:33:23.200 -->
00:33:30.980in print, quite often, there are ads in it. And that's fine. The person who's buying it knows that there are gonna be ads in it. They're still paying money for that subscription.
378
00:33:31.424 -->
00:33:32.325And that's kind of acceptable
379
00:33:32.784 -->
00:33:33.284negotiation
380
00:33:33.585 -->
00:33:34.085between
381
00:33:34.945 -->
00:33:38.405the person paying for it and the the magazine putting it out.
382
00:33:38.889 -->
00:33:45.470I think we're probably still gonna have some ad like, even in my perfect ideal ethical world, we would totally have some
383
00:33:45.805 -->
00:33:51.585ad driven Internet businesses. I think that that's a fine way to run things. We just have a clear idea of, like, what the trade off was.
384
00:33:52.900 -->
00:33:57.320 Yeah. That that absolutely makes sense because there's definitely a lot of denial
385
00:33:57.700 -->
00:33:59.400on the part of users about
386
00:33:59.700 -->
00:34:04.635just exactly what either you're paid for the product or you are the product means, I think.
387
00:34:04.935 -->
00:34:05.995 Right. Yeah.
388
00:34:07.175 -->
00:34:17.819 So where does accessibility of the software we make fit into a code of ethics? And do you think there should be a minimum level of support for technology such as screen readers or audio captioning in the software that we build?
389
00:34:18.655 -->
00:34:24.355 So I think that that's an interesting that is definitely an interesting area for exploration. So I'm gonna give you my
390
00:34:24.655 -->
00:34:37.785some some of these questions I have, like I really think that there needs to be some fixed parameters around how we discuss it. Like for example, let's not bring in all of being a good human being into this discussion. But in this case, I'm not really sure. I think
391
00:34:38.245 -->
00:34:38.745certainly
392
00:34:40.005 -->
00:34:42.665the accessibility argument does not generalize.
393
00:34:43.205 -->
00:34:44.745And what I mean by that is
394
00:34:45.400 -->
00:34:47.500some software is visual art,
395
00:34:47.960 -->
00:34:49.900right? And many games
396
00:34:51.319 -->
00:34:53.180are not playable by the
397
00:34:53.924 -->
00:34:57.224blind. Some many games are not playable by the hard of hearing. And
398
00:34:57.924 -->
00:35:00.585I don't think that we need to necessarily
399
00:35:01.400 -->
00:35:11.885say that those are unethical pieces of software. I think it's fine to have things for that are sensory experiences for people with that particular sense. Similarly, there are games that are not playable
400
00:35:12.185 -->
00:35:17.724by people with a physical disability and are, you know, require you to be fully able-bodied. They're basically exercise.
401
00:35:18.585 -->
00:35:19.405And so
402
00:35:20.470 -->
00:35:21.130I think
403
00:35:21.510 -->
00:35:22.730probably it's
404
00:35:23.510 -->
00:35:28.170just a general blanket statement about everything must be accessible to everyone incorporating
405
00:35:28.785 -->
00:35:30.805specific technologies like screen readers
406
00:35:31.345 -->
00:35:37.230is probably an overreach. At the same time, I do think that we have a some kind of responsibility
407
00:35:37.530 -->
00:35:44.830to make things accessible to the broadest audience within their scope. So for example, there are already regulations about,
408
00:35:45.164 -->
00:35:50.545you know, if you have a website that provides government form, for example, I forget the exact
409
00:35:51.005 -->
00:35:53.184section in law. There's a
410
00:35:54.190 -->
00:35:56.050abbreviation which is frequently used
411
00:35:56.510 -->
00:35:57.410in the accessibility
412
00:35:58.350 -->
00:36:11.405business that I'm forgetting at the moment. But, like, if you make a government website that people need to fill out forms on, you have to make it accessible. If you make if you're a contractor in certain capacities or you run certain types of public infrastructure,
413
00:36:11.880 -->
00:36:15.420there are already regulations about that. I think in many cases, they're sufficient,
414
00:36:15.800 -->
00:36:16.700or at least
415
00:36:17.000 -->
00:36:19.099the process that we have in place
416
00:36:19.905 -->
00:36:21.205to put those requirements
417
00:36:22.465 -->
00:36:25.925on software is sufficient. So I'm not saying that all of the
418
00:36:26.869 -->
00:36:31.849sites that need to be accessible already are, but that we've clearly made some progress
419
00:36:32.150 -->
00:36:32.650towards
420
00:36:33.270 -->
00:36:34.410making things accessible,
421
00:36:34.945 -->
00:36:35.705and making
422
00:36:36.145 -->
00:36:40.245requiring companies to spend the money to do the accessibility work.
423
00:36:40.865 -->
00:36:46.620So so that this is 1 of those places where there's, like, a trade off. Like, with security, Right? It's it's possible to pour
424
00:36:47.400 -->
00:36:53.660a pretty much infinite amount of money and time into making your system secure even if it does almost nothing.
425
00:36:54.475 -->
00:36:59.375And, while accessibility is a little bit less infinite, like there is a point at which all of your
426
00:36:59.675 -->
00:37:06.890functionality is accessible to everyone that it possibly could be and you're pretty much done. It is still an expensive process that
427
00:37:07.910 -->
00:37:12.815you have to go and do, and so the question is, like, are there other things that
428
00:37:13.195 -->
00:37:16.255your software needs to do which are more important
429
00:37:16.715 -->
00:37:18.255and can you justify
430
00:37:19.115 -->
00:37:20.495not doing that work
431
00:37:21.150 -->
00:37:23.490Like if you're making a system for
432
00:37:24.590 -->
00:37:26.850a specific company, let's say. You're
433
00:37:27.310 -->
00:37:43.290doing inventory on trucks and the people who you have to evaluate the inventory need to be cited because that's just that's part of their job is to be looking over all of the packages and making sure that they're they look right. It's hypothetically possible you can make that an accessible system. You could incorporate
434
00:37:43.670 -->
00:37:45.450support for screen readers. You could
435
00:37:45.990 -->
00:37:49.685make it possible for a blind person to do part of that job,
436
00:37:50.065 -->
00:38:03.170but at the same time, probably you have much more pressing concerns around making sure the software is accurate, making sure you don't have any bugs. And at that point, you probably need to invest more effort in things that are not accessibility.
437
00:38:04.005 -->
00:38:09.785So, I don't know. So, this is a very complicated series of trade offs. I think that where we are right now in the industry is
438
00:38:10.085 -->
00:38:12.664we should generally have a higher level of investment
439
00:38:13.240 -->
00:38:17.260in accessibility. I think we're generally excluding people from our products that we
440
00:38:17.800 -->
00:38:22.780don't need to be, but I think that's much more of a case by case kind of decision than a general
441
00:38:23.145 -->
00:38:23.645ethical
442
00:38:24.185 -->
00:38:25.245 rule. Absolutely.
443
00:38:25.785 -->
00:38:31.005You know, I'm I'm partially blind myself, and I definitely see your point with regards to
444
00:38:31.385 -->
00:38:32.605you can't make
445
00:38:33.039 -->
00:38:33.539visual
446
00:38:34.079 -->
00:38:43.335art totally accessible for blind users. You just you just can't do it because of the nature of the content. But I also feel like there is room in an ethical standard, as if, for instance,
447
00:38:43.715 -->
00:38:50.055that if you are designing a website for, say, a restaurant and online ordering, right, I think it's reasonable
448
00:38:50.355 -->
00:38:50.935to say,
449
00:38:51.350 -->
00:39:04.465okay. Don't make the whole site be so dependent upon Flash or JavaScript or something that if they turn it off or if someone's using a screen reader, they can't use your site at all. They can't order food. That seems to me to be ethically
450
00:39:04.845 -->
00:39:05.345questionable.
451
00:39:06.150 -->
00:39:11.850 Not that you have a specific example in mind, right here. I'm sure all of our websites are super accessible and not maybe
452
00:39:12.150 -->
00:39:16.395giant bobs of flash. And actually, that that sort of brings brings up,
453
00:39:17.835 -->
00:39:29.859another interesting thing, which is that I think there are a lot of problems with the way that restaurant websites are developed. They're actually kind of an interesting case study on how to do everything wrong. I would almost say this is more of a curriculum issue that like
454
00:39:30.355 -->
00:39:34.055we should be striving as much as possible to educate developers
455
00:39:34.355 -->
00:39:34.855about
456
00:39:35.475 -->
00:39:35.975accessibility
457
00:39:36.675 -->
00:39:43.960rather than making it rather than a requirement issue, like, trying to say that it needs to be done. Because 1 of the things that you learn when you start to learn about
458
00:39:44.500 -->
00:39:45.720accessibility mechanisms
459
00:39:46.100 -->
00:39:46.600is
460
00:39:47.395 -->
00:39:48.695you you find out that
461
00:39:49.155 -->
00:39:56.055they're actually useful for everyone. Right? Like the ability for a screen reader to accurately capture
462
00:39:57.380 -->
00:39:58.440restaurant's page
463
00:39:58.820 -->
00:40:06.115also lets everyone else just do text searches on the page, right? If you but if you bake it all into this blob of inscrutable
464
00:40:06.575 -->
00:40:07.715binary assets,
465
00:40:08.415 -->
00:40:12.595then nobody can find the directions to the restaurant. Nobody can
466
00:40:13.220 -->
00:40:14.119place an order.
467
00:40:14.980 -->
00:40:19.640And it gets into a whole breakdown of all these different audiences that we didn't think about.
468
00:40:20.020 -->
00:40:21.425All of the
469
00:40:21.805 -->
00:40:23.345young, you know, hipster
470
00:40:23.805 -->
00:40:27.345software developers out here where I am in San Francisco are
471
00:40:27.940 -->
00:40:29.560generally, you know, sort of stereotypically
472
00:40:30.020 -->
00:40:35.080able-bodied white men in their early 20s which means that they don't realize things like
473
00:40:35.755 -->
00:40:40.175for some people, for a large, large population of people, it's kind of hard to move a mouse
474
00:40:40.715 -->
00:40:42.975and particularly hard to accurately target
475
00:40:43.460 -->
00:40:43.960your
476
00:40:45.140 -->
00:40:45.960Web 2.0
477
00:40:47.380 -->
00:40:50.280designer widgets that have tiny, tiny little click targets.
478
00:40:51.135 -->
00:41:04.750When you start thinking about accessibility and you learn things about it, you realize, oh, you know what? It's kind of a pain for me to click on that too. Like, I can do it, but it'd be much nicer if it were, like, a hot key or a much bigger click target or, you know, I
479
00:41:05.370 -->
00:41:12.395could do something other than just clicking to bring this up. Right? Like, you you I think that learning about accessibility makes you a much better developer.
480
00:41:13.335 -->
00:41:15.595But again, this is a but and and we should also
481
00:41:15.940 -->
00:41:19.240mention this, this is all like all of this stuff is in UI.
482
00:41:19.700 -->
00:41:21.560This is a particular discipline
483
00:41:21.860 -->
00:41:22.360within
484
00:41:22.994 -->
00:41:23.734software development.
485
00:41:24.515 -->
00:41:26.934There are many developers who don't really do UI
486
00:41:27.394 -->
00:41:32.740in their jobs much at all, so it does depend on what you do. But if you if you do user interfaces at all,
487
00:41:33.220 -->
00:41:35.240I think not knowing about accessibility
488
00:41:36.660 -->
00:41:40.200is a serious flaw that inhibits your ability to do your job well.
489
00:41:40.505 -->
00:41:43.565And, and similarly, like, there there are lots of other
490
00:41:43.944 -->
00:41:48.924things which I think we ought to be able to put into some kind of curriculum, not have, like, a
491
00:41:49.550 -->
00:41:50.050official
492
00:41:51.070 -->
00:41:52.130sanctioned accreditation
493
00:41:52.430 -->
00:41:53.650for university
494
00:41:54.270 -->
00:41:55.490programs, but like,
495
00:41:55.950 -->
00:42:03.475you know, you should know a thing or 2 about accessibility, you should know a thing or 2 about security. And knowing and, like, actually having a list of what those things are and what is
496
00:42:03.775 -->
00:42:04.915kind of an acceptable
497
00:42:05.615 -->
00:42:08.690minimum level of knowledge might be another interesting kind of
498
00:42:09.329 -->
00:42:14.310ethical code thing. Like, you need to familiarize yourself with at least this level of
499
00:42:14.849 -->
00:42:15.349technology.
500
00:42:15.705 -->
00:42:19.965There is a consensus level of knowledge that we have established in the industry.
501
00:42:20.505 -->
00:42:21.805Here is what it is.
502
00:42:22.185 -->
00:42:26.880And having clear pointers, you know and obviously, that is not a fixed kind of immutable
503
00:42:27.339 -->
00:42:38.135ethical principle for all time. That's like that would have to be updated every couple of years to say, like, in much the same way that, you know, a doctor who gets who passes their boards has to do that again
504
00:42:38.435 -->
00:42:42.600periodically in order to stay current And, like, you lose your license if you can't
505
00:42:43.140 -->
00:42:45.240recertify every so often. I think
506
00:42:45.620 -->
00:42:50.054we might wanna have something similar where software developers have to maintain a
507
00:42:50.454 -->
00:42:53.275some minimal level of current, current body of knowledge,
508
00:42:53.815 -->
00:42:56.635and not get a degree or a certification or an accreditation
509
00:42:56.980 -->
00:43:01.480necessarily, but be able to recertify periodically and say, like, I am still
510
00:43:01.859 -->
00:43:03.720an ethical competent software.
511
00:43:04.944 -->
00:43:05.444 Absolutely.
512
00:43:06.145 -->
00:43:17.450So in your talk, you mentioned how Rackspace's stance on user support matches the ideals you previously laid out. Can you flesh that out a bit for us? What does that mean to individual Rackers in their day to day work lives?
513
00:43:18.390 -->
00:43:30.615 Okay. Here's the part of the podcast where I say that I do not speak for my employer. I am not authorized to do so. I think it's pretty cool that they let me talk about this at all. So but but just wanna make sure that that this is qualified.
514
00:43:31.075 -->
00:43:31.575Absolutely.
515
00:43:32.070 -->
00:43:34.890I do think that, it varies a huge amount
516
00:43:35.350 -->
00:43:35.850because,
517
00:43:36.470 -->
00:43:38.810Rackspace is a is a big diverse company,
518
00:43:39.670 -->
00:43:40.570and it's diverse
519
00:43:40.875 -->
00:43:44.415to the specific question, it's diverse specifically in terms of roles.
520
00:43:45.035 -->
00:43:48.734The way that the the point I was trying to make in my talk was really
521
00:43:49.035 -->
00:43:50.315in Rackspace, you know, there's
522
00:43:50.860 -->
00:43:54.320those of us in software development are still kind of working on
523
00:43:54.780 -->
00:43:55.280interpretation
524
00:43:55.660 -->
00:43:57.360of what does fanatical support
525
00:43:57.740 -->
00:44:02.075mean for software development, where you have relatively little interaction with customers,
526
00:44:02.535 -->
00:44:04.715you're mostly working on, you know, just
527
00:44:05.095 -->
00:44:06.555regular software projects.
528
00:44:06.855 -->
00:44:08.075So how does that translate?
529
00:44:09.640 -->
00:44:23.305The interesting thing about Rackspace is not so much that you have, like, 1 specific thing that that means, but that what it means in the day to day life of of every I would say is that this is a conversation happening around you all the time. Like,
530
00:44:23.765 -->
00:44:27.384how can we be fanatical about this? And what does that mean?
531
00:44:28.400 -->
00:44:30.660Is, you know, at other companies I've worked at,
532
00:44:31.360 -->
00:44:35.140there there is, there's a conversation at every company that's happening
533
00:44:35.805 -->
00:44:36.625all the time.
534
00:44:37.725 -->
00:44:38.225And
535
00:44:38.765 -->
00:44:39.745in some companies,
536
00:44:40.205 -->
00:44:46.829luckily not really many that I've worked at, but certainly in start ups, it can that conversation can often
537
00:44:47.450 -->
00:44:50.175kind of decay into how are we going to make a lot of money.
538
00:44:50.495 -->
00:44:54.195And at Rackspace, that conversation is how can we support our customers fanatically?
539
00:44:54.815 -->
00:44:56.835For support rackers, it means something
540
00:44:57.540 -->
00:45:07.464quite specific, and there are established kind of cultural norms around what it means to support a customer fanatically. And the interesting thing about it from the perspective of the
541
00:45:07.845 -->
00:45:09.385discussion of ethics is, like,
542
00:45:10.164 -->
00:45:15.420looking at what support folks who are really good at their jobs do and how they
543
00:45:16.040 -->
00:45:25.365support customers and how they care about customers and put the customer first is a good way for us to think about users. And, again, I I I have to draw that distinction because we don't have that magical
544
00:45:25.985 -->
00:45:29.925money changing hands kind of establishing a relationship in the software industry
545
00:45:30.850 -->
00:45:35.590thing to anchor our relationship, it's our relationship to our user. And our user
546
00:45:36.130 -->
00:45:51.260may or may not be the customer, but we still have to care about the user. And making user the customer is a really easy way to do that. I don't totally buy the whole, like, anti our advertising argument that, you know, you are the product or you you are the customer. I think that
547
00:45:51.720 -->
00:46:06.200people who make advertising based software often do care about the user. And 1 way to make them care about the user more would be make the user the customer. But another way is really just to formalize that relationship and say, this is exactly how much you need to care about the user. So so yeah. So at Rackspace, specifically,
548
00:46:06.820 -->
00:46:08.120it is it's really
549
00:46:09.060 -->
00:46:12.280the the constant question of how can we
550
00:46:13.045 -->
00:46:15.305support our users fanatically that
551
00:46:15.605 -->
00:46:28.120makes it a different kind of place. And and that means that there's a lot of variation in terms of how that gets interpreted and what exactly happens as the outcome. As I said in my talk, I didn't want to turn this discussion into an ad for Rackspace,
552
00:46:28.914 -->
00:46:34.055and so I don't want to make any, like, broad, sweeping claims about the fantastic results that we achieve
553
00:46:34.515 -->
00:46:38.134because, you know, again, I can't speak for my employer and I I
554
00:46:38.460 -->
00:46:40.079don't want to be seen as advertising,
555
00:46:40.460 -->
00:46:42.480but that is the good thing about this. You
556
00:46:42.859 -->
00:46:43.359just
557
00:46:43.740 -->
00:46:49.295by constantly refocusing on that question, I think you get a really healthy culture of, like,
558
00:46:49.915 -->
00:46:53.855what are we trying to do here? We're trying to, like, make this experience as good as we can.
559
00:46:54.770 -->
00:47:08.885 In your talk, you mentioned that availability of the software source should be mandatory for compliance with a properly defined ethical framework. What mechanisms for providing that access do you think would be acceptable, and should there be a central repository for housing and providing access to that source?
560
00:47:09.440 -->
00:47:13.060And 1 place where that particularly comes into play is for
561
00:47:13.440 -->
00:47:16.580a company or individual who is no longer maintaining
562
00:47:17.119 -->
00:47:18.820the source for that project,
563
00:47:19.175 -->
00:47:21.515making sure that access to that source
564
00:47:22.215 -->
00:47:25.595is maintained for somebody who is still using that product.
565
00:47:27.000 -->
00:47:32.220 Well, I mean, we already have a government mandated place where all source code has to be stored. GitHub.
566
00:47:34.175 -->
00:47:37.155So, yeah, I mean, I'm kidding, I hope. So
567
00:47:37.535 -->
00:47:43.990I think speaking specifically for the US, it might make sense for the federal government to operate 1 just like they operate the Library of Congress.
568
00:47:44.370 -->
00:47:46.550They operate the, you know, the patent registry.
569
00:47:47.010 -->
00:47:52.845But I think speaking at the that's, like, kind of specific to 1 area and 1 potential
570
00:47:53.705 -->
00:47:55.325instantiation of this. I think
571
00:47:55.705 -->
00:47:57.245that's probably actually premature.
572
00:47:58.105 -->
00:47:59.600If we're talking at the
573
00:48:00.000 -->
00:48:00.500universal
574
00:48:00.880 -->
00:48:02.180codes of ethics, then
575
00:48:02.640 -->
00:48:14.465the mechanism of providing that availability is actually kind of irrelevant, especially because it would be relevant if it were a really serious technical challenge that we had to invent some new way of dealing with
576
00:48:15.085 -->
00:48:15.585copying
577
00:48:16.045 -->
00:48:16.785code around.
578
00:48:17.165 -->
00:48:17.985But there,
579
00:48:18.460 -->
00:48:26.400given the practical reality that we face which is that on the internet there are like hundreds and hundreds of places you can host code and revision control.
580
00:48:27.020 -->
00:48:27.760There are
581
00:48:28.625 -->
00:48:38.130tons of, you know, the cheaper free ways to do it. I think that it would just be kind of getting bogged down to think about the exact mechanics of it. What's more important is to think about, like,
582
00:48:39.009 -->
00:48:40.549what is access practically?
583
00:48:41.089 -->
00:48:42.630And this is what most
584
00:48:43.890 -->
00:48:44.869most things that
585
00:48:45.250 -->
00:48:47.275require that you provide
586
00:48:48.295 -->
00:48:49.515access to things
587
00:48:49.815 -->
00:48:58.640or I'm blanking on a specific example, but when the government says you have to provide this thing, like, you have to provide a warranty to your customers, you have
588
00:48:58.940 -->
00:49:04.320to reimburse them, right? The exact mechanism of that is enforced at the level of case law, like,
589
00:49:05.415 -->
00:49:09.195you have some mechanism for getting support or getting a warranty or getting a replacement,
590
00:49:09.815 -->
00:49:18.120and, you fail to do it in your customer's eyes, and then they sue you. And then they kind of figure out, like, okay, well, I guess that wasn't,
591
00:49:18.500 -->
00:49:21.160you know, like that that level of support wasn't adequate.
592
00:49:21.625 -->
00:49:25.085And so I think at the level of, like, providing source to to customers,
593
00:49:25.625 -->
00:49:26.125the
594
00:49:27.305 -->
00:49:32.480retrieval mechanism, like, the new GPL actually sort of outlines this a bit. And it also
595
00:49:33.020 -->
00:49:34.720refrains from making a specific
596
00:49:35.500 -->
00:49:38.160requirement about how exactly you have to get code.
597
00:49:38.540 -->
00:49:47.505But when in their licenses, they say, you know, you can write to, you know, you can send a postal letter to the Free Software Foundation and they will send you the source code.
598
00:49:47.805 -->
00:49:51.500And, so I think the way we would adjudicate that in my hypothetical
599
00:49:52.359 -->
00:49:56.059ideal reality here where you have some kind of organization that,
600
00:49:57.335 -->
00:49:57.835enforces
601
00:49:58.615 -->
00:50:03.275stuff that provides that registry of that that knows who's been bad and good.
602
00:50:03.575 -->
00:50:04.714They could just
603
00:50:05.740 -->
00:50:06.240have
604
00:50:06.540 -->
00:50:27.450a form you could fill out where a customer or a user could say, I tried to get source code from this company and they say they're hosting it somewhere but linked didn't work or, you know, I couldn't find it or I don't think this is sufficiently accessible to qualify. You should revoke your seal of approval from them. And then, you know, then maybe the company fixes the problem and it's not an issue. So does that sort of answer your questions?
605
00:50:28.230 -->
00:50:28.730 Yes.
606
00:50:29.295 -->
00:50:33.635So another interesting aspect about providing access to source is
607
00:50:34.175 -->
00:50:35.075what the
608
00:50:35.855 -->
00:50:38.115potential requirements should be around
609
00:50:39.520 -->
00:50:40.020having
610
00:50:40.880 -->
00:50:44.180maintaining previous versions of the source
611
00:50:44.640 -->
00:50:55.195and maintaining access to that, particularly thinking of cases where somebody is running an older version of that particular piece of software and either is unable or unwilling to
612
00:50:55.800 -->
00:50:59.100update it whether it's for financial or technical reasons.
613
00:51:01.560 -->
00:51:03.020 Yeah. I mean, so
614
00:51:03.925 -->
00:51:05.545updates are a tricky
615
00:51:06.805 -->
00:51:07.305area
616
00:51:08.165 -->
00:51:10.585I think that eliminating the financial
617
00:51:10.980 -->
00:51:12.359Like, if we could
618
00:51:14.180 -->
00:51:14.680just
619
00:51:16.500 -->
00:51:23.775eliminate those barriers, I think that the rest of that becomes more Like, if we can just eliminate those barriers, I think that the rest of that becomes more or less irrelevant. And
620
00:51:24.075 -->
00:51:34.030supporting people on old versions of things forever, I feel like is both an potentially infinite cost because you have lots and lots of old versions of things. And also not like
621
00:51:34.410 -->
00:51:44.025as a software developer, there is literally nothing you can do to support an old version of software, right? What you do, if you are developing software, is you develop new software.
622
00:51:44.325 -->
00:51:51.640Now, you could become something else as a support person, as an operations person, you could potentially do something to support the old version, but that's
623
00:51:52.099 -->
00:51:55.000a different role, if not a different person. And
624
00:51:56.045 -->
00:52:04.940so I kind of feel like that the software developer obligation is considered deployment and updates and everything as a core part of the software and make sure that it's easy and
625
00:52:05.240 -->
00:52:07.020cheap. And, I would recommend
626
00:52:07.960 -->
00:52:09.980in that vein, I would recommend
627
00:52:10.520 -->
00:52:14.505folks follow the work of Timothy Fitts, and his Continuous Deployment
628
00:52:15.365 -->
00:52:17.705crusade. He's trying to get everybody to
629
00:52:18.500 -->
00:52:21.080deploy all code to all computers instantly.
630
00:52:21.780 -->
00:52:22.020It's,
631
00:52:22.740 -->
00:52:25.320he has some really useful thoughts in that area.
632
00:52:25.974 -->
00:52:36.039 Yeah. The question of transparency and availability of source is especially interesting in light of a number of stories that have come out recently about patients who have been provided with prosthesis and other medical devices.
633
00:52:36.500 -->
00:52:42.039And in a number of cases, shortly after having received the device, the company who made it abruptly goes out of business,
634
00:52:43.385 -->
00:52:46.605and they are left with no way to support
635
00:52:46.985 -->
00:52:51.200the the device or receive any sort of updates or bug fixes. And having availability
636
00:52:51.580 -->
00:52:56.000and access to that source could potentially provide the patient with a way to
637
00:52:56.940 -->
00:53:01.175either take the source to someone else and have it updated or to
638
00:53:01.555 -->
00:53:23.715 update it themselves and, you know, continue to actually take advantage of that medical device that could be potentially life saving or at least enabling a higher quality of life? I think that having the source available is an important way to kind of legally allow for that, but I do think that we have to be careful taking that as kind of a catch all, like, oh, well, they have the source, so problem solved. There
639
00:53:25.210 -->
00:53:31.230this is a a big failure, I think, of of the the Free Software Foundation and their whole, like, philosophy of how
640
00:53:31.530 -->
00:53:33.390operating systems should work because,
641
00:53:34.045 -->
00:53:34.625you know,
642
00:53:35.005 -->
00:53:39.985you do technically speaking have the code to Linux that you could go and modify,
643
00:53:41.005 -->
00:53:42.210if you wanted to,
644
00:53:43.410 -->
00:53:44.630but you probably
645
00:53:45.730 -->
00:54:00.620can't. You probably can't for economic reasons, you probably can't for technical reasons, you probably can't for social reasons, right, like you if you go and modify your operating system, you are now off on a branch where you're living by yourself. And if you can't afford to put in the effort
646
00:54:01.560 -->
00:54:06.540to socialize that change and get it maintained and integrated upstream and tested along with everything else,
647
00:54:06.840 -->
00:54:07.340then
648
00:54:08.555 -->
00:54:10.575you ultimately end up on your
649
00:54:12.154 -->
00:54:14.015own unsupported branch. And similarly,
650
00:54:14.860 -->
00:54:15.360there
651
00:54:15.820 -->
00:54:19.360are dozens of companies that have been that have produced
652
00:54:19.980 -->
00:54:21.280critical pieces of infrastructure
653
00:54:21.740 -->
00:54:24.480for various free software desktops and
654
00:54:24.815 -->
00:54:29.555then disappeared, and then that stuff has just languished or stopped working all the time.
655
00:54:30.015 -->
00:54:31.474And so especially for
656
00:54:32.015 -->
00:54:36.049people with you know, a medical need for software to keep working,
657
00:54:36.349 -->
00:54:37.650I think that that
658
00:54:37.950 -->
00:54:46.815that touches on the sort of scope of ethics outside of software development that we were talking about before which is that, you know, my my own personal political viewpoint is that
659
00:54:47.115 -->
00:54:51.340we need government to come in and pay for that stuff because it's going to cost
660
00:54:51.640 -->
00:54:55.740some money to have somebody develop that software. And we can't expect someone
661
00:54:56.040 -->
00:55:02.185whose health is potentially already compromised by the fact that software is not getting updated and not getting obtained
662
00:55:02.565 -->
00:55:04.905to go and fix the whole thing themselves or
663
00:55:05.285 -->
00:55:07.225to spend 1, 000, 000 of dollars to
664
00:55:07.620 -->
00:55:12.440develop fixes and updates. So, well, yes, I think that, like, the availability of source
665
00:55:12.740 -->
00:55:13.720is necessary.
666
00:55:15.305 -->
00:55:16.605I don't think that it's
667
00:55:16.984 -->
00:55:17.484necessarily
668
00:55:18.025 -->
00:55:18.525sufficient.
669
00:55:18.984 -->
00:55:20.125In fact, I think it's
670
00:55:21.464 -->
00:55:29.250necessary but not sufficient and insufficient to it for an extreme degree where we have to be very careful about thinking it even gets close to solving the problem.
671
00:55:29.870 -->
00:55:37.204Also, I guess I should move back a little bit to say, like, what I what I said in my talk was that this was kind of a a hypothetical proposal
672
00:55:37.505 -->
00:55:38.805for how 1 might
673
00:55:39.184 -->
00:55:40.164start to enforce
674
00:55:40.920 -->
00:55:45.880some type of ethical standards. I do think that, like, what I would really like to see,
675
00:55:46.680 -->
00:55:49.455where I would really like to see this happen, where I think it would be a
676
00:55:49.935 -->
00:55:52.355something that might not be completely impossible
677
00:55:52.815 -->
00:55:56.275is right now the way the patent system is supposed to work
678
00:55:56.710 -->
00:56:00.570is you're supposed to invent a thing, submit a specification
679
00:56:01.190 -->
00:56:04.170that would allow someone else to build it accurately,
680
00:56:04.655 -->
00:56:07.235And then, you only get patent protection
681
00:56:07.535 -->
00:56:08.035if
682
00:56:08.735 -->
00:56:11.715your diagrams are accurate and work and are novel.
683
00:56:12.335 -->
00:56:12.835And,
684
00:56:14.000 -->
00:56:18.980something strange about the way that translated to software means that we submit these
685
00:56:19.520 -->
00:56:20.020strange,
686
00:56:20.480 -->
00:56:21.140sort of
687
00:56:21.845 -->
00:56:22.345nontechnical
688
00:56:22.805 -->
00:56:39.214descriptions of how a piece of software might work to the patent office, rather than what I think would make sense is, but the the radical part of this proposal is just get rid of copyright protection for software. It's not. This is this is not how it works. That part's probably not gonna fly. But
689
00:56:39.835 -->
00:56:48.890to the extent that you want patent protection for software, and certainly lots of companies do, I think a workable patent system for software would be sure, submit
690
00:56:49.270 -->
00:56:50.010a working
691
00:56:50.869 -->
00:56:51.609Git repository,
692
00:56:52.115 -->
00:56:58.295like, open, you know, and it's this is not open source. This is source availability, right? It's like you you put your code out there,
693
00:56:58.675 -->
00:57:04.299you still could have copyright protection on it, you'd still have licensing issues with it, but if you want patent protection,
694
00:57:05.000 -->
00:57:08.700you can you have to submit a working bill. And then
695
00:57:09.055 -->
00:57:20.260I also have some thinking around mandatory licensing because since the Patent Office is is granting you a monopoly anyway, they're already destroying the ability of the market to generate an accurate price, so they should be able to
696
00:57:20.560 -->
00:57:21.780mandate pricing,
697
00:57:22.160 -->
00:57:28.100in exchange for that monopoly, and I think that having, like, mandatory licensing combined with mandatory source disclosure
698
00:57:28.635 -->
00:57:29.295would mean
699
00:57:29.675 -->
00:57:30.895that the Patent Office
700
00:57:31.195 -->
00:57:41.200would then become a useful resource for software developers instead of this, like, boogeyman that nobody wants to get near. I mean, I don't know if you're familiar with this. 1 of my favorite things about Rackspace's work is
701
00:57:41.579 -->
00:57:43.440my my colleague, Van Lindberg,
702
00:57:44.035 -->
00:57:47.495who's a lawyer for Rackspace, has killed numerous patents and
703
00:57:47.795 -->
00:57:50.775patent trolls kinda know not to come after us now because
704
00:57:51.630 -->
00:57:56.289we've just had this stance of, kind of aggressive defense where
705
00:57:56.750 -->
00:57:58.690we we try to invalidate patents
706
00:57:58.990 -->
00:57:59.695rather than
707
00:58:00.255 -->
00:58:05.475pay any kind of extortion fees around them. And this is this is not at all specific to Rackspace. Right? That's patent
708
00:58:05.855 -->
00:58:09.470extortion is the business model for patents and software right now.
709
00:58:09.869 -->
00:58:14.609So which and if we're talking about ethics, making extortion into your business model is
710
00:58:14.910 -->
00:58:15.410probably
711
00:58:16.270 -->
00:58:18.609on the low end of that scale, just generally.
712
00:58:19.865 -->
00:58:29.005So, so, yeah. So I think I I think that source availability and mandatory source availability and and that sort of stuff would be a great replacement for the patent system and would
713
00:58:29.610 -->
00:58:36.270I'm still not a huge fan of government mandated monopolies on things, but at least that would have some semblance of fairness. At least it would
714
00:58:37.275 -->
00:58:43.935perform the purported role of the patent system, which is to, in exchange for not keeping your stuff secret,
715
00:58:45.130 -->
00:58:50.110you get the benefit of some level of protection to be able to make money off of it. Effectively,
716
00:58:50.970 -->
00:58:52.110most of the softwares
717
00:58:52.835 -->
00:58:54.135that gets released nowadays,
718
00:58:54.515 -->
00:59:01.790or sorry, the software that gets fattened nowadays is effectively still secret. They sort of vaguely they describe that they have a secret, but they still won't tell you what it is.
719
00:59:02.750 -->
00:59:04.130So I I think that
720
00:59:04.510 -->
00:59:08.690that's the first place that this kind of mandatory source availability might
721
00:59:08.990 -->
00:59:09.490actually
722
00:59:10.335 -->
00:59:14.675it might be politically tractors to make it happen. I still think it's a kind of ridiculous
723
00:59:15.135 -->
00:59:16.095long shot. But
724
00:59:17.110 -->
00:59:18.410 Yeah. And your
725
00:59:19.030 -->
00:59:19.850point about
726
00:59:20.550 -->
00:59:22.250how the patent system
727
00:59:23.110 -->
00:59:28.395doesn't seem to adhere as tightly to its ideals when it comes to software
728
00:59:28.855 -->
00:59:30.555points again to the failing
729
00:59:30.855 -->
00:59:32.315of general literacy
730
00:59:32.615 -->
00:59:36.795of software and how it works within government and governmental bodies.
731
00:59:37.240 -->
00:59:41.900And that brings up an interesting aspect of the trust equation that you talked about in your talk
732
00:59:42.440 -->
00:59:53.630and its relevance to the need for ethical code because what we do as software engineers is effectively viewed as sorcery by a vast majority of the public, and they must therefore wholly place their trust in us as part of using the products that we create.
733
00:59:54.029 -->
01:00:07.005And as you mentioned with the demise of the scribe, with the rise of literacy, increasing the overall awareness of how software works at a basic level partially reduces that dependency of trust. So at what level of aptitude do you think our relationship with our users becomes more equitable?
734
01:00:07.305 -->
01:00:11.245And how does the concept of source availability play into that topic of general education?
735
01:00:12.550 -->
01:00:13.450 Well, I think,
736
01:00:14.390 -->
01:00:18.010we've talked about a a a bunch of those. We've touched on a bunch of those points already,
737
01:00:18.310 -->
01:00:19.530but I think that
738
01:00:20.444 -->
01:00:22.385the the main question you got there is
739
01:00:22.845 -->
01:00:28.545how educate how literate does the general public need to be before we really stop meeting specialized
740
01:00:28.924 -->
01:00:32.270ethics around this? And I think it has to do
741
01:00:33.630 -->
01:00:35.570I I think that the the the standard,
742
01:00:35.950 -->
01:00:38.610the the litmus test, if you will, for
743
01:00:38.955 -->
01:00:41.935whether or not we need special ethics
744
01:00:42.235 -->
01:00:44.895has to do with whether or not we have special access.
745
01:00:45.515 -->
01:00:46.015So,
746
01:00:46.670 -->
01:00:47.329right now,
747
01:00:47.790 -->
01:00:51.490in order to, for example, develop an Ios application,
748
01:00:52.109 -->
01:00:55.890you have to be kind of a licensed and bonded developer with Apple, your
749
01:00:56.505 -->
01:00:59.724your app has to be approved. And similarly with Google Play
750
01:01:00.184 -->
01:01:03.085and other, less popular app stores. Right?
751
01:01:03.570 -->
01:01:04.630So for those platforms,
752
01:01:05.010 -->
01:01:09.990there is a stark division between what constitutes a user and what constitutes a developer.
753
01:01:10.369 -->
01:01:15.425And so that's, like, that's at the far end of the spectrum where like you really, really need to have some,
754
01:01:16.145 -->
01:01:17.845strict ethical standards because,
755
01:01:18.385 -->
01:01:24.259you know, people can't you have no control whatsoever. And oddly enough the cloud is sort of the same way in that
756
01:01:24.880 -->
01:01:25.380users,
757
01:01:26.079 -->
01:01:34.025if they are using a cloud based service, they can't reach into the backend and change the way that it works. They can't even see the way that it works. Even if you release source,
758
01:01:34.565 -->
01:01:46.780there's no way that you can know that the source compiles down to the binary that you've got on your iPhone. There's no way that you could know that that source is really what's running on the back end. And given the way that, like, deployments configuration files work,
759
01:01:47.240 -->
01:01:53.484it probably is. You're probably running some slightly modified version even if you're trying to stick as close as possible to upstream.
760
01:01:53.945 -->
01:01:54.445So,
761
01:01:55.225 -->
01:02:00.270I think that it, now of course your question is about literacy and like how
762
01:02:00.809 -->
01:02:01.309literacy
763
01:02:02.170 -->
01:02:06.335plays and how people's understanding of the code plays into that. I think that
764
01:02:07.115 -->
01:02:07.615literacy,
765
01:02:09.035 -->
01:02:11.160the reason that the systems have grown up in the way
766
01:02:13.720 -->
01:02:14.539they have, where there is the start division, is that people don't have an interest
767
01:02:14.920 -->
01:02:18.140in learning, people don't have the ability to write the code themselves,
768
01:02:18.440 -->
01:02:19.099so there's
769
01:02:19.400 -->
01:02:27.585really no point in preserving this kind of false equivalence between developers and users because developers really are the audience.
770
01:02:28.140 -->
01:02:30.640So I think that the the point at which it becomes
771
01:02:32.380 -->
01:02:36.400a viable to say that users are literate enough that we don't need to have
772
01:02:36.945 -->
01:02:39.285a strict code of ethics is the point at which
773
01:02:39.985 -->
01:02:41.125users are sufficiently
774
01:02:41.905 -->
01:02:43.125literate at programming
775
01:02:43.800 -->
01:02:47.980that the lack of ability to program your system becomes a business concern.
776
01:02:48.440 -->
01:02:53.415So like the fact you're running a cloud service and users are like sending you patches
777
01:02:54.195 -->
01:02:56.055that you can't integrate
778
01:02:56.355 -->
01:02:56.855because
779
01:02:57.475 -->
01:03:01.494you like all of your users are programmers and they want your system to behave
780
01:03:11.885 -->
01:03:14.545we we start to get to the point where once the users
781
01:03:14.925 -->
01:03:17.025practically understand systems well enough
782
01:03:17.485 -->
01:03:24.380to start trying to modify them even if they don't have source, right, even if they're hacking it through web API requests or
783
01:03:24.680 -->
01:03:27.420Greasemonkey scripts or whatever it is. If
784
01:03:27.865 -->
01:03:31.165there's a large population of new users who
785
01:03:31.545 -->
01:03:36.445understand your system well enough to write code against it, I think that we've achieved that level of
786
01:03:36.859 -->
01:03:42.720for whoever's audience that is, they've achieved that level of parity. And I think that for society at large, like,
787
01:03:43.180 -->
01:03:50.705once we see there be some tension on that, like, not hype, not the hypothetical tension that, you know, free software folks
788
01:03:51.005 -->
01:03:51.665like to
789
01:03:52.125 -->
01:04:02.790posit might exist where, you know, we might have lots of programmers who might want to modify their operating system, but like everybody is actually trying to modify the applications that they use on a day to day basis.
790
01:04:03.875 -->
01:04:11.310I think that we we should be aiming for that. We should be trying to educate people to the point where they can do that, which means that we need, you know, when we do sort of volunteer
791
01:04:11.690 -->
01:04:18.510learn to code type events and things, we really need to focus on that practical aspect of, like, how are you gonna use this?
792
01:04:19.115 -->
01:04:26.174If you're not gonna change careers, you're not gonna become a software developer, this isn't like a boot camp to get you into the industry, how can people use software to
793
01:04:26.880 -->
01:04:31.700do things in their day to day lives and how can they, like, affect their computing environment, whether it's
794
01:04:32.160 -->
01:04:37.145JavaScript to, you know, script web page front ends or some kind of
795
01:04:37.445 -->
01:04:38.985API requests to hit
796
01:04:39.285 -->
01:04:42.825API back ends or just scripts thrown on their local computers, like what is
797
01:04:43.420 -->
01:04:48.320what does that look like? Getting getting people to understand what that looks like and do that for themselves is
798
01:04:48.860 -->
01:04:49.600what I think
799
01:04:50.380 -->
01:04:53.065practically literacy would mean for this kind of public stuff.
800
01:04:54.025 -->
01:05:01.885 What can the Python community in particular do to start the ball rolling towards defining a set of professional ethics and what has it already done in this area?
801
01:05:03.130 -->
01:05:05.470 Well, I think that the, 1 thing that it's done
802
01:05:05.930 -->
01:05:12.644that's been great, which is tangentially related but still important is the code of conduct in the Python community.
803
01:05:13.424 -->
01:05:15.045Now I think that the the PSF
804
01:05:15.505 -->
01:05:18.724code of conduct actually does not go go far enough,
805
01:05:19.359 -->
01:05:26.099but other areas of the IPAC community like the the Django code of conduct is actually a bit more specific and I think that it moves in a good direction
806
01:05:26.465 -->
01:05:30.725But the fact that the community is actively discussing these things and having these
807
01:05:31.185 -->
01:05:37.109demonstrably very hard conversations that a lot of people have been very upset about it, it's been, you know, change is difficult.
808
01:05:37.410 -->
01:05:39.510I think that the fact that we've come through that conversation
809
01:05:40.130 -->
01:05:43.670and we're starting to achieve some consensus around it means that
810
01:05:44.055 -->
01:05:44.535we,
811
01:05:44.935 -->
01:05:46.715could potentially do the same thing
812
01:05:47.015 -->
01:05:49.755around some kind of Python programmer's code of ethics.
813
01:05:50.135 -->
01:05:56.350And like I said, this is gonna be a slow process. It's gonna take some time. And again, it the 1 of the problems with PSF
814
01:05:56.730 -->
01:05:58.590as an organ for this is
815
01:05:59.130 -->
01:06:04.365the PSF is a membership organization mostly for individuals. Now we do have corporate members, and
816
01:06:05.464 -->
01:06:10.285that would be great if we can get some of them involved in the discussion. But I think companies are
817
01:06:11.320 -->
01:06:19.820rightly somewhat cagey to get involved in something that might turn into a legally binding agreement at some point. So, we need to find a way for them
818
01:06:20.265 -->
01:06:28.185to to get involved without fear, you know, shutting out the possibility of discussion, which is tough, and I I recognize that. So I I think that the
819
01:06:28.590 -->
01:06:30.770I think that the PSF is kind of the right
820
01:06:31.790 -->
01:06:34.130organization, and I think that it's probably
821
01:06:34.830 -->
01:06:36.770but probably it's going to come out of
822
01:06:37.734 -->
01:06:38.795smaller projects,
823
01:06:39.255 -->
01:06:40.615perhaps an interest group,
824
01:06:41.015 -->
01:06:41.755a sig
825
01:06:42.454 -->
01:06:42.954that
826
01:06:44.055 -->
01:06:46.760starts discussing this somehow. I mean, I I really
827
01:06:47.320 -->
01:07:06.180I I guess I really should have put this closer to the the top of the show, but I am not really an expert in ethical reasoning. I've been thinking about this for a long time. I don't think I mentioned this, earlier, but I I, you know, this this post this this talk came out of a blog post I wrote in 2, 000 5. I actually had to go look it up to remember
828
01:07:06.800 -->
01:07:11.860when it came from. So I've been thinking about it for a long time, but, like, I don't have any particular credential or
829
01:07:12.164 -->
01:07:16.585special understanding in this area. So I I my main interest is in getting the discussion started
830
01:07:17.045 -->
01:07:21.785and getting other people thinking about, like, what how they disagree with me, really. And
831
01:07:22.140 -->
01:07:29.039that so that discussion group, I think I I don't think I'm the right person to lead it or to try to, like you know, and I don't necessarily know that the
832
01:07:29.515 -->
01:07:38.940Python community specifically is the right place to have that discussion, but I think that the PSF has demonstrated that it's at least sort of possible to have that kind of discussion within its,
833
01:07:39.820 -->
01:07:42.960under its aegis, and that might be a good place to try.
834
01:07:43.420 -->
01:07:55.859 I was gonna ask if there is anything that we didn't ask you that we you think we should have asked or anything that you wanted to bring up, that you wanted to share with our listeners before we move to the PIX? Well, it was I guess the the question that I sort of just
835
01:07:56.320 -->
01:07:58.660 half answered was the, how did I
836
01:07:59.440 -->
01:08:02.000get into this question, which I I don't think you,
837
01:08:03.665 -->
01:08:05.265you got to earlier. Because,
838
01:08:05.905 -->
01:08:09.985I was actually thinking about that quite a lot before we talked. And the
839
01:08:10.770 -->
01:08:12.950although it was a sequel to a blog post I read in 2005,
840
01:08:14.370 -->
01:08:17.575I I guess I probably started thinking about this,
841
01:08:18.055 -->
01:08:21.755when I was a kid because I grew up in a Star Trek The Next Generation household.
842
01:08:22.295 -->
01:08:22.795And
843
01:08:23.335 -->
01:08:26.235the so the the foundation of my ethical awareness,
844
01:08:26.640 -->
01:08:41.525was when captain Descartes first said the first duty of every starfleet officer is to the truth, whether it's scientific truth or historical truth or personal truth. And if you can't find within yourself to stand up and tell the truth about what happened, you don't deserve to wear that uniform. That's kind of how I feel like
845
01:08:42.190 -->
01:08:45.570software developers. We don't we don't have a uniform though, so
846
01:08:47.230 -->
01:08:51.570it threads through all of my thinking about this and what I really hope that the main
847
01:08:52.255 -->
01:08:55.795kind of guiding principle that other other folks take forward into
848
01:08:56.175 -->
01:08:57.875other discussions that I will subsequently
849
01:08:58.415 -->
01:09:01.215disagree with I'm sure is really this notion that,
850
01:09:01.730 -->
01:09:03.830the important aspect of
851
01:09:05.010 -->
01:09:05.510being
852
01:09:06.530 -->
01:09:11.030an outstanding professional is truth, is correctly representing yourself
853
01:09:11.895 -->
01:09:16.555accurately in a way that your customers or your users, your clients understand.
854
01:09:16.935 -->
01:09:21.950And I think that there are a whole bunch of ways that we've done that very poorly in the software community.
855
01:09:22.330 -->
01:09:27.550And 1 of the reasons that I think the Python community is a great place to start this conversation is that Python has
856
01:09:28.385 -->
01:09:29.285always been,
857
01:09:30.305 -->
01:09:31.605you know, just technologically
858
01:09:32.305 -->
01:09:34.005very much in favor,
859
01:09:34.785 -->
01:09:37.365almost even more so than like,
860
01:09:38.850 -->
01:09:40.150than something like JavaScript
861
01:09:40.690 -->
01:09:41.190in
862
01:09:42.370 -->
01:09:51.264giving you the giving the user all of the source code. Right? So not not on the in the sense of like, you know, if you're a customer of a web service. But if you're running
863
01:09:51.565 -->
01:09:53.985the software in some software in Python
864
01:09:54.890 -->
01:09:58.430it's always sort of been possible to just execute bytecode,
865
01:09:58.970 -->
01:09:59.470but
866
01:10:00.250 -->
01:10:02.990nobody really does that. Like a couple of
867
01:10:03.615 -->
01:10:14.110things have, you know, binaries have come out over the years that have done that. Certainly, you know, people have confidentiality concerns or intellectual property issues and they where they they don't wanna be able they don't wanna be shipping source. But,
868
01:10:14.650 -->
01:10:18.510for the most part, the cultural norms in the pipeline community are
869
01:10:18.945 -->
01:10:35.560just always ship source to your users. And the reason I say more so than in JavaScript is in JavaScript you end up running against these technical limitations where you're, like, you really want to minify your source, you really want to kinda crush it down for productions that it doesn't take up more room on the wire than it needs to. But Python didn't have that concern, and so,
870
01:10:36.180 -->
01:10:37.080yeah, we just
871
01:10:37.775 -->
01:10:46.860share source freely. There's been there's been talk about computer programming for everyone since the very beginning of the language's history. So that that's a that's a good mindset to have.
872
01:10:47.240 -->
01:10:58.075 It's a good starting point. Well, I think that is a very interesting conversation about ethics, and I'm sure it gives our listeners a lot to think about and a lot to comment on.
873
01:10:58.535 -->
01:11:00.955So with that, we'll move into the picks.
874
01:11:01.360 -->
01:11:05.380And for my first pick, I'm gonna choose the Philips SHP
875
01:11:05.680 -->
01:11:07.30095 100 Headphones.
876
01:11:08.080 -->
01:11:11.804I recently had the headphones that I was using start to
877
01:11:12.585 -->
01:11:24.380malfunction and stop working properly. So I went ahead and got myself a new set of headphones. And rather than just go with the 5 or $10 pair that I usually get, I decided to get some decent ones
878
01:11:25.080 -->
01:11:33.835and did a little bit of research and came across these. And I have been very pleased. They've got a really wide frequency range from 12 hertz up to 35 kilohertz,
879
01:11:34.375 -->
01:11:37.995which is pretty wild. And they're open back design, so
880
01:11:38.449 -->
01:11:45.670when you're wearing them, you can actually still hear everything that's going on around you rather than most headphones where they just shut you out shut everything out. And
881
01:11:46.265 -->
01:11:52.765I just really enjoy that. It also makes it a lot more pleasant when I'm wearing them and talking to somebody on the phone
882
01:11:53.280 -->
01:12:00.580because I can actually hear myself talk instead of having it be really muffled and weird like you get with noise cancelling or earbud headphones.
883
01:12:01.985 -->
01:12:04.005For my next pick, I'm gonna choose keybase.
884
01:12:04.385 -->
01:12:11.739Io, which is a website and sort of a social network around GPG keys and
885
01:12:12.280 -->
01:12:22.325giving a different way of establishing trust than the traditional, you know, I'll sign your key, you sign my key, and having to meet in person to validate that trust. They give you a way of
886
01:12:22.945 -->
01:12:23.445socially
887
01:12:24.225 -->
01:12:24.725validating
888
01:12:25.025 -->
01:12:27.845your identity through Twitter and DNS
889
01:12:28.230 -->
01:12:28.730records
890
01:12:29.670 -->
01:12:30.730and whatever other
891
01:12:31.350 -->
01:12:32.890networks you might wanna employ.
892
01:12:33.670 -->
01:12:44.770So I've been enjoying using that. And for anybody who's interested, I've actually got some invites that I can give out. So to any listener who wants to get an invite, send a tweet to podcastinnit
893
01:12:46.590 -->
01:12:50.369on Twitter, and let us know what your favorite part is about the show.
894
01:12:50.925 -->
01:12:54.224And I will choose some people to give an invite to.
895
01:12:54.605 -->
01:13:10.155My last pick is Paul Blart Mall Cop 2, which is a movie with Kevin James that I watched recently. And it is 1 of the funniest movies I have watched in a long time. So I'm just gonna leave it at that. Definitely recommend watching it. So check it out if you're so inclined.
896
01:13:10.775 -->
01:13:11.915Chris, what do you have?
897
01:13:12.375 -->
01:13:21.309 So the first 1 is an indie game that has been around on a PC for a long time, but I don't play I don't own Windows, and I don't play Windows games generally.
898
01:13:21.825 -->
01:13:26.165So when it came to the iPad, I was really excited and gave it a shot. It's called Don't Starve,
899
01:13:26.625 -->
01:13:28.165and it's this really
900
01:13:29.199 -->
01:13:29.699demented
901
01:13:30.239 -->
01:13:31.300game with a Lovecraftian
902
01:13:31.760 -->
01:13:32.659horror twist
903
01:13:32.960 -->
01:13:38.020that's sort of like you trying to survive out in the wilds and has a very simple mechanic.
904
01:13:38.855 -->
01:13:42.074It's very hard. You will die a lot. It's a lot of fun.
905
01:13:42.375 -->
01:13:53.240The the translation to a tablet is brilliant. It's their controls are perfect. It's it just it really works. It's it's a great example of how the iPad is a first class gaming platform
906
01:13:54.020 -->
01:13:58.485for those of us who do most of our gaming on the go or on the trading or whatever the case may be.
907
01:13:58.864 -->
01:14:02.565My next pick, shockingly enough for me, is a Python pick.
908
01:14:03.264 -->
01:14:11.520I don't usually pick a lot of Python picks because I'm still a Python noob, and most of the time, other people have more interesting things to say. But,
909
01:14:11.900 -->
01:14:14.880Reuben Lerner, who is a guest of our show, previous guest,
910
01:14:15.205 -->
01:14:17.385published a blog post this last week
911
01:14:17.764 -->
01:14:18.905on list comprehensions.
912
01:14:19.445 -->
01:14:30.620And if you're like me and you know how to use list comprehensions, but they're not you know, you're still not entirely sure or or you could use more depth, this is a blog post for you.
913
01:14:31.000 -->
01:14:33.180It it uses the analogy of
914
01:14:33.525 -->
01:14:39.545a SQL query or an Excel spreadsheet, and I I think it's it's just it's beautifully done. You should definitely check it out.
915
01:14:40.005 -->
01:14:48.310And I know I learned a lot from reading it. And my last pick is Bar Hill Gin. It's a Vermont made gin that's brewed from honey.
916
01:14:48.690 -->
01:14:57.645And so it's very unusual in that it's a little sweeter and a little has a little different flavor character than a lot of genes that I've encountered.
917
01:14:58.265 -->
01:15:10.145It's really delicious for certain kinds of mixed drinks. I wouldn't use it for gin and tonic. It's great just straight, just having a a finger or 2 in a glass over some ice. Very refreshing. It's, it's great stuff.
918
01:15:10.525 -->
01:15:18.469 And that's it for me. I'll kick it over to Glyph. What do you have for us? I'll just interrupt quickly and say that I definitely support your pick of Bar Hill Gin, and
919
01:15:18.770 -->
01:15:25.830I've had their gin. And they also do a vodka that is made entirely from honey. And they also do 1 called
920
01:15:26.525 -->
01:15:27.905Tomcat, which is
921
01:15:28.525 -->
01:15:39.980a modern version of old Tom, which is, you know, from old England. And they are all very excellent. So I recommend anybody who is within their distribution range to check them out.
922
01:15:41.265 -->
01:15:42.265 Okay. I guess,
923
01:15:42.705 -->
01:15:44.545this is this is new to me. So,
924
01:15:45.025 -->
01:15:46.885but for me, I guess, I will,
925
01:15:47.960 -->
01:15:53.739for for my first pick, I guess, for I'll stick with the theme of a Python pick, which is, py to app.
926
01:15:54.360 -->
01:15:59.145And, more I guess in the the general ecosystem of Py2app, pyobjectivec.
927
01:16:00.885 -->
01:16:04.745I actually wrote a big blog post about this recently so you can
928
01:16:06.140 -->
01:16:07.680read about it in more detail,
929
01:16:08.780 -->
01:16:09.760at lif. Twistedmatrix.com,
930
01:16:10.460 -->
01:16:21.175but I find that a lot of Python developers kinda do a lot of back end stuff, don't know that they can, you know, that they they all we have Macs, Macs are super popular. We don't know that you can just kinda
931
01:16:21.635 -->
01:16:22.455hack together
932
01:16:24.130 -->
01:16:25.350a Mac application
933
01:16:25.810 -->
01:16:26.630really easily,
934
01:16:27.410 -->
01:16:37.105a little obscure, it's not quite as well documented as it could be, but that's what my little intro on my blog was about, is to help people get kick started with how to get PyObjectivec going
935
01:16:37.405 -->
01:16:38.945inside, like, GUI.
936
01:16:39.485 -->
01:16:40.785But, yeah, you can you can,
937
01:16:41.350 -->
01:16:48.010there there has been a a team of folks, very small team, thanklessly working for years making sure that it's possible to
938
01:16:48.844 -->
01:16:54.784make and distribute Mac apps and customize the Mac GUI and do all kinds of cool stuff basically call any API on the whole platform,
939
01:16:55.165 -->
01:16:55.665so
940
01:16:56.125 -->
01:16:56.864check out
941
01:16:57.330 -->
01:17:00.070it's, Py2, the number 2 app,
942
01:17:00.610 -->
01:17:01.430and Pyobjc,
943
01:17:02.210 -->
01:17:02.710OBJ
944
01:17:03.090 -->
01:17:03.590C,
945
01:17:04.130 -->
01:17:05.670both great projects that
946
01:17:06.665 -->
01:17:08.285can let you do all kinds of fun
947
01:17:09.385 -->
01:17:13.325hacks on your own development machine while you're working on your web back end stuff.
948
01:17:13.785 -->
01:17:14.285And,
949
01:17:15.300 -->
01:17:17.620my my second pick will is the,
950
01:17:18.260 -->
01:17:18.760Sensair,
951
01:17:19.540 -->
01:17:21.080Sous Vide Immersion Circulator,
952
01:17:22.100 -->
01:17:23.400which is just a
953
01:17:24.324 -->
01:17:28.505fantastic way to prepare any kind of meat or protein that you want.
954
01:17:28.965 -->
01:17:29.284I
955
01:17:30.005 -->
01:17:32.025it is surprisingly inexpensive,
956
01:17:32.830 -->
01:17:39.535immersion circulators used to be like $5, 000 and this is only, I think it's 199. You might be able to get it cheaper than that.
957
01:17:40.415 -->
01:17:41.795But, it is a,
958
01:17:42.735 -->
01:17:43.475you just
959
01:17:43.935 -->
01:17:46.275take a big hunk of meat, you put it into a
960
01:17:46.920 -->
01:17:50.780into a vacuum sealed bag, you put it in the immersion circulator for
961
01:17:51.320 -->
01:17:55.340as little as 2 or as many as, 72 hours and it comes out
962
01:17:56.215 -->
01:17:59.435unbelievably tender and juicy and delicious. You can,
963
01:18:00.055 -->
01:18:05.380you can basically take a chunk of chuck roast and end up with something that's like prime rib,
964
01:18:05.860 -->
01:18:07.239so it's kind of amazing.
965
01:18:08.179 -->
01:18:14.855And, I don't know, those 2 picks really kind of sum up the universe for me, so I'm gonna I'll leave it at that.
966
01:18:16.614 -->
01:18:35.715 Great. Well, we really appreciate you taking the time to join us and we appreciate your employer for letting letting you take the time. For anybody who is interested in keeping in touch with you or contacting you to talk further about this issue, what would be the best way for them to reach you or follow what you're up to? You can reach me on, Twitter. I'm Glyph.
967
01:18:36.335 -->
01:18:38.594 You can reach me on Keybase. I'm Glyph.
968
01:18:40.000 -->
01:18:40.900I'm at glyph.twistedmatrix.com.
969
01:18:43.040 -->
01:18:44.500I am Glyph on freenode.net.
970
01:18:45.040 -->
01:18:48.660Basically, just type Glyph into the Internet and, and I'll come up.
971
01:18:49.915 -->
01:18:54.655 Well, again, thank you very much. We really appreciate it, and I'm sure our listeners do too.