Nothingness and identity in Python and Django by Daniele Procida

This video features Daniele Procida at DjangoCon US 2019 in San Diego, California, USA.

Nothingness and identity in Python and Django by Daniele Procida
0:41:38
Published October 25, 2019
431 views

DjangoCon 2019 - Nothingness and identity in Python and Django by Daniele Procida

There’s something rich, beautiful and mysterious in the several kinds of nothingness and identity that we encounter as Django programmers. Understanding the connections they make with ontology, epistemology and metaphysics adds another dimension to the joy of programming.

This talk was presented at: https://2019.djangocon.us/talks/nothingness-and-identity-in-python-and/

LINKS:
Follow Daniele Procida 👇
On Twitter: https://twitter.com/EvilDMP

Follow DjangCon US 👇
https://twitter.com/djangocon

Follow DEFNA 👇
https://twitter.com/defnado
https://www.defna.org/

Intro music: "This Is How We Quirk It" by Avocado Junkie.
Video production by Confreaks TV.
Captions by White Coat Captioning.

Summary

Python and Django expose philosophical questions that ordinary language tends to hide. Daniele Procida uses Plato and Aristotle to frame two ways of thinking—starting from abstract forms or from concrete instances—and connects them to class-based Python and prototype-based JavaScript. He shows how “nothing” in software is not one simple absence: `None`, `null`, blank values, zero, empty collections, and empty strings behave differently and affect models, forms, databases, filtering, display, and ordering. He also explains why Python’s distinction between identity and equality reflects an internal model of being that programmers must understand, and argues that programmers are unusually well placed to think seriously about philosophy and the social consequences of the systems they build.

Key takeaways

  • Python and Django require explicit decisions about different kinds of absence, including `None`, database `NULL`, blank form values, zero, empty strings, and empty collections.
  • Representing real people and names in Django involves difficult choices about missing values, validation, sorting, filtering, and display.
  • Python’s `is` tests identity while `==` tests equality, and confusing them exposes the language’s internal model of objects and values.
  • Plato’s abstract forms provide a useful analogy for Python’s class-based object model, while Aristotle’s concrete-first approach aligns more closely with prototype-based JavaScript.
  • Programming concepts such as functions, attributes, types, instances, identity, and negation have roots in longstanding philosophical questions.
  • Philosophy can help programmers become deeper and wiser thinkers, especially when their technical decisions shape how people live and communicate.

Summarised automatically from the transcript.

Transcript

6,645 words · auto-generated Show

Automatically transcribed, so expect mistakes in names and technical terms.

0:15

Speaker 1: Um thank you everyone and um thank you to the organizers for inviting me and for organizing the conference since they are all volunteers and have been working I think for the last fifty-one weeks since the end of the last Django Con US, very grateful to them because uh I know just how much work's involved with that. So when you see a volunteer, give them a a thank you or a hug if they permit that. That's me, that's what I look like on television. You can contact me any way you like. I mean, you can contact me on Twitter, it's not something I tend to use, but uh it's there. Um I have been involved in Django for more than ten years now, or or

1:01

Speaker 1: not involved in Django, but using Django or trying to use Django. Uh I'm um a member of the core development team and I'm I put that at embolden ex-vice president of the Django Software Foundation because um people still keep writing to me thinking that I have power, which sadly I I no longer have. Um so but it's it's nice to be thought of this as powerful. I I work at um DVO. Uh we're a company we offer cloud hosting for web projects. Um so just to explain does anybody know what DVO does? Here. Oh, a few people. Okay, well. We're programmers, so I'm sure you've all had the experience of banging your own head with frustration while programming. Well, um unfortunately you're programmers, so that's your problem.

1:47

Speaker 1: We can't help you with that part. But Even though it's frustrating, I actually really enjoy programming and writing my modest little web applications. But what I don't enjoy is the ta the other tasks involved in getting them into project into production, you know, deployment and DevOps and system administration. Has has anyone else had the experience of actually being made to cry while trying to configure a a system or a web server. Yeah, yeah. So I'm so it's uh it's um I I was hoping I wouldn't be in a room of full of people more manly than me who wouldn't admit to crying about that kind of thing. So programming in Django is one thing and trying to configure say Amazon's uh web services is infrastructure for s media storage is is is quite another. And

