RMS gets it wrong (C# and .NET suck no matter whose you use)

Saturday, June 27th, 2009

RMS says don’t depend on Mono, because, in summary, there is also GNU’s Portable.NET.

I’m sorry, what? Has RMS ever actually used C#?

About two months back, when Boycott Novell started causing trouble, I started learning C# using Mono and MonoDevelop as my tools.

I wanted to use C# so I could effortlessly have my apps run on Windows with no actual work. Mono was kinda fast (compared to Perl, or Python without going hogwild with Pyrex/Cython and such), and was easy to setup and use. I also liked the way the syntax was designed.

A lot of people try to separate the standard libraries in .NET (Microsoft calls them the BCL, Base Class Library) from C# since you use them from every .NETy language, but they are very much part of C#. Without them, all you have is a language you can’t do much with out of the box.

The BCL is, largely, a complete fuckup. Compared to Win32’s C++ APIs that are some of the most hated interfaces ever created, BCL is basically the same thing. A lot of API design in the BCL is designed to imitate or wrap Win32 APIs as to make it easier to port Win32 apps to C#.

However, it also makes it much harder to use C#. The API design is just so infuriating and nonsensical. The BCL is the worst standard library I’ve ever seen for a high level language, and I hate it. It doesn’t matter if you use Microsoft’s .NET, Mono, Portable.NET, or whoever else, they all implement the same BCL specification.

Now, this doesn’t mean just because I think RMS is wrong for saying C# is still a viable language that this reverses my position on BoycottNovell and makes them right: they’re still wrong because they claim Microsoft is maliciously spreading terror into the FOSS community.

Hanlon’s Razor states “Never ascribe to malice that which is adequately explained by incompetence,” and Microsoft’s insanity in API design clearly fits this. They didn’t pay Novell to develop on Mono because they wanted to kill Linux… they simply paid them to do it, and the fact that the BCL is designed by clueless morons is independent of this.

However, I did say I liked C#’s syntax. C# is very much modeled after modern Java. The last time I used Java was back in the late 90s, and I hated it because it was slow, it lacked a lot of things that the language has now (such as generics and autoboxing).

After my month of C#, I decided to give Java 6 a try. I easily picked it up because it has the same syntax… but Java has one thing C# doesn’t: a standard library (called the JCL) that actually makes sense and is planned out and has APIs that work well.

RMS should back Java instead of C# because Sun has finally released their chief Java implementation under the GPL license (under the name of OpenJDK).

I actually enjoy using Java after experiencing the horror that is C#, and I encourage people to try Java. Specifically, OpenJDK 6 is much faster than either Mono or Microsoft .NET, it is much faster to develop software (since you don’t have to fight with the JCL, like you do with the BCL), and I think Eclipse (the most popular IDE for Java) is superior to MonoDevelop.

Boycott Novell attacks itself to get attention

Wednesday, May 20th, 2009

Recently, Boycott Novell got attacked, and from that article, I quote:

One last clarification for lunatics who are now suggesting that we DDOSed ourselves [...] the attacks came from many addresses, for example 88.198.60.8 which is “tor-proxy.va6.de”.

Am I the only one out there who thinks this is an admission that Boycott Novell did it to themselves to get attention? Several blogs out there have already started talking about it (including one from some Computerworld paid blogger), so it seems to have worked.

As far as I can tell, Roy Schestowitz (the author and owner of Boycott Novell) is trying to get better free hosting (Roy didn’t pay his last host, nor his current one to host him) and/or free advertising and/or he’s a shill for some company who doesn’t profit from either Microsoft or Free Software (although virtually every company out there either uses or profits from Free Software, Microsoft included).

In addition, claiming this attack was done over Tor seems like its an attack against the Electronic Frontier Foundation since Tor is a product of theirs.

Reading Roy’s works, he claims, basically, everyone out there who develops using C# (or other .NET languages and products), even if they use Mono and develop purely on Linux for Linux, is some sort of shill for Microsoft. He also claims Novell (the company who bought the company who started Mono, Ximian, and bankrolls many Mono developers) is a shill for Microsoft, even though Microsoft paying Novell to develop Mono is very counterproductive if their goal was to destroy Linux.

I believe C# and .NET is Microsoft’s way to finally admit that they were wrong about how software development works, and that scaring away people who want to develop for your OS is the wrong way of doing things.

I myself am learning C# now and using Mono and MonoDevelop as my tools just so I can write software that will run flawlessly everywhere, no matter if the end user uses Windows, MacOSX, Linux, or even Linuxes on other CPU architectures…. and I don’t have to do a thing on my side to support them.

Ron Paul interviewed over HR 1207 Audit the Fed Bill

Saturday, May 9th, 2009

Battlestar Galactica is now over

Saturday, March 21st, 2009

The ending was possibly the best ending of anything I’ve seen in awhile. I don’t want to spoil it for anyone, so I won’t cover any specific points.

I have hope for the human race where I don’t think I’ve had some for a long while.

Also, Ronald Moore, if you’re out there, thank you. And please, make sure I can buy the entire series in one boxed set on Bluray as soon as possible. I will pre-order it soon as Amazon lets me.

Dealing with SSH’s key spam problem

Sunday, March 15th, 2009

Recently I created a new virtual machine locally, and I tried to ssh into it.

[diablo@infinity ~]$ ssh tachikoma
Received disconnect from tachikoma: 2: Too many authentication
failures for diablo
[diablo@infinity ~]$

I didn’t put a key on tachikoma yet, and ssh didn’t ask me my password. It didn’t make any sense.

So, I ran the same command with -vvv and realized… its sending all my identity keys to tachikoma, and the sshd on that machine is kicking the connection due to all of them failing.

What bizarre behavior.

So I dug around in the man page for ~/.ssh/config, ssh_config and noticed I can just add…

host *
IdentitiesOnly yes

… to force ssh to only use specifically named identities which (what I’ve been doing for years, anyways) are written like this…

host some.remote.host.com
IdentityFile ~/.ssh/id_rsa_some.remote.host.com

… or something similar. With the IdentitiesOnly directive in there, it only sends specifically the identity keys I specify with IdentityFile instead of spamming all the keys I have.

I’m not sure if this is a Debian-only problem (both infinity and tachikoma are Debian machines), but even though its a security feature, its kind of annoying.