Free Syslog Server for Windows: tftpd32

I just tried to find a free syslog server for windows and it took far too long to find anything legitimately free, and / or Open Source, and / regularly updated.

Imaging my surprise to find that tftpd32 has a syslog server (that I have used before and completely forgot about…) and it is free and open source. Further imagine my disappointment that it was not the first result when searching for “free syslog server windows.” Hopefully this will help move it up in Google’s results…

You can get it here:


Despite the name, tftpd32 is available in 32 and 64 bit varieties, and includes (as you might imagine) a tftp server, dhcp, SNTP, Syslog and dns serving capabilities. And it requires no installation – just unzip and run!


By default the DHCP, TFTP and syslog servers are enabled (this is the configuration you would want if you were setting up devices like Cisco switches) – I would highly advise turning off the dhcp. Also make sure the correct interface is selected. Set your computer’s IP address as the syslog server, and watch the messages flow:


Office 2013 isn’t just sluggish and monochromatic

Office 2013 Preview isn’t just sluggish and single-colored to the point of being depressing:

I’m pretty sure this might be the most features removed from a release of Office. Have a look here – it’s downright depressing…

Changes in Office 2013 Preview

Notice the large number of features removed with no compelling reason. At least one feature (broadcasting powerpoint presentations) was removed so they could try to force you to pay for Lync.

Why Microsoft, why?

Looking for Setup Projects in Visual Studio 2012?

There aren’t any. Microsoft quietly removed all Visual Studio Installer project types from Visual Studio 2012, instead pushing the use of InstallShield Limited Edition:

Windows Installer Deployment:

Visual Studio 2012 New Features: Compatibility:


There is surprisingly little information about this online. I got a chance to ask about it at TechEd 2012, and was told that WiX Toolset is the “future” of setup projects in Visual Studio, but they didn’t want to bake it in because WiX is so frequently updated.

Problem #1: None of the existing Project templates that included setup projects were updated to use either of the two options. (In fact the Shared Add-in project was removed altogether).

Problem #2: InstallShield LE is not a reasonable option (3rd party, requires registration and I hear projects expire), and WiX required learning yet another dialect.

Problem #3: A LOT of people have significant investments in Setup Projects.


Why did Microsoft remove them? Possibly for the same reason the word “legacy” is used when referring to desktop applications – Microsoft would love to take 30% of all your earnings through the Windows Marketplace, so they are certainly not going to help you deploy “traditional” apps if they can help it. It’s a really bad decision based on a painfully flawed strategic direction… and I doubt there is much we can do about it.

Unless somebody figures out how to put the functionality back in…

How to Activate Windows 8 Enterprise (and Enter or Change the Product Key)

Wen you install the version of Windows 8 Enterprise from MSDN (and I presume TechNet), it assumes you will have a KMS (Key Management Server) in your domain.
When you try to activate it will fail (unless you actually do have a KMS…) – I saw errors about KMS and missing DNS names.
Lastly, there appears to be no way to enter or change the product key to the one provided by MSDN.

The solution: you have to change the product key using the command line:
Open an elevated command prompt, and type the command “slmgr.vbs /ipk ” followed by your MSDN / TechNet product key.


After a few seconds you should see a popup window letting you know the product key was successfully installed.

Note: this is based on the instructions here:

In my case, this immediately removed the “Activate Windows” overlay as well as the desktop watermark with the version and build number.

AT&T is having a DNS outage 8/15/2012

Noticing that you cannot access quite a few websites? Emails bouncing? Is your site traffic lower than it should be?

Is your domain’s DNS hosted with AT&T?

As of 12:21 pm EDT (we first noticed at 11:20 EDT) AT&T is experiencing a massive DNS outage.


This morning we started getting reports from users that inbound emails were bouncing. I soon discovered that I could not resolve our MX records externally, then that I could not even ping our website.

According to the Twitterverse AT&T is having a massive DNS outage presently. Our AT&T rep said it might be a DOS attack, and there was no estimate as to when it will be fixed.


UPDATE: 12:25 PM – (Glad I said something)

No sooner did I post this than our AT&T hosted DNS started responding again.



Looks like it was only up long enough for my test server to get a cache – the authoritative DNS is still unresponsive.



AT&T has informed some customers (including us) that the issue is resolved. Testing our site using the free Uptrends availability tool shows that it is somewhat responsive… however inbound email is still not working reliably and says our DNS servers are still timing out.

According to a comment on this post, this outage started at 9:30 am, and it is still causing problems for us 6 hours later.

Handling Invalid Enum values in a DataContractSerializer

This all started when I was trying to serialize a CodeDom graph (actually a CodeNamespace object) using a DataContractSerializer. I hit the dreaded “Enum value ‘20482’ is invalid for type…”


(Note: this error was the showstopper after many other errors)

The problem: System.CodeDom.MemberAttributes should have the [Flags] attribute, but it does not. the value of 20482 is the bitwise OR of MemberAttributes.Final (2) and MemberAttributes.Private (20480). One solution was to go through all object in the CodeDom tree with attributes and force it to a single value – this is not really acceptable. Unfortunately, since we are dealing with a .NET Framework type, there is really no way to fix the type itself.

The solution: Fix the serializer… Read on for details.

Continue reading

Determining current laptop battery drain in .NET

My laptop battery’s lifetime has dropped significantly of late, and I wanted some means of determining the actual current being used by the system – sort of like a Power Meter for the laptop battery. I‘ve actually been looking for such a tool off and on for months. I’ve seen things you have to pay for, things that are quite old, and things you can do yourself in C++…

Well I don’t want to pay for something that tells me the power usage in mw (milliwatts). Nor do I want something with “Vista” style. Nor do I want to deal with c++.

1. Performance Monitor

Not sure why I didn’t think to look here – maybe because it’s a big mess – but it turns out the power utilization in mW is in a couple places in windows Performance Monitor:

Under Power Meter –> Power:


Do not use the _Total option – at least on my machine it is incorrect. Use all instances, then look to see which instance corresponds to your actual battery. (note: this only works while your laptop is running on battery power. “Power Meter” returns 0 when you are on AC power)


You can also use Battery Status –> Discharge Rate. There is also a Charge Rate that will have a value when the battery is charging. The only catch is that access to Battery Status requires Administrator privs.


2. .NET Performance Counter – Forms control

Forget WMI queries and System.Management – Be lazy! Visual Studio has a Server Explorer tab that allows you to easily add performance counters to your Windows Forms project.

Open Server Explorer –> You computer –> Performance Counters


Find Power Meter, expand Power, and drag whichever power meters you need onto your form. (In my case I just needed Power Meter (0).


This will add performanceCounter1 to your project. To get the current power usage in mW, just access performanceCounter1.NextValue().


3. .NET Performance Counter – Code

Even easier, once you know the Category (“Power Meter”), Counter (“Power”) and Instance (“Power Meter (0)”), you can create the performance counter in code like so:

(Add a textbox and a button to your form), use this as the button event handler

        private void button1_Click(object sender, EventArgs e)
            var powerCounter = new System.Diagnostics.PerformanceCounter("Power Meter", "Power", "Power Meter (0)", true);
            textBox1.Text = powerCounter.NextValue().ToString();


Chances are I will release a (free, open source) tool based on this, but it’s painfully simple to just get that current value. (Now to start seeing the effect of the backlight, and hard drive, and cpu load…)