2:32

Speaker 1: that's what we do. We take care of that. So you know y your programming problems there, your problems, we we're not gonna help you with that. But the other stuff you can leave to us so that you don't have to. cry about it. So we it's it's for people who don't want to do DevOps or crying basically. That's uh I think I'm gonna talk to our marketing team and try and explain why this is What we should have on our website. And um working with DVO has brought me many, many privileges. And for me the most important one is my involvement in the African Python movement Did you know that we held the first PyCon Africa this summer in Accra in Ghana? Yeah. Well thank you. And sadly that um one of my co-organizers

3:18

Speaker 1: I was the only non-African on on the team, but Noah was supposed to be here from Ghana but I'm afraid your embassy messed up his visa and wouldn't put it right. So he couldn't come. Um But uh I've I think I've been to seven different African PyCons and now we had the first Pan-African PyCon, three hundred and twenty-three people from many countries. I'd love to talk to anybody about this, so please come and talk to me about that. And maybe, you know, if you're thinking that you might like to visit Namibia or Tanzania or Ghana for a as a Pythonista, then that's certainly a possibility So come and talk to me about DVO, about deployment, or any of these things. Right, let's get started.

4:04

Speaker 1: Maybe you know this. picture. This is a 16th century fresco by Raphael in the Apostolic Palace in the Vatican. And it's uh it's called this, it's kind of subtitled the the Or it's known as the School of Athens, and it depicts thinkers and scholars mainly from antiquity. And if you look right in the center, what you see there are Plato, the older one, and Aristotle, who was his most famous pupil. And like all good pupils, he fulfilled his duties Not just of learning from his teacher, but also of responding to him too. And Plato's pointing towards the heavens. He's referring to a world that's outside space and time, outside the senses, a world that belongs to.

4:55

Speaker 1: Pure the pure forms that the things in our material world are just a kind of shadowy, imperfect copy of. And Aristotle is pointing down into the material world because he argues against Plato that um form only exists as the form of substance and that knowledge and truth require us to generalize from the concrete and the particular to the universal and not the other way around, as Plato argues. And these two directions to the heavens and to the earth, they represent probably the most single most important axis of thinking in Western philosophy. And the question is you know, w in which direction do we

5:40

Speaker 1: turn to or reach for first, to these universal truths and ideals that lie beyond the senses or to the material, actual world that lies at at our feet, that presents itself. Now, that's not the history of Western philosophy, and don't start please thinking that I've told you that everything in Western philosophy can be reduced To that. But what I hope you can see is that this difference represents two distinct directions of thinking, and you don't need to be a student of philosophy. to uh recognize them. And and the interesting thing is that people generally recognize themselves in those in one of those two directions. You know, you right now will

6:25

Speaker 1: have intellectual sympathies that resonate maybe more with Plato or maybe more with Aristotle. And most people seem to know w once it's described to them which direction is kind of naturally theirs, which one they were they were born with in a way that I'm not saying that everybody knows that thinks that they are Platonists or Aristotelians or that some believe in a world of universal pure forms, but that people do generally find themselves preferring and tending to think in a certain direction over the other. And as I said, you can see this. The access represented by these two different directions is a key to understanding Western philosophy over the past 25 centuries.

7:11

Speaker 1: Now I started learning Python just 10 years ago and I had a very memorable experience. Last time I told this story, several more than one person accused me of making it up, and I promise you what I'm going to tell you is is exactly how it happened, I swear it. It was a five-day introduction to Python and Jang. and we were given a really nice handbook. And um I I I I practically lived in that handbook. It was always open on my desk and you see all the marks of my espresso coffee uh capsules, that's where I put it put it down. And during that first week of our little um uh training session, I I brought it home and I showed it to my girlfriend Carol and she picked it up and she looked through it and then she said

