medical comments edit

I went in today to get this tiny mole removed (maybe 6mm diameter) from my right side. I’ve had moles removed before - from my back, from the side of my head, etc., so I kind of knew what to expect.

Let me interject here that I am the biggest pain pussy ever. I don’t fear death, I fear pain. I fear any little kind of pain there could possibly be. Even if something isn’t hurting, I anticipate pain, and that hurts almost as much. I can’t watch medical shows on TV, and any needle bigger than the tiny ones I get my allergy shots with make me a little queasy.

Keeping that in mind, I got numbed (which hurt a lot, ironically - and the needle was a little larger than I’m comfortable with) and then the doctor started the operation. I was awake, but lying on my side not watching.

About halfway through, I started to feel the pressure of him pulling on the skin on my side and cutting and whatnot… and I started sweating profusely. I mean, like, sweat rolling off my forehead, soaked down, “I’ve been working on the railroad all the livelong day” sort of sweat.

Then he started cutting outside the area a little to make sure he got it all and I started feeling it a little, so he had to numb some more, which meant they brought a needle out and it made it all worse.

By the end of the thing they had to bring me an ice pack and a cup of cranberry juice because they were all worried about my distinct lack of color. I wasn’t at “pass out” level yet, but I was definitely headed there.

I have to go back in two weeks to get the stitches removed. I’m sitting here typing this and I feel the tightness in my side (probably due to the gigantic bandage attached to me) and I don’t know how long I’m gonna be able to stand that.

I think I should eat something.

home comments edit

Most of the weekend was spent doing yardwork; at least, the majority of Saturday was. I bought this lawn aerator device that is basically a set of spikes attached to a handle - step on the spikes to push them into the ground, pull the handle to get them out of the ground. Like dangerous romper stompers.

Thing is, that trashes your back really quickly, so the rest of the weekend I ached. I still ache.

We also started painting the upstairs bathroom, which is already proving to be less painful than the last bathroom we painted because: a) we’re only painting two of the walls; and b) there’s no border that has to be sanded off. We got a coat of primer on there pretty quickly. We’ll put another coat of primer, then two coats of paint, then be done.

And, of course, there was the typical cleaning of… well, everything… as there usually is.

Oh! I got my L’Instant Taittinger poster back, framed, from Michael’s and it looks brilliant. That’s now in my entryway so you see it pretty much right when you walk in.

dotnet, windows comments edit

I worked a little while on my Send To project and got the framework for a mixed-mode DLL set up. I have some managed classes (my public interface) in there and it compiles; now I need to start putting in the unmanaged stuff.

I also installed Windows XP SP2 on my home computer last night. I happened to get a disc with it on there from MSDN (subscription through work) so I took it home, threw it in the drive, started the install, and walked away.

A couple hours later I came back, rebooted, logged in, and have thus far really only noticed a couple of minor changes. First, the Security Center thing pops up to tell me that Windows Firewall is enabled, Automatic Updates (to the OS) are enabled, and it can tell that I have Panda antivirus software installed but it can’t tell the version of the updates. Fair enough. Second, the Windows Firewall is a lot more configurable and I like it better than the old Internet Connection Firewall. (It did, however, fail to properly migrate my ICF settings so I had to reconfigure, which wasn’t a big deal, just annoying.) Finally, the pop-up blocker is in full effect in IE.

That’s it. That’s all I really noticed.

I think that’s a good thing. I saw all of these “get ready for SP2!” ads and all of these articles about the drastic changes to the security on the system and whatnot, but when the end user finishes installing this thing, they really won’t notice much.

Now, from a programmer’s perspective, yeah, I have to be more conscious now about the security on the system and whatever for operations my program performs. But from the end user side… no big deal. Just more secure. Perfect.

personal, dotnet comments edit

So I’m coming up with a list of all of the various programming projects I want to do and I’m finding that there’s really just no shortage. So far, the top three are:

  1. Add ‘Send To’ to Solvent: I want to add the Windows Explorer ‘Send To’ menu to my add-in, Solvent. I have the part that builds the UI for the context menus done, I just need to get a decent class library to read items from the Send To folder and send them in. I found something that almost does what I need, but I need something a little lower-level (not wrapped in Windows Forms code) and that compiles warning-free (that DLL needs to be converted to mixed mode).
  2. Remove Solution From VSS: It turns out there’s a very manual process if you want to remove solutions and projects from Visual SourceSafe. You have to delete certain files, you have to remove certain references to the source control from the solution and project files… ugh. I need a program that, given a solution file, removes it and all contained projects from VSS (not actually deleting them from the VSS database, just removing references to VSS from the local copy).
  3. POP3 Proxy via Web Service: To get around annoying firewall constraints, I need a two-part solution: first, a web service that can take incoming POP commands and proxy them to a real POP server, then return the results; second, a client that acts like a POP server, receives requests from a POP-based mail program, and ferries those requests to the web service. That would allow you to use a POP-based mail program to get your email from, say, work, where they don’t allow POP through the firewall but have no restrictions on web access.

I’ve been working on that Solvent issue for a while now. I’ve learned (and, in many cases, re-learned) way too much about C++ while doing it, and I’m getting fed up with the way shell stuff is handled in Windows. One would think that with .NET they’d have introduced some sort of “Microsoft.Windows.Shell” namespace with some methods you can access from managed code that does all the low-level crap I’m having to learn.

I’ll get it done, it’ll just take a little longer. I tried doing the pInvoke route, but I got to a point where I was trying to marshal pointers to pointers and things fell apart (I know enough to be dangerous but not enough to fix it). Then I started doing a mixed-mode DLL (hard for a relative newbie in C++) when I was informed there’s this thing called “It Just Works” (or “IJW”) that should allow me to call the unmanaged shell functions from managed code without any of that. So that’s my next attempt - see if I can figure out how to get it done via IJW. If that doesn’t work, I think I’ll learn how to write a COM object and just suffer the COM interop overhead (which, thinking about the work the COM object will have to provide, should be reasonably minimal).

Unless someone out there wants to write it for me? I have an interface description… :)

dotnet, windows comments edit

I mentioned earlier that I’m trying to create a library to interface with the Windows “Send To” menu.

I’m not getting too far with it.

Here’s what I want:

Two classes - SendToMenu and SendToMenuItem. They implement the following public members, as noted:

  • SendToMenu
    • GetSendToMenu: Takes in no parameters and returns an array of SendToMenuItem objects representing the items in the Send To menu.
  • SendToMenuItem
    • DisplayName: A property that returns the display name of the Send To item
    • Icon: A property that returns the icon for the Send To item
    • ExecuteSendTo: If you pass in a file name, it mimics you “sending” the file to the item via the Explorer menu.

It shouldn’t be that hard. Right?

It seems I have four choices of how to get this done, none of which are easy.

  • It Just Works, or “IJW”: Supposedly you can intermingle managed and unmanaged C++ and it’s supposed to just work. I’ve messed around with this and it doesn’t just work.
  • Mixed-Mode: You can create a C++ DLL that implements both managed and unmanaged code but you have to do some special finagling to get it to work. I haven’t tried this yet, but I don’t understand it all, either.
  • Platform Invocation, or pInvoke: This allows you to directly import and use unmanaged methods from DLLs right in your managed code. Talking to the Send To menu touches a lot of these things - more than you’d imagine - and getting them all to work nicely together in a managed world is nigh unto impossible. I have hundreds of lines of pInvoke code trying to get this to work. It’s just not happening.
  • Component Object Model, or COM: This is the standard, unmanaged way of getting components out there. .NET knows how to deal with COM, so if I could get a COM object that does what I want, it could pretty easily hook up. Thing is, I don’t know how to write COM, and would rather not take that time for something I’ll only use this once.

So there it sits. I have to decide whether I need to do a mixed-mode DLL or COM. Or I need to find someone who knows how to do one of the other two methods and get them to help out. Or maybe I just farm it out. I’m tired of fighting it, though.