I Smell Smoke - Rob Conery on Microsoft
blog.wekeroad.com
blog.wekeroad.com
Form validation (client and server side with the same code) is still a killer feature. Easy deployment as there is only IIS, no decisions about fcgi, mogrel, keeping your processes running, etc.
I don't really see his point. You've got one of (if not THE ) best IDE's with easy debugging, intellisense, etc. You've got a super stable platform (IIS 7), some of the best documented API's and code in existence and you want what?
I guess I don't get what he wants? Is there some missing feature or just sad that he can't be one of the cool kids?
Also, testing. Try testing in C# vs. Ruby or any other dynamic language.
I don't know anyone who uses the built in Form Validation, you would only use that if you don't care about your client-side code.. for people who care we still end up doing both by hand.
Build --> Publish. Done.
Validation: http://weblogs.asp.net/scottgu/archive/2010/01/15/asp-net-mv...
These features are designed so that the validation logic is always enforced on the server, and can optionally also be enforced on the client via JavaScript. The validation infrastructure and features in ASP.NET MVC 2 are designed so that: 1) Developers can easily take advantage of the DataAnnotation validation support built-into the .NET Framework. DataAnnotations provide a really easy way to declaratively add validation rules to objects and properties with minimal code.
2) Developers can optionally integrate either their own validation engine, or take advantage of existing validation frameworks like Castle Validator or the EntLib Validation Library. ASP.NET MVC 2’s validation features are designed to make it easy to plug-in any type of validation architecture – while still taking advantage of the new ASP.NET MVC 2 validation infrastructure (including client-side validation, model binding validation, etc).
2) To use it you have to use strongly-typed views, and HTML helpers I believe.. which again I don't care for since it is taking the markup out of your hands.
With respect to #2, I strongly suggest you reevaluate. Strongly-typed views will save you a lot of boilerplate code in your controllers and HTML helpers only interfere with your markup to the extent you want them to. Most of them are super minimal and easily styled or manipulated. I expected that the helpers would just be different ways of getting into the same mess you encounter using things like server controls in webforms but I was quickly shown otherwise.
On a scale of 1 to 10 of vagueness/subjectiveness, this would be a 30.
I like the new additions, like Linq or the properly done closures or generics.
But throwing words like "innovative" or "advanced" for techniques used from the late '70-ties brought together in a language with the same corporate-stinch of Java or Cobol?
Yeah, right.
> Form validation (client and server side with the same code) is still a killer feature.
Form validation is a hard feature to get right. I do not agree that the validation done in ASP.NET MVC is a "killer", especially since I've hit hard limitations in the first hours of me trying it.
In case you're wondering about what limitations I'm talking about ... try building a dynamic forms system that gets stored in the DB (fields, references to validation rules) allowing a user to build some forms and for another user to supply values for those forms.
The only validation system I've seen that's reasonably productive and that works in most cases is the one in Django, but even that is lacking considering you have to add your own code to have client-side validation and keep it DRY (although that happens due to Django's policies, not due to bad design, and really it's not that big of a deal to add something that works well in most cases ... bringing server-side validation to client-side is an easy to solve problem, unless your framework is fucked-up).
> Easy deployment as there is only IIS
You are probably kidding, although I'm happy they finally discovered the virtues of text configuration files.
> no decisions about fcgi, mogrel, keeping your processes running, etc
Not every platform is as fucked-up as Rails ... mod_wsgi for Django (or any wsgi compliant Python framework) just works with no headaches.
It takes me 20 minutes flat to manually get an EC2 instance up and running with everything needed. And I can quickly automate that in a way Windows devs cannot begin to dream of.
> You've got one of (if not THE ) best IDE's with easy debugging, intellisense
Sometimes I miss that, but not that much, mostly because I need the flexibility to use the best tool for a certain job, not to mention that sometimes I don't have a choice in the tools I use.
That's why I'm using Emacs ... the flexibility I gained made me several times more productive than a clicky-clicky IDE.
If you don't believe me, try working with Python from VS.NET, while using pychecker/pylint to automatically check your code (let's say it's a company policy) and to also use ReviewBoard in combination with a Git repository.
Or better yet, try debugging with VS a production environment.
> some of the best documented API's and code in existence
In comparison with Django it pales.
Not only does it have good documentation, but when it's lacking the clarity of the actual code is breathtaking ... yes, devs using Django are actually looking at its source-code and I have quite a few friends developing on top of ASP.NET ... none are doing that.
Maybe it's a cultural thing, maybe it's because ASP.NET is proprietary, the end-result is the same though ... the Django devs I know have intimate knowledge of Django's internal mechanisms, while ASP.NET devs do not.
> Is there some missing feature or just sad that he can't be one of the cool kids?
HN has degraded a lot recently. I see many comments containing ad hominems that are getting upvoted.
Pity.
I'm an advocate for technology I like. I like postgres, python, and nginx, but that doesn't mean ASP.NET is crap.
The cool kids part was a reference back to the title of the talk. On a different note I've found way more ad hominems in your post than the parent post.
this is fairly trivial. one area where the static typing really helps. the type system is the dsl.
erm... Phusion Passenger is the deployment platform of choice for Rails (Rack) applications. It's even easier than mod_wsgi.
Thanks for the tip,
I did suggest to Sara Ford at a MixUK conf a couple of years ago that a Visual Studio plugin that would search for and import projects from CodePlex straight into your project would be pretty awesome; I never followed up on it, and I've been out of Windows dev since then so I haven't heard if anything similar exists. I still think it would rock :-)
Cucumber isn't strictly speaking out of the box - it's dead easy to install of course, but it's not part of the rails core distribution. Rails still uses Test::Unit by default.
Specflow (http://www.specflow.org/) is a .Net oriented BDD framework that uses Gherkin - essentially Cucumber for .Net.
The way I've viewed it is WebForms is what you learn when you're starting out, and when you want more advanced features that are built for websites people actually use, you use something more sane, like MVC.
In my experience, "vanilla" Asp.NET (with WebForms) makes a ton of assumptions on how it should be styled, based on...I'm not really sure. The Visual Studio project team's intranet or something. MVC is slightly better with CSS adapters and the like, and provides a more robust routing mechanism that we've used on a few sites.
Why is this a debate, other than being more platform religion?
It's not a debate. The point is to ask Microsoft to stop being afraid.
If you don't want to - that's great but you're comments have no context.
I guessed that the post supported the video, but lacking a video, commented on the post instead.
If you want to make consistent good money it's in consulting for firms, and that's going to be almost exclusively C# and Java.
There is a torrent of 33 talks from NDC2010: http://dl.dropbox.com/u/757631/NDC2010/NDC2010%20Part1.torre... Rob's talk is in there.
In the open source world things are often buggy and rough around the edges, but the cross-polination of ideas happens faster, coupling is looser, and the cost of switching is lower.
I'll still probably pony up for the damn ipad sdk, but hopefully I'll know better than to pin my career on it.