Century-mile to Khandala

God bless America.

We have more American holidays on our company calendar than local ones, probably because most of our business comes from our fair-faced brethren, who would be working over Diwali and Gandhi Jayanti, but probably not on Christmas or in this case, Columbus Day. Since the missus caters to more local demographics and would be working, I had a day to myself to do as I pleased.

Gautam Raja had pointed out earlier that a century ride was a very American concept and hence often assumed to be in miles. This came about during conversation about my previous trip to Khandala-Pargaon when I gloated about completing a century and a half – 150 kilometers – in a single day. Missing out the century-mile accomplishment by a very narrow margin really got my goat and I decided to remedy the problem. And I decided to take off again towards Pargaon, and maybe even further towards Panchgini just to prove what a bad-ass rider I was.

The Heart of the City

The route till Panchgini goes well over 60 miles in one direction. In an attempt to reduce the distance a bit I changed it to cut across the city and into Katraj instead of taking the longer route over the Bangalore-Bombay bypass. This was a decision that I was to regret all day.

The National Highway goes through the heart of the city from Shivajinagar, Shanivarwada Fort, Kasba Peth, Budhwar Peth, Shukrawar Peth, Swar Gate and into Katraj. The road varies from rough rubble in Budhwar Peth to concrete stretches at Katraj. I left home at 5:30 in the morning and headed off towards Ganeshkhind Road. There were shorter routes to Shivajinagar but I put safety ahead and took the longer, better lit road instead. For the first time since we moved here I saw the fountains at Bremen Chowk actually functioning and illuminated – a pleasant side effect of the ongoing Commonwealth Youth Games. The newly installed fountains at University Chowk were also running, although the cops seen the evening before were absent and traffic moved on of its own accord.

I hit the highway at Shivajinagar at about 5:45 and was surprised by the amount of traffic already on the road in spite of the early hour – mostly rickshaws ferrying travellers to various bus stands across the city.

I really cannot make up my mind about whether the games are good for the city or not.

On one hand, large portions of the city have been given a makeover to cast a good impression upon our foreign guests. For a change, signals are working and even being enforced. And the general presence of so many pretty tourists really does wonders to boost ones morale, especially when you are sporting a sleek conversation-starter bicycle.

On the other hand there is this massive wastage that seems to happen everywhere I go. The Pune Municipal Corporation apparently missed the memo about the ongoing power-crunch affecting Maharashtra. Fountains running late into the night are one thing. But having them running well into the next morning just does not make sense. Especially when you stop to consider that the signals right next to them are promptly switched off from 9 in the night till 8 the next morning. And let us not even talk about the gravy train that the road-repair contractors have been riding upon since the last year.

In the midst of these thoughts I passed the PMC Headquarters and was shocked to see the entire complex lit up with fairy lights. Great! Just great. Entire villages in the state can’t have a 10 watt light bulb to light up their roads after sundown and these guys were having a party. The freshly cleaned and illuminated fountain at Shanivarwada Fort a little further down the road paled in comparison.

Most people who know me are pretty certain that there is little room in my life for religion and rituals. But there is this bit of faith deep inside me that keeps the flame burning in troubled times. And this faith drew me into a detour into Kasba Peth just outside the Ganpati mandir there. This temple was installed around 1639 by Queen Jijabai Bhosale, the mother of Shivaji and the idol is venerated as the presiding deity of the city. During the annual Ganesh festival, the Kasba Ganapati idol is the first amongst the five “Manache Ganapati” of Pune which lead the immersion procession over Laxmi Road. What makes this place special for me is its beautiful wooden construction and serene atmosphere. Stepping over the threshold of this temple is enough to transport a person back into times long gone. It is a great place to hole into while being lost in your thoughts.

This morning though I simply stopped outside the temple doors and shot up a quick prayer. And I was off again.

The rest of the ride was uneventful. Budhwar Peth and Shukrawar Peth looked completely different, devoid as they were of bustling crowds and overwhelming traffic. The sky too had begun to don its mantle of blue by now. But all was yet quiet and only few lights flickered in the closely packed buildings on either side of the narrow road. The only sound was of the chain whirring and the cable lock rattling against the rear rack. I rode on quietly.

The silence disappeared all too suddenly as I found myself surrounded by black fumes and dirty buses at Swar Gate bus stand. The smell of diesel was thick in the air and all I wanted to do was get out double-quick. The traffic too was problematic, made up as it was of errant rickshaws, 6-seaters and unmindful state transport buses. One of those behemoths could run over me in an instant and not even realize it till much later. I flipped the bird at a few drivers then quickly got out of their way.

The traffic died down just as quickly as it started though and I was back onto quiet roads. Thankfully the road widened significantly and had an improved surface. School students and newspaper delivery boys began to crisscross my path on their own bikes. Some looked at me and smiled.

“Race aahe, race!” – It is a race, I heard someone shout.

Obviously, they did not know that the Commonwealth Youth Games did not have a cycling event in their itinerary.

Beyond Familiar Territory

The road had now begun to climb rapidly. By the time I reached Bharatiya Vidyapeeth, I was huffing away in a low 2nd gear. Banners all over the place welcomed President Pratibha Patil, who had just days ago been given a honorary Doctor of Letters degree by this university, which kind of sucks when compared to former President Kalam’s degree in aeronautical engineering and 30 honorary doctorates. I love that guy. And I hate this one just as much.

