Monday, December 03, 2007

I used to use Yahoo...

Steve Trefethen's posting about Yahoo is pretty dead on.  I used to use the various Yahoo apps and services, but I have slowly replaced them with the various services from Google.  I think  the problem was the development team saw too many bright and shiny objects and decided to implement them.

Yahoo's email is an over-developed mess.  It's trying to be the web version of Outlook.  Even Microsoft's web version of Outlook isn't trying to be a clone of the desktop version of Outlook.  With web-based email, I want to get in and read it in as simple a manner as possible.  Thanks to the GMail Manager plugin, I have notifications when email comes into my various gmail and Google Apps email accounts get mail.

I don't want yet another proprietary IM client.  There's nothing wrong with Yahoo's IM, it's just that no one that I IM with uses it.  I prefer to use Trillian, one client to serve them all.

It's kind of sad.  I remember 10, 12 years ago when Yahoo was the only game in town for searching.  It got slower and slower to use and when Altavista came out, I dropped Yahoo for speed and simplicity of a fast search app.  And I stayed with Altavista until Google came out of nowhere and changed the search engine game as we know it. 

Tuesday, November 27, 2007

What happened after I emailed Sears

Earlier today, I posted about what I went through with ordering a vacuum cleaner from Sears.com.  My first inclination was to just call the store.   But I wanted to make sure that I got everything down and with as little emotion as possible.  I can do that better with email than over the phone.  I wasn't 100% successful with keeping my emotions out of the message, but I think I accurately conveyed the experience that I went through.

After a little bit of searching with Google, I found the email address of the CEO of Sears, Aylwin Lewis.  I figured if I sent it there, the executive assistant that would handle the email would send it the right person at the store.  That's not exactly what happened.  Mr. Lewis did read it and took action on it.

When I came home from work, I had a message from the district manager for Sears.  He called me back later in the evening and it was a very positive conversation.  He apologized for what happened with Sears.com and for what I went through with the salesman.  He told me that Mr. Lewis had forwarded my message to the nine regional vice-presidents.  They were concerned over the melt-down at Sears.com, and they wanted to address the problem with the sales staff.  They were well aware of the Sears.com melt-down, but having their own sales people bad mouth their Internet portal was something they were not aware of.

I was bit shocked by all of the attention, but I think it shows that they do care about the customer experience.  From what I saw and was told, the Sears.com site was unable to handle the load from the holiday shopping.  That's the easy problem to fix.  Their site just didn't scale.  You can fix that with more hardware or by tuning the existing hardware and/or software.

The other problem was the one that really bothered me and is why I sent out the email.  That was the experience that I went through when I tried to buy a vacuum out in the appliance department.  That's a harder problem to fix, but the district manager (Mark) made it clear that he was going to personally look into it.   I have to give credit to Mark, and the people he works for.  They did listen when I complained.  And he did offer me a small gift to make up for what I went through.  It wasn't necessary, but I do appreciate it.  I really think they intend on fixing the problem with the salesmen.

How not to handle Black Friday: Sears.com

On Saturday I was vacuuming when I noticed a burning smell coming from the vacuum cleaner.  It wasn't the burning rubber smell you get when the belt gets caught on something, this was coming from the motor.  This was the Saturday after Black Friday, so if an appliance is going to go, this would be a good day to replace it.

My wife wanted a Sears Kenmore canister vacuum, so I loaded up Sears.com and started searching.  They had the one she wanted for $100 off.  I had the option of ordering online with in-store pickup.  Great!  I could avoid the crowds and just show up at the merchandise pickup counter.  When I placed the order, they took 10% off the sales price for some on-line promotion that was due to expire in a few hours.

While placing the order, I was notified that I would receive an email within two hours.  The email would have a barcode that I could use at the automated station that Sears uses when you pick up an order.  I could also use my credit card to pick up the order.  Two hours seemed like an excessive amount of time, so I took the kids to Five Rivers (a local nature preserve) for a few hours.  On the way back from Five Rivers, I stopped at the house and checked my email, nothing from Sears.  I decided to head into Sears anyway to pickup the vacuum.  Before I left, I printed out the order confirmation page for the vacuum.  My daughters (5 & 7) came along for the ride.

Before I left my house, I dialed the 800 number for Sears.com to check on the status from my cell phone. I left the phone on speaker more and headed to Sears.  I was on hold for the 20 minutes it took to drive to Sears.  When I pulled into a parking space, I finally got a human being.  He asked me a couple of questions and put me back on hold into the general hold queue.  At that point, I hung up.

I went into the Merchandise Pickup area and waved my credit card into the scanner.  Nothing came up.  One of the employees came over and asked if I needed assistance.  I explained what I did and he took my printout over to Kevin, the Merchandise Pickup Manager.  Kevin explained that Sears.com was having problems and no one else who had place orders for pickup through Sears.com had received their confirmation email.

Kevin tried calling Sears.com to see if he could get order information, but he was unable to get through.  Since they had plenty of the vacuums in stock, he suggested that I buy one while I was in Sears and then cancel the order when the conformation email finally came in.  He gave me his direct cell phone number and promised to expedite the order cancellation.

We walked over to where they sell the vacuums and I saw the one that I wanted.  Within seconds a salesman came over and started telling how good that model was.  I explained that I had ordered that model through Sears.com and the order was stuck in the system.  I tole the salesman that I would like to buy another one for the same price and I would have the order cancelled.

At that point the salesman had a serious attitude change.  He told me that I had wasted my time on Sears.com and I should have bought the vacuum here at Sears.  He then told me that I would not get the 10% off because he didn't have the authority to do so.  I suggested (politely) that he should get someone with that authority.  He waved a manager over, all the while still telling me how wrong I was for buying the vacuum online.  Usually I tune that kind stuff out, but my kids were clearly bothered by it.

The manager came over and took my confirmation printout and started punching some buttons on the register.  While he did not say much to me, he was not cordial and I felt very uncomfortable.  The salesman made one more crack about my wasting time on Sears.com and I decided to end the process right there.

I told the manager and the salesman that I had had enough and I was not buying the vacuum.  The manager pretty much ignored me and continued to put the order into the register.  I walked up to him and asked for my printout back.  He made a dismissive comment that he was almost done.  I reached for the printout from his hand and he refused to let go.  At this point I said that I was leaving and please let go my printout.  At that point, he finally let go and I walked out of Sears with my young daughters in tow.

This Sears is one the anchor tenants of the Colonie Center mall and since we were already down here, I decided to make the most of it.  The girls had fun looking at the Christmas decorations and I bought them some hot pretzels.