7:58

Speaker 1: functions, classes, and attributes. This is Aristotle. And in a way, she was right. So Aristotle's concerned with uh in his ethics he's concerned with virtue. And he argues that the Defining human function is a rational activity. And he's very interested in the relationship with between what a being is and what a being does. And he talks a lot about the function of things. And I mentioned this the next day to the person who was giving our training, who turned out not just to have a doctorate in artificial intelligence, but to have studied philosophy and theology as as well. He was familiar with these ideas and so he and I got quite excited and we were talking about this and there were three of my colleagues in the room uh with us while we were discussing, you know

8:44

Speaker 1: the function of the human and the human soul and so on. And uh uh m my three colleagues put up with this very patiently for a while and then one of them announced I'm a creationist and this talk about function and reason is making me feel really uncomfortable. And I wasn't expecting that And I wasn't sure whether he was teasing me or making a joke and or even if I'd misheard. And I asked him, you know, could he explain? And my colleague Ben said You needn't look so surprised. I'm a creationist too. And by this point my mouth was open and I wasn't feeling or looking very intelligent And I wasn't saying anything, but my third colleague said, Daniele, you're outnumbered.

9:30

Speaker 1: I'm also a creationist. Now You have to understand this was literally my subject. I've been teaching philosophy at university for for many years. If there was one thing I knew how to do, it was to help people pick their way through these questions and ideas and in intelligent and thoughtful ways. So all kinds of questions naturally immediately occurred to me like, should we accept Aristotle's account of virtue as a disposition? Or what should we make of his conception of function as defining activity rather than as purpose? And so on. And I had so many of thoughts and questions like this spinning around in my head in quick succession. But the truth is that I was so stunned that the only thing that formulated itself into anything resembling a coherent actual sentence was, what

10:18

Speaker 1: about the dinosaurs? And and fortunately you know I had enough of my wits left that I didn't say anything. And also if there's one thing I've learnt in life, it's to recognize when I'm outnumbered. So I was intrigued and stunned and surprised, but I didn't pursue the question. But I've never forgotten that experience of how quickly we got from basic concepts in um programming to ideas in metaphysics and ontology that weren't just important to academic philosophers but could resonate with people who hadn't studied this stuff and you know do things like shake and upset people who hadn't studied it and were just listening to conversations about it because they realized there was something profound in these ideas.

11:05

Speaker 1: And shaking people is exactly what philosoph uh important philosophical concepts tend to do. The interesting thing is that philosophical concepts are at work in programming itself. And we find them literally expressed in our code. And when programmers are working with their code, they're also working With philosophical ideas. And the more I've learnt about programming, the more obvious it has become to me how deeply embedded in programming these ideas are. And of course you can expect some of that because you know um logic is is a branch of philosophy and what is programming if it's if it if it's not putting together sequences of uh logical operations.

11:51

Speaker 1: But As the case of Aristotle and functions suggests, it's uh it goes deeper and further, and I think it's more interesting. So as a programming beginner, I was on familiar territory. These this connection gave me something to hold on to as I was struggling with programming. Uh a way into under in into understanding programming concepts through things I was already familiar with. I already knew my way around things like attributes. and um on ontologies and identity and truth and nothingness and so on. Even things like types and instances and abstract classes belong to philosophy. I'm not saying I know what those things exactly meant, but I I could at least

12:37

Speaker 1: uh sing the songs using those words because you know I I knew that language In philosophy, they're all troublesome and contested ideas, whereas programmers are very lucky somebody's gone to the trouble of defining them precisely before you even get started. But I was used to tangling with these ideas And there was another thing that seemed very familiar and that I really enjoyed in my learning programming and still do, were these kind of declarations about programming which seemed to have a kind of profound poetic mystery about them. So my my handbook said functions are first class values. And it said Values have type, variables don't. And this reminded me, for example, of Wittgenstein.

13:22

