BaloneyGeek's Place

BaloneyGeek's Place

Operator! Give me the number for 911!

Around the World in Seven Days

Even though I still find it hard to believe, the stamps on my passport say otherwise: I just returned from what was a weekend trip to the United States of America.

I spent four days in the USA, not counting the time I was travelling to and from. The journey from India to the US was about 21 hours with layovers, and the journey back was 32. I spent my time there at San Francisco and cities in Silicon Valley, and hanging out with my friends whom I had only previously met online, when I wasn't doing what the primary purpose of my trip was - attending the Google Summer of Code Mentor Summit at the Google Tech Corners campus at Sunnyvale, CA.

Leaving India

Travelling from India to San Francisco turned out to be a life-changing experience. I left Indira Gandhi International on a Boeing 787-9 Dreamliner operated by the Dutch national airline - KLM - at 3:45 AM local time, and landed at Amsterdam Schiphol at around 7 AM. This was a pretty standard long-haul flight - I'd done a round trip to Europe before - but I was still pleasantly surprised by the amenities provided by KLM to Economy passengers, which included headphones you could take home, an eye cover and earplugs, provided in a small goodie bag with nuts and other small knick-knacks.

The approach into Schiphol was a memorable one. We flew right over Berlin and started descending over the Ruhr region at the crack of dawn. We flew over the Netherlands and into the North Sea, and re-entered the Amsterdam metropolitan region over a sea-wall - the modern dykes - protecting the city. Indeed, the entire airport is more than 3 metres below sea-level. The sea was dotted with windmills, and the ground was overrun with farms giving way to small clusters of houses, and the road and rail line here and there.

I'm still in awe at the efficiency of security at European airports. My backpack was flagged for additional screening because I was carrying an umbrella, and it still took only 5 minutes. Which was well because my flight to San Francisco had already started boarding by the time I had walked out of the plane and lined up for security.

It was the flight from Schiphol to San Francisco that was the life-changing experience. KLM 605 was operated by a Boeing 747-400, and the particular bird that I was on was more than 27 years old. It was older than I was. The 747 - the original "Jumbo Jet" - has defined civil aviation for the last four decades, and I was flying on an aeroplane that is slated to be retired in the next two years. I was determined to make the experience memorable, because I might never get to fly on one of these ever again.

Stepping into the airplane, you immediately know that you're on something from the 80s. The overhead bins, the shape of the windows, the colour of the light - and the fittings themselves - remind you of an era gone by. The seats were new - KLM has constantly kept its older birds up-to-date with the seats and the in-flight entertainment systems - but the charm of flying on the Jumbo Jet was not lost at all.

The age of the airplane was apparent. We were delayed for an hour because one of the engine covers, which had been opened for servicing the General Electric CF6-80C2 inside, would not close. The lock had to be replaced, and we lost out takeoff slot. When we were ready 15 minutes later, fog had rolled in, shutting down the airport for another half-hour. We took off more than an hour late.

When we took off, visibility was still at about a quarter-mile, so when we were thundering down the runway, we couldn't see much past the parallel taxiway servicing the Kaagbaan. But we climbed past the top of the clouds pretty quickly, and immediately turned out over the English Channel.

We would be following a very northerly track to reach North America from Europe, which would take us well into the Arctic Circle. We would follow the English Channel until we reached the North Sea, and then turn west over the North Atlantic until we reached Greenland. We would only be over the ocean until Greenland, after crossing which we'd enter Canada over the Baffin Bay. Another few hours over the Northern Territories and British Columbia would see us enter US airspace over Washington, travelling almost due south, before crossing Oregon and reaching California.

The North Sea was but one giant slushie. The vast expanse of blue water covered with translucent ice floes was interrupted at constant intervals by oil rigs, a reminder of the fragile balance between the economic and environmental causes that are at odds over this region. In the bright sunshine, I could see far and wide, and follow a lot of other aircraft that would join us in crossing the Atlantic Ocean.

I decided to sleep once we crossed the western tip of Scotland, and woke up just as we entered Greenland. This was just as well, for Greenland was a revelation. There are many videos on YouTube recording Greenland from aircraft overflying the landmass of ice covered rock, but they don't come even close to experiencing the real thing.

Winter is approaching over the northern hemisphere, and Greenland was in a constant state of dusk. The sky was various shades of orange, pink and deep violet, and these colours were reflected, paradoxically in a slightly darker shade, on the white ice and snow below.

Things that I had only read about nearly 10 years ago - glaciers, which melted into rivers and the sea, icebergs which float about on the ocean, ice floes which break off the major ice sheets, and even entire ice sheets which fracture into two and decide to go on a vacation - I got to see all of them from 41,000 feet above sea level. With a strong tailwind, we were flying at almost the speed of sound, maintaining a ground speed of around 1,120 km/hr. But for nearly four hours, I got to enjoy a spectacle which I will not get to see for a long time to come.

Entering the United States

The sights from the air continued well into Canada, where the vast featureless Tundra gave way to snow-covered alpine trees covering tall mountains broken by snaking rivers. We soon lost sight of the rivers as a continuous sheet of clouds covered the ground as we glided south. The clouds were broken at regular intervals by the protruding snowy peaks of the Rockies.

In a few hours, we could see planes shooting out of the clouds and into the air, a sure sign that civilisation bloomed below. We descended sharply through the clouds turning around so that we pointed north. Through breaks in the white cotton, we could see bits and pieces of what was most certainly Silicon Valley. I could even identify the NASA Ames Research Center at Moffett Airfield by its distinctive hangar, little knowing that the Google offices I would end up spending the weekend at shared a boundary with it.

