Xerratus
Happily stressed out, since 1974


 
Wednesday, August 08, 2007

So, this morning I applied a performance & reliability update (KB938979) that is supposed to help with a known Vista hibernation issue.  I haven't put my laptop into hibernation to check it out yet but what I did find is that my volume, network and power icons are gone from the task bar.  The thing that I liked was that these were icons that I could have always displayed by selecting them in the properties dialog.  They wouldn't hide after inactivity, sometimes even after selecting them to show by default.  Well, I opened up the task bar properties and saw the following:



What gives?  Why are the system icons disabled?  I WANT to select them.  I WANT to see them.  I WANT to feel all warm and fuzzy inside knowing that they're there.

All I can say now is that I hope this hibernation issue is resolved.  If not, I'm uninstalling this update crap.

UPDATE: After not finding a resolution for this, I've uninstalled this update.  My system icons are back and that makes me happy.
Sunday, April 15, 2007

Just came across this site this morning, www.imgred.com. They have a very interesting take on hot linking images from other sites. Yes, we all know that hot linking images is BAD with a capital B, A, and D but to download the image and upload it to the host (myspace or individual blog) can be tedious.

The way ImgRed solves this is to download the image once and serve it up from their site. The ease of use is also perfect in my book. To use ImgRed, just append the image url with http://imgred.com/ so the resulting image source would look like this:

<img src="http://imgred.com/http://www.mozilla.com/img/firefox/main-feature2.jpg" />

(this example was taken straight from their site)

It's that easy! No saving. No uploading. Fast and very intuitive.

On top of taking and serving the original, they also create a thumbnail of the image and serve that up as well. To view that just change the appended source from http://imgred.com/ to http://imgred.com/tn/

This is one of those "why didn't I think of that" solutions.

Friday, January 19, 2007

While looking into Microsoft's Web Client Software Factory (WCSF) I ran into an odd error installing the Guidance Automation Toolkit on Windows Vista.  The error in question was pretty generic but a quick search found a solution.  



Basically, the GuidanceAutomationToolkit.msi needed to be run as an administrator but you cannot right click an msi and simply select "Run as Administrator".  

The work around is simple:
Create a .cmd file
    install_Gat.cmd
Add a command to execute the .msi in question, and
    msiexec /i fully qualified path the the GuidanceAutomationToolkit.msi file
Run the command file as an administrator.
    save the file, then right click and select "Run as Administrator"





Thursday, December 07, 2006

Real quick; in order to run the debugger in Visual Studio 2005 on Windows Vista, you need to run the application as an administrator.  For the past few days, I've been doing this by right clicking the Visual Studio shortcut in my start menu and selecting "Run as Administrator".  What I really want is for Windows Vista to remember that I always want to run this program as an administrator.  So after a quick check I found that you can set it in the properties to do just that.

To be sure it works consistently, I changed the properties on the actual application found in: Program Files\Microsoft Visual Studio 8\Common7\IDE

Only problem I found that I haven't figured out yet (mostly for lack of trying) is that opening a solution file (.sln) directly does not work.  Actually, it doesn't do anything; no prompts or IDE.  But for now, it's one less click. 

Monday, December 04, 2006

Well I've made the switch to Vista Ultimate over the weekend and so starts the fight with Windows to allow all of my programs to get along.  First on my list, Visual Studio 2005!

Installation was a snap, although there are known compatibility issues.  My first problem came when I opened up one of my solutions, a web application, and tried to debug it.  Bam! "Unable to start debugging on the web server".  Ouch, that hurt.

Ok, so I read up a little and find 2 great articles on solving the problem:

Scott Gu's Blog (Tip/Trick: Using IIS7 on Vista with VS 2005) and

Bradley Millington's Blog (Developing Web Applications on Windows Vista with Visual Studio 2005)

I followed both of them but still got the above error.  Don't get me wrong, you DO need to follow their solutions but you also have to do one more thing that neither outlined; change the application pool in IIS7 for the site in question from "DefaultAppPool" to "Classic .NET AppPool".

Here's how:

Open IIS7 and navigate to the Application under "Default Web Site"

Right click the Application and click "Advanced Settings..."

Select "Application Pool"

In the drop down, change to "Classic .NET AppPool"

Click "OK" and you're finished.

Tuesday, November 14, 2006

Recently, when ever I opened any Office 2003 application (Outlook, Word, Excel, etc.) I got the following message “Microsoft Office Outlook can’t load Speech Recognition files.  This feature is not currently installed.  Would you like to install it now? [Yes] [No]”.  Of course, I repeatedly clicked “No”.  I didn’t want or need speech recognition.



After a quick Google I found that I had to remove the speech recognition from the computers regional settings.

First and foremost, close all Office applications currently running.

Once all Office applications have been shut down, go to Control Panel -> Regional and Language Options -> Languages tab.

Click “Details” in the “Text services and input languages” group box.



Select “Speech recognition” in the list box within the “Installed services” group box then click “Remove”.



Verify that “Speech recognition” has been removed from the list box.



Click “OK” to close “Text Services and Input Languages” dialog window.

Click “OK” to close the “Regional and Language Options” dialog window.

Open any Office application.  Office should no longer prompt you to install Speech Recognition files.
Wednesday, November 08, 2006

Starting this week, I began a new job. Along with paper work and the normal beginning-a-new-job routine, came my new computer setup. For the most part, everything went fine and it was more a matter of locating and trying to remember all the little programs I use and installing them. That’s the easy part. The thing that always manages to trip me up is the settings I like for each program. Even that went well until I came to Outlook.

I’m sure everyone knows and loves Outlook’s many options and the many places they hide. Most settings are at least 2-3 clicks deep in pop-ups. What I wanted to change was no different but finding it turned out to be a pain.

All I wanted to do was change the setting so that each time I clicked on an email, it gets marked it as “Read” right away. Seems simple enough, right? Well, I clicked on almost every combination before I found the winner:

"Tools" menu option -> "Options..." -> "Other" tab -> "Reading Pane" button

Simply select "Mark items as read when viewed in the Reading Pane" and insert 0 into the "seconds before marking item as read" box. Click "OK" and you’re done.

Thursday, October 26, 2006

While writing an email to a colleague today, Outlook 2003 underlined a passage and offered a correction.  The correction it offered didn't sound right but I clicked on it anyway to see if it looked better corrected.  It didn't.  But what I noticed next is that it again underlined the same passage and offered a correction, this time back to what it was originally.  Thinking it knows best (yeah, right), I clicked on it again and guess what?  It corrected back to the original passage and offered a "suggestion".

Original passage that "needed" correcting:



Corrected passage that also "needed" correcting:



The passage corrected back to the original:



And so I found the anomaly: The correction that corrected itself with a correction that needed to be corrected back to the original correction.
Monday, October 16, 2006

While installing Microsoft SQL Server Management Studio Express I was left with the puzzling dilemma below:

Am I OK with what is about to happen?  I'm not sure, but I don't really have a choice now do I.


A new service by Hidden Network, that I've noted in a prior article Want a new way to find a job... read my blog, has just ended it's Beta testing.  Over the weekend, I found out that my blog was one of the chosen to use the new service to display job postings (see the right hand side of this page under the heading "Job Postings"). 

From what I've heard, employers are signing up, posting ads, and liking the resulting applicants even from these early stages. 

For my avid readers

Continually check the listings posted under the "Job Postings" heading for new opportunities or browse for more jobs.  Even if you are not actively looking, better opportunities may be just around the corner. 

For employers interested in posting ads

Start posting jobs today.

For bloggers interested in using the service

I encourage you to create an account and try the service out.  For those who don't want to jump right in, check back for a review of Hidden Network and my opinion of the service to date.

Tuesday, October 10, 2006

This morning I downloaded IE7 RC1 from Microsoft.  It's apparently coming out soon and I'd like to check out the sites that I work on to make sure all of the formatting looks and acts like it should (I've only found one minor thing so far).

Upon opening it, I found out right away that I did not like the new font-enhancement (ClearType).  Ironically enough, I do use an LCD screen here at work and at home but I've just never liked ClearType.  To me and my eyes, it appears fuzzy almost blurry.  This to me seems to cause eye strain rather than help it.  But this is just me... I know a lot of people who love it and I'm not knocking it.

Without ClearType:

With ClearType:

So you can imagine my reaction when I first opened IE7 to see everything in ClearType.  Wanting to check out all of the new features and check out my sites with the new browser, I didn't try to disable ClearType right away.  So about 10 minutes later (I went fast) I set out to turn it off. 

My first inclination was to go to "Tools" then fonts but it wasn't there and rightfully so; ClearType is a font-enhancement not an actual font (from what I've read).  Next was to go to the "Advanced Settings" from within "Internet Options".  There simply, about half way down under "Multimedia" was the option "Always use ClearType for HTML".  Unchecking that option then restarting IE7 brought back the font I know and love.


Advanced Settings:

UPDATE: As noted by some readers; before turning ClearType off try and fine tune it first.  There is a web version that works quite well or you can download an XP PowerToy to do the same.

Friday, October 06, 2006

Although I like Live Writer and I've been using it lately, I have issues with some of its functionality. 

Currently in Beta, Live Writer (review from techcrunch) enables blogger's such as myself to easily add/edit/delete entries on one or multiple blogs on many platforms from one central location.  With that said and knowing it's still a Beta release, most of my qualms with it below may or may not be fixed (enhanced) in the final release.

These issues include:

  • When uploading images (.jpgs doesn't seem to be an issue with .gifs - haven't tried .pngs) Live Writer takes my original image and reprocesses it and runs some type of filter on it - why I do not know - leaving behind a grainer, blurrier version of the original. 

Original image:

Image enhanced by Live Writer:

I don't care why it does it, just give me the option to skip it if I don't want it. 

  • Pasting does not preserve certain color formatting.  Now this one is a double edge sword.  Nobody likes it when Word "styles" pasted text into a document.  All of the <font> tags and CSS styles are bloated and it NEVER seems to get it right.  Recently I discovered a macro for Visual Studio.NET that allows me to copy code keeping the original color formatting even using simple styles to do so.  The nice thing about it is that it gives me two options; copy as html or copy as a style.  The former is self descriptive, the latter is nicer in that you can paste the text into a notepad and it has NO html but paste it into a ANY rich textbox editor and the style is there.  My problem is that the Windows Live Writer rich text editor is the ONLY one I've found that does NOT paste the style properly.  I can still do it however if I select to copy as HTML, switch to HTML view then paste but I'd rather not have to do it that convoluted way.
  • There is a lovely dropdown from which I can select one or many categories for the current entry but there is no way to add a new category.
  • While posting yesterday I noticed a fatal error that kept popping up when I actually published a post but it didn't crash the program and went away when I closed the program later and reopened it.  Unfortunately I didn't take a screen shot of it but if I run into it again I will update this post with it.

That's about it.  The pros way out number the cons on this one.  If you post from work and home, try using folder share and syncing your "My Weblog Posts" folder in "My Documents".  Any posts you draft at home will be available for you at for when you get to work and vice-versa.

Thursday, October 05, 2006

Well to be fair, it's not just my blog it's mine and other blogs thanks to the new service hiddennetwork.com.   

 

Basically, Hidden Network - currently in beta (from the maker of The Daily WTF, which I am an avid reader) will display job ad's solely on blogs (tech blogs for now I believe).  Paying per 1000 impressions plus a per successful referrer bonus, makes this service inviting. 

Personally, I don't look for a new job except when I have to.  By doing this though, opportunities that may be better than my current situation might just pass me by.  But if I could see job opportunities from respective employers throughout the day while reading other tech blogs I might be presented with an opportunity that I might not have seen otherwise.  Plus, I would stay on top of job trends, something I could only do when actively looking for a new position.

I must say, I'm anxious to see where this service goes and doubly anxious to get on their blogger network.

Monday, October 02, 2006

Recently I created my own custom macro object for dasblog 1.9 but ran into a slight problem; it acted like the dll I created wasn't there.  Following this article (Creating custom macros for dasBlog) to a "T" still faired no better.  Not wanting to spend too much time on this and thinking that I was doing something wrong, I emailed Scott Hansleman (one of the main contributers to dasBlog) to see if he could spot my problem quickly.  Scott was great and we corresponded for most of the day trying different things to try and solve it.  He took a special interest in this because he said that this was the second inquiry in the same week about this error.

2006-09-29 14:00:18 PM
1
Error:
Error executing Macro: System.ArgumentNullException: Value cannot be null. Parameter name: type at System.Activator.CreateInstance(Type type, BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes) at newtelligence.DasBlog.Web.Core.MacrosFactory.CreateCustomMacrosInstance(SharedBasePage page, Entry item, String name) at newtelligence.DasBlog.Web.Core.TemplateProcessor.ProcessTemplate(SharedBasePage page, Entry entry, String templateString, Control contentPlaceHolder, Macros macros)
while processing .

2006-09-29 14:00:18 PM
1
Error:
Error executing macro: Test("hello", 1)|Extras. Make sure it you're calling it in your BlogTemplate with paratheses like 'myMacro()'. Macros with parameter lists and overloads must be called in this way. Exception: System.MissingMemberException: Member newtelligence.DasBlog.Web.Core.Macros.Test not found. at newtelligence.DasBlog.Web.Core.TemplateProcessor.InvokeMacro(Object obj, String expression) at newtelligence.DasBlog.Web.Core.TemplateProcessor.ProcessTemplate(SharedBasePage page, Entry entry, String templateString, Control contentPlaceHolder, Macros macros)
while processing .

From the looks of everything, it seemed that dasBlog could not find my custom class.  But why?  I made sure the changes in the web.config were correct because I thought for sure that was where the problem was.

Scott was able to duplicate the error once, then realized that he forgot to put his macro dll into the bin folder.  Emailing me again, he asked - as nicely as possible I might add - if I had forgot to put the dll in the bin directory.  Nope, I replied and even sent a screen shot of the servers bin directory.  To top it off, I sent him my solution to see if he could find anything wrong with my code or references.

While he was working away on solving this (thinking that there was something wrong with the macro factory code) I switched gears to see if building the macro using .NET framework 1.1 had anything to do with it.  I say this because the article on how to create custom dasBlog macros was using the .NET framework 2.0 so I did the same; why not, if the article did it in 2.0 why couldn't I?

Well the 1.1 solution worked!  Just then, I got another email from Scott asking if I was running dasBlog under 2.0 or not.  You see, creating macros under the 2.0 framework NEEDS dasBlog to be running under the 2.0 framework as well... DUH (as I smack myself in the forehead).

The problem all along was not with my code, not with the blog engine code but rather with the fact that I was trying to run a macro intended for .NET 2.0 under the 1.1 framework.

2 solutions presented themselves: A) Switch dasBlog to run under 2.0 or B) create the macro under 1.1.  Why is B even an option?  Because it is backward compatible with 2.0.  That's right, the 1.1 macro has more flexibility if I want to distribute this dll to others who, for one reason or another, are still running dasBlog under the 1.1 framework.

In summary, if you are trying to create a custom dasBlog macro and run into a problem, check to see that your website is running under the same .NET framework version as your solution (or lower).

A big thanks to Scott Hanselman for taking his time to help me with solve this dilema.

Friday, August 18, 2006

What the crap man!  I finally find a wireless network attached storage (NAS) device that I want to buy but I can't find any retailer selling it.  COME ON!  ME WANT NOW!  WTF People!!!!

A little background:

