Rendered at 05:25:07 GMT+0000 (Coordinated Universal Time) with Cloudflare Workers.
w-m 4 days ago [-]
$ python -c "import this"
The Zen of Python, by Tim Peters
Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren't special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one-- and preferably only one --obvious way to do it.
Although that way may not be obvious at first unless you're Dutch.
Now is better than never.
Although never is often better than *right* now.
If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea -- let's do more of those!
Buttons840 3 days ago [-]
Which is stored in `this.s` as the following string:
Gur Mra bs Clguba, ol Gvz Crgref
Ornhgvshy vf orggre guna htyl.
Rkcyvpvg vf orggre guna vzcyvpvg.
Fvzcyr vf orggre guna pbzcyrk.
Pbzcyrk vf orggre guna pbzcyvpngrq.
Syng vf orggre guna arfgrq.
Fcnefr vf orggre guna qrafr.
Ernqnovyvgl pbhagf.
Fcrpvny pnfrf nera'g fcrpvny rabhtu gb oernx gur ehyrf.
Nygubhtu cenpgvpnyvgl orngf chevgl.
Reebef fubhyq arire cnff fvyragyl.
Hayrff rkcyvpvgyl fvyraprq.
Va gur snpr bs nzovthvgl, ershfr gur grzcgngvba gb thrff.
Gurer fubhyq or bar-- naq cersrenoyl bayl bar --boivbhf jnl gb qb vg.
Nygubhtu gung jnl znl abg or boivbhf ng svefg hayrff lbh'er Qhgpu.
Abj vf orggre guna arire.
Nygubhtu arire vf bsgra orggre guna evtug abj.
Vs gur vzcyrzragngvba vf uneq gb rkcynva, vg'f n onq vqrn.
Vs gur vzcyrzragngvba vf rnfl gb rkcynva, vg znl or n tbbq vqrn.
Anzrfcnprf ner bar ubaxvat terng vqrn -- yrg'f qb zber bs gubfr!
...but why? Why is it encrypted and not stored as plaintext?
Buttons840 3 days ago [-]
It's to ensure the text is never altered because altering it would require reverse engineering the encryption algorithm which is a felony. (This is a joke, and a not-so-subtle criticism of the DMCA.)
notpushkin 3 days ago [-]
Wouldn’t be much of an easter egg if it was too easy to understand <wink>?
Suzuran 3 days ago [-]
Easter eggs are a code smell now, completely unacceptable. I'm sure the fun police will be all in to remove it.
Waterluvian 3 days ago [-]
I discovered this early on in my programming journey and it helped set my philosophical trajectory. Over the years I’ve slowly grokked these items. But it was valuable to have a North Star even before I realized why they were important.
tclancy 3 days ago [-]
Oh same, same. They didn’t all land at once but I remember multiple times I ran import this because I was bored or finished at the end of a day and thinking, “Oh yeah, I figured that out since the last time.” To me, it was a formative document and I can’t say enough good things about it.
vasco 3 days ago [-]
> Oh yeah, I figured that out since the last time.
It's incredible how every single thought you think it's yours was already had a bunch of times.
shiandow 3 days ago [-]
The PEP explicitly says there are 20 of which only 19 are written down and I can't figure out if that is a joke, a deliberate statement, or both.
jacobolus 3 days ago [-]
From the original mailing list message:
> There you go: 20 Pythonic Fec^H^H^HTheses on the nose, counting the one I'm
> leaving for Guido to fill in. If the answer to *any* Python design issue
> isn't obvious after reading those -- well, I just give up <wink>.
Two of the most common bugs in programming is the off-by-one error.
spockz 3 days ago [-]
The other one being naming and caching.
3 days ago [-]
bitter_michael 3 days ago [-]
Interestingly, today this text reads not only as good advice for coders but also as good instructions for agents. Perhaps time to revisit those and make sure the spirit of these adages is captured there
js2 3 days ago [-]
More succinctly, you can run this as a module:
$ python -m this # -mthis works too
driggs 3 days ago [-]
You've missed the joke, or maybe you weren't old enough to be learning Python during Java's heyday.
The joke is that people wanting to write Python like Java - with an implicit reference to an object's instance - would attempt to import Java's `this` keyword.
Instead of getting Java-like behavior, they're presented with the Zen of Python. You wouldn't be wrong to think that it was as much a commentary on other popular languages of the day as it was a guiding ethos of Python itself.
"Beautiful is better than ugly. Explicit is better than implicit."
js2 3 days ago [-]
Well that's embarrassing. I learned Java in 1996 in college. I was introduced to Python (1.5.2) at a startup in 2000. The startup was probably equally split between Java and Python code. I've essentially used Python almost exclusively since then. It's served me well in my career. I never have cared for Java.
Thank you for explaining the joke that's now old enough to drink, but somehow has eluded me all this time. :-)
bjourne 3 days ago [-]
Haha, yes! Back in the day whether self should be implicit or explicit was a major point of contention. Those who loved Java and C++ found self to be almost as repugnant as Python's indentation-based syntax. I even posted code on the now defunct ActiveState site to make self implicit again:
For good reasons, Pythonistas were not appreciative! :)
zahlman 2 days ago [-]
The revamp of the object model in 3.x IMO justified the design decision more strongly, since now methods are just functions (unless and until munged by the descriptor protocol) and the class is essentially just a namespace for them. (Namespaces are one honking great idea -- let's do more of those!) In 2.x, methods were a separate "unbound method" type even when accessed through the class, even if you explicitly inherited from `object`; with this model, one could more easily imagine special accommodations for `self`.
zahlman 2 days ago [-]
> The joke is that people wanting to write Python like Java - with an implicit reference to an object's instance - would attempt to import Java's `this` keyword.
No, that isn't where the name comes from; the slogan "import this" was chosen for Python in a contest, and the decision was made to stuff the Zen there because it was also importable code. There's no record of who submitted this slogan or what the motivation was. And I certainly never heard of anyone trying to get a `this` keyword by importing an ordinary module; that would make no sense (the closest reasonable spelling would be something like `from __future__ import this_keyword`).
I always assumed it was partly a reference to the famous McBainism from Star Trek: First Contacthttps://www.youtube.com/watch?v=qbZ-CfhuZ5s&t=88s which came out three years earlier in 1996. But also, the whole conceit of having a programming-language philosophy described in a series of aphorisms was itself clearly a gentle poke at Larry Wall and Perl, or at least a two-can-play gesture. It was Wall who was known for talking expansively about language philosophy.
wk_end 3 days ago [-]
c.f. what happens when you try `from __future__ import braces`
nine_k 3 days ago [-]
The call to import this has more than the Python syntax meaning.
Pretty much all of this critique applies squarely to the Zen of Python.
moron4hire 3 days ago [-]
Seriously. None of those lines are actionable in any way. It seems to ruin afoul of its own advice, "If the implementation is hard to explain, it's a bad idea."
marcosdumay 3 days ago [-]
Some people (or maybe even most) take it almost religiously. Maybe because of the name.
But the Zen of Python is an absolutely great vision statement, that positioned the language very clearly in comparison to the ones that existed at the time, and was good enough to guide its development for more than a decade.
Still, yeah, you can negate half of those things and also arrive at a good language.
bossyTeacher 3 days ago [-]
I took this mantra with me when I learned other languages.
flykespice 3 days ago [-]
> There should be one-- and preferably only one --obvious way to do it.
Oh boy, that didn't age well for Python language did it? It matches with C++ in growing complexity of syntax features. With a couple dozen ways to write the very same algorithm.
buster 3 days ago [-]
To be honest I found this sentence to be beautiful and true for many years after working a lot with php and perl.
The mort important word in this sentence is obvious. There are many many many ways to do the same thing but working with python I found that mostly to be true, there is always an obvious, documented way (and not two of three!). Searching for a way to do something in perl, for example, was such a huge difference.
bigstrat2003 3 days ago [-]
Python has never followed the Zen. The irritating way the language lets you use non-booleans in a boolean context flies right in the face of "explicit is better than implicit".
zestyping 3 days ago [-]
This will probably sound crazy to some of you, but I believe the introduction of the boolean type was a mistake.
Every primitive type has a null value, and the "if" statement tests for such a value. Whether a value is true or false is a property of the value. Notice that "true" and "false" are adjectives, not nouns.
That is a simple, internally consistent model with one concept of trueness.
The introduction of the boolean type made this a lot messier: it makes "if" look like type coercion, and introduces two different ways to think of boolean-ness (as an adjective or as a noun) which you must hold in your head at the same time. For example, it became possible to compare things as equal to True or False, doubling the number of ways to express a condition: "if x" and "if x == True" are now very similar, but subtly different, ways to express the same thing. The fact that we have to talk about things as "truthy" or "falsy" as if these were different from "true" and "false" is a further illustration of the mess this has created.
If we had stuck with 0 and 1, we would have avoided all this confusion. It is imperfect but simple; what we ended up with is still imperfect and needlessly complicated.
driggs 3 days ago [-]
I still have a printed stack of Python 1.5.7 docs from when I first learned the language.
The addition of boolean `True` and `False` were a huge improvement to the language when they were finally added in 2.3.
I'm not sure why you're making things more complicated than they need to be. Test for truthiness. Conditional statements already evaluate boolean expressions, you're not adding anything explicit by writing `== True`.
zephen 2 days ago [-]
> I still have a printed stack of Python 1.5.7 docs from when I first learned the language.
Argument by verified hoarder?
> The addition of boolean `True` and `False` were a huge improvement to the language when they were finally added in 2.3.
Hard disagree.
pdonis 2 days ago [-]
> If we had stuck with 0 and 1, we would have avoided all this confusion.
I don't see how. Indeed, using 0 and 1, the int values, as if they were boolean false and true created more confusion. First, int has more values than just 0 and 1--and all of them are "truthy". Second, treating 0 and 1 as booleans is still treating boolean-ness as a noun--but also confusing that with treating it as an adjective for those int values.
PEP 285, which introduced the bool type, gives other rationales as well:
Does it? "bank account has 0 dollars" and "no bank account" are different states. 0 cannot (should not) try to represent both. Same for empty string, empty list, empty set, they are data not nulls. Python has None for that.
pdonis 2 days ago [-]
But None has its own type; it's not a value of any of the other primitive types. Which makes sense if you use None to represent "no data present" vs. "data present, value is the null value".
tacitusarc 3 days ago [-]
Booleans are reductionist and likely harmful, as they allow programmers to avoid thinking in terms of the test they are actually performing: is this a member of some set? If the problem is reworked like that Booleans are superfluous (this representation could be compiled to something as performant as using Booleans).
I am not sure if that perspective aligns with yours.
zephen 3 days ago [-]
Not sure why you're getting downvoted so much, but to put this thought into a somewhat broader context:
In an explicitly, statically typed language, bools might be useful as a standard small enum.
In what Python used to be, they weren't, not really.
But for whatever reason, declared typing is now an add-on to the language, and the people who like the verbosity of declared typing also, perhaps schizophrenically, like the terseness afforded by having a standard small enum.
pdonis 2 days ago [-]
> it became possible to compare things as equal to True or False
Not if you just use the objects as their natural types. For example:
>>> "" == False
False
>>> "a" == True
False
> "if x" and "if x == True" are now very similar, but subtly different, ways to express the same thing.
No, they're not. See above.
isityettime 3 days ago [-]
That's because the Zen is a collection of fuzzy aphorisms about taste. Python has in fact never had a set of hard principles that constrain the design of the language.
In other traditions, type systems or the borrow checker or even vaguer things like a commitment to a "tiny core" of just a few primitives constrain language designers in a way that (sometimes inflexibly) commits them to the consequences of earlier design decisions. Python has mostly been designed one step at a time, by fiat. It's not a surprise that the result is an inconsistent language, especially after the resignation of the BDFL, and especially after so many years of widespread popularity.
loeg 3 days ago [-]
And typing wasn't explicit for a long time. Now it is kind of best practice, but you can still produce Python without typecheck metadata.
michaeldh 3 days ago [-]
Practicality beats purity!
logophobia 3 days ago [-]
Except it mostly just leads to suprising bugs and time wasting, in exchange for saving a small amount of typing
benji-york 3 days ago [-]
Do you know why it is the way it is?
throwaway5752 3 days ago [-]
It is really more aspiration, and a good programmer mantra anywhere. Nothing here is so Python specific outside namespaces, and ... that is also a good programmer mantra.
jacquesm 3 days ago [-]
Let's start off with 'Which Python?'
vonunov 1 days ago [-]
/usr/bin/python
jacquesm 1 days ago [-]
Is that python2 or python3?
vonunov 5 hours ago [-]
Oh, I'm not sure. Try:
`which python` --version
jodrellblank 2 days ago [-]
Fourth reply to the article in the link, by Chris McDonough includes:
> "You have Tim to thank at least partially if you were a refugee from Java or Microsoft languages, which made excuses for their sprawling verbosity, complexity, and poor readability. Python, at the time, made none of those and had none of that (it now does). Tim was crucial in ensuring it stayed that way during his most active years. He will claim differently, but, by my observation, it is no accident that Python ballooned in complexity after his exit as day-to-day core developer."
bazoom42 3 days ago [-]
There will always be a billion way to write the same algorithm in a Turing-complete language. That is not the point.
coffeemug 3 days ago [-]
The only thing I never liked about this is complex is better than complicated. Every once in a while there is a post with an “insight” on how they’re different, but it’s the same word! Naming things is hard, but I wish Tim found another word for one of these.
kstrauser 3 days ago [-]
A complication on a wristwatch is anything other than telling time. Phases of the moon? Tides? Calendars? Complications. They make the innards more complex and fragile and difficult to build and repair. Complexity is the inherent difficulty in building the thing.
Together, what that's saying is that sometimes the minimal baseline complexity is going to be pretty high. If you're making a library to support all of HTTP/2, it's going to have lots of codepaths, and that's unavoidable. It's a complex problem requiring a complex solution. But consider SMTP, the "simple" mail transfer protocol. The protocol itself is stupidly simple. I can use — and have used — telnet to port 25 to send email. But because the protocol is so simple, implementing it is extremely complicated. Were the protocol a little more complex, the implementations could be vastly simpler.
Or perhaps more simply, if you're writing a textual protocol, define it as using UTF-8 encoding and move on. UTF-8 is more complex than simpler encodings like ASCII. Allowing your clients and servers to decide that they'd rather support something goofy, like Shift JIS or UTF-16, just makes everything vastly more complicated. Accept that the complexity of UTF-8 is inherent and sufficient, pay the cost, and then let all of your consumers be much simpler.
tacitusarc 3 days ago [-]
See also, Constraints Liberate and Liberties Constrain
mmooss 3 days ago [-]
> it’s the same word!
I guess if you take the square root of -1 you do get a complicated number, but it's a complex one. And then there's the complication for modern democracy called the military-industrial complex, and Oedipus's complex certainly complicated things. Then there's Ghost in the Shell: Standalone Complex, but I'm not really sure what that means.
Seriously, here's the best summary I can quickly find: [0]
"Complicated problems can be hard to solve, but they are addressable with rules and recipes, like the algorithms that place ads on your Twitter feed. They also can be resolved with systems and processes, like the hierarchical structure that most companies use to command and control employees.
... Complex problems involve too many unknowns and too many interrelated factors to reduce to rules and processes. A technological disruption like blockchain is a complex problem. A competitor with an innovative business model — an Uber or an Airbnb — is a complex problem. There’s no algorithm that will tell you how to respond.
This could be dismissed as an exercise in semantics, except for one thing: When facing a problem, says Nason, managers tend to automatically default to complicated thinking. Instead, they should be “consciously managing complexity.”"
Those are very different problems for software development too, and many in IT definitely try to treat every problem as complicated.
Complex = a problem that's inherently difficult to solve due to its fundamental nature. Time is a great example.
Complicated = a solution that's difficult to understand due to a convoluted implementation. These can be simplified.
In other words, the difference is whether the difficulty is inherent to the problem space (complex) versus inflicted by a solution (complicated).
3 days ago [-]
jacobolus 3 days ago [-]
The two words are both centuries old, so have had many chances for various authors and fields to adopt them for differing purposes, sometimes in contradictory ways. So for example a "complex system" (in the sense of the Santa Fe Institute) means something moderately different than what Tim Peters means. In plain English, they are broadly synonymous, so if you were writing a newspaper story you shouldn't expect readers to find subtle differences between them.
But if you know somewhat what implication a particular writer intends in drawing a distinction between the two words, then there's no inherent problem. "Simple is better than complex. Complex is better than complicated." is a pithy way to express a valuable idea:
We should try to make our interfaces, data structures, implementations, systems, etc. "simple", that is, dealing with just one thing at a time, in a clear and straightforward way, with few components each with a well defined purpose, etc. Sometimes, however, there is inherent difficulty in a problem or in the world requiring many interacting pieces, but we should still aim to avoid making things "complicated", that is, tangled, messy, difficult to reason about, ambiguous, unpredictable, gratuitously mixing unrelated concerns, etc.
collingreen 3 days ago [-]
I'll take a stab in this context:
Complex - many parts (but the parts could potentially be simple)
Complicated - have to understand many things in order to understand it at all; large surface area
isityettime 3 days ago [-]
A lot of words in English are etymologically related but have grown significant connotative or denotative differences since the root word was reintroduced to the language by another path.¹ "Complex" and "complicated" are just such a pair. They are not the same word.
In this case you can think of "complex" as referring to essential complexity and "complicated" as referring to incidental complexity.
----
1: See also, for example: "intention" vs. "intension", "chief" vs. "chef", "hotel" vs. "hostel", "corpse" vs. "corps", "compliment" vs. "complement", etc. Sometimes related pairs do the opposite, entering with distinct denotations and developing overlapping ones e.g., "intellect" vs. "intelligence". Some transitionsl ones still include overlap but have had specialized senses come to dominate, e.g., "dispositive" vs. "dispositional". In that last case, the special legal sense of "dispositive" came to dominate the word (or the other senses became archaic) in a way that "made room" for the more general "dispositional" to enter the language.)
If you wanna get your head around English (or probably any language), the intuition that alerts you to related words is a very useful sensitivity, but you have to learn to absolutely resist the temptation to treat etymologically related words as identical. It's just not how language works.
English seems like it might be especially rich with these "etymological doublets" (thanks ChatGPT, for teaching me this word today). They're really useful for capturing distinct shades of meaning between closely related concepts, which is exactly what they do in this adage from Tim Peters.
noufalibrahim 3 days ago [-]
It's generally a tradition for wise adages to be a little ambiguous leaving interpretation to the reader. I think that's as much a feature as it's a bug. Perhaps he meant it that way.
caned 3 days ago [-]
Simple and complex are two sides of the same coin. Both are everywhere in nature. Complication is something else, but how can you describe it? I can think of examples. Bureaucracy comes to mind. Locking and synchronization primitives too. The kind of fragile mechanisms in the Linux kernel that lead to endless CVEs are another. All man-made things!
MForster 3 days ago [-]
to complicate = to make more complex
If something is complex, you have to deal with it. But to complicate things is to be avoided.
ycombinatrix 3 days ago [-]
For some reason, this describes Rust to me way better than it describes Python.
glerk 3 days ago [-]
Hard to disagree with any of this. RIP.
userbinator 3 days ago [-]
It's hard to disagree, since it's very vague and subjective.
svilen_dobrev 3 days ago [-]
Thank you, Tim Peters.
.
koningrobot 2 days ago [-]
I guess at this point we should abandon all hope of ever getting any notion of namespace in Python.
sillysaurusrex 3 days ago [-]
Thing is good.
But sometimes Thing is bad.
I dunno man, use your judgment.
qsfp28 2 days ago [-]
[dead]
leoc 4 days ago [-]
Among his various other works, it was Tim Peters along with Gary Robinson who turned pg's "A Plan for Spam" essay into the successful SpamBayes program: https://www.linuxjournal.com/article/6467 .
The reason that's especially interesting is that I was using an AI to write something that needed that functionality, and it spewed out that same Python code, which I recognized immediately. It was slightly modified with respect to naming and comments because, I assume, it was stored slightly imperfectly in the model's weights.
curiousObject 3 days ago [-]
This concept of making the best use of any available data to infer useful probabilities seems like a crude form of some ideas behind current LLMs, BUT they (Peters, Graham, Robinson and Woodhead) were doing this work 20 years earlier.
nly 3 days ago [-]
Bayes theorem dates back 250 years.
This is what engineering is all about. Applying what it long known to solve new problems, or old problems better.
LLMs are a triumph today because someone made a keystone observation
jeremyjh 3 days ago [-]
I loved SpamBayes! It’s amazing how effective that was, all those years ago. I never learned Python, but I never had trouble using it to build small useful scripts. I never knew I had Tim to thank for both.
lumpa 4 days ago [-]
Once upon a time I used to read all python-dev posts and bugs.python.org issues, so I got to follow (and get a feeling of knowing) these people I admired working and discussing together. Tim was always a favorite.
Another thing that made me feel close to him was his work on the Python Cookbook 2nd Edition, in which he (and other big names in the community) delightfully talks the reader through intricacies and insights of programming, "We read Knuth so you don't have to".
Watching Tim do his thing was a pleasure. He'd go from long, deep technical dives (that he'd make as approachable as possible) into comic relief and human connection in the fractional wink of an eye.
The brief interactions we had will always be cherished as high points in my Pythonista trajectory.
> Ack, on my keyboard I rebound the Tab key to something less annoying: it
deletes a random DLL from c:\Windows\SYSTEM\. OK, OK, version 0.0.2 caters
to stinking tabs. Patch follows.
pdonis 3 days ago [-]
Don't forget how he signed that post:
> if-tabs-were-called-hemorrhoids-as-god-intended-people-would-see-them-for-the-bloody-mess-they-are-ly y'rs - tim
dalke 4 days ago [-]
In the 1990s I was a novice developer, though I considered myself a hotshot because I was better than those around me in college and grad school.
I was an active participant in the comp.lang.python Usenet channel in the late 1990s.
I learned much from reading Tim Peters' posts. To many, including me, he was affectionately referred to as "Uncle Timmy."
One of the things I learned was that I still had much to learn about the art of programming.
Much of the little I know about numerical methods comes from reading his posts. It was fun to read his stories about Kendall Square Research and the (for me) old days of computing.
I remember posting questions about things I didn't understand, which he figured out and explained. [1]
I remember bringing up concepts I thought were specialized and esoteric, only to find that it was actually just my lack of experience. He gently corrected misapprehensions like mine. [2]
He wrote a lot on comp.lang.python. If I recall correctly, at the 7th International Python Conference in Houston, November 1998, there was Festschrift in his honor. He would use <wink> in his messages, and often end with something like "let's-hear-it-for-lambda-in-curly-assignment-stmts-ly y'rs - tim" (that's from the posting where he outlines the Zen of Python). I wondered if they were collected by looking for messages containing an '-ly' only to have Andrew Kuchling remind me about the "From" header. <wink>
[1] In one case, I was parsing a file format where a field was usually three spaces, but was sometimes an integer. I couldn't figure out why one parser was so much faster than the other. The answer was that one tested for three spaces first, and if that failed tested for the int, while the other did the int test first.
Yes, this is something a senior developer knows. I bring it up now to highlight how hotshot-me didn't have that experience, learned that experience, and learned it from someone who was kind about sharing his knowledge.
[2] I was doing bioinformatics back then, and learned about dynamic programming as way to do sequence alignment. I didn't think others knew about the technique, and thought I was bringing esoteric new information to the discussion. Uncle Timmy had used dynamic programming techniques for speech-to-text software at Dragon Systems, and politely pointed out it was more widely known. He also implemented Python's 'difflib'.
ofek 3 days ago [-]
Tim was one of the people who contributed to my love of the Python language eventually expanding to its entire community.
He was always so willing to foster discussion that nearly every interaction resulted in an improved understanding of some topic and a shared eagerness to try or learn more out something tangential that came up via digression. I never knew how many types of voting systems there were nor how extensively they are researched! He also reached out about a comment [0] I made a few years ago which made me feel less discouraged and more welcome.
Tim's writing style was greatly appreciated by myself and many others. What he had to say was often lengthy, to address reader assumptions or some nuance, but was written with such a jovial tone that it was rarely dull or inaccessible.
Among other places, Tim also wrote a lot on StackOverflow. He’d answer all kinds of questions, both from novices and experts.[0][1]
I like reading his answers. He always seemed to have something interesting to say, and his answers are kind, light-hearted, approachable and insightful.
At the time I didn't realize it was the Tim Peters. Very helpful guy. RIP
burning_hamster 2 days ago [-]
I had the same experience. I was new to stackoverflow, and got all kind of flak for my question (but not a single useful answer), but then came along Tim Peters and provided a thoughtful answer that improved on my original approach and a solution that worked perfectly [1]. I was blown away that someone with so much clout in the python community would bother to take quite a bit time out of their day to help a noob. That answer was probably one of most important reasons why I continued to hang out on stackoverflow, which made me a much better problem solver in the long run.
I had largely moved on from Usenet and mailing lists by the mid 00s when I started using Python in earnest, so I was largely unaware of the people involved even if I would have recognized the names. Tim's participation in Stack Overflow gave me (at least as best I can recall) my first real exposure to him as a person, and resulted in a cherished memory and one of what I like to cite as the feathers in my cap: https://stackoverflow.com/questions/21297887 .
linsomniac 4 days ago [-]
Gene Hackman's character in Heist says "I tried to imagine a a fella smarter than myself. Then I tried to think 'What would he do?'"
For me, Tim Peters was that guy. I first met Tim in person at the first PyCon at GWU where I rode an elevator with him and Barry Warsaw. Let me tell you, it was a wild ride. He was a genuinely really nice, smart, kind guy.
RIP my friend.
linsomniac 3 days ago [-]
My last exchange with Tim was him saying that he wasn't feeling up to having visitors.
You never know when an email is going to be the Last Email. Don't put off reconnecting with old friends.
zahlman 3 days ago [-]
Oof, that hits hard. You got me to check; apparently it's been over a year and a half in my case. On the plus side, it involved praising him for his work on faster-than-quadratic int<->str conversion (https://github.com/python/cpython/issues/90716) (which seems to be related to the introduction of Karatsuba multiplication, and to the existence of _pydecimal, although I only really grasped the details in the moment) and getting excited about my then-upcoming blog redesign. Good memories.
bonoboTP 3 days ago [-]
Nice obituary, would have been cool if Guido had stood up for him when he was witch hunted by Python leadership...
And after that three months suspension BS drama Tim just got back to work on Python. Saintly.
btw. made me stop having a favourite programming language.
corroclaro 3 days ago [-]
I sometimes wonder if people-who-think-of-solving-problems-not-creating-them-defensively should secede from the rest of the Internet.
They can keep the tools & remix new ones with LLMs. The rest of us can hang out in some tiny corner talking civilly.
hn_throwaway_99 3 days ago [-]
Post-George Floyd up until Donald Trump was elected, which is when this happened, was peak of this performative bullshit. Like renaming master to main or changing the the name of blacklists and whitelists would end racism, when all this language policing did was make people quietly resentful and was one factor in the backlash that followed.
vintermann 3 days ago [-]
And when Donald Trump was elected, a lot of the engine of that performative BS switched sides without missing a beat, and we went from corporate pinkwashing to corporate stinkwashing.
bongoman42 2 days ago [-]
I was not aware of this, but I had an experience at PyCon 2022 in Utah where I realized how bad the Python community had gotten and turned me off them. I came to attend PyCon from India, I land up there with vaccination certificates and everything and they would not let me attend. Apparently, two vaccinations and a booster were not sufficient because the booster was 15 days past the 6 month mark. Also, they did not have Covishield (Astrazeneca in India) on their list. While I was rtying to explain this to them beside a wall with some 35 pronoun stickers to label yourself with, the guy would shush me if my mask even slipped a mm below the nose. While at the exact same venue, within the same lobby space, some gymnastics convention for high schoolers was going on and they had no masking nothing at all. It could not be more performative than this. I did manage to get in, but lost half a day.
Postosuchus 3 days ago [-]
I came to quote this very article. This raised my eyebrows a lot when I originally read it. I always thought that DEVELOPING A DAMN PROGRAMMING LANGUAGE is inherently apolitical and strongly meritocratic endeavor. Boy, how naive I was...
DannyBee 3 days ago [-]
Their is a lot of sociology and other research that suggests that ironically these attempts at stricter social/etc codes mostly arise in communities that don't really need them. this happens for various reasons, but it makes intutive sense if you think about it - thoughtful, well-run communities tend to think about stuff like this. but they also, because of that, mostly don’t need it. that doesn’t mean that that it is true in every case, of course.
As someone formally trained in many forms of dispute resolution, I'll also offer many of these have a significantly misguided view of effective dispute resolution. They often think some neutral and objective group of people evaluating a situation is an effective way to resolve code of conduct disputes, in part out of a desire to be fair and objective. But these are social disputes and not contract or other legal disputes. Applying mechanisms meant for one to the other does not make a ton of sense
zahlman 20 hours ago [-]
> They often think some neutral and objective group of people evaluating a situation is an effective way to resolve code of conduct disputes, in part out of a desire to be fair and objective.
This claim is increasingly difficult to reconcile with an awareness of who gets chosen to evaluate situations, what reasoning they present as "neutral/fair and objective", and how they go about their resolutions.
mmooss 3 days ago [-]
We are naive when we think, as we all do at times, that humans in our <group> differ from the others - that we have no politics or biases and aren't affected by those things, and we form some just, meritocratic ideal.
When we find ourselvees thinking that, then we are part of the status quo - the system is designed to suit us. It's very easy to think that status quo is the entire universe; just keep doing what you're doing. Instead, to avoid perpetuating the bad aspects of the system, it's essential to curiously and closely look for its boundaries, look outside it, notice the humans out there who are not being served, who may express unhappiness.
Take them at their word; they may seem absurd, but that's your human response to someone violating norms - the norms being the status quo. Their expression may include being disruptive or unpleasant. 'Disrupt' means 'violate the status quo'; it shows you the status quo's limitations.
bonoboTP 3 days ago [-]
No, it's just entryism. It's not inevitable. Long march. I was naive once, too.
zaphirplane 3 days ago [-]
That isn’t a fair statement to make
bonoboTP 3 days ago [-]
How so? Did he stand up for him?
zaphirplane 2 days ago [-]
The 2 posting you made lead with that the sanctioning was an unfair process never explaining why
Unless you are an insider to those discussions you’d not know what was said by whom
Implications that someone should interfere with a process publicly seems wrong as well
staz 3 days ago [-]
You people seems to care a lot more than about this event that Tim Peters ever did.
It looks like you (plural) bring it up only to push your political agenda against Woke or whatever.. while people are mourning and I find it frankly distasteful and an insult to his memory.
patrec 2 days ago [-]
What's distasteful is your gaslighting attempt. It's pretty clear from Tim's own writing that he did care.
> While I've since adopted a tedious posting style to avoid triggering newer people, I haven't really changed. I'm not a grim person, and still find humor (sometimes dark) in almost everything. I just keep all sense of joy bottled up now. "Joy is not professional, supportive, welcoming, or inclusive - unless it's joy at the humiliation of perceived enemies of our new Mandatory Utopia" ;-)
[..]
> I would like an apology from the PSF, but don't expect one, and don't insist on one. What I demand is that they improve the broken _processes_ that led to this. My case wasn't the first one of trumped-up fantasy charges, and won't be the last
asjhqr 3 days ago [-]
Stop this "us vs. them" nonsense. This is about basic human decency, which traditionally the moderate left was supposed to have. Now in the U.S. both extremists from the left and right are horrible human beings and corporate ladder climbers.
They are not woke in the first place. The "old white men" keep their corporate positions that they pretend belong to the underprivileged. David Mertz pointed that out and was swiftly disappeared by the Python Gestapo.
zahlman 19 hours ago [-]
I'm accustomed to seeing that the unwritten ground rules in places that would criticize me for taking Tim's side, include an absolute prohibition on the use of the phrase "you people" in any context, for any reason, because it is apparently a racist dogwhistle or something. So it's rather galling to see it used by a critic.
We are talking about a political system which seeks to introduce or apply rules that are obviously unfair on their face, justified by inconsistent theories that constantly make hypocrites of their proponents. It is bizarre and unreasonable to call opposition to this a "political agenda".
As one of the people directly involved in the situation, let me tell you: defending my friend's legacy is part of the mourning. His treatment was clearly unjust on its face and now the people who were responsible and/or supported it or advocated it are trying to blend in and pretend nothing happened, while showing no remorse whatsoever. While I'm sure the benedictions they offer now are sincere, I find it mind-boggling that it seemingly gives them no pause to consider what happened. Especially considering the timing (dying around the second anniversary of the original tension, and this being discovered around the time of his reinstatement).
Tim made an entire separate blog site to plead his case, largely motivated by my own posts[0][1]. His "mea culpa"[2] ceded only a tiny bit of ground, and even that was frankly unreasonable. (In the post[3] where he accepted blame, he was explicitly calling out an oppressive power structure, just apparently not the right one.) Not to mention that he was very clearly being "tone policed" by people acting on behalf of the very movement that popularized the term to try to shield themselves.
The insulting thing is to pretend that any reasonable person could ever have seen any merit in the claims against him after any honest inspection of the evidence (to the extent that evidence was presented: the nature of the claims made it clear what public events were being alluded to, while nothing private was ever asserted to exist).
Doesn't take a lot of care to post a one sentence comment. But I get it, it would be preferable to "you people" (to point your phrase back at you) to memory-hole those times.
cauch 3 days ago [-]
I don't know.
This whole episode certainly reflects very badly on PSF SC. But it is not a very glorious event of Peters' life either, and it feels better to just not uselessly stir the pot in a way that makes Peters not look good.
(and again, to be clear, PSF SC looks even worse, but of course the point is to remember Peters for what he was, not to profit of his passing to score points against PSF SC)
bonoboTP 3 days ago [-]
Python leadership threw him under the bus and now it's all nice obituaries pretending nothing happened.
cauch 3 days ago [-]
I understand people have strong feeling about that. But I think that the situation is described in a more balanced way in LWN, and, as said on https://tim-one.github.io/psf, I quote, "LWN’s account of Tim’s ban; by far the best “news” article I’ve seen, finding fault on all sides". Peters also produced https://tim-one.github.io/psf/meaculpa where he says he does not recognize the charge against him, but understands why the situation went this way and that it was partially his fault.
So, the situation is more "grey" than Peters being the victim, and I don't think it is a good idea to highlight this in a time where we should focus on Peters. It feels like stirring the pot is just instrumentalizing the event to attack the PSF SC because of unresolved feelings.
Not that this event should be forgotten or forgiven, just that it is not true that it is a mistake it was not mentioned in article talking about Peters' passing. It feels like the idea is that some people don't mention it because they know the PSF SC made a mistake but they want to hide it. But it looks to me that they don't mention it because it makes Peters not look very good on that circumstance.
zahlman 19 hours ago [-]
> where he says he does not recognize the charge against him, but understands why the situation went this way and that it was partially his fault. So, the situation is more "grey" than Peters being the victim
Not in any meaningful sense. The post you cite basically talks about Tim's historical posting style, and then suggests that newcomers to the community might not have been exposed to it, and therefore interpreted https://discuss.python.org/t/for-your-consideration-proposed... as somehow objectionable.
But here's the thing: I first interacted with the guy in 2014 (as far as I can tell) and wasn't part of the Python Usenet/mailing list culture. I didn't really have that exposure either. And yet it was still extremely obvious to me that the post was calling out injustice and not saying anything that any reasonable person could object to. The central argument is that it's unpleasant to be repeatedly subject to training that assumes you need training to behave yourself and not engage in criminal activity, while the wealthy and powerful get away with those crimes. And people who claim to be on the side of "social justice" take offense to that.
If there's some legitimate reason why a morally good person could object to that post, I never heard it floated the entire time, nor in any of the ensuing discussion anywhere on the Internet (and people have accused me before of being unreasonably interested in that discussion). I have only heard people expect me to take it for granted that this, and similar posts, somehow reflect unreasonable behaviour. And because I legitimately can't think of any charitable way to interpret the argument, I don't speculate.
Tim looks just fine "on that circumstance". It is his interlocutors who look completely unreasonable.
cauch 18 hours ago [-]
> Not in any meaningful sense.
This is a very unfair way of treating the situation. What I had in mind was basically what you say after: Peters understands why the situation went this way (because newcomers were not used to his writing style) and acknowledge responsibility in not realising that earlier. His post is literally called "mea culpa". It is very very unfair to pretend that Peters does not recognise some part of responsibility in a post which contains so much language sending explicitly that message.
> But here's the thing: I first interacted ...
Well, what you say is not surprising and does not prove anything. In 99% of situations were people take offence or disagree, there are also people who are fine with it and don't understand why someone would take offence. And it would have been totally unrealistic to pretend that a style that people understood in a given period was misunderstood by 100% of the people just few years later. You were just part of the people who interpreted it as Peters intended. But I'm pretty sure that you interpreted things differently in other circumstances (after all, you were quite unfair in your interpretation of my comment).
> If there's some legitimate reason why a morally good person could object to that post, I never heard it floated the entire time
Well, in Peters post, he says "So too many now read one of my typically part-joking posts, and think I’m making fun of the topic being discussed, or belittling them. Wholly unintended, but understandable, and I first realized that yesterday. Now it makes some sense to me how someone could take offense at my message about sexual harassment."
I think that the situation is simple and that Peters understands it while you don't. The message was incorrectly interpreted. Peters says here that in this case, the reaction was understandable and make some sense. Peters ended up understanding the whole mess that was basically just miscommunication, and acknowledge that this misunderstanding was possible.
On the opposite, in your message, you are basically saying that you cannot understand that someone would misunderstand. That's your opinion, and, after all, why not. But other people have other opinion (including Peters, like it or not). I hope you don't take offence of that :)
> (and people have accused me before of being unreasonably interested in that discussion)
Hm, do you think that it is not highlighting that what "looks just fine" according to you may not be an universal truth?
> Tim looks just fine "on that circumstance". It is his interlocutors who look completely unreasonable.
As I've said, his interlocutors look very bad. You may think Peters looks "just fine", but that does not mean Peters looks just fine. You are just one person. And, I know, "everyone who disagree on this is a social justice warrior and is wrong", but you cannot force other persons who wrote articles on Peters' passing to be bad or misguided because they don't agree with you on this detail.
zahlman 1 hours ago [-]
> Peters understands why the situation went this way (because newcomers were not used to his writing style) and acknowledge responsibility in not realising that earlier.
Well no, that isn't "basically what I said", at all. I think he conceded something that didn't make any sense to concede, because he has too much sympathy for a worldview that makes no sense on its face.
> His post is literally called "mea culpa". It is very very unfair to pretend that Peters does not recognise some part of responsibility in a post which contains so much language sending explicitly that message. … [quote of Tim's analysis]
There's no pretending involved. His post actually contains barely any language that could be characterized as "sending explicitly that message". Most of it is dedicated to describing a context that has nothing to do with blameworthiness. He makes one speculative attempt at steelmanning a position that I am beyond exhausted with. It's just that this time, none of the people supposedly holding that position appear to have tried to connect the dots themselves.
More to the point, I think the steelman is still unworkable. Tim does nothing to establish why it the misinterpretation should be reasonable except to say that people might not be used to his rhetorical style. But the post actually presented a very clear message that I think any reasonable person ought to be able to understand without needing to account for a rhetorical style that I barely even noticed. Further, that message is one that, in my understanding, broadly aligns with what the offended parties claim to believe. It's just that, after 15 or so years of dealing with people presenting similar worldviews, I can no longer take at face value that these claimed beliefs are sincere and in good faith.
Tim was accused of:
> Making light of sensitive topics like workplace sexual harassment, which could be interpreted as harassment or creating an unwelcoming environment.
"Workplace sexual harassment" is not at all the same thing as workplace sexual harassment training. There shouldn't be anything wrong with questioning the implementation of that training, and there is just objectively nothing wrong with pointing out the oddity of referring to "X training" which is about not doing X. But even if it were anything like that, it was clearly not directed at anyone, so "could be interpreted as harassment" is nonsensical.
> As I've said, his interlocutors look very bad. You may think Peters looks "just fine", but that does not mean Peters looks just fine.
No; this is objectively zero-sum because it is a direct conflict. Tim could only have possibly been wrong to the extent that people claiming him to be wrong were justified, and they were not even the tiniest bit justified.
As far as I can tell, the logical implication of seeing those words as "making light" of the training, is that one is offended by the notion that a man objects to being constantly subjected to it. To which I say: imagine if the same variety of "training" were directed at a group not deemed "privileged".
staz 3 days ago [-]
(I said you people because I replied to your comment but I was responding to multiple people at once who said similar thing)
Regardless of who was wrong or right, is it the way you would like to be eulogy written about you? bonoboTP was such a nice person and helped so many person and here is a myriad of example to prove how. All that said, I will remind everyone he had a fight a few years ago with some people he worked with and there were not very nice to him. It is just but a pebble in a long fruitful life, but it is really important I mention it here to remind everyone CoC = bad
bonoboTP 3 days ago [-]
I guess it's indeed awkward. I simply feel an annoying discrepancy. Tim was never properly rehabilitated or apologized to while alive. And now it's just like it never happened.
kalaksi 3 days ago [-]
> to remind everyone CoC = bad
I know you're exaggerating but that's not what they were saying. You're jumping to conclusions. Ironically, it was the incorrect and bad faith interpretations that were also part of the whole saga but I think mostly how the steering council handled everything.
blast 3 days ago [-]
[flagged]
asjhqr 3 days ago [-]
[flagged]
asalahli 3 days ago [-]
Yesterday, out of nowhere I remembered Zen of Python and looked it up to refresh my memory. Prior to that I hadn't known who the author was, so when I saw Tim Peter's name I had a moment of realization that it's the same person who invented Timsort and the same person who was banned from python forums a few years ago for opposing arguing agains bylaw changes.
It feels surreal to learn about his death just the next day. RIP
zahlman 3 days ago [-]
Timsort is presumptively the best-known thing, but he did quite a lot else for core CPython development. As far as I can tell, most of it actually relates to algorithms for handling large integers and the Decimal data type.
heresie-dabord 3 days ago [-]
mcdonc wrote:
"[Tim] took up Python on a lark in its very early days, becoming something like Python’s second real user after Guido.
Guido came to rely on Tim heavily. Tim will demur about this, but as far as I can tell, Tim and Guido were largely partners in the design evolution of very early Python, and before most important features made it in to Python, you could be sure that they had been examined from every angle, shaken, stirred, and thunk about very hard by both of them.
Tim often played the role of gatekeeper and polisher. You have Tim to thank at least partially if you were a refugee from Java or Microsoft languages, which made excuses for their sprawling verbosity, complexity, and poor readability. Python, at the time, made none of those and had none of that (it now does). Tim was crucial in ensuring it stayed that way during his most active years.
[...]
Tim was a Director of the Python Software Foundation from 2001 to 2014, bringing Python across an uncanny valley from a time where it was “interesting but ignorable” to “the planet’s default language” along with a cast of other incredible people. If you use Python, it’s not in small part due to Tim."
philipallstar 3 days ago [-]
This is a good time to remind everyone of the shabby way the PSF treated Tim Peters, a bunch of lesser minds and nasty people gossip-attacking a great mind and a lovely chap[0].
At least they did their horrible things while abiding by the code of conduct.
Copenjin 4 days ago [-]
The Tim of Tim Sort, for those that want to identify him quickly.
yowlingcat 3 days ago [-]
Before I clicked into the link I mentally thought "Wait I hope it's not the guy who invented Tim Sort". Very sad. Trying to retain hope that newer generations of Python folks will keep the zen of Python alive but especially in an agentic era, to some degree that hope does feel less and less realistic by the day.
TZubiri 3 days ago [-]
It's the Tim of the Zen of Python for me
antod 3 days ago [-]
That was one of the things Oracle sued Google over in that big Android/Java suit right?
"Question everything. Love everyone" (from his page)
RIP "Uncle Timmy".
neya 3 days ago [-]
For anyone with more context, could you please help me understand why this wasn't announced earlier? Seems like such a great loss to the community. But, waiting until November to announce the death of a pioneer in July doesn't seem to sit right. Unless there's any historical or cultural context (in which case, I apologize in advance).
meitham 3 days ago [-]
The PSF has become a force of ideological machine with zero tolerance to any disagreement. Tim was sadly banned from the very community he helped to build. He wrote about his ban, see https://tim-one.github.io/psf/
qwerASJ 3 days ago [-]
And some the perpetrators who libeled him are active on GitHub one day after the announcement to show presence and demonstrate that they don't care at all.
neya 3 days ago [-]
Damn, if I was banned from a community that I created, I'd be really sad. What a POS PSF has become
noufalibrahim 3 days ago [-]
There was a "discussion" about some terminology in Python that was considered offensive going on and I remember a tweet from someone (I think it was Guido but I'm likely wrong) saying that many people who argue about these things (referring to politically correct terminology) seem to forget what Python was named after.
The language was named after the British comedy troupe rather than the snake.
Kwpolska 3 days ago [-]
I doubt Guido waited with the announcement, it's most likely he and nobody in the community knew before this week.
nedbat 3 days ago [-]
It was this. There's no nefarious explanation. It's simply that Tim's real-world life didn't overlap much with his online life. People noticed that he had been quiet for a while, went looking, and found his obituary.
grep_it 3 days ago [-]
Tim's description of dicts always stuck with me by describing the hash table slot states as one of citizen, virgin, or turd[1]. <wink>
I learned how to be a person on the internet in large part by watching Tim back in the day. RIP.
themanmaran 3 days ago [-]
I have the Zen of python printed out on our office wall and everyone quotes it at least weekly. It started as a bit of a joke, but become a pretty big part of our culture. It's a great set of rules.
dyoo1979 3 days ago [-]
The world is a bit dimmer for your absence. We miss you.
benjiwdubs 3 days ago [-]
Ugh. As a teen in the aughts interested in computers two things stuck with me. Sitting in his lap and "helping" my dad do SQL modules as he job hunted after the dot com crash, and "discovering" the Zen of Python and Python many years later.
Never really ended up using Python outside one-off scripts and personal stuff but learning the magick of making silicon do work for you and principles for that really stuck with me as I went to high school and beyond.
He'll be sorely missed by everyone who has read the Zen of Python (but not limited to it ofc).
commandersaki 1 days ago [-]
I don't remember Tim Peters much except the foundational things he has done for Python and that time when the Python Committee were completely disrespectful to him and banned him in the forum. Made sure that I would never donate to the Python foundation ever.
throwaway81523 4 days ago [-]
RIP. I didn't know him IRL, but I remember him fondly from the Python Usenet group and Python bug tracker discussions.
ETH_start 3 days ago [-]
Instead of just being sad that people die, we should make a conscious collective choice to use the massive AI/SI compute at our disposal to advance the state of medical technology and engineering.
Routine8502 2 days ago [-]
Gross behavior
sdff1 3 days ago [-]
The Anthropic IPO is going so badly that you need to insert AI advertisements in an obituary thread?
ETH_start 2 days ago [-]
To be honest I didn't even know that Anthropic was having its IPO today, let alone that it was going badly.
allendoerfer 3 days ago [-]
I quoted im earlier today in a commit message at work. Not knowing him at all, this news is a bit of a shock.
dennis_jeeves2 3 days ago [-]
Genuine question - why do you think many seminal figures in CS dying at a relatively young age?
ModernMech 3 days ago [-]
Not speculating about Tim Peters and why he died, but careers in CS promote a sedentary lifestyle, that might have something to do with it. At the same time, Alan Kay is 86!
1nahGa 3 days ago [-]
The Steering Council bureaucrats must be very happy that he cannot "post too many mails" or "use the wrong language" on the mailing lists any longer.
Your corporate sinecure "custom Python distributions" are secure now!
alexandre_m 3 days ago [-]
Legendary contributor.
Thinking that the Python software foundation decided to ban this person for frivolous reasons is both laughable and sad.
I don't think the ban issue is as cut and dried as you appear to believe. Of course the PSF didn't think their reasons were "frivolous", but that doesn't mean they were reasonable reasons either.
zahlman 19 hours ago [-]
As far as I can tell, nobody in the history of the Internet has ever laid out a coherent argument that connects the "reasons" presented to the public evidence and then justifies the charges. (For at least most of the points, there's one obvious piece of public evidence, and in every one of these cases I find the charge patently ridiculous. And Tim testified that he was not shown any private evidence nor told that there was any; and all of his interlocutors steadfastly refused to even address the question of whether there existed any private evidence, while insinuating that the question itself was somehow harassing.)
alexandre_m 1 days ago [-]
It was definitely for frivolous reasons. There's more to it if you start reading though.
One could infer that the core of the issue is that Tim started to ask questions about why the board would grant itself additional powers (see bylaws), advocating for transparency and accountability. They were not happy about that and locked the discussion.
Then they started to look around for reasons to tint his reputation and ban him.
"Dismissing unacceptable behavior of others as a “neurodivergent” trait, which is problematic because it creates a stereotype that neurodivergent people are hard to interact with and need special treatment."
Which was one of the reasons of the ban.
They even considered the use of the wink emoji to be harmful, apparently.
I'm not saying a reasonable person looking in from the outside couldn't think they were frivolous. I'm just saying the PSF leadership themselves didn't think they were.
I personally, looking in from the outside, wouldn't necessarily describe the reasons as "frivolous", but I think "unjustified" certainly fits the bill.
pdonis 1 days ago [-]
> There's more to it if you start reading though.
I agree.
pdonis 1 days ago [-]
> One could infer that the core of the issue is that Tim started to ask questions about why the board would grant itself additional powers (see bylaws), advocating for transparency and accountability. They were not happy about that and locked the discussion.
It's not even much of an inference. The discussion went sideways because Steering Council members in the thread kept responding to Tim's questions about why the proposed bylaws change was being made (and pushed through very quickly with no real discussion) by saying "there are reasons, but they're secret and we can't talk about them, trust us", and getting very hot and bothered when that answer was not accepted (and not just by Tim, there were multiple people in the thread who were not satisfied with it and explained why at some length).
After quite a bit of back and forth, one SC member (I think Thomas Wouters but I'm not sure) admitted that there were specific PSF Fellows (giving no names) who the Board planned to use this new power to remove. And it's at this point that Tim's ban becomes even more of a footgun on the PSF's part, because when Tim saw this, he said that knowing it made him more likely to vote for the proposed bylaw change, since apparently the need for it was not just hypothetical. (Others in the thread took a much more negative view of the revelation than Tim did.) So the whole discussion that Tim prompted ended up with Tim supporting what the PSF were doing in this case--which should have been a cue for the PSF to say, hey, good, I'm glad we've addressed your concern and you're ok with this now. But instead--they banned him.
devadattas 3 days ago [-]
Every time `1 + 2.5` just works in Python, that's Tim. RIP
hanselot 3 days ago [-]
Such a moving piece.
Condolences.
The first thing I was taught by my first boss was import this.
Lived most of my life since by those principles where practically applicable.
bajard 3 days ago [-]
As a programmer who used Python, I'm in debt to him.
edf13 3 days ago [-]
I miss arguing with Perl… back in the day I wrote a full http proxy in Perl that rewrote and compressed http requests. Fun times.
patrec 3 days ago [-]
Ah, yes who more fitting to give a eulogy than Guido, who so bravely spoke up when the woke crazies tried to defenestrate (the unfailingly polite, kind and patient) Tim not even 2 years before his death.
loeg 3 days ago [-]
I learned about Timsort and used it in a class as a student long ago. RIP.
QuantumAtom 3 days ago [-]
May his memory be a blessing
iqbal1980 3 days ago [-]
May he rest in peace, I just learned about Timsort!
sertsa 3 days ago [-]
RIP-ly yours
qwertytyyuu 3 days ago [-]
Tim? The Tim (Timsort) Peters?
fghorow 3 days ago [-]
Very, very sad news. RIP Tim Peters.
v3rm1n 3 days ago [-]
Wisconsin Mentioned!
jujube3 3 days ago [-]
RIP.
vjay15 3 days ago [-]
o7
fxm73 3 days ago [-]
As a greybeard (literally) of the industry, I've reached the age where the people who shaped my younger years, and much of the computing world around me, are slowly being piped to /dev/random.
It's sad to hear, but reflecting on the impact Tim made brings some comfort. Most of us will never know how many people our work helped. Tim could at least see some of that, though even Python's reach can only tell part of the story.
Reading the tributes (https://discuss.python.org/t/in-memoriam-tim-peters-1952-202...), what strikes me is how often people mention his patience and humour alongside his technical brilliance. There's something to aspire to there: doing good work, and taking the time to help others do theirs.
The older I get, the more I appreciate what it takes to leave both kinds of legacy.
Quiet lines of code
Still guide the hands of strangers
His kindness lives on
Rest well, Tim.
noir_lord 3 days ago [-]
Indeed, as someone with some grey in his beard, it hits harder because these where names I was familiar with when I was young (and now I'm not), I've never really been in the python world but I've used it a fair bit over the years and so I've seen comments from Tim here and there, it seeps into your conscious over time.
There are a handful of names in the tech industry who will hit me particularly hard and among those one who will really make me pause.
They will leave behind work that continues to impact the world but given the choice I'd still have them in it.
In my case none of the work I leave behind is going to mean a real lot outside of the people who paid me for that and I'm old enough that the majority of what I've written over the years is now no longer having any impact (refactored or replaced after years) though I'm aware of one that is still actively supported now that is 17 years old.
Almost everything all of us do in terms of actual work output is transient but we do leave memories, I have a mental list of programmers I've worked with over the years who left a last impact and while none of them afaik had the impact of Tim Peters broadly they did narrowly for me at least.
heresie-dabord 3 days ago [-]
> slowly being piped to /dev/random.
Some are gently deallocated. Others are garbage-collected.
There's also a brief statement on LWN (https://lwn.net/Articles/1106901/), although it only really links to the announcement. Still good to know that they care.
leoc 4 days ago [-]
A black bar is appropriate for this news.
ravivarmat 3 days ago [-]
[flagged]
throw-the-towel 3 days ago [-]
Black bar, anyone?
SoftTalker 3 days ago [-]
Sounds like he was living quietly out of the spotlight, or his family kept news of his death private. He died back in July.
fghorow 3 days ago [-]
Agreed. As it was for Fredrik Lundh (aka "the effbot") a few years ago.
mubumbe2 3 days ago [-]
[dead]
graemep 3 days ago [-]
[flagged]
nick__m 3 days ago [-]
banned for insignificant banality by peoples with misplaced hyper sensitivity. It's a black mark on the code of conduct not on Tim Peter !
graemep 2 days ago [-]
I do not understand why people are reacting as you are, and also downvoting me. I stated facts.
I was actually careful about wording because while my impression is the same as yours I thought it would anger people if I said so. I was expecting to be down voted by people defending his suspension.
3 days ago [-]
Postosuchus 3 days ago [-]
I'm willing to bet money that the most rabid (scratch that) vocal people who demanded blood, didn't contribute to Python language and Python community 0.0001% of what he did. Just a hunch.
graemep 2 days ago [-]
Of course not. People who are busy policing what others do never do much positive.
marris 3 days ago [-]
What actually happened (feel free to look it up), is that Tim got into a series of disagreements with people who wrote things like:
'''
Our current board has a majority of people from the Global South or otherwise marginalized groups. That is encouraging and an extremely positive thing. As long as people who are demographically similar to me do not again have a majority, I have the utmost faith in the Board.
As far as I’ve seen, the entire support of this amendment comes from people who look and speak a whole lot like me. People like me should not be trusted.
'''
I think that such people have embarrassed themselves sufficiently over the past few years, and that Tim would not have wanted us to use his obituary to embarrass them further. I say this as a person whose family comes from the Northern hemisphere portion of the Global South.
zahlman 19 hours ago [-]
To be clear, that was the culture everyone was immersed in, but that quote actually comes from[0] one of the people that got banned in the original incident[1]. Not because of the ideology expressed, of course, but because of criticism of the organization's hypocrisy.
I did not know the detail, although my instinct was that it would be much the same as what you say.
What I do not understand is why people are interpreting what I say as supporting those people. I was very careful to just state facts to avoid taking a stance without full knowledge. Is that somehow not acceptable?
> I say this as a person whose family comes from the Northern hemisphere portion of the Global South.
As am I, at least in where I was born and my nationality at birth. I regard "Global South" as horrible, patronising term - although not as bad as "Global Majority" which is worse, if not downright racist IMO.
wagarwaliw 3 days ago [-]
[flagged]
wzdd 3 days ago [-]
It was extremely suspect at the time, and the further away we get from it, the more blinkered and self-aggrandizing the people who supported the ban look.
In particular, the references by Brett Cannon and Emily Morehouse to the fact that they are not sharing the evidence that led to them deciding to suspend a foundational Python developer (and one in no small part responsible for the fun, inclusive nature of the early Python community) means the process is broken and they set themselves up for failure from the start.
rdtsc 3 days ago [-]
I went to look for his blog and yeah, looks like he took it pretty hard https://tim-one.github.io/psf/. I don't know who did what, but certainly devoted a lot energy and health to try to clear his and others' names.
joering2 3 days ago [-]
I'm one of them. It was disgusting frankly how they banned him for _alleged_ violations and never bother to provide and evidence of sort. Tim was just too nice, but if I were as popular as he was back then and a rather popular forum lodged such heavy accusations, I would be drafting defamation lawsuit in a heartbeat. Tim was just too nice of a gentleman to bother. As a senior programmer back then working in one of the major European's country ESPs designing sites, I quickly moved to PHP and never look back. Heck even today going to some of these websites designed 25 years ago, they still run PHP and are free of Python. And when I was handed redesign of at least 30 sites (in a span of 2 years), I took .py code and ended up with .php
123-a1867 3 days ago [-]
[flagged]
baggy_trough 3 days ago [-]
[flagged]
Radim 3 days ago [-]
From "The Shameful Defenestration of Tim" [0]:
> "Instead, Python is now a grey, humorless, corporate place. The Steering Council and CoC Working Groups assume they can simply get away with asserting their correctness, crushing any dissent gracelessly, and relying on Python now being too big to fail. They’re probably right. That is a shame. Being now too big to fail is in no small part due to Tim being exactly whom he is within the threads that they derive their accusations from, and he deserves better."
Somehow I missed all the (disgusting) drama back then, but Tim had an entire page dedicated to PSF's woke insanity [1]. Rest in peace.
Gur Mra bs Clguba, ol Gvz Crgref
Ornhgvshy vf orggre guna htyl. Rkcyvpvg vf orggre guna vzcyvpvg. Fvzcyr vf orggre guna pbzcyrk. Pbzcyrk vf orggre guna pbzcyvpngrq. Syng vf orggre guna arfgrq. Fcnefr vf orggre guna qrafr. Ernqnovyvgl pbhagf. Fcrpvny pnfrf nera'g fcrpvny rabhtu gb oernx gur ehyrf. Nygubhtu cenpgvpnyvgl orngf chevgl. Reebef fubhyq arire cnff fvyragyl. Hayrff rkcyvpvgyl fvyraprq. Va gur snpr bs nzovthvgl, ershfr gur grzcgngvba gb thrff. Gurer fubhyq or bar-- naq cersrenoyl bayl bar --boivbhf jnl gb qb vg. Nygubhtu gung jnl znl abg or boivbhf ng svefg hayrff lbh'er Qhgpu. Abj vf orggre guna arire. Nygubhtu arire vf bsgra orggre guna evtug abj. Vs gur vzcyrzragngvba vf uneq gb rkcynva, vg'f n onq vqrn. Vs gur vzcyrzragngvba vf rnfl gb rkcynva, vg znl or n tbbq vqrn. Anzrfcnprf ner bar ubaxvat terng vqrn -- yrg'f qb zber bs gubfr!
It's incredible how every single thought you think it's yours was already had a bunch of times.
> There you go: 20 Pythonic Fec^H^H^HTheses on the nose, counting the one I'm
> leaving for Guido to fill in. If the answer to *any* Python design issue
> isn't obvious after reading those -- well, I just give up <wink>.
https://mail.python.org/pipermail/python-list/1999-June/0019...
(https://en.wikipedia.org/wiki/Zen_of_Python has more about the discrepancy.)
The joke is that people wanting to write Python like Java - with an implicit reference to an object's instance - would attempt to import Java's `this` keyword.
Instead of getting Java-like behavior, they're presented with the Zen of Python. You wouldn't be wrong to think that it was as much a commentary on other popular languages of the day as it was a guiding ethos of Python itself.
"Beautiful is better than ugly. Explicit is better than implicit."
Thank you for explaining the joke that's now old enough to drink, but somehow has eluded me all this time. :-)
https://web.archive.org/web/20211128002836/https://code.acti...
For good reasons, Pythonistas were not appreciative! :)
No, that isn't where the name comes from; the slogan "import this" was chosen for Python in a contest, and the decision was made to stuff the Zen there because it was also importable code. There's no record of who submitted this slogan or what the motivation was. And I certainly never heard of anyone trying to get a `this` keyword by importing an ordinary module; that would make no sense (the closest reasonable spelling would be something like `from __future__ import this_keyword`).
https://discuss.python.org/t/in-memoriam-tim-peters-1952-202...
Pretty much all of this critique applies squarely to the Zen of Python.
But the Zen of Python is an absolutely great vision statement, that positioned the language very clearly in comparison to the ones that existed at the time, and was good enough to guide its development for more than a decade.
Still, yeah, you can negate half of those things and also arrive at a good language.
Oh boy, that didn't age well for Python language did it? It matches with C++ in growing complexity of syntax features. With a couple dozen ways to write the very same algorithm.
Every primitive type has a null value, and the "if" statement tests for such a value. Whether a value is true or false is a property of the value. Notice that "true" and "false" are adjectives, not nouns.
That is a simple, internally consistent model with one concept of trueness.
The introduction of the boolean type made this a lot messier: it makes "if" look like type coercion, and introduces two different ways to think of boolean-ness (as an adjective or as a noun) which you must hold in your head at the same time. For example, it became possible to compare things as equal to True or False, doubling the number of ways to express a condition: "if x" and "if x == True" are now very similar, but subtly different, ways to express the same thing. The fact that we have to talk about things as "truthy" or "falsy" as if these were different from "true" and "false" is a further illustration of the mess this has created.
If we had stuck with 0 and 1, we would have avoided all this confusion. It is imperfect but simple; what we ended up with is still imperfect and needlessly complicated.
The addition of boolean `True` and `False` were a huge improvement to the language when they were finally added in 2.3.
I'm not sure why you're making things more complicated than they need to be. Test for truthiness. Conditional statements already evaluate boolean expressions, you're not adding anything explicit by writing `== True`.
Argument by verified hoarder?
> The addition of boolean `True` and `False` were a huge improvement to the language when they were finally added in 2.3.
Hard disagree.
I don't see how. Indeed, using 0 and 1, the int values, as if they were boolean false and true created more confusion. First, int has more values than just 0 and 1--and all of them are "truthy". Second, treating 0 and 1 as booleans is still treating boolean-ness as a noun--but also confusing that with treating it as an adjective for those int values.
PEP 285, which introduced the bool type, gives other rationales as well:
https://peps.python.org/pep-0285/
Does it? "bank account has 0 dollars" and "no bank account" are different states. 0 cannot (should not) try to represent both. Same for empty string, empty list, empty set, they are data not nulls. Python has None for that.
I am not sure if that perspective aligns with yours.
In an explicitly, statically typed language, bools might be useful as a standard small enum.
In what Python used to be, they weren't, not really.
But for whatever reason, declared typing is now an add-on to the language, and the people who like the verbosity of declared typing also, perhaps schizophrenically, like the terseness afforded by having a standard small enum.
Not if you just use the objects as their natural types. For example:
> "if x" and "if x == True" are now very similar, but subtly different, ways to express the same thing.No, they're not. See above.
In other traditions, type systems or the borrow checker or even vaguer things like a commitment to a "tiny core" of just a few primitives constrain language designers in a way that (sometimes inflexibly) commits them to the consequences of earlier design decisions. Python has mostly been designed one step at a time, by fiat. It's not a surprise that the result is an inconsistent language, especially after the resignation of the BDFL, and especially after so many years of widespread popularity.
> "You have Tim to thank at least partially if you were a refugee from Java or Microsoft languages, which made excuses for their sprawling verbosity, complexity, and poor readability. Python, at the time, made none of those and had none of that (it now does). Tim was crucial in ensuring it stayed that way during his most active years. He will claim differently, but, by my observation, it is no accident that Python ballooned in complexity after his exit as day-to-day core developer."
Together, what that's saying is that sometimes the minimal baseline complexity is going to be pretty high. If you're making a library to support all of HTTP/2, it's going to have lots of codepaths, and that's unavoidable. It's a complex problem requiring a complex solution. But consider SMTP, the "simple" mail transfer protocol. The protocol itself is stupidly simple. I can use — and have used — telnet to port 25 to send email. But because the protocol is so simple, implementing it is extremely complicated. Were the protocol a little more complex, the implementations could be vastly simpler.
Or perhaps more simply, if you're writing a textual protocol, define it as using UTF-8 encoding and move on. UTF-8 is more complex than simpler encodings like ASCII. Allowing your clients and servers to decide that they'd rather support something goofy, like Shift JIS or UTF-16, just makes everything vastly more complicated. Accept that the complexity of UTF-8 is inherent and sufficient, pay the cost, and then let all of your consumers be much simpler.
I guess if you take the square root of -1 you do get a complicated number, but it's a complex one. And then there's the complication for modern democracy called the military-industrial complex, and Oedipus's complex certainly complicated things. Then there's Ghost in the Shell: Standalone Complex, but I'm not really sure what that means.
Seriously, here's the best summary I can quickly find: [0]
"Complicated problems can be hard to solve, but they are addressable with rules and recipes, like the algorithms that place ads on your Twitter feed. They also can be resolved with systems and processes, like the hierarchical structure that most companies use to command and control employees.
... Complex problems involve too many unknowns and too many interrelated factors to reduce to rules and processes. A technological disruption like blockchain is a complex problem. A competitor with an innovative business model — an Uber or an Airbnb — is a complex problem. There’s no algorithm that will tell you how to respond.
This could be dismissed as an exercise in semantics, except for one thing: When facing a problem, says Nason, managers tend to automatically default to complicated thinking. Instead, they should be “consciously managing complexity.”"
Those are very different problems for software development too, and many in IT definitely try to treat every problem as complicated.
[0] https://sloanreview.mit.edu/article/the-critical-difference-...
Complicated = a solution that's difficult to understand due to a convoluted implementation. These can be simplified.
In other words, the difference is whether the difficulty is inherent to the problem space (complex) versus inflicted by a solution (complicated).
But if you know somewhat what implication a particular writer intends in drawing a distinction between the two words, then there's no inherent problem. "Simple is better than complex. Complex is better than complicated." is a pithy way to express a valuable idea:
We should try to make our interfaces, data structures, implementations, systems, etc. "simple", that is, dealing with just one thing at a time, in a clear and straightforward way, with few components each with a well defined purpose, etc. Sometimes, however, there is inherent difficulty in a problem or in the world requiring many interacting pieces, but we should still aim to avoid making things "complicated", that is, tangled, messy, difficult to reason about, ambiguous, unpredictable, gratuitously mixing unrelated concerns, etc.
Complex - many parts (but the parts could potentially be simple) Complicated - have to understand many things in order to understand it at all; large surface area
In this case you can think of "complex" as referring to essential complexity and "complicated" as referring to incidental complexity.
----
1: See also, for example: "intention" vs. "intension", "chief" vs. "chef", "hotel" vs. "hostel", "corpse" vs. "corps", "compliment" vs. "complement", etc. Sometimes related pairs do the opposite, entering with distinct denotations and developing overlapping ones e.g., "intellect" vs. "intelligence". Some transitionsl ones still include overlap but have had specialized senses come to dominate, e.g., "dispositive" vs. "dispositional". In that last case, the special legal sense of "dispositive" came to dominate the word (or the other senses became archaic) in a way that "made room" for the more general "dispositional" to enter the language.)
If you wanna get your head around English (or probably any language), the intuition that alerts you to related words is a very useful sensitivity, but you have to learn to absolutely resist the temptation to treat etymologically related words as identical. It's just not how language works.
English seems like it might be especially rich with these "etymological doublets" (thanks ChatGPT, for teaching me this word today). They're really useful for capturing distinct shades of meaning between closely related concepts, which is exactly what they do in this adage from Tim Peters.
If something is complex, you have to deal with it. But to complicate things is to be avoided.
.
(EDIT: Robert Woodhead apparently shares in the credit, too: https://www.ceas.cc/papers-2004/136.pdf https://ceas.cc/papers-2004.html . Apparently Rob Hooft was another implementor? I can't find a good source for that though.)
The reason that's especially interesting is that I was using an AI to write something that needed that functionality, and it spewed out that same Python code, which I recognized immediately. It was slightly modified with respect to naming and comments because, I assume, it was stored slightly imperfectly in the model's weights.
This is what engineering is all about. Applying what it long known to solve new problems, or old problems better.
LLMs are a triumph today because someone made a keystone observation
Another thing that made me feel close to him was his work on the Python Cookbook 2nd Edition, in which he (and other big names in the community) delightfully talks the reader through intricacies and insights of programming, "We read Knuth so you don't have to".
Watching Tim do his thing was a pleasure. He'd go from long, deep technical dives (that he'd make as approachable as possible) into comic relief and human connection in the fractional wink of an eye.
The brief interactions we had will always be cherished as high points in my Pythonista trajectory.
One favorite of mine was this response: https://www.python.org/doc/humor/#id15. I also like https://www.python.org/doc/humor/#id19 very much.
https://groups.google.com/g/comp.lang.python/c/DfzH5Nrt05E/m...
> if-tabs-were-called-hemorrhoids-as-god-intended-people-would-see-them-for-the-bloody-mess-they-are-ly y'rs - tim
I was an active participant in the comp.lang.python Usenet channel in the late 1990s.
I learned much from reading Tim Peters' posts. To many, including me, he was affectionately referred to as "Uncle Timmy."
One of the things I learned was that I still had much to learn about the art of programming.
Much of the little I know about numerical methods comes from reading his posts. It was fun to read his stories about Kendall Square Research and the (for me) old days of computing.
I remember posting questions about things I didn't understand, which he figured out and explained. [1]
I remember bringing up concepts I thought were specialized and esoteric, only to find that it was actually just my lack of experience. He gently corrected misapprehensions like mine. [2]
He wrote a lot on comp.lang.python. If I recall correctly, at the 7th International Python Conference in Houston, November 1998, there was Festschrift in his honor. He would use <wink> in his messages, and often end with something like "let's-hear-it-for-lambda-in-curly-assignment-stmts-ly y'rs - tim" (that's from the posting where he outlines the Zen of Python). I wondered if they were collected by looking for messages containing an '-ly' only to have Andrew Kuchling remind me about the "From" header. <wink>
Here is Guido van Rossum starting the thread on "In Memoriam: Tim Peters", at https://discuss.python.org/t/in-memoriam-tim-peters-1952-202... .
Here's an interview of him at PyCon 2006, https://www.youtube.com/watch?v=1wAOy88WxmY
[1] In one case, I was parsing a file format where a field was usually three spaces, but was sometimes an integer. I couldn't figure out why one parser was so much faster than the other. The answer was that one tested for three spaces first, and if that failed tested for the int, while the other did the int test first.
Yes, this is something a senior developer knows. I bring it up now to highlight how hotshot-me didn't have that experience, learned that experience, and learned it from someone who was kind about sharing his knowledge.
[2] I was doing bioinformatics back then, and learned about dynamic programming as way to do sequence alignment. I didn't think others knew about the technique, and thought I was bringing esoteric new information to the discussion. Uncle Timmy had used dynamic programming techniques for speech-to-text software at Dragon Systems, and politely pointed out it was more widely known. He also implemented Python's 'difflib'.
He was always so willing to foster discussion that nearly every interaction resulted in an improved understanding of some topic and a shared eagerness to try or learn more out something tangential that came up via digression. I never knew how many types of voting systems there were nor how extensively they are researched! He also reached out about a comment [0] I made a few years ago which made me feel less discouraged and more welcome.
Tim's writing style was greatly appreciated by myself and many others. What he had to say was often lengthy, to address reader assumptions or some nuance, but was written with such a jovial tone that it was rarely dull or inaccessible.
RIP Tim
[0]: https://discuss.python.org/t/5778/24
I like reading his answers. He always seemed to have something interesting to say, and his answers are kind, light-hearted, approachable and insightful.
[0] https://stackoverflow.com/a/69859068
[1] https://stackoverflow.com/a/19391867
At the time I didn't realize it was the Tim Peters. Very helpful guy. RIP
RIP, Tim.
[1] https://stackoverflow.com/a/39378895/2912349
For me, Tim Peters was that guy. I first met Tim in person at the first PyCon at GWU where I rode an elevator with him and Barry Warsaw. Let me tell you, it was a wild ride. He was a genuinely really nice, smart, kind guy.
RIP my friend.
You never know when an email is going to be the Last Email. Don't put off reconnecting with old friends.
And after that three months suspension BS drama Tim just got back to work on Python. Saintly.
btw. made me stop having a favourite programming language.
They can keep the tools & remix new ones with LLMs. The rest of us can hang out in some tiny corner talking civilly.
As someone formally trained in many forms of dispute resolution, I'll also offer many of these have a significantly misguided view of effective dispute resolution. They often think some neutral and objective group of people evaluating a situation is an effective way to resolve code of conduct disputes, in part out of a desire to be fair and objective. But these are social disputes and not contract or other legal disputes. Applying mechanisms meant for one to the other does not make a ton of sense
This claim is increasingly difficult to reconcile with an awareness of who gets chosen to evaluate situations, what reasoning they present as "neutral/fair and objective", and how they go about their resolutions.
When we find ourselvees thinking that, then we are part of the status quo - the system is designed to suit us. It's very easy to think that status quo is the entire universe; just keep doing what you're doing. Instead, to avoid perpetuating the bad aspects of the system, it's essential to curiously and closely look for its boundaries, look outside it, notice the humans out there who are not being served, who may express unhappiness.
Take them at their word; they may seem absurd, but that's your human response to someone violating norms - the norms being the status quo. Their expression may include being disruptive or unpleasant. 'Disrupt' means 'violate the status quo'; it shows you the status quo's limitations.
Unless you are an insider to those discussions you’d not know what was said by whom
Implications that someone should interfere with a process publicly seems wrong as well
It looks like you (plural) bring it up only to push your political agenda against Woke or whatever.. while people are mourning and I find it frankly distasteful and an insult to his memory.
> While I've since adopted a tedious posting style to avoid triggering newer people, I haven't really changed. I'm not a grim person, and still find humor (sometimes dark) in almost everything. I just keep all sense of joy bottled up now. "Joy is not professional, supportive, welcoming, or inclusive - unless it's joy at the humiliation of perceived enemies of our new Mandatory Utopia" ;-) [..] > I would like an apology from the PSF, but don't expect one, and don't insist on one. What I demand is that they improve the broken _processes_ that led to this. My case wasn't the first one of trumped-up fantasy charges, and won't be the last
They are not woke in the first place. The "old white men" keep their corporate positions that they pretend belong to the underprivileged. David Mertz pointed that out and was swiftly disappeared by the Python Gestapo.
We are talking about a political system which seeks to introduce or apply rules that are obviously unfair on their face, justified by inconsistent theories that constantly make hypocrites of their proponents. It is bizarre and unreasonable to call opposition to this a "political agenda".
As one of the people directly involved in the situation, let me tell you: defending my friend's legacy is part of the mourning. His treatment was clearly unjust on its face and now the people who were responsible and/or supported it or advocated it are trying to blend in and pretend nothing happened, while showing no remorse whatsoever. While I'm sure the benedictions they offer now are sincere, I find it mind-boggling that it seemingly gives them no pause to consider what happened. Especially considering the timing (dying around the second anniversary of the original tension, and this being discovered around the time of his reinstatement).
Tim made an entire separate blog site to plead his case, largely motivated by my own posts[0][1]. His "mea culpa"[2] ceded only a tiny bit of ground, and even that was frankly unreasonable. (In the post[3] where he accepted blame, he was explicitly calling out an oppressive power structure, just apparently not the right one.) Not to mention that he was very clearly being "tone policed" by people acting on behalf of the very movement that popularized the term to try to shield themselves.
The insulting thing is to pretend that any reasonable person could ever have seen any merit in the claims against him after any honest inspection of the evidence (to the extent that evidence was presented: the nature of the claims made it clear what public events were being alluded to, while nothing private was ever asserted to exist).
[0]: https://zahlman.github.io/posts/an-open-letter-to-the-psf-co...
[1]: https://zahlman.github.io/posts/open-letter-psf-coc-wg-adden...
[2]: https://tim-one.github.io/psf/meaculpa
[3]: https://discuss.python.org/t/for-your-consideration-proposed...
This whole episode certainly reflects very badly on PSF SC. But it is not a very glorious event of Peters' life either, and it feels better to just not uselessly stir the pot in a way that makes Peters not look good.
(and again, to be clear, PSF SC looks even worse, but of course the point is to remember Peters for what he was, not to profit of his passing to score points against PSF SC)
So, the situation is more "grey" than Peters being the victim, and I don't think it is a good idea to highlight this in a time where we should focus on Peters. It feels like stirring the pot is just instrumentalizing the event to attack the PSF SC because of unresolved feelings.
Not that this event should be forgotten or forgiven, just that it is not true that it is a mistake it was not mentioned in article talking about Peters' passing. It feels like the idea is that some people don't mention it because they know the PSF SC made a mistake but they want to hide it. But it looks to me that they don't mention it because it makes Peters not look very good on that circumstance.
Not in any meaningful sense. The post you cite basically talks about Tim's historical posting style, and then suggests that newcomers to the community might not have been exposed to it, and therefore interpreted https://discuss.python.org/t/for-your-consideration-proposed... as somehow objectionable.
But here's the thing: I first interacted with the guy in 2014 (as far as I can tell) and wasn't part of the Python Usenet/mailing list culture. I didn't really have that exposure either. And yet it was still extremely obvious to me that the post was calling out injustice and not saying anything that any reasonable person could object to. The central argument is that it's unpleasant to be repeatedly subject to training that assumes you need training to behave yourself and not engage in criminal activity, while the wealthy and powerful get away with those crimes. And people who claim to be on the side of "social justice" take offense to that.
If there's some legitimate reason why a morally good person could object to that post, I never heard it floated the entire time, nor in any of the ensuing discussion anywhere on the Internet (and people have accused me before of being unreasonably interested in that discussion). I have only heard people expect me to take it for granted that this, and similar posts, somehow reflect unreasonable behaviour. And because I legitimately can't think of any charitable way to interpret the argument, I don't speculate.
Tim looks just fine "on that circumstance". It is his interlocutors who look completely unreasonable.
This is a very unfair way of treating the situation. What I had in mind was basically what you say after: Peters understands why the situation went this way (because newcomers were not used to his writing style) and acknowledge responsibility in not realising that earlier. His post is literally called "mea culpa". It is very very unfair to pretend that Peters does not recognise some part of responsibility in a post which contains so much language sending explicitly that message.
> But here's the thing: I first interacted ...
Well, what you say is not surprising and does not prove anything. In 99% of situations were people take offence or disagree, there are also people who are fine with it and don't understand why someone would take offence. And it would have been totally unrealistic to pretend that a style that people understood in a given period was misunderstood by 100% of the people just few years later. You were just part of the people who interpreted it as Peters intended. But I'm pretty sure that you interpreted things differently in other circumstances (after all, you were quite unfair in your interpretation of my comment).
> If there's some legitimate reason why a morally good person could object to that post, I never heard it floated the entire time
Well, in Peters post, he says "So too many now read one of my typically part-joking posts, and think I’m making fun of the topic being discussed, or belittling them. Wholly unintended, but understandable, and I first realized that yesterday. Now it makes some sense to me how someone could take offense at my message about sexual harassment."
I think that the situation is simple and that Peters understands it while you don't. The message was incorrectly interpreted. Peters says here that in this case, the reaction was understandable and make some sense. Peters ended up understanding the whole mess that was basically just miscommunication, and acknowledge that this misunderstanding was possible.
On the opposite, in your message, you are basically saying that you cannot understand that someone would misunderstand. That's your opinion, and, after all, why not. But other people have other opinion (including Peters, like it or not). I hope you don't take offence of that :)
> (and people have accused me before of being unreasonably interested in that discussion)
Hm, do you think that it is not highlighting that what "looks just fine" according to you may not be an universal truth?
> Tim looks just fine "on that circumstance". It is his interlocutors who look completely unreasonable.
As I've said, his interlocutors look very bad. You may think Peters looks "just fine", but that does not mean Peters looks just fine. You are just one person. And, I know, "everyone who disagree on this is a social justice warrior and is wrong", but you cannot force other persons who wrote articles on Peters' passing to be bad or misguided because they don't agree with you on this detail.
Well no, that isn't "basically what I said", at all. I think he conceded something that didn't make any sense to concede, because he has too much sympathy for a worldview that makes no sense on its face.
> His post is literally called "mea culpa". It is very very unfair to pretend that Peters does not recognise some part of responsibility in a post which contains so much language sending explicitly that message. … [quote of Tim's analysis]
There's no pretending involved. His post actually contains barely any language that could be characterized as "sending explicitly that message". Most of it is dedicated to describing a context that has nothing to do with blameworthiness. He makes one speculative attempt at steelmanning a position that I am beyond exhausted with. It's just that this time, none of the people supposedly holding that position appear to have tried to connect the dots themselves.
More to the point, I think the steelman is still unworkable. Tim does nothing to establish why it the misinterpretation should be reasonable except to say that people might not be used to his rhetorical style. But the post actually presented a very clear message that I think any reasonable person ought to be able to understand without needing to account for a rhetorical style that I barely even noticed. Further, that message is one that, in my understanding, broadly aligns with what the offended parties claim to believe. It's just that, after 15 or so years of dealing with people presenting similar worldviews, I can no longer take at face value that these claimed beliefs are sincere and in good faith.
Tim was accused of:
> Making light of sensitive topics like workplace sexual harassment, which could be interpreted as harassment or creating an unwelcoming environment.
"Workplace sexual harassment" is not at all the same thing as workplace sexual harassment training. There shouldn't be anything wrong with questioning the implementation of that training, and there is just objectively nothing wrong with pointing out the oddity of referring to "X training" which is about not doing X. But even if it were anything like that, it was clearly not directed at anyone, so "could be interpreted as harassment" is nonsensical.
> As I've said, his interlocutors look very bad. You may think Peters looks "just fine", but that does not mean Peters looks just fine.
No; this is objectively zero-sum because it is a direct conflict. Tim could only have possibly been wrong to the extent that people claiming him to be wrong were justified, and they were not even the tiniest bit justified.
As far as I can tell, the logical implication of seeing those words as "making light" of the training, is that one is offended by the notion that a man objects to being constantly subjected to it. To which I say: imagine if the same variety of "training" were directed at a group not deemed "privileged".
Regardless of who was wrong or right, is it the way you would like to be eulogy written about you? bonoboTP was such a nice person and helped so many person and here is a myriad of example to prove how. All that said, I will remind everyone he had a fight a few years ago with some people he worked with and there were not very nice to him. It is just but a pebble in a long fruitful life, but it is really important I mention it here to remind everyone CoC = bad
I know you're exaggerating but that's not what they were saying. You're jumping to conclusions. Ironically, it was the incorrect and bad faith interpretations that were also part of the whole saga but I think mostly how the steering council handled everything.
It feels surreal to learn about his death just the next day. RIP
"[Tim] took up Python on a lark in its very early days, becoming something like Python’s second real user after Guido.
Guido came to rely on Tim heavily. Tim will demur about this, but as far as I can tell, Tim and Guido were largely partners in the design evolution of very early Python, and before most important features made it in to Python, you could be sure that they had been examined from every angle, shaken, stirred, and thunk about very hard by both of them.
Tim often played the role of gatekeeper and polisher. You have Tim to thank at least partially if you were a refugee from Java or Microsoft languages, which made excuses for their sprawling verbosity, complexity, and poor readability. Python, at the time, made none of those and had none of that (it now does). Tim was crucial in ensuring it stayed that way during his most active years.
[...]
Tim was a Director of the Python Software Foundation from 2001 to 2014, bringing Python across an uncanny valley from a time where it was “interesting but ignorable” to “the planet’s default language” along with a cast of other incredible people. If you use Python, it’s not in small part due to Tim."
[0] https://lwn.net/Articles/1002340
"Question everything. Love everyone" (from his page)
RIP "Uncle Timmy".
The language was named after the British comedy troupe rather than the snake.
1: https://mail.python.org/pipermail/python-list/2000-March/048...
(I've taught the Zen of Python, doctests, timsort, and more during my career.)
https://en.wikipedia.org/wiki/Timsort
https://commons.wikimedia.org/wiki/Commons:Email_templates#E...
Never really ended up using Python outside one-off scripts and personal stuff but learning the magick of making silicon do work for you and principles for that really stuck with me as I went to high school and beyond.
RIP :'(
He'll be sorely missed by everyone who has read the Zen of Python (but not limited to it ofc).
Your corporate sinecure "custom Python distributions" are secure now!
Thinking that the Python software foundation decided to ban this person for frivolous reasons is both laughable and sad.
https://lunduke.locals.com/post/5985667/python-bans-prominen...
One could infer that the core of the issue is that Tim started to ask questions about why the board would grant itself additional powers (see bylaws), advocating for transparency and accountability. They were not happy about that and locked the discussion.
Then they started to look around for reasons to tint his reputation and ban him.
Look at this open discussion/question (https://discuss.python.org/t/how-can-we-better-support-neuro...) from Tim to know whether neurodivergent people were accepted by the Python community, and how they framed it as:
"Dismissing unacceptable behavior of others as a “neurodivergent” trait, which is problematic because it creates a stereotype that neurodivergent people are hard to interact with and need special treatment."
Which was one of the reasons of the ban.
They even considered the use of the wink emoji to be harmful, apparently.
https://chrismcdonough.substack.com/p/the-shameful-defenestr...
I'm not saying a reasonable person looking in from the outside couldn't think they were frivolous. I'm just saying the PSF leadership themselves didn't think they were.
I personally, looking in from the outside, wouldn't necessarily describe the reasons as "frivolous", but I think "unjustified" certainly fits the bill.
I agree.
It's not even much of an inference. The discussion went sideways because Steering Council members in the thread kept responding to Tim's questions about why the proposed bylaws change was being made (and pushed through very quickly with no real discussion) by saying "there are reasons, but they're secret and we can't talk about them, trust us", and getting very hot and bothered when that answer was not accepted (and not just by Tim, there were multiple people in the thread who were not satisfied with it and explained why at some length).
After quite a bit of back and forth, one SC member (I think Thomas Wouters but I'm not sure) admitted that there were specific PSF Fellows (giving no names) who the Board planned to use this new power to remove. And it's at this point that Tim's ban becomes even more of a footgun on the PSF's part, because when Tim saw this, he said that knowing it made him more likely to vote for the proposed bylaw change, since apparently the need for it was not just hypothetical. (Others in the thread took a much more negative view of the revelation than Tim did.) So the whole discussion that Tim prompted ended up with Tim supporting what the PSF were doing in this case--which should have been a cue for the PSF to say, hey, good, I'm glad we've addressed your concern and you're ok with this now. But instead--they banned him.
Condolences.
The first thing I was taught by my first boss was import this.
Lived most of my life since by those principles where practically applicable.
It's sad to hear, but reflecting on the impact Tim made brings some comfort. Most of us will never know how many people our work helped. Tim could at least see some of that, though even Python's reach can only tell part of the story.
Reading the tributes (https://discuss.python.org/t/in-memoriam-tim-peters-1952-202...), what strikes me is how often people mention his patience and humour alongside his technical brilliance. There's something to aspire to there: doing good work, and taking the time to help others do theirs.
The older I get, the more I appreciate what it takes to leave both kinds of legacy.
Quiet lines of code Still guide the hands of strangers His kindness lives on
Rest well, Tim.
There are a handful of names in the tech industry who will hit me particularly hard and among those one who will really make me pause.
They will leave behind work that continues to impact the world but given the choice I'd still have them in it.
In my case none of the work I leave behind is going to mean a real lot outside of the people who paid me for that and I'm old enough that the majority of what I've written over the years is now no longer having any impact (refactored or replaced after years) though I'm aware of one that is still actively supported now that is 17 years old.
Almost everything all of us do in terms of actual work output is transient but we do leave memories, I have a mental list of programmers I've worked with over the years who left a last impact and while none of them afaik had the impact of Tim Peters broadly they did narrowly for me at least.
Some are gently deallocated. Others are garbage-collected.
I focus on how I learned to be a better software developer from him, in both writing better code and supporting others.
I was actually careful about wording because while my impression is the same as yours I thought it would anger people if I said so. I was expecting to be down voted by people defending his suspension.
''' Our current board has a majority of people from the Global South or otherwise marginalized groups. That is encouraging and an extremely positive thing. As long as people who are demographically similar to me do not again have a majority, I have the utmost faith in the Board.
As far as I’ve seen, the entire support of this amendment comes from people who look and speak a whole lot like me. People like me should not be trusted. '''
I think that such people have embarrassed themselves sufficiently over the past few years, and that Tim would not have wanted us to use his obituary to embarrass them further. I say this as a person whose family comes from the Northern hemisphere portion of the Global South.
[0]: https://discuss.python.org/t/for-your-consideration-proposed...
[1]: https://discuss.python.org/t/why-i-am-withdrawing-fellowship...
What I do not understand is why people are interpreting what I say as supporting those people. I was very careful to just state facts to avoid taking a stance without full knowledge. Is that somehow not acceptable?
> I say this as a person whose family comes from the Northern hemisphere portion of the Global South.
As am I, at least in where I was born and my nationality at birth. I regard "Global South" as horrible, patronising term - although not as bad as "Global Majority" which is worse, if not downright racist IMO.
In particular, the references by Brett Cannon and Emily Morehouse to the fact that they are not sharing the evidence that led to them deciding to suspend a foundational Python developer (and one in no small part responsible for the fun, inclusive nature of the early Python community) means the process is broken and they set themselves up for failure from the start.
> "Instead, Python is now a grey, humorless, corporate place. The Steering Council and CoC Working Groups assume they can simply get away with asserting their correctness, crushing any dissent gracelessly, and relying on Python now being too big to fail. They’re probably right. That is a shame. Being now too big to fail is in no small part due to Tim being exactly whom he is within the threads that they derive their accusations from, and he deserves better."
Somehow I missed all the (disgusting) drama back then, but Tim had an entire page dedicated to PSF's woke insanity [1]. Rest in peace.
[0] https://chrismcdonough.substack.com/p/the-shameful-defenestr...
[1] https://tim-one.github.io/psf/