August 2007 Blog Posts
SharePoint Spaghetti

Everyone who codes is familiar with the concept of 'Spaghetti Code', and pretty much anyone who codes can bring to mind all those unfortunate instances when we wrote such code (you know, before we got good and stuff and so never ever produce it now.....).

I think I've determined that there is a similar phenomenon called 'SharePoint Spaghetti' which, of course, relates to Microsoft's document management system called SharePoint Server.

Document management has always been, and as far as I can tell, will always be difficult.  An organization wants to manage the seemingly endless stream of Word and Excel documents (mainly these as far as I can tell) that get passed around through email and file shares, and so a tool like SharePoint promises to make things better.  Right.

What happens, of course, is that an almost unmanageable structure of sites, sub-sites, sub-sub-sites, etc. gets created.  SharePoint has pretty robust versioning capabilities.  So, of course, someone just renames the particular Word or Excel document they want to modify (since someone else has it checked out) and uploads it.  Occasionally to the same site, but often not.

Do you have a question about how a process should be followed?  "It's on SharePoint."  Is there a server list that tells you which environment has which servers?  "It's on SharePoint."  And so on and so on.  No one, in general, knows precisely where in SharePoint some particularly important document is, it's just 'known' it is there.  Somewhere.

This isn't to say that SharePoint can never be used effectively.  When it is my sub-sub-sub-site, it works really well. 

I'm just not sure if it is ever used effectively otherwise.

posted @ Thursday, August 30, 2007 8:28 PM | Feedback (0)
Minor Update about Musical Memory

One of my favorite bands is Marillion.  They've produced a couple of my most favorite albums ("Daddy, what's an album?"....all right, all right, releases), including Misplaced Childhood and Clutching At Straws from the Fish era (their original vocalist was named 'Fish' which seems really bad until you understand his given name is Derek Dick...not that someone with a last name like 'Nuechterlein' can say much here, but still), and Brave and Marbles from the Hogarth era. 

But, unfortunately, they've also released a bunch of work that, well, kind of sucks.  Not necessarily bad, but definitely boring.  Which is just about as bad as being actually bad.

In my view, their current release, Somewhere Else, is one such effort.  Except for the title track, which is great, the rest of it is pretty boring.  I've listened to the entire release in total, once.

Their guitarist, Mark Rothery, doesn't have an obviously distinctive sound like, say, Edge or Yngwie or Van Halen, where you can identify them almost immediately from their sound.  So, there's no obvious give away.

Keeping this in mind, and keeping in mind I've listened to none of the tracks, except the title track, more than once, the other day, I knew within a second that a song was one of the others and so could skip it.

Similarly, there's a band called Dream Theater that I read about here, in the same way that I discovered Porcupine Tree, another band that's been around for at least 10 years that I had never heard of, and now love.  So, I went to Amazon and got one of their releases that was highly rated.

It wasn't bad, but it just didn't grab me the one time I listened to it.  Having only listened to it once, I can't say if they have a distinctive style or not.  But in shuffle mode, I can tell, as I did the other day, when a song from them starts to play, and know that I want to shuffle past it.

As I start to learn NHibernate HQL and LINQ, I struggle to 'get' the syntax patterns they use, even though they are both related to T-SQL which I generally know quite well.

And I wonder out loud again, what is it about music that allows me to remember particular instances of music that I've only heard once or twice, or whatever 'patterns' they possess, yet not have the same immediate recognition of code syntax patterns.  If anything, code syntax patterns are more rigorous. 

posted @ Thursday, August 30, 2007 8:00 PM | Feedback (0)
Entity Framework Beta 2 Released

Get the info and download links here.

A TON of info about how it all works can be found at Mike Taulty's blog.

posted @ Monday, August 27, 2007 7:16 PM | Feedback (0)
NHibernate Nunit Config Tip

From here:

If you create an Nunit project to do integration testing that hits a database, and thus need a config file, make sure you put them in the same directory, and name the config file appropriately, e.g.:

Project: c:\Projects\AllTests\AllTests.nunit

Config: c:\Projects\AllTests\AllTests.config

posted @ Monday, August 27, 2007 10:06 AM | Feedback (1)
Musical Memory

I'm not sure what the actual name for this is, so I'll just go with 'Musical Memory.'  There will be a connection to programming.  Sort of.

I'm sure people have heard of the phenomenon called 'Photographic Memory.'  I have no idea how real or widespread this is, but I've experienced instances of what it must be like.  Unfortunately, they have been random.