The way back to our car was through Sears and we had to walk past the Merchandise Pickup department.  I figured I would give it another shot, since we were going by it.  I waved my card by the machine again, still no sign of my order.  Another employee came up and offered to look up my order on their computer.  I explained what I went through earlier and that it wasn't worth looking it up.  A manager came over and they mentioned that I could buy another one and then cancel the first order.

I then explained what happened with the salesman that they were shocked.  They said they could ring up the order right on the spot and at the price I paid online.  Then they asked for details on the salesman that I spoke to earlier.  They promised to look into that for me and I got my vacuum and went home.

The next day I called Sears.com and after 20 minutes on hold, I spoke to a representative.  I gave here my order number and she said that the order was now canceled and gave me an order cancellation number.  I figured that we were done.

The next day (2 days after the placing the order), I get an email from Sears.com notifying me that my vacuum was ready to be picked up.  I called Sears.com and after 15 minutes on hold, a representative took my order number and then hung up on me.  I called back and 10 minutes later, got yet another representative.  She explained that Sears.com could not cancel the order, it had to be done by the store where the pickup was scheduled.  I gave her my cancellation order number and she told me that it just means that I have requested an order cancellation, but they couldn't cancellation.  I asked her what the point was with the issuing of the cancellation number, and she told me that was to keep track of the cancellation request.  Basically, they could take and log the request, they just were not going to do anything about it.

I called the number that Kevin (the merchandise pickup manager) and within seconds I was speaking with Kevin.  I gave him the information from the confirmation email, and after a few minutes of struggling with the computers on his end, Kevin was able to cancel the original order.   While Kevin was trying to cancel the order, an email comes in from Sears.com.  It included the following text:

Thank you for shopping at Sears.com. We are experiencing a delay in sending order confirmations due to the volume of orders received during the Thanksgiving holiday. Please be assured we have received and are processing your order.

An hour later, I got another message stating that the order had been canceled.  I was amazed by what I went through.  I had placed the order for pickup through Sears.com because I thought it would save time.  It was Thanksgiving weekend and I though the salesmen would be very busy.  The staff working at the Merchandise Pickup counter were polite and helpful.  I can not say the same for the sales staff or the people who answer the phone at Sears.com.   I doubt that I will ever use Sears.com again.

[Update]

After posting this earlier, I decided to email this text Sears.  It did get a reaction, and it appears a positive one.  I wrote about it in the post that comes right after this one.

Tuesday, November 20, 2007

Digital versus paper books

Charles Petzold has a good point about the digital versus paper books debate.  Digital books are great when you first get them, but how are you going to read them 25 years from now?  How many people reading this have computer gadgets from 1982 that still work?  Can you read the disk from 1982 circa IBM PC?  I know I don't have any 5.25 in floppy drives anymore.

Even if you still have the e-book on a CD-ROM in 2052, good luck trying to read it.   The CD-ROM format should still be readable 25 years from now because the size of the disc seems to work for most people.  The problem will be that nothing will be able to handle the DRM encoded in the e-book.  Google pulled the plug on it's Internet-based DRM system last August, after a year of use.

There are times that I liked having an e-book reader.  A few years back, I got a Viewsonic V37 Pocket PC as part of a MSDN promotion.  One the applications that was pre-installed was Microsoft Reader.  I was able to find a large variety of books in the Microsoft LIT format and it was easy to create Reader files using a MS Word plugin.  When we went to China to adopt Laura, I had a bunch of books on my V37 to read and it took a lot less space to pack.  But that was the exception, not the norm.

On the other hand, you have to deal with battery life, not a problem historically associated with printed books.  Battery life on my V37 was pretty horrible, 3-5 hours of sustained Reader usage.  That's not very useful on a 9 hour plane ride.  I managed to find a little gadget that would power my V37 from a 9V battery, that basically tripled the battery life.

Reading at the beach is something I like to do.  You just can't do that with a digital book reader.  First of all, you can't read one of those screens in bright sunlight.  You also have to worry about dropping it into the sand (not a good idea) or into the ocean (warranty killer). 

How many times can you drop a paper book before it breaks?  I no longer use my V37 because it was not immune from the effects of gravity.  My daughter dropped it and the fall from the height of a three year old (at the time) was enough of a shock to permanently shut off my Pocket PC.

What would be a great use for an e-book reader would be being able to rent from one from the local library and fill it up with books from the library.  If I was going on vacation, I would pay $15 to $20 to rent one for a week with 5 to 10 books in it.  It's not much different than getting a bunch of books on cd audio from the library and ripping them to your iPod (except the e-book rental would be legal). 

Sony has been trying to play in this market for years with their Reader Digital Book.  I have yet to see one of the Sony devices out in the wild.  Amazon has the resources to sell a huge number of Kindles to libraries at greatly discounted prices.  They would make it over time with the e-book sales.  Plus it more people will use one if they can try it for a small fee.  They cost $400 now.  For that kind of money, you can get a cheap laptop and Adobe Acrobat Reader on it.  Come on Amazon, you know what you have to do. 

[thanks to Julie for her post about Petzold]

Sunday, November 18, 2007

When memes escape out of the series of tubes

It was only a matter of time before one of the candidates played the Chuck Norris card.

 

What's next?  LOLCats for Kucinich?  Oh wait, that one already happened.

Once you get past the wry amusement of the Chuck Norris "facts", does the apparent endorsement of Norris add anything to Mike Huckabees quest for the White House? 

Saturday, October 27, 2007

My doppelgänger is preventing me from giving blood

About two weeks ago, I went to give blood for the Red Cross.  It had been at least five years since I had last given blood and there was really no excuse for that.  The Red Cross had a few rooms in another building in our complex and I made an appointment to give some blood.

When I got there, they asked for my donor card.  I had no idea where it was, but that didn't faze them.  They could look me up in the computer.  I gave them my name, date of birth, and Social Security number.  And that's when the fun began.

After entering in that data into their computer, I was flagged as being in-eligible for giving blood.  Forever.  And forever is a mighty long time.  I was given a form letter that included an 800 number that would provide more details.  Due to HIPAA restrictions, the staff at the Red Cross station could not tell me why I had been banned.

So I called that 800 number and talked to a Red Cross representative.  It turns out that there is another Christopher Miller with the same date of birth as me, but living half way across the country.  He has an illness that has banned him from ever donating blood. 

Because we have the same name and birth date, when my data is entered in the local Red Cross database, they hit his record in the national registry.  And they don't look at the SSN number.

The fun continues.  Back at the 800 number, I was told that the only way I can give blood is to not use my Red Cross donor card and never give out my SSN.  Without the SSN, they don't check the national database.

That's the mind-boggling part.  They don't check the national database unless I provide a SSN, but if I provide a SSN they wont use it to filter out other people with the same name and birth date.  That's just wrong. 

