Sacramento Software Development

Role Models – Spending Time in the Design Phase of My Life

Posted by John Lockwood on June 6th, 2010

When people are free to do as they please, the usually imitate each other.”

  – Eric Hoffer

Last time I wrote about finding my life’s purpose, and since then I’ve spent more time reading el señor optimista, Anthony Robbins, and working through some of his exercises.  As with many self-help books, there comes a point where you list your goals, and the author starts with great ideas like making millions and flying private jets.  By this point, I usually feel compelled to write something in the millions, but I must say, I’ve had difficulty in the past tying this goal to my values, since I don’t think that wealth per se is really high on my list.

Listing values, of course, is yet another Tony Robbins exercise, along with going on a mental diet.  Yes, I am currently on one, on day two, thanks. 

I haven’t listed my values yet.  I think it might be helpful to do so in the context of first writing about…

The Missing Exercise

Maybe this exercise is missing from Tony Robbins’ book, or maybe I skipped over it, but because I consider myself to be in the design phase of my life and my future business, I am going to list some role models for my business.  These are possible prototypes, or approaches to designing a set of business goals that are consistent with my values.  I should point out that though it’s missing in my reading to date, the exercise is implicit in Tony’s ongoing study of successful people.

So here without further ado are several role models I am looking at, for one reason or another.  I suspect the goal that I fashion once the design phase is finished and I move on to implementation will be a mixture of one or more of these approaches:

  • Tony Robbins
    Well, if it’s not obvious already, this Tony Robbins is having an impact on me.  Yes, I know, he does fire walking at his seminars.  Nobody’s perfect.
  • 37 Signals
    Legend (or their book) has it that these eight or so developers have generated a huge amount of cash for themselves, some $24.00 per month of which came from my real estate business, Elite Properties.  The model here is to write several simple but elegant Application Service Provider applications in Ruby on Rails.  Great model.  Great language.  What a hoot.
  • Application Service Providers in General
    It’s unfortunate that Microsoft’s Active Server Pages has the same acronym as Application Service Providers, because as role models go, ASP is not one of them.  ASP is just some technology that one may or may not highlight on a resume.  In this article, ASP stands for Application Service Providers (which are genuinely exciting as a business model) not Active Server Pages (which at best are interesting).
  • Top Producer and SettlementRoom
    Top Producer began as a desktop application (or perhaps pre-desktop), devoted to helping Realtors® manage their business.  Their application itself was uselessly ponderous as of the last time I tried it, which often happens with fat clients hastily ported to the web.  As far as I know Settlement began as an ASP providing escrow management.  One idea on which I worked part time for several weeks was an application which split the difference between these two real estate applications, while trying to emulate the simplicity of 37 Signals apps.
  • ICanLocalize.com
    These folks provide general localization and translation services, a model which appeals to my new-found passion for languages.  They combine this with web site design and development in Drupal and Wordpress.  How cool is that?  For you, maybe not at all. For me, ¡es muy chevere!
  • Hulihan Applications
    I just found this site today, and was impressed by the owner’s approach of creating several lightweight Common License applications, apparently to serve as the loss leader to his web development and design business.  This is another Ruby on Rails shop, but the service oriented, open source approach here is very, very different from that of 37 Signals.  The choices the author made for applications was also of interest, as was seeing them in use on his site and thinking about how one might design something similar.
  • Ronin Tech Collective
    I wrote about this employee owned software company back in November.  An employee owned company is great if you place a high value on contributing to the success of others within your organization, or if you watch too many Michael Moore movies.

Questions for the Future

  • Who are the Warriors?  There must be some word!
  • What do my choices of attractive companies tell me about my values?  What can I learn by listing my favorites?
  • How can I use this to design a more exciting plan?
  • Can any shorter term goals be generated from these exercises?

Posted in John Lockwood, Ruby on Rails | Add a comment »

Microsoft ASP.NET MVC: A Glimmer of Hope for Ruby Programmers (or is that ASP.NET Programmers?)

Posted by John Lockwood on September 2nd, 2009

Late born head case that I am, I vibrate between programming languages like a sort of high tech lady’s toy.

Analyze that.

Thus it is that I wrote an article recently comparing ASP.NET and Ruby on Rails.  In that article I mentioned Microsoft’s pathetic support for the Model View Controller pattern.  This was based on work I’d done an eon ago in programming time, 2006 or 2007 or so.  With that I was able to declare:

This may have changed since I last looked at it, but on my last ASP.NET contract they had an MVC implementation that completely broke browser navigation and was a nightmare to code to.

Well I don’t have all the details yet, but I’m happy to report that since that glib dismissal Microsoft has had Ruby in its sights in a big way, and has further refined something they were no doubt working on when I made that dated statement.  (You know what print journalists bag on us bloggers for – we’re light on our fact checking).  Enter Microsoft MVC complete with a 15 minute podcast by Stephen Walther.  Look familiar?  It should.  Of course this is straight out of the Ruby on Rails 15 minute podcast, which in turn was lifted whole cloth from the pioneering work of Cobol on Cogs.