The most obvious to me was one time (at band, no, that was something else) in graduate school when I was taking a final exam for one of my courses.  There was a question that I knew I should have known, but simply could not remember how to even begin to answer it, in large part because I had somehow overlooked studying for that particular question.  I let it go for a while and then came back to it, and still drew a blank.  And then, a few minutes later, I could picture in my head a presentation that one of my classmates (Rosa Mayorga (think that's the right spelling)...not sure why I remember her name) had given 3 months previously, and could remember what she had written on the blackboard.  Not her actual presentation (in terms of anything she said), but what was on the board.  Once I had that to begin with, I knew enough about the subject that I could expand on it, and/or otherwise wing it.

So what does that have to do with music?

It isn't photographic memory quite, but I can tell, from as little as 1 second of the beginning of a song, what song it is and who it is by.  Now, I'm not just talking about the songs that I really like (though obviously, there is a lot of that on my music player, a 8 GB Creative Zen V, I don't want an iPod, and I have a fantasy that there will one day be a commercial that shows silhouetted figures dancing with iPod headphones on and then cut to their strangled silhouetted bodies, but I digress), but any song that I have heard over...X number of times.  I don't know what the threshold for X is here.  More than once, less than a hundred.  And I can't prove this, and don't really care to, since that isn't the point, so just go with me on it.

This is very useful since I keep my player in shuffle mode 85% of the time, and I have a lot of crap loaded on it (you can fit a lot of WMA files in 8 GB), and sometimes, I'm just in the mood for certain songs (though not necessarily any particular ones), and so I can shuffle through the songs without looking at the display, and know which song is which.  By which I mean, I can hear one second of, say, some cut off of Brian Eno's Another Green World, determine which one it is, decide if I'm in the mood to listen to it at that moment, and if not, move on.

There are certain songs that are more difficult than others.  The very beginning of Blondie's 'Heart of Glass' and Roxy Music's ' Same Old Scene' are very similar, so I need 5-10 seconds or so to get it.  But for the most part, it is 1-2 seconds.

And in certain cases, and here's where the random part really factors in, I can tell in 1 second which verse a song is in if I cut to it (say, while switching between radio stations).  Just using an example, and why this song is one of them I don't know, I can tell within 1 second (it seems immediate to me, but there must be some delay) between the chorus and verse of U2's 'I Still Haven't Found What I'm Looking For' if it is right before the Jesus' verse (the last verse of the do know the song is about Jesus, right?).  I've sort of tried to figure out why this is.  It isn't something obvious like a guitar solo in the middle of it.  I don't recall if I have to hear a particular 1 second part of it or not.

One of the reasons this is on my mind is because I've discovered that this ability, or some form of it, is ...... 'proactive' (I know that's not the right word at all, but it gives the general flavor of what I mean).  Lindsey Buckingham has an album (that sort of gives away my age...."Daddy, what's an album?" I told someone today, I'm old enough to remember when SportsCenter was good and MTV played music videos...which indicates I'm not *that* old, but I digress) called Under The Skin and there is one particular song that I liked off of it called 'Down On Rodeo', so I was looking at the various reviews of it on Amazon to see what other people had to say about it.  One person was lamenting that the song really needed to be played by Fleetwood Mac.

And I knew he was wrong.  It was Fleetwood Mac.  Or at least, Mick Fleetwood and John McVie (I suppose having the girls singing background vocals would be a nice touch).  I was once a mediocre guitarist, so I know that in certain cases it is obvious to tell what guitarist is playing on any given track, but I have no idea how I could tell with bass and drums.  And I didn't time it, but I'm pretty sure I knew they were playing on the track almost immediately, which I was able to verify on some discography page ("It's on the web, so it must be true").

What does this have to do with programming?  Admittedly, next to nothing, except for this one thing.  I am horrible with code syntax.  Horrible.  I've probably worked with T-SQL every work day for the last 5 years at least, and just the other day, I had to ask someone for how to write specific syntax for an EXISTS clause because I just don't remember that stuff.  Without Intellisense and Google, I literally don't think I could do my job for my clients (my Google skills are, apparently, tremendous....there was once a production problem that some people were having, and they were using Google as well because they were at their wits end, and they asked for my help.  I looked at the error message they were getting, knew which parts of it needed to be cut out, which parts adjusted, went to Google, and came back with the solution in about 5 minutes.  Later on, one of the guys, a decent guy, not an amateur, asked me how I knew what to look up, and I had nothing specific to tell him.).

And I the hell is it that one part of the brain can identify patterns almost instantaneously and yet another part can't identify another?  EXISTS clauses aren't that difficult.  Why can I, in certain cases, hear the very first note of a song, and know exactly who the artist is and what the song is?  Is there some way to 'train the brain' to pass this ability around?

Just wondering.

posted @ Tuesday, August 21, 2007 6:26 PM | Feedback (1)
Error 29109: Team Foundation Server Installation

"Product: Microsoft Visual Studio 2008 Team Foundation Server Beta 2 - ENU -- Error 29109.Team Foundation Report Server Configuration: SQL Reporting Services configuration encountered an unknown error. Verify that you have sufficient permissions to configure SQL Reporting Services, and try again."

You can also get this error on TFS 2005, apparently.

My solution to the issue was pretty simple.  I had installed Reporting Services first, and then Sharepoint Services (WSS 3.0 to be exact) afterwards.  WSS 'hijacks' the default web site, which is where the virtual directories for Reporting Services had been installed, and so the TFS install couldn't find them.  I reran the configuration for Reporting Services (in Start Menu in the normal place under SQL Server 2005 entry) and moved the directories (the configuration tool did not indicate there was an error at all, which was initially confusing) to the WSS enabled site, and the installation proceeded correctly.

posted @ Thursday, August 16, 2007 7:35 AM | Feedback (0)
Would a 'Ubiquitous Language' actually help?

From various sources, the idea of an ubiquitous language seems to be a central part of BDD (Behavior Driven Design), where a dedicated effort is made to ensure that the business driven parts of a company are aligned with the development driven parts of a company in terms of a common vocabulary.

Joe Ocampo does a very good job of describing this at a high level here.

But as I suggest in the comments, I'm not sure I buy it.  Not exactly any ways.

It is certainly true that there is often (per my comments, I would say 'practically always') a disconnect between different parties when trying to enunciate and understand requirements.  To use the same example I mentioned in the comments, in a not so distant meeting, the word 'Audit' played a key role in some discussion. 

Now, clearly, at a very high-level, just about anyone can understand what someone means when they say they want auditing functionality added to an application.  But you still have to lay out those requirements in some detail to make them actionable, and so having a common vocabulary where the terms within the organization are clearly defined across functional units certainly can't hurt (or at least you wouldn't think so).

But would it really get you anywhere?   What it means to have an audit trail from a database perspective is significantly different from what it means to have an audit trail from an application perspective, and meeting the requirements requires a lot of implementation knowledge that a business user simply isn't going to have (unless they are also technically inclined).

The standard ATM example that is used to describe BDD and how you could create specs and whatnot is particularly compelling, not only because it seems like a 'holy grail' of some sort, but because it involves basic math.  Anyone can understand the concepts involved.  Which is good, as a more complicated example would get in the way of explaining BDD itself (this is a complaint I have/had with a few of Fowler's examples...they were so obscure to me that the example itself got in the way of what it was supposed to be an example of).

But when you start getting into harder cases, then I'm not so sure.  Even the specs could become difficult to write, in any way that was of use, or, more clearly, that got around the difficulties of implementing the requirements.

In the case of the 'Audit' example, as someone who barely understands the system, I have to pay very close attention to what everyone says, and ask a lot of questions.  And it was clear to me almost immediately that there was a bit of a disconnect.  But in the end, the real difficulty is that the architecture of the system simply can't implement what was asked for, for almost purely technical reasons.  And the explanation of that real difficulty isn't something that I can see a 'ubiquitous language' helping with.

And I would be concerned with all parties having to 'dumb down' what they actually mean into terms that could be more commonly understood.  Would your 'ubiquitous language' end up being just the lowest common denominator?

Having said all that, I am intrigued by many aspects of BDD.  And since I have something I can greenfield, I think I'm going to try it out.

posted @ Wednesday, August 08, 2007 6:56 PM | Feedback (0)
DTS: Data for Source Column X is too large for the specified buffer size

Basically, hack the following registry key:


I would use a value of 0.

posted @ Monday, August 06, 2007 9:36 AM | Feedback (0)
Moving LittleTidbits Content over

I'm going to be moving over the content from LittleTidbits.  I think.  Somehow.  In any event, due to 'technical difficulties' I'm pointing that domain here till I figure it out.

posted @ Sunday, August 05, 2007 5:08 PM | Feedback (0)
Orcas Beta 2: "Strong Name Validation Failed" IIS Debugging

The fix for this can be found here:

Basically, you run a cmd line command using the sn tool (comes with VS 2005 and/or the .NET 2.0 SDK):

"<path_to_sn>\sn.exe" -Vr "%ProgramFiles%\Microsoft Visual Studio 9.0\Common7\IDE\iisresolver.dll"

However, you also have to enable Windows Authentication on the site in question.

posted @ Sunday, August 05, 2007 4:49 PM | Feedback (1)
Using Typed Datasets with Microsoft's Enterprise Library


Title: Strongly Typed DataSet (to Rosie)   
Name: sloan
Date: 9/7/2005 6:33:54 PM
Public Function TitlesDSGet() as MyStronglyTypedDS

dim returnDS as MyStronglyTypedDS = new MyStronglyTypedDS

Dim db As Database = DatabaseFactory.CreateDatabase()

Dim dbCommandWrapper As dbCommandWrapper = db.GetStoredProcCommandWrapper("dbo.uspTitlesGetAll")

db.LoadDataSet(dbCommandWrapper, returnDS, New String() {"Titles", "Publishers"})

Return returnDS

naturally, this example has the strongly typed dataset having 2 tables "Titles" and "Publishers", and the usp will return 2 result sets.

I have only tried that code on Sql Server 2000, fyi.

posted @ Wednesday, August 01, 2007 2:33 PM | Feedback (0)
Good overview of MVP/MVC Design Patterns

I prefer MVP myself.

posted @ Wednesday, August 01, 2007 10:54 AM | Feedback (0)