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.

Google

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!

Up In The Air

I still remember the very first time I flew. It was a hot March morning in 2002, when I bid goodbye to Kolkata and prepared to come face to face with the noisy little winged creatures that used to fly over our home. Jet Airways's flight 9W 201, which would leave Mumbai at 6 in the morning and be in Kolkata by 9, would take on more passengers and leave for Guwahati at 9:55. It would be at the Lokopriya Gopinath Bordoloi Airport at Guwahati by 11 AM.

Gate to gate, the flight would last an hour and five minutes. It would spend fifty of those minutes in the air. In about a month, I'm going to be travelling halfway around the world, spending nearly twenty hours in the air across two flights.

A lot has changed in these twelve years. Both in the airline industry, and in me.

In the two years that we lived in Guwahati, we used to make a round trip to Kolkata every two months or so. 9W 201, and the return flight numbered 9W 207, had almost become buses that we'd just turn up at the airport, buy tickets and board. In those days, fares always remained constant (Indian Airlines began toying with "apex fares" - dynamic fares set according to demand - sometime in the beginning of 2003). I've never flown anything other than economy class, and in those days, even economy was a treat.

Now in 2002, I was eight years old. I was pretty small, too small to make a meaningful comment on legroom. But the seats were cushy and very comfortable, and just after boarding, flight attendants would come over with a wicker basket full of all kinds of candy, and cotton balls for the ears, and I could help myself to a fistful. I still have some of the bags that I had collected courtesy of the JetKids programme - where every "kid" would get a bag of some sort full of goodies. They were pretty big bags.

Even the cutlery was unique. The spoons and forks were plastic, but they were blue and engraved with floral motifs. They would always have a special small spoon for the pudding, with the Jet Airways sun on the other end of the handle. The main course itself would come on an oval tray, with a semi-transparent amber rim. I will admit to haveing taken a few of them home.

Oh, and the yellow roses. Every desk or table in a Jet Airways city office would have a bouquet of yellow roses. I still love yellow roses. I'm not one to buy flowers, but if I ever saw a florist selling yellow roses I would definitely buy a few.

Flying is still fun. But in the days of old, the holiday began at the airport. Now it begins after landing.

Back in the day, I used to be dressed in my Sunday best when flying. I used to have a bow tie, which was standard flying attire, and I was apparently a huge success with the flight attendants, who would greet me in their widest smile and their best singsong voice, and I would greet them back in the exact same tone, with much teasing from my father to follow. These days, by force of habit I still dress somewhat formally for flights, but I cannot remember the last time I've ever made eye-contact or exchanged words with a flight attendant, except for when they're serving meals.

Back in the day, I would be too excited to take my eyes off the outside. These days, on many flights I just lean against the window and sleep.

Back in the day I used to look forward to meal services on the flights. Now I eat at home or at the airport, and don't buy anything on board. On the few long-haul flights I've been on, where they serve meals, I've had to make multiple trips to the galley to fill up on snacks, just because the quantity of food served in economy class these days leave the stomach wanting so much more.

Everything today is minimal and measured. Niceties that we would expect to experience only a few years ago are now reserved only for the people who can pay through their nose. In the old days, much was written about the romance of air travel. I've been fortunate enough to live through the twilight period of the golden age of air travel, and I miss every single bit of it.

But then all of the above is true for almost every other aspect of modern life as well.

Modern life.

Akademy

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!

Shell One-liners to Generate Random Passwords

I've been on the lookout for ways to generate random passwords from the shell. One of the ways to do that, as I've learned from people, is to run the slappaswd utility a couple of times, get enough random output, and then just concatenate them together to form a long enough password. Crude, but suffices, until you realise that the slappaswd utility comes from OpenLDAP and you'd rather not pollute your computer with that filth. What next?

These passwords aren't for to be remembered by humans; I'd probably store these passwords in an encrypted text file and just copy-paste them wherever they're required. So they can be completly random. This makes our job so much easier.

Entropy

The first step to generating a random password is to get enough entropy. Fortunately, on Linux and most *NIX systems, you'll have either /dev/random and /dev/urandom to help you along. Just start by dumping enough bytes from it into stdout.

Something to take note of though - historically, /dev/random used to be a source of completely random bytes captured from the environment, electrical noise, system events, etc., and /dev/urandom would be a pseudorandom number generator that could either be cryptographically secure, or not. That difference has blurred somewhat these days, and you should consult the documentation for your operating system to see where those bytes are coming from.

You can use something like Haveged to inject more deterministically generated entropy (yes, I get the irony there) into the system.

First Shot

Once you've decided on a source of random bytes, the password generation is simple - just get enough bytes, and convert them into an ASCII string. The best way to do that is to simply base64-encode raw bytes, like so:

$: dd if=/dev/urandom bs=32 count=1 2>/dev/null | base64 -w0
4QK3nyD+ONf1ZnubDOYlZ9a4qI9CBYT5TWUrcc24YJY=

This is as simple as it can get - read the PRNG (/dev/urandom) with dd, get 1 block (count) of 32 bytes (bs), redirect stderr to /dev/null to suppress dd's status report, and base64-encode the resulting output. The -w0 switch is to prevent base64 from inserting newlines in the output after every few characters (the default is 76 characters).

Although having symbols in your password makes it more secure (more possible characters to choose from when brute-forcing the password), it's possible to remove the non-alphanumeric characters in the password. Just pipe the output to tr, like so:

$: dd if=/dev/urandom bs=32 count=1 2> /dev/null | base64 -w0 | tr -cd "[[:alnum:]]"
AB7qAV5bnDZb4Q0QydQFVFyuMmU7UsZDWn2dvwY0bKs

I really recommend you just use the first example, and increase the bs value given to dd to get longer passwords. However, you might want to get fancier, and because it's shell, there are ways to.

Entropy, Redux

You might want to have relatively short (30-60 character) passwords that are generated from massive amounts of entropy, say over 8 kilobytes of random data. While this is overkill, you could actually do it by throwing a hash function into the mix.

Here's what the pipe would have to do:

  1. Get a massive amount of random data and dump it into stdout, possibly with dd if=/dev/urandom bs=8192 count=1.
  2. Hash that data to reduce the number of bytes in the output. You shouldn't really think in the direction of MD5 at all - choose between sha{1,224,256,384,512}sum, and strip all extra data from the output
  3. The standard sha*sum commands output the hex digest of the hash bytes, so you'll have to convert them back into raw bytes.
  4. Now just run base64 to encode the data, and pull out the symbols if you want to.

Now I'm not sure about what the math will look like here, but something tells me this extra effort is pretty much useless. 32 bytes of purely random data will require the same brute-force effort to crack as 32 bytes of hash generated from 8 kilobytes of purely random data. In any case, I've outlined the pipe below.

Password Generation, Redux.

I'll explain the pipe in bits.

First, the hash. I'm going to use MD5 to demonstrate here because the hashes are nice and short, but you should never use MD5 in practice because the hashes are nice and short.

Here's how the ouput of the md5sum command (and all the sha*sum commands) look like:

$: echo hello | md5sum
b1946ac92492d2347c6235b4d2611184  -

You have the hash, followed by a couple of spaces, and then the filename. Since it's reading from stdin, the filename is simply -.

To get just the hash, pipe it to cut, like so:

$: echo hello | md5sum | cut -d " " -f 1
b1946ac92492d2347c6235b4d2611184

You could just base64-encode this string, like so:

$: echo hello | md5sum | cut -d " " -f 1 | base64 -w0
YjE5NDZhYzkyNDkyZDIzNDdjNjIzNWI0ZDI2MTExODQK

Notice that there are no symbols in this string? That's because you're encoding bytes that are already alphanumeric, and base64 encodes alphanumeric ASCII values to alphanumeric ASCII values.

Another way to do this would be to convert the hash into its raw bytes, and then base64-encode that. You'd get a shorter password (half as many characters; hex-encoding a byte takes two bytes), but you'd get symbols. You'll be trading password length for a bigger alphabet space.

To convert the hash to raw bytes, you can use Perl, Python, shell builtins, sed and what not, but the simplest way is to simply use xxd, a command that comes with vim. Here's how to base64-encode the raw bytes of the hash:

$: echo hello | md5sum | cut -d " " -f 1 | xxd -r -p | base64 -w0
sZRqySSS0jR8YjW00mERhA==

And that's basically it. Use a longer hash function and some actual random input, and you're done:

$: dd id=/dev/urandom bs=16384 count=1 2> /dev/null | sha384sum | cut -d " " -f 1 | xxd -r -p | base64 -w0
OLBgp1GsljhM2TJ+sbHjaiH9txEUvgdDTAzHv2P24donTt6/529l+9Ua0vFImLlb

Shell Shortcuts

To make this easier, you can just create a small function and put that into your ~/.zshrc or ~/.bashrc. This is what I've got:

function genpasswd () {
    local RPASSWD=$(dd if=/dev/urandom bs=$1 count=1 2> /dev/null | base64 -w0)
    if [[ $2 = "-n" ]]; then
        echo $RPASSWD | tr -cd "[[:alnum:]]"
    else
        echo $RPASSWD
    fi
}

This function takes one mandatory argument, and one optional one. The first argument is the number of random bytes you want, and the second is -n if you want symbols to be stripped. Works like so:

$: genpasswd 32
XAXVnxe6UoigD1oSyaGFPGGqhkaJdZtTcIWGW1kJQQU=

And if you want no symbols, then:

$: genpasswd 32 -n
uwhCmpnfG6ELBT7j8QOzk2wqFa8S3JUH8Fq2fIDCLY4

Fun?

Till next time!

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!