I made it over the slope finally and heaved a sigh of relief. My relief was shortlived though, because the gradient quickly picked up again after the Katraj Bus Stand. To make things worse, the recent monsoons had taken a heavy toll on the road and at that point I would have gladly traded the Navigator for a bike with good shock absorbers instead. Front and rear ones, please. I crawled along uphill in single-digit speeds for about a kilometre before finally giving up and dismounting.

It was around 7 now and the sun was beginning to be seen over the tops of the mountains. There was quite a nip in the air yet, though and everything was wrapped in fog. I glanced over the edge of the road onto the valley below and saw lush green fields interspersed with patches of bright orange flowers. This called for a picture. When I removed my backpack for the camera, I noticed the vapour rising off my own perspiration-soaked back. Crazy!

I was ready to move on after some pictures. The road kept changing fast between good and mediocre and I alternated between riding and pushing. The climb continued to get more intense. Riding in low gear was affecting the stability of the bike too causing me to weave over the road in order to maintain my balance at slow speed. With all the buses and taxis passing by at high-speed, such behaviour was an invitation for trouble.

“Accident Prone Area”, the sign read, followed by a steep 180 degree curve. A gaping hole in the guard wall indicated the spot where some unwary driver had ploughed his vehicle off the road into the bushes, or worse, the valley beyond. I was glad that the cycle would never be able to do such damage, but only for a second when it struck me that crossing paths with an over speeding truck probably would leave me much worse off than the wall. I shook off those thoughts from my mind and stopped to take in the breathtaking scenery and some pictures.

The apex of this climb was the Old Katraj Tunnel. I half-rode and half-pushed my way up the steep ghats for the next half hour before reaching the mouth of the tunnel. At a measly 300 metres long, it was a disappointment. The new tunnel on the Bangalore-Bombay bypass is easily a kilometre or so longer than this one. I flicked on the dynamo just to be safe, even though I could clearly see every inch of the road right up to the other end and rolled through quickly.

Sunshine Highway

The view at the other side was completely different. The road was very well laid, and outlined clearly by the same orange flowers I had seen earlier in the valley. The sun too had come up higher since my first break on the ghats and the mist had dissipated. The orange from the backlit flowers cast a beautiful shade on the road ahead and all seemed well again.

Sunshine Highway; Katraj

I stopped for a few pictures before moving on.

Soon the highway merged into the Bangalore-Bombay bypass. The bike finally was able to pick on some speed on the concrete and half an hour later I had brought my dismal average of 15 km/h at the mouth of the tunnel to a more respectable 19 km/h. My speed on the new road stayed in the early 30’s through this time.

I halted at 8:00 sharp for breakfast and a quick call to my wife. I was not hungry really, but went ahead and ordered an idli. It was a long day ahead and I would need all the energy I could get. After refilling my water bottles, I hit the road again.

Before leaving, I flicked on the radio and plugged it into one ear. This was to be my companion the rest of the day.

I covered several kilometres over the next hour before the next water-break. It was beginning to get warm now and staying hydrated became a priority.

Whoops!

Sab Sud-Budh-Hosh Gavaa Ke,
Deewani, Main Paagal, Main Jhalli Ho Gayi.
Main Talli, Main Talli, Main Talli Ho Gayi

Hard Kaur screeched out of the earphones just as I noticed by bicycle act
up.

I noticed a distinct bump with every turn of the wheel. At first I thought it might have to do something with an uneven road surface. When it persisted, I assumed it was a bent rim and stopped to investigate.

Luckily it was only a flat. I was not carrying my patch kit (another decision I would soon regret) but since I had stopped practically next to a bicycle repair shop that was not much of a bother. I was near Narsapur, just a little ahead of the toll booth.

The mechanic quickly patched the tube and I was on my way again. I had lost half an hour but was confident of catching up soon.

The road was undulating, but the bike managed to go at a steady 25-30 km/h throughout. Stopping frequently for water and bananas or a chocolate bar, I managed to keep my energy levels up. In no time at all, I was at Shirwal, the last major town on this route and home to what is probably the only theatre for a radius of 50 kilometres around. Minnisha Lamba looked down adoringly upon my Navigator while Imran Khan pointed his gun threateningly. Sanjay Dutt continued his melancholy stare into emptiness.

The downhill gradient of the road so far now began to tilt upwards again. Khandala was about 5 kilometres away and I would have been able to do it in a few minutes. Then I noticed that my speed seemed incredibly slow. It was taking tremendous effort to go uphill and the bike stopped rolling even when going downhill if I stopped pedalling. This could mean just one thing – a flat. Again. Yup. Front tyre. And this time there was no mechanic within an arms reach.

There wasn’t even a hut for 5 kilometres in either direction. So I dismounted again and pushed the rest of the way to Khandala. And being a small village, finding help was difficult. The mechanics on the highway only worked on motor vehicles. I was sent further into the village for help. The first mechanic was shut. The second one was going to take an hour to fix it. The third one was finally able to look at the bike and fix it. The valve had given away and the rubber tube inside it had to be replaced.

