28 December 2012

Painless Java Config and Install for Linux

If you need to install Java on a Debian based Linux distribution, do yourself a favor and use a little shell script named oab-java6.

The oab-java script completely automates the setup of the necessary items for the installation of Java, it's damn simple to use and it completes the set up in just a couple of minutes (depending on the speed of your internet connection). The best part is that nothing gets installed until you actually install it via apt-get.

If you want to know more, then read the doc for oab-java6. It's a very quick read.

19 December 2012

Outlook 2011 for Mac Misbehavior

Recently I upgraded my work computer from Mac OS X Lion to Mountain Lion. I also updated all the MS Office apps. Everything seemed to go off without a hitch as I experienced no issues during the upgrade and all the apps I use on a daily basis haven't seemed to experience any issues... until this week.

As much as I really, really dislike the Microsoft Office products and especially Outlook, I have to use them for my work on a daily basis. Suddenly just this week Outlook began misbehaving by no longer allowing me to search for messages. Any attempt to search my inbox resulted in nothing. This quickly became a pretty big problem because the inability to search made me realize how often I rely upon this feature every day.

Upon doing some research, I found many others with this same issue, but I couldn't find a definitive solution. Digging deeper, I discovered that Outlook relies upon Spotlight to perform searches. So the solution was to reindex the messages in my inbox, right? I tried forcing this by dragging and dropping the MS Office Identities directory into the Spotlight preferences' Privacy tab and then removing it. No dice. Then I tried to simply reindex everything using mdutil:
$ sudo mdutil -i on /
Spotlight server is disabled.
Hmm, I guess I need to enable the Spotlight server:
$ sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.metadata.mds.plist
Then I was able to run:
$ sudo mdutil -i on /
/:
 Indexing enabled. 
$ sudo mdutil -E /
/:
 Indexing enabled. 
This seemed to trigger some indexing, but nothing notable appeared in the Spotlight menu (cmd-space) like I've seen before when the drive is being reindexed. So the last thing I tried was to determine if there is a plist file for Spotlight. My guess was that the plist file had to become corrupted. In similar cases (I had to do this recently for the screensaver) when a plist file becomes corrupted you have to remove it and let it be recreated. So I found a plist file for Spotlight and removed it:
$ rm ~/Library/Preferences/com.apple.spotlight.plist
After rebooting the computer, I could see the reindexing immediately kick off via the Spotlight menu. After waiting three or four hours for the drive to be indexed, I can again search the inbox in Outlook. Yay!

06 December 2012

Hilarious: Devs vs. Ops

Today I stumbled upon an absolutely hilarious depiction of developer folks vs. operation folks, check it out:

05 December 2012

VIM Syntax Highlighting for Scala: A Bash One-Liner

Just for posterity, here is a Bash one-liner to download the VIM plugins to handle syntax highlighting for Scala:

mkdir -p ~/.vim/{ftdetect,indent,syntax} && for d in ftdetect indent syntax ; do wget --no-check-certificate -O ~/.vim/$d/scala.vim https://raw.githubusercontent.com/derekwyatt/vim-scala/master/syntax/scala.vim; done
Update

Here is a solution using cURL submitted by Joe:
mkdir -p ~/.vim/{ftdetect,indent,syntax} && for d in ftdetect indent syntax ; do curl -o ~/.vim/$d/scala.vim https://raw.githubusercontent.com/derekwyatt/vim-scala/master/syntax/scala.vim; done

06 September 2012

The Regenexx Stem Cell Procedure For My Left Knee



Since my last follow-up back in April I have actually had more Regenexx activity, only this time it's my left knee. So I can no longer refer to my right knee as my Regenexx knee because they have both been treated with Regenexx. The right knee was treated with Regenexx SD and the left knee was treated with Regenexx SCP. Here's the story on my left knee.

After the treatment of my right knee, Dr. Centeno demonstrated how tight the ACL is now in my right knee. It's nice and snug with no extra play in it and the tears in the meniscus have healed very well. This is exactly the result we were seeking and what allowed me to continue cycling throughout the summer. This summer my business schedule got in the way quite a bit but I still managed to ride the legendary Triple Bypasss and also my annual stop at Copper Mountain to ride in the Courage Classic.

Unfortunately we noticed how loose the ACL was in my left knee. Performing a simple Lachman test indicated a remarkable amount of slippage, so we decided to get a MRI on the left knee to check it out. After doing so, we were able to see that the ACL was definitely intact, but that there were some spots around the meniscus and the medial collateral ligament that were experiencing some wear and tear. I have never suffered any injury to my left knee, but I do experience stiffness in it. Given the success I had with Regenexx SD on my right knee, I decided to have my left knee treated with Regenexx SCP as well. I just had the final injection eight days ago. Right after the injection I experienced quite a bit of pain and discomfort and the range of motion in my left knee was far from 100%. Here's the breakdown of the treatment:

July 5 - Receive prolotherapy injection and micro-damage to the left ACL, MCL and meniscus. This is basically an injection of dextrose directly into the ACL along with some additional micro-damage using needles. This all causes irritation to the areas that are being targeted for treatment because it causes the red blood cells to flood into the area to heal the irritation and damage. Although it's a weird feeling during the injection right into the ACL, this treatment didn't slow me down one bit with regard to cycling.

