MyNetwork 2.1 - Now with listening-process data!

I recommend updating to the latest version if you need to view the TCP and/or UDP connections on your system. This version updates the listings to include the listening-process name and process ID.

OK, I also fixed a minor port-number formatting bug. ;)

And don't worry, more improvements are in the oven!

You can get the new version here. Below is a screenshot of the revised display. :)


p.s. I love my new job. :)

The New UI

Now for some GOOD news!

On Monday I'll be starting work for a computer game company. :)

Here are a few more smilies to show you how I feel. :) ;) 


!@#$%^ Rebate Process

You can see on previous posts that I recently bought a new video card because I was having hardware trouble with my GT9800. The new card included a $20 rebate, and being frugal, I followed the process to get my just rewards. Here is the notice I received today:

We are pleased to inform you that your rebate, with the 
Basic service level you selected has been processed and 
approved on 09/29/2010.

Your Visa® Card will be mailed within 8-10 weeks . 
Please contact us if you have any additional questions.
Below is the summary of your rebate registration information: 

   Tracking Number: xxxxxxxxxxxxxxxxxxx
   Rebate Offer: Gigabyte Special Mail In Rebate Offer 
   Rebate Item : GIGABYTE GV-N465UD-1GI Video Card
   Rebate Item UPC number(s) :  818313010834
   Rebate Award: $20.00
   Service level Basic: $20.00 
   Final  Award: $20.00

When I went to fill out the online form, what did I find? An "offer" to get the rebate within 3 days. The catch? They wanted, like, $2 of my rebate. I chose to keep my $2 and wait 8-10 weeks, which is why the notice referred to my "Service level" as "Basic".

As opposed to the Premium level, where I fork over $2 to someone who makes money just by failing to delay sending me my money.

So I have to ask: if you can take my money instantly, why would it take 8-10 weeks to send me my rebate, unless of course I pay someone (presumably a 3rd party) $2 to speed up the process?


We all know, actually, that this type of rebate process is just a scam to offer rebates but have people forget about them, or fill out the forms incorrectly and have them rejected.

I'll go sit quietly in the corner, now, and fume some more.

And wait for my rebate while thinking of what I can do with my extra $2.

Baking A Video Card -- Followup

I've got the new GIGABYTE GV-N465UD-1GI GeForce GTX 465 installed and it's rocking right along. :) The revived EN9800GT has been packed away as a hot spare, although my fingers are crossed that I'll never need it. Yeah. Right.

Anyway, I wanted to pass along another tidbit about the Asus EN9800GT Ultimate graphics card. The default fan speed is barely high enough to prevent it from melting down -- about 1400 RPM. That fan speed setting basically keeps the GPU temperature at just under 80 degrees Celsius. That is not good, and could be the reason that I started having problems.

And before you ask, yes, my case has great ventilation. Everything else in the case is cool as a cucumber.

Asus supplies an add-on monitoring tool that can control the fan in a better manner, allowing you to choose the built in "automatic" (as in, barely avoiding meltdown) or a more carefully controlled fan speed based on GPU termperature (or a manually chosen constant speed).

My best guess is that the marketing folks wanted the quietest possible fan speed that the card could tolerate. In addition, the Asus monitoring program nags you to install other stuff every time it started up. Yes, the card is several years old, but the same software is still on the Asus support site.

In contrast, the default fan speed for the Gigabyte card is about 2600 RPM, keeping the card below 60 degrees Celsius no matter how I've stressed it (so far). And it is quieter than the Asus, as well.

That being said, I've now found some tools on the NVidia site that provide alternative monitoring and, most importantly, fan control from the NVidia control panel! :)

So, if you have the Asus EN9800GT Ultimate card, get that fan speed up and the temperature down if you want a longer hardware life. And you can probably use the NVidia supplied tools to do it.



Baking A Video Card -- A magical fix for hardware failure

No, my video card is not trying to deal with glaucoma, although its behavior over the past few weeks might be interpreted as such. Stay with me here and I'll tell you how my gas oven fixed it. :)

The Backstory

I've been running an Asus EN9800GT Ultimate graphics card for several years, paired with a Core2 Quad Q6600 and 4GB of memory. There's nothing special about the system, although when I built it it was further up the price/performance curve than it is today. Nevertheless, the Asus card has always performed admirably, running quite well for the hoops I put it through on a daily basis.

Until some weeks ago. :| The video started stuttering and hanging when doing graphics intensive things, like running World of Warcraft, or StarCraft 2 together with VMWare Workstation and Windows Media center. Yes, all at the same time.

I had begun to think that recent updates to these programs had made changes to their video requirements. Or maybe it was the latest NVidia drivers; they had had some recent issues. In any case, two days ago the video choppiness was reaching a state where I thought it was going to induce an epileptic fit

