Wednesday, November 28, 2012

Elbow injury - "terrible triad" - Follow Up

This is part 4 of 4 posts I have written about my elbow surgery. You can read them all here:
Part 1: The Emergency Room 

Part 2: Surgery and Recovery
Part 3: The Ketamine Experience

Part 4: Follow Up

It has been 3 1/2 years since I broke my elbow and I thought I should write a quick follow up to let you know how things are going. Some time has past, so some of these numbers might be off a little bit.

Physical Therapy

One thing that really surprised me was the amount of physical therapy I had to go through. After surgery, I had the partial cast/splint thing on my arm for a couple weeks. On a follow up appointment with the surgeon, he removed the splint and had me start scheduling physical therapy as part of my recovery. He said he was going to start me off with 28 (I think) appointments -- I thought he was joking! At first I was going twice a week, and then at the end I was going only once a week. At some point I ran out of my prescribed PT appointments and they had to go and prescribe more. I really don't know how many times I went, but I broke my arm at the beginning of summer and I remember still going to PT in the fall, maybe even winter.

I was told by my physical therapist that during surgery the surgeon tested the mobility of my arm to make sure I still had full range of motion. Being in the cast/splint for two weeks caused my muscles to atrophy and my muscles and tendons to shorten. It was absolutely amazing how much range of motion I had lost. After taking the splint off, my arm was permanently bent, and I could only contract or extend it a couple degrees -- literally just 2 or 3 degrees in either direction. I could only rotate my wrist a couple degrees in either direction. I also could not bend my hand back. Much later, the physical therapist told me that she was actually a bit worried about how much I would be able to recover, especially with the wrist rotation.

Physical therapy sessions were pretty much the same each time. First they would heat up my elbow for several minutes and then stretch my arm to try to lengthen the muscles and tendons. It was a little painful, but not too bad. I had a series of stretches to do at home as well. A couple sessions in, I was fitted for what I call the torture device. It was a plastic contraption that fit on my arm that I could use to help with my stretches at home. You basically strap your upper and lower arm into it and turn a crank to stretch your arm. It works quite well, but it is painful. The thing made me angry when I used it. My girlfriend and I had to make an agreement -- there was no talking to me while I was using the torture device. After several months of using the thing, the teeth of the gear started to break off. I felt joy that I broke it before it broke me.

As a side note, looking back something went wrong with getting the torture device. I think I was supposed to get it right away, but I think the sales rep for the company messed something up. I could tell that my physical therapist was mad that it was taking so long and I sometimes wonder if my recovery would have been better if I had received the device earlier.

I pretty quickly regained rotation of my wrist, and flexing of my hand - I'm not really sure, but I think that only took a couple weeks. The thing that took the longest to recover was the extension and flexion of my elbow joint. It took me months to get to a normal range.

Eventually, my progress in physical therapy came to a stop. Once the progress stopped, so did the physical therapy sessions.


Three and a half years later, my elbow is the same as when I stopped PT. I regained extension to about 170 degrees (these numbers are really rough estimates) compared to 180+ on my good arm. I can flex my arm to about 60 degrees compared to 45 on my good arm. Rotation is pretty good - I might be off by about 10 degrees there, but that seems to be pretty minor. So, I can't flex my arm completely, or extend my arm completely, but I do have what the physical therapist called "full functional use" of my arm. That means there are very few things in your day-to-day activity that require full extension or flexion of your arm. The only thing I have noticed to be difficult is buttoning the top button on a shirt. I really have to stress my arm to get my hand in that position. All the other buttons are easy, so really it only comes into play when I wear a tie, which for me is quite rare.

I was told that in a bad case where you don't regain enough range of motion, they can perform another surgery to help extend your range, but even in that case, the best they would hope for from that second surgery is to get full functional range of motion.

Risks and Complications

One of the risks associated with this type of surgery is that you can grow extra bone. For some reason, elbow injuries in particular have a good chance of extra bone growth. I don't remember the exact numbers but some decent percentage (maybe even 50%) of people with elbow breaks like I had will have extra bone growth. In those with extra bone growth, another decent percentage (maybe 50% again??) will have so much bone growth that they will need another surgery to remove the bone growth.

The surgeon showed me my x-ray and showed a cloudy area that he had concerns about before the surgery. I did end up having extra bone growth, but it was not so bad that I required another surgery

One thing that showed up during my recovery was a little nodule on the ring finger tendon in my palm. It is called dupuytren's syndrome - basically the tendon contracts and causes your finger to be contracted. The little nodule is still there, but it doesn't seem to bother me at all -- at first that finger was contracted a little bit, but not anymore. It might be something I have to deal with later in life. I guess there might be some vague correlation between trauma and dupuytren's.

I have noticed nodules under the incision line. I've been told those are pretty common and related to suturing and they are easy to take care of, if it is bothering me. I'm planning on getting it checked out just to be sure its not something else.

So, that's about it. Three and a half years later, my elbow is doing well. I have a big scar from surgery. I have "full functional" use of my arm and the only thing I have trouble with is buttoning the very top button on a shirt. I haven't put the clip-in pedals back on my bike - maybe someday.

One last thing. My physical therapist told me about another patient she had dealt with that had the same injury. He was a big burly weight lifter. He broke his arm while jumping on the bed with his kids. I thought that was a cute story.

This is part 4 of 4 posts I have written about my elbow surgery. You can read them all here:
You can read them all here:
Part 1: The Emergency Room 
Part 2: Surgery and Recovery
Part 3: The Ketamine Experience

Part 4: Follow Up

Friday, February 17, 2012

Get Amazon S3 Resource URL with Powershell

I've been working on automating our build and deployment process recently. We are storing our binaries in S3 and I needed a script to pull the binaries from S3.

I thought this might help other people, so here you go.


#Signature = URL-Encode( Base64( HMAC-SHA1( YourSecretAccessKeyID, UTF-8-Encoding-Of( StringToSign ) ) ) );

#StringToSign = HTTP-VERB + "\n" +
# Content-MD5 + "\n" + # is empty for s3 request
# Content-Type + "\n" + # is empty for s3 request
# Expires + "\n" +
# CanonicalizedAmzHeaders +
# CanonicalizedResource; # relative URL kinda?

function get-s3Url ($server, $resourceUrl, $accessKey, $secretKey, $expireDate)
$s3BaseTime = [System.DateTime]::Parse("1970-01-01T00:00:00.0000000Z")
$exipires = [Convert]::ToInt32($expireDate.Subtract($s3BaseTime).TotalSeconds).ToString()
$stringToSign = "GET`n" + "`n" + "`n" + "$exipires`n" + "$resourceUrl"

$sha = new-object System.Security.Cryptography.HMACSHA1
$utf8 = New-Object System.Text.utf8encoding
$sha.Key = $utf8.Getbytes($secretKey)
$seedBytes = $utf8.GetBytes($stringToSign)
$digest = $sha.ComputeHash($seedBytes)
$base64Encoded = [Convert]::Tobase64String($digest)
$null = [Reflection.Assembly]::LoadWithPartialName("System.Web")
$urlEncoded = [System.Web.HttpUtility]::UrlEncode($base64Encoded)

$fullUrl = $server + $resourceUrl + "?AWSAccessKeyId=" + $accessKey + "&Expires=" + $exipires + "&Signature=" + $urlEncoded

$server = ""
$resourceUrl = "/[your bucket name]/[path to your file in s3]"
$accessKey = "[your access key]"
$secretKey = "[your secret key]"
$expires = [System.DateTime]::Now.AddMinutes(5)

$url = get-s3Url $server $resourceUrl $accessKey $secretKey $expires

Write-Host $url