Lately I've been watching It takes a thief on the Discovery Channel and I got me thinking; if someone breaks into our house and steals our computers, we're out some valuable data -both my wife and I.  So I need the following: a wireless network attached storage device.  Now, they do exist and I can find them but they are usually geared for small to large businesses and are expensive.  What I need/want is just a solution for home.  It needs to be 802.11g compatible, stand-alone, affordable with a fair amount of storage (I don't need a 10 Terabyte NAS).

So every now and then, I search for what I'm looking for.  Well, today I found what I need.  Actiontec has a perfect home solution.  Once I found it, I did some more searching to find reviews and/or places to buy it.  Well, I found a lot of the former but none of the latter.  Basically, everyone is reviewing it but nobody is selling it.  Makes you wonder just how in the hell these people are reviewing it.  On top of that, these reviewers are posting prices... and it's affordable but where did they get the prices from?  WHERE?

Now I'm stuck.  I finally found my wireless NAS solution but I CAN'T BUY IT!  WTF!

If anybody out there knows where to purchase one of these OR knows of a comparable device let me know and I'll post it here so others trying to find it can BUY it.  What we don't need are any more reviews.  I've reviewed the reviews, now I just want it.

Monday, June 19, 2006

First off, I'm a programmer and there have been many times when I have had to templatize something that higher-ups wanted populated with existing data; an email template targeted at their specific customer base perhaps.  It's quite easy.  Let me give you a quick run down.

A) Get the approved email (usually has John Doe in place of the customer).
B) Create a text template out of it and place variable holders where dynamic data is to reside (John Doe now becomes something like [firstName] [lastName] so when we cycle thru the customers we generate a personal email).
C) Snap in and run.

Well you get the gist.  There is more work but that's the high level approach.  Now one thing a good programmer must do is READ the template and adjust the data accordingly.  What do I mean by this?  Glad you asked!

Recently, I received an automated email from the company that issued me a Secure Sockets Layer (SSL) certificate for one of my sites.  The template was good and the data populating the data was good but the programmer probably didn't bother to really read the email before putting in the data.  Here's the line in question:
Your certificate is set to expire in approximately 29.96 days time, you can renew this by going to the following URL:
Now we can surmise that the Template looks something like this:
Your certificate is set to expire in approximately [daysToExpire] days time, you can renew this by going to the following URL:
And we know for a fact that they know EXACTLY when the license expires, 29.96 days.

Like I said, the template and the data are both good but now you may be able to see the flaw; 29.96 days is not an approximation, it's exact.  

So the programmer or the quality assurance team (QA), if they exist, should've caught it.  To solve it, all that would need to be done is to use a Round() function, which is basically built into almost every computer language out there.  They syntax might be different but the outcome would be the same; 30 days, which is a good approximation of when my SSL certificate expires.
Friday, April 28, 2006

While perusing CodeProject this morning looking for a .NET slider control example I ran across this interesting article.  Not that I need a "Combo control" but I decided to check it out to see what it was about, I scrolled down (about a quarter of the way down the page) and noticed the following:



Now if you ever find something that says "The user control has four public properties:", wouldn't you expect to see ONLY 4 items detailed right below it and NOT 6?
Thursday, April 13, 2006

Throughout any given day, I usually monitor my blogs activities via the DasBlog referrer’s page (Referrers.aspx).  Since I use a tabbed browser (Firefox), I keep the referrer's page open all day in one of my tabs and just go back to it to see the activity up to that point; call it my obsession.  Two things bug me about doing this though.  The first is having to refresh the page manually (not a big deal but an extra step).  The other is when I come back and refresh the page after my session has ended because it prompts me to re-login, and then I have to navigate back to the referrer’s page.

The first idea I had to solve this problem was to add the following code to my admin/homeTemplate.blogtemplate page in the <head> tag.
<meta http-equiv="refresh" content="300">
What this does, for those who don't know, is to automatically refresh the page in 300 seconds (5 minutes) well within my session timeout period.  A big problem arises out of this though; this would go on EVERY admin page including the add entry page.  Simply put, I'd have to add an entry within 5 minutes or else the page would refresh (not postback) and all of my data would be lost.  Not acceptable!

With that said, I had to come up with a way to utilize the <meta> refresh tag (because I like the simplicity of it) but only on the referrers page; enter JavaScript.  By default every page has the document object associated with it, which means that it also has a location object as well.  So all I had to do was check the document.location object for the existing href to see if that string had "referrers.aspx" within it.  If it did, I knew I was on the correct page and could add the <meta> tag.
<script language="javascript" type="text/javascript">
if(document.location.href.indexOf('Referrers.aspx') != -1)
{
// Refresh the page every 300 seconds (5 minutes) document.write('<meta http-equiv=\"refresh\" content=\"300\">');
}
</script>
My solution is simple and can be added quickly by anyone who runs DasBlog as their blogging software.  Simply add the above <script> block to the admin/homeTemplate.blogtemplate within the <head> tag.  Viola, only the referrers page refreshes every 5 minutes.  So activity obsessed people, such as myself, can have easy access to our blog traffic by simply switching to that open tab throughout the day without having to hit refresh and/or re-login back in.
Wednesday, April 05, 2006