Saturday, October 06, 2007

Technical Support: Verizon FiOS vs McAfee

It all started this morning when my wife went to check her email. She said that it wasn't working, so I took a quick look. She uses Thunderbird to check her Verizon FiOS email account. Thunderbird would connect to the POP3 server, incoming.verizon.net, but would time out after a minute or two with the message "Connection to server incoming.verizon.net timed out".

So I pinged incoming.verizon.net and it responded right back, so it didn't seem like a DNS resolution type of error. I logged into her email through Verizon's online webmail interface. That worked, so her account and password were still good. I went to the Verizon FiOS portal page and went through the various help topics. It didn't like Firefox so I fired up IE7. It didn't like Vista and complained that Windows 98 wasn't supported.

That ruled out online support, but it did surrender a toll-free tech support number: (888) 553-1555. (btw, if you ever need to find support number, try the gethuman database) I went down the automated phone tree until it got to the part where it said that I would need to speak a human. And then told that the wait time for a human would be 31 minutes.

Here's where Verizon goes the extra mile. I was given the choice between waiting on hold for the next available human or they would call me back in 31 minutes. I took the "call me back" option and went on with life. About 30 minutes later, Verizon called back and I got to talk with FiOS tech support rep. That's pretty cool.

Within 2 minutes, we determined that the email protection in the McAfee Security Center was blocking Thunderbird. I've only had to call FiOS tech support a couple of time and each time I got a person who knew his stuff and didn't blindly follow a script.

Basically, if you go into the McAfee Security Console and disable email protection, Thunderbird works. Enable it again and Thunderbird can't access the POP3 server. Pretty easy to duplicate and it was repeatable.

Yesterday, we saw a McAfee popup notifying that an update had been installed. Mentally, I had filed that under "Yeah, whatever". It seemed that the latest update was the culprit.

This was the free version of McAfee that you can get with FiOS, via MSN Premium. Getting the free McAfee is a story for another posting, they don't make it easy. Since the McAfee was more or less provided by FiOS, I figure there would be support, more or less. The FiOS guy told me that I would have to contact McAfee support and he gave me the number (800-337-6840) and offered to transfer me over.

I took the transfer and spent the next 25 minutes on hold, which was less far exciting than it sounds. After reaching a tech support specialist named "Terry", the real fun began.

The first thing Terry asked me was the email account that I had registered my copy of McAfee Security Center under. I tried explaining to Terry, that I never had to register my copy McAfee and that it was provided by MSN Premium via Verizon FiOS. Tery mulled thatover for a minute and then asked me for the asset code of my Dell computer. Apparently Terry thought I had eval version McAfee provided by Dell. The funny part is my wife's machine is new Dell desktop, but we had ordered it with the "no software pre-installed" option and her machine did not come with any preinstalled anti-virus application.

I told Terry that I did not have an asset code to give him and it was not relevant to this issue. At this point he finally grokked that I had the McAfee that comes with MSN Premium and I would not be his database. After walking through the steps that duplicate the problem, Terry told me that the solution would be uninstall McAfee Security Center and install a new version. Terry then gave me an issue number and started to wrap the call up. I had no confidence that this would work and requested for Terry to stay on the line. Terry agreed.

I asked Terry how that be different a version than the one that had just updated himself. He said that the currently installed copy had corrupted files. I asked how about he knew this and he said that other people were having this issue. I uninstalled McAfee Security Center and downloaded the latest version through MSN Explorer. You get a 500KB installer and it grabs the actual installable bits from the Internet. While it was downloading, it displayed the usual metrics of size, time, download speed. The download speed averaged around 45Kb/sec. I have the 20Mbps/5Mbps plan with FiOS, I should have been getting a much faster download. Terry told me that the was heavy demand on their servers with users having to manually download McAfee Security Center.

So after reinstalling McAfee Security Center, nothing was fixed. Thunderbird would only work if email protection was disable. Terry then asked me to turn off the PC and power it back up with the F8 key pressed down. I asked why, and he said that we would need to boot up in Safe Mode to see if the email would work without McAfee Security Center running. I made the point that it would be a waste of time since we already new that it work when email protection was disable. Terry made it clear that this step had to be followed. To make a short story long, that didn't work either.

Terry then put me on hold to talk to another support person. After a minute or two on hold, Terry came back to say that this was known issue and an updated would be issued through the McAfee update process within 24 to 48 hours. The work around is to disable email protection and try again in 2 days.

At this point, I have better than an hour and half sunk into this phone call. I told Terry that I was upset that I went through uninstalling, downloading, reinstalling, and rebooting into Safe Mode for an issue that they already knew about. Terry then told me that reinstall had fixed the problem all that reported it. There were a couple others that were not fixed and an update would be coming for them. I then asked Terry how he could use "all" in one sentence, but indicate "not all" in the next. Terry did not understand that question so we ended the call at that point.

At this point I have a lot of respect for Verizon FiOS tech support and almost none for McAfee. I pretty much got what I paid for, no question about that.

Monday, July 23, 2007

File sharing with Vista Home without passwords

After having several PC implosions, we now have two new Vista boxes at home. Both have Vista Home Premium installed. I'm used to the relative stability of XP Pro, but I figured I would give Vista a shot. For the most part it has gone very well, but I made sure that each machine was going to be able to run Vista.

My machine is a custom built box from MWave, my wife's is a Dell box. She has Intel, I have AMD, but they are both dual core machines with 2GB of RAM and decent video cards.

My wife and my kids have user accounts with out passwords. The machine has the usual security apps installed and is behind a router firewall. Their accounts are set as Standard User. I have a password protected admin account on each box. My wife has a Standard User account on each box.

We share a printer from my machine. I could print from my wife's PC, but she couldn't. She kept getting a login pass prompt and finally an error message about being able to validate credentials. It took a little while to figure out, but finally I remembered that out of the box, Vista wont let non-password protected accounts from remotely authenticating. That means that you need a password on your account to access network resources on another Vista box.

A fair amount of Googling kicked up a few suggestions to run gpedit.msc (Group Policy Editor). Most of the suggestions were of this type:

Run gpedit.msc
Go to Computer Configuration / Windows Settings / Security Settings / Local Policies / Security Options
Double click on Accounts: Limit local account use of blank passwords to console login only
Disable this option

One little problem. You only get gpedit.msc with XP Pro or Vista Business (or Ultimate). Thanks for playing the Home version of Windows, you don't get that useful little utility.

Fortunately for this setting all gpedit.msc is doing is writing to the registry. All you have to do is to edit the following key:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa

and edit the value of LimitBlankPasswordUse from 1 to 0. After you do that, you can now share printers and folders across Vista (and XP) with accounts that do not have passwords.



