Skip to content

Instantly share code, notes, and snippets.

@jzakiya
Last active July 19, 2018 21:12
Show Gist options
  • Save jzakiya/6aeebd22b18c01aab56a61b55ef2a649 to your computer and use it in GitHub Desktop.
Save jzakiya/6aeebd22b18c01aab56a61b55ef2a649 to your computer and use it in GitHub Desktop.
Banned in the Nim Forum on the 4th of July

Banned in the Nim Forum on the 4th of July

As a longtime Ruby user I've become accustomed to how nice and friendly the Ruby community is. There's a saying among Rubyist - MINSWAN - Matz is nice so we are nice. This is not just a reference to Ruby's creator Yukihiro Matsumoto, but also to what Rubyist feel they should be because of Matz. And through the years I've been able to submit a few ideas for improving Ruby that he's accepted, a recent example here, Using Ruby 2.5’s new Integer#sqrt method.

Looking to keep my programming skills current, I keep an eye out for other languages to learn that I may find interesting, useful, or just fun. With that in mind, around 2015/6 I heard about Nim, then I saw this video, and after reading this article I started trying to learn it to do some really serious stuff. It looked like it could be a nicer alternative to C/C++ to write machine level code in.

So I join Nim's forum, reading the threads and posts, looking at its docs, and trying to get a feel of its community and the direction of the project. One thing that became an immediate frustration was a lack of good (or any) documentation, so many of my initial posts (as other newbies) were questions about how to do basic things. Also, coming from a dynamic language like Ruby to a compiler based language required a shift in thinking.

According to its wikipedia page, Nim was created by Andreas Rumpf (whose forum handle is araq) and first appeared in the public in 2008. Here's a video presentation he gave in 2015. As I write this, it's at version 0.18.0 (for my Linux OS) pushing to get to 1.0.

Let me say now, Nim has some great technical potential. I can now write Nim coded applications that are much faster than some C++ versions. But it has remained a small niche language, not well known to the broad programmer public, not because of a lack of technical merit, but more so because of the attitude of its developers. They need to understand and appreciate, if you aren't nice to users, and respect them, and try to make them happy, your project won't grow.

Just as Ruby has a nice community because of Matz, Nim has nowhere near the friendly community that creates user loyalty and love, because Nim's devs, led by araq, seem to (so unnecessarily) go out of their way to be condescending, rude, and in my case, petty and vindictive. Why did this happen? Read on.

Here's the story

On July 4th, 2018 (Independence Day in the USA) I woke up and checked the Nim forum to find that I had been banned from it by araq for the 'offense' of being impertinent to him.

banned

Because of this, it seems every post I have made, in any forum thread, has been made invisible (at least to people who don't login to the forum. I can log in and see my posts, but don't know if others who login can see them too. It would be nice if someone would verify this).

As it happened, at the end of June I asked how to do something in Nim I could do in Ruby|Crystal. It was as really simple question, I thought. Here's the Nim forum link to the thread explain this behavior to me and to the pdf of link that contains its full content.

There's really two parts to it. The first part deals with the discussion around how to get the phrase to compile (ultimately by me figuring out how to rewrite it so it would compile). Then I came back to the thread a week later trying to convince the devs to add some syntactic sugar to the parser|compiler so it could do this automatically, to make programmers' lives easier.

You can see from the full thread, though I couldn't convince most responders to see it my way, they didn't get personal, except for araq. For whatever reasons, he's had a history of trolling my posts, and he starts out here being antagonistic, and also mischaracterizes what I say, shown below.

That's just your opinion... and Yes, let's document the features that Nim does not have. Brilliant idea. and And Swift deprecated ++ because it's bad. ;-).

After trying to ignore these comments, I finally felt I had to respond to him and correct his mischaracterizations of my posts. Here's the full response of my last post.


Well you said it yourself, there is no unambiguous intent here, at least 2 different interpretations are possible.

No. the two English translations of if num.inc == 10 are equivalent phrasings and unambiguous to an English speaker. And you didn't present your English translations of any of the examples. So if you think they are ambiguous I am interested in seeing what you (anyone) thinks those programming snippets are saying.

