How to find quilting supplies

If you’re a Microsoft employee, go to the Microsoft externally accessible discount site.

Browse to “The Mall.” Then go to “Computers and Electronics.” Go to the second page. Scroll down.

The last item is QuiltWorks Northwest.

Now, will someone tell me how that’s “Computers” or “Electronics”?

Thomas Crown != Thomas Crown

Here’s a hint to Comcast. When you’re running a special promo, to transition from Sean Connery in From Russia with Love to “another Bond” as Peirce Brosnan in The Thomas Crown Affair, you might want to be sure that the version of the Thomas Crown Affair you’re showing is the remake, and NOT the original.

The original Thomas Crown Affair had a bit more violence, and a lot less Brosnan.

Review

I’m filling out my annual review form at work. We have to fill it out by EOD today, according to management, so they can have “calibration meetings.” They have to be sure not to give us a compliment unless everyone else agrees I deserve that compliment… (The real story is even more sordid. Stack ranking, bah.)

I also need to fill out Manager Feedback. I just got stuck on one question:

“My Manager ensures that others, including senior management, are aware of my contributions.”

I can choose Strong Agree, Agree, Neither Agree Nor Disagree, Disagree, Strongly Disagree, or Not Applicable.

There isn’t an option for, “I don’t know yet.” You see, I’ll be able to tell how well my managed informed senior management regarding my contributions, when I see a raise or promotion — in September. I don’t know how good she is at marketing me; can I trade her in for a new publicist? Maybe Paris Hilton’s?

What’s the point of asking me a question I don’t have a clue what the answer is, but have very strong feelings on?

Some help for the struggling programmer

#define sizeof(x) rand()
you can do that?
Yup
OMFG!
That’s disgusting!
qdb

After Jonathan’s post yesterday, I decided that I can pretend to be as wise as he is. So, now I present to you, my list of the first things that come to mind when I’m working:

  1. Corollary to Jonathan’s item vi: One of the highlights of Visual C# 2005 (aka C# 2.0) was the support for the “partial” class specifier. While C# improved on C++ (sort of) by ridding the world of header files, type libraries, etc., mandating the use of only a single file for a given class caused problems when things got too complicated. The “partial” keyword easily allows a C# class to be spread across multiple files, allowing code-generated portions to be in the same class, as well as easier editing. (I’m sure VB.Net has the same feature, but I don’t like VB.Net).
  2. A #region directive is most useful when you’re writing and editing code. When debugging, it’s mostly useless. When printing out code, it’s useless. But in order to keep subsections partitioned off either when you’re adding a whole lot of related code or when you’re implementing an interface and just want to “close it off” when you’re done, it’s useful. (C# again — would you believe I rarely write C# code?)
  3. Learning to use Windbg for your unmanaged debugging is priceless. You’ll lose some ease of use, but it’s:
    • Incredibly fast
    • apparently more accurate at both symbol location and source location than Visual Studio
    • the only thing to use in some cases, so it’s better to be familiar with it early on
    • got the best debugging feature I’ve seen in a long time: the “x Function” command, where Function can be a wild-carded search string… say you know you need a breakpoint on some function in some assembly shipped by your team. “x VSTO*!*ReportError” will return every function with a trailing ReportError implemented in every class in every DLL that is named starting with VSTO. It’s just useful.
  4. Never presume that other developers understand the difference between class and interface inheritance. Whenever someone starts casting from an interface to a class, begin getting suspicious. Whenever anyone explicitly casts from one interface to another not in a QueryInterface call, assume that that person may be making a mistake. Outside of non delegating IUnknown::QueryInterface implementations, there are very few places where that’s a good idea.
  5. The AddRef/Release Factory pattern is a very good one for a reason; ask anyone who’s ever had to track down a bug due to the difference in heap allocation and deallocation (Hi Jonathan!)
  6. Cross-thread logic is never as simple as you would like.
  7. It’s sometimes better to start debugging by observation, rather than jumping right into the debugger. Two minutes with SpyXX and a single breakpoint told me precisely where a bug lay in our code; a senior developer has spent several hours with no luck.
  8. On a related note: if a program isn’t responding to a button press: 1) it’s not handling the button press (correctly, in some cases), or 2) it’s not getting the button press. They’re both reasonably easy to verify with minimal debugging, and knowing which it is saves you hours of time.
  9. Debugging a crash that occurs in obvious code (ie, crash on a line: pInterface->Func() with a NULL pointer access violation) is far simpler than inordinately complex code — if it’s the former case the problem is usually right nearby or immediately obvious (the member was never set properly, a QueryInterface call isn’t being verified as having returned S_OK, etc.) The latter case usually will take a great deal of headscratching and puzzling and will eventually lead you to arcane bugs that occur somewhere entirely different — where the stack or thread data is getting royally trashed.
  10. Component != class; Interface defined in a header file != IDL / Typelibrary / IMarshal-capable component.

I’m done now. I’m not nearly as coherent as Jonathan, but I’m twice as angry. 🙂

Remote Desktop to Vista on alternate port

I installed Vista Ultimate on my home machine. Why? I had installed RC2 almost 8 months ago, and it stopped working last week. 🙂

Now, I have an interesting setup to allow me to Remote Desktop to sevetral of my home PCs through my one firewall (usually from work). I use No-Ip (the free version) to publish my dynamic ip publicly. I then have my wonderful SOHO Netgear Firewall setup to port forward to different machines — so from my one IP, I expose multiple RDP connections.

My older and less fancy router would allow me to directly route from one public port to a machine’s different private port; this router just allows me to expose a port. So, I had to change my mechanism: I alter the port remote desktop listens on for each machine! It was easy on XP, but on Vista…

It turns out that the Firewall rules for Windows Vista are hardcoded for port 3389. So even if you change the port in the registry so that your RDP listening port is another value, the Firewall RDP rules only exist for 3389 — and that port value can’t be edited. Sure, you can add a new rule, but that offended by sensibilities.

So, instead, I went through my registry and hopefully got all the appropriate values, scanning for “3389”, and now I’m going to restart my system and see if it worked. I’ll grumble later if it doesn’t.

Competency, just a bit of competency…

I came across a bit of code earlier today, and thought it was nice and creative; it uses the new lambda expression syntax to create methods that delay hooking up event handlers.

Then I discovered that this code was only necessary because the entire architecture was flawed. Now I have to go in and correct people who don’t know how to devise an actual architecture rather than a model of “new code.”

LOWER GAS PRICES!

THIS WILL REALLY WORK!

I know you’ve all received the emails telling you not to buy gas on a certain day, and you’re all well aware of how just plain dumb that is. My plan is far, far better, and is GUARANTEED to affect how much you SPEND on GAS.

The most recent spin is that you should not buy gas from EXXON and MOBIL, as they’re the two most profitable oil companies, and so we should only buy from their competitors, so that EXXON and MOBIL will LOWER THEIR GAS PRICES, and the other companies will follow suit. Supply and demand and a bit of logic puts that one to rest. My plan is even better, and punishes ALL GAS COMPANIES, and will surely SHOW THEM we mean BUSINESS!

What are you PAYING at the PUMP? In my neighborhood, gas prices are nearing FOUR DOLLARS A GALLON! Inflation doesn’t cover that much of a change! Oil companies take ANY EXCUSE to RAISE PRICES, from storm damage from Katrina to unrest in the MIDDLE EAST. However, they don’t then lower the prices when the crisis has passed.

We have to SHOW THE OIL COMPANIES WHO’S THE BOSS!

The days of EIGHTY-NINE CENT GAS may be long gone, but we can certainly aim for ONE-FIFTY A GALLON!

Here’s how!

My car takes almost 16 gallons of gasoline to fill the tank. At FOUR DOLLARS A GALLON that’s SIXTY-FOUR dollars to fill up my car. If gas prices were only ONE-FIFTY a gallon, it would only cost me $24 to fill up my TANK. I’d SAVE FORTY DOLLARS PER TANK OF GAS!

We need to show the OIL COMPANIES that we have better things to do with that MONEY.

We need to UNITE and show OUR STRENGTH.

Look at HOW MUCH YOU CAN SAVE each week on gas if it only cost $1.50 per GALLON. Get a piece of paper out and do the math. Would you SAVE THIRTY DOLLARS? Forty dollars? Is your regular commuter vehicle a personal jet, and you’d SAVE HUNDREDS?

Here’s what you should do with that MONEY YOU’RE THROWING AWAY!

Take the amount you would save per tank of gas, and send it to me. Comment below for my address. I’ll gather up all the money, and TAKE THE FIGHT TO THE OIL COMPANIES. I will PERSONALLY go and SHOW THEM how we feel, and HOW MUCH WE WANT BACK. Together, we can force them to ACTION.

LOWER GAS PRICES!