Updated on 8/15/2008
If you install Service Pack 1 (SP1) after making this change, you'll need to do it again as SP1 restores this setting back to the default.


Friday, July 20, 2007

Allowing Comments on Blogs

I came across a posting by Dave Winer (via Joel) about blog comments.  Dave doesn't easily allow commenting because he thinks it takes away from message that the blogger is putting out.  The power of blogging is that anyone (outside of some 3rd world countries) can express their own message.  Allowing comments brings in other views that can dilute or contradict your own view.

Joel adds the astute observation that allowing comments and lead to childish flame wars and other useless craps.  His view is that if you want to express your own view of a blog entry, post in on your blog.  Like this very posting.  I liked the Penny Arcade reference illustrating his point that anonymous posters are not always desired.

99% of I read in the blogs is through Google Reader, so I miss most of the comments anyways.  Usually, the only time I see comments on a blog is when I add a comment to a blog.  My experiences with comments has been pretty positive, with some rare comment spam.  Of course this blog is on the z-list and any comment is a rare event.

I can see that point.  But there is another side to blog commenting.  It allows the blog reader to correct or enhance positions posted by the author.  I have also seen plenty of blog postings where the author invited comments.  He/She was trying to solve a problem and was soliciting feedbacks.  As long as you can reasonably block comment spam, I'm in favor of allowing comments.  No one is forcing you to read them.

Thursday, July 05, 2007

Implementing a sortable TCollection in Delphi

Delphi's TCollection class is very useful, but out of the box it lacks the ability to sort the items in the list.  Fortunately, this is easily addressable accessing some private properties of the TCollection class.  Internally, the items in a TCollection are stored in a private TList named FList. 

The trick is to get access to a private property.  The way to do this is by creating a shadow class.  A shadow class is a class that matches the private declaration of the class that you need to access.  The shadow needs to have the same field types in the same order, up to and including the field that you need access to.  This is the risky part, and cover that risk later.  The definition of the TCollection class starts out with:

TCollection = class(TPersistent)
private
FItemClass: TCollectionItemClass;
FItems: TList;
FUpdateCount: Integer;
FNextID: Integer;
FPropName: string;


To get at FItems, we need to shadow the top two members of the class.  Which provides this shadow class:



TShadowedCollection = class(TPersistent)
private
FItemClass: TCollectionItemClass;
FItems: TList;
end;


With access to the internal list, it becomes a simple task to provide the ability to the sort the list.  A public Sort method will call an internal method that runs a Quicksort across the list.  The Quicksort code will process the list obtained by casting itself as TShadowedCollection, allowing access to FItems and then call a Compare() function to compare items in the FItems list.  The collection will provide a "do nothing" Compare() function.  It will be up to the descendant class to override that function and implement the actual comparision code.  The full source code for the class would look something like this:


unit SortCollections;

interface

uses classes;

type
TSortableCollection
= class(TCollection)
protected
function Compare(Item1, Item2 : TCollectionItem) : integer; virtual;
procedure QuickSort(L, R: Integer);
public
procedure Sort;
end;

implementation

type
// Helper class to allow sorting of a TCollection
{$HINTS OFF}
TShadowedCollection
= class(TPersistent)
private
FItemClass: TCollectionItemClass;
FItems: TList;
end;
{$HINTS ON}


{ TSortableCollection }

function TSortableCollection.Compare(Item1, Item2: TCollectionItem): integer;
begin
(*

Descendant classes would override this method and cast Item1 and Item2 to the
decendant class's collection item type perform the field comparisions

if item1.MyField < item2.MyField
return -1
else if item1.MyField > item2.MyField
return 1
else return 0

*)
result :
= 0;
end;

procedure TSortableCollection.QuickSort(L, R: Integer);
var
I, J, p: Integer;
Save: TCollectionItem;
SortList: TList;
begin
//This cast allows us to get at the private elements in the base class
SortList := TShadowedCollection(Self).FItems;

repeat
I :
= L;
J :
= R;
P :
= (L + R) shr 1;
repeat
while Compare(Items[I], Items[P]) < 0 do
Inc(I);
while Compare(Items[J], Items[P]) > 0 do
Dec(J);
if I <= J then begin
Save :
= SortList.Items[I];
SortList.Items[I] :
= SortList.Items[J];
SortList.Items[J] :
= Save;
if P = I then
P :
= J
else if P = J then
P :
= I;
Inc(I);
Dec(J);
end;
until I > J;
if L < J then
QuickSort(L, J);
L :
= I;
until I >= R;
end;

procedure TSortableCollection.Sort;
begin
if Count > 1 then
QuickSort(
0, pred(Count));
end;

end.

Tech Tags:

Tuesday, July 03, 2007

REST vs SOAP

In the weekly newsletter from TheServerSide.NET, there was a link to an article titled "REST versus SOAP - the REST story" by William Brogden.  It's a few months old, but talk about the recent rise in REST types of services over XML-RPC and SOAP.   Brogden briefly covers REST, but he doesn't talk about the advantages of REST and why you would ever want to use it over SOAP.  It's obvious that he prefers SOAP, but the reasoning was left out of the article.

Having done SOAP and REST for accessing web services, I can see the where it's advantageous to use SOAP as opposed to REST (or vice versa).  SOAP is very chatty, but you can send complex data structures to the web service.  Development tools like Visual Studio or Delphi can can read the WSDL from the web service and that gives you the "intellisense" autocompletion functionality that can save a lot of coding time.

With REST, you access the web service with just the basic HTTP GET and PUT commands.  You compose a URL for your web method request and the service sends back a response.  The response is usually in XML, but that is dependant on the functionality of the web service.

The drawback with SOAP is that there is more overhead in the construction of the method request and with the parsing of the request on the web service end.  When you have a web service that is serving thousands of requests a minute or second, that overheard may not be needed.

For web services that have relatively simple data types, using REST can provide the functionality that is needed.  You also get the advantage of testing individual method requests from a browser as the method request is basic URL. 

Blast from the past: Forth

I came across a link an online version to Leo Brodie's Forth tutorial, "Starting Forth" today.  I used to have a copy of that book eons ago.  I learned how to program on a Commodore VIC-20 and I bought (actually had to special order it) a Forth language cartridge.  This book has been out of print for decades, the online version is probably the only way to read it now.

Forth is an arcane language that allows you to program in interactive and iterative manner.   You would create words (what other languages would call functions or subroutines) from the language core keywords and created new words from existing words.

The operators worked in post-fix notation (aka reverse Polish notation) like the older HP calculators.  The language was stack oriented and post-fix works well when you are pulling items off the stack.

Since Forth programs were very small in size and typically do not access or require a traditional file system, Forth was used in embedded controllers and other hardware related projects.  NASA uses Forth to this day for spacecraft flight system controllers and other projects.

Needless to say Forth and the VIC-20 were not the best fit and I never did too much with it.  I wonder how many geek points do you get for programming in Forth on 5K (but only 3.5k were usable) machine that had a whopping 22 columns of text per line?

Thursday, June 14, 2007

I gots my favicon back

A while back, this blog was updated to the new Blogger and I was the custom icon that was displayed with my blog.  And of course, I forgot where I had hosted the icon.  I came across an blog posting for MyFavatar, a free site for hosting favicons for blogs.  I decided to give it a shot and it's one of those things that just plain works.

They made it pretty simple.  You register for an account, upload an image, and they create the .ico file from the image.  They even provide the html to enable favicons in your blog.

Enabling Database Diagrams in SQL Server 2005

I was working on a spec for a new feature in our flagship application, when I wanted to included some simple database diagrams.  I was adding some new schema and I wanted to reference them in the spec.  I figured I would just do the schema changes in a spare database and make a database diagram.

I opened up MS SQL Server Management Studio (SSMS)) and connected to the database on a box running SQL Server 2000.  I selected the database and then selected "Database Diagram".  SSMS got huffy about how the database diagrams in 2000 were nothing like the feature in 2005 and it wouldn't touch it.  Gee thanks,  Microsoft.  The SQL Server team should have borrowed Raymond Chen for a while.  That wouldn't have happened on his watch.

I connected to a SQL Server 2005 box and made my schema changes in a scrap database.  I selected database diagram and got a lovely error dialog with the following message:

Database diagram support objects cannot be installed because this database does not have a valid owner.  To continue, first use the Files page of the Database Properties dialog box or the ALTER AUTHORIZATION statement to set the database owner to a valid login, then add the database diagram support objects.

So I took the error message literally and took a peek at the owner.  I was the owner, and I have admin rights on that box. [Insert annoyed grunt here].  So I tried making sa to the owner, same error.  That obviously wasn't the problem.

After a wee bit of googling, I came across the root cause of the error.  It was not an ownership issue, it was a database version issue.  We support both SQL Server 2000 and 2005, all of our databases are version 2000 compatible.  You can't have 2005 database diagrams in a 2000 database, even it it's attached to a 2005 server. 

There are a couple of ways to change the database, I opted for the T-SQL method:

EXEC sp_dbcmptlevel 'MyDataBase', '90';

The sp_dbcmptlevel is documented here.  The value "90" corresponds to the version number of SQL Server 2005. I ran that command and I was able to add database diagram support to the database.  You can also make the change via SSMS with the following steps:

  1. Write click on database.
  2. Click on Properties.
  3. Click on Options.
  4. Change the Compatibility level to desired compatibility.
  5. Click OK.

After doing all of that, I really disliked the look of the tables in the database diagram.  It looked like the tabled editor from Access '97.  So I ended up doing what I should have done in the first place, created a database diagram in Visio and copied that into my spec document.

Tuesday, June 12, 2007

When other people host your data....

You are at the mercy of your hosts when they hold your data.  Using an online feed reader like Bloglines or Google Reader means that someone else is backing up your feed subscriptions.  This is usually a good thing, except for when they accidently delete all of your subscribed feeds.  That happened to Steve Tibbet today.  And not just Steve, it happened to a bunch of people.

It looks that problem has been fixed, but I immediately went and exported my subscription list to an OPML file.  I wonder if you can create a PowerShell script to automate that export.  The URL is a static link, http://www.google.com/reader/subscriptions/export.

I, for one, welcome our new Google overlords. Even so, things break and you can't rely on them to back up your data.

The $51 server.

It's been 6 months since I installed FreeNAS and it really has been like an appliance.  I back up my machine and my wife's machine with just a few batch files, based on robocopy.  I could get fancy with remote backup tools and so forth, but simple works.

I've been calling it $51 Server .  It started out as a white box pc that that I had custom built by MWave a few years back.  I had needed a Netware box for some Sybase Adaptive Server Anywhere testing and we bought a Dell Server with Novell Netware 5 on it.  It's an interesting story of how I ended up with that box, but if you want to skip the story, just jump here.

Netware was installed, but it needed to be configured.  The first thing it asked for was it's designation.  I considered naming it "One", but precious few would have caught the reference.   Usually when I get a server, I'll ask a random co-worker for the first one word that comes to mind.  I was talking to one our tech support staff and his word was "pumpkin". 

This bugged our IT manager to no end.  Normally, IT handles all of our server installs, and the server gets the name of some sort of predator.  Since I was the only one who knew Netware (which was a scary thought on many levels), the care and feeding of Netware box was my responsibility.

Getting back to Pumpkin.  After running it for a week, we had a somewhat urgent need for another Windows 2000 Server for a temporary remote access situation.  I wiped Pumpkin clean and IT installed Windows 2000 Server and named it Viper.

Temporary turned into permanent (about 6 years at this point) and I still needed a Netware box.  And of course, we did't have any more money in our budget for another server.  But we did have enough money to have a cheap whitebox built.  So for a couple of hundred, we got a Celaron 1ghz box with 256MB memory and a 20GB drive.  Video and sound were on the motherboard and we had a 3Com ethernet card that had outlived it's prior owner.  Using the usual method of selecting a server name, one of the QA people volunteered "moo" as the name.  She likes cows and it was short enough that you could easily type it with one hand with moving the hand.

Moo lasted 5 years without issues.   We used it test Sybase and it did was asked.  Our support for Sybase ended last fall and so ended our need for dedicated Netware Server.  The company sold it to me for $1.  I spent $50 on a 250GB hard drive and installed FreeNAS on it.

So for the whopping sum of $51, I have a NAS box that is completely managed by a simple web interface.

 

Technorati tags: , , , ,

Friday, June 08, 2007

User specific connection strings

Steve Harmon has a good tip on how to use ASP.NET 2.0's configSource to store connection strings in a file outside of the web.config.  You keep the user specific file out of source control and you eliminate conflicts when people use their own connection string settings.  He's not the only one to come up with that idea.

Shawn is dragged kicking and screaming into the year 2004

Shawn Gwin finally has a real blog.  As the president of the Tech Valley .Net Users Group (TVUG), it was about time that he started blogging.

Tuesday, June 05, 2007

TestDriven.NET and Visual Studio Express

There's been a lot of blog postings about Jamie Cansdale's legal issues with Microsoft in the last few days.  Jamie has a product called TestDriven.NET that integrates unit testing within the Visual Studio IDE.  The problem is that Jamie has integrated TestDriven.NET within Visual Studio Express and Microsoft would like him not to do that.