August 1 - Receive another prolotherapy injection and micro-damage to the left ACL, MCL and meniscus again. Same thing as one month before.

August 28 - Blood draw to use for the stem cell plasma injection.

August 29 - Receive the stem cell plasma injection to the left ACL, MCL and meniscus. This injection was painful and immediately afterward I had a very difficult time putting any weight on my left leg. In fact, I went home and used crutches for two days until the pain subsided enough to begin walking.

Today, a little over one week after the injection, I have nearly 100% range of motion back and I am starting to walk longer distances. I am still having some trouble at night so I put a pillow between my knees to try to level out my left leg a bit. I've already started doing some light spinning on my road bike with it on my trainer. So far, everything is tracking similarly to my experience with my right knee. Now it's just a matter of following the regimen from the doctor and allowing the treatment take effect.

The Regenexx SCP procedure that I had performed on my left knee last week was less than half the cost of the Regenexx SD procedure. I had no injury in the my left knee, just wear and tear from getting older. But I'm hopeful that I will experience the same outcome as my right knee. I look forward to the day where I can run many miles without knee pain.

06 July 2012

Agile and DevOps, A Perfect Match

Through the years in my career, I have spent a fair amount of my time advising customers on agile software development. Having practiced various agile software development methodologies since the late 1990s, I've witnessed many implementations of agile, both successful and not so successful. In more recent years, the notion of agile has expanded across organizational boundaries and given way to a newer concept known as DevOps. While these two topics dovetail nicely and my years of past experience are relevant here, interesting questions always arise. Consider the following question that I received recently:

Question

What are the migration milestones in building out a DevOps group?

I suggest that this question be reframed a bit. For an organization to enter the world of DevOps means that one must adopt a mindset that is focused on agility in the processes and the methods used to execute those processes. It is very important that you identify the best way of carrying out that mindset across your organization and that it include not only software engineering, but also the customer, the business folks, quality engineering, test automation, release management, security, operations, system administration, etc. DevOps is about a fundamental reorientation to provide software in a more effective manner beginning with design and going all the way to production deployment.

Remember SOA?

I will draw an analogy here to a recent trend in software architecture. The concept of a service-oriented architecture (SOA) embodies a set of principles for designing and developing software. It's the 'why', not the 'how' of software architecture (i.e., SOA is a means to an end, not an end in itself). Numerous vendors took the SOA term and twisted this notion into a wrong-headed marketing message that basically said, 'Buy our software and you will be doing SOA'. I spent a lot of time dispelling this myth over the last several years, encountering much resistance along the way. But make no mistake, SOA is not a technology problem.

If someone asked me about forming a SOA group inside their company, I would tell them that they already have one and it encompasses the customer, the software architects, the software engineers, the quality engineers, the release engineers, the security experts, and the operations folks. There is no need to assemble a brand new group. Would you advocate the formation of an agile group inside a company? I certainly would not because interpreting a methodology in such a literal fashion seems to me like you are already driving the car into the ditch and through the corn field. When I was a kid I learned a term for stuff like this, an Arkansas screwdriver (also known as a hammer). Just because you can doesn't mean you should.

Over the years, I have worked with many companies to get them on the road toward designing applications by using SOA. When I do this, I lead the customer toward the identification of folks across the organization who can participate in this effort. I was certainly not alone in this effort and this style as there are many others doing the same/similar thing. Although we operated on the idea that we were coaching customers to develop apps using SOA via agile methodologies, I now realize that we were also already leaning toward DevOps. (Based on my research, this is really how the DevOps movement came to be what it is today.)

A Perfect Match

Getting back to the original question, I would not approach DevOps any differently than I have approached the coaching of customers into the use of agile methodologies. Continue to coach customers in this manner and you will be successful. Only now, we have even more information and wisdom telling us that this is not just for software engineers. This is a fundamental change for an organization and should be broken down as described on the Agile Admin blog like so:
I tend to think about DevOps in the same way that I think about agile or even SOA, but with a bit more reach across the organization. That is, DevOps is a set of principles for designing, developing, testing, deploying and supporting software. Each role will utilize different tools but they will all be involved in the overall software development lifecycle. DevOps is also a means to an end, not an end in itself. Some of it's main differences are that it cuts across an organization even further to include many roles and people, and it considers software development as a full lifecycle instead of only focusing on the software until its a teenager and then throwing it over the wall to operations and hoping it survives.

The Value of DevOps to the Business

Finally, the value of DevOps to the business is often misunderstood or not understood at all. Historically, the business side has treated software development as someone else's problem. The perception has often been that the propeller heads down the hall are responsible for the software, not the business side. This has always struck me as terribly short-sighted, especially for a company that would not make money without its software.

Consider another analogy here to depict this situation appropriately. Businesses love to equate themselves to sports teams and I've heard this one before, so I'll use the idea of a pro cycling race team (please forgive my cycling fever during this Tour de France season). A pro cycling team operates in a smooth, fluid manner handling anomalies as they arise without disruption. Like any good team it has the following characteristics:
  • A clear direction with clear support and resources from the business side
  • Team members have a good relationship with one another and with supporting companies or organizations
  • The team monitors many external factors that effect their performance and their success