We finally dropped below the clouds over the San Mateo Bridge, and simultaneously, my jaw dropped through the floor of the plane into the bay below.

The San Francisco Bay was a vast lake, bordered by high mountains. These high mountains were covered by slate-grey rain clouds such that one could not see the tops at all. The bay itself was interrupted by small islands and underwater mountains whose peaks wanted to climb out into the great beyond. As my eyes wandered north, I could see skyscrapers peeking out from behind the hills, which were connected to other hills through bridges over the bay. It was like flying over the Great Lake into Hogwarts Castle, only that the castle was replaced by the city of San Francisco, which lay in great harmony with the natural beauty surrounding it.

The journey was yet to yield my greatest moment. After a very smooth landing at the airport which was eerily familiar to me courtesy of my misspent childhood - spending hours on Flight Simulator - after the business class passengers on the upper deck had disembarked, I was allowed to go up to the flight deck of the enormous aircraft. After a chat with the pilots - which was mostly me gushing about the 747 and them telling me what a pleasure it was to fly - the first officer got up from his seat and invited me to take it, and then we all took pictures. This is a moment I will never forget - and I cannot thank the flight crew and KLM enough for the opportunity.

First Impressions

After the flight - which lasted 10 and a half hours in reality, if only one hour on paper - I had to "request permission at the border to enter the United States." The Customs and Border Protection procedures at San Francisco International Airport took almost three hours to complete, and then I collected my bags - which had very kindly been taken off the belt and placed beside it by someone - and set foot in the United States for the first time in my life. I stopped for a quick chat with the ladies at the tourist desk - run by the Port of San Francisco - in the arrivals hall, where I collected a tourist guidebook with a lot of small maps to help me just in case I couldn't use Google's navigation features. Then, I took the BART from the airport to Powell Street, and then walked to my hostel just off Union Square.

After a stressful moment after I realised my credit card wasn't working - which included a few angry phone calls to the bank - and about an hour's worth of rest later, I put on my coat and scarf, took my umbrella and proceeded to walk through Grant Street to meet friends whom I only figured out lived in San Francisco after I landed there. Taking in the sights and sounds of Chinatown, I arrived where I was supposed to meet my friend - which was at a place known colloquially as Little Italy. I knew that the United States was a country of immigrants, but the amazing diversity in what was essentially a city small enough to explore only by walking was amazing.

We went to the Cafe Trieste, where I had some exquisite Americano while listening to a live music performance. Legend has it Francis Ford Coppola wrote the script for The Godfather sitting in this cafe. After a dinner of steak and accompaniments, my friends walked me back to the hostel, and I turned in for a full night's sleep. The day, which for me had lasted a little more than 43 hours, had finally ended.

Traipsing Around San Francisco

The first full day in the US started early. After waking up to a gigantic breakfast at the kitchen in my hostel's basement - and meeting a Spanish couple touring the world - I packed up, checked out, and turned to the street to explore all I could before I had to head to the party in the evening.

I turned east on Post Street and decided to walk as far as it would go. It took me past Union Square, the shopping district and by a lot of very interesting looking hotels in heritage buildings, before intersecting with Market Street and the financial district. Two blocks later, I hit the Embarcadero at the Ferry Building of the Port of San Francisco. I spent almost an half-an-hour there, looking around and taking pictures, before I went to a Starbucks nearby to hydrate. There, I met a nice lady who worked at the Port, who invited me to the reception at their office to collect more tourist information. I learnt how to use transfer tickets to travel all over the city for only $2.25, and figured out the bus and tram routes that would allow me to see as much of the city on the move as I could.

I wanted to go the the place below the Golden Gate bridge where they shot the scenes for the Hitchcock movie Vertigo, and asked the receptionist so. She hadn't seen the movie, but would not rest until she told me what I had asked and so asked every port employee she could get a hold of if they'd seen the movie. She finally found one such man, who told me to head to a certain place in Fort Point to find what I was looking for.

So I decided to take the tram to a place called Ghirardelli Square, which travelled through most of the Embarcadero all the way to Fisherman's Wharf. Then I took another bus to the intersection Van Ness and North Point, where I met another group of people from the Phillipines who also wanted to go visit the Golden Gate. We found a direct bus that would take us there, and in 15 minutes we were at the information center on approach to the bridge.

There's a dirt trail that descends the side of the hills to an embankment right on the bay. I descended the trail to the embankment and had a choice to make - to either walk all the way to Fort Point at the foot of the bridge, or to the pier on the other side where I could see the city and Alcatraz Island. I finally decided on neither - it was so incredibly beautiful just where I was, so windy, that I just didn't want to move. Waves would crash on the rocks right at my feet, and once in a while the spray would find its way to my face. Fog would randomly envelop the mountains on the Marin County side, and I would only be able to see half the bridge. Then fog would roll in and cover the towers, and then I could only see a road deck emerge from the hills behind me and disappear into nothingness. Then the clouds would decide it was time to haunt the city, and then the bridge would shine in all its orange glory in the bright sunshine while San Francisco was nowhere to be seen.

It was so beautiful, I just had to share the moment with my friend back home. Between looking around, exploring the trail, just staring at the spectacle and listening to the waves, and excitedly talking on the phone like a four year who was just being a four year old, I ended up spending nearly two hours there.


It was nearly two in the afternoon, and I had a party to attend in Sunnyvale at 6. So off I went. I took the bus back to Van Ness and North Point, walked back to the Ghirardelli shop and bought a whole bunch of chocolate - apparently it was World Chocolate Day and there were huge discounts - and then took another bus to the San Francisco Caltrain Station. There, I bought a ticket and ran to the platform with only a minute to spare - and found the station supervisor closing the gates to the platform. The train doors had already closed and I wouldn't be getting on that train. The next one was 47 minutes away.