Visual Studio Express is the free version of Visual Studio 2005 intended for the hobbyist/student programmer.  Because it's free, Microsoft took a few steps to prevent VS Express from taking away sales from the other members of the Visual Studio product line.  Basically, you are not allowed to extend Visual Studio Express with additional functionality.

Jamie found to register TestDriven.NET so that it would work withing VS Express.  Jamie stated that he used published API calls, everything was above the board.  Information posted by Dan Fernandez (Lead Product Manager for Visual Studio Express) would indicate otherwise:

The TestDriven.NET product is implemented as a Visual Studio Add-In.  In the Visual Studio Standard, Professional, and Team System SKUs, TestDriven.NET is installed as an Add-In and gets loaded into the IDE through the Add-In Manager.  In the Visual Studio Express SKUs, because we disabled extensibility (macros, Add-ins, and VS Packages), the Add-In Manager is removed and therefore Add-Ins are not detected or loaded.  Jamie has created additional components specifically for the Express SKUs to work around this technical limitation.  He takes advantage of an extensibility point that allows user controls (such as a button class) to customize entries in the Properties window.  When his property extender gets called, he executes code that finds, loads and injects the TestDriven.Net assembly into the Express SKU’s running process, thus replacing the functionality of the removed Add-In Manager.  This explains why he instructs Visual Studio Express users to open the Properties window in order to enable TestDriven.NET.  Once his code is injected into the Express SKU’s running process it can add menu items, enable features that were disabled, and in general take over that instance of Express. These special loading mechanisms that Jamie has built exclusively for the Express SKUs are unauthorized workarounds to the SKUs’ technical limitations.

Right after VS 2005 was released, Microsoft contacted Jamie asked Jamie to remove support for VS Express from TestDriven.NET.  After many rounds of email and phone conferences, Jamie complied for a while.  Eventually he re-enabled support for VS Express and Microsoft is now using their lawyers to enforce their request.  You can read most of the emails and the legal correspondence here.

When I first read about this, my initial thought was Microsoft was sticking to the little guy.  That's really not the case here.  Microsoft spent a considerable amount of resources developing the Express line of Visual Studio products and it was clear from the start that you were not supposed to extend the architecture of the tool.  For that limitation, you have a powerful development environment that you could develop commercial applications with.

People have been making the argument that it's OK to extend the functionality because Microsoft is already doing it by releasing additional products (like Popfly) designed for VS Express.  That has nothing to with MS's requirement that third parties are prohibited from extending Express.  This isn't unique to Microsoft.  CodeGear does the same thing with Turbo Explorer lineup.  You can't install third party components into Turbo Delphi Explorer

Jamie appears to be stuck on the what specific part of the EULA is being violated.  I don't think it matters.  The request to pull VS Express from TestDriven.NET was a reasonable one and he should complied with it.

postscript...
It's entertaining to read the comments posted on Dan's blog, especially here.  While I'm not surprised by the number of people who just don't know the facts, there were many postings by people saying that MS vs Jamie was a reason to dump MS and only use open source tools. 

Give me a break!  If you are making decision on what tool to use over a clear cut EULA violation, you have rocks in your head.  You should be making that type of decision based on it being the right tool for the job.

Friday, May 18, 2007

Why is this man laughing?

 

There’s a story behind that picture and it’s pretty much what you would think it is.

Dave Anthony toasts his achievement after driving his truck on top of a Kent house he was demolishing. Anthony said "it was a hell of a way to kick off the Memorial Day weekend."

Somehow, it's not too surprising that alcohol was involved.  The full story can be read here.   I wonder how close he came to being a candidate for a Darwin Award?  At the very least, he should get an "Honorable Mention" for this stunt.

It gets better with the followup story:  Driving your pickup truck onto the roof of a house and getting your picture in the newspaper doesn't make a whole lot of sense when police want to talk to you about a $2,800 set of tires purchased with a stolen credit card.

Courtesy of Raymond Chen from The Old New Thing.

Tech Tags:

Time to get a new PC

My home PC died last Friday and I'm waiting for it's replacement to show up. I've had the machine for years and it's been running 24/7, something was bound to fail. The fan on the video card was starting to lock up and I'm pretty sure that the main hard drive is toast. It was a decent machine back in 2002, an Athlon XP 2000 with fast memory and drives.

The new box will be dual cores with lots of memory and RAID 5. I've lost 4 drives in the last year, I wont use another desktop without RAID. I looked at getting Dell, but I really didn't want to spend a lot of money. You can get cheap boxes from Dell, but not with what I wanted.

I like spec'ing out the components, you never know exactly what you will be getting from Dell. I've had good luck with custom boxes built by MWave. I basically picked out the components that I wanted and they assembled it and burned it in for me for a small fee. It's already been shipped, I should have it early next week

This is what I ordered:

  • Asus M2N-SLI Deluxe: A decent motherboard with everything I need on it, including RAID. The onboard sound board isn't the best one, but it will do for my needs. I'll probably salvage the Audigy card out of the dead machine if I need a better sound card.
  • AMD Athlon 64 X2 4800+ (Brisbane): Two cores and energy efficient. I never get the fastest CPU, I always bring down a few notches. The difference in speed will not be perceptable and I can spend the extra money on more memory, which will make the machine faster.
  • 2 GB Ram: With Vista, 2 GB is the bare minimum. I'll probably bump it up later
  • GIGABYTE GV-NX86T256D GeForce 8600GT 256MB 128-bit GDDR3 PCI Express x16 Video Card: It's fast, it's cheap, and it's got a big honking heat pipe to cool the card without a fan. Not having a fan means a quieter PC and one less moving part to break.
  • Maxtor 250GB SATA-300 drives: MWave had these drives fro $60, so I bought three of them for the RAID 5 array. With Maxtor's purchase by Seagate. it looks like these products were being discontinued.
  • Lite-On LH-18A1P 18X DVD RW drive: I've had good luck with Lite-On drives before and it was a good price. It's not their fastest writer, but it will be fast enough for the media that I'll be using for it
  • No floppy. The only time I have used a floppy in the last box was to flash the BIOS of the motherboard. If I can the new one to boot from a flash drive, I wont need the floppy. I may end up installing one as it's the typical way of installing RAID drivers when you do a Windows install. I could grab the floppy drive from thedead PC or get one that also has a memory card reader
  • Antec Sonta II case: I'v always liked Antec cases and power supplies and the Sonata is the right case for me. It's big enough to make working in the case easy, and it's very quiet. The main fan is 120mm, instead of 80mm. It can run slower (less noise) and push out more air than the 80mm fans. Another nice feature is that the fans and the hard drives are mounted on rubber, that really cuts down on the vibration noise.
  • Vista Home Premimum: I have mixed feelings about this one. I need more Vista hands on experience, but the horror stories are starting already. I could always install XP, if this OS is truly that awful, but I would prefer to work with Vista. This will also be my first experience with a "Home" labelled OS. I've been using XP Pro at home, but I rarely use the Pro functionality. I'm staying with the 32-bit version, even though the processor will support the 64-bit OS

