This is part 3, the last post in my Rails VS ASP.NET series. Please see Post #1 and Post #2 if you missed them.

In my previous post, I mentioned that I have a glimmer of hope for ASP.NET. This post is about the current state of ASP.NET, what it's doing right and, moreover, what direction I want to see it go.

The Alt.Net Movement

A community, dubbed Alt.Net, formed around providing solutions to a number of programming concepts that the .NET framework lacks. Particularly pressing is the lack of an MVC framework for ASP.NET. Fortunately, some smart developers out there cranked out a solution to the MVC problem: Monorail, a replacement for ASP.NET's out-of-the-box Webform architecture. Monorails gained a lot of popularity, but , as a 3rd party product, its adoption has been limited. I mean, most ASP.NET devs out there that I've talked to have never heard of it.

As a side note, I think it's worth pointing out here that if a ASP.NET has disgruntled enough programmers out there to the point where they've band together and created their own framework to fix/extend the current architecture, it seems like a good indicator that something is horribly, terribly wrong.

Most recently, Scott Gu announced Microsoft's solution to ASP.NET's MVC conundrum: the aptly named ASP.NET MVC, which is being bundled into the ASP.NET 3.5 Extensions library.

Yoink! We got MVC Now!

How does this play into Rails? Well, one could claim that Microsoft's implementation of the MVC pattern and associated URL routing structures are freakishly similar to that of Rails. Like really, really similar. It doesn't really bother me that Microsoft is making ASP.NET MVC mimic Rails. In fact, it's a great indicator that Rails is on the right track (pardon the pun). I just wish they'd go a bit further and implement the concept of Rails Partials and also extend the Microsoft Ajax Javascript Extension library to be more like Prototype.

Hmmm... Why Use ASP.NET?

If you've done much Rails development, you'll quickly discover that the majority of Rails developers out there use a Mac as their development platform and TextMate as their preferred IDE. I recently joined this bandwagon, and I will admit that it's a pretty sweet set up. Damn you, Apple, for making your MacBook Pro's so attractive!

Anyway, so one thing that sucks about Rails development, especially if you're just learning, is you don't have access to the all-knowing Intellisense to help you along. The latest versions of Visual Studio, and by that I mean 2005 and up, have some very kick ass, easy-to-use Intellisense that helps out not only with .NET code but with CSS and Javascript. Of course, TextMate has the concept of Bundles, which are very powerful, but basically require memorization of Hotkeys to be useful. There's also the NetBeans IDE for Rails, which has some decent Intellisense, but nothing on par with Visual Studio's.

Another thing .NET has going for it is its immediate availability of "Enterprisey" level things, such as message queuing and transaction scopes. It's also great for working with old Com Objects and the like (*shudder*) This comparison post has more details on the subject.

Another situation in which Rails would be a weak choice: say you need to create a new web app that talks to an old legacy database. The Rails ORM, ActiveRecord, is built around the assumption that your database will be created in parallel with the Rails application and follow a strict set of naming conventions. You're going to run into some major setbacks if you try to use Rails for this scenario. However, with ASP.NET, you can easily use ADO.NET to handle this problem much more quickly and efficiently.

I certainly won't claim to know every situation in which one framework might is better suited than the other. Leave a comment if you can point one out!

Rails Vs. ASP.NET Wrap Up!

I could keep going on this subject, but I'm going to stop myself here. I've talked a lot about the problems I've experienced with ASP.NET and a number of the reasons why I believe Rails is currently a far superior web framework. If I had to slim it down to 3 reasons why Rails is better, they would be:

  • Integrated ORM
  • Convention over Configuration
  • Integrated Javascript Library

If you're currently a hardcore ASP.NET dev, like I used to be, I greatly encourage you to take a look at Rails and play around with it a bit - I guarantee it will be an eye-opening experience. Actually, you might not want to; once you get a taste of Rails, you'll likely not want to go back!

#    Comments [0]

If you missed it, check out Part 1 of my Rails VS ASP.NET series.

At first, I didn't understand what that phrase meant. Convention over Configuration? I guess I'm a little dense sometimes. At some point, it finally clicked. Suffice to say, ASP.NET has a whole lot of configuration, but not a lot of convention.

Before I go any further, here are the components I see as being integral to Web 2.0 development.

  • An ORM tool
  • Unit testing framework
  • Ajax library/Interface
  • Javascript Extension Framework

Rails has all of the above components integrated into its framework. Each component is very well constructed and integrate seamlessly with each other, making for a very slick, easy, and, most importantly, productive developer experience.

