Interesting Find #11

  1. .NET v3.5 Product Roadmap
  2. Information overload in Outlook? Check out ClearContext and Jello.Dashboard
  3. Nokia's nano-technology based Morph Concept – very interesting on where we might be heading! Oh how I am envious of our future generation. Smile
  4. Although SQL 2008 benchmarks are out and quite impressive; if you want to run the CTP before March, it seems you cannot – lol!  What is MS thinking? Duh!
  5. C5 – Generic Collection Library
  6. Visual Studio themes; I personally like a few of the dark themes.
  7. Migrating to gmail becomes easier from Outlook, PST files, etc.
  8. However, if you want to backup your gmail (why you would want to do in the first place is besides me), and want want to use G-Archiver, then do so at your own peril!!!
  9. Tools galore – check out Hanselman Ultimate Tools List

The Printer Spy – tiny tracking dots on your printout!

This is scary! It seems like your printer is spying on you using tiny tracking dots which are automatically printed whenever you take a print out. Of course these dots are unique and can be tracked to your individual printer and are not visible to the naked eye (otherwise you won't have noticed them, innit?)

The US govt. has convinced most of the printer manufacturers to add this to every page. EFF highlighted the issue first and had issued a press release. Since then they have released a decoding guide that you can use to figure out how to find this. They also released a list of printers which either have or don't have the dots; and also point the fact that just a "No" does not mean there is no forensic watermarking present, it just means there could be some other kind of marking. Make sure you are consulting this list whenever you next buy your printer.

<configSections> blues

This stumped me for a while and I was not sure what I was doing wrong. Apparently it seems if you don't have the <configSections> element in your app config file as the first thing then you get a weird error saying "Only one <configSections> element allowed …." (see example below). The description is misleading – you will see this error even though you only have one <configSections> element in your config file. To fix this, move the <configSections> as the first element in your app config file and all will be well.

Example error:

{"Only one <configSections> element allowed per config file and if present must be the first child of the root <configuration> element. (C:\\src\\MyCallApp\\VOIPCall\\bin\\Debug\\VOIPCall.vshost.exe.config line 10)"}

P2P Programming with WCF and .NET v3.5

My article on P2P programming with WCF and .NET v3.5 was finally published on MSDN. This was written a few months ago and has been going through the internal process at MS to get published- finally it is up there – better late than never I guess. Big Smile

I discuss the new features for P2P programming in WCF and .NET 3.5 and how things have moved up the stack in being a first class managed citizen now as opposed to you. Although the code was build and run on Vista you can run most of it on XP; however some elements such as PNM, Contacts and Collaboration are Vista specific.

Interestingly, you cannot download the source code for the samples and the small app that I had written – you can see the screen shots and the code snipped. If you need the complete solution let me know.

Load testing WCF

Someone recently asked about how to load test WCF – apart from the usual things like LoadRunner, VSTS Test Load Agent, etc a couple of other interesting options came up. One is WCF Load Test and the other JMeter. WCF Load Test generates a unit test taking in data from a a trace file along with the relevant WCF proxy or interface.

I must admit, JMeter would not have been one of the things that would have come to mind to me in this context, but technically there is nothing stopping from you using it as you can stress and load test any http request.

.NET 3.5 ThreadPool increases

This is probably old news now, but something which has me concerned as it can cause lots of unseen issues. In .NET 3.5 the default ThreadPool count has been increased ten-fold from 25 to 250 per processor per process! ThreadPools as we know are quite handy – not only do they help when an application comes under load instead of adding more pressure in a stressful situation. They also allow us to readily "reach into" a pool of threads and "pick one" to use – saving the costly overhead of creating and destroying threads (in case you did not know creating and destroying threads is an expensive process).

Yeah OK; so why do I care? Well, most people won't but there are situations where this will cause unexpected behaviour and even lead to Out of Memory exceptions.

Essentially each thread created takes 1 Mb of stack space. Say you are creating a server app and spawn a different thread for IO and if are running on a 8-proc Win x32 box, with this change your application will cap out now at 2000 threads (8 x 250)! With each of them taking 1 mb that is a total of 2GB – which is the total addressable space in Win x32! Ouch!

Of course you can change this – for a web app this is a simple change to the web.config file; however if it is not a web app then this does require a change to the code albeit simple. So, if you suddenly start seeing out of memory exceptions, with nothing really changing, then this might be the cause.