ATC :: Since February 2001

Friday, January 21, 2005

Movie line of the week answer - [1:41 PM]

We managed to get a single player yesterday, and he nailed it.

Everyone give a warm round of applause to Mr. Lyle Thompson, a MLOTW newbie! Congratulations Lyle.

The correct answer was...

Thanks for playing, come back next week!
Click here for a permalink to this entry.

Thursday, January 20, 2005

Become a Shape Master! - [10:27 PM]

MSDN: "ShapeStudio is a shape-development tool included in the Microsoft Office Visio 2003 SDK, providing a development and test environment that integrates with Visio." - Back before Visio 1.0 shipped we had what we called "Shape Masters". The group was very small, headed up by Olav Martin Kvern of PageMaker fame. Ole's group was mainly interns. We hired the brightest of the bunch and had a small team that created a TON of shapes in the early years. They didn't have the benefit of ShapeStudio to help them, today you do.
Click here for a permalink to this entry.

Out of control - [9:57 AM]

The President of the United States is out of control. There have been articles lately that point to our possible invasion of Iran. Here on inauguration day President Bush promises "...to spread liberty around the globe", that frightens me. It makes the US sound like a politically correct version of Hitler, or the crazy man that started our country's current spiral into war; Osama Bin Laden. Arrogance abounds.

We need strong leadership. President of the United States is the toughest job in the world. Arrogance doesn't equate to strong. We have arrogance in the office today. We need leaders that can see past personal agendas, I think the invasion of Iraq was personal. There are so many problems in the world that need to be addressed, not to mention the problems we face here at home. Terrorism needs to be addressed and we need to be involved with stamping it out, but we need a different method of attack. What that method is, I don't know? But what we're doing today obviously isn't working.

At this point we have to survive the next four years and hope, and pray, we get a better leader next time around.

Jeffrey Zeldman makes two points that describe the situation quite well.

(Note: Due to the ongoing health issues of a family member I wasn't able to vote, it's a long story that won't be shared here. Needless to say I would've voted for the other guy if I'd had the chance to make it to the polls. I wanted a change.)
Click here for a permalink to this entry.

Movie line of the week - [9:08 AM]

Watchin' it on the big screen!I've taken Scoble's advice, but I can't hang up on Movie Line of the Week. I'm going to do more tech stuff on here than I have in the past, and if you've been reading this week I have been.

Here it is...

Actor #1: I'm not kissing anyone hello anymore.
Actor #2: Well just shake hands with them.
Actor #1: Are you kidding? I just wash my hands and I shake hands with some guy that feels like he's been squashing caterpillars.

Ok, quick, what movie! Send your guesses here.
Click here for a permalink to this entry.

Wednesday, January 19, 2005

Quick How To: Debugging .NET HttpHandlers - [3:58 PM]

I don't know how many folks have implemented IHttpHandler, but if you have you've probably asked out loud "How do I debug this?" Now, I don't mean to insult anyone's intelligence but if you've never had to debug something loaded by a process that's already running it may not be obvious how you go about doing it.

Now for the good news. Visual Studio.NET has a world class debugging environment that makes this task as easy as 1-2-3, just read below for a list of very simple steps.

Note: The steps that follow assume you've already created your implementation of IHttpHandler and have configured IIS/ASP.Net to find it.

1) Select Debug > Processes... menu item.
2) In the Processes dialog you should see a Group Box titled "Available Processes".
3) Scan the list of process for aspnet_wp.exe(Windows 2k/XP) and w3wp.exe on(Windows 2k3).
4) Select aspnet_wp.exe, or w3wp.exe, and click the "Attach..." button.
5) From the "Attach to Process" dialog you'll see a list of program types to debug.
6) Make sure the "Common Language Runtime" checkbox is checked.
7) Click OK.
8) You'll notice aspnet_wp.exe, or w3wp.exe, has been moved to the list in the bottom of the dialog, "Debugged Processes".
9) Click OK.

