What is the Rails Question?

Nick Malik asked “what is the Rails “answer” on the Microsoft platform? If we don’t install Ruby, do we use Rails on JS or is there a Rails version we may want to put up ourselves?” I guess it depends, what is the Rails “question”?

On the one hand, the question could be “What’s the best way to run Rails on Windows?” I think the short answer to that is IronRuby. In the wake of the IronRuby announcement, John Lam wrote that “Nobody would take our implementation seriously if it doesn’t run Rails.” Somepeople question the DLR’s teams ability to ship a compatible version of Ruby without looking at the source, but my money is on the DLR team. (Of course it is, I’m a kool-aid drinker!)

BTW, I don’t think having a JavaScript port of Rails (JailS?) is much of a help for the Microsoft platform. I’m not sure if Steve Yegge’s JavaScript Rails port would run on JScript.NET, but I wouldn’t bet on it. I would expect you need either the old Active Scripting JScript or the new Managed JScript (aka the DLR based version of JavaScript). Of course, IronRuby runs on DLR as well so why wouldn’t you just run Rails on IronRuby instead of the JavaScript port of Rails on Managed JScript?

(Side note – why isn’t the new JScript engine called IronJavaScript? Wouldn’t that be cooler than Managed JScript? Don’t they know “Iron” is the new “#”?)

On the other hand, maybe the question is “can ASP.NET evolve to be more Rails-esque?” I think it’s starting to, slowly. Rails at it’s core is a Model View Controller web app pattern (aka Action Pack) combined with an Active Record data access pattern (aka Rails’ Active Record). Certainly, nothing stops you from using a similar approach with ASP.NET. The Castle Project has an ASP.NET implementation of MVC (aka MonoRail) and Active Record (also called Active Record). But I assume Nick’s more interested in what ships natively in the platform to compare to Rails.

On the data access side, I think LINQ to SQL is a a compelling alternative to the various Active Record implementations. It’s not an implementation of the Active Record pattern, it looks more like a Table Data Gateway patten. Also, it’s not DRY like Rails Active Record, but I think that’s more of a function of dynamic vs. static languages. Castle Active Record isn’t DRY either. But once you get the hang of the slightly funky syntax (the from clause is first so you can get intellisense) I find LINQ very easy to use. Certainly, building Query Objects is a snap.

On the web app framework side, the story isn’t so pretty. The agile folks like MVC because it’s easier to test (among other reasons – see update below). Apparently, there’s an ASP.NET MVC framework that’s “in the works”, but AFAIK no one has seen or heard anything about it since the MVP summit. Jeffrey Palermo was impressed with what he saw, but I guess everyone else has to reserve judgement until it gets a little more public.

Actually, I don’t think it’s an either-or question, it’s both. In order to be the Common Language Runtime, I think it needs to support common dynamic languages like Ruby, Python and JavaScript natively. And, in order to be the best platform, I think the .NET Framework in general and ASP.NET in particular need to support multiple approaches to meet the needs of different developers.

Update: in the comments, Jeffrey Palermo points out that he likes MVC “mostly because it separates concerns of controlling screen and rendering the screen. It makes the application more maintainable and keeps the code easily changeable.” Point taken. I didn’t mean to imply that testability was the only virtue of MVC.

Morning Coffee 94

  • By most accounts, the Capitals had a good draft this weekend. They started the day with ten picks across the seven rounds. The ended the day with ten prospects as well as three extra picks next year, including two second rounders. According to the GM George McPhee (aka GMGM), next year’s is “supposed to be a terrific draft” which is probably true but what you always say when you trade down for future picks. On the other hand, if the guys you want are available further down, why not stock up on the future picks?
  • John Lam reports on Steve Yegge’s Rails port to JavaScript that he saw at Foo Camp. Google (aka Steve’s employer) wasn’t interested in adopting Ruby or Rails since they already use C++, Java, JavaScript and Python. So Steve ported Rails to JavaScript. Wow. However, it does beg the question which is more valuable, Ruby or Rails? If you could have just one or the other, which would you choose?
  • Speaking of dynamic languages, Powershell Community Extensions v1.1 is out. I want to check out the new Elevate function. Currently, I’m using the Script Elevation PowerToys, but I would rather have a pure PS solution. (via Powershell Team Blog)
  • I always know it’s a slow day when I decide to check TechMeme while writing my Morning Coffee post. Usually, I get plenty to write about from just my news reading. However, right now, even TechMeme seems mostly uninteresting. Only thing remotely interesting to me is Samsung’s new 64GB solid state drive.

Home Networking Question

I’m a software guy, so here’s a couple of home networking questions I’m hoping one of you readers can answer. My internet connection (cable) comes in upstairs in the loft (aka where all my computer stuff lives). My TV and Xbox are in the living room on the opposite side of the house, downstairs. Between the distance and general house interference, the network perf in my living room stinks, with both my laptop and Xbox.

I’d basically resigned myself to running Cat 5 cable from my living room to the loft, which is a pain because it would have to run thru the crawlspace and up the side of the house to the loft and punch in thru the outside wall. Frankly, I haven’t been able to make the time commitment to do that yet.

I was checking out the Linksys site and right there on the homepage is a promotion for their Powerline products. Now that would be MUCH easier than running Cat 5. But how good is it, really? They claim “Data rates up to 200Mbps”, which is plenty fast if they really reach that throughput. Anyone out there had any experience with this Powerline stuff? For around $200 and getting to skip running cable under the house, it’s probably worth it for me to take a shot. Worse that happens is that I have to take it back.

Regardless if I use powerline or run Cat 5, that solves the Xbox problem but I still want a stronger wireless signal on that side of the house. So for my second question, what’s the word on multiple access points? Should I set up multiple wireless APs or should I set up a repeater somewhere in between to boost the signal. I’m actually looking at getting a new wireless router/AP anyway, so maybe I could just get one of the ones with some type of range boost. I currently have a now-discontinued MN-700 (what do you want, I’m a company man) so it’s a good time to get a new AP anyway.

Another option to the wireless strength question is the AuraGrid, which tunnels your wireless antenna signal over the coax cable in your home to give you multiple antennas all over the house. So I could easily add a wireless antenna wherever there’s a cable jack. Anyone have any experience with that product?

Anyone who wants to give me free advice, feel free to leave a comment or drop me a line. Thanks in advance.

Morning Coffee 93

  • The Washington Capitals
    newcapsjersey
    unveil their new jersey tonight, though they have a picture on their web site. I’ve got mixed feelings, though I’m trying to reserve judgement until I see it “in action”. I like that they’re back to the traditional Caps colors. But the Caps have jersey change fatigue. They only had the screaming eagle jersey for twelve years, and they swapped out the blue jersey for the black one (that started life as a third jersey) somewhere along the line.
  • Lawrence Lessig hangs up his IP spurs to go after the deep corruption of the political process. He points out that after a decade focusing on IP, he’s learned all he is going to about these issues so he decided (among other reasons) that it was time to start fresh learning about something new. I keep telling my kids that “always keep learning” is one of the secrets to life. This move by Lessig is the embodiment of that principle. Good for him. (via John Lam)
  • My old team keep chugging along. They’ve recently added “special coverage” sections on Agile Development and Enterprise Architecture.
  • Miguel de Icaza details the three week “hackathon” (his words, not mine) they went thru to get a working version of Silverlight on Mono – aka Moonlight – in time for ReMix 07 in Paris. It’s an impressive engineering achievement, to say the least. Also, it’s nice to see the folks from Microsoft France invite Miguel to come be a part of their keynote. (via Larry O’Brien)
  • Rob Bazinet points outVisualSVN in response to my question about SVN clients other than Tortoise. Like AnkhSVN, VisualSVN snaps into Visual Studio. However, where AnkhSVN is a native SVN implementation, VisualSVN depends on Tortoise. Scott Bellware wrote “VisualSVN takes a novel approach to bringing SVN into the Visual Studio IDE… it brings Tortoise into the IDE!”. So it still sounds like Tortoise is the SVN client everyone cares about.
  • Scott Berkun details a variety of immature development and management methodologies, including Development By Denial (DBD), Cover Your Ass Engineering (CYAE) and my personal favorite Asshole Driven development (ADD). Scott Hanselman suggests looking around and making sure you’re not said asshole. I tend to be somewhat…how should I say it?…strong willed about the direction projects I work on should take. My current project is about driving a paradigm shift to service orientation, and I don’t think you can’t drive that kind of change without being somewhat strong willed. It’s a thin line between strong willed and asshole and hopefully I come down on the right side of that line more often than not.

Morning Coffee 92

  • Brad Wilson blogs about SvnBridge, a tool that lets you use Subversion clients like TortoiseSVN to talk to Team Foundation Server. While I think that’s cool, I wonder is anyone interested in subversion clients other than TortoiseSVN? For example, will people choose AnkhSVN instead of the Team Explorer Client?
  • Speaking of TortoiseSVN, I wonder if those guys are interested in building a TortoiseTFS project? I did find two other TFS shell extensions projects: Dubbelbock TFS and Turtle, though neither appears as full featured as Tortoise.
  • Scott Guthrie details VS08′s multi-targeting support. Of course, the three versions of the .NET Framework VS08 can target all use the same underlying runtime, which probably made it easier to build.
  • Michael Platt refactors Don Box’s original tenets of service orientation so he can include some information about how these services get built.
  • Scott Hanselman tackles the tricky question of assembly granularity.
  • PowerShell Analyzer is now available for purchase. Among other things your $59 gets you, besides a 50% savings, is “Feature request priority“. That’s pretty cool. I wonder how many other micro-ISV’s take the approach of “pay me now and you get to help me pick some of the new features.”
  • Brandon LeBlanc
    My Monitor Setup
    writes about dual monitor support in Vista. I’m loving the dual monitor support, though I have a somewhat strange setup. I keep my primary monitor rotated in portrait mode, which is great for reading and writing. I typically use my second monitor for blogs and mail. I even wrote a custom multi-mon wallpaper utility so I could easily generate new wallpapers for my non-standard monitor layout, including bitmap rotate support. If there’s interest, I can post it. (via Sam Gentile)
  • Nick Malik continues to write about Mort, with the usual response from the usual folks. I liked his point that “You cannot fight economics with education”, but otherwise I’m staying out of this discussion.
  • In the same vein, Martin Fowler writes about Technical Debt. I completely agree with his hypothesis that short changing design may save time in the short term but will cost much more in the long term. However, the problem is that the people who are making the tradeoff – i.e. the people paying for the project NOT the people building the project – either don’t understand the tradeoff or are more than happy to sacrifice the long term cost for the short term gain. How are most projects measured? Being on time and on budget with the planned set of features. Very few projects – and none that I’ve ever seen – are goaled on long term maintainability. Until you can change that, this issue will continue to linger.