.comment-link {margin-left:.6em;}

I Hate Linux

Friday, August 31, 2007

Six Months: One benefit... NDA

Not a second after I posted the last post I remembered one major advantage of this point... portions of my NDA with my previous employer would have expired... specifically the portions regarding their ownership of anything I create, invent, write, etc.

Why is this important?

Back when I was only an intern there (nearly 4 years ago) there was an immensely useful piece of software that came from a company in France, a piece of software that was only part of a larger suite and one that my employer was the only authorized seller of it in this nation (we rebranded it).

One problem (aside from the extreme cost)... hardware dongles.

One weekend while at home I sat down with a copy of the relevant ISO document (ISO 13818-1 defines MPEG-2 Transport Streams, the fundamental basis of digital television today) and got to writing a basic version in VB.NET of one of the applications in the suite and come Monday morning was quite proud of my work and figured I should probably tell my manager just in case they had a problem with me writing an app at home that could theoretically compete with something the company sold down the line.

After seeing a couple of screen shots my manager was shocked... and along with a short document I wrote up explaining my intent for writing it and how far I wanted to take it he took it to the department manager.

In short I wanted to make a piece of software I might sell for $50-$100 that had a few of the features of something the company sold for ~$70,000... so needless to say mine would be pretty limited by comparison.

After giving it a read through the department manager took it on to the head of the sales department and they scratched their heads for a while. Eventually the department manager got back to me and said that while he technically couldn't force me to stop building my app... he assured me that if one day there was news from up front that they'd lost a large sale because of the personal work of someone in the engineering department... heads would likely roll.

Needless to say I didn't continue it. Partially due to that threat, but also because I figured that they could technically take control of it from me at anytime due to the before mentioned NDA.

That isn't the case anymore... and perhaps it's time to consider restarting that project (from scratch of course).

Six Months

Running into a former co-worker this week made me remember a rather unfortunate anniversary that has come and gone... the six month anniversary of me leaving my previous full time programming job due to my hand issues.

Last week when seeing HD4 the PA had asked if I had any kind of assistance coming in and I said no and went through the list of things that a person in my position might qualify for and why in my case I do not and ended with SSDI and said:

... and then there's Social Security Disability Insurance which requires one to be disabled and out of work because of it for a year or be expected to be for a year... I've got half of that under my belt already which means I've got another six months to wait at least unless one of my doctors were to write a note for me saying that they still have no idea what's wrong with me and that given previous experience see no reason to believe that I'll be fixed and able to work again for at least the next six

To which he replied:

Yea I don't think we are going to be able to do that

Not really a surprise.

It's both interesting and horrifying to realize just how long of a time that's been since I last held down a full time job.

It's interesting to consider just how many nights I was able to stay up until the wee hours... and how many mornings I could sleep in without worry of alarms, schedules or having to be anywhere while it's horrifying to consider just how much that time has cost me in terms of food, gas, insurance, housing, etc... money that I don't have and will be paying for for likely years to come.

It's also quite disconcerting to realize that it's now been nearly 6 months since I went under the knife to try to fix my issue and in the end I seem to be far worse off today than I was prior to that.

Wednesday, August 29, 2007

Code2Fame Entry

To quickly add to my previous post on the subject of DHCP4WHS... last week I came up with a new build of DHCP4WHS (0.8.4) which doesn't change much from the first build (0.8.2) and offers a few cosmetic and stability improvements (more cosmetic) for it's submission to the Code2Fame Challenge.