This was all the more strange because the frame rates reported by the program I was running (OK, it was World of Warcraft) were from 30 to 100 fps. The obvious choppiness was confusing, if those numbers were to be believed. I looked for IRQ conflicts, disk access conflicts, and all sorts of other things that could cause the program driving the video to stutter.

Nada. No joy.

The Failure

Yesterday I tried rolling back my video drivers but got no improvement. Upon reinstalling the latest NVidia drivers and undergoing the requisite restart, I could no longer even get a valid video signal. Nothing. Not even the boot text, just colored blocks, or weirdly noisy colored lines.

Things looked grim. I tried resetting the CMOS on the motherboard. Still no joy.

Now, over the years I've let the magic smoke out of many a PC component. Those are inevitable war wounds when you have a penchant for building your own systems and experimenting with hardware. My past overclocking adventures killed off many disks and several motherboards, but never a video card.

Besides, those days are behind me. My system today is all stock parts --  no mods, no overclocking (at least, not on my own). No shenanigans. Also, I had paid for top-notch gear -- no off brands -- and it was all sourced from a vendor I trust and recommend. I've been buying all the important stuff from them for 10 years. No, if there was a problem, then it was a manufacturer issue.

Stay with me, I'm getting to the part where I put my the Asus video card in the oven!

And yes, technically my Asus card is an "overclocked" card, but that was done at the factory and is really just a marketing scheme. All chips come with varying tolerance produced by the fabrication process. All the vendor needs to do is test them and separate out the high performers, bump up the clock on those cards, and charge more.

The Eureka! Moment

The symptoms were familiar -- I suspected either the motherboard or the video card was going bad or gone. I crossed my fingers and hoped it was the video card. Testing the Asus card in another machine rewarded my wish -- the system wouldn't even boot with the Asus video card in it. :)

At this point I quickly put my wife's system back together, made sure it still worked, wiped my prints off the keyboard, and quietly slipped out of her office.

The smile on my face as I went back to my office lasted a few seconds, right up to the moment I contemplated the need for a new video card and the new lack of access to my working system.  My search through a fairly large pile of out-of-favor gear produced no workable spare to use in the mean time. I was SOL.

As circumstance would have it, I had been window shopping for months, now, in anticipation of upgrading my system, and I had already decided which video card was at the right price point. Interpreting these events as a kick in the pants to do my planned upgrade, I fired up my dinky laptop, surfed over to Newegg, and ordered a new GIGABYTE GV-N465UD-1GI GeForce GTX 465.

Then I sat down to wait. I twiddled my thumbs. I was starting to go stir crazy even though I only had to wait one day -- I paid extra for overnight shipping.

The Surprise Fix

My laptop was still on so I began searching to see if anyone else had had similar problems with their NVidia 9800's (Asus or other vendor). Good old Google quickly brought me to and a thread that described exactly the same issue on a 9800GT (brand unknown). The thread included links to photos of identical visual phenomena as well as a wildly unbelievable method for possibly fixing the card.

I read the thread. Twice. And the reason why the solution might work made sense -- solder joints can age and become brittle, creating microfractures leading to intermittent and increasingly bad failures. Those microfractures can be resolved if you heat them up so that the solder remelts.

Here is the recipe that worked for me as derived from the thread linked to above:

  1. Remove the fan assembly down to the bare PC board
  2. Clean off the thermal paste
  3. Get a cookie sheet and cover it with tin foil
  4. Use more tin foil to create two 1/2 inch "logs" to hold up the card
  5. Place the card across the "logs" like plywood across two saw horses (GPU UP)
  6. Preheat my gas oven to 385 degrees Fahrenheit
  7. Bake the video card @385F for exactly 8 minutes (using the baking timer, of course)
  8. Take the card out of the oven and let it cool
  9. Apply the recommended film of Arctic Silver 5 to the GPU surface
  10. Reassemble the fan and cover and pop it back into the system

Viola! My system was working again, modulo the clock reset that I caused by clearing the BIOS.


I doubt this sort of failure, and the corresponding solution, will be necessary for many folks. Nevertheless, it was an interesting solution to a sad problem. That being said, if you do this, don't expect the fix to last, or so I am told.

And don't go sell the card to someone else. The problem will probably come back, and you don't want that bad karma.

I just hope the fix lasts until my new card arrives tomorrow. In the mean time I can work while the first component of my newest system makes its way to my doorstep. :)

*twiddles thumbs*

*fires up World of Warcraft*


Software as a Service (SaaS)

Designing systems that can scale to very large sizes is a challenge. The requirements are demanding or become so very quickly. Commercial success of your product is also a two-edged sword. 

  • Will your architecture handle the initial demand?
  • How quickly can you expand resources to meet new demand?
  • Are you paying way too much money to an OS or database vendor?
  • How quickly will you need to duplicate your NOC/SOC?