Although a pro cycling team has its recognizable personalities in the riders, there are many more people behind the scenes who make them successful. Without the entire team working as one they will not be successful or will be less successful than they planned. The team sponsors, the directors, the managers, the mechanics, the masseuses, the assistants, the domestiques, and the recognized riders all must be in tune and ready for success. They each have well-defined roles and operate in tandem across organizational gaps to be the very best at everything in pro cycling. I don't believe that these teams would be successful if they did not include everyone in the orchestration. There's also certainly a lot of luck that needs to be on their side to be successful, quite like the business world.

A company that relies on its software to make money is very much the same. Consider the following comparisons:
  • Just as a pro cycling team has a clearly defined direction, so should a company that relies upon software. This message needs to be tuned appropriately to fit different areas of the business, but the overarching message remains – create a machine to make money.
  • Just as a pro cycling team has clear support from the business side to stay on top of the technology in its field, so should a company that relies upon software. This means that time must be dedicated to the craft of building software, continued education where necessary, the purchase of materials (books, publications, etc.) and tools, etc. Do you want excellent, highly talented mechanics, masseuses and domestiques or just mediocre ones?
  • Just as a pro cycling team forms close relationships between team members, so should a company that relies upon software. This doesn't just apply to folks who work in the same department. The most important relationships are those that span boundaries and break down barriers between departments within an organization.
  • Just as a pro cycling team learns to execute flawlessly together, so should a company that relies upon software. Consider that the software a business relies upon to make money is the bike and the rider that a pro cycling team chooses. Do you think that the pro cycling team just arbitrarily decides how to prepare and train for events? Or do you think the pro cycling team has a strict, regimented formula to its training and preparation? A business that relies upon software to make money should also have a strict, regimented formula for crafting, testing, deploying and supporting it's software. Without this level of capability, the ability of the business to make money on a consistent basis is hamstrung by its own processes or lack thereof.

Conclusion

The bottom line is this: A business that deems its software to be critical needs the ability to get that software to market in a consistent, repeatable manner every time. Period. How can this be achieved without involving all of the parties who touch that software in some way?

04 June 2012

How to Change JDK Version From the Command Line

Today I was trying to figure out how to quickly change the JAVA_HOME environment variable from the terminal using the /usr/libexec/java_home command-line utility. I looked at /usr/libexec/java_home --help but didn't pay close attention to the usages because I was in on the phone. As my friend Martijn Dashorts pointed out, there's a manpage for this utility. I am embarrassed to admit that I didn't even think to check for a manpage! My idiot moment for the day, I guess. Here are the two aliases I created:
alias setjdk16='export JAVA_HOME=$(/usr/libexec/java_home -v 1.6*)'
alias setjdk17='export JAVA_HOME=$(/usr/libexec/java_home -v 1.7*)'
Put these aliases in your ~/.bash_profile or ~/.profile, reload the profile and you're ready to go. BTW, if you haven't switched from iTerm to iTerm2 yet, you should do it now ;-).

25 April 2012

A Follow-Up on the Regenexx Stem Cell Procedure for my Knee



In my last post I talked about how I avoided another knee surgery by using an alternative treatment called Regenexx SD. Essentially the procedure extracts stem cells from my hips and injects them into my right knee. This was back in February and since that time, I have had some requests for another update. So this post is to report on my follow-up with Dr. Centeno since having the treatment.

Current Status

A couple of weeks ago I had my first follow-up with Dr. Centeno since I had the Regenexx treatment back in early February. It had been seven weeks since the treatment and everything is going extremely well. I've been doing cycling workouts as well as various core workouts lately to get back into shape for the cycling season (the foam roller is my personal masseuse right now). The day before my appointment, I had just started running two to three times a week. I'm also coaching my youngest daughter's soccer team again which requires running, kicking, etc. So far I'm happy to report that I have no pain during these sports at all. This is great news because it means that the tears in the meniscus are doing very well as a result of the procedure. The only issue I have currently is some stiffness of the muscles around and through the right knee which were preventing me from doing a deep squat on that knee. This is a result of my mental guarding of that knee to protect it. At the urging of Dr. Centeno and my physical therapist, I started squatting deeper and deeper a little at a time to stretch it and get it used to regular full motion. I have already found that this continued stretching and squatting is helping that along nicely, even just in the last couple weeks.

Dr. Centeno also performed the standard Lachman test on my right knee. To even his surprise, it was quite tight and responded very well. As a point of comparison, he also tested my left knee (the one that has never been injured) and it is very loose. It was so loose, in fact, that I could see the dislocation. Again, even he was surprised. So he tried my right knee again and he really tugged on it, but still it wouldn't budge. Because I was also diagnosed with a partial tear to the ACL, this was wonderful news! It means that the procedure has changed the state of the the ACL as well. We were both very happy to see this level of progress. I guess it was wonderful news for my right knee (the one that had the Regenexx treatment), but not so good news for my left knee. After this demonstration, I explained the stiffness in the left knee that has been increasing over the years. I had even been joking that perhaps I should have the Regenexx treatment on my left knee after the right knee is all healed up. So I'm having a MRI on my left knee to see what's going on with it. Depending on what we find, I am seriously considering the Regenexx treatment for my left knee as well. This is a testament to the results that I have experienced from the Regenexx treatment. I'm not sure if I will have it right away or not. I've got come cycling events coming up in June, so I would need to have it done really soon if I'm going to keep up my workouts in preparation for those events.

Continued Physical Therapy + Supplements

Not only am I continuing with some minor physical therapy to loosen my right patella but I am also continuing to take doses of a chondroitin/glucosamine supplement and a hyaluronic acid supplement twice a day. (The Collagen II contains the protein building blocks to support damaged cartilage and the hyaluronic acid lubricates the joints and helps to prevent free radicals from destroying healthy cartilage.) Additionally, last week I began a series of IMS (Intra-Muscular Stimulation) treatments for some muscles in my hamstrings, quads, IT bands and lower back. IMS is essentially deep tissue acupuncture (aka dry needling) to create micro-damage in key muscles to encourage them to heal themselves. It will take a few more treatments before I see some distinct results, but I'm hoping that this will dovetail well with the core workouts, yoga and cycling that I do.

Regenerative Medicine

I have a friend who sells surgical tools and equipment. One tool he's selling now is a laser that is used to create micro-damage in very specific locations of the human heart. Just like what Dr. Centeno did with my knee, such micro-damage causes red blood cells to respond to heal the area (i.e., encouraging the body to heal itself). This creates an ideal situation for the injection of stem cells to grow new tissue in place of damaged tissue. He told me that they do this procedure for patients who have chronic heart disease and in some cases they can double the heart's ability to pump blood. For some patients, this translates into adding years to their life. So when I mentioned this procedure for my knee to him, he immediately knew what I was describing and told me that regenerative medicine is the new wave. So, in my opinion, the FDA better wake up and embrace the future and stop playing favorites with big pharma. Here's some interesting info on the lawsuit against stem cells from the FDA:


Conclusion


According to my doctor, my overall my progress has been excellent and, at this point, I couldn't be happier that I chose the Regenexx procedure vs. surgery. Tomorrow I have an MRI on my left knee to begin the possible pursuit of the same regimen of treatment for my left knee. Stay tuned.

08 April 2012

A Trip To Japan Over Spring Break



During my kids' spring break at school a couple of weeks ago, we traveled to Japan. My oldest daughter's soccer team did a cultural exchange with a soccer team in Arao, Japan, staying with host families, playing soccer and experiencing Japanese culture. Here's a photo of all of us just as we arrived at the Fukuoka Airport in Japan.

We had a wonderful experience in south Japan in a city named Arao in the Kumamoto Prefecture. It's a very rural area with many small towns and lots of farming all around. The girls played in a soccer tournament and had three exceptional players from Japan join their team for the games. It was a very different style of play on a smaller, dirt field with only eight players per team and 12 minute halves. The ball traveled very fast on the dirt and the Japanese teams were all boys with only a few girls. They were very precise in their play and very fast. Then we traveled a couple of hours to Kumamoto city to play a team of all girls teams on a turf field. Again, very precise passing and very quick feet, overall a great time was had by all. The girls were exhausted after all of the soccer.

At the end of the first few days while we were still adjusting to the time zone change, every evening my youngest daughter Bailey and a friend's son Cameron would fall asleep at dinner. They are each nine years old.

After playing soccer for a few days, we went sightseeing for the rest of the trip. Here are some of the things we experienced:
  • The first day we arrived we visited the mayor and the school superintendent of Arao city (in all of our exhaustion from traveling). This was very special to them and we were very happy to be a part of it. The next morning it was raining so in the morning a few of us went bowling with all the girls while another group of adults visited a sword maker and an historic Buddhist temple (I was chosen to chaperon the kids bowling so I missed out on visiting the temple - I would have loved to experience this). Then in the afternoon all of us joined up and went to a mall for some shopping. The bowling alley and the mall both looked like they could be in nearly any city in the US really.
  • While in Kumamoto city we visited Kumamoto Castle which dates back to the 15th century. The size of the entire castle complex is enormously vast measuring roughly 1.6km from east to west, and measures 1.2km from north to south. The height of the main castle keep is 30.3m. The complex has 3 castle keeps, 49 turrets, 18 turret gates and 29 smaller gates. It's size and beauty has to be seen to be believed really.
  • One day we traveled to Amakusa to go dolphin watching (dolphin watching photos). It was so much fun to be in a boat cruising along side the dolphins as they swam. We even got to see some baby dolphins swimming with their mother.
    * Another day we traveled to Nagasaki to visit the Nagasaki Atomic Bomb Museum and Peace Park, a memorial to the victims and the history when atomic bomb that was dropped on Nagasaki by the US in 1945. This experience left a lasting impression on myself and most everyone else; the atrocities that humans commit upon one another is shocking. This was a similar to Janene's and my visit to the Halocaust Museum in Washington, DC years ago.
  • Still another day nearly everyone went to an amusement park named Greenland Resort and Amusement Park (this site is in Japanese but the photos are great). A few of the adults also went to visit a Japanese pottery studio.

We also had multiple dinners and parties while we were there both at large areas where we could gather and in small groups in Japanese family's homes. Experiencing the Japanese life and culture in this way was something that we will never forget. It was a very good for all the girls to experience life in another country, especially one that, at times, could seem so different from the US and yet so similar. I have always enjoyed the experience of other cultures throughout my travels in Europe and I'm glad that my girls got to experience Japan.

Nearly everywhere we went during our trip, there were Japanese people who were amazed by my youngest daughter Bailey. Evidently the Japanese people are enamored with her blonde hair and blue eyes. She was like a celebrity and they wanted to have their photo taken with her. They would ask to touch her hair and stroke it with a look of awe. I was a bit freaked out by it at first but it became so common and hilarious that we all just laughed and laughed.

If you would like to see more about our trip, take a look at the blog and photos that Janene and I maintained while we were in Japan. There are plenty of photos and blog entries by the girls about their experiences.

05 April 2012

Start/Stop MongoDB Using These Aliases



Just a quick note on working with MongoDB on Linux/Unix.

Recently I needed some ready-made commands to start and stop MongoDB that I could just copy/paste and go, so I created the following aliases for my Bash profile that did the trick. I use these for developing with MongoDB on a MacBook Pro exactly the same way that I make use of aliases for PostgreSQL and MySQL. These are mainly notes for myself for posterity but I'm hopeful that they may also help someone else as well:


# Start up MongoDB using a forked process and log appending
alias mongostart='/var/mongodb/bin/mongod --fork --dbpath /var/mongodb/data/db --logpath /var/mongodb/log/mongodb.log --logappend'

# Shut down MongoDB safely using the soft kill on the PID
alias mongostop="kill -2 `ps aux | grep [m]ongo* | awk '{ print $2 }'`"


Put these in your ~/.bash_profile or ~/.profile, reload the profile and away you go. Obviously you will need to adjust the paths to suit your own environment.

18 February 2012

The Regenexx Stem Cell Procedure for my Knee



In my last blog post, I discussed the problems I have had with my knee, the recent injury causing meniscus tears and about the alternative treatment I elected to have instead of surgery. Well this week I underwent the treatments for the Regenexx SD procedure on my right knee and so far things are looking good. In fact, I just finished a very brief and very easy spin session on my bike (on the trainer, not outside). Although my knee does not have 100% range of motion, it is returning quickly.

The procedure involved the following treatments over a period of days:
  • Day One, Pre-Injection - Injections to the knee to cause your body to think that the knee has been injured. This causes red blood cells to rush to that area so that the body can begin healing itself.
  • Day Two, Blood Draw - Took blood from my arm to be spun down to get the platelets.
  • Day Three, Bone Marrow Harvest - Draw bone marrow from my hips early in the morning to be spun down to extract my own stem cells. Return a few hours later to have platelets and stem cells injected into the knee, directly into the tears in the meniscus.
  • Day Four, Blood Draw - Took more blood from my arm to be spun down
  • Day Five, Post-Injection - Inject the knee with the platelets to encourage healing. This is like adding more fertilizer to the knee.

These treatments were focused on my torn meniscus and, overall they went really fast throughout the week. I don't have a problem with needles, so it wasn't a big deal, though my knee did get sore throughout the week from having so many injections. The procedure to harvest the bone marrow was a bit strange because, once the doctor had me numbed up, he was putting his body weight on you to drive a needle into your hip bones to get to the bone marrow. They are actually going into the bones in the small of your back called the iliac crest. It's uncomfortable, but not painful. I definitely felt the injection of the stem cells because they put the needle right into the meniscal tears for the injection. Afterward it felt like my knee had been reinjured for day or so, that wasn't fun but it was much better than surgery. During the treatments that were performed, they were using a special x-ray to observer the proper insertion of the needles. This was pretty cool because I could watch what they were doing and see the needles going into my knee and hips.

After all these injections, my knee was filled with a lot of fluid, so there was some swelling, I did not have full range of motion and I was limping because of this. But that seems to be returning pretty quickly as I can do stairs pretty easily now and my limp is nearly gone.
  • Days Six and Seven - My knee felt like it had been reinjured and my back was a bit sore.
  • Day Eight - My knee is doing much better today. The pain is gone from the knee and it is hardly sore at all, but now my lower back is definitely sore deep in there, especially when I sit in a hard chair or the seat in a car. It's not painful, but when I sit down without being gentle it definitely gives me a jolt and makes me think, 'Oh, that's sore today!'

For the first three days or so afterward, they tell you not to do much, just take it easy. After that, you can begin cycling and swimming for two weeks, but not full-on. They still tell you to take it easy. By the third week, you can walk as much as you like and by the sixth week you can begin integrating back into the activities you did previously, adding 20% per week. Additionally, I need to take collagen and hyaluronic acid supplements daily now to help maintain the cartilage in the joints. Somewhere between 6-12 weeks after this procedure, I will probably have my knee injected again to focus the ACL. There is a partial tear in the ACL, but not as bad as the meniscus which is what was causing most of the pain.

This treatment is really new and not yet standard by any means. Although they have treated over 1100 people and had good success in most cases, it's still not a procedure that you can get anywhere in the United States. Right now, it's only offered in Broomfield, Colorado and a few other clinics in the US. In fact, the two doctors behind the Regenexx procedure are embroiled in a law suit with the FDA over one of their procedures. There's some really great discussion on the Regennex Blog and in a Forbes article titled Stem Cells and the Lawsuit That May Shape Our Medical Future. I am fascinated by the law suit because it seems to me that the FDA is favoring someone who offers an alternative treatment and basically playing politics instead of being objective on the whole thing.

One common question that I've received is whether or not insurance covered the cost of the treatment and the answer is no. For me, this was an easy decision based on what happened with my previous surgery some 24 years ago. When I had surgery to reconstruct my ACL, literally the following week they began doing a different surgery through an arthoscope that was much less invasive and required far less recovery time. Because of this change right after I had my surgery, I was left feeling like I received the tail end of the surgical treatment technology at the time. I decided that I did not want to feel that way about having another procedure on my knee. My goal was to feel like I tried the newest proven techniques and treatment for my injury and I feel I have met that goal with the Regenexx procedure.

The other item that figured into this for me was what I read about folks who had surgery for a torn meniscus and wound up worse off. Either they had part of the meniscus removed or enough shaved off that it affected the stability of the knee permanently. I didn't want to chance winding up worse off than I am now because I am so active. I can still have surgery if I ever need to, but I'm hoping that won't be necessary.

Because the procedure is not covered by insurance, the very next question folks ask is how much it cost. This is where I explain the cost relative to the surgical procedure that I was scheduled to have before I discovered Regenexx. Consider the following numbers comparing the cost of surgery vs. Regennex:

SurgeryRegenexx
Procedure Costs$7000+$5600
Hospital Costs$8000-10,000+N/A
Physical Therapy5 months+ (2-3 times/week)6-8 weeks (1/week)
Downtime (no activity)4-6 weeks3-5 days
Covered by Health InsuranceYes, partiallyNo

There are certainly trade-offs here and everyone needs to make their own decision. Of course, at least part of the traditional surgery is covered by insurance, but not 100% of it. For me, the decision was rather easy to forgo the surgical option because I didn't want to chance having my knee wind up in a worse situation than where I started and I didn't want to take so much down time. Now only time will tell if this was a good decision.

Follow Up

To read the follow-up to this blog entry, please read A Follow-Up on the Regenexx Stem Cell Procedure for my Knee.

I have also written about having the Regenexx treatment for my left knee later in the year: The Regenexx Stem Cell Procedure For My Left Knee.

17 February 2012

Yak Shaving to Install Git Via MacPorts on OS X Lion



Today I needed to set up a new MacBook Pro and as such one of the tasks was to install git on OS X Lion. Being that I am a fan of MacPorts, I decided to start there but I ran into some strange errors. Unfortunately I wound up doing a lot of yak shaving.

The last time I installed MacPorts fresh, it was on a previous MacBook Pro that had OS X Snow Leopard installed. I successfully installed MacPorts and then used the port utility to install git without issue. Later I then updated to OS X Lion and had no issues with git or Xcode.

So from previous experience, I knew that before I could install MacPorts I would need to install Xcode, so I downloaded and installed Xcode 4.3 from the App Store. Then I attempted to install MacPorts, but began seeing errors about not being able to find the make utility. Sure enough, it was not in /usr/bin. After some hunting, I ran across a document titled New Features in Xcode 4.3 which noted the following:
'The command-line tools are not bundled with Xcode 4.3 by default. Instead, they can be installed optionally using the Components tab of the Downloads preferences panel...'

So I installed the command-line tools from the Xcode preferences panel and then proceeded with the MacPorts installation. It completed successfully so I moved on to the actual installation of git using the following command:
$ sudo port install git-core +bash_completion +doc +svn
Unfortunately this wound up with an error stating:
Error: Failed to install zlib
Hunting around, I wound up finding a few things such as this MacPorts issue, only to discover that this issue was closed as invalid. So I hunted some more and found this question on Stack Overflow which had one hint but not everything to fix the situation. I also found some advice in a document about Migrating a MacPorts install to a new major OS version or CPU architecture.
  1. Install the Xcode command-line tools from the Xcode preferences panel
  2. Update the /opt/local/etc/macports/macports.conf file to change from 'developer_dir /Developer' to just 'developer_dir'
  3. Clean all ports using sudo port clean all (this took a while)
  4. Now run the following steps:


$ sudo ln -s / /Developer
$ sudo ln -s /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs /SDKs
$ sudo xcode-select -switch /Applications/Xcode.app
$ sudo port install git-core +bash_completion +doc +svn

After stumbling upon and utilizing these steps, I completed my yak shaving session and finally got git installed successfully. This cost me a total of about two hours. Here's a great Ren and Stimpy video about yak shaving. Now I'm on to another weird problem with this new laptop, a couple of System Preferences are dimmed and I can't figure out why. Anybody know what may be causing this?

11 February 2012

How To Avoid Another Knee Surgery

On 1 February, 2012, I was scheduled to have knee surgery, but at the last minute I decided to cancel the surgery in favor of a more advanced treatment that requires no surgery. Here's a brief story to describe why I chose this route.

