Thursday, August 31, 2006

TaskSchema Take II

Following on the heels of my last post:

I contacted Jonathan deHalleux, the person who originally developed the MSBCT TaskSchema code, and asked him if he was still updating that project. He answered that he wasn't. So no luck there.

I went ahead and made some updates myself that seems to work.
  • First of all, I added a test class to my local MSBCT project in order to test the damn thing.
  • Second, instead of Assembly.LoadFrom(path), I switched to Assembly.Load(bytes[]).
  • Third, I added some handler code in the part that loads the documentation. I found that if you load an assembly in-memory the Assembly.Location value is null, and the previous code didn't do much in the way of validation checking.
The result? Well, now I can rebuild my solution in the GenerateTaskSchema configuration as many times in a row as I like. I'm tentatively willing to say that the locking problems I had experienced are history.

My next step may be to contribute this change to the MSBCT tree, but first I think I want to poke around in the code a bit more to find out what that whole documentation section does (or intends to do).

Monday, August 28, 2006

MSBuildCommunityTasks TaskSchema

I'm all over the map today with ADHD :)

I am running into a problem that I've run into before: I have included my custom MSBuild Tasks project in the solution, and the project has a "GenerateTaskSchema" target that uses the TaskSchema helper task from the MSBuildCommunityTasks distribution.

The problem is that once you generate the task schema once, you can't do it again because:

Error 4 Unable to copy file "obj\GenerateTaskSchema\Macrosystems.MSBuild.Tasks.dll" to "bin\GenerateTaskSchema\Macrosystems.MSBuild.Tasks.dll". The process cannot access the file 'bin\GenerateTaskSchema\Macrosystems.MSBuild.Tasks.dll' because it is being used by another process. C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Microsoft.Common.targets 2313 9 Macrosystems.MSBuild.Tasks


I think that the TaskSchema task is not releasing its "handle" to the DLL. I don't really want to go poke around in the MSBCT source code to try to fix this, but I suppose it may be worth a look to see what that task is grabbing in terms of file handles, etc.

VS.NET Database Projects

I've decided to more or less punt on the MSBuildCommunityTasks issue; I'll provide the .MSI in source control, in a versioned folder, and allow/require devs to download and install in order to access the goodies contained therein.

Next steps: Database Projects! I have some sample code from another project I did that allows me to do a full, cool MSBuild-driven database build, from the schema on up. However, in porting to this new project (Cornbread), I realize that it is a lot of manual steps. Read that last part as "I realize that it is a very error-prone installation."

Some thoughts:

Provide a templated db project in VS.NET
Create an XML file that mirrors the required elements in the db project tree, and automatically check to make sure everything is there.

There's also a kludgey "shortcut" system I've developed to actually run the build. This requires some local batch files with the various verbosity parameters appended to the msbuild call. I would love to have this all integrated in my solution, and offhand I can't think of a reason why it couldn't be: emit the new .proj file from the solution, manually edit it, create a new configuration or two that calls the right targets, etc. Then, when you want to run your Database build, set the solution configuration to "Database Full Build" (or what have you), and Rebuild. You could link any number of steps, such as Compile -> Database Schema Only -> Unit Test -> Database Full Build in that manner.

Hm. I think I'll go down that path.

Friday, August 25, 2006

Stuck on SCM

I've been mentally "stuck" for a few days while I figure out how best to integrate the MSBuildCommunity tasks into my VS.NET solution / SCM infrastructure.

I think my options are:
  1. Download the source, and add the MSBuildCommunityTasks project to my master solution
  2. Download the .EXE and add it to source control, so developers will need to install this when they set up their machines
  3. Not worry about it, and let developers fend for themselves

I've tried (1) and ran into all sorts of problems with file locking. Plus, I think that there may be some issues with saving the .DLL and .XSD in the right places with the out-of-the-box distro.

(3) is obviously the easiest, but I'm not sure I want to go there. Part of what I'm trying to do is automate / idiot-proof this project as much as possible.

I may go with (2) to start with.

Monday, August 21, 2006

VS.NET and Vault

This task is complete.

Next up: I know I said Draco.NET, but I really need a "Test" target / configuration that allows me to run all the unit tests automatically.

This will do:

Build > Test

Because it doesn't make sense to just Test with a potentially broken build.

Vault Source Control Structure

Here's my partial source tree:

$/Smalliron/
Cornbread.Solution
Cornbread.Components
Cornbread.Components.Test
Smalliron.Solution
Smalliron.Components
Smalliron.Components.Test
TheSeattleReader
TheSeattleReader.Solution

First task is to share out the *.Components* projects from Cornbread and Smalliron to the "TheSeattleReader.Solution" tree.

OK, this time for real

I find that I am the type of person who must subconciously enjoy "paralysis by analyis," or else why would I engage in it so frequently and predictably? Perhaps it's my perfectionist streak.

At any rate, this is one software engineer who will say "ENOUGH!" Time to get down to the actual execution of the vision, even an incomplete and improperly documented vision.

Today's task: get the VS.NET projects / solutions set up properly, checked in to Vault, and set up Draco.NET to do continuous integration builds properly.

Saturday, August 12, 2006

Why I Work

  These two (along with my wife) are the reason I work. Audrey just turned two last month, and Will is going to be three in December. My Munchkins! Posted by Picasa

Example Sites

I discovered Multiply.com after reading about it in InfoWorld. The editing panel was shown in an picture. It looks pretty straightforward, which is nice, and helps me start to sort out the big initial question: How do I model the data on the site?

For example, any of the following entities might be subject to editing:

News Articles
Interviews
Blog Posts
Picture Libraries
Book Reviews
Journal /Magazine Details
Events

This is a pretty broad group. Normally, in days past, I would have modelled all these separately. I wonder if it doesn't make more sense to try to meta-model all of the common elements (if possible), which might make the system more testable and extensible.

Friday, August 04, 2006

The Technical Architecture

This will come as no suprise to anyone who knows my work: Visual Studio 2005, SQL Server 2005, ASP.NET 2.0, C#, Atlas, etc.

These are the well-sharpened tools of my personal trade and I think it would be foolish to try to learn a completely new system, i.e. Ruby, for this effort.

The Goal

The goal of this effort is nothing less than:

The best content management and information marketing system available for small-to-medium sized businesses.

I've always been a great thinker, and a mediocre executor. That will change with this effort.

What does that mean, considering I'm working alone (for now)? It means lots of attention to automated quality control, and automated SCM (software configuration management).

Day 1 of The Seattle Reader

Hello readers!

I've come to the conclusion that my current job environment is not going to be a great long-term place for me.

This means I need to start thinking about the future, and now.

My talents and skills like in software development, programming, and architecture; I (humbly) believe that I am as capable as almost anyone else around in these fields. On the flip side of the coin, my interests and passions lie in philosophy, the arts, and literature; my secret wish is to one day write novels that will remind readers of Pynchon, Irving, and Roth.

Therefore, effective today, I'm starting a new 5-month project to bring The Seattle Reader to fruition. This will be a massive content-management, publishing, marketing, and commerce engine, whose initial public incarnation will be a literature-oriented portal aimed at the Seattle / Pacific Northwest arts market.

I think that the combination of answers to "What can I do well?" and "What interests me?" will be just the thing to help me build my future career.

Stay tuned.