Fortunately, the important files have been backed up. I put together a FreeNAS box a couple of months ago and I've been backing up source code and documents to it. The next time you buy a new PC, take the old one and toss FreeNAS on it. It just works.

Thursday, May 10, 2007

Is Microsoft Dead?

I was reading Mike Gunderloy's new blog, A Fresh Cup, and I came across a link to an article titled "Microsoft is Dead", by Paul Graham.  Paul's view is that Microsoft is no longer relevant and we live in "Web 2.0" world that Microsoft doesn't know how to play in.  He states that there are four things that killed Microsoft: Google, "the desktop is over", broadband Internet, the rise of Apple.  He's just plain wrong.

I'll give him Google.  Microsoft has never been able to catch up to Google in the search engine game.  I stil don't see how Google being the king of the hill for search engines means that Microsoft is dead.  That's like saying because apples are red, oranges suck.  It doesn't work that way.

People have been saying that the desktop is over for years.  Sun has been saying that, in one form or another, for the last 20+ years.  That has always felt like wishful thinking than future reality.  Lots of applications are well suited to run as web applications, but not all of them.  The desktop experience is just so much more richer in terms of the UI and the access to the machine than the browser experience.   Today's PC's have so much horsepower that it boggles the mind.  Why would you not want to use it?

Paul states that the rise of broadband Internet means that you have less of a need for desktop because you will faster access to the server.  All it really means is that your applications that get data from the Internet will run faster.  I use SourceGear's Vault for source control.  Vault runs a web service, but the client is a fat app.  When I changed my home ISP from TW RoadRunner to Verizon FiOS, I saw a decent performance boost when I used Vault from home to access files from the office.  Being a fat client, it can cache a lot of the data and save many round trip requests for data.  If it was a web only client, it would have been much slower, plus have all sorts of security headaches because the file system interaction. 

I have yet to see the "Web 2.0" equivalent to PhotoShop.  Silverlight opens the door to more robust web applications, but it still has limitations.  Oh wait, that's a Microsoft technology, better leave that one out.  What about office productivity applications.  Microsoft Office is a giant fat client, but so is Open Office.

What about the rise of Apple?  With the move to Intel CPU's and updated operating systems, the Apple Macintosh market share has increased over 38% within the last year.  Heady stuff and good for Apple.  Still, we are talking about going from roughly 4% of the market to around 6%.  When you view their rise in those terms, it's less of a threat to Windows.  He mentions Apple and then writes something that is just so wrong on many levels:

...Their victory is so complete that I'm now surprised when I come across a computer running Windows. Nearly all the people we fund at Y Combinator use Apple laptops. It was the same in the audience at startup school. All the computer people use Macs or Linux now. Windows is for grandmas, like Macs used to be in the 90s. So not only does the desktop no longer matter, no one who cares about computers uses Microsoft's anyway.

There are some seriously flawed statements there.  Just because the only people you see are using Macs, that doesn't apply to the entire population.  It just means that your sample set is not representative of the whole population.  I'm a computer guy and I have a few Macs and some Linux boxes.  I'm also a Windows developer and that's where most of my computer usuage occurs.  There last few lines are just insulting and are remarkably fact free.

Why do people get stuck in the useless us versus them argument?  The whole "Microsoft is Evil" argument is tired as well as the monoply charges.  There's enough room in the market place for various operating systems.  Just because you prefer one, doesn't mean it's the right choice for everyone else.

I usually ignore these types of articles, but this guy was just so wrong, it just jumped out at me.  It's clear he has an anti-Microsoft bias.  There's nothing wrong with that, but his reasoning had nothing behind it.  Paul, it's time to venture out of your "Web 2.0" bubble and see that the world is big enough everyone to play in.

Monday, May 07, 2007

Jeremy Clarkson does more than laugh at rice

I really wish I could get "Top Gear" here.  I can just watch that show for hours.  The only way I get to see any episodes is through YouTube.   I just came across this little gem:

 

Where Jeremy Clarkson destroys the worst modified car on the planet. He does more than laugh at rice, he takes action.

Friday, May 04, 2007

Ed Dague's blog has a new home

This is old news, but still worth mentioning.  Ed Dague's blog has moved from Blogspot to a new location hosted by the Albany Times Union.  If you want to learn how local news stations work, his blog is required reading.

Thursday, May 03, 2007

Domain name change

As of today, the address of this blog is now http://anotherlab.rajapet.net/.  The old name, http://anotherlab.blogspot.com, still works but you'll see the new name in your browser's address field.   I made the change after signing up for Google Apps.  I wanted to have a personal email address with my own domain and Google Apps will do that for free.  I've had rajapet.net parked at GoDaddy for the last few years (for a side project that never got off the ground), I figured I might as well use it.

After going through the steps with my domain registrar to map my domain name to Google's mail servers, it was then a trivial matter to add a CNAME Record to rajapet.net have it point back to ghs.google.com.  Once I verified that the registration had been posted to that series of tubes, I went in to the Blogger Admin page and assigned anotherlab.rajapet.net to the blog.

I signed up for Google Apps mainly for the vanity email address, but now that I have it, I want to use more of the features like the Calendar.

I'm using more and more of Google these days.  Their Google Browser Sync extension was the feature that made me switch from Opera to Firefox for most of my web browsing needs.  I bounce back and forth between six machines between the office and home and I have the same bookmarks on each machine and Google takes care of it for me.  I have been an Opera fanboy for the last few years, it took a lot to make me switch.

My blog is run on Google (Blogger).  I have a GMail account and I use Google Talk to interact with one of our remote contract programmers.  After playing around with a few desktop based RSS Readers, I switched to Google Reader.  I for one, welcome our new Google Overlords. 

 

Monday, April 30, 2007

Fun with COM and console Delphi applications

I try to make my setup projects upgradeable in place through Windows Installer.  This means that if a previous application has already been installed, the installer will do a silent uninstall before installing the new version.  The fun part is saving the current user settings across the uninstall/install divide.  Depending on the application being installed, the settings could be in the registry, a web.config files, or some other location.

What I end up doing is making a copy of the settings before the old app is removed, then restoring the settings after the new app has been installed.

Windows Installer is pretty good about firing off the save settings and restore settings actions at the appropriate time.  It's not so good at handling the actual save and restore bits.  I wrote a couple of Delphi console applications to handle that work.  With a just a few command line options, they know which application to save the settings from and how to restore them.  My installers write the app's installed location to the registry to make things like this easier.

