# Ignorance And Intolerance In Online Computing Communities

By Xah Lee. Date:

Today, a Christophe Rhodes (aka Xof) kicked banned me in IRC's lisp channel. (irc://chat.freenode.net/lisp) Here's the few relevant excerpt. (full, unedited excerpt will be published if there is public interest)

```[5:31am] [xahlee] k, here is a simple problem but rather tedious to do
it correctly.
…
[5:32am] [xahlee] given a unit vector A={a1,a2}, write a function
AngleA, such that it returns the positive angle from {1,0} to A.
[5:33am] [xahlee] mathematically this is simple, but to implement it
is rather cumbersome, with many if statements.
[5:34am] [xahlee] also, anyone who has implemented this will know trig
well.
[5:34am] [xahlee] i wonder if there's already in some library in lisp.
(i doubt it)
[5:36am] [pjb] xahlee: (acos (scalar-product A #(1 0)))

…

[6:34am] [xahlee] can anyone show me the source code of a function
that convert a complex number (a1 b2) to it's polar representation?
[6:35am] [Xof] (defun polarize (complex) (values (abs complex) (phase
complex)))
[6:35am] [Xof] wait, why am I replying to the troll?
[6:36am] [fax] :/
[6:36am] [Jasko] even the mighty Xof is not immune!
[6:36am] [tritchey] Xach: you were right, he HAS turned into mary
poppins.
[6:36am] [xahlee] well... what is the source code for your “phase”?
[6:36am] [Xach] xahlee: it is, as kmp once said, given from god
[6:36am] [Xof] clhs phase
[6:36am] [specbot] http://www.lispworks.com/reference/HyperSpec/Body/f_phase.htm
[6:36am] [fax] xahlee: you know enough maths to write an
impllementation
[6:36am] [froydnj] piso: ah...hmmm
[6:37am] [fax] xahlee: if its a CLHS function, then how its actually
written will be implementation specific
[6:37am] [fax] er CL not CLHS
[6:37am] [xahlee] as i described, i'm interested in the algorithm of
the implementation, not what it means.
[6:37am] [xahlee] «can anyone show me the source code of a function
that convert a complex number (a1 b2) to it's polar representation?»
[6:37am] [Xof] all of that is true, but there's quite a good
suggestion for how to implement it on the page I got from specbot
[6:37am] [fax] xahlee: afaik there is no way to calculate it without
conditionals
[6:38am] [Xof] xahlee: and that's what you got
[6:38am] [fax] you can do 4 dot products, or atan.. however you do it
you have to handle cases
[6:38am] [xahlee] fax: thanks fax! only you come thru understand the
question and not being a troll.
[6:38am] [Xof] (atan y x)
[6:38am] [xahlee] the others so far, for example, xof and pjb in particular,
just wanted to troll.
[6:38am] [Xof] look, ma, no conditionals
[6:38am] [fax] xahlee: more than just me gave you some info..
[6:39am] Xof was promoted to operator by ChanServ.
[6:39am] Xof set a ban on *!
[6:39am] You were kicked from the chat room by Xof. (now go away,
```

## Christophe Rhodes and Xah Lee

Christophe Rhodes has unjustly kicked banned me about 3 times in the past year in #lisp. He made it impossible for me to use the service provided by freenode.net. Today's incident, is actually the most lenient. In the past 3 times, he simply kick banned me within few minutes i joined the #lisp channel.

Christophe Rhodes is one example of a power-struggling tech geeker in the computing industry. Incidents like this, happens frequently in just about all computer forums where almost all members are exclusively male.

I want to bring this to the public attention (in this case, in the lisp community). Because, it is faakers like these, that do society harm, and they all take the air of saints and justice holders.

## Efficient Algorithm for Finding the Positive Angle of a Vector

Some notes about the math problem discussed in the topic:

As i have indicated in my post, it is non-trivial to implement a function that returns the positive angle of a vector. For example, it can be done with sign checking of the coordinate components (in total 4 cases, which can be done as 2 levels of nested if, or simply 4 if.), and or the evaluation one or more inverse trig functions, or use clever ways with dot product. It is not trivial to know which algorithm is in general more efficient. (this is important, since finding the angle of a vector is a basic function, that may be called millions times indirectly, for example, in programing math visualization of surfaces) Further, consider the inverse trig function, it is likely 99.99% of people with a PH D in math wouldn't know how these are actually implemented. So, the question of whether calling one of the inverse trig function is more robust or efficient than another is a open question. And, besides the algorithmic level, the question also entails how the language actually implement the inverse trig functions.

Besides efficiency concerns, there's also robustness concerns. For example, if the 2 vectors are {1,0} and {0,1}, a simplistic implementation will result in division by 0 or similar errors. Checking whether one of them lies on the x or y axis means more “if” statements, as well the non-trivial problem of determining if two numbers are equal. (For example, is 0.00000001 considered equal to 0.00000002?)

My interest in bringing this up for discussion, is because i'm writing a program in Linden Scripting Language to generate a architecture of a given polyhedral symmetry in Second Life, and i need to write a function that returns the principle directed angle of 2 given vectors from A to B. I have implemented solution to this problem a few times in Mathematica since about 1993. Being a efficiency and perfection nerd with some leisure at the moment, i thought i'd like to know more details about his problem. A optimal implementation with respect to the algorithm level, or see how languages implement the function that convert complex numbers to polar form, or some general understanding and learning with regards to this problem.

In a person's computing career, concrete and specialized questions like these abound, and the answers or knowledge about them are scarce. Due to the general ignorance of technical knowledge, and the power-struggling nature of males, and the habit of intolerance and “troll-crying” in computing communities, made it difficult to have any sensible discussion of original questions that don't fit into some elementary level of FAQs and concepts.

## Male, Tech Geekers, Online Behavior

Asides from complaining about the person who unjustly kicked banned me many times in the past year (which has happened to me in other irc channels (in particular, #perl, #python, #emacs,…), mailing lists, forums, as well happens all the time to many many others (every day in just about every irc channel).), i hope that in general, tech geekers be more tolerant and knowledgeable. In particular, acquire understanding and communication from persons in society who are not in the computing community.

For example, in newsgroups everyone are all concerned and involved about the phenomenon of troll all day. To understand this more seriously, study psychology, sociology, anthropology, ethnology, history. I do not mean getting juiced up by a slashdot news article from some tech geeking bigwig's blog on his rants on some social issues. But do, take a class in community colleges, or if suitable, spare a reading of your favorite science fiction for a textbook on these subjects. The so-called “troll” (whatever it means), is a social, behavioral phenomenon. So, understanding social sciences is the proper conduit. Not, for example, by tech geeking with other tech geekers, or burst into troll-crying hostilities or killfile announcement show.

If you are, for example, interested in the comparative superiority of programing languages that almost every tech geekers seem to know so much about, then, try to take a course on the great many specific branches of philosophy, the great branches and depths of (non-computer- language) lingusitics, or the great depth and branches and specialties and even philosophies of mathematical logic, or its history. Various branches or training in philosophy will help you in critical thinking, as well as aid you in seeing perspectives, philosophies, or how to approach a problem with a good definition. Similarly, linguistics will help you, in general, understand the concept or theories of semantics or meaning and syntax and grammar, in a way that can give you a independent and original thinking on the questions of judging computing languages. Similarly, mathematical logic teaches you a mathematical precision of mind and a technical machinery in evaluating or assessing the problem. Spare a tech-geeking of your favorite languages or latest software engineering fashions or online forum argumentation or Open Sourcing zeitgeist fuck, to read a textbook or learn on the above topics.