I put together a slide deck discussing some of these issues for a small-group presentation a few weeks ago. I have posted the slides here because I wanted to share those thoughts.



IP Packet Sniffer -- FROZEN

Years ago I put a non-trivial amount of energy into the IP Packet Sniffer tool. There was a "what is happening on my network" thing going on inside my head, driving research into what the Windows OS APIs could give me, and I derived a great deal of fun from the work.

Times change, and although the tool was a great learning experience -- what better way to learn the guts of network protocols than dissecting the bits pulled from the wire -- this tool is way behind serious tools, like Wireshark.

Wireshark is what you should use if you are serious about investigating your network traffic (unless you need something harder core). Wireshark leverages WinPCAP and is therefore far less limited than a raw sockets based method (thanks, Microsoft).

The upshot is that I am freezing work on this tool. I've end-of-lifed a few other tools recently, and removed the download links to those. However, this one still has some life left, if only because it is significantly simpler to start up than Wireshark, so I'll keep making the bits available.



MyNetwork 2.0 - Facelift By MFC 9

I started the MyNetwork program years ago while exploring various Windows APIs providing network-related information. Basically, it was a research project. The tool interface was my quick-and-dirty approach to displaying those data.

Well, MyNetwork was complaining loudly, telling me it felt neglected. In order to stop its whining I've given it a facelift to a more modern UI via MFC version 9.0 (which comes with Visual Studio 2008).

What a difference three MFC versions can make! Now it looks like your Outlook client. :) Everything is in user-movable, dockable panes. Windows with dynamic data are individually refreshable with the obvious button. You can also configure autorefresh for all dynamic-data windows using a ribbon bar toggle.

You can get the new version here. Below are some screenshots. :)




New Flocker 2.2.1

This is just a minor update. I had to get the already-completed work out of my hair (figuratively speaking) before starting the facelifting process for the MFC-based tools. :)

Get the latest version here.

Updates include 

  • Allowed manipulation of the world box to give a better view of teleportation vs. reflection.
  • Saved field of view and world box gap to the bird configuration snapshot.
  • Added a bit more geometry to bird tails.
  • Fixed a visibility issue for "deader" birds (a face culling problem).




Tool User Interfaces - Got Facelift?

I've been comparing the old dialog-based user interfaces that I created for the tools and this site to the new capabilities of MFC in visual studio 2008 (VC9) and the newer outlook-style widgets. I think it is time to pamper their (sometimes 8+ year old) user interfaces with a facelift . :)

Stay tuned. :)


Flocker 2.2

Yes, updates for my programming playground are arriving at a rapid pace. I've been having way too much fun adding 3D fly-through via mouse control. :)

Get the latest version here.

Updates and additions in this version include:
  • Added a "Reset Light Defaults" menu item that resets all the lights to an off position with spotlights aimed at the center of the volume.
  • Added viewpoint fly-through with simple avatar and mouse controls.
  • Added a field-of-view control to control display.
  • Refactored some internal code.
  • Removed the testing window pane.



Flocker - New Version

I have been having a lot of fun with LUA lately, expanding the Flocker program to create a better 3D display experience. :)

Get the latest version here.

Updates and additions in this version include:

  • Added configurability of 8 lights covering the gamut of OpenGL controls, including diffuse, ambient, and specular colors, and omnidirectional light position (directional-at-infinity lights are not yet enabled). You also can choose to make any omnidirectional light a spot source and set its direction, beam width, etc.
  • Expanded the bird avatar to use 3D geometry and surface material properties.
  • Added preconfigured, programmatic generation of bird placement (accessed through the menu).
  • Added independent load, save, and delete of lighting configurations.
  • Updated tooltips and added some help buttons that open Wikipedia pages describing the topic.
  • Extended the bird-space partitioning to 3D (a performance enhancement for flocking calculations).
  • Updated LuaGL to version 1.4 so I could use some additional GLUT functions.
  • Factored the OpenGL related code out into a separate module.

Note: the OpenGL Testing tab is just there for fun. You can watch it but not interact with it. :)


Flocker Code Cleanup

LUA code *can* be compiled into bytecode chunks. However, it is normally distributed as plain text because, let's face it, bytecode is easily decompiled. Because I am providing Flocker as plain text code I thought I would go ahead and clean up the comments and remove some dead and unused stuff. I mean, someone might actually look at it. :)

I also added a few minor graphics tweaks, reorganized my color definitions to conform to the OpenGL style throughout, and got prepped for the next round of modifications. :)

The new FLocker version is 2.01.



Flocker - My LUA Programming Playground

Flocker started as a way for me to learn LUA ( ). I thought, "Hey, I've never implemented that bird flocking thing, so why not try that while I learn a new language?"

