Saturday, April 19, 2014

Rotator Cuff Update

I had surgery on my left shoulder back in January. I thought I'd post an update in the hope that it might help some other middle aged person who's facing a similar situation.

I hinted at the problem in my 2013 retrospective. I did my best to manage it as a chronic condition. I even went back to swimming, albeit at a greatly reduced effort, frequency, and intensity. But by the time my surgery date approached, I noticed that the muscles behind my left scapula felt markedly worse. I was grateful to be on the surgical calendar.

It was the first time I've ever been under the knife. I tried to remain calm, but when they took my heart rate and blood pressure on arrival at the surgery center both were sky high. The anesthesiologist put some valium in the solution when they prepared me for the nerve block "to take the edge off". I found out later that I had fibrillation again when they intubated me. They were worried enough to send me to a cardiologist for an echo cardiogram after I returned home. All was well. It was fear!

I was wheeled into surgery at 11:15 am. I believe it was 3:30 pm when I woke up in the recovery area. They found out that I had a bone spur on my collarbone that was abrading my labrum. Some time with power tools took care of everything. The nerve block worked wonders for 36 hours - I had no pain at all. I took the pain medication to stay ahead of it, but I hate taking pills. I weaned myself down to one at a time, then off completely after a few days. I never experienced any pain at all.

I was in physical therapy the day after surgery. The exercises were little more than moving and stretching, but they were key for avoiding excessive scar tissue buildup and stiffness. I went to physical therapy faithfully three times a week and did the exercises on my own at home. At first they were difficult and frustrating. One of the worst was the 1 kg medicine ball. I had to put it on a spot on the wall at shoulder height, then rotate the ball about that point ten times in each direction, three times each. Those small muscles in my shoulder needed to control the ball simply weren't firing. I could barely keep the ball on the spot, and just a few reps left my shoulder exhausted. But I stayed with it, going so far as to order a ball of my own so I could do those exercises at home along with the hand weights.

The physical therapist was terrific. He said there's a controversy in the field over when to start physical therapy. If the surgeon lacks confidence in his repair s/he's likely to recommend remaining in a sling and immobile for up to five weeks. The typical repair technique calls for drilling two holes in shoulder bone and inserting pins to hold the stitch and muscle to the bone. Pulling the pins out is catastrophic. My surgeon drilled all the way through the bone and looped the stitch through the holes. The only way to pull it out is to destroy the shoulder. The more reliable attachment, combined with arthroscopic minimally invasive cuts, made it possible to start on therapy right away.

The therapy room was always filled. Old and young: the former because of long use and the latter from sports injuries. One afternoon I was doing my exercises next to a man my age who was struggling with a range of motion exercise that I'd endured eight weeks earlier. "What are you here for?" I asked. He'd had his elbow repaired. When I told him I'd had my rotator cuff fixed, he said "I had that done last year by another surgeon. I was in a sling for five weeks; I couldn't drive for five weeks; I slept in a recliner for five weeks. I started physical therapy after discarding the sling and endured it for six months, and it's still not right. You look like you're doing pretty well." His eyes popped out of his head when I told him I'd had my procedure just eight weeks ago.

I was in a sling for ten days. I was driving once I left it behind. I started on physical therapy the day after. Seven weeks after surgery did my first lengths in a pool. I was discharged after eleven weeks and feel almost 100%. I'm still doing the exercises on my own at home once or twice a day. I'm working my way back to regular swimming, including Masters. I'm back out on the road running and feeling good.

So if you're reading this and considering a procedure, take heart. It's possible to come back. I'm on my way.

profile for duffymo at Stack Overflow, Q&A for professional and enthusiast programmers

Saturday, April 12, 2014

Heartbleed and Passphrase

The news has been filled with stories about Heartbleed, a flaw in OpenSSL that puts web sites and information at risk. We're told to change passwords immediately.

What a pain! I've got usernames and passwords all over the web. Changing all of them, keeping track, and remembering later will be incredibly difficult. The Internet has a password problem. I can't wait until I have my own quantum cryptographic key generator so I don't have to remember.

So what to do? I came across a nice site called Diceware that spells out a recipe for generating pass phrases. I have a backgammon board in the house, which means that I have four dice handy at all times. But a fifth? I can't use the doubling cube very easily, can I? The idea of manually rolling dice to generate a key, going to the wordlist to look up a word, and recording that pass phrase for a given site seems like too much work, too many steps. So low tech!

Being a computer programmer, I'd rather spend a day coding a solution to a problem that would take five minutes to do by hand. So that's what I started working on last night. I finished it today and uploaded the result to a Github repository. It includes the source code for two Java classes: Die (a six-sided die that uses a random number generator to produce rolls) and PassphraseGenerator (a command line app that generates a random pass phrase using the Diceware recipe), the Diceware word list, and an executable JAR that makes execution in a command shell easy.

This exercise recalled the wonderful xkcd comic about password strength. I always loved the entropy calculation that gave a measure of password strength, so I incorporated the calculations into my application. I also gave a way to calculate the entropy of a given pass phrase using command line arguments. The first argument is the pass phrase, surrounded by double quotes if it contains spaces, and the second is the alphabet size used to generate the pass phrase. I've been using simple pass phrases on my work computer for years now. I put the one that I currently use in to see what its entropy was. It has 42 bits of entropy. At 1000 guesses per second, it would take 241 years to crack if my calculations are correct.

It was a fun and fruitful exercise. It made me happy, like my Mandelbrot solution from a few years back. I need to do more of that.

The last remaining problem is that most sites have ridiculous rules for passwords (e.g. "between 8 and 15 characters; must include one capital, one number, one special character") that actually make them weaker and harder to remember. I'd much rather generate some four word pass phrases and use those!

I'm struggling with software development lately. I'm trying to swallow a lot of new techniques. It makes me happy when I can solve a small problem like this once and for all. Uploading it to Github lends an air of permanence that I love: "Don't have to think about that problem anymore!"

Maybe that's the answer to all hard software problems: Decompose the big problems into lots of small ones that you can solve and upload to Github. Solve and forget that problem, make yourself happy, and move on to the next.

profile for duffymo at Stack Overflow, Q&A for professional and enthusiast programmers