I got made a moderator recently, and noticed that I have the amazing ability to ban my own comments. For added efficiency/hilarity I can even do it from my own user page, now complete with nifty "ban" links! I thought it would be neat to publicize this bug before it gets fixed, because it makes for a wonderful example of specification failure - the kind of error that can doom any attempt to create AGI/FAI. How do you protect against such mistakes in general, if you're not allowed to test your software? Discuss.

Tangentially related: a blogger asks visitors to write a correct binary search routine without testing it even once, then test it and report the results. Much wailing ensues. (I succeeded - look for "Vladimir Slepnev" - but it was a surreal experience.)

New Comment
18 comments, sorted by Click to highlight new comments since: Today at 11:24 PM

Why is it a bug? There is little value in the ability to ban your own comments, but even less potential for harm. Adding an IF exception to the Reddit code would have been extra work and introduced the potential for more serious bugs (what if people could change their name?), all for no value that I can see.

I'd say banning own posts/comments would be preferable to deleting them on any count (for normal users, if they were given this power for own contributions): posts become inaccessible, so that further discussion is stopped, and any item can be easily un-banned, while deleted posts/comments can't be undeleted.

As a moderator, you can't ban users, only individual contributions, so if you ban some of your own comments, your don't ban your whole account.

I got made a moderator recently

Okay, I must have missed something here, but this is the second reference I've seen to this in the last week, without there having been any explicit general announcement that I can recall.

Since when are there "moderators" (as opposed to "editors") on Less Wrong?

As I understood things In The Beginning, moderation on LW was accomplished by voting, with two users (Robin Hanson and Eliezer Yudkowsky) having certain godlike powers such as promoting posts, deleting spam, and banning users. These users were called "editors". Later I learned that there were a couple more editors I hadn't heard about, but this didn't seem like a big deal because they seemed to be technical people who worked on the functioning of the site (maybe working for Tricycle or something).

However, I don't remember any post (or even comment) from an editor saying "Attention everybody! Less Wrong now has designated moderators. I'm pleased to announce that cousin_it, Yvain, and...[?]....will be serving in this capacity. Please congratulate these fine folks on their newly-acquired powers over you."

And nor am I aware of any list of moderators, or any indication on the status of such people on their user pages.

I'm not saying having moderators is a bad idea, by any means. But would a little more transparency really be so costly? Surely a heads-up is warranted whenever basic changes are made to the way the site works. Otherwise it seems sneaky.

Whenever someone is made a moderator, there should be an "investiture ceremony" in the form of (at the very least) a top-level post in the discussion section.

You're right. I'll tell what I know. A proper general announcement would be better, of course, but it's not within my power to speak for the government of LW. I just PM'd Eliezer asking for such an announcement to be made.

Some days ago I got a surprise PM from user matt saying I'd been made a moderator. As far as I know, everyone on the "top contributors" list except Roko got such messages. My only superpower is deleting ("banning") posts and comments, and it's meant to be used only for removing spam. I cannot promote posts to the frontpage or ban people. I have not exercised my power yet because there was no need. Lists of moderators are at the following URLs: mods for LW proper, mods for discussion section. I don't know if non-mods can see these lists, so I'll retype them here.

LW: Eliezer_Yudkowsky, RobinHanson, AnnaSalamon, Yvain, Alicorn, Kaj_Sotala, PhilGoetz, Wei_Dai, cousin_it, Vladimir_Nesov, Kevin

Discussion section: wmoore, AnnaSalamon, Eliezer_Yudkowsky, Yvain, Alicorn, Kaj_Sotala, PhilGoetz, Wei_Dai, cousin_it, Vladimir_Nesov, Kevin

It goes without saying that if there's ever any significant controversy about my "banning" anything (though I find that hard to imagine), I'll give up my mod status.

Thanks; upvoted.

It probably was an emergency response to the recent Plague Of Spam in the discussion section, which would explain the lack of communication.