All of my knee problems began when I was in high school. I was a pole vaulter on the track team and during an early spring season track meet while warming up I landed wrong and experienced a medial collateral ligament (MCL) tear as shown in the image to the right. Prior to this injury, I never had any knee problems so this injury was a very big surprise. There was no surgery required for the injury, just immobilization. So after eight weeks in a brace from my hip to my ankle that utilized progressive motion during the last four weeks, my doctor at the time took my crutches and told me good luck. I was just a kid and completely inexperienced with knee injuries to know any better. Little did I know that this lack of proper rehabilitation would affect me for the rest of my life.

The following fall, I made the high school soccer team again and played soccer wearing a big knee brace. Because of the brace, people would come after me on the field to take me out and so I experience a number of sprains and strains throughout the season. But the very last game we played that year I twisted my knee badly and heard a loud pop. When my knee ballooned up in a matter of minutes to the point that I could barely bend it, I knew I had a bad injury. The result was an anterior cruciate ligament (ACL) tear. The image to the right shows an ACL tear, note that mine was a total tear and not a partial tear. Although I did extensive physical therapy, I wound up needing reconstructive surgery a few months later. At the time, this involved a large incision down the center of the knee so that a chunk of the patellar tendon to form a new ACL that was grafted to the femur and tibia by drilling new tunnels and using a chunk of the patella. At the time, it was pretty extensive surgery and damn painful. Essentially stealing from one area of the knee to fix another area of the knee.

After nearly five months on crutches and one month with a cane, I was already into some rigorous physical therapy involving cycling, swimming and weight resistance/training. In that time, I also discovered that literally the week after I had surgery, the doctors began doing a new type of ACL reconstruction. This new type of surgery was/is known as anthroscopy and requires only very small incisions making it much less invasive than the style of surgery that I had and, as a result, required much less recovery and rehabilitative time.

Through all the reading and research around knees that I have done since my first injury, I have also discovered that the immobility was the real downside to the old style of knee surgery. It left patients (including me) with a significant amount of atrophy or muscle deterioration. To this day, I have visible atrophy of the muscles in my right leg where all of my knee problems have occurred and it all comes back to the immobilization techniques used in my recovery.

Over the last 24 years since the ACL reconstruction, I have experienced zero knee problems. But in December of 2011, while playing indoor soccer, I experienced a knee injury and I new right away that something tore. A month later, I found out that I experienced two meniscal tears (one medial, one lateral) as well as a possible partial tear of the ACL -- what?! Yes, the one that I had reconstructed so many years before. Through my own research, the lack of swelling and the type and location of pain, I had already guessed that I had torn my meniscus, so that was not a surprise. But I was very surprised by the news that there is a partial tear in the ACL. But the doctors did tell me that they couldn't tell for sure if this tear occurred at the same time. The image to the right shows the meniscus and my tears are located near the rear of each meniscus.

So I decided to have surgery for the meniscal tears and during the surgery the doctor would determine if the ACL needed to be replaced. There were two options for the ACL reconstruction -- use part of my hamstring or use donated tissue from a cadaver. After researching both options, I decided I didn't want to steal from another part of my leg to mend my knee again, so opted for the donated tissue. My surgery would have been an anthroscopy which is good because it requires less recovery and physical therapy resulting in much less down time than I had when I was a teenager. As I researched and read about folks who had had meniscal tears fixed via the same surgery, I found many folks who had success with the surgery but I also found a surprising number of stories from people who said that their knees were worse off after such surgery. And they attributed these to a variety of issues including shaving the meniscus, stitching the meniscus and, in some cases, removal of part of the meniscus. For those who are not aware, the meniscus is a spongy, low blood flow tissue that pads the area in the knee where the femur meets the tibia. Injuries to this area can often cause arthritis over time and removal of any of the meniscus means less padding there. This is why you see folks who have had a bad experience with meniscal repair who walk so gingerly, especially up and down stairs. Given all of this, I didn't think that I had any alternatives, so I scheduled the surgery with the goal of being able to cycle this summer.