A few weeks back, I read an interesting article concerning rumors of Apple's move to using Windows as their core operating system.  Things like moving to Intel-based chips and Microsoft’s declaration that it is not going to proceed with another version of Office for the Mac OS makes it very possible that Apple is going the way of Windows.  Not that there is anything wrong with that, Apple after all touts itself as a hardware company that makes high-end products.  Even as a PC user I know that to be true.  So why not make the switch and give Microsoft the headache of keeping the OS compatible with the thousands of new hardware products that come out on an almost daily basis?  Honestly, the only alternative I see to a Windows based Mac is to license the Mac OS for other PC manufactures to preload on PC's but I really don't see that in the horizon for Apple even with the switch to Intel.

So this morning I go to CNET News, part of my daily ritual, and the first article that caught my eye was Apple: Windows on a Mac is here.  Called Boot Camp, this program allows Windows to run natively on the newer Intel-based Macs; basically dual booting.  The user will get the option to select the Mac OS or the Windows XP OS at startup.  While it's not Windows "shipping" on a Mac, it is a step in the direction of being able to order a Mac with Windows installed.  

And why not?  Let’s face it, I'm a Windows man; I program in .NET, manage Windows Servers, own and administer multiple PC's but I have to tell you, Apple is becoming more appealing if I can run Windows on it.  My guess is that Apple can win over a lot of Windows users and take away a large share of the market from PC companies such as Dell, HP, and IBM.  

Just a few years back, before the iPod, I had my doubts about Apple and the direction the company was headed but now, if things keep progressing the way they are, those doubts are fading.  And who knows, maybe, just maybe, I'll own a Mac before the end of this decade.

Sunday, April 02, 2006

While perusing the web this morning, I found this very nice, simple AJAX HTML editor.  Very simple in its design and implementation, I find that I can't stop playing with it (hey, mind out of the gutters!). 

Often, while developing sites or working on projects, I will work on some HTML trying to come up with either a layout or new style.  Either way, I usually create a quick test page, edit my code, and refresh the page in a browser while tweaking.  With this real-time editor, I can see my results as I type.  Simple but very effective. 

So go ahead, try it out... that's right, play with it for a little while but stop if it starts to chafe.

Friday, March 24, 2006

Problem:
Error in Visual Studio 2005
Invalid access to memory location. (Exception from HRESULT: 0x800703E6). File: web.config. Line: 86

Line 86 of the web.config file:
<add assembly="Microsoft.SqlServer.Replication, Version=9.0.242.0, Culture=neutral, PublicKeyToken=89845DCD8080CC91"/>

Explanation:
First off, why is "Replication" being referenced by the web project in the first place?

The project I'm working on is quite complex with about 12 projects within the web solution.  Of these projects, a database project exists which utilizes replication.  While the web project does not access this project directly it does access it indirectly thru a business logic layer project which references a data access layer project which references the database project.  

With that said, when I compiled, Visual Studio automatically added <add assembly="Microsoft.SqlServer.Replication, Version=9.0.242.0, Culture=neutral, PublicKeyToken=89845DCD8080CC91"/> to the web.config file which in turn thru the error Invalid access to memory location. (Exception from HRESULT: 0x800703E6). File: web.config. Line: 86.  

There is no way around it.  Even when I strip out line 86, Visual Studio just adds it right back.  What's worse is that the web.config file in our web project is under source control.  So every time we compiled the web solution, Visual Studio would prompt to check out the web.config.  For a while, my team and I would just ignore the prompt and NOT check out the file (stripped of line 86 of course) and all would be fine.  But just recently, I put it back because the prompting was just too much throughout a normal work day and set out to fix this once and for all.

Solution:
Quite honestly, I don't know if this is a solution or more of a work around because I think the problem is truly a Visual Studio bug that needs to be fixed.  

With that said, here’s the work around:
First, in the database project (the project that is actually referencing the replication) right click the references in question and select "properties" and set "Copy Local" = True.  In my case, the files in question are:

Microsoft.SqlServer.ConnectionInfo
Microsoft.SqlServer.Rmo

Now compile the database project ONLY.  Once this is complete, go to the bin directory of this project and you'll see the following dlls:

Microsoft.SqlServer.BatchParser.dll
Microsoft.SqlServer.ConnectionInfo.dll
Microsoft.SqlServer.Replication.dll
Microsoft.SqlServer.Rmo.dll

Select and copy these.

Now, navigate to the web directory Bin folder and Paste the copied files there.

Side note: If, like me, you are using source control you can add these files to Visual Studio THEN right-click each file and select "Exclude From Project".  This will simply create a file of the exact name suffixed with the .exclude extension.  Simply, this will allow the solution to be compiled without prompting you to check out the newly added dlls.

Finally, right-click the solution in Solution Explorer and select "Clean solution" then build the solution WITH line 86 in the web.config.

Viola, it should compile without errors and the dreaded Invalid access to memory location exception should be gone.

Now, I'm not quite sure why this works but I do believe that when compiling Visual Studio is trying to access all of the referenced components but can't seem to find the Microsoft.SqlServer files.  Yes, all 4 of these files are in the GAC (Global Assembly Cache) which is why I think the error is with the Visual Studio environment.  IMHO, Visual Studio should first check to see if the referenced files are in the GAC and access them there if found.

Note: 
When "publishing" a site, be sure to strip out the Microsoft.SqlServer dll files before pushing live.  Ironically, when the project is fully compiled and published, the error no longer appears (because the .NET framework knows to look in the GAC for the files).  Because of this, my theory that the error is within Visual Studio has some weight.

