VFPConversionLogo
HomeBlogLearnProductsEventsServicesAbout UsFAQ
Mike Yeager's Blog

Thursday, July 13, 2006
Tiers are good, right?
I did it again, spent the better part of a day adding ... a checkbox to an existing application.  I know what you're thinking, "This must have been one important checkbox!.  The Launching of the space shuttle must have hinged on this checkbox!"  Well, no, it didn't really DO much of anything, it just sort of let people check it and uncheck it and limited what they saw in a couple of grids.

No I'll be the first to admit that I'm not the world's fatstest programmer, but this is even slow for me.  What just happened?, I asked myself.  Unfortunately, I ran into a "very well designed application".  Naturally, I needed to add the column to the SQL Server database.  No problem, 15 minutes (counting finding the correct db server and getting approproate access).  Next modify the stored procedures the application uses to access the database.  Not so bad, 20 minutes looking at the huge list of sprocs and determining which ones might be affected, followed by about 60 minutes of changes and testing.  Some of the sprocs needed new parameters because they might now limit what they return to only records that have this box checked.  All of the sprocs needed to have the new column added to the SQL statements and one sproc needed logic changes to determine if it should update the new column.  Next, modify the business objects to handle the new column.  Minmal changes here, except for dealing with the new parameters in several places.  The business objects just handle conversion between the back end database and local DataSets for the most part.  40 minutes.  Next, the business logic layer.  Sort of the ORM layer where the business object's DataSets are translated into .NET objects, where rules are enforced, etc.  The brains of the operation.  Another 40 minutes. 

Finally!  I can make the changes in my application to use my new boolean value!  I am psyched at this point, the tension is mounting...  OK, it's an ASP.NET 1.1 application and the checkbox is supposed to live in a grid and only be available if the logged in user has sufficient security credentials.  DataGrids in 1.1 don't really support checkboxes, so you either have to program it or add a "Template Column".  I go with the Template column, 90 minutes.  Dealing with the eccentricities of the DataGrid costs me another couple of hours and I have to bother a couple of fellow programmers to find the work-around.  Now, to remove the column if the user doesn't have sufficient security, OK, so you can' t do that, can I at least make it invisible?  OK, done, another 40 minutes.

Now alpha testing, about an hour, static analysis with FxCop, another 15 minutes, updating the NUnit test code and running the tests, another 20 minutes.  Time to post to the testing server.  Did I mention this is ASP.NET 1.1?  Another 30 minutes...

What happened?!?!?  Two things happened 1) ASP.NET 1.1 and 2) 5 layers of application

I won't go into my feelings on web based applications today.  5 Layers of application?!?!?  Awesome!  Just the way it's supposed to be done.  Object oriented, black box, tiered, secure, well designed!  Unfortunately, my check box made it necessary to modify all 5 layers that day.  3 distinctly different skill sets were needed.  The resulting testing was a bear.

I've got to go now, I have another checkbox to add... <s>

Posted @ 9:37 AM by Yeager, Mike E (myeager@eps-software.com) - Comments (11)


Tuesday, July 11, 2006
Sql Server 2005 Beta Relief

Who didn't install the VS2005 beta?  We all did.  Unfortunately, getting rid of the beta and upgrading to the RTM software doesn't always go as flawlessly as I'd like.  I had remnants of this that caused Visual Studio to not work as well as it should.  Most recently, when I tried to view a class diagram, I realized that this didn't work on my machine.  I got this message: "The Class Diagram Service Failed To Load".  I found this post from Aaron Stebner on the MSDN forums, including a utility to find remnants left over from beta installs of VS2005 and get rid of them.  After running the utility, then repairing my installation, it worked!

 The items that you list, especially the 2 assemblies with no version information, are known problems in VS 2005 beta 2.  Those files will be left behind if beta 2 is uninstalled in the incorrect order.  You can use the cleanup tool I have posted at http://astebner.sts.winisp.net/Tools/ttool.zip to fix these issues and update the unversioned assemblies with versioned ones.

I've also described the issue with those 2 unversioned assemblies at http://blogs.msdn.com/astebner/archive/2005/08/27/457248.aspx.

Hope this helps....



Posted @ 3:21 PM by Yeager, Mike E (myeager@eps-software.com) - Comments (5)


Tuesday, July 11, 2006
What's the best kind of documentation for frameworks and tools?
One of the big disconnects I find with 3rd party frameworks and tools is that combination of learning the framework and troublehsooting the framework is often a bigger hill to climb than doing the project without it.  The real "savings" tend to come in two areas: when you do a LOT of projects with the framework so that you can spread the overhead of the framework over so many projects that the net savings turns positive or when the product forces you to create a better product than you could have without it.  For example, when the product builds business objects where you might have dragged and dropped a datasource onto your form (heaven forbid!).  Occasionally, frameworks even give you features that you'd be hard-pressed to duplicate on your own.

The point is that people who know how to use frameworks and know the ins-and-outs of them can usually produce better code considerably faster than people who don't use them - or worse - know HOW to use the ones they've got.  The sticking points then are 1) Which framework(s) will you use and 2) How will you go about learning them and troubleshooting them?  I'm always very careful about the frameworks I pick.  If I'm not going to use it again and again, it's probably not worth it to me to learn.  The frameworks I do pick are going to be with me for a very long time, so I'd better choose wisely.

Documentation is key.  You've probably had the experience of working with a new framework and thinking, "where do I start"?  The worst documentation in my opinion is when they give you sample code - and nothing else! 

In my opinion, there should be a Quick Start Guide, an Overview document, an FAQ-style How-To for the most common scenarios and a Reference document (complete with "See Also and Code Samples!).   And one more thing I like - a phone number for when I'm really stuck.  I hate products that provide only a forum or e-mail address - or even worse a web site form with no alternative.  I don't mind paying for using the phone number, as long as I get a body on the other end who can either answer my question or escalate it to someone who can.

In .NET, a tool can generate generate the reference document pretty easily if the framework is well documented internally.  Unfortunately adding "See Also" and "Code Examples" to the document requires some extra work.  The Quick Start Guide, Overview and How-To require real people to write, edit and maintain.  I usually don't care if I get the material in printed or electronic format.  I DO have a personal preference for printed material and to use electronic format when I need to search, but I'm happy as long as I HAVE the content.

What do you think?  Is this the kind of documentation you like to see in a framework or toolkit?  Are there some tools I should check out to help automate the process?

Mike

Posted @ 1:18 PM by Yeager, Mike E (myeager@eps-software.com) - Comments (44)


Blog List
VFPConversion Blog
Markus Egger's Blog
Ken Levy's Blog
Claudio Lassala's Blog
Blog Archive
March, 2008 (1)
February, 2008 (1)
October, 2007 (1)
September, 2007 (2)
July, 2007 (1)
May, 2007 (3)
March, 2007 (3)
January, 2007 (2)
December, 2006 (1)
October, 2006 (2)
September, 2006 (2)
August, 2006 (6)
July, 2006 (3)
June, 2006 (2)
May, 2006 (4)