I’m "thrilled" (pun intended) that MJ (Whacko Jacko, whatever you wanna call him) was found not guilty on all of the charges. To be honest, I thought they’d at least get him with the minor charges but ever since the beginning of this whole mess I maintained he was innocent.

Why? Cause the guy is just too naive. He really thinks he’s a kid. He’s done so many great things for charities and kids with terminal illness and it makes me sick to my stomach to think that most of the country would turn on him just because some fat ass lying bitch who has a track record of screwing people over for money made some allegations that she knew would be easy to convince people were true.

The only child abuse going on is the way that woman is corrupting her son. I’m glad the jury looked at this case from a technical perspective and did not let their emotions or the sweeping waves of popular opinion taint their verdict.

And don’t write me saying "Oh I guess you think OJ is innocent too." I am sick of people comparing this case to the OJ Simpson trial. They have nothing to do with each other. There was tons of evidence pointing to OJ and the jury in that case was affected by fears of how the public would react (cough… Rodney King… cough…) but in this case there was no evidence except the inconsistent testimony of the accuser’s family who has a history of lying and cheating, and the testimony of a bunch of former employees that tried to sue MJ before and lost the counter suit.

Okay I’m glad I got all that off my chest. Though I wish he would have moon walked out of the courtroom. That would have been such an awesome finish.

Okay I’ve been tracking down a mysterious explosion in “Allocated Bytes/sec” performance counter for the entire day. I’ve been watching an application that’s been running happily in a live environment for several days now for the first time and I’ve been keeping an eye on the performance counters every now and then.

Well today I noticed something very unusual. The Allocated Bytes/sec was fluctuating between 250,000 and 600,000 bytes per second and Gen 0 collections were happening at a staggering 1.5 collections per second! Something was giving the garbage collector a workout. While the overall stability of the application was unaffected (because the Garbage Collector was doing its job after all) I found it unsettling and I needed to find out what was causing the allocations.

It took a few hours to realize that I had left another machine open to a web page which is using AJAX to constantly refresh statistical data from a remoting server (the one I’m trying to debug) but once I found that out, I was still perplexed as to why this statistical refresh could be causing so many allocations and GC’s. All I was doing is this:

LoggingStatistics stats = new LoggingStatistics( );
stats.QueuedTotal = Convert.ToInt32( _CounterQueueTotal.NextValue( ) );
stats.QueuedPerSecond = _CounterQueueRate.NextValue( );
stats.WritesTotal = Convert.ToInt32( _CounterWritesTotal.NextValue( ) );
stats.WritesPerSecond = Convert.ToInt32( _CounterWritesRate.NextValue( ) );
stats.CurrentQueueSize = Convert.ToInt32( _CounterQueueSize.NextValue( ) );
return stats;

As you can see, I am requesting the NextValue of 5 performance counters. The performance counters are instances within a Singleton object configured to live forever so the actual PerformanceCounter components themselves are not being re-initialized on every call. But as it turns out, calling NextValue is extremely resource hungry. Now I’ve never worked with performance counters prior to .NET so I’m not sure what is all involved in the interop, but half a meg of allocations and 1.5 garbage collections per second (the above method is called once per second, and the collections are happening more frequently) seems way too high for me.

So now I have to find an alternate solution. Because if I have two or more clients connected to the AJAX web page, those statistics will be multiplied. Quite simply, I can’t rely on performance counters for this.

Fortunately, the application acting as the remoting server delivering the performance counters is also the one managing their values. For the purpose of seamless integration with Windows Server, I am still going to have to update the performance counters but at least then I can manage the frequency. What I pain.

By the way I ran into this web page after I discovered the problem which confirms my findings:

http://www.devx.com/dotnet/Article/16099/1763/page/2

I added a new TraceListener component called SyslogTraceListener that allows you to send trace output to a syslog server. Also built the DLL for .NET 1.1 too.

Download PowerTrace Freeware

Download Kiwi Syslog Daemon

This pisses me off. I read this CNET article about Dell’s spyware-related tech support calls being halved since last year. They attribute it to “better consumer awareness” and the availability of anti spyware tools.

Hello? Does it take a rocket scientist to realize that this is because of Windows XP Service Pack 2? This is what I hate about the media. They’ll spend years bashing Microsoft for lax security. Then Microsoft will make something like SP2 available to all (even those filthy software pirates) for free and the media will spend months talking about how businesses won’t install it and it breaks things. Then we see a report like this and they won’t even acknowledge that Service Pack 2 is most definitely the cause of such positive news.

I’m ready to unsubscribe from CNET. For the same reason I boycotted Tech TV. I’m fucking sick of this “it’s cool to bash Microsoft” attitude.

http://news.com.com/2061-10789_3-5738083.html?part=rss&tag=5738083&subj=news

http://www1.us.dell.com/content/topics/global.aspx/corp/pressoffice/en/2004/2005_06_07_bat_000?c=us&l=en&s=corp#tn1

I have just decided to release “PowerTrace” a .NET assembly that contains a very cool component called “TerminalTraceListener” that allows you to quickly and easily debug your apps running in either production or staging environments.

What is PowerTrace?

PowerTrace is the name of the “product” although currently it only consists of one component. It’s also free with no royalties, no license fees, no support, and no code. So it’s not really a product. It is however, fully documented and extendable so you can inherit from it if you want. I just made it about an hour ago so take it for what it is.

What is TerminalTraceListener?

TerminalTraceListener is the name of the first (and currently only) component in the PowerTrace toolkit. The way it works is simple. You add the trace listener to the listeners collection either via an application configuration file or manually in code. This registers a trace listener which is a component that outputs trace information whenever you call System.Diagnostics.Trace.Write/WriteLine/etc. By wiring up listeners like this, you can output your trace information to a variety of destinations without changing your code. In fact, TerminalTraceListener will allow your application to expose a diagnostics server port without ANY changes to your code at all!

TerminalTraceListener will listen on a TCP/IP socket (you can change the addresses and ports that it will listen on, defaults to 8096, my home town’s zip code) for incoming connections from any telnet client. The trace messages aren’t actually sent with any telnet control codes, but any telnet client will allow you to “port into” your running application to get all of your trace messages delivered to your client in realtime.

Does TerminalTraceListener show me trace messages that happened before I connect?

Nope. Not yet anyway. Feel free to derive from it and provide that capability if you want.

Does TerminalTraceListener provide any type of security?

Nope. There is no authentication and the output is unencrypted. Again, you can derive from it and implement this functionality if you’d like but implementing encryption will probably make it pretty useless if your telnet client can’t unencrypt it.

Is there any documentation?

Yes! TerminalTraceListener is fully documented (only a handful of methods and classes) and included is a CHM help file with configuration examples and the XML documentation so that VS.NET’s intellisense will pick up the member descriptions.

Implementation Details and Other Stuff

The server is implemented using asynchronous sockets. It can accept as many clients as you want to connect to it and they will all receive the same output. The server will currently consume any text that you send back to it but it currently does not support any commands.

There is no installer for this component. You can stick it in the GAC or if you’re like me and avoid the GAC at all times, just XCOPY deploy it with your app. There are no dependencies other than the Framework itself. The binary is currently compiled as a .NET 2.0 image but I’m going to make a 1.1 image available soon. I’m just too tired right now.

Enough already, go download the component!

This is pretty creepy. If I worked with the guy that came up with this, I’d probably request that a metal detector be installed at work.

r_SNAG-0000