Cobol on Cogs was obviously a parody of Ruby on Rails, and I’m sure there are Ruby programmers who probably consider ASP.NET MVC to be in the same category, though interestingly enough, the official rails blog mentions Cobol on Cogs but not ASP.NET MVC.  Much of what you can find there are bashes of ASP.NET (like this and this) that were absolutely legitimate in 2005 but might be getting a bit obsolete by 2010.

I’m going to take a look at ASP.NET MVC, and in case I end up hating it, let me be the first to call it this:   Cobol on Cogs 2.0.

Meantime I certainly wouldn’t count out Microsoft’s ability to steal someone else’s ideas, market them, and provide me with a job in the process.  C Sharp, after all, is “Java run through a thesaurus”, and Redmond has the law suits to prove it.  I suspect we’re in the next phase of this, and I find it exciting.

So I’m going to spend another hour or two on the coolest programming web site ever, which incidentally is written in ASP.NET MVC.

Posted in ASP.NET, Ruby on Rails | Add a comment »

Using Ruby Fixtures at the Console

Posted by John Lockwood on June 27th, 2009

At the risk of showing how (not) far I am along the learning curve given my Month of Sundays Rails project, here’s a great beginner sort of rails tip I found on how to load fixtures into the console.

The meat of it is this, which I like because it simultaneously shows you how to set up your environment correctly for the console, and for rake. Not a bad little tutorial for two lines worth of stuff:


rake db:fixtures:load RAILS_ENV=test
script/console test

Posted in Ruby on Rails | Add a comment »

ASP.NET versus Ruby On Rails

Posted by John Lockwood on April 19th, 2009

My friend and college housemate Daniel Steinberg stopped by  recently and caught me red-handed in yet another heinous act of last week’s marketing.  By “last week’s marketing”, I mean that I should know better than to say this site is about a specific platform / language/ technology.  This is generally the wrong approach for a computer-linguistic gadabout to take.  John Lockwood putting up a web site about a programming language is like Madonna putting up a web site about her one true love.  The next words out of her mouth are bound to be:  “Woops, no I mean my other one true love.”

So with those other strange bedfellows out of the way, we now turn our attention to a comparison of ASP.NET and Ruby on Rails from my point of view as a fellow without a firm entrenchment in either technology.  This isn’t meant to start or feed a language war because, as I say, I’m not passionately committed to either technology.  I do think that both environments offer a lot that’s good, and both have more than enough things that bug the heck out of me.  So this article quite simply is my list of what I like and don’t like about each environment.

What I Like About Ruby on Rails

  • Prototype
    Rails has excellent baked-in support for two great related JavaScript libraries — Prototype and Script.acul.us.  It’s about this hard to get started:
    <%= javascript_include_tag :defaults %>.  Well, OK, it’s a little harder than that, but I found that with Prototype’s beautiful documentation, I was able to go from zero to productive in a few hours.  What’s more, I actually found myself liking JavaScript for the first time since — oh, who am I kidding, I always hated it.  Prototype could change my mind, though.  I wrote something that started to look pretty good in Firefox, then fired up Internet Explorer fully expecting half the page to re-materialize in a particle accelerator in Switzerland.  But lo and behold, it worked the way it did in Firefox. You’re kidding, right?  JavaScript did that?

    But then I saw her face.  Now I’m a believer.
     

  • link_to_remote
    How easy can we make AJAX?  Does a single function call work for you?  It does for me.  Here’s a tip though from someone who knocked his head briefly against this wall:  unless you’re updating multiple DOM elements (and maybe even if you are), then forget about RJS.  Something in this format:  “your_response.html.erb” is your friend.
     
  • Lots of Other Stuff
    If you’re a Rails programmer, lest I lose the goodwill from the next section, let me say this first: overall, I think Ruby on Rails is the bee’s knees, or perhaps the cat’s pajamas.  Well, either way, it’s something cool that belongs to some critter. I’m not sure I can frame why exactly, but it’s a lot of fun to program in.  There’s something about the way it all fits together that’s very satisfying.