Speaker 1: Truth functions can be arranged in series. Or Emmanuel Kant. Existence is not a predicate. And I couldn't really judge whether these declarations were true or what their implications were when I encountered them, either in philosophy or programming. axioms, discoveries, necessary truths. I I didn't know. But even if I didn't completely understand what they meant, I could still sense there was something important and significant about them And reading statements like these about Python, for example, reminded me of how it was to be studying philosophy and the feelings that I had when I read them. I couldn't judge whether these declarations were necessary.

14:10

Speaker 1: True or false, but they seemed to me to lie very strongly upon a line of truth. It seemed to matter whether they were going to turn out to be true or false or right or wrong. And they were things that I didn't understand the first time or the fifteenth time I I read them, but I seemed to feel a kind of demand that I come back to them again and again until I did. And the things that I read about Python Affected me in a similar way. And when you do find yourself confronted with a question that seems to lie upon a line of truth, you feel obliged to follow it and And to explore it, to work it out for yourself, and to work out which direction to take along it And when you find a line of truth, it seems to light up something in the inquiring mind, something really restless and beautiful, something that refuses to

15:02

Speaker 1: to be satisfied by shallow or cheap answers. And something that seems to have um seems to recognize a kind of duty to its own intrinsic value. And that was what drew me to philosophy in the first place and later when I was a teacher to see. this light up in my own students and that was one of the deepest pleasures that I had from from teaching. And sometimes these kind of gnomic assertions allowed me to feel quite superior. So this is in my hand Python correctly distinguishes between an initializer and a constructor. Many languages, like Java, conflate the two, incorrectly calling this a constructor. And of course I was filled immediately with a kind of painful pity for the kind of people who might conflate a constructor with an initializer.

15:50

Speaker 1: And I swear I had literally no idea what a constructor might be but I knew that I would never be confused with the Vulgarians who might confuse it with an initial an initializer And this was another thing that I also f found in philosophy in just the same kind of way. So here's um Immanuel Kant dispatching certain critics of the Scottish uh skeptic David Hume. Uh Kant said they should have penetrated deeply deeply into the nature of reason, a task which did not suit them. Instead, they found a more convenient way of being defiant without any insight, namely the appeal to common sense. And just by repeating those words to myself, I would feel as though I were kind of van vanquishing grubby legions of thinkers who imagine deep problems have common sense solutions.

16:35

Speaker 1: Now, just like I I learned early in life to recognize when I'm outnumbered, I know how to recognize this sentence that represent superior intellectual firepower. You know, I know which side to be on. So when I started programming, I kept running into surprises that were not unlike the problems that philosophers find themselves with. When they confidently pick up something that looks familiar and simple to have a closer look at it. So some of you are familiar with children or may even have some of your own, but even a child learns to use with confidence simple words like nothing. What's going on up there? Nothing.

17:21

Speaker 1: And we use these concepts and words dozens of times a day, not just in In speech, but in the thinking that represents and orders the world around us. And we do it without hesitation and we do it without doubt. Nothing is just the absence of something. But just as in philosophy, nothing starts to look more troublesome when you look at it more closely, the programmer who has to deal with nothing runs into similar complications. So one of the most common things that I would have to do as a programmer would be to check for the absence of something. And all of a sudden it was a complete marvel to me how many different kinds of nothing could exist in programming. And I had to deal with so many of them. There was none. and there was zero and there were empty lists and sets and other collections.

18:07

Speaker 1: There was the empty string. Then in Django there was uh I discovered a new kind of number nothing null for the database and then blank for the forms, and they were all different kinds of nothing and they were all different from each other. So in in the Django applications I was building, um I needed to represent the world, to construct a picture, not just of its material, of the stuff in it, but of the world's logical form, its logical structure. And here, nothingness was everywhere. Everywhere I looked, it turned out to be key to the logical structure of the representation of the world. I always started thinking about what was in the world, the stuff in it And always found myself running up about problems, not about the stuff, but about the absence of stuff, how critical nothing turned out to be to the logical representation.

18:56