But by the time he was done it was 11:30. I had wasted almost 45 minutes because of this flat. It was pretty certain that Panchgini was out of question now. Maybe Wai, but that too was 30 kilometres away.

The Beginning of the End

I crossed another toll booth after Khandala and entered a one-way block of the highway. At first it was a pretty decent road – shady, well built and mostly flat. Then it began to climb again. The trees also cleared out and gave way to small bushes. And then I saw the first major mountain in my way ahead. So tall, that it made the Katraj Ghat look like a walk in the park. Also more conspicuous was the absence of any kind of human settlement for several miles around. And judging by my recent luck with the flat tyres, it seemed like a bad proposition to enter there. But there was something that kept me going – the odometer, now tantalizingly close to 80 kilometres. If I turned back and went the exact same route as I had come, I would again miss the 160 kilometres and 100 mile mark narrowly. But it seemed really foolish to go halfway into uninhabited area without any preparation.

While these thoughts ran through my mind, I went past a dhaba, probably the last one on this side of the ghats. I went ahead several metres before deciding to at least have a meal before moving on. It was almost 12:00 noon.

After a greasy paneer palak and 2 rotis I chatted up the owner about road conditions ahead. He pretty much echoed what I had estimated – uninhabited land, steep climb and rash drivers. At least there wouldn’t be any oncoming traffic as the road continued to be a one way through the ghats. He told me that since I was on a bicycle I could turn back right there itself and ride against the traffic without any worry from the highway patrols. But on pushing a bit I came to know of another route across an embankment which cut across the fields and connected this side of the highway with its corresponding road going back towards Khandala. I hopped onto my bike and pedalled towards it and hoped to reach the magic 80 kilometre figure somewhere upon this embankment.

Homeward Bound

This was a rough road, yet under construction. But the regular passage of heavy vehicles had flattened it out quite a bit and I was able to make it through with little trouble. The odometer meanwhile climbed painfully slowly towards 80. I reached the other end of the embankment with yet a kilometre and a half to go. Had I ridden the Bangalore-Bombay bypass, I would have completed 75 kilometres at Khandala itself, and would be easily beyond 80 kilometres by now. I cursed myself for taking the different route.

Embankment beyond Khandala

The odometer finally ticked past the 80 kilometre figure a while later, and at least before the toll booth. I began to calculate distances in my head. By my estimates, home was around 75 kilometres from Khandala if I took the Katraj-Warje-Chandni Chowk-DRDO-Aundh route. I would have to modify it slightly, maybe even take a detour through Sanghvi before stopping at home if I was to complete 100 miles.

With this thought in mind I moved ahead.

Misery at 100

I touched 100 kilometres at 2:00 pm, with the milestones indicating 40 kilometres to Pune. This was going to be a close call for me. Unfortunately, I did not have much time to think about this issue. I got off to take a breather and a sip of water. When I noticed that the rear tyre had gone flat again. I was just ahead of Shirwal and luckily, close to a mechanic. The only consolation was that it had happened here and not 20 kilometres back where there was no help available.

The countryside on NH4

I pushed my bike into the village and outside the only “puncture dukaan” in the entire hamlet. Locals gathered around to watch this amazing bike as the old man dug out his tools and got to work. The patch from the previous puncture earlier in the morning had given away. This guy tried to peel it off but it was glued to tight. So, this is the best part, he burned it! Liberal amount of adhesive was put onto the old patch and lit up with a match. I watched with bated breath, expecting the entire tube and this guy himself to turn into Wile E. Coyote-style cinder any second. Nothing of that sort happened though, and a few seconds later he doused the flame with a wet rag. The old patch plopped off like an autumn leaf.

The rest of the task was easy. He patched up the tube and I was on my way again.

All that stopping had taken the wind out of my sails. I kept getting paranoid about new punctures and stopped to check my tyres every 20 minutes or so. This greatly affected my progress, although I managed to cover 10 kilometres in the next half-hour. I was 30 kilometres from Pune with 110 kilometres on the odometer.

Desperate Times, Desperate Measures

The journey was uneventful until the toll booth. My water supply was completely depleted and I munched on the last energy bar that sustained me till Joshi Wadewale on the outskirts of Pune. I refuelled myself on a masala dosa and water and did a distance check.

138 kilometres. 22 more to a century.

In a last desperate attempt, I changed the return route to go over the bypass rather than through Katraj. This would add some precious kilometres to the tally. Going through the new Katraj Tunnel was fun as usual, although the dynamo was not really built to burn at 60 km/h and blew up spectacularly as soon as I reached the other end.

I stopped for a while to catch my breath after the wild ride through the tunnel and to enjoy the view over the Jhambulwadi Road.

The road continued to slope downwards right up to Warje and the odometer ticked on furiously. At the Pashankar Showroom, it was showing 148 kilometres, with 2.5 kilometres to Baner and another 10 kilometres from there to home. This was going to be really close.

Bug near Jhambulwadi

What caught my eye was the tremendous amount of spruce-up that this road had gone through since my last ride. Flags punctuated the road at regular distances, indicating the path to the sports village. The flyover at Sadanand Hotel had been completed – from a mound of rubble just two weeks ago, it had been converted into a 4-lane, tarred bridge with an underpass for the Baner to Balewadi traffic. Lights, barriers and parking areas had been set up with appropriate signages. And a strong security cover that checked every car headed towards the complex. I think I got away from security only because I resembled an athlete in training with the helmet.

The Home Stretch

Ami finished her work at around 6:30 and called me. Since I was going to be returning by the same route as her commute, I waited for her at along the way. The way back was easy, although traffic did eat into my waning patience.

I finally watched the odometer tick past the 160 kilometre mark near Spicer College, with a kilometre and a half more to spare.

Damn. That felt good.

One Week on the Navigator – A Review

It is really amazing how fast the week has gone by. Between the daily grind and a weekend back home in Mumbai, I have not had the time to ride on my new bicycle at all. All I do is use it for my regular commute, albeit with a lot more style.

During the past year I had cycled enough to know exactly what kind of cycling interested me the most – a comfortable commute and some medium distance touring. After tons of research on different bicycle websites and forums, I had more or less decided on the following specifications.

  • Traditional geometry frame
  • Multiple gears
  • Drop bars
  • Large wheelbase
  • Narrow tires
  • Light weight
  • Mudguards and rear rack (those could be added as accessories to
    any bike)
  • Ability to handle the occasional untarred road

Most dealers kept pushing mountain bikes or road bikes upon me. That is until I came upon the Navigator in one of the stores at Nana Peth. It seemed like a well-designed bike, although I was not sure yet if this would be the perfect one for me. For one, it was built around a compact geometry, with a sloping top tube. But given that I would be riding it mostly on my daily commute rather than touring around the country, I was willing to compromise on that point. The second drawback of the Navigator was that it had riser bars rather than the drop bars I was more interested in having.

After dilly-dallying for almost two months, I finally compromised and picked up the Navigator because it met most other requirements, while fitting in nicely within my budget.

Looks That Kill

The LA Sovereign Navigator looks good. Its silver body with black graphics makes it a sure-shot eye-catcher. I have had motorcyclists and rickshaw drivers slow down alongside with approving nods, pedestrians turn heads as I race past and colleagues congregate around it during lunch to discuss its features. In fact, it looks so pretty that it is sure to be a thief magnet. That is not to say that I have experimented with this quality of the bike. But I need to stop tempting fate and get a good U-lock for it soon. The complimentary cable lock is too short and too flimsy to hold off a determined crook.

Up to Task

The daily commute is not a race and the potholed roads are far from a racetrack. Although I did not realize this at first, the ideal bicycle for such conditions would let me ride with an almost upright posture, while propelling me fast enough with little effort. The Navigator meets all these requirements and more.

The riser bar is easy to reach, but because it only gives one grip position, I am not sure how well my hands will do on a long ride. The seat was too low during my first ride and did not allow my leg to be completely extended. Not to mention that I looked like a dork. I have now lifted the seat post up to its minimum insertion mark and it seems much better.

The frame is very light and easily goes several hundred metres with a single turn of the pedal once it picks up speed. In fact, it is so light that the first time I rode it, I was afraid that putting too much load in one spot would break something. I am also able to lift it up two floors to our apartment every evening without any trouble.

The tyres are narrow, with a patterned tread that provides good traction on all kinds of asphalt and tar surfaces. The V-brakes provide sufficient stopping power to halt those wheels in their tracks, although I have not had any need to test their full
potential as yet.

The Shimano Tourney gears are sufficient for my purpose, although I am yet to make them go through their test of mettle. There are some adjustment problems with the gears, but because of my limited exposure to them I have deferred fiddling with them for the store mechanics instead.

Finishing Touches

It also comes with front and rear mudguards that run close to the wheel and cover a large arc – the best types. I have ridden in some light to medium rain and have not had any problem with the slush hitting my back. There are some dents on the front mudguard which I brought to the notice of the dealer and the customer service folks at LA Sovereign. Both have promised a replacement shortly. I might remove the mudguards after the monsoons are over to give the cycle a sleeker look as well as make it lighter.

The rear rack is useless as it does not have a spring clamp to hold things. I will need to carry some nylon ropes or a bungee cord, which becomes a hassle to tie and untie. The backpack is a more practical option for my short, daily ride. But I will need to consider an alternative when I go for a longer spin. Again, since I do not use it much, I have an option of removing it completely.

A quainter feature is the bell, not seen on most high-end bikes these days, making them dangerous while travelling amongst jaywalking pedestrians. The cycle itself barely makes a whisper. It certainly is nice to have something to draw the attention of people who inadvertently step into my path rather than slamming the brakes every few metres.

The most eye-catching feature of the Navigator is the dynamo-driven headlight. It is a low-powered affair, enough only to make me visible at night or in the rain. But given the frequent load shedding in Pune, any illumination is most welcome.

And Finally

LA Sovereign seems to have a policy to sell an experience rather than bicycles. Their customer service department has been consistently responsive, polite and honest. Even before I had finalized on which brand I would go for, their customer service team gave me honest replies about their product range, highlighting features and drawbacks of the bicycles I had short-listed.

Surendar Cycles, the dealer from Pune from whom I made the purchase, follows a similar philosophy. I had already done my homework so he did not have to go through a sales pitch with me. But he was the only dealer I visited who dissuaded me from converting the riser bars into drop bars, which I was rather keen
upon earlier.

Riding Uphill Builds Character

Ami was attending a retreat with some of her work colleagues at Lonavala last Friday and Saturday. Although I was not sure what I would be doing while she was gone, I was certain that it would involve cycling.

Some of my colleagues had gone out to lunch on Wednesday and amongst them was good friend and fellow biker Amit (not to be confused with good wife and fellow biker Ami). He owns a Trek 4300D and regularly rides long distances on it. In the course of our conversation, one of us brought up the suggestion of a ride this weekend. Since Ami was going to be at Lonavala, we too decided to be there and surprise her.

Friday night I got home from visiting Surendra Cycles at Karve Road (that is another story, on another thread) and hit the sack early. We were to meet at 5:30 near my home and take the National Highway . Amit was waiting for me at 5:45 and I went down. This is where the fun began.

When I went down the cycle was not standing upright, as I had left it, but completely keeled over to one side, leaning against the wall. The cycle had developed a slow puncture in the rear tire from my trip the last evening. Fisssssssssssssssssssssssssssssssssssssssssss…

I was completely helpless at that point and called up Amit. He came over and we waited out at my place until the cycle store opened. Incidentally, it had occurred to me several times in the past few days to ask Amit to carry his puncture kit, but I ignored it. This was going to cramp our schedule big-time – over two hours lost.

Time to go

Finally, at 8-ish we pushed our cycles to the store. It took a few minutes for the patch-up to be completed and the ride was ready to roll again (Note to self: buy puncture kit). The sun was high in the sky by now. As mentioned in a previous post, the Pimpri-Chinchwad portion of the National Highway is a pleasure to ride. However, that applies only when you sweep off all other traffic and stray cattle from the road. I had three near misses with an autorickshaw, a pedestrian and a Mahindra Jeep when they broke the signal (except for the pedestrian, who was taking a leisurely stroll in the middle of the road). Once past Jai Hind Industries, up to where I had ridden the last time around, I was into virgin territory for my bicycle. From here onwards, commuter traffic began to thin out in favour of trucks.

On entering Dehu Road , we were into heaven, sort of – lush greenery all around, with an intermittent squatter generating…ahem…fertilizer for the plants. I had seen such views by the railway tracks in Mumbai. However, watching them answer nature’s call on a 100-foot tall hill amongst fresh grass and goats even astonished me.

Halt!

We had been doing good time so far – 22 kilometres an hour and we had reached so far in just under an hour and a half. I called for the first break at Dehu Road . We stopped and I got off for a few minutes to ease the cramping in my thighs. I was now beginning to push myself beyond any previous ride attempt and would soon begin to show.

At little while later, near Vadgaon, I realized that the Maggi that I had had for breakfast had moved over and left a gaping void in my stomach. So we stopped again and had some biscuits and plenty of water. Since we were still hungry, we rolled into the first roadside hotel that showed up and feasted on wada’s and a masala dosa. After refilling our bottles with water, we were on our way again.

Now is where the fun begins. All of a sudden, we were caught in a sweeping sheet of rain. However, before we had removed the rain gear from the bags and put it on, it had stopped. We left the jacket on anyways and continued onwards.

Uphill

I had to get off the bike at Kamshet because the slope was too steep for me to pedal the Exodus upon (what was this designer thinking when he fed it over 25 kilos of aluminium and steel?). On the other hand, Amit merrily clipped along up the hill in low gear.

Going downhill was much easier upon my legs and I coasted along easily until the next uphill slope before Karla. Once past this slope, the road flattened out into the distance for many kilometres. We could read the milestones counting down the distance to Lonavala – chhey, paanch, chaar, chhey…what?! Oh well, never mind. Somebody had mixed up the old and new milestones and could not be bothered to come and fix them again. After all, what’s a couple of kilometres here or there for a car. Try to explain that to a cyclist though.

The Final Stretch

After that, we were unmindful of the milestones. We would know we were there once we actually got there. On that note, we forged ahead full steam and shortly found ourselves mired in the traffic jams of Lonavala. It is amazing how a perfectly serene spot is vandalized by our society in the name of development. What was once an idyllic retreat for retirees has now turned into a weekend picnic spot featuring a water park, plenty of restaurants to stuff your face and unorganized traffic. It is like the Mumbaikars (yes, I am looking at you) have brought a slice of Mumbai to Lonavala and instead of gobbling it up or taking it back, have left rotting leftovers for the Lonavalaites.

After this point, the road was downhill, with brief humps that the momentum of our bikes would take us over. We were going so fast that I barely noticed the sign to the resort that Ami was in and screeched to a halt just in time. We entered into the lane, and after some searching, finally found the road that led to the resort.

The road was a sheer slope, well beyond 45 degrees, covered with slippery and evilly sharp edged rocks. Amit easily went down on the Trek, but I was completely out of my element with my road-riding configuration. I was probably violating every rule of mountain biking – no helmet, a tall seat reaching above the handlebar, slippery calliper brakes and smoother tyre treads.

I did the prudent thing and dismounted, then lugged the cycle down the slope.

I left a note at the hotel reception and sent it to Ami. The smile on her face when she came down made the entire gruelling journey worthwhile.

We left after lunch at the hotel, but it was already quite late. Neither one of us was in the mood to ride 70 kilometres back home, especially since we would still be on the highway by the time it was dark without any lights. So instead, we purchased luggage tickets for the bicycles and boarded the Pune local. We left Lonavala at 5:20 and were back home by 6:45.

Some tips for bringing your cycle by train

The ticket clerk did not have a clue about bringing bicycles by train. He told me that it was not possible. Not looking forward to riding back in the dark, I persisted and spoke to the chief ticket inspector on the station. He told me that he would be able to make a luggage ticket for me.

The handy-dandy-freight-fare-reference book that the Indian Railways provides to its employees was probably written when the first train chugged from Boribunder to Thane, and has never been updated since. In the absence of a weighing scale, bicycles are to be considered as weighing 40 kilograms, which is quite absurd. We would have to be descendants of Hercules to be able to push 40 kilograms of anything over 70 kilometres. We tried to reason for a bit, but it turned out to be fruitless.

We went onto the platform and waited for the local train to arrive. We loaded the bicycles while the compartment was still empty and found comfortable seats. Amit’s Trek was a great conversation starter with the locals.

I was glad when we stopped at Khadki station an hour later. One side of the platform at Khadki is reserved for military trains and hence was empty. Amit took the opportunity to live his childhood dream – riding a bicycle on a railway platform – a final bit of delight to a very enjoyable trip.

Lessons learnt

A non-geared bike is no match for a geared bike.

You can go anywhere on any reasonable bike. The condition of a bike matters less than the conditioning of the rider.

Going uphill on a non-geared bike builds character.

Going downhill on a steep slope can easily turn into a white-knuckle ride.

Riding a cycle lets you take in the entire road and not just visit a destination.

Safety is entirely your responsibility. I did not expect a single motorist to go warily around me and did my own defensive riding. Since I am not writing from a hospital bed, I can assume that this works.

A Gentle Introduction to Version Control – Part II

Using SVN

Subversion, or svn, is a very popular version control tool, used by some of the best software teams in the world. The fact that it is free and open source, in addition to being really, really good may have something to do with that. Like most good version control tools, Subversion too is split into two components – a server and a client.

You don’t need to worry about the server usually because it is set up on a system far out of your reach. If you are located in North America or Europe, it means that your company has outsourced the Subversion hosting somewhere in South America or India. Funnily enough, good companies in Bangalore (or Pune) usually outsource their Subversion hosting to a really, really good outfit in LA (read, Dreamhost). Silly. But that’s how the global economy works, and which is why it is more fun to be a software developer than to be an economist.

Coming back to our topic…

What you will use on a day-to-day basis is the Subversion command-line client (or TortoiseSVN, a GUI replacement).

Disclaimer: This article touches briefly upon how to get started with the client, without worrying about details. If you are a svn alpha-geek who dreams about hosting your own repository someday or whatever else you svn alpha-geeks dream about, and find my guide to be incomplete, don’t email me to write about the 10,542 variations in syntax that the svn client allows. I know you adore your svn client. But this article is targeted at people who don’t as much as know about svn, much less adore it.

Once the client is installed, you can launch a command prompt session by typing cmd into the Run dialog box in Windows and hitting enter. Once on the command prompt, type the following and hit enter.

C:\svn help

Detailed help is also available for some of the more oft-used commands by modifying the help command like so –

C:\svn help import

Import

You can use the import command to add files from your computer into the repository for the first time, and hence, begin versioning them.

C:\svn import trunk/ file:///F:/projects/notadesigner/trunk/web/index.htm -m "Initial import"

Checkout

If you are a new developer on a team that has been using Subversion for a while, you can use the checkout command to retrieve the source code from the repository onto your hard drive.

C:\cd projects\notadesigner\trunk
C:\projects\notadesigner\trunk\web>svn checkout https://notadesigner.com/svn/trunk

Note how the active directory is first changed to the path where the files have to be stored, and then the checkout command is called.

Alternatively, you can also specify the path to the working folder as a parameter to the checkout command.

C:\svn checkout https://notadesigner.com/svn/trunk C:\projects\notadesigner\trunk

Update

This is probably the next most used command in the Subversion client. Millions of developers across the globe run this command every morning to retrieve the latest version of files from the repository into their working folder. Running this command makes sure that you are running abreast of everyone else on your team, by bringing the latest changes they have committed to the repository onto your machine (and likewise, your latest changes get updated on their machines).

C:\projects\notadesigner\trunk\web>svn update

Like true Zen, it is a deceptively simple command. Just two words that do you a whole lot of good.

Add / Delete

These commands do just what they say. They make changes to your working copy, and schedule the same change to the repository when you commit your changes later.

C:\projects\notadesigner\trunk\web>svn add locations.htm
C:\projects\notadesigner\trunk\web>svn delete directions.htm
C:\projects\notadesigner\trunk\web>svn commit -m "Added new locations. Deleted directions because we're spread all over the city and I didn't know where to send them."

Copy / Move

Copy and move work exactly as they do on your operating system, except that they are targeted at the repository.

C:\projects\notadesigner\trunk\web>svn copy jobs.htm https://notadesigner.com/svn/trunk -m "Adding new jobs page"

Move requires a separate commit to implement your changes into the repository.

C:\projects\notadesigner\trunk\web>svn move jobs.htm jobs/index.htm
C:\projects\notadesigner\trunk\web>svn commit -m "Moved jobs page into separate folder"

Revert

This command rolls back any changes made to a file in your working folder, and restores it to the version on the repository.

C:\projects\notadesigner\trunk\web>svn revert contact.htm

Using TortoiseSVN

TortoiseSVN lets you perform all actions that the svn command-line client lets you, without messing with the command-line. If you are new to Subversion, it’s a compelling replacement to the regular svn client.

Finally, Don’t Do This

I have found a shockingly large number of people doing silly things while using a VCS. I am tired of telling them not to do it and so if you abuse a VCS in any of the following ways and I catch you at it, I’ll make you write this list on a blackboard that screeches, for at least a week…without ear muffs.

It’s not that difficult to avoid them. So listen up.

Don’t make a copy of your working folder to make edits

If you are checking out files from the repository in a working folder and then making a copy of that folder to make edits because you don’t want to overwrite your old files, you haven’t understood the most basic premise of version control.

The repository already has a copy of your files which compile correctly. If you make a mistake, revert your files and you’re back where you began from.

Don’t make a copy of your folder in the repository before editing your files

A more severe case of the previous symptom is when a developer copies the entire trunk in the repository into trunk-2 (effectively creating a branch) and making edits to that.

Don’t delete the current version of the file from the repository to add the edited working copy in its place

The whole point of version control is to have a history of your file over time. If you delete the file from your repository, you destroy that history. If you do it every time, somebody who looks at your file six months down the line will have no idea about the pedigree of your file, the bugs that have been fixed or the new code that has been added to it.

Don’t forget to add comments when committing changes

You’ve got to be really lazy to not add comments at the time of committing your changes. Vague comments such as “updated file” are just as unhelpful.

It helps to be descriptive in the changelog because that’s the first place people go to find out what’s been cooking in your files. If you don’t tell them up front what you’ve been up to, they’ll just think that you’ve been messing up and saddle you with all the blame.

Don’t forget to add new files to the repository

This is a common mistake and can happen by even the most seasoned developers. But I’m writing it here to simply reinforce it that this should be avoided.

References

If you find this article doesn’t quite quench your thirst about version control systems or Subversion, you can learn more stuff by visiting the following websites.

http://svnbook.red-bean.com/
Colloquially referred to as the svn-book, this is the granddaddy of all Subversion books. Contains detailed explanations about the history of svn, repository and server setup and administration, detailed explanations about the acrobatic feats that the client lets you do, and if you’re really interested, a description of the C APIs that let you hook up svn with your own applications.

http://www.joelonsoftware.com
A delightful collection of extremely well-written and funny articles about computers, software and management by Joel Spolsky. This should be a must-read for every developer.

http://www.ericsink.com/scm/source_control.html
Eric Sink is the founder of SourceGear, a company that specializes in selling version control software. You can’t get anybody better to write about version control.

http://betterexplained.com/articles/a-visual-guide-to-version-control/
Kalid Azad maintains this brilliant blog about all things mathematical and computer-sciencey. It’s a refreshing view to everyday complexities that you take for granted.

A Gentle Introduction to Version Control – Part I

In our rush to Web 2.0 our lives, we seem to have forgotten to imbibe the essentials. Everyone is guilty of that – from fruit farmers using artificial fertilizer, to politicians driving nations to war, to developers not using version control.

Shocking, really.

I do not have much pull with the fruit farmers or international diplomats. But as a fellow developer, it’s my duty to bring back the lost software teams of today into the fold. Forget “enterprisey architectures” for a while and look at the basics. In this article I will introduce you to the wholesome goodness of Subversion, a fantastic version control tool.

Essentially Missing

Version control is an essential tool in any software team’s kit. In spite of that, I regularly run into senior developers with years of experience who have never used it. Which is, to be honest, quite frustrating because then their working directory tends to look like this –

Product-latest

Prodcut-new-12-march (yes, it is misspelled)

Product-new-mar-15

and the disaster repeats till eternity.

If you notice, this directory structure is already functions as a basic version control repository, in that it separates successive updates to the product, but without all the extra goodies that a true version control tool would let you have such as comments, labels and developer history.

Towards the Light

Whenever I have had the good fortune of introducing developers to version control – even with rogue tools like Visual SourceSafe – they knew this was the elixir they were missing for so long. It takes some work to actually drive it into their system. But once there, it stays on forever.

The single biggest advantage all of them cite is how easy it becomes to synchronize files between team members. Because everybody is updating their files every morning from the same location, it becomes easier to keep abreast with everyone’s changes.

The next biggest advantage is the ability to roll back mistakes. If a file has not been checked in, simply revert it back and the VCS replaces it with the latest one in the repository. Even after the file has been checked in, a previous version of the file can be retrieved from the repository and used to restore the changes made.

A side-effect of this feature is the ability to sandbox major changes. Rewriting core algorithms of your accounting product using that new design patterns book? (Hah!) Do it in a local working copy, test it and then throw it away when you discover you suck at patterns check it in after it works fine.

As a project’s requirements evolve, files mutate into completely different beasts from their initial incarnation. By logging a note about each change made to the file in the VCS, developers are able to track the project history in the long term.

Another nice feature of the tracking tools is that they help assign ownership by logging the person who has made a change. This proves to be quite helpful when giving credit, or more frequently, blamestorming.

And the greatest relief that a VCS provides to all stakeholders is the daily backup that occurs automatically when developers check-out the latest changes every morning. It’s rare for a team using VCS to lose a lot of data due to hard drive failures.

The VCS Dictionary

Let’s begin with learning the terminology used when dealing with version control.

Parts of a VCS

  • Repository: The database storing the files. The repository is usually expected to be on a central location such as a network server, although it can exist on locally stored directories.
  • Server: The computer storing the repository. If the repository is stored on a directory on your own computer, then your computer is called the server although there is no network access involved.
  • Client: The computer connecting to the repository. Your computer.
  • Working Set/Working Copy: Your local directory of files, where you make changes.
  • Trunk/Main: The primary location for code in the repository. This is the in-progress version of code, with untested or partially implemented features. Feature-complete snapshots are stored in a branch folder.

Common Terms

  • Revision: What version a file is on (v1, v2, v3, etc.).
  • Head: The latest revision in the repository.
  • Commit Message: A short message entered at the time of committing a file, describing what was changed.
  • Changelog/History: A list of changes made to a file since it was created.

Basic Actions

  • Add: Put a file into the repository for the first time.
  • Check-out: Download a file from the repository.
  • Commit/Check-in: Upload a file to the repository. The file gets a new revision number, and people can check out the latest one.
  • Update/Sync: Synchronize your files with the latest from the repository. This lets you grab the latest revisions of all files. Do this at least once a day.
  • Revert: Throw away your local changes and return to the latest version from the repository.
  • Diff/Change/Delta: Finding the differences between two files. Useful for seeing what changed between revisions. This only works on text files (e.g. .as, .htm, .cs). Binary files (e.g. .psd, .fla, .doc) cannot be diffed.

Advanced Actions

Branch: Create a separate copy of a file/folder for private use (bug fixing, testing, etc). Branch is both a verb (“branch the code”) and a noun (“Which branch is it in?”).

Merge: Apply the changes from one file to another, to bring it up-to-date. For example, you can merge features from one branch into another.

Conflict: Occurs when two people edit the same file simultaneously. The first person to edit the file does not face any error. However, the file on the server is now out of sync with the file on the second person’s working folder. When he attempts to commit the file to the repository he gets a conflict.

Conflicts can be resolved for text files by manually selecting which lines of code to keep and which ones to discard.

There is no way to resolve binary files. If there is a conflict in binary files, then the second person has to begin again by retrieving the latest file, and re-creating the changes made to it before the conflict occurred.

To avoid conflicts on binary files, a user can lock the file before editing.

  • Resolve: Fixing the changes that contradict each other and checking in the correct version.
  • Locking: Flagging a file for exclusive use until it is committed again.
  • Breaking the lock: Forcibly unlocking a file so you can edit it. It may be needed if someone locks a file and goes on vacation (or “calls in sick” the day Halo 3 comes out).

An Illustrated Example

Pop Candy is a Java developer who has just joined the team at Timeless Software. Her task is to add an email client to their product. She creates a folder on her hard drive for the project, and proceeds to check out the files from the repository.

Once she has the entire product code check out onto her hard drive, she compiles it and familiarizes herself with its features.

Once she’s ready, and has read the spec, she begins editing the first file. She adds a few more files to the project, compiles and tests. Makes a few changes, goes back and compiles and tests, and in no time at all, she has reached her first milestone. Her email client connects to the server and successfully handles the server’s response to HELO.

She feels she’s achieved quite a bit for the day and proceeds to add her changes to the repository. The first step is to select the new files she’s created and adding them to the repository. Then, she selects the new files, and the ones she’s modified and commits them all in a single operation. She remembers to enter a log comment that describes the change clearly. When the other developers come in the next day and update their working copies, they’ll see that Candy has begun working on the email client.

The next day Candy is working on adding a rich text editor into the email client. She uses an off-the-shelf JavaScript library to do the job to save time. Smart!

But when her team lead reviews it, he points out to her that the terms of license of this library conflict with those of their commercial product. Candy is grumpy because it took an entire day to integrate the editor. It was her fault, though. The spec clearly stated that no off-the-shelf library is to be used. So she has to go back and undo her changes. She deletes all the unversioned files in the project folder and proceeds to revert the edited files to their head version.

A few days into development, as the email client begins adding bulk, the testers complain that the product itself seems to be very sluggish. Everybody scrambles to get their hands on the changelog on the date since when the testers noticed the slowdown.

All fingers are pointed at Candy’s code for the moment, but the team lead defers any decision until he’s actually reviewed her commits on that particular day. He retrieves the files of the previous revision and runs them through the tests. On a whim, he decides to replace their in-house SMTP test server with the live email server.

Luckily, it turns out that it was their testing SMTP server which was misbehaving. Instead of closing the connections on receiving QUIT, it continued to hold them. And the testers were the only ones to notice this because they sent the client through a gruelling 1,000,000 rounds of sending and receiving email.

You now see how easy it is to manipulate readers into seeing from your viewpoint with a contrived example veiling your actual agenda.

Oops!

No, that’s not what I meant. The moral of this story is that it is always a good idea to use version control. Version control is mother’s love and apple pie. It is the cat’s whiskers and the bee’s knees. And you just gotta have it!

Move on to part two here.