Things never stop changing when we play with software. I had to add expanded UI controls and database snapshots of the simulation state (implemented using SQLite). Next I wanted to see some statistics on who was in what state, so I moved UI stuff around into a tabbed configuration and added a data display. Most recently I expanded the display to default to OpenGL, removing the flicker (the vanilla display doesn't frame sync) and making the graphics significantly higher quality. You can switch the display tabs to see the differences.

I'm still playing with expanding the behavior of the birds (adding states) but I thought now would be a good time to make something available for other people to have fun with.

You can download the package with documentation here.


The Crucible - A StarCraft Story

Some folks know that I am life-long science fiction geek. (With a liberal helping of fantasy on the side; go Brent Weeks!) I've been fixated on the genre since I was, like, eight years old, and I have book cases filled with hundreds of books, from Abbott to Zelazny, with plenty of space occupied byAsimov and Heinlein (and yes, a lot of contemporary authors, too, like Alistair Reynolds and Iain [M] Banks).

Writers often create entire universes full of characters and stories because they are great frameworks for meta-story arcs and long term character development. Some very generous folks even allow others to write stories set in their universe (yes, I own every volume of The Man-Kzin Wars series).

Some computer game universes follow the same pattern. Last year I got interested in the StarCraft universe created by Blizzard Entertainment and started devouring all the stories I could get my hands on. 

Then I caught wind of a writing contest and thought, "Hey, I should try that!" The story had to be set in a Blizzard universe and between 2500 and 7500 words in length.

This short story was my submission.

Two Tools End-of-Life

Two of the tools on this site have outlived their usefulness. For that reason I am no longer going to support them or provide further downloads. They are

There is at least one more on the chopping block. I'll decide on that one soon, so stay tuned. :}



Updated Secure Parcel Delivery

Secure Parcel Delivery version 1.2 brings a number of long-awaited improvements.

  • Switching to the latest and greatest Cryptographic Service Provider (CSP)
    • Microsoft Enhanced RSA and AES Cryptographic Provider
    • Valid for Windows XP and later
  • Adding the Advanced Encryption Standard (AES) symmetric cipher to the fold
  • Restricting symmetric encryption ciphers and key strengths to those allowed by FIPS 140-2 (and FIPS 140-3)
    • See
    • Allowed ciphers include triple DES and AES with a minimum key length of 128 bits
    • Disabling selection of RC4, RC2, DES, 2-key 3DES
  • Allowing user selection of RSA key size from 1024 to 16384 bits in 256 bit steps
    • I suggest you take the default RSA key size of 3072 bits
    • FIPS 140-3 will require at least 3072 bits (to set a minimum cryptographic strength of 128 bits overall) but the program will let you choose keys down to 1024 bits at this time
  • Consolidation of User and Key interface elements to simplify configuration

This version is 32-bit only and tested on:

  • Windows 7 Professional x64
  • Windows Vista Business x86
  • Windows XP SP3 x86



Software Tool Updates

I've updated several tools today. The changes include a bug fix and a small expansion of capability as listed below. :)

Oh, and an update to the Secure Parcel Delivery program is on the way.



MyCryptInfo -> version 1.4

The tool is expanded to detect more block cipher modes of operation. That is, the algorithms employed to make a block cipher encrypt a chunk of data bigger than the native block size. I noticed that some new modes had been added in the Microsoft header files since last I looked. Although these modes don't seem to be available with the Microsoft native Cryptographic Service Providers (CSPs), they must be available in some third party CSPs. The modes added are:

  • CBCI - ANSI CBC Interleaved
  • CFBP - ANSI CFB Pipelined
  • OFBP - ANSI OFB Pipelined
  • CBCOFM - ANSI CBC + OF Masking
  • CBCOFMI - ANSI CBC + OFM Interleaved

MyNetwork -> version 1.3

Fixed a bug in the formatting of the lease times for interfaces with DHCP enabled. This turned out to be a 32-bit to 64-bit portability issue on windows.

MTFileTransfer -> version 1.3

Fixed the same bug in the formatting of the lease times for interfaces with DHCP enabled.


Open Sourcing Some Example Code

In order to make some examples of thread and TCP/IP server management clearer I decided to clean up the full, standalone project and post it here for your download. The project files build with Visual Studio 2008 (VC9) for Release and Debug mode on both x86 and x64 systems. Note that this project is simply a demonstration of thread and TCP/IP server management on an MS Windows system. A full-fledged application would have much more in the way of error checking, unit tests, and other infrastructure. :)

These are all plain source code files, not executables, and I'm making them available under the Mozilla trifecta license.



Updated MyCryptInfo

Today's update is for the MyCryptInfo tool that allows you to explore the Microsoft Cryptographic Service Providers (CSPs) on your system. It has been updated to run on 64-bit systems and to include some missing information about the SHA2 hash that is in the AES enabled CSP.

Otherwise the tool hasn't needed to change much.

Have fun, and don't delete any cryptographic containers that you really need!