Hammett has a post up about a point I made on Ayende's blog concerning the need to have to hand-write HTML to have a control on a page in Monorail (how many link references can you have in one sentence?). The 'money' quote:
"And, I’m not missing the point, I DO NOT WANT TO HAVE TO HAND-WRITE HTML everytime I want to have a control on a page. That seems to me to be what Monorail requires and which you seem to be acknowledging."
Now, I'm shallow enough that I still get a little visceral thrill whenever I see my name in print, even when someone is calling me a douchebag (I heard that), so I appreciate his response. And I'm not just saying that because he believes I have a point (I did say 'just', LOL).
Besides not liking to hand-write HTML, I am admittedly biased against Monorail for at least the following reasons:
- I thought a comment on their site was too snarky for my taste.
- I had to write some PHP code for a site once. I don't like PHP syntax.
- I have a visceral suspicion of Rails. I don't like being forced to follow someone else's convention, which it seems to force upon you (now, my massively limited understanding is that one of the reasons why people like Rails so much is because they come from a Java background and they tire of the framework-heavy nature of Java web development, so Rails is like a breath of fresh air...I can understand that).
I'm also very aware that none of these additional 'reasons' are really good reasons whatsoever for disliking Monorail. At all. It has the tacit or explicit endorsement of people who a) I respect somewhat or b) are quite clearly better developers than I am (though that's a low bar to clear, really) or c) both. So, it deserves a better look from me. Not because people think it is 'cool' (some people though CORBA was cool, so there's never accounting for taste), but because it could very well make it easier for me to deliver highly scalable, testable, productive applications to clients. And that's really all I care about right now (well, I'm thinking of taking the dive into the Entity Framework for my own stuff in part because I think it is cool, but that's another topic).
I am looking forward to being able to take a deeper dive into Monorail at some point, when I have something I can pilot (slow, obstinate people like me need a QuickStart sometimes to really understand a technology, so there's that factor also).
But, that's not the point of this post. It has to do with this comment from Hammett:
"Today MonoRail/RoR approach is to give you a canvas so you can start painting on it. That means you have to hand write html, after all what kind of web developer are you if you can’t stand html? A drag-and-drop developer, I’d say."
And the few comments to the post so far (I'll add one after I post this) pile on about drag-and-drop, blah, blah, blah.
Well, folks, I can't speak for anyone else, but:
- I don't use drag-and-drop for web development. Can't stand it. I want CSS for styling *and* layout. The last time I used drag-and-drop doing ASP.NET development was something like 2002, and I was ashamed of it then.
- When I'm working on a master page or web page or user control, 90% of the time I'm in source view, not design view. For instance, if I want to set the datasource for some element in an ItemTemplate, I'm 'hand-writing' that in source view, not using the graphical designer.
- Actually, I'm not sure what I use design view for. I'll have to usability test myself and remember why I use it...let me check a current UserControl I've been working on....I don't think I've ever looked at it in design view. I look at it visually when debugging. So, maybe more than 90% in source view.
- My own stuff uses a modified version of MVP based off of Haacked's post, so I'm really against spaghetti code designers can produce (though I'm fine with Typed DataSets when they are appropriate).
So, let's get rid of this knee-jerk reaction, shall we? There's probably something to be said about why people assume that only drag-and-drop designers could not like hand-writing HTML (and there's the unspoken assumption that drag-and-drop designing is always bad), but that's another topic.
So, why did I make the comment on Ayende's blog that I did?
A couple of reasons:
- Response.write anyone? Seriously, this is nearly identical. It's like going back to ASP development.
- Strings anyone? Compile time checking? Seriously, I can't stand having to write out HTML in string format, because I know, personally, that I will f$%^ that up.
- Intellisense anyone? Resharper actually will give some intellisense support in source view. I was stunned (in a good way) the first time I saw a UserControl was Red because I set some OnSelectedIndexChanged value to a non-existent method.
- Re-use anyone? If I want a drop-down and want to handle events like its SelectedIndex changing, are you telling me I have to do it myself from scratch? Why would I want to do that? Isn't this re-inventing the wheel?
- And if in a moment of 'insanity' I decided to be a ControlFreak (pun intended), I can use a Literal or Repeater or something and do all that.
So, I'm not against having total control, and Monorail seems to give you that, and that's something that people like Ayende seem to love. And that's fine. Just don't force me to hand-write HTML to implement a fricking button.