Only days before the surgery, my friend and neighbor informed me about an alternative to knee surgery called Regennex. Last year my neighbor had a persistent hamstring injury treated with a similar procedure known as Platelet Rich Plasma (PRP). PRP is a similar injection therapy for acute injuries that only uses the platelets from your own blood to promote healing. She experienced a full recovery to an injury that had been recurring for years. Needless to say, she is a fan. Regarding the Regennex treatment, she knows a woman who had the procedure last year and now is doing wonderful now. In fact, her case was even televised recently (see the video here: http://www.youtube.com/embed/DQ_H0yGLQh0?autoplay=0&). Being that the clinic where this procedure is being conducted is only a few miles from where I live, I decided to see if I could schedule an evaluation ASAP with the goal of avoiding surgery. A couple days later I was evaluated and found out that I was a candidate for this new procedure. Being that my first ACL reconstruction was essentially using the tail end of surgical techniques at the time, I didn't want to be in the same boat this time. I wanted to be on the cutting edge and to avoid surgery if possible. Also, knowing that I can have this new procedure more than once if necessary and that I can always opt for surgery at a later time if it truly becomes necessary, I decided not to have the surgery at this time in lieu of this new procedure.



I am currently undergoing the Regennex Stem Cell Plasma procedure. This procedure involves a series of treatments where they draw blood from my arm to get the platelets out of it and they take bone marrow aspirate from my hip to get the stem cells out out it. Then they combine these two compounds and inject it into the damaged areas of my knee to encourage it to grow new tissue and essentially heal itself. My hope is to experience minimal down time (I will only need to avoid cycling for a few days) and continue being active. For more information about the procedure, check out Orthopedics 2.0 - How Regenerative Medicine will Create the Next Generation of Less Invasive Orthopedics.

The one activity that I have begrudgingly decided to sit out on is soccer. I have always loved soccer and I still love soccer, but two of my three major knee injuries occurred playing soccer. As difficult as it will be to watch my wife and friends and kids still play soccer, I have decided it would be best not to play competitively anymore. I will continue to cycle, hike, run, swim and do nearly everything I love to do, just not competitive soccer.

Stay tuned and I will let you know how things turn out as I complete the rest of the Regennex procedure.

04 January 2012

How To Add An Existing Git Project to Eclipse



Here's another quick set of notes for myself for posterity. I always clone and build a project on the command line before I import it into the IDE to begin hacking code. Right now I have to handle a hairy merge so I need a visual tool to make things a bit easier. For this purpose, I want to make Eclipse git aware so that I can use the visual diff in the IDE. Hopefully these notes will help out someone else, too.

For this situation I'm dealing with a Java project that uses git. First some quick items to set the stage:

  • IDE:For Java development, my IDE of choice is the SpringSource Tool Suite (STS). If you develop Spring-based Java apps and you like Eclipse, you should really be using STS.
  • SCM: The majority of projects I have worked with over the last few years use git for SCM. It is vastly superior to any other SCM tools I've used and documentation abounds for it, but it is a bit like a razor blade.
  • IDE+SCM: The standard git tool for Eclipse is EGit


To make the Eclipse project git aware, follow these steps:

  1. Go to Window->Show View->Other
  2. In the filter field, enter the word git
  3. Select Git Repositories and click OK
  4. Click on the icon whose tooltip reads 'Add an existing local Git Repository to this view'
  5. Click on the browse button and navigate to the directory that contains the project source code
  6. Click the Search button
  7. Click OK
  8. Right-click on the project in the Package Explorer
  9. Go to Team->Share Project
  10. Select Git and click Next
  11. Check the box for 'Use or create Repository in parent folder of project - this should automatically find the .git directories
  12. Click Finish and let EGit complete the integration


After following these steps, the projects should be connected to their git repository. This allows you to handle the vast majority of git commands right from inside the IDE.

For more info about EGit, check out the EGit User Guide.

02 January 2012

Developing Apps for Mac OS X With Objective-C and Cocoa



Even though I've used Macs for over 20 years now, I have never developed a native app for the Mac OS. So over the holiday break, I finally spent some time getting ramped up on Objective-C to develop apps for Mac OS X and IOS. This meant reading a lot about Objective-C, XCode and Cocoa.

I'm primarily a Java developer these days but I'm familiar with writing C code (though I haven't written it in many years) so this knowledge helped me quite a bit. The syntax for Objective-C was a bit strange at first but I got the hang of it after a bit and I'm continuing to learn. I managed to develop a command line app and a GUI app using XCode. Building the command line app was much more understandable for me because you are writing all the code by hand. Constructing the GUI app was a rather nebulous task mainly because you rely upon the IDE to handle many things for you. XCode is the IDE for building Objective-C apps for Mac OS X and IOS. When developing a GUI app, XCode provides a visual tool called Interface Builder that is amazing. It provides a standard set of widgets for your apps and allows you to do visually design the UI. Interface Builder simplifies the creation of connections from the code to the GUI widgets via dialogs and selections in those dialogs. Because the actual code to handle these things is hidden behind the IDE, the experience was rather cloudy in my mind. At some point, I plan to dig down into what is actually happening behind the curtain here to solidify it in my mind. I also used the XCode debugger and profiler which were both very nice tools and were both included in the IDE.

I forgot to mention that I am using Objective-C 2.0 and XCode 4.2. This is not only a new release of Objective-C but it's also a new release of XCode with a dramatically improved set of functionality. My prior experience was with XCode 3.x, it was minimal and I was not writing Objective-C, so I didn't really get to experience the power of XCode. Now that I've been through a couple of tutorials with XCode 4.2 and Objective-C, I must say that I'm duly impressed. In fact, Eclipse could stand to learn a few things from XCode. Objective-C 2.0 is a big improvement over the previous version. There's now automatic reference counting to help you with memory management (the big thing I hated about C/C++) and much more.

The apps I created run on Mac OS X. They are both very minimal and not very useful overall, but it is invigorating to delve into new territory for a platform that I have known and loved for over 20 years already. I plan to keep at it as time allows and build some useful apps. Perhaps I will even develop some IOS apps.

For those who are interested, here are the two tutorials that I followed:

I've also been reading many blogs from Objective-C and Cocoa developers. I also found some items for Java developers who want to learn Objective-C:

I will try to keep adding info about resources here as I think about them. Not only is this a record for myself, but hopefully it will help other folks as well.