I am amazed by how strongly the labels on software warp people's language. I would only use "ban" for users, not posts. It does not surprise me so much when natively English-speaking moderators report their actions in terms of the buttons they just pressed, though those buttons are not visible to the hoi polloi, but it does surprise me when they are unable to comprehend the confusion produced. A similar story was a boing-boing author's indignant insistence that they had "unpublished" rather than "deleted" a post.

A similar story was a boing-boing author's indignant insistence that they had "unpublished" rather than "deleted" a post.

In fairness, there's a pretty important difference between "make invisible" and "destroy." I don't know if that's the distinction in question, though.

If this is about the Violet Blue debacle then the distinction was more or less a distinction without a difference.

Tangentially related: a blogger asks visitors to write a correct binary search routine without testing it even once, then test it and report the results.

Haha, it really is more tricky than it sounds. I succeeded (it passed a bunch of tests including various corner cases on first compilation), but I'm not sure if it would be correct if I hadn't been more cautious than usual.

I'm not surprised, though. The human capacity for formal logical inference is extremely unreliable and short-sighted, even for very intelligent people.

I succeeded - look for "Vladimir Slepnev" - but it was a surreal experience.

Did you consider that comparing floating point numbers with '==' doesn't make much sense? (I assume it implements exact value comparison in this language you used, like in C.)

Yeah, I did the same thing with tests. Wrote about ten of them and rigged the suite to scream "YOU FAIL" at me without even printing the line number. Couldn't believe it when they all passed on the first try :-)

Did you consider that comparing floating point numbers with '==' doesn't make much sense?

No. What do you propose? Use some sort of "comparison tolerance"?

In this context, I think the answer is don't write it for floats!

cousin_it:

No. What do you propose? Use some sort of "comparison tolerance"?

That depends on the concrete numerical application. Typically you'd define some threshold for the difference, and use "abs(x-y)<threshold" instead of "x==y", or some variation on that theme. But exact bit-by-bit equality comparisons of floats practically never make sense, since even very simple arithmetic will likely produce rounding errors, so seeing '==' between floats almost always means that something nonsensical is going on. (See e.g. here for some elaboration.)

These issues with limited floating point precision make numerical programming extremely tricky. You have a whole alternative set of rules for arithmetic, very different from those you normally follow on paper.

I think I'd have a different implementation for floats that would return the nearest two it's between, and punt the tolerance decision up a level to the calling code.

I wrote the search function without problems; I'm surprised that so many failed in the comments. After all, unlike the people from Bell Labs / IBM, they had the extra info that 90% of programmers fail at this; so they should have been extra careful about edge cases. Or do people really think "I'm so sure I'm smarter than 90% of IBM programmers that I won't double-check my code"? It's not as if a bit a thinking can't bring up the expected edge cases (empty array, element not in the array, element at an extremity).

(That being said, maybe my solution has a bug I haven't seen yet ^-^ The only 'problem' I had is that my function will say that 2.0 is in an array containing [1, 2, 3], but the spec doesn't say how we should handle different types (would unicode and non-unicode versions of the same string count as the same?))

In the blog's comments, and especially on Reddit and Hacker News, I was amazed at the amount of rationalization by people arguing that this wasn't a good test - that since it wasn't representative of "real-world programmer work" (because a programmer would be able to test, or would use a library function), it wasn't a good metric of programmer skill. Now, it may not be a perfect metric, but I'm sure I'm not the only guy who, all else being equal, would rather work in a team with other programmers who pass that test.

(There also seemed to be a few people on Reddit saying "Oh, I passed the test, except for this little bug that doesn't really count")

I was amazed at the amount of rationalization by people arguing that this wasn't a good test

Yeah, but you yourself fell prey to the same trap in reverse: claiming the test is important after passing it successfully :-)

Reading that blog made me want sushi. Thanks a lot. (The followups were interesting, though.)

I have some ideas, but you need to be more precise.

Do you get to test subcomponents, or does the ban on testing apply to any testing at all?

Does thinking through what your software is going to do count as testing?