I hadn't had much to eat since my massive breakfast, so I found a Subway at the station and had some lunch as I waited. After the platform doors opened, I found a coach that had a luggage rack to store my bags in, and then found a single seat on the upper deck, to enjoy the sights uninterrupted as the train travelled down the peninsula along the historic El Camino Real.

The train took just over an hour to reach Sunnyvale station, and I descended, 26 hours after arriving in San Francisco, to meet the people I would be spending the weekend with. After nearly two years knowing him only on IRC, I finally met Akarsh Simha (kstar), who was waiting for me at the station with his car. We had apparently met before at the OSI Tech Days conference in Chennai in 2009, but we didn't remember one another at all.

With all the excitement of meeting for the first time, the fifteen minute drive to the Aloft Santa Clara, where I would be spending the rest of my nights, seemed to be closer to fifteen seconds. I quickly checked in, found my room - with two double beds all to myself - and had a long, long shower. Getting ready for the party took me another fifteen minutes, and then we were ready to drive down to the Sheraton Sunnyvale.

We dispensed with the dinner as soon as we could, and descended upon the lawns in droves with our drinks to meet one another and "network", in Silicon Valley parlance. I met so many people, I completely zoned out and shrunk back into my shell, eventually being rescued by Valorie (Zimmerman, valorie, who was also there from KDE, as well as Alexander Semke). Eventually I spent the rest of the evening talking with Valorie, Akarsh, Joshua Simmons from Google OSPO, and Robert O'Connor (r0bby, from OpenMRS). By about 9, I was yawning so hard that Valorie sent me home to the hotel. I hit the bed and immediately slept.

The next two days passed in a blur. On my first day there, between the munching on the scrumptious food at the cafeteria at the ground floor of the TC4 building at the Google Tech Corners campus in Sunnyvale, I managed to attend sessions at almost every slot. The auditorium at the ground floor of TC6 - called Comic Con - hosted most of the sessions, with smaller discussions happening in rooms on the second floor of TC4. Some of the rooms could be reserved by sticking post-it notes on the schedule whiteboard kept near the reception, while some of the rooms were kept deliberately reservation-free so that discussions could be held on a spur-of-the-moment decision.

The "Chocolate Room", a tradition kept alive by the literally very colourful Robert Kaye from Metabrainz, was a spot frequented by many between every session. Every attendee is invited to bring a few bars or boxes of chocolate from whichever corner of the world they are coming from, and throw them on this giant round table in the room. Then, from the mountain of chocolate that inevitably results, everyone dives in and eats as much as they can. Over two days, more than 300 people couldn't bring themselves to finish this year's collection.

And then there were the tables full of swag from which we could take as much as we wanted and the piles just seemed to get bigger and bigger. There were t-shirts, notebooks, pens, badges, stickers, and more t-shirts. At one point, after Mary (Radomille, from Google OSPO) so very kindly dug up a t-shirt to give to my friend whose size was a little difficult to find, I helped her unpack a box of bags to take the swag home in. They disappeared in minutes.

I recorded a promotional video for Google Summer of Code, for which I got an amazing synthetic-fur-lined blanket. The cherry on the cake was, however, the wearable pun. They gave away a pair of socks, which they called the gSOCK. And they, in all their double-padded glory, are so incredibly comfortable - I spent more than 32 hours with them on, through my entire journey home. To cap the day off, Akarsh, Robbie and I drove back to the hotel the long way around, exploring much of the California State Route 237 and driving almost all the way to Milpitas before turning back towards Santa Clara.

The morning of the 30th - the second day - had a more sombre beginning. Thieves had broken the windows of five cars at the parking lot at the Aloft, and stolen things inside. One of the cars was Akarsh's. Most of the morning was spent sorting out the mess, before driving to a Home Depot and getting a sheet of plexiglass to seal up the broken window. The fact that the day was a rainy and windy one made it all the more difficult, and by the time we reached the venue and got some breakfast, the session I had proposed - on handling web spam - was almost over.

Sure that I had denied the interested people a session they were looking forward to, I ascended to the room 50 minutes into an hour-long slot to find that the attendees had just taken the topic and run with it. It turned out to be a very productive 10 minutes for me, and I walked out with the promise of KDE setting up a cross-project task force to combat web spam, which I will now be setting up.

The penultimate session was one on feedback on the programme cross pollinating ideas, where we discussed many things, including motivations for students doing a GSoC project, handling fraud from both students and mentor organisations - a particularly dirty instance of which was seen this year, and an issue somewhat close to me since a friend of mine lost his chance to participate because of this incident - and running publicity programmes in schools and colleges.

Robert Kaye decided to run an impromptu session at the cafeteria, sharing hilarious emails, funny and sad proposals by prospective students ("I would like to tell you that I don't have any GIRLFRIEND, which means I will focused on my project" - yes, with the world girlfriend in red, bold, uppercase), and interesting incidents which unfolded on mailing lists and chat channels.

And then, the event had to come to an end. We wrapped up with a final session at Comic Con, and then buses ran to both San Francisco International and Minẽta San Jose Airport with mentors who had timed their departures with the end of the event. We bade our final farewells, and then we set about putting plans in motion for our final night together in the Bay Area.

The Last Night

After driving Valorie to the Sheraton, we used the parking lot there to finally fix Akarsh's broken window, replacing the polythene sheets with the plexiglass and sealing it all up with bright red duct tape. In true engineering fashion, Akarsh and I then drove to Palo Alto, Akarsh gradually stepping up the speed, me observing the window for flutter and leaking wind. It held up all the way to 70 miles per hour, at which point we decided the job was done since we woulnd't be going much faster than that.

I finished up my Apple Store business in Palo Alto, and then drove to a restaurant to have dinner, where we met another KDE friend, Victoria Fierce (tdfischer), and her friend. We then drove all the way along Highway 101 to Oakland, where we finally met Marijn Kruisselbrink (Mek), Alex Spehr (blauzahl) and their month-old baby August. I played with her hair and managed to not break the baby, which is a huge win for me. It was a hilarious - and educational; did you know that $6 of the extortionate $8.75 BART ticket from the San Francisco Airport to the Powell Street station is a surcharge for all passengers crossing the border into Millbrae? - ride all the way through culminating in a very special evening.

After dropping Victoria and her friends off, we drove back to the Sheraton, first on the Interstate 880 before crossing over the 11.3km long San Mateo Bridge - the 25th longest road bridge in the world - back into Highway 101. Valorie, Akarsh and I used the ride to put shape to the events of the weekend, and cap it off with our final thoughts. We got back to the Sheraton at about 1, and while Valorie and Akarsh slept off, I repacked my bags to make it more weight-efficient before dozing off for one final time.

The 32-Hour Journey Back

The journey back home - I would be travelling to my home in Kolkata - promised to be epic, with four flights between five airports in three countries, and 32 hours between my take-off in San Francisco and my landing at Kolkata.

The amazingly charitable Akarsh, after having such a long and hard day, had decided to drop me off at San Francisco International in the morning, an act because of which I was able to get at least some sleep the night before the long journey home. A little after 5 in the morning, the KDE Slumber Party broke up, I bade my goodbyes to Valorie, and Akarsh and I left for the airport. It took us less then 40 minutes on the 101 to reach the airport.

I cleared TSA's security in less than 5 minutes at SFO, with no idea why Americans complain about the TSA being a giant pain in the rear to tolerate. The first flight was one to Valorie's home airport, the Seatle-Tacoma International Airport in Washington state. It was a Delta Connection branded flight, operated by Compass Airlines on a rickety old Embraer E175. I slept through most of the flight, missing the meal service and waking up just in time to catch sight of Mount Rainier as we descended into SeaTac. Dipping below the clouds, I was just able to catch a few glimpses of Tacoma, Seattle, the Space Needle and some of the Puget Sound before we were enveloped by a thunderstorm on our final approach. The E175 isn't a very big aircraft, and it was flung down on the runway without much effort by the weather gods. I actually braced for a crash landing, but thankfully it didn't come to that.

As I found out, the United States doesn't have exit control, which meant I wouldn't be getting a stamp on my passport at Seattle. I took the train to the remote S terminal, had a lunch of a Fiery Red Hamburger and Chilli Cheese Fries, and waited out the three-hour layover. I also bought some duty-free alcohol and chocolates as ordered by my friend, which wasn't immediately delivered to me; I was told it would be given to me while boarding.

As boarding time came, I climbed on board the 9 hour 10 minute flight, Delta 34, to Paris Roissy-Charles de Gaulle Airport. The weather had cleared up so that by the time we took off, I could get a good look at the Tacoma Narrows bridge from the air. I had a choice of two non-vegetarian options and a vegetarian one for lunch, and chose the chicken salad since I had had a pretty big lunch at Seattle. It was a mistake. The salad was a huge poached chicken breast on a bed of lettuce, berries, nuts and other vegetables. It was accompanied by really good cheese and crackers, a bread roll and a chocolate and sea salt brownie.

I had a window seat, but my legs had given up and was paining like I was having nails hammered into it. Thankfully, it wasn't a very full flight, and I was able to get an aisle seat in the exit row and have some space to stretch my legs while I tried to sleep.

The morning of November 1st came about, and we flew right over Edinburgh and London, before crossing the channel between Dover and Calais, turning east over Chantilly and landing at Roissy Airport. A quick chat with one of the flight attendants during landing confirmed that I was flying on an aircraft that used to belong to Northwest Airlines before the merger. We had managed to arrive nearly 45 minutes before the scheduled arrival time courtesy a very strong tailwind, which gave me more time to deal with anticipated problems passing duty free alcohol through security. As it turned out, that wasn't much of a problem, and I had managed to get to my departure gate - M45, Terminal 3E, within 15 minutes of landing. This is remarkably fast, since Roissy-Charles de Gaulle, with it's 3 terminals, with Terminal 2 being divided into 7 terminals 2A through 2G, and then 2E being sub-divided into the main concourse (hall K) and two annexes (halls L and M), is so big, it is a city in itself. Thankfully, I only had to get from one corner of Terminal 2E/M to the other.

My final long-haul leg had arrived, and it had already promised to be a memorable end to the journey, as I'd be flying on an Air France Boeing 777-300ER. Reviews consistently rated Air France as one of the best European airlines in terms of service, and the Voyager class one of the best Economy classes in the world. As it turned out, the plane I would be flying on - F-GZNT - was one of Air France's newest aircraft, barely a year old. It was also not painted in Air France's own colours, but the silver-and-blue SkyTeam livery, a much prettier livery. Star Alliance's livery is boring, and oneworld's livery pretty much sucks.

Thus began my 9-hour love-hate relationship with the French. Where the Germans and the Dutch were ruthlessly efficient, the French took their time in getting up, readying the gate, checking the passports and visas manually (even one security woman telling everyone to turn their passports to the visa pages, stopping and making sure everyone did so, while the person checking the passports had to manually turn back the passports to the biography page for Indian citizens), and then boarding the aircraft.

Stepping inside the Boeing 777-300ER, I was still taken in by amazement, even though I was by now very tired and longing for my bed at home. The 777 was consistently my favourite plane to fly in Flight Simulator, just because it was so impressively big while still flying on two engines, two very big engines, the General Electric GE90-115B being the biggest and most powerful in civil aviation. Stepping into the fuselage for the first time in real life, I was very pleased at how roomy the cabin was. The decor was a very welcome change from the boring - and very cramped - teal leather interiors of the Delta A330-200. On the Air France, the seats were suede, fabric and dark blue, perfectly matching the colour of my coat and jeans. The accents were red, again perfectly matching the colour of the shirt I was wearing.

I also noticed the uniform of the flight attendants were quite different. Underneath their coats, they weren't wearing plain white dress shirts, but a light blue top with big cartoony patterns in white all over. I later learned they have a name for this uniform - "Casual Chic" - and not only was it novel enough to catch my eye - because most of them weren't even wearing their coats through most of the flight, they looked like normal, friendly, approachable people you could probably have a quick conversation with, rather than, you know, flight attendants.

The safety video was hilarious. Who else but the French would tell you, "Whenever the seatbelt sign is switched on, your seatbelt must be fastened. It will elegantly highlight your waistline, while ensuring your safety." You can actually watch the entire video on YouTube from Air France's own channel right here!

Powerful as the GE90 engines are, the cabin was very quiet, even when the engines were at full thrust during takeoff. The takeoff was very graceful, and we gained height quickly. So quickly, that I had to close the shades to my window a few quick minutes after takeoff because the sun was shining hot and bright right into my eyes.

Air France serves Champagne, even to Voyager class passengers as an aperitif. Of course, I tried out some and it was very underwhelming. Champagne isn't really much better than carbonated white wine, even though the wine itself is probably a little less sour and a little more sweet. I imagine it would taste great with food, but on its own, it's not very special. It's a good drink, yes, but it doesn't really deserve the hype around it.

Lunch was a good meal, with chicken and mashed carrots and potatoes, a smoked salmon salad, bread, cheese and butter, crackers, sliced apples, and a pastry. I went to sleep for one last time, before waking up just in time to witness another stunning sunset over Baku, my second in two months. We had been following pretty much the same route I had flown while returning from Berlin, joining just east of Zürich, and flying right over Innsbruck.

After sunset, I couldn't sit anymore and spent the rest of the flight in the galley, standing and moving about, munching on snacks and chocolates and drinking ginger ale. I spent an entire hour listening to two sixty-plus Frenchwomen talking to each other, very animatedly, throwing their arms about all over the place. They put on expressions I couldn't hope to even come close to copying, and while I couldn't understand a single word of their conversation, it was the most amazing conversation I have ever eavesdropped on in my entire life.

The passengers exchanged jokes with the flight attendants, who exchanged jokes with the pilots when they came by for a quick stroll. Two seats ahead of my galley, a passenger was watching a French comedy with copious amounts of full-frontal nudity. The atmosphere on my flight was so chilled out, people could probably make out in the aisle and no one would bat an eye.

I love the French.

The flight landed half and hour before the scheduled arrival time at New Delhi, so early that its gate was still taken by an Air India 787-8 departing for Tokyo-Narita. We sat on the tarmac for a good 15 minutes before the plane docked at a gate, and I could exchange a quick Au revoir, bonne nuit! with the flight attendants before getting off the plane. Passport control took less than a minute to complete, but like always, I had to wait the better part of an hour for my luggage to arrive.

The journey wasn't yet over. After meeting my friends at Delhi and handing over the duty-free shopping ordered by them - and a big bag of swag that I had managed to get for another friend so that it could be shipped - I grabbed a quick sandwich and iced tea and headed back into the terminal to catch my final flight home. A long line at the Jet Airways counter meant that even thought I arrived at the terminal with more than two hours before departure, I checked in with barely 45 minutes to go.

It turned out that the Jet Airways Boeing 737-800 I was flying was brand new and had one of those Boeing Sky Interior lighting packages installed. If only Jet hadn't chosen to use it to colour the cabin bright indigo, I might have gotten some more sleep on the flight. As it turned out, it was a terrible flight. My entire row was empty, so of course a first time flyer had to come in and take the middle seat right next to me, make all sorts of weird noises, slurp his tea, move about on the seat and keep brushing against me. I harbour a lot of ill-will towards this man.

Kolkata is always nice about getting luggage to the belt fast, so 15 minutes after I landed for the final time, I was in the car being driven home by my father. At 5:30 AM, the second morning after I left Sunnyvale, I finally set foot at home.

And a 20-hour long sleep later (it turns out jet lag is quite possibly a thing if you fly 12 and a half hours worth of time zones to the east), I'm finally awake enough to attempt writing this story, if with a few mistakes. I know this is a very long read, and I can only hope that this is an enjoyable read.

And until the next time I am compelled to write, tschau!


As I write this post, I'm peering out of the window of a long pressurised metal tube hurtling through the air 39,000 feet above sea level, watching a mesmerising sunset as the plane passes over Baku. The sky has turned from bright blue to deep red to deep purple to pitch black in a matter of ten minutes. It is yet another 4 hours before the plane lands in New Delhi and the officials stamp my little travel diary signalling the end of the events of the last 7 days.

I'm still trying to make sense of the last week.

Perhaps writing this post will help me figure out how I almost made it without crying for a decade only to have to let the floodgates open on the flight back.

On the 31st of August, I left India for the very first time in my life, for Berlin, to attend QtCon and Akademy, the annual world conference of the KDE Community. I had expectations from the trip. I expected to finally put a face and a voice to all the IRC nicks I geeked out with over the last 2 years. I expected to attend talks that would blow my mind. I expected to eat some really good food. I expected to see a few things around the city.

All of that happened. And then some more. A lot more. I fell in love. With so many things.

The city. The cars. The roads. The public transport. The complete strangers who would always make eye contact, smile and say hello. The one time I was travelling on the U-Bahn well past midnight and ended up singing the cup song with two people whom I had never seen before and never will see again. The architecture. The sleepless nights spent walking all around the city exploring because we'd have events during the daytime.

Spending a week four thousand miles away from your daily life does make you think.

Is it just the first Akademy that turns you upside down, or is it every Akademy? Does it make a bigger impact on me than on others because as she put it, very emphatically, "You're still such a child!"?

I wonder what it will be like 10 years later. I may have a completely different life, a completely different career. KDE may be a distant memory for me. I may not even remember QtCon 2016 as a whole. But the first KDE e.V. AGM, the first time I stepped into the BCC and spent the entire day in the back office trying to get video recording to work. The time we dressed up and walked in the freezing cold to Checkpoint Charlie just because we felt so crazy. The last night before I left when she wouldn't let me sleep - "It's your last night in Berlin! It needs to be special!" - and then we went down to the East Side Gallery and couldn't get back because it was well past 2 AM and neither the normal buses nor the U- and S-Bahns were running. These will be permanently etched in my memory.

Thank you everyone who made this week so memorable for me. All these go out to different people - thank you for taking us to the Russian restaurant, thank you for grabbing hold of me one night when I had lost my phone and making me justify to myself why I even am in KDE, thank you for making it financially feasible for me to be there, thank you for dragging me down to the hotel with the aquarium, thank you for giving me so many reasons to be so incredibly happy to be there. Thank you for being so gosh darn energetic, infecting me with said energy and making me get by with 3 hours of sleep a night.

And last but by far the most, this is for you. You, the eyelid-batting, compulsive hair-untangling, soft-talking little bundle of joy. I have so many things to express to and about you, but words fail me. Thank you for all that you did, and did not. Thank you for completely decimating my blocks and filters. Thank you for making the best part of this trip not the fact that I was in a different country for the first time in my life. Please don't get lost :-)

Auf wiedersehen Deutscheland, und danke für alles!

KDE Infrastructure on DigitalOcean

KDE's server inventory is a mixed bag. We have a few physical machines that were donated to us. There's some sponsored colocation. We also rent a couple of big machines from Hetzner, divvy them up into smaller containers with lxc and host services there. Today, I can announce that we're adding droplets from DigitalOcean to that bag.

Not only would a full-blown cloud infrastructure on something like AWS be prohibitively expensive, our situation doesn't merit such an infrastructure. Our more powerful servers are dedicated as build slaves for our CI system, and a server with 32GB of RAM and dual-redundant SSDs with ZFS on Linux based storage is currently used for the code repositories, and will soon be used to host Phabricator.

We could, however, do with something in between cloud "compute" resources and a physical server that we manually manage, and DigitalOcean's droplets fit the bill right there. DO's droplets are small - we can dedicate a 1GB droplet to hosting websites, which would allow us to isolate web hosting from other services while not wasting resources we'd never use. They're also standard KVM machines, which allows us the level of manual control we'd like.

There are some additional aspects of using DigitalOcean that I like:

  • All our existing servers are either in continental Europe or the United States. DigitalOcean has datacenters in Asia that I'm particularly looking forward to making use of, to service our contributors from Asia Pacific (particularly India) better.
  • Depending on demand, we could bring up new servers or shut down existing ones at short notice. While we don't do something along these lines now, once we have the capability I could see us pre-emptivly adding temporary server capacity to handle high-traffic events, like a new Krita release.

But this isn't the best part of this post.

Once we realised we'd have some use for DigitalOcean's offerings, we went and asked them if they'd be willing to sponsor us under their programme for supporting open-source software projects. To our utter delight, they were very enthusiastic about supporting us and set us up with an account and a lot of free credits to start us out.

So in the next few months, expect to have KDE's existing online services to get more reliable as we add failovers, and new services to spring up as we start putting plans for the additional capacity into action.

Till next time!

Message Passing - Our Telegram-IRC Relay Service

Yesterday, we launched a service to relay messages between IRC and Telegram, and we're syncing 4 channels for KDE and 5 more for Kubuntu at this moment. The sync is two-way, so whatever people say on Telegram appears on the IRC channel, and vice versa. Almost everything works - almost being everything except that files and stickers shared on Telegram don't appear on IRC.

So here's a blog post about how we did it. An exclusive behind the scenes look at how KDE Sysadmin conducts their business, if you will.

Server Set-Up

The server that runs IRC services (a bouncer, bots for Zabbix, Bugzilla etc.) is an LXC container running Ubuntu 14.04.4 LTS. We don't use docker or other application container services to virtualise apps - since we run such a diverse set of services written in different languages on the server, we just confine apps to their own users, and try to keep the dependencies confined to the user as far as possible.

To run the Telegram-IRC relay, we chose to use TeleIRC. TeleIRC fits our bill perfectly. It has all the features we want. It's also written in JavaScript, which means it comes from the same community that brought us examples of groundbreaking engineering such as left-pad and is-positive-integer. Isolating this service from the rest of the system is critical, at least from a security perspective.

Step 1: Node.js

Ubuntu 14.04.4 LTS carries Node.js version 0.10 in its repositories. It's too old and won't do, as we found out much after actually installing teleirc, because npm won't complain when you're installing but teleirc will refuse to start because os has no method homedir().

So we'll have to manually obtain a current version of Node.js. Thankfully, we can use the Node Version Manager to obtain a binary build of a current version of Node.js directly from the Node website.

Start with a fresh user - let's call it teletubby - and log in. Because it's Node, the "recommended" method for installing nvm is by curl-ing a script and piping it to bash. It's an idea that's brilliantly simple and has provably zero security flaws. Of course, because we're KDE and we like to do things the hard way, I decided to forego this easy install procedure and do things manually:

teletubby (~) $: mkdir TeleIRC
teletubby (~) $: cd TeleIRC
teletubby (~/TeleIRC) $: git clone

At this point it'll clone the nvm repository to ~/TeleIRC/nvm. If you're feeling particularly adventurous, you can use this as-is (using the current master), but I like to stay on the stable branch. nvm's repo makes that easy - all you need to do is to checkout the latest stable tag:

teletubby (~/TeleIRC/nvm) $: git checkout `git describe --abbrev=0 --tags`

At this point, you'll need to add the nvm set-up script to your Bash profile, so add the following lines to ~/.profile:

export NVM_DIR="$HOME/TeleIRC/nvm"
[ -s "$NVM_DIR/" ] && . "$NVM_DIR/"

Log out and log back in (or start a new login shell), and you should be able to use the nvm command right away.

You'll actually have to install a version of Node.js now. The current LTS branch of Node.js is the v4.4 branch (the current release as of writing is v4.4.4). You can do:

teletubby (~) $: nvm ls-remote

to see what versions of Node.js are available for you to install. To install the 4.4 branch, just do:

teletubby (~) $: nvm install v4.4

And when it's done installing, run node to make sure you get a Node.js prompt.

Step 2: Telegram Bot and IRC Account

To get the Telegram Bot account, you'll have to talk to @BotFather.

Start by asking for a new bot:


BotFather is pretty conversational. It'll first ask you for the full name you want to give to the bot, and then an username. Our service is called KDE IRC Relay Service, and the username is IrcsomeBot. Note that your bot's username must end with either bot or _bot.

Once you give it a full name and an username, it'll give you an API key. Keep this key secure. If you lose it, you can generate a new one, but make sure it's never compromised.

To let your bot see every message that's said in the group (so that it can read the messages and relay them to IRC), you'll have to disable privacy for the bot:

<Me>: /setprivacy
<BotFather>: Choose a bot to change group messages settings.
<Me>: @IrcsomeBot
<BotFather>: 'Enable' - your bot will only receive messages that either start with the '/' symbol or mention the bot by username.
<BotFather>: 'Disable' - your bot will receive all messages that people send to groups.
<BotFather>: Current status is: ENABLED
<Me>: Disable
<BotFather>: Success! The new status is: DISABLED. /help

Note that to denote the channel now, we're using the notation @username, not just username. We'll prefix the username with the @ sign everywhere we want to refer to the bot from now on.

All the essential Bot account set-up is complete, so it's time to move on to the IRC account creation. This differs from IRC network to IRC network, but for Freenode it's pretty simple. Start by picking a nickname that your bot will use, logging on to with any IRC client as said nickname, and running the following command at the server window:

/msg NickServ REGISTER password [email protected]

You'll get an email from Freenode with another /msg command you'll need to type to confirm your registration. Do that, and you're done.

Step 3: TeleIRC

Once node is up and running, and you've got your accounts, it's time to install TeleIRC.

Installing TeleIRC is incredibly easy. Just run:

teletubby (~/TeleIRC) $: npm install teleirc

And check that ~/TeleIRC/node_modules/teleirc/bin/teleirc exists. At this point, you might want to add $HOME/TeleIRC/node_modules/.bin to your PATH environment variable, so that you can run the teleirc command without prefixing it with a path.

The first thing to do is to generate a configuration file, and edit it. Generate the sample config by running:

teletubby (~/TeleIRC) $: teleirc --genconfig

This will create a sample configuration file and drop it at ~/.teleirc/config.js. Edit it with your favourite text editor. It's well commented, so you shouldn't have any problem setting things up. The Telegram API Key goes into a variable defined near the top of the file, and the IRC settings go towards the bottom.

For Freenode, the default IRC config generated doesn't have spaces for a nick and a password, so refer to the snippet below for what to set:

config.ircOptions = {
    userName: 'FreenodeUserName',
    realName: 'The Real Name',
    nick: 'yournick',
    password: 'yourpassword',
    port: 7000,
    secure: true,
    sasl: true

Freenode allows SSL connections over port 7000, and you'll need to have SASL enabled because otherwise TeleIRC won't be able to authenticate your nick and password.

Of course, don't forget to actually set up the channel-group mappings.

Once you're done, start teleirc by running:

teletubby (~/TeleIRC) $: teleirc

Nothing should bomb, except a bunch of warning about chat_ids not being found. That's not an error. Now just go to every group where you want the bot to be present, add the bot's username and say something. The relay should just start working.

Step 4: Running Forever

It turns out you can actually do this without messing with your init scripts. All you need is another npm package called forever, and Cron. Yes, Cron.

Start by installing forever:

teletubby (~/TeleIRC) $: npm install forever

Check if it runs:

teletubby (~/TeleIRC) $: forever start `which teleirc`
teletubby (~/TeleIRC) $: forever list

You should see a table with an entry for teleirc, along with a path to the log file, which you can cat to read teleirc's output. The entry should also have a number associated with it (0, if it's the only service running). You can control it by running:

teletubby (~/TeleIRC) $: forever restart 0   # to restart the service
teletubby (~/TeleIRC) $: forever stop 0      # to stop the service

Once you've verified that things run, and you can control the process, it's time to make sure that the service runs at system start. Start by creating a script with the following content:

forever start `which teleirc`

Then, run:

teletubby (~/TeleIRC) $: crontab -e

Your text editor should open with a crontab file. You'll need to add one line to the bottom:

@reboot /full/path/to/your/start/

And make sure that the cron service is enabled. That's it!

In Conclusion

So the service is up and running, and any KDE IRC channel that wants to be mirrored with a Telegram group just needs to file a Sysadmin Task on our Phabricator instance.

I hope this helped you out if you're looking for ways to bridge your IRC and Telegram channels together. Until next time!

Summer Is Coming

It's been a long time since I blogged - it's already nearly 5 months into the year and I haven't put any words to the keyboard yet - and I have a metric tonne of things to share.

I'll just jump right in.

CKI was a hoot and a half this year. The Lakshmi Narayan Mittal Institute of Information Technology - in Jaipur - hosted India's very own Akademy in the first week of March. Because I stay just two hours away from Jaipur, I just had to be there, and so proposed two talks. By February both had been accepted, and it suddenly dawned on me that a year after starting to contribute to KDE I'd finally meet some of the people - whom I only knew from their IRC nicks - in person.

CKI turned out to be a mixed bag for me. Both the talks went incredibly well. Or so I hear - I was drugged out of my mind because I fell ill the moment I reached the venue. My memory of the event is just limited to the talks themselves, a hurried photoshoot (because the sun was very very roasty), and a visit to the medical center on campus where they confirmed I had an elevated blood pressure, a temperature of 104.5 degrees Fahrenheit, and a racing pulse. Of the two and a half days I spent giving talks and meeting so many people, I seem to remember only 3 hours worth of events. Which is surprising, since I only slept for a total of 3 hours over the entire weekend. Yes, I had insomnia too, because the fever and the hypertension clearly weren't enough.

Quick change of plans, an early morning double-decker train ride to Delhi, a last-minute first-class ticket on the Calcutta Rajdhani Express, and post-event I race home to get checked by specialist doctors. It turns out I have a pretty severe upper respiratory tract infection. I live to tell the tale.

Sagar, Shivam and co. put together an incredible event though, worthy of every single bit of praise you can throw at them. There are pictures. Lots of them. Here.

Server Love

I managed to get a ton of work done on the Sysadmin side of KDE.

First, we managed to kill of for good. It used to run ChiliProject - which has been discontinued and no longer provides security updates - and used to be a constant source of headaches for the syasadmins, with the seemingly endless HTTP 500 ISEs we'd generate. After it went down in the middle of CKI - and resulted in a few embarrassing moments in the middle of talks - we decided it had to go.

One of projects.ko's more important features was that it would generate an XML file with metadata about all of KDE's projects that could be used by multiple teams: the CI guys to do automated build testing, kdesrc-build to build KDE projects from source, the i18n guys to properly map translation branches and so on. So when I was at home recuperating from my infection I wrote a set of scripts that generated this data from another source - the sysadmin/repo-metadata.git repository - that we set up just for this purpose. The first weekend after I returned to college, Ben and I killed off projects and replaced it with our homebrew solution. It worked at the first try.

Of course, with my college blocking SSH I had to use scm as a jump host and that let to another set of funny things - but that's another story.

Killing projects wasn't enough though - kde_projects.xml is a gargantuan file that takes nearly 10 seconds to generate, and drains a lot of bandwidth. So I started working on an API service that should replace it, and I hope to get it finalised over the summer.

Finally, we finished the minimum required feature-set for Propagator (for KDE's purposes), but we're pushing to make it a fully featured product that other folk could use too. One of my CKI talks was centered around Propagator, and spoke of what's next. And this brings me to the next topic.

Google Summer of Code

KDE, as usual, is participating as an organisation in Google Summer of Code this year. Sysadmin got lucky this year - of the 37 slots that we got from Google, we were able to devote 3 to Sysadmin.

One of those slots is going to be for a project which I'll be mentoring. The project is a mish-mash of stuff to improve things on the Sysadmin side - but most of it is centered around making incremental improvements to Propagator. I'm excited to be able to work with Priya Satbhaya on this. Ubuntu 16.04 LTS is here, I have very few things left to take care of on the Ops bit of DevOps, and Priya will take care of the Dev angle. At any rate, we should be able to start dogfooding Propagator mid-July onwards.

I'm also mentoring a second project, and that project excites me for a different reason. The project is based around adding a staging area for doing file operations on discontinuous selections in Dolphin. I'm excited about this because it'll be a terrific feature to have, and because I know nothing about Dolphin's codebase myself. This is going to be very different mentoring experience for me, because with Arnav Dhamija I'm going to be learning from my student, not the other way round. Of course, I have Pinak to help me out, and the entire 3000+ strong Kommunity to help Arnav out with advice on code. I have my hopes set pretty high on this project too.

My Summer Plans

Finally, I have some summer plans of my own. I'll be based out of Gurgaon during June and July, working as a DevOps Engineering Intern at 1mg (formerly HealthkartPlus), where I'll be working on tests and deployment automation, and other challenges that crop up while I'm around.

And because I'll be in the Delhi area and making some bucks, I hope to be able to take a few holidays. I really want to ride on the Gatimaan Express (India's only 100mph train) and see Agra afresh. I may also probably pop over to Landour-Mussourie and try to meet Ruskin Bond. Much of my sanity in my misspent childhood was preserved only by reading his stories, and trying to write in his style. I want his autograph.

So I guess I've written enough now. It's 5 AM IST, and I should get some sleep. Until next time!