Credits:
None!  This has taken my team and I quite a while to figure out.  Every week for the past few months, I've Googled this error in hopes that somebody had found a solution to no avail.  

I hope by posting my "solution" (pronounced work around), others frustrated by this error will find this entry and put an end to the elusive (Exception from HRESULT: 0x800703E6) error.

Friday, March 17, 2006

When I got home from work yesterday my wife had some news that would make any grown man giddy... well any grown man who's a geek that is.  That afternoon she saw a truck laying fiber behind our house on the main street.  Fiber!  Did you hear me, fucking FIBER! 

WOO HOO! 

Soon we'll be able to drop our cable modem for a real internet connection.

Friday, March 03, 2006

It’s been a busy week and I barely made my launch date but finally, my pet project (Pytheus) is live –the free version at least.  I’m still trying to work out some bugs and fix a few known issues but I feel that it’s finally at a point to allow people to start using.  The public informational site and the blog are still being finalized but the secure site is 98% functional.

What is Pytheus?  Pytheus is my attempt to bring order to those individuals who access or work on multiple computers throughout your day yet want to or need to access the same information (links, notes, files, etc) while on different machines.  On top of that, it’s also a place to collaborate with other Pytheus users via a shares feature.  Have a favorite site you visit a lot and want to let your friends know about it?  Have a file you want your co-workers to have access to but don't want to email it out all the time?  Simply share it out and anyone who’s accepted your invitation to access your shared items can see it.  No more emailing links or files around. 

There is also nothing to download and you always have access to the latest code.  I've developed Pytheus following the Software as a Service model, not the advertising model.  With that said, you will never see an advertisement on our site and you can feel safe that Google isn't scanning any information you input for direct marketing.  Our revenue stream is subscription based and we feel that this site will be something you'll want to pay for.

Some more features:
  • All of the sections are searchable.
  • No advertisements.
  • You can save a brief description with every item (which is also searchable).
  • The site utilizes AJAX (an Anthem.NET implementation) for fast server interaction without the need for page reloading.
  • Links has a built in password holder for those who have to access multiple sites and sometimes forget your password.
    • The passwords are all encrypted and can only be accessed from the logged in user ONLY after they answer a challenge question.  This safeguards your information in case somebody accesses your account without your permission.
  • All of the sections have their own trash bin for deleted items (items are permanently removed after 24 hours).
  • There is a utility that you can download to export your FireFox Bookmarks and/or your IE Favorites so that you can import them into Pytheus.
  • You can add a toolbar link that opens a small pop-up window for saving web pages to your account easily.
And more is still coming.  In the next month or so, I’ll be offering the Basic ($5 per month) and the Extended ($15 per month – includes files section and 1 GB of storage space) versions for those who need more.  Also in the development stages: Calendar, Reminders & Tasks.

So sign up and let me know what you think.  I’m always open to new ideas and ways to improve existing pieces.  Believe me, you'll be wondering what life was like BEFORE Pytheus once you begin using it.

Pytheus, your personal web assistant.

Tuesday, February 21, 2006

About time if you ask me!

Worm targets Macs via Bluetooth (CNN)
SAN FRANCISCO, California (Reuters) -- A new computer worm targeting Apple Computer Inc.'s Macintosh computers has been identified for the second time in one week, security experts said.

Glad to see that hackers are finally diversifying.

Monday, February 20, 2006

My apologies to my handful of readers, it seems that an IP switch on my part yesterday took down xerratus.com.  Because of the nature of the switch and the fact that I did it locally fooled me into believing that everything worked out just fine.  The truth was I managed to isolate my server to within my network thus making it seem like everything was working fine, until I got to work and noticed that outage.

My dumbass stamp has bee properly affixed to my forehead.

That is all.

Wednesday, February 08, 2006

Anthem.NET is by far the best AJAX .NET implementation I've seen thus far.  I have to hand it to its developer, Jason Diamond, for making this so intuitive and easy to implement these AJAX controls.  After reading an article on it on Scott Hanselmans blog last week, I downloaded it and was blown away within the first few minutes of playing with it.  Not only does it work for .NET 2.0 but Jason Diamond was kind enough to create an implementation for .NET 1.1, for those of us who have to work on projects in both environments.

Jason has developed it so that the Anthem.NET controls inherit the asp.NET controls functionality while hijacking the OnClick server-side event to utilize client-side events.  Within minutes I was able to add AJAX functionality to my current .NET 1.1 project.  The only thing that I had to change in my code behind for the server-side events was to set the new UpdateOnCallBack event to true.  That's it!  Once I compiled and tested it, my application was no longer a site that depended on server-side callbacks for EVERY click event. 

Here are the changes needed to add Anthem.NET into your .NET 1.1 applications:

  • Download the project.
  • Add the project to your solution.
  • In the HTML:
    • Register the Anthem assembly in the page that will be using the control.

<%@ Register TagPrefix="anthem" Namespace="Anthem" Assembly="Anthem" %>

    • Change the tag of the control you wish to add AJAX capability to.

<anthem:CheckBox ID=”CheckBox1” runat=”server” />

    • Set the new AutoPostBack attribute to true.

<anthem:CheckBox ID=”CheckBox1” runat=”server” AutoPostBack=”true” />

  • In the code behind:
    • Add a reference to anthem.Net.

