3/16/2007

Climbing Mt St Helens

The Build up

How did it all start ? Frankly speaking even I don't recall exactly but only have a vague idea. Yes it was a couple of weeks before thanks giving when I had conference call with Amit, Abhay and Sachin and we were making get-together plans for Christmas/new years holiday season. Well as usual nothing fruitful came out of that call as everybody had different plans, but I kind of put forward the idea of going for a camping/hiking trip early next year.

Amit mentioned that he had spring break in March second week. For Minnesotans this is a weird thought, as spring for us is sometimes in mid to late April depending upon how good or bad the winter is. I asked him if he was interested in going to Grand Canyon for hiking, he readily agreed so I went online and found out that booking for campsites begins way in advance and we had missed out on that so we decided to change our plan. We then decided to go camping in Olympic National Park, to which both of us agreed. Then came December and I had to go to Seattle/Portland area for some business purpose, I was around that area and was driving from Portland and Seattle on I-5 North and the sight of those beautiful peaks of the Cascades Range was a mesmerizing sight, and that's when I decided to go climb one of those mountains.

I was always fascinated by the beautiful mountains, and so it didn’t take me so long to find out the opportunities in around Seattle are to for mountain climbing. And during this process I stumbled upon the website for Mt St Helens and after some research I concluded that it was probably doable hike. The other peaks around the region are almost twice as tall as Mt St Helens. Well, Mt St Helens is no small mountain and the risks involved climbing St Helens are equally high and if you are unlucky perhaps higher than the others in the vicinity. At 8635 ft it is almost 6000ft shorter than Mt Rainier or 4000ft shorter than the deadly Mt Hood. But if you add the factor that it is an active volcano, it’s a whole different game. So, I asked Amit if he would like to do Mt St Helens hike instead, and after giving some thought he agreed. So in early January we made a tentative plan for the hike, which was later finalized soon. I bought the tickets and our itinerary was something like this…

o Friday evening 3/9/07: Chinmay and Tanuj reach SeaTac and join Amit and rest of the crew.

o Friday 3/9/07 : Nothing planned as of yet, maybe look around Seattle or go to Snoqualmie(?) falls

o Saturday 3/10/07 : Drive to Portland, tour the town, Either get motel or camp

o Sunday morning 3/11/07 : (i.e. 3AM) start climbing Mt. St. Helens, will take entire day. Evening drive back to Seattle

o Monday 3/12/07 : up for grabs. Ideas include

o Tuesday 3/13/07 : Boeing plant tour. Also go to boeing surplus store....

o Tuesday 3/13/07 : Boeing plant tour. Also go to boeing surplus store....

The Preparation

o Skiing

Being a mountain in the Cascades, March is still very much winter and the hike was going to be a winter hike, so I decided to train myself for the winter and the hike both. Right around the time when I booked my ticket the nasty winter of Minnesota touched its peak and my plans of going out in the cold and training were thwarted. But as they say 'Every dark cloud as silver lining' the temperature started to rise gradually and also it started snowing. Agreed that driving is nightmare but, I teamed up with my friend from Denmark, Henning who works in the same Department as I do at Mayo. We decided to take ski lessons and so we went to Welch Village ski resort. It is 40 miles north of Rochester. A nice place, which has slopes small enough for beginners like me and some decent slopes for the advanced ones.

The lessons were very helpful and slowly I started to do better. By the third day I was on the Blue squares, and the fourth time I actually did a couple of black diamonds, including one with moguls. Though I fell on the moguls miserably. But for a person who has never been on snow let alone on skis trying a mogul or even a black diamond was an achievement, and that boosted my confidence immensely and even though unrelated I felt that I could do the climb.

o Muscle training

I was doing pretty good at skiing, but I realized that every night after I would come back from skiing I would stiffness in my thighs and calf muscles. I knew I was decent at cardio vascular exercise. I could easily run continuously for 40 odd minutes without stopping at 8.5 mph on treadmill which I guess is roughly equivalent to running 6-6.5 mph outdoors. But then why I was feeling restless in legs, perhaps my legs were trained enough for hike/climb and I must admit I was out of practice in this department. So I started to train myself for more intense workout for legs. I started to work on step climber and weight training focusing primarily on leg muscles.

And I was getting a little better at it, the gym I go to introduced a machine they call it endurance tester, it looks and works exactly like a treadmill, the difference is that it has smaller belt length and the incline, declines are not arbitrary but actual degrees. I tried out this machine and it was such a wonderful experience, not only it tells you the distance you've walked but also how many feet you have climbed.

So I was doing pretty good in this area and on last Thursday/Friday I called up Jack's Restaurant in Cougar, Washington where we are supposed to register ourselves for the climb. After speaking with them I realized that it was snowing there quite a bit and so I called the forest services and spoke with a ranger and asked things I need to carry with me. He said the things that were absolute must were, excellent hiking-mountaineering boots, crampons, ice axe and snow shoes.

o Snow shoeing

Now because of lack of mountains it is difficult to train for crampons and ice axe and so I decided to rent them from REI store in Seattle Washington. But luckily I had recently bought good mountaineering or hiking boots made by Vasque. They have Gore-Tex material and so are snow/ice proof and to a certain extent water proof. I also got a decent pair of thermal socks so temperature wise I was well protected. The thing I had never tried was snow shoeing.

Luckily some of my friends from Mayo and IBM were going for snowshoeing on Saturday. I immediately decided to join them, and so I rented snowshoes from Tyrol Ski shop, and went for some snowshoeing at Chester Woods Park. It is some 15 odd miles east of Rochester. It has got nice trails and we did a decent 3 mile roundtrip hike. It was a small hike but doing it with snowshoes was a whole new experience. It is amazing how it easy it is to walk on knee deep snow with these snow shoes compared against plain shoes and crampons. Because of increased surface area the foot doesn't sink in the snow and also the cleats at the bottom act like claws and give decent grip while climbing up/down. I think overall it was a good learning experience.

The Hike

So, come Friday March 9th and I set out for Seattle, WA. A day earlier I had packed my bags and Tanuj had already picked them up. So around noon I left work and went to Tanuj's place. We did a final cross checking of all the gear that we were going to carry with us. Although It meant very little but still I called the forest services office in Cougar WA and check with them regarding the essential gear and of course the weather. The lady said it was raining and was supposed to rain the rest of the weekend. I wish she hadn't said that, but there was nothing that we could have done. With everything planned and tickets in the hand I was at the point of no return.

So as planned earlier, Shirine called us around 130PM. She was gracious to have offered us ride to MSP airport. I really think it was nice of her. Well, so we set out for MSP and during this 60 min drive to the cities Tanuj kept us entertained by telling us his experiences and stories from his life in Indian Army. When we talk about Military we always think about the wars, we usually over look the other part of the story. It has its own idiosyncrasies and of course there are some lighter moments. Anyways… the stories kept us entertained and we didn't realize but we had reached MSP in little over an hour.

I did the check-in and proceeded to security check. I was basically done by 330 PM and I still had to 2 hrs for my departure. Just roamed around the terminals watched flights landing and taking off. I was feeling hungry and so I had a Chicken Philly at one of the food joints. It was quite nice. I called Lindsay and asked her to book a couple of tickets for the up coming Pink Floyd ( Roger Waters) concert in the cities. 515PM and I boarded the plane, I was so tired that I slept right away and didn't wake for about an hour. The overall flight was fantastic no problems nothing… At Seattle Airport, Amit had already arrived to pick us up. From there we went straight up to downtown for dinner. It was a nice bistro, had a Stella and citrus Salmon. I gotta tell, it was probably best Salmon I had in long time. We then headed to an Irish Pub, nice crowd beautiful women good booze and very good music. We had co-incidentally met the performers on the street earlier. Left that place around 1AM(PST) , went home and slept.

Come Saturday, the weather outside was looking just perfect ( by Seattle's standard) a few clouds but no rain. Had a very healthy breakfast….just kidding a donut and coffee. We packed our bags and left and went to GI Joe's it’s a sports store, bought some thermal wear and rented snowshoes. Left that place and went to Qdoba 's for lunch, its like chipotle but I liked it. We then bought all the food stuff that we were supposed to carry with us at Fred Meyer's and then went to Bellevue WA. Over there we went to the Marmot Store… if you are an avid hiker/camper you know what an experience would that be. Amazing store, I checked out a few things there but most importantly we rented crampons, ice axe and avalanche beacons. It was 430PM by then and was time to leave for St Helens. On our way we stopped only once for gas and cup of coffee. Reached Cougar WA around 830 PM it was raining and so we were driving leisurely. We signed ourselves at the Jack's Restaurant. It's an alright place. If it weren't for the registration, I don't think anybody would like to stop there, but then that's just my opinion.

We drove further for about 10 miles where the Lone Fir hotel is located. It a nice place and we got a 2 story cottage with 8 beds and 2 bathrooms and kitchen for a mere 100$ a night. Apart from any thing else I would recommend there cheese burger with JoJo's its awesome. After our dinner we returned to our cottage and unloaded our stuff. Packed our bags and went bed. It was 1PM PDT by the time we went bed, and because that was the night of Spring forward we would have 1 hour less of sleep. We got up at 3AM PST rather 4AMPDT and stuffed our bags in the back of our truck and set out for our hike. The gear that I was carrying/wearing with me was

o The Gear

· Down jacket ( Marmot)

· Rain Jacket (Mountain Hard Wear)

· Head Lamp (Petzl)

· Helmet (Petzl)

· Water Proof pants (GI Joe's)

· Thermal wear by (Under Armor)

· Long T shirt

· 55Litre Backpack by Moutain Hard Wear

· Ice Axe

· Crampons

· Avalanche Beacons

· Snow Shoes

· Climbing Poles

· Extra set of clothes

· Tarp Sheet

· Towels

· First Aid Kit

· Vasque GTX climbing shoes with Gaiters

· Power Bars

· Trail Mix

· Camel Bag with 2 liters of water

That was quite a gear that I was carrying with me. It would easily weigh around 20lbs.

o Actual Hike : Failure but a good learning experience

So we reached the trail head around 630AM and by 650AM we had set out for the hike. Initially the hike looked alright to me. Snow wasn't much deep and compared to my earlier snowshoeing experience the first part looked quite easy. I was walking at a brisk pace, but had to slow down as there were a few of us who had a very little or no experience of snowshoeing. One thing I would recommend everybody is that, if you want to hike this mountain in winter you better practice snowshoeing, cos it lot different than walking normally. We started our climb at 2620ft altitude and were working our way through the forest. We were barely 15 minutes in to our hike and it started raining heavily. If you have seen my pictures already the haziness in the picture is entirely due to the heavy rain that was falling. There was no fog as at 45F you don't get fog. It was so warm that within the first hour or so most of us had taken there jackets off except for the rain jackets.

We had checked the weather forecast and they had issued severe weather advisory for the region. The forest and the weather service had even issued avalanche advisory for the region. Also there is this interesting weather phenomenon that was responsible for the heavy rains. It is called as the pineapple express. Instead of me describing it please follow this link. Normally people won't hike in these conditions and I admit that because things were planned in advanced I decided to at least give it a shot. Ideally I would have loved to reach the summit but I was ready for otherwise. Well, we did hike for a good 3.3 miles but with the nasty weather and other things it took us 3 hrs for the hike, normally without rain one could hike that distance in an hour if you are extremely fit but I think 90-100 minutes is a safe estimate.

We crossed the timberline and that's when the real hike started. We did see a couple of mini avalanches…. No they didn't occur in front of us but they were previous ones. As we went past the chocolate falls the ascent got steeper and steeper and with the blowing winds and the rain pouring down heavily we had to make decision whether or not to proceed with the climb. Honestly the point where we stopped was the best place to trun around. A few of us including me were willing to go ahead for another hour or so and see how things would work out. But looking at the inclines ahead of us it was quite risky and one small mistake could have thrown us down several hundred feet down the slopes. The grade had already changed from a 10 to 30 and every step we would climb the slopes were getting steeper and steeper with increased risk of triggering an avalanche. So we all (though some of us reluctantly) agreed to abandon the ascent and turn around. In retrospect I think we made a wise decision , cos when we returned to Jack's restaurant to sign ourselves out we found that we were the only 5 people climbing the mountain that day. There was another guy we met on our way back who was hiking but he only intended to go up to the chocolate falls.

So, overall I would say, with the conditions around us the hike we did was a decent one. May be I should not call it a failure but just a missed opportunity. But one thing I learned for sure… and that is if the weatherman in Seattle says its gonna rain… then never doubt the weatherman. If you care for your dear life and you are not an experienced climber stay away from mountains . Because you don't want to end up like the unfortunate climbers on Mt Hood.

2/05/2007

MESSAGE KEY

Some keyboard shortcuts to remember when using IM

? - what?
@COLL - at college
@HM - at home
@SCHL - at school
@WRK - at work
^)^ ^(^ - Two people talking
~~~c___ Beach
:-|:-| Deja' vu
1DAFUL - wonderful
2 - to, too, two
24/7 - twenty four hours a day, seven days a week
2B - to be
2BCTND - to be continued
2D4 - to die for
2DAY - today
2L8 - too late
2MORO - tomorrow
2NITE - tonight
4 - for
4E - forever
7K - sick
8 - ate
A/S/L? - Age/Sex/Location
ACTIV8 - activate
ADD - address
ADN - Any Day Now
AFAIAA - As Far As I Am Aware
AFAIAC - As Far As I Am Concerned
AFAICT - As Far As I Can Tell
AFAIK - As Far As I Know
AFAIR - As Far As I Remember
AFAIUI - As Far As I Understand It
AFK - Away From Keyboard
AI - Artificial Intelligence
AISB - As I Said Before/ As It Should Be
AISI - As I See It
AIUI - As I Understand It
AIW - As It Were
AKA - Also Known As
ALIWANISU - all i want is you
AMAP - As Much As Possible
AML - all my love
ANYTNG - anything
AOB - Any Other Business
ASAP - As Soon As Possible
ATB - All The Best
ATK - At The Keyboard
ATM - At The Moment
A3 - Anytime, Anywhere, Anyplace
ATTN - Attention
ATW - at the weekend
AU - Australia
AVDB - Alles van die beste
AVG - Average
AX - across
AYOR - at your own risk
AYT? - Are You There?
B - be/bee
B/C - Because
B2 - back to
B2B - business to business
B4 - Before
B4N - Bye For Now
BAC - By Any Chance
BAK - Back at Keyboard
BBB - Busy Beyond Belief
BBIAB - Be Back In A Bit
BBIAF - Be Back In A Flash
BBIAM - Be Back In A Minute
BBIAS - Be Back In A Second
BBL - Be Back Later
BBS - be back soon
BCNU - Be Seeing You
BCUM - become
BD - Big Deal
BF - BoyFriend
BG - Big Grin
BIL - Boss Is Listening
BION - Believe It Or Not
BN - been
BN - being
BFN/B4N - Bye For Now
BOL - Best Of Luck
BRB - Be Right Back
BRT - Be Right There
BTA - But Then Again
BTDT - Been There Done That
BTM - Beats Me
BTR - better
BTW - By The Way
BWD - backward
BYKT - But You Knew That
C - see
CZIN - season
C%D - could
C%L - cool
C&G; - Chuckle and Grin
CEO - chief executive
CUL8er - See You Later
C/O - Care Of
C&P; - Copy And Paste
Ct&P; - Cut And Paste
CB - Call Back
CC - Carbon Copy
CCWC - Can't Cook Won't Cook
CFD - Calls For Discussion
CHLN - Chilling
CID - Crying In Disgrace/Consider it done
CIO - Cut It Out
Cir. - Circle
CLD9? - cloud 9?
COD - Cash On Delivery
CM - call me
CMB - call me back
CN - can
CNP - Continue Next Post
COS - Because
CR8 - create
CSG - chuckle snicker grin
CART - Can't Remember A Thing
CSh - Coffe Shop
CU - See You
cu @ 8 - see you at 8
CUB L8R - Call You Back Later
CYR BOS - Call Your Boss
CU2MORO - see you tomorrow
CU2NITE - see you tonight

CUPL - couple
CUS - see you soon
CUZ - because
CYA - See Ya
CV - Curriculum Vitae
CYO - See You Online
CYR H - Call Your Husband
CYR BRO - Call Your Brother
CYR PA - Call Your Father
CYR OFIS - Call Your Office
CYR MA - Call Your Mother
CYR SIS - Call Your Sister
CYR WF - Call Your Wife
D - the
D8 - date
D8ing - dating
DB8 - debate
DD - dead
DICT8 - dictate
DINR - dinner
DK - don't know
DL - download
DM& - demand
DOIN - doing
DOM - dirty old man
D/L - Download
DAMHIK - Don't Ask Me How I Know
DBzA - Doing Business As
DIKU? - Do I know You
DIM - Do It Myself
DIY - Do It Yourself
DK - Don't Know
DNA - Did Not Answer
DNO - Do Not Open
DOA - Date Of Arrival
DOB - Date Of Birth
DON - Doing
DQMOT - Don't Quote Me On This
DTP - Desk Top Publishing
DTTAH - Don't Try This At Home
DUCWIC - Do You See What I See
DUR - do you remember
DV8 - deviate
DWB - don't write back
DXNRE - dictionary
EG - Evil Grin
EMFBI - Excuse Me For Butting In
EMSG - email message
EOL - end of lecture
EOM - End Of Message
EOT - End of Thread
E&OE; - Errors and Omissions Excepted
ED - Emotionally Disturbed
EMSG - Email Message
EOB - End of Business
EOD - End of Discussion
EOF - End Of File
EOL - End Of Lecture
EOM - End Of Message
ESP - Especially
ETA - Estimated Time of Arrival
EZI - easy
EZY - easy
F? - Friends?
F2F - Face To Face
F2T - free to talk
FAQ - Frequently Asked Question(s)
FC - Fingers Crossed
FIFO - First In First Out
FIL - Father In Law
FILO - First In Last Out
FIOFY - Figure It Out For Yourself
FISH - First In Still Here
FITB - Fill In The Blank
FOCL - Fell Off Chair Laughing
FONE - phone
FOS - Freedom Of Speech
FST - fast
FTAC - fantasy
FTBOMH - From The Bottom Of My Heart
FTBL - football
FTL - Faster Than Light
FTP - File Transfer Protocol
FUNE - funny
FWD - forward
FWIW - For What It's Worth
FYA - For Your Amusement
FYI - For Your Information
G2CU - glad/good to see you
G2G - Got To Go
G2SY - glad/good to see you
GA - Go Ahead
GAFIA - Get Away From It All
GAL - Get A Life
GBH&K; - Great Big Hugs & Kisses
GBH&KB; - Great Big Hugs & Kisses Back
GD&R; - grinning, ducking, and running
GF - GirlFriend
GFN - Gone For Now
GG - Gotta Go/Good Game
GIGO - Garbage In Garbage Out
GJ - Good Job
GL - Good Luck
GM - good move
GMAB - give me a break
GMESUMLUVIN - give me some loving
GMT - Greenwich Mean Time
GNR8 - generate
GNR8N - generation
GNRLE - generally
GOOML - Get Out Of My Life
GONNA - going to
GOWI - Get On With It
GPF - General Protection Fault
GR8 - Great
G9 - Genius
GRQ - Get Rich Quick
GSH - Good Sense of Humour
GSOH - good salary, own home/good sense of humour
GT - good try
GTG - got to go
GUDLUK - Good Luck
H2 - How To
H2CUS - hope to see you soon
H8 - hate
HAGN - Have a Good Night
HAGO - Have A Good One
HAK - hugs and kisses
HAMRD - hammered
HAND - Have A Nice Day
HB - Hug Back
HH - Holding Hands
HICA - Here It Comes Again
HIG - How's it going
HLDMECLS - hold me close
HOAS - Hold On A Second
HOHIL - head over heels in love
HOPR - Hang On Phone's Ringing
HOTLUV - hot love
HOUER - Hanging On Your Every Word
HOWRU? - how are you?
HT4U - hot for you
HP - Home Page
HSP - Highly Sensitive Person
HTH - Hope This Helps
HUMR - humour
HV - have
HW - HardWare
HWY - Highway
I - eye
IAAA - I Am An Accountant
IAAD - I Am A Doctor
IAAL - I Am A Lawyer
IAY - I Adore You
IAYT - I Adore You Too
IB - I'm Back
IBC - Inadequate But Cute
IC - I See
ICAM - I Couldn't Agree More
ICP - Internet Content Provider
ICQ - I Seek Youv
ICUR - I See You Are
ID - Identification
IDGI - I Don't Get It
IDK - I Don't Know
IDTS - I Don't Think So
IDTT - I'll Drink To That
IH8U - I hate you
IE - In Effect
IHTBS - It Has To Be Shown
IIRC - If I Recall/Remember Correctly
IJLS - I Just Like Saying
IKWUM - I Know What You Mean
ILU - I Love You
ILU2 - I Love You Too
IM - i am
IM - immediate message
IMBLUV - it must be love
ILUVUMED - i love you more each day
ILY4E - I Love You Forever
IMBO - In My Biased Opinion
IME - In My Experience
IMHO - In My Humble Opinion
IMI - i mean it
IMMOR - I Make My Own Rules
IMNSHO - In My Not So Humble Opinion
IMO - In My Opinion
IMPOV - In My Point Of View
IMPRS - impress
IOHIS4U - I only have eyes for you
IMS - I Must Say
IMTNG - In Meeting
INGSI - I'm Not Going To Say It
INT - I'll Never Tell
IO - Input/Output
IOU - I Owe You
IOW - In Other Words
IRC - Internet Relay Chat
IRL - In Real Life
IRT - In Real Time
ISC - I Stand Corrected
ISO - In Search Of
ISTM - It Seems To Me
ISTR - I Seem To Remember
ITIGBS - i think i'm gonna be sick
ITAK - It Takes All Kinds
ITFA - In The Final Analysis
ITUFIR - i think you'll find i'm right
ITYM - I Think You Mean
IUSS - if you say so
IUTKATS - I Used To Know All That Stuff
IWALU - I will Always Love You
IWBNI - I Would Be Nice If
IWIK - I Wish I Knew
IYDKIDKWD - if you don't know, i don't know who does.
IYD - In Your Dreams
IYF - In Your Face
IYKWIM - If You Know What I Mean
IYQ - I LIke You
IYSS - if you say so
IYSWIM - If You See What I Mean
J/K - Just Kidding
JAM - Just A Moment/Minute
JAS - Just A Second
J4F - Just for Fun
JFYI - Just For Your Information
JH8 - Johannesburg
JIC - Just In Case
JIT - Just In Time
Jr - Junior
JSTCLLME - Just Call Me
JTLYK - Just To Let You Know
JTUSK - Just Thought You Should Know
JTYWTK - Just Thought You Wanted To Know
KC - Keep Cool
KHUF - Know how you feel
KIA - Know It All
KISS - Keep It Simple Stupid
KIT - keep in touch
KOC - kiss on cheek
KOL - Kiss of lips
KOTL - kiss on the lips
KOTC - kiss on the cheek
KWIM - Know What I Mean
KYHU - Keep Your Head Up
L - laugh
L8 - late
L8R - Later
L&N; - Landing
LALL - Live And Let Live
LAN - Local Area Network
LCH - Lunch
LDN - London
LDR - Long Distance Relationship
LKIT - like it
LLTA - Lots and Lots of Thunderous Applause
LMA - Leave Me Alone
LMC - Lost My Connection
LMK - Let Me Know
LO - hello
LOL - Laughing Out Loud
LSP - Least Sensitive Person
LTM - Laughing To Myself
LTNS - Long Time No See
LTR - Long Term Relationship
LTSGT2GTHR - let's get together
LUV - love
LUVU - love you
LY - Love Ya
LYLAB - Love You Like a Brother
LYLAS - Love You Like A Sister
LYN - Lying
M8 - Mate
MAY - Mad About You
MB - Message Board
MBRSD - embarrassed
MFG - More Friendly Garbage
MFI - mad for it
MHM - Members Helping Members
MING - Mailing
ML - More Later
MM - Multi Media
MMX - MultiMedia eXtensions
MNC - Mother Nature Calls
MOB - mobile
MorF - Male OR Female
MOTOS - Member of the Opposite Sex
MOTAS - Member Of The Appropriate Sex
MOTD - Message Of The Day
MOTSS - Member Of The Same Sex
MSG - message
MSIE - Microsoft Internet Explorer
MT - My Time
MTE - my thoughts exactly
MTF - more to follow
MYOB - Mind Your Own buniess
N - and
N - no
N1 - nice one!
NA - no access
N/M - Never Mind
NADM - Never A Dull Moment
NAGI - Not A Good Idea
NA - Not Affiliated
N/A - Not Applicable
NBD - No Big Deal
NBTD - Nothing Better To Do
NC - no comment
NCASE - in case
NDM - No Disrespect meant
NE - any
NE1 - Anyone
NED - need
NITING - Anything
NLT - No later Than
NM - Never Mind/No Message
NMI - No Middle Initial
NMP - Not My Problem
NMS - Not My Style
NN - Night Night
NO1 - no one
NOOTO - Nothing Out Of The Ordinary
NOYB - None Of Your Business
NP - No Problem
NPF - No Problem Found/No Picture Found
NQA - No Questions Asked
NQOS - Not Quite Our Sort
NRN - No Reply Necessary
NS - Netscape
NT - No Text
NTG - Not Too Good
NUFN - nothing
NYI - Not Yet Implemented
NVM - never mind
NWO - no way out
O - Over
O4U - only for you
OATUS - On A Totally Unrelated Subject
OB - Obligatory
OBTW - Oh By The Way
OD - OverDose
OIC - Oh I See
OMG - Oh My God
OL - old lady
OM - old man
ON4IT - on for it
ONNA - Oh No Not Again
OO - Over and Out
OOC - Out Of Character
OOI - Out Of Interest
OOSOOM - Out of Sight Out Of Mind
OS - Operating System
OT - Off Topic
OT1H - On The One Hand
OTC - Over The Counter
OTD - Out The Door
OTF - On The Floor
OTL - Out To Lunch
OTOH - On The Other Hand
OTT - Over The Top
OTTOMH - Off The Top Of My Head
OTW - On The Whole
OVA - over
OW -Oh Well
PC - Personal Computer
PCB - Please Call Back
PCM - please call me
PD - Public Domain
PDA - Public Display of Affection
PDS - Please Don't Shout
PEST - Please Excuse Slow Typing
PLMK - Please Let Me Know
PL& - planned
PLONK - Person with Little Or No Knowledge
PLS - Please
PM - Pardon Me
PM - private message
PO$BL - Possible
POAHF - Put On A Happy Face
POP - Point Of Presence
POV - Point Of View
PPL - People
PRT - Party
PRW - Parents Are Watching
PTMM - Please Tell Me More
PTMY - Pleased To Meet You
PTO - Please Turn Over
PUKS - Pick Up Kids
Q - Queue
QED - Quite Easily Done
QPSA? - Que Pasa?
QT - Cutie
R - are
RAD - radical
RE - REgarding
RFC - Request For Comment
RFD - Request For Discussion
RGDS - regards
RL - Real Life
RNA - Ring No Answer
ROTBA - Reality On The Blink Again.
RUOK? are you OK?
RSN - Real Soon Now
RT - Real Time
RTM - Read The Manual
RUMF - Are you Male or Female
RU OK - Are you OK?
RUUP4IT? - are you up for it?
SAL - such a laugh
SAT - Sorry About That
SC - stay cool
SCNR - Sorry, Could Not Resist
SEC - second
SEP - Somebody Else's Problem
SETE - Smiling Ear To Ear
SFAIAA - So Far As I Am Aware
SHTSI - Somebody Had To Say It
SIG - Special Interest Group
SIT - Stay In Touch
SITD - Still In The Dark
SK8 - skate
sme1 - someone
SMO - Serious Mod On
SMOFF - Serious Mode OFF
SMTP - Simple Mail Transfer Protocol
SO - Significant Other
SOT - Short Of Time
SOVS - Some One Very Special
SNERT - snot-nosed egotistical rude teenager
SO - significant other
SOHF - sense of humour failure
SOL - sooner or later
SOTMG - short of time must go
SPK - speak
SRY - Sorry
STATS - Your sex and age
STS - So To Speak
ST2MORO - same time tomorrow
STW - search the web
SUM1 - someone
SUP - What's Up
SW - Software
SWAK - Sealed With A Kiss
SWDYT? - so what do you think?
SWL - Screaming With Laughter
SWYP - So What's Your Problem
T+ - Think Positive
TAFN - That's All For Now
TANJ - There Ain't No Justice
TBC - To Be Continued
TBE - To Be Expected
TBYB - Try Before You Buy
TC - Take Care
TFTT - Thanks For The Thought
THX - Thank You
THN - then
TIME - Tears In My Eyes
TINALO - This Is Not A Legal Opinion
TINAR - This Is Not A Recommendation
TLC - Tender Loving Care
TMB - text me back
TMI - Too Much Information
TMIKTLIU - The More I Know The Less I Understand.
TMOT - trust me on this
TNX - Thanks
TNT - till next time
TOTBAL - There Ought To Be A Law
TPAE - The Possibilities Are Endless
TPTB - The Powers That Be
TTBE - That's To Be Expected
TTBOMK - To The Best Of My Knowledge
TTTT - These Things Take Time
TTTT - To tell the truth
TTUL - Talk/Type to You Later
TTYRS - Talk To You Real Soon
TVB - Top Versus Bottom
TYT - Take Your Time
TYVM - Thank You Very Much
U - You
U2 - You Too
U4E - Yours For Ever
U/L - UpLoad
UGTBK - You've Got To Be Kidding
UOK - You OK?
UP4IT - up for it
UR - you are
URLCM - You Are Welcome
USU - Usually
UTT - Under The Table
UWOT - you what!
VGC - very good condition
VBG - Very Big Grin
VH - Virtual Hug
VR - Virtual Reality
VRI - very
VT - Virtual Time
W/ - With
W4U - waiting for you
W8 - wait
W84ME - wait for me
W8N - waiting
WAN2 - want to
WAN2TLK? - want to talk?
WAYD - what are you doing
WB - Welcome Back
WBS - write back soon
WCKD - wicked
WEN - when
WENJA? - when do you?
WERJA? - where do you
WERRU? - where are you?
WERUBN? - where have you been?
WK - week
WL - will
WLUBMN? - will you be mine?
WLUMRYME? - will you marry me?
WN - when
WOT - what
WRT - with respect to
WRU - Where are You?
WTG - way to go
WTM? - what time?
WU? - what's up?
WUF? - where are you from ?
WUWH - wish you were here
WTG - Way To Go!
WUF - Where Are You From?
W/O - With Out
X - kiss
X! - typical woman
Xlnt - excellent
XMEQK - kiss me quick
Y - why
Y - Yes
Y! - typical man
YA - you
YBS - you'll be sorry
YIU - yes i understand
YKWYCD - you know what you can do
YL - young lady
YM - young man
YR - your
Z - said
ZZZZ - sleeping

12/27/2006

Why I don't like to be in a photograph......

Photography is not just a hobby but it is more of an art. You can teach someone how to take pictures but you can not teach someone how to take good pictures. I know it sounds cliché but sadly its true.

I think I have some sense to capture beauty or beautiful things, and I admit I am no way an exceptional photographer, but I am a very good photographer in my own rights. So, over the past 3-4 years since I developed this hobby, I found out that I can actually take good photographs. The way I approach to take a picture sounds quite simple.

Usually I have some kind of idea in my mind that I want to express thorough the photograph. Once I know what kind of shot I want to take, I check out the object of focus, then I check out the surrounding and then I frame my shot. This is straight forward if the object of interest is a not an animal or human being, as the motion is reduced or at least can be controlled to some extent. But, taking pictures of people in the outdoor setting or even indoors poses a great challenge, and at that time willingly or unwillingly I have to resort to either paparazzi technique or be film director.

I know paparazzi doesn't really sound right but when the people know you and you know them it is the best way to capture the natural expressions, and any photographer would admit that it is not purely luck to get a good picture but also involves a lot of skill. You have to follow the movements of the person and try to capture best possible moments if not all, and doing this involves a great deal of skill and patience. This is technique is something you simply can't teach a person, you develop it yourself.

The director method, sounds simpler than the paparazzi as you are in complete control of the shot except for the background. You can ask the person or people to act in a certain way. The task is fairly easy if you are the camera man as well as the director. Doing both, gives you total control over the shot you take, and I would say I had fair amount of success doing this thing. What I found it most difficult was to get a good shot of myself when I give my camera to someone show that person a sample shot, and ask him/her to take a similar shot. Earlier, I used to think that it would be a simple job to perform. But no, it wasn't I tried several different times and to my no avail whenever I instructed on how to take a particular shot, I would never get it the way it was supposed to be. To give you a simple example of what I am talking about, check these two pictures 1 and 2. Even if you ignore the motion blur in the second picture you would get my point, and this is one of the reason why I don't want to be in a photograph….if I am using my camera.

12/26/2006

12/18/2006

Seattle / Portland Trip

Recently concluded a trip to 2 fascinating cities on the Pacific Nortwest....yes of course they are Seattle and Portland.... I tried some snowboarding and then also went up the Space needle in Seattle... while in Portland I had a unique opportunity to visit the NIKE campus. The pics from the trip can be seen here.

Fall Colors @ Sylvania National Forest

Instead of describing my trip during fall to the upper michigan peninsula, I would simply give you guys the link to the pics I took during camping at the Sylvania Wilderness in the Ottawa National Forest, in U.P Michigan. You can find the pics here. Hope you like it.

India Trip Part 2

Finally I reached home a full 12 hrs late… so all the time I saved by taking the direct flight to Delhi was nullified. I was just happy that I reached home without any problems with luggage or anything else. It was the Ganpati season and so the whole Pune city was in celebratory mood after all it's in this city the festival was started some 110 yrs ago.

The stay in India was hectic. We had our Ganpati Visarjan the very day I reached, after performing the Puja I crashed into bed after all a time difference of 12 hrs isn't easy to handle. Luckily the jet lag lasted only for a day as the very next day I started going out and trying to stay away form home during the afternoon hrs. I re-scheduled my Mumbai-Delhi ticket because of the experience I had earlier.

While @ home I relished on the home cooked food my mom made for me… was wonderful as usual and no one can beat the taste. A couple of days in Pune and then I set out for the my long trip. I visited my home town and my ancestral home at Nagpur which is @ dead center in India. It was such a wonderful feeling, I met my uncles and aunts and grand uncles and grand aunts… I met my two cousins who are getting married in the end of Jan. Can't really believe that my lil sis are getting married… wow time just flies… doesn't it? Later I went to Bhopal/Indore/Baroda and met rest of my family had such wonderful time. All this doesn't really sound exciting but when you are around with your family it is the sense of fulfillment and satisfaction and not the excitement you are looking for….

12/17/2006

Life Updated / India Trip: Part 1

A lot has happened since my Sky dive on the 4th of July weekend.... so many things to write about... but can't find the right words to write about and so I will try my best to documents few events that stand out. One of the most important thing I did this year is going to India after a gap of some 3yrs in late Aug/Sept. It was a fulfilling but fast-forward kind of trip.

I flew on my B'day and hence I will briefly desribe my B'day party. It was the eve of my birthday and by all means perfect occasion for a party and so I did one. I wasn't planning on drinking a whole lot may be a drink or two. But, then enters this wonderful friend of mine... we call him Nish... and he had some other plans.... Usually, every party I go I am sober part of the reason is that I drive and hence don't drink..... DWI in Minnesota can be quite expensive deal. As I said.. Nish's plan was to get me drunk come whatever may.... I was lucky as I had a DD with me for the night. I started with first drink @ around 730 and as the time went by I had already guzzled some 6 drinks and was feeling tipsy.... Luckily my bags were already packed and hence I didn't have to worry about it. As I said... by 1230AM or so when I was starting to feel tipsy I headed back home... put my alarm for 430 as I had to catch a flight for 7AM.

Rochester In't Airport as they call it isn't really a big airport, infact it is a tiny airport. Nevertheless I couldn't afford missing this flight as there was only a few hrs layover in Chicago before I boarded on AA International flight to Delhi, so driving to Chicago was ruled out, which normally takes roughly 6 hrs. Anyways I made it for the 7AM and can't describe how horrible I was feeling. Imagine a guy who has been drinking for 6 hrs, a night before he is suppose to take a 15 hr flight.

Well, turned out to be quite OK as opposed to what I was expecting, I didn't feel dizzy or anything.. @ Chicago my friend picked me up, I went to his place had shower and some heavy brunch and then we headed back to airport. Everything had been going per plan right upto the point when we landed in Delhi. the 15 hr flight didn't really feel all that bad, and believe me if they start one to Mumbai I would defi take it.

We landed in Delhi at 815 PM and we had a connecting flight to Mumbai from the domestic terminal at 11PM. After customs and border security check I collected my luggage and it was only 845PM and by all means we should have made our connection. But that's where everything went haywire... we decided to take Inter terminal shuttle instead of taking a taxi and probably that was the biggest mistake we did. We missed the first shuttle and hence had to wait for another one, which came in at 930 PM. I guessed it would take only 5 min to reach the domestic terminal, but that wasn't meant to be. For some reason it was delayed and instead of leaving that thing immediately we waited there just sitting in it for some 20 odd minutes. It was such a frustrating feeling... but I didn't freak out.... I was disgusted with the apparent indifference shown by the driver of the Inter-terminal shuttle. To make things worse no sooner than we reached the terminal, connecting flights gates were closed. It was already the last flight to Mumbai and the only options were, either rent a room in a hotel nearby or to stay in the terminal.

We chose the later one. Like us there were at least 40 other passegeners from various Int'l flights who had to go through this ordeal. So us together we camped outside the gates the whole night... after some 8 hrs of ordeal we made it to the first flight to Mumbai scheduled for 7AM. Luckily things didn't go all that bad except for one thing... and that is Anand my friend from Chicago who was travelling with me had to leave his Laptop bag behind ( of course he carried his laptop with him literally on his laps :) )

Back in the blogosphere

Don't know what happened to me but I haven't been blogging at all lately. But things are about to change... I am gonna start writing blogs regularly if not frequently.... so my hello to you all ....

keep blogging....

7/26/2006

My first Skydive

The Video has finally arrived... and so I decided to upload it...

7/09/2006

So close yet so far

Zizou.... as he is called with love by his fans around the world, lost his temper today and it cost France its second world cup. He often terorizes the opposition by is skills, footwork and timing but today he did it with his head and literally. On any other day, if someone said something to Zizou, he would simply ignore it or respond to it with a superb play that would result in a goal, but today it was different. Today on the day of his retirement from the international team he simply lost his control, lost his cool and knocked off the guy by butting his head on to this italian midfilder's chest. This earned him a red card but it earned italy its 4th world cup.

What a shame. What an impression he left in the soccer world while making exit from the international scene, on the grandest day in sports. No matter how good of a player he is, he will be forever known for his stupid mistke in his last game.

So long, Zinedine Zidane.

7/05/2006

Heartbreak followed by a thriller

I was both a little nervous and little excited yesterday. Nervous because Germany was playing Italy in the semi finals, and excited for the fireworks show.

I have no particular reason, but I just like the way Germany plays football (soccer for the prudent), and I wanted to win this and go all the way to finals. Lately I have been loosing all my bets, it started of with England losing to Portugal, and Brazil loosing to France. So I was really looking forward to this game and really wanted Germany to win it all.

At noon went to Karoline's place and I did paint my face with German colors, as I was rooting for Germany, but then on one of other friend's request I put on Italian flag on the face as well, but that didn't bother me much as I was still supporting Germany. After face painting we went to Bashayer's place to watch the game.

I can't tell how high were the emotions running as we had people from both the nations in this room. I think it is really bad idea to take anyone's side particularly when people from both the countries are your friends. But anyways I stayed the course and was rooting for Germany all along. The game was quite intense, and both the team gave their 100% or may be 200% yesterday. After scoreless regulation time, the game went to OT and within the first minute of OT, Italy started its attack it missed two golden opportunities. But Germans were quick to return the favors. At the 119th minute and both the teams still locked at 0-0 it looked like the game was going to be decided by Penalty Kicks, but something happened and a simple pass was converted in to a beautiful goal. It just sank me, felt shattered.

It wasn't as big of a deal to me as it was for the Germans, but I had to move on, and so I did, and moved quickly to Silver Lake. It was 4th of July and silver lake is the place for the annual Rochester Band Concert and the fireworks. I went to Hy-Vee and did some last minute shopping before heading to Silver Lake. I was accompanied by Tanuj and we went to the Soccer fields near Silver Lake where the band was going to play. We joined Kristy, who was playing in the band and Kristen and Travis who were already there.

Sat down had something to eat and then this Giant Hot air balloon inflated about 30 yards behind me. Out of curiosity I went there to take a close-up view. It was 830 and sunset was coming close also the wind was little strong and so they decided not to fly it. But I surely did take some pictures. Following this, the band started, Kristi was playing flute and piccolo. The band played really good music. It went on for about an hour and at 10PM the fireworks started. And what should I say; it was an amazing fireworks show. I enjoyed every moment of it. They went on for about 30-40 minutes, and just when people thought all was over, the grand finale started with a very rapid canon fires like fireworks. They were bright and loud, less artistic than the main event, but it surely did rock the place. I took a bunch of pictures and you can see them here. The whole stuff ended around 1045 or so and people started leaving for homes.

We had parked our car close to the field and so we were waiting for traffic to clear a little bit, and that's when I noticed a couple of cop cars coming in. At first I thought it was accident, but soon more cops cars coming in, rather I should say started pouring in. That's when I realized something bad, really bad has happened. I asked a few bystanders if they knew anything, all I can tell right now is that a big brawl broke up and some people got injured. And I thought, what a day these people (the ones in the brawl) chose to show their freedom/independence.

As I said it was a heartbreak followed by a thriller.

7/03/2006

Back on Ground

It was very tiring but one of the best days in my entire life so far. As said earlier, I went to Superior Wisconsin, which is in a North West corner of Wisconsin and couple of miles south of Downtown Duluth MN. This picturesque small town is situated on the shores of lake superior, the biggest fresh water lake in the world.

I started my trip from Rochester at 945AM Sunday morning. Karoline and Alain joined me on my trip. It was actually a surprise to me as I was supposed to drive by myself to Duluth. Never the less it was a pleasant surprise, their company made my trip little less tiring.

We stopped at Forest Lake, MN and had a nice latte, to keep everybody awake, though it didn't work that well. But no worries as I didn't sleep which was most important considering the fact that I was driving.

After a 2hr drive from Forest lake we finally reached Sky dive Superior at 2 PM sharp, and that's exactly what I had planned for. Once we reached there, it was all business.

The lady at the desk started with my paper work. I started filling the forms and in process waived all ( if any) rights to sue the sky dive office and should anything happen to me, which obviously didn't happen. I then watched the training video, which made me both excited, and little nervous. Luckily the manager of that place, Mark had his birthday on Sunday so the cake helped me feel better. All the nervousness and anxiety had gone only excitement lingered around, which was good. After waiting for almost an hour for my turn to come, I suited my self up for the jump.

Then I put on my red jump suit, which I actually liked. They gave me some brief instructions about body positions and equipment handling which was followed with a brief one on one training while I waited for my instructor to land. He was already up in air doing tandem jump with some other people. Once he landed , he took some time off and then came to me and checked my jump suit, harness and the different body positions I was taught. Once he felt comfortable, we mocked the jump from the plane ( which was grounded ). Then it was time to go. Go up in the air.

This is when Mark took over, he started shooting my video. He did a brief interview and asked me to make funny gestures for his video. After the interview, we made one last mock jump, but this time all geared up with the instructor. Then it was 1-2-3 and go....

We sat in this small plane, I don't know what kind it was, I think it was Cessna. But that didn't bother much. The plane wasn't in a great shape as it was modified/stripped down to bare minimum. Me my instructor Dean, the camera man Mark, the pilot and one solo jumper Mike we all boarded the plane and took off. I tell you, flying in a Boeing or airbus is sure a luxury compared to this craft. But the kind of view you can get from these small planes is just amazing there is nothing that comes close. We started ascending at about 1200ft a minute. We circled around downtown Duluth, went over Lake Superior for a while and when we reached the altitude of about 12000 ft or say after about a 10 minute flight, my instructor asked the pilot to take us to a suitable position to do the jump.

The door opened, and he gave us a thumbs up to jump, and we acknowledged him with a thumbs up. The solo jumper without taking any time was out in a flash. Mark my camera guy, clung on to the wings and positioned himself to shoot me jumping out.

At this moment, we moved forward to the door, and positioned ourselves to jump, and for one last time I looked at the plane. Airplane flying at 12,000 ft with its door open, it is enough to make anybody nervous/panic, but I felt very serene. When the door opened I heard the sudden gush of wind, may be a 100th of a second I thought what the heck am I doing, but once I reached the door and looked outside all my fear and anxiety was gone, it was such a serene feeling, it was like 'Lets do it' . Dean put his foot out holding the plane with one hand, then he asked me to put my right in front of him, and at this moment I was 80% out of the airplane with only my left leg in the airplane.

It took me a second or two to position myself, and one last second in front of the camera and here we jumped and I was in the free fall. The first thing I remember is the sudden and huge blast of wind on my face. For may be 5 seconds I was unable to breath. But then I started breathing normally and it all felt such wildly wonderful. The free fall as opposed to what the word says doesn't' really feel like a fall at all. you don't feel like you are falling down or something. It feels like you are standing in front of a big, really big fan blowing really high speed wind at you. It all lasted for about 45 seconds, and during this time we had already descended from 12000ft to 5 or 6 thousand feet. At this time my instructor pulled the ripcord of the parachute. I realized it only after it opened completely and I felt a jolt. After that, it was such a nice feeling, it was all calm and quiet. We went on small ride of our own for a while. Dean was giving me instructions how to control the speed, direction and stuff like that.


After brief maneuvering lessons we were ready to land. I positioned my legs in bent knee fashion and we were ready to land. I suddenly felt the ground rush, which Dean said was normal, and before I knew we had landed. The moment he landed I put my feet on the ground and that caused him to loose his balance a little bit and we stumbled, but hey we didn't fall this time we already had fallen some 6000 ft doing our free fall. Mark had a final word with me asked how did it felt. Well what can I say, it was amazing, mind blowing experience after all.



I just uploaded some pics from my ski trip and my skydiving trip. They can be found out here..

7/02/2006

Living on the edge

What would you say of life of a person who does water skiing but doesn't know how to swim ?

What would you say of life of a person who goes for skydiving knowing fully well that he doesn't have wings to fly ?

I would say its like walking on a highwire or dancing on thin ice, or simply, he is 'Living on the edge'.

6/29/2006

Land - Water - Air

Till yesterday I had no plans whatsoever for the 4th of July long weekend. Well it is not really a long weekend and I am working on Sat and Sun morning and that is other reason why I didn't make any plan.

But things just started falling into places since yesterday afternoon. If every thing works out as planned then on Saturday morning I will be joining my friend David and his GF on their boat and we plan on doing some Jet Ski and Tubing. I cannot swim very well but with life jacket and a life guard on the board I don't mind risking a little bit.

Talking about some risky business, the craziest thing on my mind this weekend is to go for Sky diving in minneapolis. I have been postponning it for way too long. My roomies did it in year 2003 and ever since they have been trying to persuade me to go for it. I think the moment has finally come. I have asked a few friends here at Mayo if they would like to join me for the dive, the answer is negative so far. But I have made up my mind and I am going to do that with company or alone.

Taking off finally

I have been waiting/delaying and waiting my India trip for quite some time, almost 3 years now. But finally I bought my ticket last week and yesterday confirmed my flight connections in India. Now it is time to start packing my bags. There is one weird thing, eventhough I am going back home I don't have the excitement I had when I went back the first time.

1/18/2006

Fibers

Fibers were added to Windows (in NT 3.51 SP3, IIRC) because some customers (not just SQL server) believed that they could improve the performance of their server applications if they had more control over their threading environment.

But why on earth did these customers want fibers?

Well, it's all about scalability, especially on MP system. On a multitasking system, it's easy to forget that a single processor can only do one thing at a time.

The ramifications of this are actually quite profound. If you've got two tasks currently running on your system, then your operating system will have to switch between each of them. That switch is called a context switch, and it can be expensive (just for the sake of argument, let's say a context switch takes 5000 instructions). In a context switch, the operating system has to (at a minimum):

Enter Kernel Mode
Save all the old threads registers.
Acquire the dispatch spinlock.
Determine the next thread to run (if the next thread is in another process, this can get expensive)
Leave the dispatch spinlock.
Swap the old threads kernel state with the new threads kernel state.
Restore the new threads registers.
Leave Kernel Mode
That's a fair amount of work to perform (not outrageous, but not trivial).

The OS won't do this unless it has to. In general, there are three things that will cause the OS to cause a context switch are (there are others, like page faults, but these are the big ones):

When your thread goes to sleep (either by calling Sleep() or calling WaitFor[Single|Multiple]Object[s])
When your thread calls SwitchToThread() or Sleep(0) (this is a special case of the Sleep() API that is identical to SwitchToThread())
When your thread's quanta elapses.
A thread's quanta is essentially the amount of time that the OS will dedicate to a thread if there's another thread in the system that can also run. A quantum is something like 5-10 ticks on a workstation and 10-15 on server, and each tick is typically somewhere between 10 and 15 milliseconds, depending on the platform. In general, your thread will get its full quanta unless there is a higher priority runnable thread in the system (please note: this is a grotesque simplification, but it's sufficient for the purposes of this discussion).

The thing is, for a highly scalable application, context switches are BAD. They represent CPU time that the application could be spending on working for the customer, but instead is spent doing what is essentially OS bookkeeping. So a highly scalable application REALLY wants to reduce the number of context switches. If you ever have a service that's performing poorly, one of the first things to look for is the number of context switches/second - if it's high (for some value of high), then there's invariably a scalability issue in the application that needs to be addressed.

So why fibers? Because for highly scalable applications, you want each of your threads to get their full quanta - in other words, you want the only reason for a context switch to be reason #3 above.

Remember the first cause of context switches: Calling WaitFor*Object. What that means is that if you call EnterCriticalSection on a critical section with contention, then you're highly likely to cause a context switch. The same thing happens when you wait for an I/O to complete, etc. You absolutely want to avoid calling any Win32 APIs that might block under the covers.

So fibers were created to resolve this issue. A fiber is effectively removes steps 1, 3, 5 and 8 from the context switch steps above, switching from one fiber to another just saves the old register state, and restores the new register state. It's up to the application to determine which fiber runs next, etc. But the application can make its own choices. As a result, a server application could have a dozen or more "tasks" running on each thread, and they'd radically reduce their context switch overhead, because saving and restoring registers is significantly faster than a full context switch. The other thing that fibers allow is the ability to avoid the dispatcher spin lock (see John Vert's comment about context switches being serialized across all processors below). Any global lock hurts your scalability, and fibers allow an application to avoid one of the global locks in the system.

Ok, so why have fibers remained obscure?

They've remained obscure first because of the reasons Raymond mentioned in his fibers caveat - using fibers is an all-or-nothing thing, and it's not possible to use fibers from a shared library. Some of the idiosyncrasies of the fiber APIs have been resolved in the current versions of Windows.

They're also HARD to deal with - you essentially have to write your own scheduler.

Raymond also left off a couple of other gotchas: For example, if you're using fibers to improve your apps scalability, you can't call ANY Win32 APIs that might block (including filesystem APIs) because all the Win32 blocking APIs are also have thread affinity (not surprisingly :)) So if you're running 20 fibers on a single thread, when any of the fibers blocks, your thread blocks (however, the fibers can be run from another thread, because fibers don't have thread affinity, so if you have a spare thread around, that thread can run the fibers).

The other reason that fibers have remained obscure is more fundamental. It has to do with Moore's law .

Back when fibers were first implemented, CPUs were a lot slower. Those 5000 instructions for the context switch (again, this is just a guess) took .05 millisecond (assuming one cycle/instruction) to execute on a 100MHz machine (which would be a pretty fast machine in 1995). Well, on a 2GHz machine, that .05 is .0025 millisecond - it's an order of magnitude smaller. The raw cost of a context switch has gone down dramatically. In addition, there has been a significant amount of work in the base operating system to increase the scalability of the dispatcher spinlock - nowadays, the overhead of the dispatcher lock is essentially nonexistant on many MP machines (you start to see contention issues on machines with a lot of CPUs, for some value of "large").

But there's another aspect of performance that has gone up dramatically, and that's the cost of blowing the CPU cache.

As processors have gotten smarter, the performance of the CPU cache has become more and more critical to their speed - because main memory is painfully slow compared to the speed of the processor, if you're not getting your data from the CPU's cache, you're paying a huge hidden penalty. And fibers don't fix this cost - when you switch from one fiber to another, you're going to blow the CPU cache.

Nowadays, the cost of blowing the cache has leveled the playing field between OS context switches and fibers - these days, you don't get nearly the benefit from fibers that you did ten years ago.

This isn't to say that fibers won't become useful in the future, they might. But they're no longer as useful as they were.

Btw, it's important to note that fibers aren't the ONLY solution to the thread quantization issue mentioned above. I/O completion ports can also be used to limit context switches - the built-in Win32 thread pool uses them (that's also what I used in my earlier post about thread pools). In fact, the recomendation is that instead of spending your time rewriting your app to use fibers (and it IS a rewrite), instead it's better to rearchitect your app to use a "minimal context" model - instead of maintaining the state of your server on the stack, maintain it in a small data structure, and have that structure drive a small one-thread-per-cpu state machine. You'll still have the issue of unexpected blocking points (you call malloc and malloc blocks accessing the heap critical section), but that issue exists regardless of how your app's architected.

If you're designing a scalable application, you need to architect your application to minimize the number of context switches, so it's critical that you not add unnecessary context switches to your app (like queuing a request to a worker thread, then block on the request (which forces the OS to switch to the worker, then back to the original thread)).

--
From one of the internet discussion forums

12/28/2005

Why does Win32 even have Fibers?

Fibers were added to Windows (in NT 3.51 SP3, IIRC) because some customers (not just SQL server) believed that they could improve the performance of their server applications if they had more control over their threading environment.

But why on earth did these customers want fibers?

Well, it's all about scalability, especially on MP system. On a multitasking system, it's easy to forget that a single processor can only do one thing at a time.

The ramifications of this are actually quite profound. If you've got two tasks currently running on your system, then your operating system will have to switch between each of them. That switch is called a context switch, and it can be expensive (just for the sake of argument, let's say a context switch takes 5000 instructions). In a context switch, the operating system has to (at a minimum):

  1. Enter Kernel Mode
  2. Save all the old threads registers.
  3. Acquire the dispatch spinlock.
  4. Determine the next thread to run (if the next thread is in another process, this can get expensive)
  5. Leave the dispatch spinlock.
  6. Swap the old threads kernel state with the new threads kernel state.
  7. Restore the new threads registers.
  8. Leave Kernel Mode

That's a fair amount of work to perform (not outrageous, but not trivial).

The OS won't do this unless it has to. In general, there are three things that will cause the OS to cause a context switch are (there are others, like page faults, but these are the big ones):

  1. When your thread goes to sleep (either by calling Sleep() or calling WaitFor[Single|Multiple]Object[s])
  2. When your thread calls SwitchToThread() or Sleep(0) (this is a special case of the Sleep() API that is identical to SwitchToThread())
  3. When your thread's quanta elapses.

A thread's quanta is essentially the amount of time that the OS will dedicate to a thread if there's another thread in the system that can also run. A quantum is something like 5-10 ticks on a workstation and 10-15 on server, and each tick is typically somewhere between 10 and 15 milliseconds, depending on the platform. In general, your thread will get its full quanta unless there is a higher priority runnable thread in the system (please note: this is a grotesque simplification, but it's sufficient for the purposes of this discussion).

The thing is, for a highly scalable application, context switches are BAD. They represent CPU time that the application could be spending on working for the customer, but instead is spent doing what is essentially OS bookkeeping. So a highly scalable application REALLY wants to reduce the number of context switches. If you ever have a service that's performing poorly, one of the first things to look for is the number of context switches/second - if it's high (for some value of high), then there's invariably a scalability issue in the application that needs to be addressed.

So why fibers? Because for highly scalable applications, you want each of your threads to get their full quanta - in other words, you want the only reason for a context switch to be reason #3 above.

Remember the first cause of context switches: Calling WaitFor*Object. What that means is that if you call EnterCriticalSection on a critical section with contention, then you're highly likely to cause a context switch. The same thing happens when you wait for an I/O to complete, etc. You absolutely want to avoid calling any Win32 APIs that might block under the covers.

So fibers were created to resolve this issue. A fiber is effectively removes steps 1, 3, 5 and 8 from the context switch steps above, switching from one fiber to another just saves the old register state, and restores the new register state. It's up to the application to determine which fiber runs next, etc. But the application can make its own choices. As a result, a server application could have a dozen or more "tasks" running on each thread, and they'd radically reduce their context switch overhead, because saving and restoring registers is significantly faster than a full context switch. The other thing that fibers allow is the ability to avoid the dispatcher spin lock (see John Vert's comment about context switches being serialized across all processors below). Any global lock hurts your scalability, and fibers allow an application to avoid one of the global locks in the system.

Ok, so why have fibers remained obscure?

They've remained obscure first because of the reasons Raymond mentioned in his fibers caveat - using fibers is an all-or-nothing thing, and it's not possible to use fibers from a shared library. Some of the idiosyncrasies of the fiber APIs have been resolved in the current versions of Windows.

They're also HARD to deal with - you essentially have to write your own scheduler.

Raymond also left off a couple of other gotchas: For example, if you're using fibers to improve your apps scalability, you can't call ANY Win32 APIs that might block (including filesystem APIs) because all the Win32 blocking APIs are also have thread affinity (not surprisingly :)) So if you're running 20 fibers on a single thread, when any of the fibers blocks, your thread blocks (however, the fibers can be run from another thread, because fibers don't have thread affinity, so if you have a spare thread around, that thread can run the fibers).

The other reason that fibers have remained obscure is more fundamental. It has to do with Moore's law .

Back when fibers were first implemented, CPUs were a lot slower. Those 5000 instructions for the context switch (again, this is just a guess) took .05 millisecond (assuming one cycle/instruction) to execute on a 100MHz machine (which would be a pretty fast machine in 1995). Well, on a 2GHz machine, that .05 is .0025 millisecond - it's an order of magnitude smaller. The raw cost of a context switch has gone down dramatically. In addition, there has been a significant amount of work in the base operating system to increase the scalability of the dispatcher spinlock - nowadays, the overhead of the dispatcher lock is essentially nonexistant on many MP machines (you start to see contention issues on machines with a lot of CPUs, for some value of "large").

But there's another aspect of performance that has gone up dramatically, and that's the cost of blowing the CPU cache.

As processors have gotten smarter, the performance of the CPU cache has become more and more critical to their speed - because main memory is painfully slow compared to the speed of the processor, if you're not getting your data from the CPU's cache, you're paying a huge hidden penalty. And fibers don't fix this cost - when you switch from one fiber to another, you're going to blow the CPU cache.

Nowadays, the cost of blowing the cache has leveled the playing field between OS context switches and fibers - these days, you don't get nearly the benefit from fibers that you did ten years ago.

This isn't to say that fibers won't become useful in the future, they might. But they're no longer as useful as they were.

Btw, it's important to note that fibers aren't the ONLY solution to the thread quantization issue mentioned above. I/O completion ports can also be used to limit context switches - the built-in Win32 thread pool uses them (that's also what I used in my earlier post about thread pools). In fact, the recomendation is that instead of spending your time rewriting your app to use fibers (and it IS a rewrite), instead it's better to rearchitect your app to use a "minimal context" model - instead of maintaining the state of your server on the stack, maintain it in a small data structure, and have that structure drive a small one-thread-per-cpu state machine. You'll still have the issue of unexpected blocking points (you call malloc and malloc blocks accessing the heap critical section), but that issue exists regardless of how your app's architected.

If you're designing a scalable application, you need to architect your application to minimize the number of context switches, so it's critical that you not add unnecessary context switches to your app (like queuing a request to a worker thread, then block on the request (which forces the OS to switch to the worker, then back to the original thread)).

--from a web blog