Ok, now you've attached to the process that will load your HttpHandler assembly. All you have to do now is write a simple application to invoke it, or type in the path to it in your browser address bar. You should now be able to set breakpoints in your code and debug your handler.
Click here for a permalink to this entry.

Recent 'Debugging' Fun - [10:19 AM]

I got a call from my sister-in-law last week, she was having trouble with Microsoft Word. Apparently when she'd start the application it would startup, draw the frame window, show the splash screen, and promptly hang. She asked if I could come by and take a look at the situation. On Sunday I collected my Windows XP SP-2 CD, ripped a copy of the new Microsoft AntiSpyware Beta and Firefox 1.0, and headed to her office. I thought for sure she'd picked up some kind of nasty critter and I'd need to either remove a bunch of Spyware, or worst case I'd have to rebuild her box. The first thing I did was run a virus scan, she had Norton AntiVirus installed. She checked out ok there, so I checked "Add/Remove Programs" to see what software she'd installed. "Ah-ha!" She had two different version of Office installed, a trial version that came with the computer(Office 2k3) and her licensed copy(Office 2k). So I uninstalled BOTH version, and reinstalled Office 2k. At this point I was thinking we were out of the woods, but as my father would say "That's what you get for thinking."

Get your Bumbershoot, it's wet outside!Since the application was hanging it would seem there was something loading at startup causing it. I didn't have much with me as far as debugging tools go. So I went to Sysinternals and grabbed a copy of Process Explorer. I wanted to see what was loading into Word's process. I cranked up Word again, opened Process Explorer, selected View > Lower Pane View > DLL's, in the top pane I double-clicked on WINWORD.EXE which shows the properties for the process. The Properties dialog has multiple-tabs. I selected the "Threads" tab to I could take a better look at the stack. Right there in plain site I could see the probable suspect! It was most likely a COM Add-In because the Visual Basic 6.0 Runtime was where we were 'hung'. Ahhh....

At this point we were able to launch Word with a command line switch telling it to not load Add-Ins, and it worked! Ultimately I discovered it was an Add-In from Stamps.com that was causing the problem. When my sister-in-law installed her Stamps.com software it included an Add-In for Word, Word 2003. Somehow it was installed to run with Word 2000, which caused the process to hang. We jumped into the registry, found Word's Add-In entries(HKEY_CURRENT_USER\Software\Microsoft\Office\Word\Addins)and changed the LoadBehavior from eight to three, which tells Word to load "on-demand" instead of startup.

The moral of the story, keep Process Explorer in your toolbox, it's quite handy. In fact I'd say check out all of Sysinternals offerings.
Click here for a permalink to this entry.

Tuesday, January 18, 2005

A great blogging option - [11:27 AM]

The Unofficial Apple Weblog: "Need your Mac mini colocated? Look no further than Underwriters Technologies’ new venture." - I think this is a great idea! The price is compelling. Most co-locations are expensive, this one is about $23.00 per month. Not bad at all. I don't know much about the capabilities of a Mini Mac, but could you run a web server on it? Mac OS X Server comes with Apache, which means I could run Mono on top of it. So would it be possible to strap up Apache on a Mini Mac?

Very, very compelling.
Click here for a permalink to this entry.

Groups & RSS - [11:19 AM]

It seems like most folks use Yahoo! Groups over MSN Groups? Why is that? Something I'd like to see in the MSN Groups is the ability to subscribe to an RSS feed. Most of the Yahoo! Groups I'm subscribed to have that capability. Is this something you "just get" when you create a Yahoo! Group?

Feature request for the MSN Groups team, please add RSS support to groups.

Thanks.
Click here for a permalink to this entry.

Monday, January 17, 2005

More PK Information - [3:17 PM]

I was in a bit of a hurry when I posted my Pharmacokinetics Calculator Update earlier today. The sample is quite honestly lame because it doesn't really explain much. So I thought I'd break it down a bit more. In my brothers terms, this is a Vanco 'New Start', so keep that in mind. The Vanco 'Dosage Adjustment' starts off the same but adds an Adjust phase.

The Constructor

