1-800 CONTACTS has surprisingly excellent customer service

March 6, 2011 2 comments

I mean, maybe I sound silly, but really it is amazing!  I am not affiliated with them in any way, just normally a cynical but in this case a very happy customer.  I wonder who does their phone support.  It is sad that these days decent service is SO rare to encounter.  Here is what I wrote to them on their web form:

I don’t normally do this, but I have to commend you for your phone customer service, which over the years I’ve found to be consistently excellent, far beyond any other.  These days customer service is consistently terrible across the board, it is a relief and a pleasure to deal with yours.  Every time I’ve had to call, an actual representative picked up on the first ring, and knew my account from the caller ID, and were very pleasant and had all my relevant information ahead of time without having to ask, only confirm.  Yours should be the model of how all good customer service should be.  I hope you enjoy many loyal customers like myself because of these good business practices.  Thank you!

To give a counter example, the other week, I called up to simply activate two different replacement credit cards, from two different companies, and for both I had to politely listen to all of the multiple and relentless “scripts” and decline over and over again every single one of their BS “offers” that provide no benefit whatsoever WHEN I’M JUST CALLING TO ACTIVATE THE **** CARD BECAUSE I HAVE TO AND GET ON WITH MY LIFE THANK YOU VERY MUCH.  Ughhhhhhh……

ATI Catalyst Control Center will not install

December 4, 2010 Leave a comment

Scaling Options bug workaround – Catalyst Control Center

December 4, 2010 Leave a comment

Thanks for the workaround at:  http://forums.amd.com/game/messageview.cfm?catid=260&threadid=107707

1. Apply the target problem screen resolution
2. Apply the correct scaling options in CCC
3. Immediately reboot.  Setting should (?) stick now  :(

Google Chrome browser offline install

September 21, 2010 Leave a comment

Catch and log unhandled exceptions in your .NET application, and suppress the horrible, ugly, useless default Windows exception dialog

June 15, 2010 Leave a comment

Here is one example of catching and logging unhandled exceptions. This should go in the static constructor (you probably will need to create one) of the class that contains your application’s Main() method. (Default is typically Program.cs in Visual Studio.) The ThreadException parts only apply to Windows Forms, you can strip them out if you’re not using WinForms.

EDIT: In the default WPF app in Visual Studio, you’d put this in the App partial class in App.xaml.cs.

static Program()
{
	Application.ThreadException += new ThreadExceptionEventHandler(Application_ThreadException);
	Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);
	AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
}

static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
{
	var listener = new TextWriterTraceListener("UnhandledExceptions.log");
	listener.WriteLine(DateTime.Now.ToString("MM/dd/yyyy hh:mm:ss tt"));
	listener.WriteLine(e.ExceptionObject);
	listener.Flush();

	MessageBox.Show("Unhandled exception was logged.");
	Environment.Exit(0);
}

static void Application_ThreadException(object sender, ThreadExceptionEventArgs e)
{
	var listener = new TextWriterTraceListener("ThreadExceptions.log");
	listener.WriteLine(DateTime.Now.ToString("MM/dd/yyyy hh:mm:ss tt"));
	listener.WriteLine(e.Exception);
	listener.Flush();
	
	MessageBox.Show("Thread exception was logged.");
	Environment.Exit(0);
}

Stupid WPF data binding bug – sometimes OneWay binding breaks or stops working

May 28, 2010 Leave a comment

Oh! The correct way to do this is:

“Use mode=TwoWay and set the UpdateSourceTrigger=Explicit.”

Of course! Why didn’t I think of that earlier! I love all of the examples explaining this behavior! Thanks for just removing my binding for no reason and being impossible to troubleshoot!

http://stackoverflow.com/questions/1389038/why-does-data-binding-break-in-oneway-mode

At least I have a workaround now.

.NET Tracing / Logging Usage – Part 2 – Trace Source Example

May 26, 2010 1 comment

Unfortunately my previous example does not really support writing a Verbose event to the log. So here is an example using TraceSource.

Config file

<system.diagnostics>
  <sources>
    <source name="sourceName" switchValue="Information">
      <listeners>
        <add name="listenerName" />
      </listeners>
    </source>
  </sources>
  <sharedListeners>
    <add name="listenerName"
      initializeData="LogFileName.log" 
      type="System.Diagnostics.TextWriterTraceListener"
      traceOutputOptions="DateTime"/>
  </sharedListeners>
  <trace autoflush="true" />
</system.diagnostics>

One recommendation is to use the namespace or application name as the source name.

Again, valid values for the EventTypeFilter are: (least inclusive -> most inclusive)
Off, Critical, Error, Warning, Information, Verbose, ActivityTracing, All

From code

Log = new TraceSource("sourceName");
Log.TraceEvent(TraceEventType.Verbose, 0, "message.");

Follow

Get every new post delivered to your Inbox.