Speaker 1: And I found myself being obliged to spend a lot of time making decisions about nothing and how to handle nothing. I was working at um Cardiff University School of Medicine then and one of the things my web application needed to do was to be able to represent the members of staff who worked there, record them and information about them and display them in detail and in lists and so on. So I needed to be able to represent actual members people from the world and um I needed a person model to do this in Django. So I had actual persons and um I need to have uh um an adequate account of person in my own logic

19:42

Speaker 1: my own mind, in my own logical representation of the world. I needed to have it in my Django models, in the database where I'd store them, in the forms and in the output where I'd display them. And all these different kinds of nothingness that I encountered made not just one different, but different kinds of difference in all these different representations. So just think about uh A name for a person and the parts of names that people have. Which parts of a name can be non-existent? And how do you code or or allow for that? What nothingness will you allow in a name on what combinations of nothingness How will that nothingness affect how you display them or list them or order them or filter for them? Say you've got to display the list of people in a certain department.

20:28

Speaker 1: And after a while you realize that it's not just representing the world. You're you're building a world out of logic. And it's quite a responsibility. And after a while I started to feel very sympathetic. Towards God. I'm pretty sure I I was really quite sure that I understood the difficulties that God faced when he was uh making the world. And I'm the kind of person who appreciates how hard other people's jobs can be be. So I felt that he and I must have been in the same kind of business at some level. And names provide us with something Some excellent examples of the problems that nothing causes us because they start out looking pretty simple, but you know I I confess I already found Sting a bit irritating before I became a programmer.

21:13

Speaker 1: But so I was aggrieved but ultimately not really surprised to discover that he could be annoying in a new way. So as a programmer the God builder of my world, and it could be up to me to say, well no Sting, I think you're you're having one name is pretentious and I'm not going to allow it and uh uh you'll have to use your uh a name like like the normal people do. Tough luck. Sorry. But on the other hand, this is President Sukarno of uh the first president of Indonesia, and like many Javanese, he only had one name. He didn't have a family name. This is very common. In fact, I I discovered the other day that he had nine times as many wives as he had names. And that maybe is a record for a president.

22:00

Speaker 1: So i all you know I c felt quite casual about denying Sting the right to have just one name, but uh it didn't seem fair on on all the Javanese So what could I do about that? Well, you know, you can um take account of it in your Janko model by allowing null equals true. But that's still not enough. You still need to have a different kind of null for the forms. And it's still not enough because I still need to deal with this nothingness correctly when it comes to the work of filtering or in my output. So where should Sukarno live in my list of persons when I display them alphabetically? And so it goes on. Nothing turns out to be an awful lot of work. And complex work because nothingness isn't just a simple business. It touches everything and affects everything at

22:48

Speaker 1: Touches, nothing really does um matter. Now in programming I found another abiding fascination on the other side of nothingness and negative in being. And you know, being is to identity as nothingness is to negation. Just as negation has its origins in nothingness, so identity uh has its origin in being. And both being and identity have their their uh they lie in the verb to be. And once again even a child very early on learns to use that verb correctly and and and in accordance with the norms.

23:34

Speaker 1: And so does the Python beginner when they start doing their Python. And they use these notions in simple and successful ways. So the new program will have read or been told that is refers to identity, whereas the uh equality operator refers to uh equality. But in ordinary language we can say things like seven and plus seven equals fourteen or seven plus And seven is fourteen, and there doesn't seem to be too much urgency about distinguishing between these things. And at first, often it will seem to work in ways that you'd expect, and everybody's very happy about that. Until they do something that looks or they thought looked the same, and then

24:21

Speaker 1: it doesn't work. And they can continue to run into puzzles in which their expectations built on apparently similar outcomes Uh oh sorry, yeah, which I exp they they've seen apparently similar outcomes of apparently similar operations and think they've built up a pattern. And they run into things like like this we think yes that's um uh that's okay. I can get that. Oops sorry what's happened there with um Have I messed up my own slides? I think I've messed up my slides a bit. Let me just go back a moment.

25:11

Speaker 1: Yeah. Um so so they will um they will run into an unexpected result You might say that you know maybe those two things were only superficially similar. I I think actually that the similarities are quite deep. Only a human human would notice them But the computer doesn't. And the problem, what they're running into, is Python's internal metaphysics of being, which will catch them out again and again. until they fully internalize it. So here's another example where we have uh some uh operations and some operations that maybe looks similar and we're still happy about that. And that's still looking alright. And then all of a sudden they run into something that is like a car crash in their in in in their logic

26:01

Speaker 1: because Does it maybe I should explain this a little bit. So um in the first example in the top left, if you do um assign a hundred to two different variables a and b and then ask is a b say yes it is. And here we've done exactly the same thing with two other numbers and although they're equal They're not identical and that's because internally Python represents numbers bigger than 256 differently from the way it represents numbers smaller. So there's this stuff going on at this deep level. And if you don't internalize it, you will run into this. What you thought or what they thought they were asking wasn't what they were really asking. And in ordinary language you might get away with it, but in the terminal

26:46

Speaker 1: you don't And there's just more of it. Then this is there's some really fun stuff here. I just I I think this I think this is fun. I think there's a certain kind of fun to be had in exploring this stuff At least for a certain kind of person, you know, when you're by the time you get to this l second last line, you think, what on earth is is happening there? But it all hangs together. And it's Python's internal metaphysics. So we use this all without hesitation in ordinary life. But in philosophy, we spilt vast amounts of ink trying to understand those concepts and we think What an unnecessary fuss around such small words as is and not. And people lose patience with philosophers when they seem to be making making a big deal out of simple, easily understood things.

27:33

Speaker 1: And they people don't like it. And you can understand how the appeal to common sense can seem attractive. Um especially when uh you know you've got people making big complicated foreign sounding words about ordinary uh ordinary ones And even worse, when you have um uh a president also indulging in quibbling about the meaning of the the word is, it depends on what the meaning of the word is is. So even if you're actually sincerely interested in the meaning of the word is, this was not really a very good look. And the fact that he was visibly squirming and sweaty didn't make it much make it much better. So um unfortunately uh for us the Python interpreter

28:20

Speaker 1: has got More patience than a grand jury. And no powers of understanding either. So we had better be sure that we and the interpreter agree on the meaning of the word is whenever we use it. And we'd better understand Python's internal metaphysics of being. So I want to return again to the question of Plato and Aristotle. Carol was really happy to read about functions and attributes. in Python because it reminded her of Aristotle and uh Aristotle has a lot to say about them. But since we've been contrasting Plato and Aristotle, let's have a little a closer look. For Plato, our attention should be turned towards the ideal forms of things because the actual forms things in our world here, in our world of senses, they're just mere shadows or

29:07

Speaker 1: imperfect copies of those forms. A triangle is only a triangle because the ideal form of a triangle exists somewhere in a realm of forms. The form came first and that's what makes the uh instance. it's possible. But for Aristotle on the other hand, we have to start with the concrete particulars and form only inheres in those particular objects. And it's only through those objects that we are able to discern the generals, the universals. So for Aristotle, triangles and triangleness both exist, but the form can only be found in actual examples of triangles. And for me this I discovered this aligned nicely with another distinction.

29:54

Speaker 1: The um nope, some shutting my pieces The object-oriented programming that we do in Python is class-based. But Class-based programming is not the only kind of object-oriented programming. So JavaScript uses prototype-based programming. So in class-based programming we define abstract classes that we instantiate as objects. So we go from the abstract to the concrete. But in prototype-based programming we create concrete objects that we then clone. In class-based programming, we make new things from other things that then inherit from uh existing ones.

30:39

Speaker 1: But in prototype-based programming New things are objects that inherit from existing objects. So in class-based programming, as in Plato, the ideal form of an object, the blueprint, the class that defines it exist exists in and of itself, whereas for Aristotle or prototype-based programming, the general form only exists through the concrete objects. Which means that um Plato is to Python as Aristotle is to JavaScript. And um so Carol was wrong when she said it was Aristotle, it was Plato really. But she was wasn't a programmer, so she didn't know. And I didn't know this until quite recently. So here we are back again with Plato and uh