VancoDose vns = new VancoDose(BodyWeight, Height, Age, SerumCreat, Peak, Trough, Gender);
A new VancoDose is created from user input, as you can see by the arguments to the constructor it takes quite a few data points to properly create and perform initial calculations on the object. After construction the developer would then need to display the results to the pharmacist using the system. The output for this is the estimated Dose and estimated Tau for a 'New Start'. The resulting values are not practical, so...

Estimate
vns.Estimate(NewTau, NewDose, out newPeak, out newTrough);
Given the first step calculation values, after construction, the pharmacist will choose and alternate Dose and Tau because the numbers just aren't realistic(here the user inputs practical values). The Estimate method will return new Peak and new Trough values given the desired Tau and Dose. This would complete a 'New Start'. The user has a pratical dose and dosing interval (i.e. Tau).

Adjust
vns.Adjust(DoseUsed, MeasuredPeak, MeasuredTrough, DesiredPeak, DesiredTrough, DeltaT);
When the pharmacist re-visits the patients dosing he'll then use this method to adjust the original dosing regimen.

NOTE: This post has been updated to reflect corrections by my brother, Jay, a PharmD that performs these calculations every day. Jay is the domain expert for the project.
Click here for a permalink to this entry.

Got me too... - [2:47 PM]

Tim Bray [via James Robertson]: "Near as I can tell, pretty well every somewhat-visible website in the world is seeing its logfiles fill up with with bogus page fetches there only as a vehicle for a spammish “referrer” field; whether or not the site posts referrer data." - Someone please track these guys down and take their pipe away. Here's a time when we need a team of white hats to find a way to take these losers off the air.

We need a bounty on spammers, plain and simple. Publish their home addresses and phone numbers and see how long it is before they move into the backwoods for some privacy. And, NO, I don't mean them harm.
Click here for a permalink to this entry.

Pharmacokinetics Calculator Update - [11:40 AM]

Over the weekend Jay and I updated the PK Calculator project to deal with not only Vanco dosing calculations but Aminoglycocide dosing as well. Our biggest problem BY far was communication, his world to mine. There was a point in time during the afternoon where we both got a little heated, Fahrni genes go figure. In the end we were able to cool off and get it done. Jay is quite brilliant, he'd make a great Software Engineer if he chose to pursue it. That's part of the problem in this case. He's actually written a bit of JavaScript to do PK calculations, and my desire to make the PK calculator into a reusable .NET assembly left him quite confused. He thought it was overkill, and I can see his point. The assembly we've created was designed. I've tried to pay particular attention to a simple object hierarchy in the design. We currently have two dose types; Vanco and Aminoglycocide, which are derived from a class called BaseDose. This design worked out perfectly, but Jay couldn't get used to the idea. It's ok because I had trouble seeing it from his perspective. In the end we got through it and created an assembly that will serve whoever quite well. Here's a quick sampling of our work...

        VancoDose vns = new VancoDose(70, 175, 33, 1, 30, 7.5, Fahrni.PK.PKGender.Male);

double newPeak = 0.0;
double newTrough = 0.0;

vns.Estimate(12, 1000, out newPeak, out newTrough);
vns.Adjust(1000, 44, 22, 30, 10, 11);
That's an example Vanco dose. I know all the numbers don't really make much sense but that's how you go about figuring out the dosages for a patient. We still need to document the library, and put together a usable site, or application, for my bother's use. I'd LOVE to get into his hospital and hook this into their patient care system. They don't have this capability today.

Also, if anyone would like to hook this into their existing patient care system, drop me a line.
Click here for a permalink to this entry.

All aboard! - [11:26 AM]

Rodent Regatta: "I’m back! Prowl around these pages. You’ll find all the old stuff and some new. As always, we appreciate any comment that helps us make this site better for you." - Welcome back Steve, it's been too long. I don't remember when I started reading Steve on a daily basis, maybe a couple of years back? Anywho, Rodent Regatta is back in business. The new design is incredible Steve. I look forward to reading.
Click here for a permalink to this entry.