using Anthem;

    • Mask the WebControls so that the environment know which to use (this is optional but I recommend it).

using Asp = System.Web.UI.WebControls;

    • Change the control to reference the Anthem control (note that CheckBox2 does not use Anthem, it will continue to work normally).

protected Anthem.CheckBox CheckBox1;

protected Asp.CheckBox CheckBox2;

    • In the CheckChanged event set the UpdateOnCallBack to true.

private void CheckBox1_CheckedChanged(object sender, EventArgs e)
{
    DoSomehthing();
    CheckBox1.UpdateAfterCallBack = true;
}

  • Compile and run.

One thing to note and this is addressed is that Response.Redirect() no longer works since there is no page response for events.  Luckily, Jason added a way to work around it.  Simply call AddScriptForClientSideEval() with JavaScript to redirect in the Anthem.Manager and it will add this to the client-side page's functionality.

Anthem.Manager.AddScriptForClientSideEval("window.location = 'http://www.google.com';");

Yes, it uses reflection and so do others but apart from other implementation of AJAX that I've seen and worked with, Anthem.NET utilizes the pages viewstate.  It may not seem like much at first but it is an integral part of a solid AJAX solution that others have either ignored or didn't bother with.  The reason that it works so well for me is that the project I implemented this solution on requires authentication and I have to be able to know this during a callback.  Other solutions left me in the dark, Anthem.NET didn't.  I can now access my user’s information and check his authentication as well.

Another slick feature of this is the Pre, Post and Cancel callback JavaScript events. 

function Anthem_PreCallBack() {}

function Anthem_CallBackCancelled() {}

function Anthem_PostCallBack() {}

By adding one or all of these to your page, you're able to display a floating "Loading..." <div> while processing occurs or prompt the user to opt out of the selected event.  Since there is really no page processing visual cue and the mouse doesn't change to an hour glass, I opted to use the "Loading..." <div> in the Pre callback event to let my users know that "something" was going on.  Then, when processing was over and the DHTML updated, I was able to make the "Loading..." <div> disappear on the Post callback event.  I know it's simple but it's the fore-thought of Jason that makes this brilliant.

Again, my hats off to Jason for creating this gem.  I've only been using it for a week and I can't remember life without it.

 

Friday, January 20, 2006

I just couldn't resist* ;-)

//=========================================================================
//=========================================================================

*He'll get it
Tuesday, January 17, 2006

Problem:
While working on a custom Windows Service today I ran into a situation where I couldn't uninstall it (via the .msi, installutil /u, or "add/remove programs").  Countless installing/uninstalling lead to this but I had to get it off so that I could complete the task.  

Solution:
Delete the registry key associated with it
    HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/[service name]

Note:
This is and should be used as a "last resort" for removing a service if all of the below options don't work:
  1. InstallUtil /u [service name] fails.
  2. The .msi setup package cannot "remove" it.
  3. "add/remove programs" fails to remove the service as well.
Also, You'll have to reboot for list to update in the Service Control Manager (SCM).

Friday, January 13, 2006

Problem:
When using System.Net.Mail.SmtpClient to send email I received the following error with the resulting stacktrace:

System.Net.Mail.SmtpException: Failure sending mail.

Failure sending mail. Unable to connect to the remote server
An established connection was aborted by the software in your host machine
at System.Net.Sockets.Socket.DoConnect(EndPoint endPointSnapshot, SocketAddress socketAddress)
at System.Net.Sockets.Socket.InternalConnect(EndPoint remoteEP)
at System.Net.ServicePoint.ConnectSocketInternal(Boolean connectFailure, Socket s4, Socket s6, Socket& socket, IPAddress& address, ConnectSocketState state, IAsyncResult asyncResult, Int32 timeout, Exception& exception) System

Solution:
If you run into this error from your dev (local) host try disabling any anti-virus software.  The software is blocking email from being sent by mass emailing worms and it treats the request above as such.

Notice this line in the stacktrace

    An established connection was aborted by the software in your host machine


This is the anti-virus software blocking your request.

Credits:
After reading this thread from Microsofts forums, I found the solution near the bottom.  Oddly enough, it was not set as the "accepted answer" like it should have been hence this posting.

Monday, January 09, 2006

Nice!

A co-worker, John Batdorf, I used to work with who now works at Corillian (a respectable company), has landed his picture onto Scott Hanselmans blog (before you ask, Scott is the lead architect at Corillian). 

Here's the picture:



above: John Batdorf
below: Scott Hanselman

The blog entry is about 2006 being the year of video chat.  Unfortunately, I don't and have yet to use video chat.  I don't knock it; I just don't need it right now.

Congrats John!
Friday, January 06, 2006

Dell PowerEdge 6350

  • Intel CPU: QUAD P3 XEON 550MHz w/512K Cache
  • RAM: 2GB of ECC EDO Memory
  • Floppy: 1.44 Floppy Drive
  • Hard Drive: 3 x 18GB 10K SCSI Hot Swap Hard Drives
  • Backplane: 1 x 3 Bay 80Pin SCSI Hot Swap
  • On-Board SCSI: AIC 7890 U2 LVD & 7860 USCSI
  • RAID: PERC 2 w/64MB Cache
  • CD: Internal CD-ROM Drive
  • LAN: 2 Network Cards
  • On-Board Video: ATI Rage Pro 3D 2MB SGRAM
  • Power Supply: 3 x 275 Watt Redundant Power Supplies.