31:25

Speaker 1: Aristotle. And Plato's pointing upwards for the source of truth, the realm of ideas and the abstract, and Aristotle's referring to the concrete world at his feet. And to say that one is right and one is wrong is not the point. But I think it's a difference that kind of demands that we take sides in some way. And most of Western hello Yeah. Um most of Western philosophy seems to have uh been the history of taking sides uh on this. And any debate right now, for example, between a pragmatist and an idealist can also be overlaid on this. I'm I'm not saying that uh a modern idealist or pragmatist is a Platon

32:11

Speaker 1: uh uh a uh Platonist or an Aristotelian, um just that you can see how these things line up, that you can see in the two different approaches, the two different ways of thinking, directions of thought that clearly align and fit with those of Plato on one side or Aristotle on the other. So they lived 25 years ago, but their ideas are still alive and kicking and at work and we can engage with them. And I love that. And for people who are a bit argumentative like like me It means you can have an argument with someone who died two and a half thousand years ago and what's more they're still answering back. So let's go back to this question for the final time of Plato. And or Aristotle, which is the one for us, which is the one that speaks most directly

32:56

Speaker 1: uh or deeply to us. And uh in a way I have two answers answers for this. One is you know, I don't have to choose Because how can you choose between Plato and Aristotle? But it depends a bit on my mood because sometimes the answer is Plato, obviously. So here for the very last time, here's Plato and Aristotle on the walls of the apostolic palace, all eyes on them, the center of attention around which everything else is revolving, pointing up and pointing down. And he's John Travolta in Saturday Night Fever. And all eyes are on him. He's a center around which everything revolves. And he's also pointing up and pointing down at the same time. And the two directions that John Travolta gives us

33:45

Speaker 1: is a give us a line, and it's a line of truth. He's giving us a dimension. We can choose a direction on that line, but we don't have to The important thing is not that you have to choose and declare this direction to be yours, but to be aware of that dimension. And like John Travolta, that dimension contains both directions at once. And we must live on this Dimension. We must find our way upon this line of truth. And as I said before, when you find yourself confronted with something that seems to be a line of truth, you feel obliged to follow it and explore it to work out for yourself Which direction to take along it. And that was the the force of the demand that I felt in philosophy to respond and demand uh

34:30

Speaker 1: sorry to respond and engage with the kinds of demands and questions that they raise And the interesting thing for me is that of all the people I've met in the world, the ones who respond most strongly to those questions are programmers. And I don't know why. Maybe it's because people who become programmers are already disposed to being alive to those questions, or maybe programmers do something to people and changes the way they think. And it's not just that they're alive to these questions, they also seem to be well equipped to tackle them. I've never met any other population of people who can and including academic philosophers who can think and talk about philosophical questions as intelligently and wisely

35:17

Speaker 1: As programmers can, and it's an experience I've had again and again. There's something in programming that gives people insights into certain kinds of philosophical questions and uh a clear grasp of certain concepts. And the conversations the conversations that I've had with programmers about these things have been consistently more enjoyable and rewarding than ones than the ones I've had, for example, with students. or or colleagues even or as enemies as I like to refer to them in academia. And I'm sure that if programmers became philosophers, they'd have something really worth uh something to say that would would be worth hearing. So here's uh Immanuel Kant's treatment of nothingness in the Critique of Pure Reason.

36:04

Speaker 1: And honestly you should maybe read it one day it's equal in technical rigor and depth to anything that a programmer could think of. And I would love to see a programmer, rather than some lazy philosopher, get their teeth into uh a philosopher programmer get their teeth into into something like that. Or this is his analysis of judgment, which he describes as logical judgment is a logical function of unity for Ken. There's that word functions again. And I'm sure that a programmer philosopher would have something more valuable to say than the mountains of rubbish I've had. to read, including, you know, and I'm not talking about students' essays, I'm talking about books that I went out and bought with my own money from um people I've fortunately never

36:50

Speaker 1: met for them. And there's so many places to go and things to think about that are connected directly to these concepts in programming. So we have being and nothingness. substance and consciousness or identity and negation or equivalence and difference or positivity that is you know what actually is and normativity which is what should be, or objecthood versus becoming. And these all lie there on that distinction. between being and uh nothingness. And this goes wider and further and deeper maybe

37:37

Speaker 1: than you imagine. Plato argued that until philosophers become rulers or kings or kings become philosophers, a truly just society would be impossible. Well, I I've seen how philosophers manage to run a philosophy department, so I'm don't have my hopes up for uh uh the philosopher king and I have to admit that when you know thirty years ago when I was a uh a young academic I found it quite an attractive notion but um with a bit of distance the idea has come to seem a little bit more a little less implausible On the other hand, we could have programmer kings. And I think, no, thank you very much. I would wouldn't like that very much either. Programmers already have more power than I think is safe to have in their hands.

38:24

Speaker 1: Because their ways of thinking, programmers' ways of thinking are responsible for They find expression in the construction of our world. They are responsible and in becoming increasingly responsible for the way we live and the way we communicate and so on. We can talk about that another time, but I don't think there's any evidence to suggest that they'd be better kings than philosophers would be. But on the other hand, the idea of programming philosophers, I think that is something else Programmers are made for this. I think they're genuinely good at it. And I find it nothing less than fascinating that they are. And I continue every time I meet them to have these fascinating encounters with programmers. That illuminate and add new dimensions to the philosophy that I studied for so many years and that has been

39:13

Speaker 1: one of the most important things in my life for most of my life. So To the programmers, I just say thank you for all the conversations and I hope that we will have many more Thank you.

39:35

Speaker 2: Thank you very much, Danielle. I'm always entertained when I see your talks. Um You mentioned you so you talk about philosophers and programmers as if they are two distinct groups. Would you think there is benefit in pro people who are programmers? I know that I didn't inst encounter philosophy until a PhD program and even then reluctantly uh learning w is there b would there be benefit in programmers spending more time reading philosophy either to inform the decision making process around the ways we're ruining the world or to understand the programming that we're actually doing better. Um

40:05

Speaker 1: actually that's a really interesting question and I was thinking about this. Um the programmers tend to be smart, clever, fast thinking people but they don't always have the opportunity to become very deep thinkers about things and this is why so many of the things that programmers come up with when they for example have a s a a social implication looks so horrendous. You know, what looks like a really smart idea to a clever 23-year-old isn't necessarily very wise or or or profound. And I think perhaps that might be a dimension that the study of philosophy has to offer for programmers, whether it would make their programming any better, you know, I don't think it's

40:54

Speaker 1: I don't think it's made me a great programmer or you know maybe there's another reason why I'm not a great programmer, but I I think it would certainly be valuable to their thinking, yes So there's a difference between being a fast, smart, clever person and being somebody who is a profound thinker.

41:16

Speaker 3: Any more questions?

Questions this talk answers

What kinds of “nothing” are there in Python and Django?

Python and Django distinguish among values such as `None`, zero, empty collections, empty strings, database `NULL`, and form-level `blank`. These represent absence differently, so choosing and handling the right kind matters in models, forms, filtering, and output.

Discussed at 18:07

What is the difference between `is` and `==` in Python?

`is` tests object identity, while `==` tests equality. Two values can compare equal without being the same object, and Python’s internal object representations can make relying on apparent similarities confusing.

Discussed at 23:34

Why should programmers study philosophy?

The speaker says philosophy can help programmers become deeper and wiser thinkers, especially when considering the social consequences of technology. It may not necessarily make someone a better programmer, but it can improve the quality of their thinking and decisions.

Discussed at 40:05

Note: We understand that names change, people change, and bodies change. We respect each individual's journey and privacy. If you have any concerns about a video or need us to remove content, please don't hesitate to contact us. We will handle your request with care and promptly address any issues.

More videos by Daniele Procida

More videos from DjangoCon US