One of the applications is an ASP.NET application.  The new version uses the .NET 2.0 Framework version, it's replacing a .Net 1.1 version.  The web config files have changed substantially, I can't copy the web.config from the 1.1 version and use it with the .NET 2.0 version.  Since I only need to save a couple of settings, I'm just having my Delphi console app ({$APPTYPE CONSOLE}), read those settings from the old web.config and update the new web.config.   I'm creating a couple of instances of IXMLDocument and reading from one and writing to the other.

To keep the size of the console app down, it doesn't use forms.  Since IXMLDocument uses the MSXML parser, it requires that the COM runtime be initialized.  That's all and good, I just call CoInitialize(nil) and match it with CoUnitialize.  When I started testing the new code, the call to CoUnitialize would crash the app, but only outside the debugger.  Those are the fun ones to debug.

Calling our trusty friend Google, I was able to quickly find a useful link.  I needed to call Application.Initialize as the first statement in the project files.  That's standard for most applications, but not usually used for console apps.  I added that line (plus the references to forms) and the error went away.  Very nice.  It added 300k to the size of the executable. Not so nice.  I looked at the source code to Application.Initialize and it consisted of just the following line:

if InitProc <> nil then TProcedure(InitProc);


So I made that the first line of code and removed the reference to forms.pas.  Everything worked, and the file size didn't take the 300k hit for code it really didn't need.  There's a lot to be said for having the source code to your runtime libraries.


Friday, April 13, 2007

SQL UPDATE from another row in the same table

My SQL skills are getting rusty.  I have some code where I needed to quickly copy a field from one row in a table to another row in the same table.  Bascially, a self-referencing UPDATE. I knew I could so it with a simple UPDATE statement, but I forgot the ANSI syntax.  Self-joining UDPATE statements can be a little squirrelly, so it's best to follow the ANSI standard.  So I went looking for the Master, Mr. Joe Celko.

I did a quick google through the newsgroups on celko update "sql Server", and I found what I was looking for on the third match.  If you really want to learn SQL as a language, Celko's books are very good.

This is what I ended up using:

UPDATE mytable
   SET filterdata = (SELECT src.filterdata
                       FROM mytable src
                      WHERE src.keyid = 5)
 WHERE keyid = 1

The table and field names have been changed to protect the innocent.

Tuesday, April 10, 2007

Understanding SQL Server error 18456

I came across an odd problem with SQL Server Express.  We have a test server with various versions of SQL Server installed for QA to use.   Of the QA techs was unable to connect to the instance of SQL Server Express when he used a SQL Server login.  The code was not returning an error error code, so I decide to take a look at it.

I tried connecting to Express from MS SQL Server Management Studio under that account.  SSMS returned an 18456 error, basically it couldn't connect.  That was just slightly more useful than what I had before, but it provide two things.  It ruled out the app as cause of the problem, and it gave something that I could google with.

The best match I got was Understanding "login failed" (Error 18456) error messages in SQL Server 2005, on the SQL Protocols blog.  Basically, the error 18456 error is purposely vague to prevent nasty people from trying to hack into your server.  To figure out why the login failed, you need the "error state".  Error state is not returned to the client, but it's written to the log file.  That file will be in the LOGS folder of that instance of SQL Server under the name ERRORLOG.   From the log file, you'll get more information about why the login failed:

2007-04-10 09:54:45.14 Logon       Error: 18456, Severity: 14, State: 8.
2007-04-10 09:54:45.14 Logon       Login failed for user 'youridhere'. [CLIENT: 10.0.0.1]



From the first line, we get the eror state.  Yay, it's 8.  So what does that mean?  The states are documented in the blog posting reference above, but I couldn't find it in my copy of the BOL.  It is documented in the online version (and probably in the latest BOL) at SQL Server 2005 Books Online.  Here are the documented states:


































State Description

2


User ID is not valid.


5


User ID is not valid.


6


An attempt was made to use a Windows login name with SQL Server Authentication.


7


Login is disabled, and the password is incorrect.


8


The password is incorrect.


9


Password is not valid.


11


Login is valid, but server access failed.


12


Login is valid login, but server access failed.


18


Password must be changed.


Any other error state is considered to be an internal error.


So it boils down to the password being incorrect, which in this case it was. 


Friday, March 23, 2007

Aero Glass on my ancient GX400

My latest video card arrived this morning and installing it was a much better experience than what I went through with the Diamond card. I have a Dell Optiplex GX400 that is about 5 years old. I installed Vista Ultimate on it so I could test apps under Aero Glass. That had ruled out VMWare. The GX400 has 5 empty PCI slots and an AGP4x slot. Since most new cards are PCI-Express or AGP8x, I tried a PCI based card. That experiment failed and I ordered a BFG GeForce 7600GS OC. It claimed to work with just about any AGP slot.

When it came in, I removed the old card and plugged in the BFG card. I turned on the PC and booted Vista up. Vista recognized the card and installed the GeForce 7600 drivers that apparently come with Vista and requested a reboot.

After the reboot, I was in 640x480 hell, but after a little twiddling I had a decent resulution and refresh rate. I did have to refresh the Windows Experience Index. It was at 1.0, hel back because of the video card. The graphics rating went from 1.0 to 5.9, and Vista enabled the Aero Glass theme automatically. The overall number was 2.7, but the CPU was the weak point, memory and HD access were 4.1 and 5.3. Good enough for what I need to do.

The BFG card was cheap in cost ($150+), but it came with a decent feature set. It will drive two monitors and I didn't have to install any drivers. It has 512MB of it's own memory and fully supports DX9. Not bad, not bad at all.

Thursday, March 22, 2007

Fixing Wise Installation System 9 problem with shortcuts in Vista

We were testing one of installers under Vista and the dreaded "User Account Control" dialog was being launched for every shortcut that was created by the installer.  Running the applications referenced by the shortcuts did not through the UAC, just the shortcuts.

I took a look the shortcuts and they didn't have a direct link to the apps.  Instead they looked like this:

"C:\Program Files\Company\App\UNWISE.EXE" /W1 "C:\Program Files\Company\App\INSTALL.LOG"


This was Wise 9's attempt to mimic the self-repair feature of Microsoft's Windows Installer.  If you are using Wise 9 Professional, you can fix this by opening the shortcut action in the setup editor and clearing the self-repair checkbox.  If you have the Standard version, you'll have to edit the installer script (.wse) with a text editor.  For each shortcut, you would remove the line of script reading 'Flags=01000000' from the Create Shortcut script action code block.  This is documented in the Altiris Knowledgebase as article 23832.  I found that article by searching the Altiris support forums and I came across this message thread.