ASP.NET, on the other hand, currently only bolsters the ajax and javascript components. which I have issue with. It's not bundled with an ORM or unit testing framework.

Side Note:
Far too many of the ASP.NET developers I've run into don't know what an ORM tool is or what a unit testing framework does. If you're one of these developers, please, please, please!, For the good of your fellow programmers and your profession, educate yourself on ORM's and Unit Testing technologies, ASAP. No one will laugh at you, I promise. We all used to be "that guy."

Yo, What Does This Have to Do With Convention?

Patience, I'm getting there! So, there are plenty of 3rd party frameworks out there to overcome the ORM/Unit Testing deficits in ASP.NET. For unit testing, we have MBunit, NUnit/NUnitAsp, et al. and for ORM's we have LLBLGEN pro, Castle ActiveRecord, NHibernate, et al. The list goes on and on. The result of all this diversity is a very separated and divided developer community. Some developers like to use LLBLGEN, others prefer Nhibernate, and more often than not, the Nhibernate guys hate the LLBLGEN guys (I don't get it!). While all of this diversification is neat because it gives us developers a lot of options, it sucks bad because it introduces a huge amount of configuration complexities.

A Confession...

We're entirely guilty of this at BrightMix. Example: for our ASP.NET projects, we typically use LLBLGEN for our ORM, MBunit as our Unit testing framework, a mix of 3rd party controls (fckeditor, obout controls, nvelocity, et. al.), and an MVC-esque framework that we rolled ourselves.

This setup is cool because:

  • it's highly configured for us
  • we can crap out a new ASP.NET web application pretty damn quickly.

This set up is crappy because:

  • 3rd party stuff usually costs money, at least most good 3rd party stuff
  • configuration and integration of 3rd party stuff requires a lot of time and understanding
  • pretty much no convention

I wonder... of all the ASP.NET developers out there, what percent of them are using a configured set up similar to ours? My guess is probably not very many.

So, Why is Convention Good?

Imagine you're in charge of hiring some ASP.NET developers. Your team uses one of the many ORM and unit testing frameworks out there, a custom MVC framework, and some other miscellaneous add-ons. What you'll find is that most ASP.NET developers have never even heard of your 3rd party stuff, let alone used it. No, the reality is you will have to teach a newly hired ASP.NET developer the in's and out's of your configuration, which is probably going to take a long, long time. The more configuration, the longer it will take.

With RoR, this conundrum is practically eliminated. 99% of Rails developers will know how to use the standard issue ORM, unit testing, and javascript / ajax libraries with which rails is bundled. Talk about a time saver.

I just read through this post after writing it, and it appears as though I have a lot of bad things to say about ASP.NET, and I, inadvertently, have a lot of good things to say about Rails. Blarg! Maybe I'm just bitter after working with ASP.NET for so long and seeing (and writing) so much terrible, crappy code.

Well, my next post in this series will talk about the future of ASP.NET, which gives me a glimmer of hope for ol' Microsoft.

#    Comments [1]

My Roots

My initial plunge into the world of web development started with classic ASP about 3 years ago. I'm sure most developers out there would agree that Classic ASP is not so awesome anymore. Imagine putting VBScript, HTML, and SQL code in a blender, hitting liquefy, and pouring the contents into a ".asp" file. That's, in a nutshell, how most of the classic ASP that I worked with looked. (Obviously, not all classic ASP is this terrible.)

Shortly after doing ASP work for a few months, I was introduced to ASP.NET. I quickly discovered that ASP.NET totally kicked classic ASP's ass; it provided all sorts of cool server-side controls and the power of the .NET framework. Couple that with some tight integration into Visual Studio, and here's what you have:

bmw-z4           AND              junkCar
ASP.NET (BMW Z4)   Classic ASP (Rusted Junk Box)

A year later, Visual Studio 2005 and ASP.NET 2.0 came out and made things even sweeter. A number of outstanding issues in Visual Studio 2003 and ASP.NET 1.1 were addresses and plenty of cool new enhancements were added. How could things get any better? I had become a stanch ASP.NET supporter.

Along comes Rails

Chad Fowler suggests that we developers should try to learn at least one new programming language per year. Not because we may be using a new programming language at your day job, but because it will broaden our minds and give us new perspective and insight into solving problems.

This is exactly what happened to me. I used Ruby on Rails (RoR) to create a web-based IRC-like chatting app. After learning the in's and out's of RoR, I've since returned to writing ASP.NET, frequently finding myself working on a piece of code and thinking, "how would I do this in rails?" More often than not, I end up perturbed and unsatisfied, knowing that rails would allow for a simpler and cleaner solution. Blarg!

Without going into all of the technical details, I've concluded that RoR's is superior to ASP.NET in that it:

  • has a true model/view/controller (MVC) implementation
  • is way better at handling Ajax requests
  • can cleanly handle URL rewriting
  • has as a sweet ORM tool, ActiveRecord, baked right into the framework
  • requires little-to-no initial configuration
  • built-in testability
  • makes it more difficult for the developer to write crappy, inelegant code (note: it does not eliminate the possibility.)

I'll talk be talking about the Convention over Configuration in my next post in this series

#    Comments [2]

ballandchain Alright, this is just a little strange to me... nearly everyone I've talked to about my quitting my job has congratulated me. Ironically, the same people congratulated for accepting the job I'm about to quit.

But anyway, so what's the deal? Am I being congratulated for politeness' sake? For creating a company? For having the cajones to up and quit my cushy corporate job?

Some Intestinal Fortitude is Required

About six months ago, Dusty and I started throwing around the idea of quitting our jobs and making a go of it. It was a scary thought for me back then. But, as time progressed, I became less and less frightful. In fact, it started to make more and more sense.

Some Preparations that Reduced Fear and Risk...

  • I started saving money 6 months ago in preparation. I have enough saved that I could rough it for around 6 months without making a dime; it's a nice "oh shit" buffer.
  • We formulated a few solid software "product" ideas. No formal documentation or anything, but they're ventures that we'd be able to immediately begin work on and probably see quick results.
  • Running some actual numbers to determine how much cash flow we would need to maintain our current lifestyles.
  • Finding clients, contacts, and even lining up some contract work prior to quitting.
  • Last but not least, knowing that starting our own business would be exciting, adventurous, and (hopefully, at some point) lucrative!

What's your story?

As I talk to people who are clearly unhappy employees, I can't help but wonder how many of you are unhatched entrepreneurs. Granted, it's clearly not a profession for everyone. If you're on the fence, or even considering it, I ask you: do you really want to go through life without ever trying the entrepreneurial lifestyle? Worst case scenario, you fail and have to go back to being an employee - whoopty doo.

#    Comments [2]

I just finished one of the Pragmatic Programmer's endorsed books: My JOB Went To India (and all I got was this lousy book). My good friend Andrew recommended it to me. I'm going to give you, my loving audience, a quick book review.

Some Background Info

The author, Chad Fowler, is a veteran software engineer and manager who was sent to Bangalore, India to help build the foundation of an offshore development center for his company. I won't go into all of the details, but he interviews a whole bunch of Indian programmers and makes a lot of interesting observations about the software development industry in India. Then, based on those observations (among other insights), he provides 52 ways us dudes/dudettes here in the U.S. can attain leverage over our offshore competitors.

My Overall Opinion

You can pretty much flip to any page in this book, start reading, and get sucked right in. The focus of the book strays away from the whole overseas competition thing at about halfway and Fowler just details out a bunch of really insightful tips that any software developer can utilize. Although, if you want to learn some ways to keep your current job (especially if you work at a larger company), make it more satisfying, and perhaps move up in the ranks, then his advice will apply directly to you.

Favored Chapter: On Maintenance Programming!

The chapter I enjoyed most was about learning to love maintenance programming. Fowler claims that maintenance work is a blessing in disguise because, often times, maintenance programmers have the ability to show off their talents in a variety of ways. For instance, you can: slip in cool UI enhancements, clean up/remove old code, upgrade the project's code platform to the latest version, and improve performance. On the other hand, if you're working on a brand-spanking-new project, management will probably be much more scrupulous with the time and money they invest into the new project--and they'll probably keep a very watchful eye on you, the developer. A passage from the chapter...

"If I give you $1,000 and ask you to go get me a cup of coffee, I'm going to be very unhappy if you return with 1,000 less dollars and no cup of coffee. I'm going to be unhappy if you bring me plenty of really nice coffee, but it takes you two hours. If I give you $0 and ask you to go get me a cup of coffee, I'll be extremely appreciative if you actually return with the coffee, and I'll be understanding if you don't. Project work is like the first scenario. Maintenance is like the second."

Maintenance work is tantamount to my current job, where I've taken on the maintenaning/enhancing of 3 large applications. At first I didn't like it, but I've really grown to enjoy it. For my applications, I've been able to clean up their codebases significantly , upgrade them to the latest versions of their programming platforms (one is asp.net and the other java), and make the average user experience far, far better; it's a pretty satisfying deal for everyone.

I could go about what a good read this book was, but I'm going to cut myself off. If you want to hear more, go read it yourself!

#    Comments [3]

Well, on Tuesday I will have worked at Securities America for one entire year. Sadly, or  perhaps awesomely, this is the first time I've been employed at a company for an entire year. I was close to a year at Genesis Systems, but fell short by a month or two.

What have I learned?

My supervisor, Keith, introduced me to his laws of life back when I started. They're pretty hilarious and applicable to most situations.

Keith's Indisputable Laws:

  1. Anything free = crap (unless it's illegal).
  2. It's all about the money (AKA, all about the benjamins).
  3. If they say it's not about the money, see point #2.
  4. If they say it's about the money, it's not really about the money.

Nice, Keith, you give me high hopes for humanity...

Banter, Chatting, and Hanging With Your Homeboy Coworkers

Getting along and actually having fun with your coworkers makes my job so much better it's not even funny. I can't stress the importance of this enough. I love my coworkers because we discuss/employ: South Park, Various bad ass movies, Trash talking each other, practical jokes, cursing, etc. If management made us stare at our monitors 8 hours a day, I would have either quit or shot myself after about a week. Having a relaxed workosphere attitude does wonders for productivity and creativity. Not like research hasn't proven this one already. So, management and my coworkers have mostly the right attitude. What I wish could change? Our cubicle farms. They're anti-productive--again with the research.

Thoughts On Getting Things Done...

Over the course of this last year, I've come to the conclusion that if you want something done in the corporate world, don't let the corporate red tape stop you.

Also, if you're waiting on someone else to complete some task for you so you can continue your work (Database Administration, Tester, Documentation, etc.), either do it yourself (my preferred method--but not always possible) or bother someone until it gets done. 

I won't cite any examples, but if you've ever worked in a large corporation as a lowly employee, you've probably been held back by all manner of procedures, guidelines, rules, and red tape that not only impede your progress, but also prevent the company from being profitable. My experience tells me: try not to break the rules, but if you have justifiable means to do so, then the rules will either change or an exception will be grantedThat just seems to be how Corporate America works (I offer no guarantees or promises, though).

Technical Works...

I'm going to make another post detailing out some of the projects I've worked on next. They won't be real specific, as that would probably get me into trouble.

#    Comments [0]

Mads Kristensen over at Traceworks posted a very insightful article on ASP.NET. He's pretty much dead on here about Visual Studio / ASP.NET, with its damnable drag-and-drop designer and various wizards, being very "easy" to pickup and run with if you're a new developer. This is both good and bad, I suppose.

The Good.

Using the Visual Studio web designer is probably fine if you're just dabbling in ASP.NET. Or, if you just want to make a quick-and-dirty application. You can really churn out some crappy code very quickly. So it's got that going for it. 

The Bad.

However, if you're using the designer for anything serious, it's just a recipe for disaster. Without a good understanding of the behind-the-scenes stuff that's going on in ASP.NET, as a developer, you're really limited. To boot, try maintaining some shoddy web app that was thrown together with the designer--I'd rather eat nails.

As Mads indicates:

"I have never seen a professional web developer use the designer for other than personal hobby projects and there is a reason for that."

True Story. I've never worked with or even known a professional developer who uses Visual Studio's drag-and-drop web designer. My good friend, DustyD, set me straight a few years back when I first started professionally coding by telling me to avoid the web designer as much as possible. (Of course, the old Visual Studio 2003 designer also mangled the hell out of your HTML markup.) 

The Worst!

But, I was really shocked after attending the HDC06, here in Omaha, a few months back. One of the speakers, I think it was Steve Loethen from Microsoft, asked the audience in one of his presentations if they've never written JavaScript in an ASP.NET application. An overwhelming number of "developers" raised their hands; it had to have been at least 50% of the room. Sadly, Steve said it was pretty typical for the average Joe developer to never really delve into the behind-the-scenes stuff that takes place in ASP.NET (HTML, CSS, JavaScript, Etc.).

There's some really good comments on Mads's post. This one pretty much had me rolling on the floor laughing (and crying):

"... ASP.NET's target market is not the developer of the next DIGG or FLICKR, it's the corporate enterprise development team that has to crap out some poorly conceived web app dreamed up by a pointy-haired boss. This is, unfortunately, at least 80% of the IT market and ASP.NET covers at least 80% of their needs in its current state, thus its "good enough" for them." 

Needless to say, incompetent and ignorant ASP.NET developers make me a Sad Panda.


Cool Panda Art from Heather Sumpter

#    Comments [2]
I recently broke down a bought another Dell 24" widescreen LCD the other week. I've had a single 24" widescreen for over a year now and it's been awesome. But, I was ready to move up. Dual monitor set ups just kick ass, on principle, for games, movies, work... really pretty much everything.

As far as job performence is concerned, dual monitor set ups kick ass because they increase productivity by helping you organize your work better and lessening the need to swap between applications. Simply put, if your job requires you to spend an absorbant amount of time at a computer, a multi-monitor set up can seriously help you rock the casba.

But, don't take my word for it:

Others concur!

I first used a dual monitor set up on the job a few years back. I had to fight to attain a second monitor and video card for my machine. Then, I sneakily installed the thing myself without anyone's permission. I got hardcore yelled at by my boss, but it was so worth it. Now, it would be painful for me to go back to using a single monitor on the job.

To make Dual Monitors even Better:

Get an App like UltraMon to get a taskbar going on each of your monitors. This will further help you partition and organize your work!

#    Comments [4]

I've been debating whether I should let loose the wrath of my cursing vocabulary on this blog. Thus far, I've been really good - too good for my own good I would say.

The problem is cursing is an integral part of my day-to-day speech. I mean, I don't curse all the time, but if I'm speaking openly, it's just a matter of time before I drop an f'bomb. Honestly, I just don't feel human unless I spew out a few invectives here and there.

I read a lot of blogs - across a multitude of subject matter - and even some of the most respectable bloggers tend to use at least some bad language[1]. Perhaps more importantly, some of the funniest writers, to me, swear without hesitation[2].

"Cursing adds Humor, Meaning, Emotion, Boldness, Depth, Feeling, Etc. to dialogue..." -Me

Personally, I like cursing because it makes me sound like a fucking bad ass. Ah yeah, I'm feeling more bad ass already. Also, it makes whatever you're saying sound 10x more important since cursing is involved. It's god damn science, people.

This article is pretty awesome - top ten reasons why I swear. It works, even though the article is actually against cursing... whatever.

The downside to having an expletive-riddled blog is that it could make me look less credible if I were to, say, reference this blog on my Resume or something. I can just see some high-faluting HR staff member at mega corporation xyz loading up my blog (assuming the company firewall lets them access Zinknation.net, which is doubtful). Two minutes later, they tear up my Resume, with a face full of scorn, and write me off as an unsavvory, racist, child-molesting rapist who steals from the blind and punches babies - all because I had a few curse words on my blog.

Ah... I don't know. That's pretty unlikely. I don't think I want to work for mega corporation xyz, anyway.

[1]

[2]
#    Comments [0]

For those of you who didn't have the opportunity to listen to me bitch about how terrible I was feeling over the past 2-3 weeks, now's your chance. I came down with a flu/cold thing a few weeks ago, which progressed into a pretty bad case of tonsillitis. It was painful and awful made me not want to be alive, but after many Nyquil-induced sleeping nights, I got better.

Anyway, I've been healthy for a few days, and now everyone around me is getting flu/cold like symptoms. I'll admit, this is probably my fault – everyone becoming ill and what-not. My bad, people – I feel bad about that... really I do. But you know why this is awesome for me? I'll tell you why: amongst you invalids, I'm a titan; a titan with an epic amount of cold and flu immunity.

Actually, you all should be thanking me. Once you all are done suffering, you can hop onto your blog, Myspace, messageboard,  or whatever it is you have and proclaim your status as an immunity titan, too.

#    Comments [1]
From the latest in modern eyewear technologies, I present to you a prototype of the modern office worker's glasses.

This pair has been specially handcrafted, by yours truly. It features an elegant solid plastic frame with printouts of some dude's eyeballs taped to the inside of the lens holders.


Now, for a demonstration. Check out these bad boys in action.....

Here, our subject appears to be gazing at the ceiling with the utmost attention, but secretly, he's sleeping soundly.


This prototype pair of glasses has its share of faults, however. There have been complaints that they don't look quite "natural." Future models will hopefully alleviate this problem.

Direct eyecontact with the wearer will give the onlooker a "creepy" or "uncomfortable" feeling.
#    Comments [0]