So, the examples in 1) are clear and unambiguous as to programmatic intent.

Also Ruby, Crystal (with Nim) allow this programming style, but make it easy for programmers to do it.

Ruby: if (r += 1) == rescnt; .... end also (.....) if (r += 1) == rescnt

Crystal: if (r += 1) == rescnt; .... end also (.....) if (r += 1) == rescnt

Nim: if (r.inc; r) == rescnt: (....) also if (r += 1; r) == rescnt: (....)

So, in all three of these languages (as a non exhaustive sample) this programming paradigm is allowed and possible. However, while Nim could also provide the syntactic sugar that Ruby, Crystal, et al provides, you insist to force the programmer to become a manual parser to conform to your whims, than to provide the simple means to deal with these cases, and make programmers lives easier.

Well, if you're going to force programmers to be compilers you can at least clearly document this for their benefit.


After making this post I was finished with the thread. Five other responses followed, with araq posting twice, with his last post in the thread being this.


you insist to force the programmer to become a manual parser to conform to your whims, than to provide the simple means to deal with these cases, and make programmers lives easier.

I checked your previous posts a bit. This was your last impertinence.


And with this response by araq, I was arbitrarily and unceremoniously banned on the 4th of July from the Nim forum.

What I think this was all about

Let's breakdown that last sentence by araq. He starts with I checked your previous posts a bit.

Here was a person who obviously had a long simmering antagonism toward me, seething with invective, searching to justify punishing me. Of course, he only needs a bit of a reason to do so (as Nim's creator, and a forum admin) so no due process is necessary. But then he states The real reason for the action, my impertinence. Here's its definition that most likely captures what he meant.

...a presumptuous rudeness toward persons entitled to respect.

So in his mind, he sees himself entitled to respect, and I, of all people, did not have the status (and permission) to address him in such a manner. And I say of all people because araq has a history of showing belligerence and antagonism toward me, as demonstrated in these forum threads.

But as a Black person being addressed by a white male in this manner, I know what he was really saying and doing in taking this absurdly vindictive and extreme action. You see, by calling me impertinent he was really saying I was being uppity, and acting outside of (in his mind) my social status. Why else would my noncontentious statements provoke such a response? No one else in the thread showed any hint of animosity or taking personal offense.

Araq's Antagonistic History

Unfortunately, araq has demonstrated bad behavior toward a lot of people in the forum, and has mostly been allowed to get away with it without being put in check by others. In fact, he has created permission for others to follow his example in how to respond to, and treat, forum members.

Here's just one example, in a thread started a month before I was banned (June 1, 2018), where two other people spoke out about how they felt badly treated, and unwelcomed, by araq specifically, and other devs. Note how others in the thread make excuses for araq's behavior.

So araq likes to respond with micro aggressive comments and statements to others but apparently can't take the blowback from his provocations. This obviously doesn't create an atmosphere and environment where people feel safe to come to, and thus is detrimental to the growth of Nim as a project, and the use of Nim by programmers as a language.

Going Forward

Nim recently issued a notice for its 2018 survey. But from the 2017 survey results, under What improvements are needed before v1.0 can be released?, the top item was Documentation. Creating more, better, and useful documentation (of all forms) would absolutely attract more users and PRs (pull requests). I think a bulk of araq's attitude toward me has come in my criticism of, and suggestions to improve, documentation.

Nim would also attract more none programming help and benefits (doc producers, translators, videos, tutorials, testimonials, user groups, financial support, etc), if the devs realized these non-programming elements are essential for growing it. Just because you build it doesn't mean people will come, or stay, especially if not treated right and made to feel unwelcome.

It should be without saying that the Nim admins need to unban me, and then institute (and enforce) a clear Code of Conduct for the forum, which applies to themselves as well.

The future will show whether Nim devs learn how to create a friendly and welcoming community, else Nim will litter the floor of programming language history as just another unfulfilled promising idea which never achieved critical mass and use.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment