Monday, January 08, 2007

Again, another post with something that seems obvious at the moment and something I've done many times and it works like a charm everytime.  Last week I ran into a situation where I was performing a SqlBulkCopy on some data up to a Sql Server on a shared host.  This process has run nightly for over a year, however Friday the structure changed slightly so my client called me in to make the changes.  Changes are made and the process runs fine. 

Moving forward about 6 hours....suddenly an exception is generated in the SqlBulkCopy (don't recall the exact wording on the exception) which seems to indicate that either my structures between source (Access) and destination are out of sync or perhaps there is some corrupt data.  Since it worked fine previously in the day, I opted towards looking at the latter.

Quick once-over on the source data didn't show any problems and after doing some more preliminary appeared to be fine, but there were tons of records and I'm sure I missed something.  So what was my secret tool in solving this problem...

   Select Top 10 from myData

Just simply ran the the above select when selecting my source data, changing the Top XX to different values to zero in on the record that was causing the error.  Once I narrowed it down to that one record, it was a simple matter to scan the data looking for a problem.  Within seconds, I found the problem (calculated field which had a division by zero error), fixed the field and all was well.

Monday, January 08, 2007 5:59:57 AM (Eastern Standard Time, UTC-05:00) | Comments [0] | SQL Server#
Thursday, January 04, 2007

This is something that I tend to forget even though it's pretty basic and probably obvious to most.  I have a comma delimited string which I wanted to put into a List<>.  Here's a one-liner to get the job done.

   List<string> aList = new List<string>();

Where myString is my comma-delimited string.  Pretty basic, but very handy.

Thursday, January 04, 2007 10:06:53 AM (Eastern Standard Time, UTC-05:00) | Comments [0] | .NET#
Monday, January 01, 2007

Well here we are at the end of another year.  Boy did it go fast.  This has been another good year both professionally and personally.  Personally, our family is healthy and happy.  We've grown together as a family and done a ton of fun things together this year.  Professionally business has been good.  While, looking purely monetarily, 2006 has been about equal to 2005s production, things seem to be picking up none-the-less so I'm looking forward to a good 2007. 

So where is the new year leading us? Not sure yet.  Where am I trying to drag it (perhaps kicking and screaming)...well I want to make this year the year that we break out of the mold and take the business to the next level.  To me that means, going after new clients while still maintaining good relationships and high levels of service to our current clients.  This will be a big challenge for me.  I'm not a real outgoing person and the thought of putting myself out on a limb and trying to attract new clients is kind of scary.  Most of my business so far as been word of mouth and that's easy when you come recommended to someone.  But to sell our services to someone I've not met and has no reason to believe that we can help them, well that's a different story.

Another step in growing the business is to look at creating a product that we can sell and service in niche markets.  Yes we have ideas on what those products are and which niches to attack, but no...I'm not sharing :->  This could be a huge step (and a lot of work) but would be a good step for us.

In closing, if 2007 is even close to as good as 2006, then I'll be happy, but I'm not content to stop there.  So we shall see what 2007 brings and we'll trust in the good Lord that He will provide all we need and will open and shut the doors as they come before us. 

God Bless you all and here's looking forward to a good and prosperous 2007.

Monday, January 01, 2007 10:30:47 AM (Eastern Standard Time, UTC-05:00) | Comments [0] | Misc#
Tuesday, December 19, 2006

OK....been gone too long from here.  Working as an independent consultant can be great if you have the right attitude.  Most people I know think that because I have my own business and work for myself, that I have all kinds of free time and still make tons of money.  I don't help that perception, because I do use my flexibility and take time off during the days to do family things.  However, what most people don't realize is that I tend to work more hours now than when I had a normal 8-5 job.  My work is always with me and always on my mind.  While I can take time off during the day sometimes, I often work late into the evening after the kids are in bed to make up for lost time.  While there are days I can take off, one phone call can change all that in a heartbeat when a client calls with an emergency.  But I wouldn't change it for the world.  I love what I do, love the clients I work for, and enjoy the challenges that come to me most every day.

Now it's time to take the business to the next level.  This new year will see us exploring new avenues and ways to expand and grow our business, all the while taking nothing away from our quality of service for our existing clients.  It looks to be an exciting and challenging 2007.

Look for this new year to bring more posts here to this blog.  I've been working on a few new projects that have pushed me to learn a number of new techniques and processes.  I hope to expound on those in the coming months in some technical posts.  I also plan on posting our steps and progress as we move into the next phase of Malachi Computer. 

Tuesday, December 19, 2006 8:53:16 AM (Eastern Standard Time, UTC-05:00) | Comments [0] | Misc#
Wednesday, May 31, 2006

Here's a nice tool that Hanselman turned me onto a few weeks back.  SpeedFiler, has literally made my inbox management so much easier.  My inbox is now at zero at the end of nearly every day.  I've been slowly incorporating GTD into my life and have started with my email handling system.  Every email that comes in gets processed quickly or filed away for future consideration into the proper folder.   SpeedFiler assists with that, improving upon Outlooks standard move to folder tool by allowing you to find a folder in a short time, allowing for very speedy filing.  Read Scott's entry as he shows screenshots and gives more details.  I just wanted to give a little bit of promotion for this great tool.

Just for the record, this was an unsolicited endorsement and I have just purchased SpeedFiler no more than 10 minutes ago after a few weeks with the trial version.  I'm not affiliated with the Claritude Software in any way.

Wednesday, May 31, 2006 3:18:31 PM (Eastern Daylight Time, UTC-04:00) | Comments [0] | Cool Tools | Life Tips#
Tuesday, May 09, 2006

Been a long time since I've found a few seconds to post here.  I need to just make the time.....As a independent, I have my slow times and busy times.  Well for the past few months, it seems that all my projects that I've been quoting out for the last year have all been pushed to the forefront by my clients and they all want them now.  I've been subcontracting out some of my smaller websites just to get them out of the way, but more keep coming in.  I just received a phone call today from a client whom I met with almost 2 years ago (when I was very slow and needed the work) who finally is wanting to pull the trigger and build their website.  It's either feast or famine....but I sure like being busy like this!!!

Tuesday, May 09, 2006 3:05:44 PM (Eastern Daylight Time, UTC-04:00) | Comments [0] | Misc#
Tuesday, April 04, 2006

Wow this new SuperFetch in Windows Vista is a cool feature.  I'm sitting here with my 2G memory stick.  Thanks to Stefano for pointing this out.

Tuesday, April 04, 2006 4:38:47 PM (Eastern Daylight Time, UTC-04:00) | Comments [0] | Misc#
Monday, March 20, 2006

Not sure how I missed....but here is a very handy new feature in VS2005.  Thanks to Jessica for pointing me to this.  Had I not stumbled upon this I would still be tracepoint-less. 

What is a tracepoint?  Well, in a nutshell.  It's like a breakpoint without the breaking part.  I can now use this to replace some of my Debug.WriteLine statements I use to debug in certain cases.  How to create a tracepoint:

  1. Create a breakpoint as normal.
  2. Right-click on the red circle indicating the breakpoint.
  3. On the context menu, select When Hit.  There are other options as well, though they deal with breakpoint filters and such that I believe were in previous version of VS.
  4. Fill in the dialog with whatever text you wish to print, you can even run a macro.
  5. Close dialog, and red circle changes to red diamond indicating a tracepoint.

Very handy new tool and another reason I like VS2005 more and more each day.

Monday, March 20, 2006 10:37:05 AM (Eastern Daylight Time, UTC-04:00) | Comments [0] | .NET#
Tuesday, March 14, 2006

Well, everyone else seems to be doing it.....  I come across quite a few links each day that interest me or I should investigate further.  Here is my attempt to list those ...  while I would like to say daily, I really doubt that will happen.  Here is my first short batch.

  1. Reading Excel with ADO.NET - an interesting look into how ADO.NET handles Excel Docs.  Most interesting was how it guesses the data type of each column.
  2. Creating a unique or semi-unique ID in .NET  - As I ran into a similar situation not too long ago (I actually stuck with using GUIDs as in this particular application, the length didn’t matter to me), this opens up a discussion on the GetHashCode() method used on a GUID to create a semi-unique ID.
  3. Using ResolveClientUrl in markup This comes in handy more than not, but it is invariably something I forget about each time.
Tuesday, March 14, 2006 7:57:05 AM (Eastern Daylight Time, UTC-04:00) | Comments [0] | .NET#
Wednesday, February 22, 2006

Wow...this is a bargain. I've used OneTime for a year or so now (started with 2005 version) and have been happy with it.  Well now they are giving the 5-user small team edition for $5.00 (normally $495) in social experiment and all proceeds go to the Red Cross.  Can't go wrong with this deal.  This deal ends Feb 24th.

Wednesday, February 22, 2006 9:14:57 PM (Eastern Standard Time, UTC-05:00) | Comments [0] | Cool Tools#

I ran in to a bug today in regards to a ClickOnce app I've developed for a client.  I inherited a website that was partially completed when I has hired on by my client.  I developed a ClickOnce app for them (actually two different apps) along with completing and enhancing the website.  Portions of the website run with an SSL Certificate (through HTTPS), the certificate was purchased long before I came into the picture. 

The ClickOnce client app is launched from within a secured area of the website.  Everything worked fine, until someone browsed in through a different sub-domain.  Specifically the Certificate is for where as the client where we received an error came in through (without the www).  The certificate is not a wildcard certificate so if I had browsed to that page I would have recieved a Security Alert message box with the message:

The name on the security certificate is invalid or does not match the name of the site.

Well while browsing it's simple enough to click yes to proceed, however you don't get that option and are simply presented with the Cannot Start Application dialog.

Clicking on Details gives a ton of information on the exception that occurred.  Looking down I see the following:

--- Inner Exception ---
  - The remote certificate is invalid according to the validation procedure.

So I can see that this is related to the Security Alert given above.  After doing some digging, it appears that this is an acknowledged bug with .NET 2.0.  While this isn't quite the same scenario that I ran into, it looks to be similar enough to possibly be the same cause.

I'm not that versed on SSL and security issues in 2.0, so my speculation may be incorrect.  The client was happy enough to be sure to include the www and I can always redirect so it wasn't that big of an issue, but thought it was interesting enough to share.

Wednesday, February 22, 2006 6:29:16 PM (Eastern Standard Time, UTC-05:00) | Comments [0] | .NET#
Friday, February 17, 2006

A bit off-topic, but I'm always striving to improve my business, my personal life, and my spiritual relationship.  I ran across the Clean Sweep Program which is a checklist of 100 items, when completed, gives you complete personal freedom (at least according to the author).  I took the assesment and scored a grand 34 out of 100.....I have a ways to go and a lot of things to improve on.   

Some seem quite simple to do (make your bed every morning) and I suppose once you complete those, it will give a small bit of satisfaction that may not otherwise be obtainable.  Others, could take a lifetime to achieve completely (if ever), though making strides towards those goals would be a worthwhile pursuit in it's own right.  Anyway, this provides an interesting look into yourself.

Friday, February 17, 2006 10:09:52 PM (Eastern Standard Time, UTC-05:00) | Comments [0] | Life Tips | Misc#
Wednesday, February 15, 2006

Just discovered this today (yes I'm a bit behind, version 1.0 was release July 25, 2005..)....I had some legacy INI files that needed parsing and I've got a general class that I use normally in cases like this that handles all my INI needs.  Generally it works fine as it simply wraps the API.  I found recently that with .NET 2.0 (at least that's all I've tried with) there is a issue with reading an INI that resides on a networked drive.  Needless to say, I needed to do just that.  After a brief look I came across NINI, a nice tool that not only handles INI, but also XML configuration files, Registry,  .NET configuration files, and command line parameters.  The INI functionality at least was written without the use of API, so it runs just fine reading the INI across the network.  I haven't looked any deeper into the other files it can handle, but I've got a few uses for this library already.  Wish I would have discovered this one long ago.

Wednesday, February 15, 2006 5:33:22 PM (Eastern Standard Time, UTC-05:00) | Comments [0] | .NET | Cool Tools#
Thursday, February 09, 2006

Here's a handy tool to extract files from a MSI install file.  There has been a few times when I've wanted to either see what was in a MSI, other times when I only needed one or two files, and/or I needed the file in a custom location other than the install directory.  Well now I can with this tool....not something I'd use everyday, but handy to have in my toolbox for those special occasions.

Less MSIérables: A tool to Extract the contents of an .msi File

Thursday, February 09, 2006 3:32:11 PM (Eastern Standard Time, UTC-05:00) | Comments [0] | Cool Tools#
Wednesday, February 08, 2006

I've been doing the consulting thing for about 5 years now and I’ve started to notice that over the last 6 months or so I’ve been looking at my time that I spend in a completely different fashion. 

For example, last night my furnace broke.  Normally this is something I can fix myself being somewhat handy (in fact the problem with it this time is something I most likely could fix).  However, while debating whether to cancel my appointments for the morning (at least) and get to work on the furnace I realized that by trying to perform the work myself, saving myself a service fee for a repairman to come out, it was actually more expensive than just bringing in a serviceman and going to work.  With the billable hours, I would make more than what it was going to save me to do the repair myself.

Another example, a few months back I’m sitting in the dentist office waiting to be taken in for my appointment.  They were running behind and I ended up sitting there for 30 minutes or so past my appointment time.  The thought running through my mind was “This appointment is costing me X.XX amount, plus the extra 30 minutes of billable time.”

I guess now that I’m working for myself, billing by the hour, I’m more aware of where my time goes and I make a conscious effort to minimize wasted time. 

Wednesday, February 08, 2006 10:32:11 AM (Eastern Standard Time, UTC-05:00) | Comments [0] | Misc#
Wednesday, February 01, 2006

Where have I been that I haven't run into this before.  I recently wanted a compact yet secure password management tool that would ideally run from my thumb drive.  Found KeePass, a very slick package.  While I haven't delved deep into the full power of this tool.  It does exactly what I need.  It's quick, runs from my thumb drive and looks to be plenty secure enough and extensible enough to grow with me in the future.  One less thing I need to write for myself!!

Wednesday, February 01, 2006 7:56:49 PM (Eastern Standard Time, UTC-05:00) | Comments [0] | Cool Tools#
Thursday, January 26, 2006

In an effort to try and keep this blog technical in nature, I've decided to create a new blog dedicated entirely to books, reading and other publishing news.  New blog is at  Check it out if you were even half interested in what I was reading.  I'm also extending an invitation to a few friends that were keeping track of their reading lists in different areas.  Perhaps this way we can create a useful blog for book reviews.

Anyway, I'll try to keep this blog mostly technical from now on, so if you're here for my .NET / Consulting stuff, then stay right where you are.  If you were interested in my reading preferences and reviews, then head on over to


Thursday, January 26, 2006 8:37:05 PM (Eastern Standard Time, UTC-05:00) | Comments [0] | Books#
Sunday, January 22, 2006

Yes, book #3 (The Hawkline Monster) is completed already, since this was a short one coming in under 200 pages this only took a few nights before bed and a few mornings over the cereal bowl to knock this one out.  I must say this was not a book I really enjoyed.  The only reason I really kept moving through it was the sheer shortness of it and the speed I was moving through.  The book is written in a very juvenile manner that is really quite annoying, in fact, I would rather have read my sons picture books. 

The story itself wasn't bad, though there was a bit of gratuitous sex that really didn't add much to the plot.  Had the story been written by a better author, it could have potential to be quite a story, however, I just could not get past the writing style.  There was little character development and plot turns and twists that seemed to go nowhere for no good reason.  Just a strange, strange book.

I know this author has quite a following and judging by some of the reviews on Amazon, it appears that this was considered one of his better books (though perhaps not his most famous) but this is just not my style of story and I while it showed promise, it just wasn't something that I enjoyed.  I give this a 3 out of 10;  one point just for the briefness and two points for the main plot line that could have been interesting.

Next up.... something more interesting I hope.

Sunday, January 22, 2006 11:04:49 PM (Eastern Standard Time, UTC-05:00) | Comments [0] | Books#
Thursday, January 19, 2006

Well book number 2 is done (1/18/2006).  Gerald's Game by Stephen King from 1993.  This book was a quick read only taking about a week reading a half hour or so at a time in the evening before bed.  Very intriguing and a page turner that was very suspenseful up to the last few chapters.  However, fairly typical with King's novels, the endings leave something to be desired sometimes.  This is no different.  Up to the last two chapters or so, the book moved quickly and was a page turner...the last couple chapters really felt just like "oops, I have some loose ends to clean up, let me try and explain everything now"...while it was interesting to see the reasoning behind everything, it also took away somewhat from the "thrill" of the story. 

Having said that, I would definitely recommend this book to anyone who is looking for a quick horror read.  I would say, the best way to read this is late at night having put the kids to bed, climb into your own bed, with just a reading lamp with just enough light to read by and read a few chapters.  This will maximize the thrill as once you turn the lights off, you can put yourself in the place of the lead character and feel a little bit of what she must be feeling.  Certainly a creepy feeling. 

I won't say this is one of King's best overall novels, but it is one of his better in bringing the reader into the story.  Very worth the short time it will take to read.  I'd say about a 7 out of 10 for this one.

Thursday, January 19, 2006 8:12:24 PM (Eastern Standard Time, UTC-05:00) | Comments [0] | Books#

I switch daily between c# and for different projects with different clients.  One of the things I've always plagued me was those subtle little differences between the languages; putting semi-colons at the end of code, typing Then....EndIf in c#, those types of things.  Those are easily noticed as soon as they fly off my keyboard.  The ones that are really evil are differences in techniques that, at least I, just don't use that often.

For example, yesterday I was working on a project for a client.  I created a new class that I wanted to implement an interface.  Not a big deal, I remembered that in VB you need to use the Implements keyword.  What I didn't recall, and embarrassingly enough took me a few minutes to discover what I was doing wrong, was that you needed to use the Implements keyword tagged on the end of each method in the interface.  It's something I don't do quite enough to have it instantly recalled when I need to (although perhaps by writing this up, I will forever have it etched in my brain, "What's wrong here, why isn't it seeing the methods I implemented....Oh yes, remember that blog entry you wrote last year....need the Implements on the methods!!!"   Another benefit to blogging!

Thursday, January 19, 2006 7:37:18 AM (Eastern Standard Time, UTC-05:00) | Comments [0] | .NET#
Saturday, January 14, 2006

Well the first book finished of the new year (on 1/10/2006) was Dragons of a Vanished Moon by Margaret Weis and Tracy Hickman.  Book 3 of the War Of Souls Trilogy.  This really brings to a close a great story line that began many many years ago with Dragons of Autumn Twilight, probably one of the most influential fantasy novels and series of all time.  This series I feel brought the Fantasy genre into the mainstream of literature. 

Perhaps that's an over-dramatization, but it's a good read non-the-less.  The War of Souls bring to a close this story line.  Without giving too much away, the ending of this book really leaves no where to go in the current story line without making it feel like a completely different world.  I'm no author though, so I'm sure Weis and Hickam could manage to pull that rabbit out of the hat if they so desired.  You've got plenty of dragons, elves and battling between gods.  Everything you could ask for in a good action fantasy.  I would definitely recommend this book and give it a good 8 out of 10.  Best way to enjoy this would be to start from the very beginning in Autumn Twilight and continue through the rest of the Chronicles series, read the Legends trilogy,  then read Dragons of Summer Flame which nicely sets up the War of Souls trilogy (though you won't realize it at the time).

One book down, lots to go!

Saturday, January 14, 2006 11:33:07 PM (Eastern Standard Time, UTC-05:00) | Comments [0] | Books#

I've made a decision, call it a resolution if you'd like, to read more books this year.  I've always read plenty of books, but the last few years I've slacked off quite a bit....just been too busy I guess...never took time out to sit down and read like I used to.  Well this year I plan on making time to read more. 

So with that in mind, I plan on writing mini-reviews here on this blog (while this blog is mainly development related, I have the luxury of writing about whatever my muse reveals to me).  I read a wide range of books.  Obviously I read the occassional technical book (though not as much as I used to now that most the information is available to me as quick as I can type up a search on google), I read other non-fiction: history, science / math books, Christian subject books.  I may even pull out the occasional medical, psychology or political book.  I also read a fair share of fiction as well.  Over the years I've mainly leaned towards reading fantasy, sci-fi, horror, but have been know to read the occassional mystery, action/adventure or classic literature from time to time.  I often have 2 or 3 books going at once, though I will normally focus on one of those (my wife laughs at me, but I can keep them all straight).

Here's my plan for this.  Here in this blog, unless I decide to setup somewhere else, I'll give mini-reviews of the books that I read as I finish them off (or put them back on the shelf if it's a bad read or not just the right time).  I will also setup a page here that I'll keep a running list of what is currently being read and what has been finished.  I'll be curious to see how many books I'll finish off over the next year.  I doubt I will catch a buddy of mine (who is the inspiration for doing this) who is shooting for 100 books this year (had 34 in 2005), but would like to increase my count of about 10 -15 this past year (purely an estimate, I kept no stats).  These posts I will be sure to put them in the Book category so if you aren't interested in those (or perhaps only interested in those) you can filter them out.

I think this will be a fun diversion for me with my busy schedule, I'll look back at the end of the year and see how I've done.

Saturday, January 14, 2006 11:16:31 PM (Eastern Standard Time, UTC-05:00) | Comments [0] | Books#
Friday, January 13, 2006

Two days ago my host (a fairly well known host that I recommend to almost all my clients) changed the trust level on all their shared .NET 2.0 servers at the recommendation of Microsoft.  Unfortunately, little warning was given and some sites broke because they were depending on Full Trust.  I had two of those myself, not really sure what was causing  the need for full trust. 

After investigation, it appears that third party web control I was using on these sites require full trust and was causing my problems.  Now that I figured that out, I contacted those third-party companies and unfortunately those controls do not work in partial trust, although one company at least put the request on the feature request list for a future version.  Not much comfort for me at the moment however. 

Fortunately, the dependence on these controls is minimal and in my case will take some minor work to work around.  However, I know of some other sites that will not be as lucky.  I can understand the security reasoning behind running in partial trust, but it is very hard to explain to a client why there site which worked fine in the morning, suddenly no longer works in the evening, seemingly for no better reason than the site host upgraded the security.  Security of your site matters little if it is down.  So needless to say, I have some work ahead of me to change the sites to work under partial trust.  I also imagine we will see quite a few updates to 3rd party controls to run under partial trust if that is what Microsoft is recommending to hosts now.

One good thing that came from this, it put me in a position that I had to learn more about the different trust levels and what I can and can't do in each....something I perhaps took for granted in the past.

Friday, January 13, 2006 12:46:12 PM (Eastern Standard Time, UTC-05:00) | Comments [0] | .NET#
Monday, January 09, 2006

Older post on setting focus to a control in ASP.NET, but found this useful today.  Something I do often enough that I don't want to have go searching again for it.

Monday, January 09, 2006 10:03:26 PM (Eastern Standard Time, UTC-05:00) | Comments [0] | .NET#
Thursday, December 29, 2005

Well as I alluded to in a few previous posts, I was running into issues with my 1.1 No-Touch Deployment smart clients I developed for a client of mine that ran across the internet.  Well I've finally found something official from Microsoft in regards to this issue.

Bug Details: .NET Framework 2.0 breaks No-Touch Depoyment (HREF exe) apps from the Internet

There are a few workaround's posted which you may get varying mileage out of.  I in fact took the third suggestion when I converted them to 2.0.  This actually worked out pretty well and from the looks of things, this was really the only good solution that worked in our situation.

This should be considered pretty critical as it breaks existing code which can cause great problems.  In our case, it was easy enough to convert them to ClickOnce apps which enabled us to take advantage of some other enhancements, but for others this may not be so simple or feasible.  Non of the other solutions look appealing either at least for our application. 

Thursday, December 29, 2005 9:01:45 AM (Eastern Standard Time, UTC-05:00) | Comments [0] | .NET#
Saturday, December 24, 2005

Having used Outlook for years and years, there is one feature I've always wished was there, though it has never been a show stopper, just a nice to have.  A Bounce feature that would take an email meant for someone else and send it on to them as if it was originally sent to them.  I know, nothing that couldn't be simulated with a forward.  I've also seen some 3rd party utils out there that have functionality like that (as well as some other email clients)....I've just always been curious why Outlook has never offered that feature.  Even just a button in the toolbar to bounce the current email would be fine with me.

At a former employer, one of my last tasks for them was to write an email client that integrated with their other custom software (they didn't want to integrate their software with Outlook, but wanted to write their own package to distribute to their clients).  The functionality rivaled Outlook (it was when Outlook 98 was the current version). 

One of the extra's I added was a bounce button.  It was one of the favorite features for them and came in handy for them.  The people using the client were often small offices that would have a central email setup (like a sales email) where all emails would come into.  The software did implement rules which could filter some out to the correct users, but often it would take a human eye to determine who the email should go to.  The bounce feature worked great for the situation as the email appeared to come from the original sender and was easily replied to.

While I don't have a huge need for this feature in Outlook, unless I am missing something, it seems that this might be a nice feature to have for some people.

Saturday, December 24, 2005 8:38:14 AM (Eastern Standard Time, UTC-05:00) | Comments [0] | Misc#
Thursday, December 22, 2005

I was trying out the VS 2005 Web Deployment Projects addin on one of my websites.  Wanted to merge all to one named DLL.  I was getting an error "Aspnet_merge Exited with Code 1" with very little other detail.  After some digging found the solution (at least in my case).  It appears that I had a duplicate class name in my project (actually had two of them).  Once those were cleaned up, build succeeded without problems.


Thursday, December 22, 2005 11:26:11 AM (Eastern Standard Time, UTC-05:00) | Comments [0] | .NET#
Monday, December 19, 2005

Maybe this is something that is well know already, but thought I would share this with my few readers.  We just moved into our new home about 2 months ago and our 4 year old son decided (without our knowledge) to take a cup of grape juice in the the living room which has a very light colored carpet.  Needless to say, the worst happened, he tripped and grape juice all over.  Not only the main spilll, but splatter's of grape juice everywhere.

Being that we just moved in, we still have yet to unpack a lot of stuff and of course all of our carpet cleaners / stain removers could not be found.  We didn't want to let it sit for too long while we ran to the local store to grab something to remove the stain, but we had also heard that if you tamp the grape juice with towels, while it will soak up some of the juice, it often pushes it deeper into the carpet, making it even harder to clean up later.

Then I remembered my general science and remembered how well salt soaks up liquid, I thought what the heck, we'll give it a shot.  Dumped the salt on the stains and immediately the salt started to clump as it soaked up the juice.  I used the salt very liberally all over the stain and let it sit for about 30 minutes. 

After sitting, we vacuumed up the salt and believe it or not, most of the stain was gone.  While at the main spill you could still see the purple tint of the grape juice, it was tremendously lightened and alot of the secondary splatters were gone altogether.  After going to the store then and purchasing some chemical remedies, the stain was completely lifted and you'd never know anything happened.

Next time we have a staining liquid spill I'll be going for the table salt instead of the paper towels.

Monday, December 19, 2005 7:02:47 AM (Eastern Standard Time, UTC-05:00) | Comments [0] | Life Tips#
Saturday, December 17, 2005

Here's a nice list of the new and improved security feature in the 2.0 framework.

New and Improved Security Features in the .NET 2.0 Framework

Good reference.  I need to go through this and learn what I can, I'm sure I'll have some comments as I read through this and play with some new things.

Saturday, December 17, 2005 10:05:27 AM (Eastern Standard Time, UTC-05:00) | Comments [0] | .NET#
Thursday, December 15, 2005

Now this is slick.  Thanks to Scott Munro where I first saw this.  I've often wanted to see the sizes of folders, but always seemed to be more of a hassle than it needed to be, but the FolderSizes tool (freeware from SourceForge) does just the trick.  You have to add a new column to your Windows Explorer view and it will display not only the file sizes but also the folder size for subfolders.  The calculations run in the background and I really didn't notice any slowdown as this background count runs.  In the past I've used the properties on the folder and/or other 3rd party tools to display folder size, now it's all right there in the explorer window.  Very slick.

Thursday, December 15, 2005 8:25:24 AM (Eastern Standard Time, UTC-05:00) | Comments [0] | Cool Tools#
Friday, December 09, 2005

Reading Geoff's post about the VS launch got me thinking when he made the following statement:

I'm sick of clunky-to-say product names. While I thought WCF and WWF were bad (and are :) VS, SQL and Biztalk are also bad.  The 98 in Windows 98 is easy to say. So's the 2000 in Windows 2000. 2002, 2003, 2005 - none of these roll off the tongue anywhere nearly so easily. After spending the day where the most common sentence included the phrase '...Visual Studio 2005, SQL Server 2005 and Biztalk Server 2006...', damn I'm sick of both hearing and saying these lines - all those 2005s get very clunky when wrapping your mouth around them. From now on, I'm going to refer to each one as VS8, SQL9 and Biztalk3 (I think it's three...). If you don't know your version numbers, look them up! Actually, I'm still quite partial to the code names. You'll still likely still hear me say Whidbey and Yukon too.

I never really thought about it before, but I do tend to shortcut some of those names when I'm talking with people as well.  Windows 98 became 98, Windows 2000 became 2000, Windows XP is just XP, Visual Studio .NET simply became .NET until 2003 came out then I had to start distinguising between them by using 1.0 and 1.1 respectively.  Now with 2005 out, it's become 2.0.  I do still use the code names quite often as well, I called Windows 95, Chicago for quite some time.  Luckily, most of the people I talk with understand and use similar if not the same shortcuts. But I realize now that I should be careful when talking with others.

Be interesting to hear how others shortcut the names.

Friday, December 09, 2005 8:44:57 AM (Eastern Standard Time, UTC-05:00) | Comments [0] | #
Wednesday, December 07, 2005

As I mentioned before, I had some issues with our smart clients developed under the 1.1 framework after installing 2.0 on machines.  I was also running into the same issue almost randomly on some machines that did not have 2.0 installed.  They would work for a few days, then for a few days trigger the file download dialog.   Never really figured out the reason.

Our solution was to convert our smart clients to 2.0 framework.  While at first I was nervous about taking that step, what a blessing it has been and it was very simple to do.  The wizard converted everything over with very few problems.  Only had a few things that I had to change due to being made obsolete in the new framework.  Other than that all worked fine, for the most part. 

The biggest issue I ran into was where I was doing some asynchronous FTP transfer and updating a progress bar.  You can probably guess the problem I ran into.  Cross thread issues updating the UI.  Took care of those problems with a few Invoke and all was well (nope didn't take time to use BackgroundWorker).  I should have caught those in the old version, but never ran into troubles and 1.1 let you get away with it without warnings.

The other added benefit is the ClickOnce technology that gives progress bars at every step when launching the app.  I had issues with the 1.1 smart clients when people would be impatient with the loading of the client (mostly after I had updated the program and they were downloading new components).  Now while the load time is not much different, it at least gives the appearance of faster loading and the user at least knows what is going on.  Very nice.

Wednesday, December 07, 2005 9:15:15 PM (Eastern Standard Time, UTC-05:00) | Comments [0] | #
Sunday, November 20, 2005

Goody wrote about a web service he created that was changing strings as they come across against his will.  This was converting the \r\n to \n essentially stripping off the \r.  While I hadn't run into a similar situation, it got me curious on what was going on.  After some digging, it appears that this might be documented by Microsoft here in it's White Space [XML Standards].  Down at the very bottom it has a section labeled End of Line Handling which states:

XML processors treat the character sequence Carriage Return-Line Feed (CRLF) like single CR or LF characters. All are reported as a single LF character. Applications can save documents using the appropriate line-ending convention.

Also in the W3C it states:

XML parsed entities are often stored in computer files which, for editing convenience, are organized into lines. These lines are typically separated by some combination of the characters CARRIAGE RETURN (#xD) and LINE FEED (#xA).

To simplify the tasks of applications, the XML processor MUST behave as if it normalized all line breaks in external parsed entities (including the document entity) on input, before parsing, by translating both the two-character sequence #xD #xA and any #xD that is not followed by #xA to a single #xA character.

Seems like that is just the way it's gotta work if the standards are to be followed, so Dave's workaround sounds like a good solution if you need to preserve both the carriage return and line feed.

Sunday, November 20, 2005 10:25:20 AM (Eastern Standard Time, UTC-05:00) | Comments [0] | #
Thursday, November 17, 2005

I developed a smart client for a customer a while back.  It's linked off of their website and has worked fine for quite some time.  I haven't worked with it for awhile, but this morning I had someone ask me a question about it so I went to fire it off to take a look and now IE is bringing up the standard download dialog.  It is happening on both of my development machines.  Program still runs fine in development. I will test on a few other machines, although it appears that it may be working fine for other people.

My initial thoughts is perhaps since I installed VS2005 on these machines that since the smart client was developed under 1.1 that perhaps the 2.0 framework is causing my some grief.

Any thoughts?

Thursday, November 17, 2005 7:54:21 AM (Eastern Standard Time, UTC-05:00) | Comments [0] | #
Tuesday, November 15, 2005

Received a lot of activity recently on an older post surrounding an exception received when trying to send email.  Thought I would summarize the information in a new post to hopefully help others out there.

The problem surrounds receiving an exception

[COMException (0x80040211): The message could not be sent to the SMTP server. The transport error code was 0x800ccc15. The server response was not available]

when trying to send an email using System.Web.Mail in the framework.  The problem is caused by having McAfee VirusScan on the server and having OnAccessScan enabled (at least it was in the discussion we were having, there may be other causes that we haven't discussed.)  Thanks to David for further confirmation and too Marcel (see last comment) for the following steps to work around the issue in McAfee VirusScan Enterprise 8.0.

- go to VirusScan Console
- Right-click Access Protection
- Click "Properties"
- Go to Port-Blocking tab
- Select Rule: "Prevent mass mailing worms from sending mail"
- Click Edit (in order to edit this rule)
- Add "aspnet_wp.exe" to the exclusion list

Other products such as Norton and other antiviral or firewall software may cause the same issue, but I'll bet the underlying issue is the same.

Hope this helps others out there.

Tuesday, November 15, 2005 8:29:23 PM (Eastern Standard Time, UTC-05:00) | Comments [0] | #

I hope to make this my new blogging home, to talk about a ton of things regarding my business and developing.  Making a home all my own giving me the freedom to tinker and modify to my hearts content.  Shoul be fun.

Tuesday, November 15, 2005 8:07:24 PM (Eastern Standard Time, UTC-05:00) | Comments [0] | #
Admin Login
Sign In
Pick a theme: