Well, I’m finally learning the MS stack, so I can add that to the Python/LAMP stuff that I’ve been doing for so long. I’m certainly more clear on what the general .NET architecture is (and where Mono fits as well). C# is mostly nice, if you can get past the static typing. Typing “Foo foo = new Foo()” gets old, and the patterns for declaring and allocating arrays just will not stick in my brain.
Either I’m missing something really basic, or the interface from C# to ASP.NET is just silly. I can’t figure out an easy way to allow a designer to create pages in HTML/CSS/JS and then tie them in with your C# code. C# to the database is also still odd, LINQ is a mess. I’m glad that there is a port of Hibernate to use as an ORM and the Castle ActiveRecord libraries to limit the number of “XML sit-ups” that I have to do. (Although I’ve only been able to make ActiveRecord talk to MS SQL, and not MySQL, which is not encouraging.) I’m really quite shocked that there is no JSON support in the core libraries.
I’ve had good luck working with SharpDevelop as an Open Source tool for developing Windows-based (aka Winforms) applications. Sadly, SharpDevelop does not work when developing ASP.NET web-based applications, and it looks like that is not even on the horizon. The free MS “Express” editors are not bad, even though the MS IntelliSense always seems to pick the wrong thing for me. I can’t quite figure out why one would buy Visual Studio when the Express versions are there. I’m sure I will find out someday. In any case, the projects seem to be so hopelessly intertwined that you can’t really develop without an IDE. I’m also trying to figure out how you develop in teams with these toolkits — I can’t figure out what should go into source control and what should be local. I do have unreserved kudos for the “build a distribution package” for Winforms applications.
So anyway, I’ve got my C# application talking JSON to a Django web service, then pulling data and populating an ASP.NET page and an MS-SQL database. If nothing else, this app is buzzword-compliant!