Tuesday, May 25, 2004
Nant for biztalk

This is something we have known we would need to look into, but have been pushing it off for now.  Looks like we may have pushed it off just enough.  Here, Scott Colestock speaks to using nant with biztalk. 



ccnet not catching Nant.Core.BuildExceptions , xsl change to catch

Last night a developer added a lib to the project and accidentilly checked it in.  Of course there was no dll on the build machine, and the build failed.  I looked at the ccnet email and site, and saw the build failed, but no details.  I started to comb through the xml file, and relaized that compile.xsl was not catching anything in the <builderror><message>, just what was in <buildresults><message> where the word error or warning appears (' error', and ' warning' in my edited xsl). 

I made a simple change to the xsl and now we are displaying these errors too.  Change is below.  I think ccnet needs a central place to handle xsl's, though, since every change I make to the xsl needs to be made in 4 places at this point  :)

<xsl:variable name="error.messages" select="(/cruisecontrol//buildresults//message[(contains(text(), ' error') and not (contains(text(), '0 error')))]) | (//builderror//message) " />



Test from new VisualBlogger

Welp, unarchived my new visualblogger into a new directory (versioned .net programs folder) and it found my old config.  I'm assuming settings are stored in isolated storage.  Post from the new beta to see if I can edit the post.  I was wrong, though, I am setup as DotText95 not DotTextSimple.

update : works with the new version setup a dottextsimple



New visual blogger

There is a new visual blogger beta out.  I'm posting this with the previous version, but that'll change quickly  :)  Check it out here.



nant ccnet BoF at teched and some ccnet files

Peter Provost posts some info about a BoF he hopes to have at Teched, and some sample build info.  Wish I was there, I would def attend.  If you follow my blog at all, you would know I'm often neck deep in out build process.

After reviewing Peter's script a little bit, there are a few things I really like about it.  I really like how almost everything is in a property.  I tried that in my initial build scripts, but as I moved on and on found myself moving away from it as the build files got more complex.  Unfortunatley I conceded to the complexity, but would like to go back through and utilize some of these ideas. 

We actually use an FxCop file at this point, which I would like to move away from.  The main reason we use those now is since we have some custom rules that replace some in the box ones, although I'm sure there is a way to represent that on the commandline. 

I don't think I quite get the ccnet bootstrapper yet, but am going to look at that more tonight.  I'm really glad to see these products getting more attention though, they are a really nice set of tools.  Everyone also keep your eyes open, I have an article on a complete build system with a complete end to end sample on the editors desk, so it should hopefully be published soon.  Maybe I'll write and release a followup here implementing some stuff from Peter.



 Monday, May 24, 2004
FxCop, Introspection, and a custom fxcop rule

After using FxCop to analyze some assemblies, it became quite apparent the value FxCop provides.  Thanks to FxCop, our upcoming code reviews will be focusing on reviewing code, not coding standards.

After we all started cleaning our respective sections, though, we started to find some of the default rules that just we're not right for us.  Without thinking, or really knowing what was entailed in making a new rule, I volunteered to get our new rule implemented.  I knew FxCop was expandable, but didn't know how.

After a bit of research, I found FxCop uses 2 engines for it's analysis.  Reflection, and Introspection.  Introspection?  What’s that?  Here is a good 5 cent overview of reflection and introspection from .NET Undocumented.

So the search was on for a way to implement this new undocumented introspection.  Exciting stuff.  The first link I found was this article by the BugSlayer.  Excellent article that covered everything I wanted to know, and more.  The next thing I found was 1 post on the GDN forums that provided a complete, almost working base rule.  After playing with that, and some help from the author, I got it to work, and posted my results to the forum.

So now we have a couple custom rules, and will be adding more.  The links here should help anyone in search of the same. 

 



You thought you knew about small form factor

All I gotta say is wow.  I need one of these.  Although reading blogs while driving, well, you get the idea...

In dash complete P3



Visual Blogger Issue?

I may have found some sort of issue with either .Text or visual blogger.  I will have to look into it a bit more.

When I create posts via the .text admin site, I never ever have a problem.  It seems like, though, about every other post I create with VisualBlogger causes an "object reference not set to an instance of an object" .Text error when I go to edit the post in .Text. 

Anyone else seen this?



Sauce Reader Trial

Over the weekend I saw a couple people posting about Sauce Reader, so I figured I'd give it a shot.  I liked the idea of being able to post from within the tool, and it looked like a very polished tool.

I downloaded it, and moved my OPML.  My first impression was pretty bad when it took about 15 to 20 minutes to process my opml.  I let that go, and continued to try it out. 

All in all it was a very functional reader, but left quite a bit to be desired.  I missed my tabs from rssbandit, as well as the thread view in the aggregator.  I couldn't get posting to my blog to work, and the worst part, my thinkpad scroll button didnt work in any of the panels.  It also had the tendency to leave dialog boxes behind the app requiring an end task.  The memory footprint was also larger then rssbandit.

I did really like the manual sorting of feeds, as well as the diff icons for feeds and folders. 

I switched back to rssbandit and visualblogger for now, although I will keep a dog ear for that app in a few versions.  My opinion now, still needs some refinement, but has promise.



 Friday, May 21, 2004
Thinkpad T42p

I love my thinkpad.  I loved my thinkpad before this.  And I will love my thinkpad after this.  My wife even approves of my affair with my thinkpad.  Links like this make me wish my T30 was an e600 and it was time to upgrade.  Link to gizmodo preview.

Top drool factor
Finally a 15" on a T series
Make that a 1600x1250 15" screen
ATI Mobility Fire GL2

I gotta stop reading this, otherwise I might sell my car and try to drive a new T42p home.



/warnaserror and ccnet

Our ccnet was displaying a number of /warnaserror messages in our build notifications, even though the solution had no build errors or warnings.  We started digging through the files, and realized that this was because our project was set to "enable build warnings" in the build section of the configuration manager, which was supplying /buildaserror to the commandline.  This would get picked up by the ccnet xsl since it was looking for 'warning' or 'error'. 

To fix this, we changed the compile.xsl to look for ' warning' and ' error'.  The initial space stopped catching the /warnaserror arguments, but still catches real warnings and errors. 

Related question, who's using the <solution task vs. the <csc / <vbc tasks in nant? 

 



c# edit and continue, the debate roars on

I had two posts about this last month.  I saw a newsgroup posting claiming it would have e&c, and then some more material saying no way.  Now the buzz is up again, and who know what could come of it.  Check the details at Bill Evjen's Blog.

Although I do more vb.net professionally then c#, I am still a c# guy at heart.  I think E&C in c# is a huge feature, that I would love to see.  I've read the arguments (and heard thanks dnr) about c# debugging sessions being "different" then vb.net, and I just don't buy it.  This argument might fly for the c++ camp, but most of the c# developers I know came from vb, so they were used to having it. 

My vote, get it in there if possible.  There are a ton of great new features slated for c# 2.0, but this one is pretty important too, at least in this developers mind.



 Thursday, May 20, 2004
Nunit 2.2 beta.. mmmm new stuff

Was out and about, and saw a post over on Barry Gervin's blog about a new nunit.  I've been doing more and more with nunit, staring at (hopefully) green lines all day long.  Can't wait to dive into some of this.  Categories seem very nice, as well as the explicit feature. 

I also have some ideas on an nunit addon for easing database development testing.  Some of the things that come to mind are
DBAssert.IsEqual(tablename,whereconditions(),fieldvaluetomatch)
Attributes for sprocs or inline sql to run on the way in, and out of a method
DB.Run(ArbitrarySql)

Amongst some others that I will gather and post.  In my head, I see DB testing as a huge hole in nunit, that could be rather simply solved.  Making it easy to check db values, and abstract some basic DB operations in your unit tests would really help alot.  Of course I don't expect any of these ideas to be the holy grail of DB unit testing, but would at least help in the projects I have been on.  Just even a simple way to check that any given CRUD operation succeeded or failed would help for the majority of DB unit testing.  Anyone had any thoughts on db testing?

Get the latest nunit here.



First post from VisualBlogger 2004
Trying out visualblogger.  I'll post a few and then my thoughts on the app  :) 


 Friday, May 14, 2004
dot in a Database Project

I spent about 45 minutes on this one, and could have just slapped myself silly at the end.  I was trying to re-create a database on my thinkpad from a vs.net database project.  When the dialog popped up asking where to run, I would tell it . (dot), and the database name.  It would get through the first few commands, and bail on the bcp. 

I never even thought to try something but dot.  I always use dot.  I like dot.  Dot is my friend.  But, bcp doesnt seem to like to address a local DB as dot.  Just a word of advice for anyone who may be using dot to specify local host, and can't figure out why the db project loads on their neighbors box, and not theirs. 

And for those of you that don't use a db project to manage their db and sprocs, get on it.  Very very cool feature of the IDE, especially when you factor scc in.

 



 Thursday, May 13, 2004
New take on TDD?

Was reading this morning, and ran across this post on Datagrid Girl's blog.  What a fantastic idea.  My mind immediately started rolling, and in a perfect world I see this app that writes testfixtures for a product development or QA group, and ties them all back to use cases/functional requirements.  Talk about true synergy between teams.  This will be floating around in my head all day now I think.

/me thinks about a possible Enterprise Architect plugin for just this.. hmmm

 

 



 Wednesday, May 12, 2004
Nant, nunit, and config files

I've been stabilizing our build process at work, and have found some oddities in using nant and nunit.  The issue's roots seem to come from handling of config files.

Here is what's happening.  We maintain a “program” solution, and a “test” solution.  The program solution has its own config file, and we needed a way to have the test solutions also carry a config file.  We tried a number of different ways, but ended up using a test.config, which the testfixtures copy to assemblyname.test.dll.config for automated testing.

The nunit2 task in nant supports providing a assembly, and a config file.  So I went from using a fileset including **.test.dll, to using a number of <test> tasks, each individually specifying the assembly and the config file.  This seemed to get close to working, but would still intermittently throw odd errors that I couldn't track down.  The part that gets me, is calling nunit-gui or nunit-console on the same assemblies would not throw an error.  Looking into the nant code, we saw that nant creates a new appdomain, and that’s why when using the nant task you must specify the config file, but it doesn’t seem to work, or at least not reliably.

After hours of mucking around with config files, and tasks in nant, I finally broke down and added an <exec> task calling nunit-console for each assembly we wanted to test.  It is not as dynamic as I was shooting for, but now it seems to work very reliably, so I am willing to sacrifice flexibility to reliability in this instance.

My question, though, is who else has seen behavior like this?  We have the nunit2 task working for assemblies without config files, but with them it just doesn’t seem to fly.  Anyone else notice this?

 



 Sunday, May 09, 2004
IceIP Beta2 Released with source

Just put out a new version of IceIp, now with c# source.  Get the details over here.