Also for your viewing pleasure (if you've got 4:52 to kill) I've also uploaded the video I recorded for it which is available for download here or on SoapBox:

Video: DHCP4WHS Demo

I must say though that I am rather regretting my capture mechanism as it looks quite poor when compared to the other other entry video I've seen, that from Andrew Grant (no relation) and his excellent add-in Whiist which gives users users a quick and easy way to add custom web sites to their Windows Home Server.

Labels: ,

DHCP4WHS is getting noticed

In the days after I first released DHCP4WHS I got notice on some of the following sites/blogs:

That's right... not just one, but two German language notices. Forget Norm MacDonald's old theory... perhaps it's now time for a new theory regarding that country... Germans love Brendan Grant.

One of the biggest events in the history of DHCP4WHS was it's being featured in this alleged picture of the RTM version of Windows Home Server as seen over on wegotserved.

Bo Ya!

Halo 2: I'm pathetic

In December 2004 I purchased a big screen TV for my living room, an Xbox and a copy of Halo 2.

In December 2006 I received an Xbox 360.

Yesterday, August 28th, 2007 I finally got around to beating Halo 2... when there were only 28 days before the release of Halo 3.

Yes, I'm pathetic.

I'd actually had a hard time playing it on the original Xbox in my living room for some reason and eventually quit playing it at all due to my hands hurting after a short period of time (even back in 2004-2005) as well as me just not being very good with one of those controllers.

Fast forward to today when I've spent a fair bit of time playing Rainbow Six: Vegas on my 360 (great game by the way) and noticed that my hands don't hurt as much when on it as they do with the original and realizing that there was just another month or so before the release of Halo 3 I figured I should get around to finishing it... so I did.

A good experience, came to hate the Brutes, not because they were tough but because they were just boring. Good to hear they were redone for 3.

I suppose I'm glad that I waited to finish (re-start really) Halo 2 until now as I didn't have the "WHAT? Finish the fight?!?!?!" feeling that plenty of other players did nearly 3 years ago.

Tuesday, August 28, 2007

Hand Doctor #4 Revisited

Last week saw my follow-up visit to hand Dr. #4 (HD4) to judge if the previous injections did anything and to go over the thoughts from the most recent neurologist.

After waiting in the room for a few min I heard a couple of people talking right outside of the door and heard one say:

I'd like you to meet him and see if you've got any ideas because I...

I didn't catch the end. Despite that I though I had to ask myself "What are the chances that he is talking about me?"

Sure enough a PA who works for HD4 came in and we chatted for ~20 min... going through the story thus far, him skimming some bits of my chart, asking a few questions, suggesting a few other things... at the end of the time he was as thoroughly confused and puzzled as everyone else I had seen previously.

Fast forward a bit and HD4 entered and he too didn't have any new ideas other than to wait and see what the bone scan says when I get that done.

As an outside suggestion HD4 did mention the possibility of going to some kind of upper extremity pain clinic that specializes in these sorts of things and where I’d through much of the same tests I've already had... but then with folks who deal with people like me more often.

Unfortunately it seems though that there is not such a place around here… instead most of them are in the east coast which would make such a visit fairly expensive when it comes to airfare and hotel as such a place is not cheap to get to nor do I have any cheap places to stay there (as I would in places like Minnesota, the Dakota's, Nebraska or a couple further states where I have family)... but then if I get sent to one of those places I'll just have to make do.

Wednesday, August 22, 2007

Ship It! ... errr Submit It!

The hour is late, I am exhausted and my hands hurt... and so far it's been worth it.

My entry for the Code2Fame Challenge is complete, burned, and labeled... really everything but stamped, dropped in the mailbox and received.

In the next day or two (when I get the chance) I'll upload the latest build of DHCP4WHS and my submission video and see if some of the others who have submitted their own works would be willing to do the same.

Tuesday, August 21, 2007

Done... sorta

Just moments ago I put the finishing touches on my demo video for DHCP4WHS as required by the Code2Fame Challenge.

Next time I make such a video... I think I'm going to need to find a tool better than Windows Movie Maker

Does that mean I'm going to burn it and the latest build to CD and drop it in the mornings mail?

Sadly no.

Instead I'll make a few more last minute tweaks and checks tonight and tomorrow (before and after my visit to HD#4 to follow up on the visit from a month ago) and get it in the mail in time to be sent out on Thursday morning.

I am kinda getting close to the wire as all my entry must be postmarked by Friday and received by the following Friday... and I'm not leaving myself much time for possibly having a lost, misdirected, damaged, delayed or undelivered entry.

On a related note... the test started last month has been successful... and shown that the shots didn't do anything.

Thursday, August 16, 2007

"Why does season 3 begin with Adama launching nukes at Earth?"

No the new season hasn't begun just yet.

So I'm introducing my upstairs neighbor (we live in a duplex of sorts) to the fun that is the new Battlestar Galactica series as she's got access to my wireless network and last night she called me and asked:

Why does season 3 begin with Adama launching nukes at Earth?

to which I replied:

Just bringing peace to the middle east.

As it turned out... she started with the wrong episode and instead of starting with Occupation (3x01) she accidentally started with Rapture (3x12).

System wide named event my hiney

One issue I ran into late into the game with DHCP4WHS was alerting the server from the client UI that some settings had changed... to do that I used a named EventWaitHandle instance to define a 'system wide' event that could be triggered in one app and responded to in another. Seems pretty simple right?

It is... so long as 'system wide' only refers to 'user session wide.' Shame the MSDN documentation doesn't make that clear.

Why is that important? One unique a case you run into when writing an add-in for WHS that lives within the Home Server Console is that when used remotely... your add-in (along with the console) live within a separate user session of Windows which means your add-in that creates a named event is actually using a different one than what the rest of your code running in a different session is using.

Moral of the story? For a truly 'system wide' named event one needs to prefix the name with "Global\".

Added that... problem solved… only it took me 3 hours to find this newsgroup thread before I had a fix.

Wednesday, August 15, 2007

Announcing DHCP for Windows Home Server (aka DHCP4WHS)

Update: My Code2Fame entry and updated version can be found on this post.

Not long ago I got done confirming some last minute changes for an early build of the quasi-secret project I'd mentioned here previously... but now I can say that it's done (enough for now) and that project is: DHCP Server for Windows Home Server, and In the hopes of getting some last minute feedback before I record my video and ship it off for entry in the Code2Fame Challenge I've shared it over on the Windows Home Server forums.

Here are a few early screen shots:

Leases view of DHCP4WHS

Reservations view of DHCP4WHS

Settings of DHCP4WHS

I'll grant you that a DHCP Server isn't very sexy... but it does have something very unique that I think is worth bragging about... as far as I can tell DHCP4WHS is the first and only DHCP server written in C# and/or for the .NET Framework.

I'm sad to say though that it's not completely done... I've got a bit more testing to do and a few mostly cosmetic changes to make before I make a 1.0 build for the RTM of Windows Home Server (just as soon as I get my hands on it) and once that's done I plan to come up with a more powerful user interface than what I've got today.

An interesting (I think) bit about this is that the back-end server is capable of far more than what the simple UI I have to day supports... in fact the front end of DHCP4WHS only supports 5 different DHCP message options while the back-end currently supports 70 and adding more is trivial... the kicker is having an easy to use and expand UI for managing all 70 different types and I'll be damned if I'm going to have 70 different editor forms... or even 17 (which is the current number of groups the options currently fall in to in my parsing code)… although I've currently got a prototyped way that needs to be made a little prettier looking.

Now if you'll excuse me my hands hurt and it is quite late and I have... absolutely nothing later today.

Note: I do plan to support Peg DHCP at a later time... just not today.

Tuesday, August 14, 2007

Setting WHSLogo from the command line

I'm nearly done with my entry for the Windows Home Server Code2Fame Challenge and have spent some time trying to refine my MSI generation manually loading Orca and importing the property was just taking to long and I didn't want to spend the time to learn WiX just yet.

My solution comes courtesy of WiRunSQL.vbs, a nifty little VB script file that comes with the Windows SDK that allows you to modify an existing MSI using SQL syntax... so to add a property named WHSLogo with a value of 1 to the Property table (required to have the Home Server Console be able to see the installer)... I simply add the following as a post build event of my installer:

"C:\Program Files\Microsoft SDKs\Windows\v6.0\Samples\SysMgmt\MSI\scripts\WiRunSQL.vbs" "$(BuiltOuputPath)" "INSERT INTO Property(Property.Property, Property.Value) VALUES('WHSLogo',  1)"

Next up... more testing before I announce it here and release an early build to the WHS Developers Forum and see if I can find any brave souls willing to test my add-in out for me.

Saturday, August 11, 2007

MRI Results: Clean

At long last I heard from the radiologist about my spinal MRI on Tuesday, and sure enough everything was just fine as far as they could tell (was was expected), but it's still good to have yet another thing ruled out.

I will say though that the MRI wasn't a very enjoyable thing... laying there as still as can be with my elbows wedged against the inside walls and feeling the vibrations coursing through them, all in an environment so loud that even with ear plugs I found it hard to think to myself.

In retrospect it's also quite a good thing that I've lost all of the weight I have lost over the last year (or so) as I just barley fit in the MRI machine and had I been even another 50lbs more, things probably wouldn't have worked.


Friday, August 10, 2007

My Hero: The Fedex Man

Previously on this blog I’ve been rather critical of FedEx and some of their seemingly pointless business practices (1, 2, 3)... I'm happy to say that it seems that they aren't all bad.. meet my new hero, a random FedEx driver who I encountered on I-80 while driving from Omaha to Lincoln a couple of weeks ago.


Why so?

After a quasi family reunion in Omaha that weekend I finally had a chance to visit Dan of tdaxp and his lovely wife Fei (The Lady of tdaxp) in Lincoln for the first time, a place they've lived for 2 years now.

On a side note... I'm very let down that despite an impromptu wedding in shorts... neither has a ring. For shame Dan... Shame!

Now then... while making my way to Lincoln at high speed some traffic was encountered:


Due to an accident:


In that time Mr FedEx driver had enough of cars flying by him in the shoulder to get in front of him and everyone else stuck in traffic... so he started blocking starting with a little white Pontiac:


Eventually a full size SUV got sick of waiting for the FedEx guy to let them all through so the driver took the thing into the ditch in order to get past.

Gotta love the man.

After getting off of I-80 (where the highway patrol waved us all off), I and countless others made our way on a back road that was labeled "Grand Army of the Republic Memorial Highway"... to which I thought:

'Grand Army of the Republic?' Don't tell me Nebraskan's are that big of Star Wars fans...

As it turns out... there was once an organization by that named that was composed of Union veterans of the American Civil War.

Tuesday, August 07, 2007

Neurologist #3

Yesterday saw me seeing a Dr. Payne (what a horrible name for a doctor), the same neurologist that was first scheduled 6 weeks ago.

He listened, he asked questions, and he too didn't have any grand ideas.

In the hopes of ruling some more things out, I'll be going in today for a spinal MRI to see if there is any nerve pinching or other issues... however he expects that to be clear as if I had any issues there they would likely not be localized to just my hands and wrists and that those issues would be a little more constant (ie not cumulative with use).

For a future thought there is talk about me going in a month or so for a bone scan after I've used my hands normally for a time and are hurting plenty (where the right one is at right now) to see if any better localization of the issue.

I always find it interesting viewing medicine through my software engineering eyes as in the software world, it is very possible and at times relatively easy to break things down into their smallest components and trace through exactly what is going on in the hopes of finding an issue.

Apparently medicine hasn't quite caught up with software debugging.

According to neurologist #3 there is no way that he is aware of that two separate scans separated by some interval could be taken to better isolate exactly what has changed between as it all depends on what is being looked for. Such a thing could theoretically help pick out a small bone fracture, a tumor, or some inflammation due to the excess fluid, but it is unlikely that any of those are to blame for what is causing me issues.

Shame there is no such thing as a medical WinDiff.

This post marks a change for me as it is the first one in quite a while that has been written by hand as part of my latest 'using my hands normally' that I'd discussed on Saturday.


Saturday, August 04, 2007

Let down by Extension Methods

Why haven’t been able to follow as many of the new developments in Visual Studio 2008 as I would have liked, one feature that I was pretty thrilled about is extension methods (ScottGu explains them here).

I just had to read a bit of ugly code to compare your IP addresses and see if a given IP address is in a range and because I want to be compatible with IPv6 I can’t just compare the numerical values of the IP addresses some bass could going through abide by byte of each.


When I got all done I wondered if I could use extension methods in C# 3.0 to make this work better so I quickly banged out this class as a quick test: 

public static class IPAddressExtensionMethods
public static bool operator ==(this IPAddress ip1, IPAddress ip2)
return true;

public static bool operator !=(this IPAddress ip1, IPAddress ip2)
return true;

public static bool operator >(this IPAddress ip1, IPAddress ip2)
return true;

public static bool operator <(this IPAddress ip1, IPAddress ip2)
return true;

Bad news for me as the code above fails to compile, not because extension methods themselves don't allow operator overloading, but because extension methods must be in a static class and static classes do not allow user-defined operators.

One way around this would be to actually define methods and not operators:

public static class IPAddressExtensionMethods
public static bool AreEqual(this IPAddress ip1, IPAddress ip2)
return true;

public static bool AreNotEqual(this IPAddress ip1, IPAddress ip2)
return true;

public static bool GreaterThan(this IPAddress ip1, IPAddress ip2)
return true;

public static bool LessThan(this IPAddress ip1, IPAddress ip2)
return true;

Unfortunately while this example works, it's rather inelegant...  But still far more elegant than how my C# 2.0 code looks.

I suppose this leaves the question, should you be able to define/overload an operator in an extension method?

Personally I think us is doing so is a logical extension of what extension methods do in the first place... But then that's only my opinion and thankfully though I'm not alone as from the looks of it this issue has already been submitted over on Connect and is something they may come back looking at again to after Visual Studio 2008 ships.

Yet another coding contest

Two years ago tomorrow I made a pledge of "No Fun Til It's Done!" regarding coding contest over on Channel 9, something I did expect to win and didn't but enjoyed the motivation of forcing myself to get one my little personal projects done

Another ongoing coding contest right now is the Windows Home Server Code2Fame Challenge and something I think I've got the perfect entry for provided to get it done in time to record a short video and mail it in by August 25th.  Granted like the channel 91 I have no expectation of being able to win as frankly, while what I'm writing has never been written before in .net or c# (and for a good a reason really) I think my out on is a sort of thing that plenty of geeks running Windows Home Server would like to make their home network management a little easier.

Over the last month are so I've been very careful to avoid any extreme use of my hands while we gave the Baclofen and a later injection a good try.  It seems though now 2 and a half weeks after the injections things if not improved markedly from that at least I'm in a spends much of the rest of the weekend working on my add-in both in the hopes of getting it done, but also to give the injection another good long test and hopefully have more information for when I go to see the neurologist on Monday.

I'm fairly close I think to being done, the main server code works well currently it just needs a few refinements such as mutexing off a couple of areas better, improve how I save state information to disk and then build some sort of usable user interface that integrates well into the Windows Home Server Console.

On a related note, realizing that it was two years ago right now that I was working so hard in visual studio 2005 beta two to finish my entry kind of gets me down as not only did that contest forced me to finish my project but also get myself use to the new development environment and many of its features... The same cannot be said though right now for me and visual studio 2008. While I've got it installed in my tablet and played around with it a bit, even filing a bug report on it, I find myself falling behind right now and that I'm not able to keep up with the latest and greatest as a person in my industry should be.  While a few visual studio 2008 features would assist me greatly in finishing my project a little sooner, my desktop PC doesn't have enough hard drive space for right now, I'd rather spend my time making my project fully functional and ready to send off rather than spend some time cleaning up some space.