Wednesday, February 26, 2014

Climbing Mt. Adams

Mt. Adams in the distance

If you are a newbie and want to climb Mt. Adams, this could be the post for you. Adams provides for a very very strenuous but non-technical climb to a really huge peak. The sense of accomplishment is great the risk is low(ish).

19th and 20th July, 2013 we climbed Mt. Adams. At 12,281 ft (3,743m) this is the second tallest mountain in the state of Washington after Mt. Rainier (14,411 feet). I am a complete newbie to hiking and could’ve never imagined an year ago that I can accomplished this. In this blog I will try to chalk out what went right and wrong and how a newbie hiker can accomplish this. If you are an expert hiker, you should always ignore blogs like these, put on your 5 finger Vibram and run up Adams in a day.

Preparation

Obviously this will vary based on one’s personal fitness level and also how much time you are prepared to spend on this. I have been hiking for 2 years. This being the second year. Last year the biggest hike I did was Mt. St. Helens in the summer and even this year I again did Helens in the winter (post to follow).

After talking to various hikers and climbers I figured out that the obvious challenge is to hike up to base camps with large backpack, sleep just couple of hours and then do an equally strenuous hike the next day. I am not that big into exercise, I run a bit, do weights a bit and in general hike a lot but slowly with my family and my eight year old daughter. All in all not in really bad shape but not a typical PNW (Pacific North West) hiker :).

Other than starting to run couple of times a week (around 3.5 miles on the road) I started doing back and core exercises to strengthen my upper body. I hiked almost every weekend or after work. These hikes were mostly hikes like Mt. Si, Granite or Bandera which hovered around 8 miles (roundtrip) with around 3500ft gains. I generally had a backpack with 25lb in it.

Closer to hike day I did couple of hikes up Mt. Si with 50lb backpack. I filled the pack with water. The great thing about doing that is, you can throw the water on the top of the peak and save your knees from the brutal hike down.

image

If you can hike up Mt. Si in 2 hours with a moderate 20lb pack or under 3 hours with a 40 lb pack, you should be good to go.

ICE-AXE self-arrest

Knowing how to do this is a must for Adams. I had to self arrest twice on this trip. First while glissading down when I spun out of the glissade chute. Second on the crescent glacier while we got stuck on a steep section and had to slide down the slope.

 

Gear

This is what I carried for this trip. I had accumulated most stuff over the past year or two and rented the rest from REI. I built my list by consulting various web-sites. One good one was https://www.alpineascents.com/pdf/adams-climb-gear.pdf.

Food/Water

  • 2L Water bladder (Platypus)
  • Extra Nalgene bottle
  • Gatorade powder
  • 6 energy bars
  • Mountain House Food Pouches, one for each meal
  • Gummy Bears (two packets)

Climbing Grear

  • Hiking poles + basket
  • Ice axe (Grivel)
  • Crampons (rented)
  • Plastic Climbing shoes (rented)

Misc

  • Sun-block
  • Lipscreen (SPF 30)
  • First-aid
  • Gorilla tape
  • Emergency blanket
  • Knife
  • Matches
  • Slippers
  • Sanitizing wipes
  • Wag-bag
  • Ear plug (camps are noisy)
  • Garbage Bags

Utensils/appliances

Gadgets

  • Camera
  • GPS (Garmin Oregon 550)
  • Headlight
  • Extra cells for everything
  • Walkie-talkie / two-way radio

Shelter

  • 4 Season tent
  • 20 degree down sleeping bag
  • Sleeping pad

Clothes

  • Hard shell (Gortex based shell from NorthFace)
  • Insulation (800 fill down jacket)
  • Synthetic base layer
  • Long underwear
  • Hiking pant (water resistant)
  • Rain shell pant (for glissading down)
  • Balaclava
  • Snow gloves
  • Running gloves (fleece)
  • Sun glasses (< 8% transmission)
  • Woolen socks
  • Sock liner (to avoid blisters)
 

003The biggest blunder I did in the selection is that I got the cheapo rented plastic boots from REI. Worse still I decided to hike up to base camp wearing that (instead of using hiking boots and packing the snow-boots in). I had blisters two miles into the hike and I think the choice of wearing 4 lb each boots almost ruined our climb. The photo is of me taking care of blisters. I just put in a band-aid and covered it with gorilla tape (yep) and it remained in place. I also taped around the hot-spots in the feet to prevent further blistering.

Save yourself all of the trouble and buy good mountaineering boots.

Starting out

We started our drive from Seattle early in the morning, around 4:00 a.m. We reached the rangers office (2455 Washington 141, Trout Lake, WA 98650) at around 9:30 (with a breakfast stop in between). We collected our climbing passes and drove up to the trail-head at 5500ft. 001_1

Climbing Begins

We went to the restrooms the final time and put on our plastic boots (ouch!) and started our climb at 11:10. The initial part is through forest completely burnt with a forest fire last year.

001

At the beginning of our trip we were all smiles. The route was dusty. 1.5 miles in I had to take off the plastic shoes, put on Band-Aids and gorilla tape and continue to push forward. The combination of huge packs and 4 lb a piece of plastic boots were killing us.

We had some gorgeous views of St. Helens on the way as well. There were patches of snow around but non on the trail.

004

Around 12:20 at 6600ft 2.4 miles into the hike we hit snow. We decided we didn’t really need any crampons because the snow was really mushy.

DSCF0217 We hung around for some time had our first energy bars and started the climb again.

005 The sun was beating down and up (snow reflected) on us. The soft snow was really really hard to climb through. We were in the middle of the crescent glacier. On the way we met quiet a few climbers. One was from Pharmaceuticals background and shared with me how Indians have a mutation which makes our hearts weak (I have heard of this before). It was not encouraging especially we were in a very steep slope and continually slipping. We had a big incident here on the way down, but more about that later.

Around 2:30 at 7700 ft we hit a really rough spot. It was super steep and the snow was so soft, I kind of thought we would not be able to make our way up. From there till 8200ft was nightmarish. When I finally reached the top of that lip it was a huge but short lived relief.

image  DSCF0234

Finally the tough spot was over at 3:23 at 8261ft. There were some camping spots at this place as well, but they were all vacant. We bade our friend Gaurav temporary farewell as he pushed forward to reserve camping spots for us. Yaniv and I were wimps and rested here for some time, took a bunch of photographs and finally after 30 mins continued up the Crescent glacier.

6.5 hours, 5.2 miles, 3800 feet gain later we setup our camp at an elevation of 9300 ft at around 5:40 p.m. Gaurav had chosen a spot on “Lunch Counter” on a dry spot as close to the face of the mountain as possible and just beside the glacier so that we had snow to melt for water easily.

DSCF0242 DSCF0246

Yaniv actually went to sleep. We have photographic proof.

We got down to the business of setting up camp. We were told that there is a stream of water, but it was too thin and we weren’t able to use it well. So I also melted some water and made some nice chai. We had two tents setup for 3 people. I got the royal treatment and got a tent to all by myself.

 009 010011

Our plan was to make dinner, eat and sleep early. However, the sun decided to set. It was so gorgeous we forgot everything and just got busy taking photographs.

IMG_0696-Edit 014

Finally we did go to sleep around 11:00 p.m.. The ear-plugs helped

In no time it was time to get up. We got up at 2:30 a.m.. Made some quick breakfast by boiling water and putting it in the mountain house meal packets. Got dressed and setup for climbing by 3:40 a.m. I was fatigued before even I started my summit day. The combination of sleeping just 3 hours the night before (due to early start from Seattle), 6 hours of climbing and a repeat night of 3 hours of sleeping was too much for me. In my mind I already gave up. The daunting view of the climb to Piker’s peak didn’t help.

However, not willing to let fellow climbers down, I put on the head-lamps, crampons and started out.

We were going up very steep slopes and Yaniv was already not feeling that well. He took some breaks to slow down. The sun was rising and it lit Mt. Hood in golden colors.

 018 019 020 022 021DSCF0295

Yaniv was not feeling well and altitude sickness caught up to him. He was having trouble breathing. Sadly we bade him farewell and decided to keep contact over radio.

Finally around 7 a.m. we reached Pikers peak at 11,500. The look down was very encouraging, I was mind blown that we got up so high. .

 DSCF0310 DSCF0313

However, then I turned around and looked at the real peak. It was super far off. I will remember that point for my whole life. I was completely beat, I had thought we almost made it and there was only a little further to go. But now I realized the last 800 feet was almost impossible for me. I was ready to give up.

DSCF0314 

At this point, Gaurav said, lets not plan to go to the summit. Lets just go to the bottom of the real  peak and then re-consider. We went on thinking this way for the next three phases. It always looked daunting when we looked up, and so I choose to just stare at my feet and take each step at a time…

DSCF0316

Finally we reached summit at 8:40 a.m. It took us 5 hours to summit.

026

 028DSCF0330

030

We dropped our bags and strolled around the summit. We could see St. Helens, Rainier and Hood far off.

We turned back and started the slow march down. I had lot of fun glissading down, but it was very scary at places. It was hard to see what was ahead and I spun out of the glissade chute multiple times and had to self arrest with the ice-axe. Finally we broke the camp and started moving down from there.

029 DSCF0365 IMG_0734

I have always heard that a lot of accidents happen on the descent. We got a taste of it first hand. By the time we reached the steep descent in Crescent Glacier the snow was very soft in the strong sun. We could see rocks jutting out of the snow and since we couldn’t see what was beyond certain points we decided to hike down and not glissade. Soon we were at a steep section which was too soft to stand and we were slipping. Our Ice-axe was still attached to the backpack. Gaurav feel first and hit a huge rock spraying debris. His backpack and poles came off and slid down. Thankfully he was not hurt. We tried to walk a bit further and realized we just cannot make it and once we were clear of the rocks we slid down. When we were at the bottom we realized we should’ve just glissaded down in the first place. A ranger coming up had seen us fall and he stopped by to see if we were safe.

image

After a long long hike we finally reached the trail head and drove back to Seattle. The most dangerous part of our trip was the drive back. The driver actually fell asleep. Looking back we should’ve just slept at the lunch counter and enjoyed the mountains and not tried to drive back.

The partial climb profile is here…

image

Wednesday, February 19, 2014

Dad loves Surface

Mt. Rainier

IMG_5943 I have given a surface to my daughter. A lot of my friends/family ask me how I like using Surface and whether my daughter likes it as well. I can tell you that the killer feature from dad’s point of view is Family Safety. I am not an iPad/Android user, so I do not know how they do in this area, but I love the capability in Windows. In my humble opinion this is pretty under-sold and a lot of parents are unaware of this gem.

You just need to follow the steps at http://windows.microsoft.com/en-US/windows/set-up-family-safety to set it up either for a new account or for your child’s existing Microsoft account. Once you do just head onto https://familysafety.microsoft.com/

image

Tap/click into your child’s account and you can setup various things. I use all of them including time restrictions, app restrictions.

image

I get weekly email with her activity report and can ding her on the time she spends on Netflix.

Also I get an email when she tries to install weird games. And no I’m not going to allow her to use Gangnam Guy

image

Setting daily time limits and curfew hours is fun :)

image

 

image

When she goes out of this time range Surface locks up with a screen asking her to take the device to a parent to unlock. I can use my live ID and extend her hours if I so want. Now the main problem is to say no to such a cute face :)

IMG_3578

Friday, December 27, 2013

Getting Arduino Uno work on Windows 8

I keep needing to do this and I couldn’t find one place where all the instructions are placed, so capturing it here. Also the standard instructions at http://arduino.cc/en/Guide/Windows didn’t work for me.

Get the Software

  1. Get Arduino Software from http://arduino.cc/en/Main/Software. Choose the Windows (ZIP file) and unzip it to local PC. I used D:\Skydrive\bin\arduino-1.0.5

Disable Driver Signature Enforcement

Unfortunately this step does disable a security feature of the OS, but I couldn’t find a way to do this otherwise.

  1. Open an command prompt and run the command
    shutdown.exe /r /o /f /t 00
  2. System restarts with Choose an option screen
  3. Select Troubleshoot
  4. Select Advanced options
  5. Select Windows Startup Settings
  6. Click Restart and it will restart into the Advanced Boot Options Screen
  7. Press the keyboard button for the number for Disable Driver Signature Enforcement (which was 7 in my case)
  8. System will restart with driver signature enforcement disabled.

Install The Driver

Press Windows key + W and type “Devices and Printers” and open that. Connect the Arduino board over USB. You should see something called Unknown Device shown in it.

image

Run the installer "D:\Skydrive\bin\arduino-1.0.5\drivers\dpinst-amd64.exe” or locate corresponding path from your installation folder. The window above should get updated as below.

image

You can also verify by again hitting Windows Key + W and typing Device Manager and launching it. Then expand to see the following

image

Saturday, December 14, 2013

.NET: NGEN, explicit loads and load-context promotion

Sunset over the Pacific

If you want to know the conclusion and want to skip the details jump to the end for the climax :). If you care to see this feature in, please vote for this at http://visualstudio.uservoice.com/forums/121579-visual-studio/suggestions/5194915-ngen-should-support-explicit-path-based-assembly-l

Load-Context

In my previous post on how NGEN loads Native images I mentioned that NGEN images are supported only in the default load context. Essentially there are 3 load contexts (excluding Reflection-only context) and based on how you load an assembly it lands in one of those 3 contexts. You can read more about the load contexts at http://blogs.msdn.com/b/suzcook/archive/2003/05/29/57143.aspx. However for our purposes
  1. Default context: This is the context where assembly loaded through implicit assembly references or Assembly.Load(…) call lands
  2. LoadFrom context is where assemblies loaded with Assembly.LoadFrom call is placed
  3. Null-context or neither context is where assemblies loaded with Assembly.LoadFile, reflection-emit (among other APIs) are placed.
Even though a lot of people view the contexts only in the light of how they impact searching of assembly dependencies, they have other critical impact. E.g. native images of an assembly (generated via NGEN) is only loaded if that assembly is loaded in the default context.

#1 and #3 are pretty simple to understand. If you use Assemby.Load or if your assembly has other implicit assembly dependency then for those assemblies NativeBinder will search for their native images. If you try to load an assembly through Assembly.LoadFile(“c:\foo\some.dll”) then it will be loaded in null-context and will definitely not get native image support. Things get weird for #2 (LoadFrom).

Experiments

Lets see an simple example where I have an executable loadfrom.exe which has the following call
Assembly assem = Assembly.LoadFrom(@"c:\temp\some.dll");
some.dll has been NGEN’d as

c:\temp>ngen install some.dll
Microsoft (R) CLR Native Image Generator - Version 4.0.30319.17929
Copyright (c) Microsoft Corporation.  All rights reserved.
1>    Compiling assembly c:\temp\some.dll (CLR v4.0.30319) ...

Now we run the loadfrom.exe as follows
c:\temp>loadfrom.exe
Starting
Got assembly
In the the fusion log I can see among others the following messages

WRN: Native image will not be probed in LoadFrom context. Native image will only be probed in default load context, like with Assembly.Load().
LOG: Start validating all the dependencies.
LOG: [Level 1]Start validating native image dependency mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089.
Native image has correct version information.
LOG: Validation of dependencies succeeded.
LOG: Bind to native image succeeded.
Attempting to use native image C:\Windows\assembly\NativeImages_v4.0.30319_32\some\804627b300f73759069f96bac51811a0\some.ni.dll.
Native image successfully used.


Interestingly the native image was loaded for some.dll even though it was loaded using Assembly.LoadFrom. This was done in spite of loader clearly warning in the log that it will not attempt to load the native image.

Now lets trying running this same program just ensuring that the exe and dll is not in the same folder

c:\temp>copy loadfrom.exe ..
        1 file(s) copied.

c:\temp>cd ..
c:\>loadfrom.exe
Starting
Got assembly
In this case the log says something different

WRN: Native image will not be probed in LoadFrom context. Native image will only be probed in default load context, like with Assembly.Load().
LOG: IL assembly loaded from c:\temp\some.dll.

As you can see the NI image was not loaded.

The reason is Load Context promotion. When LoadFrom is used on a path from which a Load would’ve anyway found an assembly the LoadFrom results in loading the assembly in the default context. Or the load-context is promoted to the default context. In our first example since c:\temp\some.dll was on the applications base path (APPBASE) the load landed in default-context and ni was loaded. The same didn’t happen in the second example.

Conclusion

  1. NGEN images is only supported on the default context. E.g. for Assemblies loaded for implicit references or through Assemb.Load() API call
  2. NGEN images is not supported on explicit-loads done via Assembly.LoadFile(path)
  3. NGEN images is not reliably supported on explicit-loads done via Assembly.LoadFrom(path)
Given the above there is no real way to load Assemblies from arbitrary paths and get NGEN native image support. In the modern programming world a lot of large applications are moving away from the traditional GAC based approach to a more plug-in based, loosely-coupled-components approach. These large application locate it’s plug-ins via its own proprietary probing logic and loads them using one of the explicit path based load mechanisms. For these there is no way to get the performance boost based on native images. I think this is a limitation which CLR needs to address in the future.