Thursday, July 12, 2007

ScoutNet .. err... I mean ScoutOffice

One of the current side projects I'm working on is developing a website for my Boy Scout Troop. Scouting is defiantly and dismally in the stone age. It's pretty depressing. So I started working on this website. I think it should cover both the public-facing aspects as well as be a record keeping tool.

I've actually started and stopped work on the project several times over the past few years. That's the thing about my side projects... they rarely make it to completion. It's a nice fad for a period of time, but the novelty eventually wears off and some new obsession takes its place. Hopefully I can be a little more committed to this one.

I would like to continue reporting my progress in my blog. Sort of a development diary. I love those YouTube videos that show someone's progress building a huge Lego structure over time. The closest approximation to that I can make (without opening the project source and having it make much less appeal to a reader) is here I suppose. Perhaps someday the project will merit its own site.

So one of the first things to conquer is the tool set. I've been fighting with them for a day or two. I have a few major requirements:
  • stay legit (don't pirate),
  • WYSIWYG (or at least the Cassini developers' web server) web form editing,
  • and have the ability to unit test the most code possible.
I started with Microsoft Visual Web Developer Express. It covers the first two requirements. However it does not (or I have not found a way to) compile the site into dlls. What's the problem? You can't unit test a project that can't create dlls. At least that's how NUnit works. Perhaps there's another free .NET unit testing platform that can somehow negotiate web projects.

I fired up Microsoft Visual C# Developer Express. This would give me the first and third requirements. I was even able to publish the class library dlls into the web project! However it was really a sloppy mess and it didn't feel right.

While doing some reading I stumbled across sharpDevelop, a free and open developers' IDE. It said it offered WYSIWYG form development and the ability to compile web projects. I could sense my dreams coming true. Boy I was off! I run it for the first time and instantly feel like I'm using a horrible knock-off. It has integrated NUnit testing and some other nice features. However upon closer examination, I see it does not do web form development - it does windows form development. I merely dabble in ASP.NET. I need some WYSIWYG or Cassini action!

So back to the Web Dev/C# Dev I went. I fought with the solution and project files for a good while. I managed to get them into locations I can cope with. I have the web form editing and the unit testing. All is well with the world.

Two other issues presented themselves while working last night however. I needed to name the solution! Naming a solution often correlates to the name of the "product" itself. I really wanted to name it ScoutNet (a la Terminator movies) however BSA actually has a (really crappy) platform called that (don't worry - we're in no danger). With that name taken, the next best thing I could think of was ScoutOffice. It's only a matter of time before Microsoft comes knocking on my door (/eyes).

The other issue I found was a bit more technical. I started working on membership functionality first. I wanted to create new users. And I was trying to be slick and override the System.Web.Security.MembershipProvider since that's supposed to be an easy route to insta-membership functionality. It is pretty slick, but it requires I use the System.Web.Security.MembershipUser. Ok, so I make my user a child of that. But by doing so, I set up the dependency that all of my lower tier projects need System.Web. That's just not acceptable. So I guess I'll be writing the membership functionality by hand.

Since this is sort of the inaugural post regarding ScoutOffice, if there are any readers out there let me know what you think. If you have any features that you think would be cool to add pass them along.