Reclaiming my CPU...

I removed the last version of “Norton Anti-Virus” (and all of the other stuff that I’ve been upgraded into over the years) from the last of my machines yesterday. I’ve replaced it with AVG, currently the free version to test it out. All of the machines feel more sprightly and run faster. One of my old laptops which is now only used for fire-side web browsing is now actually usable again!

Managed Excel addins

One of my current clients has got me drifting back towards my Investment Banking roots by developing an Excel addin for them. Luckily for me it’s a banking client with a twist compared to my previous banking clients; they’re happy for me to work as an external consultant, doing most of the work from my office at home and working on my contract terms. The development work so far has been quite interesting.

Bug in overlapped UDP port unreachable errors?

I’m currently fixing a bug in the UDP side of The Server Framework. The problem is that I’m failing to handle how Winsock reacts when an overlapped SendTo() results in an ICMP Port Unreachable response from the remote host. This error gets reported by failing a pending WSARecvFrom() on the same socket by returning 0 bytes from the WSARecvFrom() with an error code of ERROR_PORT_UNREACHABLE. This would be fine if the framework didn’t assume that all errors from an overlapped WSARecvFrom should mean that we don’t post another read… You may recall from when I was doing some work on making the framework survive low resource situations that we can’t just issue another read when the previous one failed due to a low resource situation as we would just continue the problem, so we back off and recover later.

JetByte News: Short term contract based at our Guildford office for Lloyds TSB

We’re building an Excel Add-in (XLL) for Lloyds TSB which allows further add-in functionality to be written as managed code (e.g. in C#). This project is being run on a “time and materials” basis from our Guildford office and we’ve negotiated to keep the IP rights of the underlying managed XLL shell for possible later resale or use in a product.

Thank you Raymond

Raymond Chen has just blogged about “The importance of the FORMAT_MESSAGE_IGNORE_INSERTS flag” over on The Old New Thing. That’s another annoying bug fixed ;). I’ve occasionally wondered why I get some less than informative error messages sometimes, I wasn’t passing the flag in my GetLastErrorMessage() function and it calls itself if FormatMessage() fails and so sometimes I get an “invalid parameter” error messages when what I could get might actually be more useful to me.

VS 2008

I’m currently rebuilding my world with Visual Studio 2008. So far things are going ok, but as I mentioned back when I was playing with Beta 2, the new C4627 warning about header files being skipped when processing precompiled headers is a bit broken… It seems that the code that works out if a header file is skipped (ie not included in the precompiled header but above the #pragma hdrstop line works on exact path matches rather than a file include graph.

Back in time with DDE

After completing some work for client with the custom CLR hosting server I’ve started looking into a problem for another client, it’s a bit of a transition as the problem that he’s having is with a DDE connection from his server to a SCADA system that monitors the industrial plant where the server is based. DDE was the original way that Windows programs shared data between them. It’s been around since 1987 and, well, that shows.

CLR Hosting lifetime issues bite again...

I’m looking into adding CLR deadlock detection into the CLR hosting code that’s used inside The Server Framework and, once again, the fact that you can’t cleanly shutdown the CLR host is causing me problems… Since the CLR can’t be stopped by a host without terminating the host process (and that’s by design…) you need to be aware that any of the code that you have plugged into the CLR by way of the hosting interfaces can be called into during process shutdown.

Performance counters that don't show up in perfmon

My current server development for a client has been going well but this week I finally got to the point where I wanted to look at the peformance counters it was presenting and they weren’t showing up in perfmon. My daily development for most projects is on my x64 box and I was building the server in x86 mode and although it was registering its counter DLL correctly it was an x86 DLL and the x64 perfmon can’t load x86 counter dlls.