It came last night.  My new server; Xerratus' new home.  Aint it pretty?  I'll get it up and running over the weekend and convert my old 1u server into a mail server. Hehehehehehe I can't wait!

Wednesday, December 28, 2005

Well, yesterday I thought I'd try posting an article on digg.com to see how it would do.  I was ecstatic when I reached almost 20 diggs by day end.  The article wasn't great by any means, I was simply testing the waters.  Well over night, it jumped to over 250 diggs and actually made it to the front page.  Wow!  My sites traffic as of 11am was over 10,000 hits.  My normal is around 200 to 300.  Unfortunately, my ad revenue still won't buy me a cup of coffee this morning.

As for the actual article, I think most people missed the point but at least the question is in their head.  Hopefully when they run into a similar problem they'll remember it and come up with a much better solution.

Anyway, I just digg digg.com now.

UPDATE: Well it's day 2 and I've leveled off at 268 diggs, not too shabby.  Todays traffic is no where near 10k but it is much higher and I'm expecting to break 1000 by days end.
Wednesday, December 21, 2005

Recently, with an aging application created by an employee who no longer works here, I ran into a problem with SSN’s being stored in the database as integers.  Now the person who designed this, from what I gathered from another employee that worked with him, was very adamant about doing it this way.  To store it as a string or varchar in the database was a no-no due to size and allocation issues.  Honestly, this isn’t a problem, storing it as an integer.  It does however become a problem when you don’t solve for zeros.  

Yes, zeros, they exist in social security numbers and they can even show up at the beginning of one.  Take mine for instance; the first 3 digits are 093 (I was born in N.Y.).  So the problem we had recently was just that.  The number went in minus the leading zero but when the number was taken out of the database, it wouldn’t validate correctly.  Duh, I wonder why?  At no time should you add to the number (i.e., prefix zeros if the number is smaller) because it takes away from the integrity of the number.  Perhaps somebody keyed the number in leaving out a digit, prefixing a zero will do more harm than good.

So what is the harm storing it in the database as a varchar?  I truly believe, with the size of hard-drives and RAM becoming ever larger, that size is not nearly the issue it was for data storage 5 years ago.  Personally, I believe in encrypting before storing it in a database but as a string not an integer.  Again, size should no longer be an issue.  Now a number that is 093-XX-XXXX will be encrypted as “093-XX-XXXX” instead of 93-XX-XXXX and stored as either a varchar or varbinary in the database (personally, I do varchar).  The number’s integrity is intact and decrypting it will keep the leading zero, as it should.

Is this really a problem worth mentioning?  Do developers really do this?  Apparently so.  For a while now, I would try to log in to one of my online banks (which will remain nameless) and on top of asking for a pin they ask rotating questions for extra security.  A nice touch if you ask me.  The problem is that every 3rd or 4th time I try and log in, it throws an error stating that the input does not match.  You want to guess what question it asks me each and every time that error gets thrown?  If you guessed “enter the first 3 digits of your social security number”, you are correct.  My speculation is that it is trying to compare my “093” with 93 from the database.  But in order for this to happen, they need to be converting the database value to a string, not the other way around.  You see, if they converted “093” to an int and compared, 93 would equal 93.  But, if you converted the database value to a string, “93” would not equal “093”.  That’s my guess at least.

In short, you should always encrypt SSN’s as strings in the database to be sure that the integrity of the number is never compromised for decrypting and comparing later.

UPDATE:
This comment, left by whatever43 from digg, hits the nail on the head. 

Most of the commentators, while perhaps excellent programmers, DBAs and the like, obviously don't understand the data about which they're commenting, which is most likely the source of all of the derision.
An SSN is not a number. It's a string made up of three distinct numbers, and only the third one (comprised of the last four digits) is serial. It can be treated like a number, but in most if not all cases it shouldn't be.
It's not a question of mathematical operations, storage space or anything else that's been mentioned here; it's a matter data integrity.
Thought not perfect by a long shot, SSNs are much more sophisticated than most people think. If you do any type of database programming and deal with SSNs, please go to www.ssa.gov and learn a little about them.
(No, I don't work for the Social Security Administration, but I have a lot of experience in data storage, validation and integrity, and I've encountered almost every question one can think of about SSNs.
)

Wednesday, December 14, 2005

I stumbled across this site yesterday, digg.com, which allows you, the user, to rate articles submitted by other users.  The more ratings or the more people "dig" an article, the higher in rank it goes.  At some point, if enough people dig it, it'll get promoted to their front page.  I love the idea and I want to start using it.  

So yesterday, I signed up for an account.  After entering my email, choosing a screen name and password I was promised that they'd send me an email so I could confirm and start using my account.  Now, almost 24 hours later I have yet to see the email and I'm beginning to think that it's never going to come.  To be honest, I had it go to my hotmail account and I'm sure that it's their fault; in fact I'm almost certain.  

Now for my problem:  How do I get them to send me another confirmation?  To that end, will it fail with Hotmails spam filters?  I tried to go back and re-sign up but my screen name has been taken and the same goes for my email address.  Damn!  I'm basically fucked.  I'll go ahead and send the obligatory email to digg.com first to see if they can resolve this for me, I'm sure they will, b