What I Don’t Like About Ruby on Rails

  • Smugness and Sleight of Hand
    Rails is an utterly cool framework, but that doesn’t mean that there aren’t parts of it that aren’t either smoke and mirrors or mere social gushiness.  For example, if you have a phrase that goes Don’t Repeat Yourself with the clever acronym of “DRY”, then you probably shouldn’t say it over and over and over and over and over again.  Honestly.  Shut up already.  Even Assembly Language had macros.  We get it.  Give it a REST already.  Oh, and speaking of REST, remember your other catch phrase, You Ain’t Going to Need It?  Well, guess what:  you still have sessions, and so regarding REST, you ain’t.
     
  • What, No Windows?
    Apparently Rails runs a lot better on Linux than it does on Windows.  I say apparently because I haven’t bitten the bullet yet to set up an Ubuntu partition, but it seems to be the gist of the literature.  I have no reason to doubt it given that as of a couple of weeks ago my no-model unit test framework (which at the time barely beat “Hello World” in terms of complexity) took 13 seconds to load and run.
     
  • You Call This Documentation?
    Unlike the Prototype documentation (which as I said, is beautiful), the documentation for Rails falls into two categories, as near as I can tell:

    • Web pages that link to things that aren’t there any more, as though the framework were trying to bury the competition beneath the sheer weight of 404 errors.
    • Function documentation that looks something like this:my_rails_function(object, gizmo, options = {}, html_options = {} )
      object:  some well defined object that the documentation describes in depth
      gizmo:  some gizmo that’s also pretty well defined but fairly self evident
      blah blah blah lorem ipsit dolor yada yada.

      Where’s the discussion of “options” and “html_options”, you ask?  If you’re lucky, they’re somewhere else on the same page, twenty lines down or under the discussion of some related function.  More likely they’re in the source.  Apparently if you’re a Rails programmer, a side benefit of saying Don’t Repeat Yourself over and over is having function parameters handled only in the source and not in the documentation.

So much for the pros and cons of Rails.  Let’s see if we can come up with some similar virtues and trash talk for Microsoft’s ASP.NET.

What I Like About ASP.NET

  • Visual Studio
    Visual Studio is a competent and mature Integrated Environment, with an outstanding debugger and great features such as code completion.  Now, before you say, “But John, Rails has that, too!”, I should point out that, yes, I tried out RubyMine (in Beta) and Aptana Studio, and so far I’m a bit underwhelmed.  Yes, Chris Williams was totally nice when I entered a bug wherein the code completion didn’t work, and he put a fix in for 1.3.0 within 24 hours of me entering it, and yes I appreciate that.  But 1.3 isn’t out yet, and in Visual Studio, it just works.  Admittedly, Microsoft’s tool has been around a lot longer, and yes, they have huge resources, the comparison is unfair, etc.  But if you’re going to lure me out of Visual SlickEdit and the command line, you’d better have great code completion and an awesome debugger, because otherwise I’m comfortable already.
     
  • MSDN
    Remember those missing options and html_options from the Rails doc?  Well, if I’m sitting at my keyboard, say “Go”, give me twenty seconds, and I’ll rattle off all the parameters for CreateWindowEx and what they mean, including acceptable values for multi-valued parameters.  The MSDN documentation for ASP.NET is as good as the Rails documentation is poor.
     
  • Jobs
    The last two times I looked, the number of jobs for ASP.NET developers was beating the number of jobs for Ruby on Rails developers by a factor of about 11 to 1.  If you look at the pyramid for Abraham Maslow’s hierarchy of needs, you’ll see that employment (in “Safety”), comes well before Esteem and Self-actualization.  The Beatles presciently wrote about the allure of Rails versus the hegemony of Microsoft thus:

    Your lovin’ gives me a thrill
    But your lovin’ don’t pay my bills.

  • NUnit
    What can I say.  I’m a tramp for cheap visual thrills.  I like to see the bar turn green.

What I Don’t Like About ASP.NET

  • High Cost of Ownership
    I mentioned jobs before, but in some respects this is a moot point or at least not the only point, since what I have discovered about myself long ago is that the guy I really like working and writing code for is me.  SQLServer and .NET hosting simply don’t have the same sorts of economies as the LAMP world, and I’m sure Rails is on a path to being that cost effective even if it’s not quite there yet.  Thus, to me much of the debate breaks down into a personal decision between entrepreneur versus employee.
     
  • Vendor Lock
    As slow as Rails is on Windows, as far as I know the only implementation to date of LINQ to SQL (which one might nickname “ActiveRecord for Microsfoties”) is against SQL Server.  Yes, it’s cool that LINQ works with native objects, XML, and SQL, but to date I haven’t yet needed to do a right outer join of my Employees table and my HttpRequest object, and I don’t anticipate that changing.
     
  • Their Model View Controller Support is a Disaster
    This may have changed since I last looked at it, but on my last ASP.NET contract they had an MVC implementation that completely broke browser navigation and was a nightmare to code to.  I’m not an MVC snob, so I’m quite happy with some pages and code behind talking to a well defined model interface if that’s how you want to do things.  However I do think that if you’re going to use the MVC pattern (or any other design pattern), it should work better than the absence of it does.  Rails forces MVC on you, but it works just fine.  MVC is an optional nightmare in ASP.NET, unless your manager is of that all too common variety that prefers buzzwords over common sense — in which case it becomes a required nightmare.

Thank you for hanging in there for this completely idiosyncratic view of some of the pros and cons of Ruby on Rails versus ASP.NET.  I’ve barely scratched the surface, I’m sure, but when it comes to language wars, that’s probably all one should do.  In my opinion, programming always represents a certain dynamic tension between “How cool is that?” and “Who’s cutting me a check this week?”  Go out and code something, folks.  What if they gave a language war and nobody came?

Posted in ASP.NET, Ruby on Rails | 4 Comments »