Technology brotherhoods

I often hear people talking about which technology is better between C / C++ / C# .Net / java. Most of the time, it’s more a political/brotherhood/community thing (like football, even thought frenchies like me aren’t so proud of their team now) than a technical talk. I find it absurd. Computer science is about efficiency and making more money. You can take into account the pleasure you have to work on a technology (as you will be more likely to be more efficient with it), but it should still remain about efficiency. ...

July 6, 2010 · Florent Clairambault

Stupid C++ vs C# performance comparison

I found out that there is real test than the little one I did here. The core of the post is this spreadsheet : I recently did a basic comparison test between C++ (g++) and C# .Net (mono). My point is to show that the .Net framework has performances close to the C++ ones. It allows automatic hardware-specific optimization. The only real drawback you have in the .Net framework is the garbage collector. It prevents the C# .Net it from being a realtime language/framework. But does it really matter for you ? ...

February 26, 2010 · Florent Clairambault

Mono Tools for Visual Studio

I talked about this earlier. The mono tools for Visual Studio is a commercial product that easily enables you to test and port your Windows applications to mono. As I told before this is really a great idea. Because I think Visual Studio is the best IDE and Linux is the best server OS (in my opinion, it’s more efficient and more robust than Windows Server). So, I think it’s the perfect gateway between this two very different (but very close since Mono appeared) environments to achieve greatness. ...

December 29, 2009 · Florent Clairambault

Server moved

I’ve switched from my two three years old dedicated servers to one brand new virtual server. Reasons are : These servers costed me too much and they were becoming old (risk of failure increases). It wasn’t worth it. I spent last night doing that because I didn’t want to interrupt anybody using these servers. My two servers were running some Debian and I’m now switching to a CentOS virtual server. I was a little bit worried at first that CentOS would have a crappy package management system, but its yum is in fact working the same way as Debian’s apt-get and OpenSuse’s zypper. The oool thing is that these three package management systems roughly work the same way : <apt-get/yum/zypper> install , you don’t have to learn a new “ultimate” way to upgrade your software (like on FreeBSD). By the way, the faster package management system is yum, and the slowest one is zypper. ...

August 30, 2009 · Florent Clairambault

Mono Tools for Visual Studio : I have tested it !

Yes, I have tested MonoVS with the version 0.2.2641 (on both client and server). I installed OpenSuse 11.1 and added the MonoVS software repository, and everything worked ! I would have prefer to get it from SVN in order to use it in my Debian hosts but the mono development team seems to have removed it from their SVN repository. So, the Mono Remote Debugger for Visual Studio works, but there still some bugs. Deployment is super fast and it copies all the required DLL. ...

July 30, 2009 · Florent Clairambault

Mono Tools for Visual Studio

Just a little post for all these people who seem to think Mono is just an other short-term open-source software. I’ve used it for quite some time with a production “real time” network server, which is running for something like 6 months now, and it performs very well. I do everything on my Windows host and then copy and launch the final app on the Linux host. But there are still two problems : ...

July 27, 2009 · Florent Clairambault

NetEventServer

I talked some time ago about a library I made to take advantage of the kernel network events. I now release it and explain how to use it. It can help people to do some little network software without knowing where to start from. I built it for network servers made to communicate with remotely connected embedded chips. I wanted to be able to always stay in touch with a huge number of chips without any real cost. So, my very personal goal was to built a server network layer for massive M2M applications. ...

June 17, 2009 · Florent Clairambault

Lighttpd + Mono ASP.Net : The right configuration

As I already told before, I love the Mono project. It enables to run the powerful Microsoft .Net Framework on UNIX/Linux/BSD systems. I recently wanted to test a very cool feature of ASP.Net on a mono server. So I did a little apt-get install lighttpd mono-fastcgi-server2 -y The feature I wanted to try was a web scripting method ( with the [WebMethod] attribute) exporting some JSON directly from your method return value. ...

May 18, 2009 · Florent Clairambault

Improving .NET Network Performance with Kernel Events

I recently rebuilt our TCP/UDP network server library to handle high-load scenarios. The initial thread-per-client approach worked but hit memory limits at around 3,000 simultaneous connections. The solution? Kernel events. Using IOCP (Windows), epoll (Linux), and kqueue (FreeBSD), we let the kernel notify our program when new data arrives instead of polling. With a 128-byte pre-allocated buffer and some BeginReceive calls, the changes were minimal. The results exceeded expectations: from a 10,000 connection target, we achieved 60,000 simultaneous connections with near-zero CPU usage and instant response times. This proves Mono/.NET’s capability for high-performance network servers. ...

November 2, 2008 · Florent Clairambault

MapPoint WebService authentification with Mono

When migrating a MapPoint WebService application from Windows to Mono/Linux, I encountered “401 Unauthorized” errors. Network analysis revealed slight differences in HTTP headers. Here’s the solution using specific credential handling: var cred = new System.Net.NetworkCredential("---user---", "---password---"); _credCache = new CredentialCache(); _credCache.Add( new Uri( "http://findv3.staging.mappoint.net" ), "Digest", cred ); _finder = new FindServiceSoap(); _finder.Credentials = _credCache; _finder.PreAuthenticate = true;

May 19, 2008 · Florent Clairambault