Seljavallalaug: A Hidden Swimming Pool in South Iceland

Iceland is, hands down, one of the most beautiful places that I’ve visited.  And, while there are a number of great natural wonders along the so-called “Golden Circle” route, I enjoy taking the less-touristy far-southern route along the coast on the Highway 1 ring road.   There are a number of beautiful hidden gems that used to be truly off-the-beaten-path but, with wonder of the Internet, they have become much more accessible to all.  One of those sites is Seljavallalaug, one of the most beautiful man-made swimming pools in the world.

Seljavallalaug is not the easiest place to get to, but it’s not difficult either.  Your main risk is a plunging your feet into some freezing water, depending on the time of year, or maybe slipping on some rocks.  And, thankfully for prospective visitors, it’s now marked accurately on Google Maps:

Screen Shot 2014-01-04 at 4.08.18 PM

Seljavallalaug is located about 150km from central Reykjavik. The drive is choked full of scenery.    If you wanted to, you could pull off every 10 minutes to take photos of something new and amazing:  beautiful views of the water, an active volcano, cute little houses or seemingly infinite fields of flowers:

IcelandPool  430

To get there, you must pull off onto an access road that leads to a farm.  From there, it’s about a 20-30 minute walk to the pool, depending on the time of year and the flow of water in the mountain stream and river that protect the area.  When you start walking toward the valley that contains the pool, you’re greeted with an amazing world all around you.

IcelandPool  431

As you continue walking down the path, you’ll notice that there are waterfalls as far as the eye can see.  I can only imagine how many there are during the spring thaw.

IcelandPool  432

You’re then greeted with a small stream, followed by a small river.   You can probably make it across the stream by hopping on rocks, if the water level is low.  Be aware, though, that even in July, the water temperature was freezing.  You can see the small river in to the left of me:

IcelandPool  433

At this point, you have two options:  Wade across the cold river or turn left and take the rockier route, which is more dangerous.   I chose the latter, which wasn’t too bad at all.

IcelandPool  435

As you make it across and around into the valley, you see the pool from a distance:

IcelandPool  437

It’s basic, to say the least, as are the rudimentary changing rooms.  The facility isn’t maintained by anyone, except for the one time a year that locals come out and scrub the algae down off the walls.  The water, however, is crystal clean and warmed by geothermal heat, as most of Iceland’s water is.  If you’re lucky enough to get some time to yourself, the entire experience is just serene:

IcelandPool  438

Sit back, relax and enjoy the scenery…

IcelandPool  439

Finally, a few tips:  Bring a change of socks and shoes in case your feet do take a plunge into the river.  Also, a pair of flip-flops are nice to have when walking around the pool area and dressing rooms, which are covered with dirty and algae.

Is it worth it?  Undoubtedly.

National Day 2011: Tiananmen Square, Forbidden City and Beijing, China

I am always amazed by the variety of impressions that I hear from foreigners who have visited Tiananmen Square. My friend recently called a winter day’s visit “creepy”, while another said that it was an “uncomfortable place”, given the atrocities that occurred in June of 1989.   On the other hand, others find it fascinating and few hours exploring the adjacent Forbidden City is is a must-do on any tourist’s agenda.  Due to the Chinese government’s (fairly successful) effort to surpress the recent history of the place, most Chinese citizens are oblivious to what occurred there over twenty years ago and, on National Day, especially, the area is filled with endless signs of loyalty and patriotism.

October 1 is the day that China celebrates the formation of the People’s Republic of China, dating back to 1949.   It is also the start of one of two Golden Weeks in the PRC, marking a week of vacation for Chinese nationals.   On National Day, thousands of Chinese flock to Beijing, Forbidden City and Tiananmen Squire, happily posing for photos, waving Chinese flags and celebrating amongst the red lantern-decorated public spaces.

National Day 2011 - Beijing

National Day 2011 - Beijing

National Day 2011 - Beijing

National Day 2011 - Beijing

National Day 2011 - Beijing

National Day 2011 - Beijing

National Day 2011 - Beijing

National Day 2011 - Beijing

National Day 2011 - Beijing

National Day 2011 - Beijing

More photos can be seen in my Flickr photo set.

Shanghai’s French Concession: In the Rain

One of my favorite sections of Shanghai, the French Concession neighborhood, is a bit of an oasis in the sea of modern, cramped high rises that now makes up nearly all of the city. It’s low-rise buildings and twisted alleyways hide galleries, unique merchants and relaxing cafes. A few modern shopping malls have managed to pop up here and there, but they pale in comparison to the glitzy, ultra-luxe structures that that now populate other areas, such as Xintiandi, and don’t do much to intrude on the neighborhood’s charm.

The area was once controlled by the French, as the name implies, and has remained largely unchanged in the decades since it was turned over to the Chinese government.  Through the years, it has served as a hub for people of many national origins, including French, British, American and Russian and also served as the center for Catholic activity in Shanghai.    Seemingly unlike the rest of the city, the government has imposed numerous development restrictions on the area in order to maintain it’s uniqueness and character.

In the rain, the crowds are scant and the area is still very much enjoyable.  Some of the shops occupy the entire ground floors of buildings, while others are slightly bigger than a few large closets’ worth of space.  At night, you can find a number of interesting bars and restaurants ranging from local haunts to expat hangouts.

In an area that is meant for strolling, the rain can be an annoyance but, in this case, I think it just adds to the character of the neighborhood.

Rainy French Concession:  Shanghai

Rainy French Concession:  Shanghai

Rainy French Concession:  Shanghai

Rainy French Concession:  Shanghai

Rainy French Concession:  Shanghai

Rainy French Concession:  Shanghai

London New Year’s: A Rare Tourist Experience

I have worked and/or lived in London off and on for the past 8 years and this year, in particular, I spent a significant amount of time in this wonderful, gray city (more than 80 days this year). So even though I had just attended a week of meetings earlier in the month, followed by my European-based Christmas party a few weeks later, I was crazy enough to hop back on a plane and spend the extended New Year’s Eve weekend on the Thames.

Although I do get around to quite a bit of exploring from time to time, I forgot what it was to be tourist in London.
(Not too surprising, though: I often forget about the fun “touristy” stuff in in New York City, even though I’m looking at the Empire State Building as you type this). Weakening dollar aside, New Year’s Eve five hours ahead of home was something I won’t forget.

These photos are all part of my Flickr set entitled, London New Year’s: A Rare tourist Experience.

London New Years 2007-2008

London New Years 2007-2008

London New Years 2007-2008

London New Years 2007-2008

Exploring Brazil, Part One of Three: Rio de Janeiro

Brazil 2007   135.jpg Brazil 2007   167.jpg Rio de Janeiro City Skyline Brazil 2007   153.jpg

Those of you who regularly read my travel writings know that I’m rarely at a loss for words, but when it comes to Brazil, I have to be honest in saying that I have a challenging time figuring out how to capture the wonder, beauty and culture of Brazil in only a few short paragraphs and photos. I must say that Brazil is one of the most unusual places that I have ever visited in the world – it’s culture incredibly diverse, it’s landscape both naturally beautiful and tremendously urban and its people wonderfully varied and warm. My trip this November spanned three areas of the country, each of them exquisitely unique: Rio de Janeiro, the most well-known capital city of the state with the same name; Buzios the almost-European resort town about 3 hours north of Rio; and Salvador, the diverse, African-influenced city about two hours north of Rio by plane.

Since there is so much to write about, I will be breaking this trip up into three entries, this first one recounting my trip to the city of Rio de Janiero.

Port of Call: Rio de Janeiro

Niterói, RJ, Brazil
A couple sits on the edge of the bay of Niterói, looking across to the city of Rio de Janeiro with Christ the Redeemer perched on the mountain top above.

When traveling to Brazil from the United States, almost all flights come directly into Rio de Janeiro or Sao Paulo, Rio being the primary tourist destination and Sao Paulo being the commercial and business hub. I once had a business colleague refer to Sao Paulo as “the biggest city you will ever see, outside of China”, which, technically, may be correct, as the central city population outnumbers New York City by about 2 million people (The entire Sao Paulo metro area actually numbers 19+ million people, which makes it the largest city in the southern hemisphere). Thankfully, however, the city of Rio de Janeiro is dwarfed in size with a “tiny” population of only about 6 million people (expanding to about 11 million when you take the greater metropolitan area into account). The city of Rio de Janeiro is the capital city of the Brazilian state of the same name and was the country’s capital until the government picked up and moved to the planned city of Brasilia back in 1960. Today, the city is best known as the primary tourist destination in Brazil, and is home to the famed beaches and neighborhoods of Copacabana and Ipenema beaches. (Note: For simplicity, I will further refer to the city of Rio de Janeiro as, simply, “Rio”, unless I explicitly note that I am referring to the State of Rio de Janeiro. Also, I have to apologize to Brazilian and Portuguese readers, as I will often jump back and forth between the English and Portuguese spellings of some words and often neglect to use some of the correct accents.)

Brazil 2007   145.jpg
Birds eye view of the Rio Coast (Sugarloaf in the background)

Rio’s airport is located about 25 miles from the tourist beach areas of the city. On any given day, that ride can take you 30 minutes to two hours. In the case of my arrival, a critical central tunnel was closed due to mudslides a few days prior and my taxi driver was forced to hug the coast of the city during morning rush hour, which resulted in a 2 hour trek from the airport to my hotel (thankfully, the tunnel was re-opened about 9 days into my trip). Licensed taxis in Rio are plentiful and relatively cheap for short journeys, but cab drivers tend to take their own liberties with their routes and many will take advantage of an unsuspecting tourist. At the Rio airport, you have the option to purchase a fixed-rate journey when you arrive, which will cost you about $40 to the beach areas. This is more expensive than a metered cab in moving traffic, but can give you some piece of mind that you won’t be taken advantage of and won’t be a victim of the meter if you are in slow traffic (as in my case). Alternatively, you can walk out into the front of the airport and ask for a fixed rate, which can often be lower than what you would pay inside the airport.

(A note about currency: In this entry, I quote most prices in US Dollars. At the time of my trip, 1 US Dollar was equivalent to about 2 Brazilian Reals. In cases where I quote Brazilian Reals, I’ll usually explicitly note it and use the R$ symbol, e.g. R$25.)
Where to Hang Your Hat

Most tourists rest their heads at the hotels that line Copacabana, Ipenema and Leblon beaches. Ipenema and Leblon beaches are adjacent to each other, separated by a small canal which splits them in half, while Copacabana is adjacent to Ipenema. A walk from the extreme end of Leblon to the start of Copacabana takes about 40 minutes or costs about $5 in a taxi. Taxis in this area are plentiful (I don’t think I ever waited more than 2 minutes, regardless of the time of day or night) and are quite reasonable in price. It’s a good idea to check your map first, if you’re not familiar with the area, as some taxi drivers may look to take advantage of a tourist, as was the case one evening when a driver took me on a joy ride through Ipenema and Copacabana, even after the initial protest by my Portuguese-speaking companion (end result: it cost me about R$4 extra).

The famous beaches of Ipenema and Copacabana line these parts of the city end-to-end and are frequented by locals just as much as they are by tourists. All beach-facing hotels in these neighborhoods are across the street from the water and there are no private beaches – in Brazil, all beaches are federal property. The only hotel actually on the beach is the Sheraton Rio Hotel & Resort, which is where I stayed for the duration of my visit. This hotel is at the extreme end of Leblon and requires a taxi to access most parts of the city, however, you probably need a taxi when visiting many destinations in the city, regardless of where you stay. Next to the palatial Copacabana Palace Hotel, the Sheraton is considered to be one of the better first-class properties in the city. Hotel quality and pricing varies greatly from block to block, so be sure to do extensive research. Also be aware that Ipenema and Copacabana are districts of the city and don’t specifically refer to the beaches of the same name, so just because a hotel has “Copacabana” in its name, it does NOT mean that it is actually located adjacent to the beach.

Brazil 2007   131.jpg
Locals gather on a large rock off the coast in front of the Sheraton Rio Hotel & Resort

The Landscape

Standing on the pedestrian walkway at Ipenema beach and looking in all directions you can experience the amazing dichotomy that is Brazil: Beautiful, flat beaches collide with amazing moutainscapes; gated apartment buildings sit only a few minutes away from the masses of people living in the city’s flavellas (slums); tourists and the city’s more well-heeled residents enjoy $50-a-plate dinners while the working class enjoy a drink at the cervejarias or juice bars next door. To me, this is what makes Rio particularly exciting. The clash of cultures and local flavors provide an experience that is truly unique.

Brazil 2007   144.jpg
Copacabana Beach meets Ipenema Beach in the distance

The beaches are beautiful, but, in my opinion, not particularly spectacular in themselves. You are sure to find more beautiful beaches and water in many more places throughout the world. But you need to keep in mind that Rio is a city and the beaches in Rio are urban beaches – you would probably be challenged to find beaches this nice as close to the downtown centers of most coastal cities of this size (certainly not here in New York). The fact that you can walk a few minutes from your hotel and plant yourself on the beach, at a top-plate restaurant or at a packed bar is much of the area’s appeal.

The Grub

Aside from the beaches, Brazilians love to eat and there is no shortage of good food anywhere in the country. Living in the New York City area most of my life, I have become spoiled, as I can typically get some of the best of any cuisine right at my fingertips. That being said, I was tremendously surprised at the quality of food that I experienced in Rio and beyond – there is no doubt that one can get first class cuisine in Rio and you don’t have to look hard. Rodizo, the Brazilian carve-it-at-your-table, all-you-can-eat selection of grilled meats is a national tradition and does not disappoint, particularly at Porcao (4 locations in Rio), which holds is reputation of being the best of its kind in Brazil (Note: they alos have opened a location in New York City). Even the lower-end Rodizo joints, such as Carretao Churrascaria in Copacabana, provide excellent value for the money.

My vote for surprisingly-good cuisine in Rio, however, goes to the many higher-end Italian restaurants, which says a lot coming from an Italian boy from New Jersey! Restaurante Gero in Ipenema is a good example. There are also some worthy local “chains”, such as Gula Gula, if you’re in the mood for something lighter (there are a few locations, but it’s restaurant in Ipenema features an unusual indoor/outdoor space).

Restaurant Siri Mole specializes in the native palm-oil and coconut milk-based seafood stews from Bahia (northern Brazil – see my forthcoming articles). Although showered with praise over the years, this restaurant has lost its touch – the food is good, but not worth the $75-$100 per person price tag. Only head here if you you must try this type of cuisine and are not heading anywhere in Bahia during your trip.

You can’t talk about Brazilian food without mentioning street food and Kilo restaurants. Street food comes in many different varieties: from huts, to walk-up shops, to vendors on the street. It can feature anything from grilled meats to stuffed pastry pouches (a la empanadas) to sweets. My advice: indulge and don’t be afraid. Use common sense, however. Are the locals eating it? Does the vendor’s cart look fairly clean? If it looks, OK, go for it…it’s good stuff. If you’re looking for something quick, but a step above street food, a Kilo restaurant is a good bet. These are places that have a variety of hot and cold foods that you can pile on your plate, weigh and pay by the kilogram (hence their name). Just like any restaurant, they range from low end and cheap (be careful) to higher end and more expensive. I do not kid when I say that some of the better grilled meat I ate on my trip was at a rest stop 90 miles north of Rio, where the fresh grilled meats and sausages were piled on my plate for a filling lunch that cost less than $7. (This would, affectionately, be known for the rest of my trip as “rest stop meat” and I was sure to indulge again on the way back to Rio a few days later).

The Drink

I was about to start this paragraph with something like “Brazilians like to drink”, but the more and more I travel, the more I realize that everyone likes to drink, regardless of their locale (OK, Muslim nations aside). The Brazilians are no different. Beer is well-liked among locals and some of the local Brazilian brews are excellent. Brahma, Bohemia, Skol and Pilsen are the top selling brews and each of them possess much more character and body when compared to the top-selling American varieties. My favorite, however, is Itaipava, a lager brewed in the city of Petropolis, which has a clean, refreshing taste, particularly when chilled to near-frozen temperatures (what the Brazilians refer to as “trincando”). Overall, beer is cheap, and you can usually get bottle of the local brew at a cervejaria for about 2 Reals, or about $1. If there are several of you siting at a table at a cervejaria or, as was my case on several occasions, at a beach bar, you may be brought a large bottle of the beer which is often hugged by a wrap-around plastic “thermos” to keep it cool (see picture below). A large bottle will run you about 4 Reals ($2).

Brazil 2007   164.jpg
Example of an Itaipava beer in a “thermos” wrap, Buzios, RJ.

The Brazilian national drink is the infamous caipirinha (pronounced kai-pee-reen-yah). The classic drink has recently become a trendy cocktail in many big US cities and bars in New York City often demand upwards of $10 for one. You can easily find caipirinha anywhere in Brazil for about 4 Reals ($2), and they usually knock you a step back when you take the first sip. The caipirinha is made by muddling a fresh lime with a few heaping tablespoons of sugar and filling the glass with cachaça, a Brazilian spirit similar to rum (and also made from sugar cane). The end result is clean and refreshing, although downing a few of them on a hot summer day will typically require that you take a nap afterwards. Cachaça can be purchased at most specialty liquor stores in the United States and the brands Pitu and 51 are the most widely available (Note: in Brazil, a bottle of 51 goes for about $2 in a supermarket, but can cost upwards for $20 in the US).

Spirits aside, there are a few things to note about soft drinks. First, from the tourists to the taxi drivers, almost everyone drinks bottled water. There is nothing wrong with the water supply in Rio and it is perfectly potable, however, it is also terribly chlorinated and is rather unappealing to drink. Most Coca Cola products are available anywhere, but I was quite surprised that the preferred diet soda in Rio and Buzios is Coke Zero – not Diet Coke (this is fine for me – I much prefer Coke Zero). Finally, I should note that the Brazilians love their fresh juices and the city is stocked with fresh juice bars that make endless combinations for fruit juices, some with many fruits you have never seen or heard of in your life.

Tourist by Day

Sometimes I get so caught up the food and drink, I forget about the local sites. A man once told me that Rio’s top tourist attraction is “the scenary”, as with every turn you are encountered with something either beautiful, unusual or interesting (or all three!). I cannot disagree with him, but there are a number of sites that warrant you being a camera-toting tourist for the day.

The most famous site in the city and, quite possibly, the landmark of the country itself, is Corcavado mountain and the stature of Cristo Redentor (Christ the Redeemer). The art-deco statue of Christ was perched upon Corcavado about seventy-five years ago and looks patiently across the city as thousands of visitors take the rickety old tram to the mountain top every day. Recently inaugurated as one of the new Seven Wonders of the World, it is an awesome site and provides tremendous views on a clear day. Corcavado mountain itself pops out of the earth and is terribly steep, requiring a trek up its spiral roads, which some people (much more daring than me), attempt to hike. You can also drive or take a taxi to the top of the mountain if you wish to avoid the crowds on the tram or be locked to the tram’s schedule.

Brazil 2007   139.jpg
Christ the Redeemer

Rio de Janeiro City Skyline
A shot of Rio with Christ the Redeemer in the distance

Opposite Corcavado sits Sugarloaf (Pão de Açucar) mountain. While Sugarloaf is not as high as Corcavado, it offers the best panoramic views of the city and the greater Rio area. While you can also walk to the top, almost everyone prefers the two-stage cable car ride, which first brings to the summit of adjacent Morro da Urca before you ascend to the top of Sugarloaf itself. Walking around the the summit, you can see spectacular view of Chris the Redeemer, Flamingo Beach, Ipanema, Copacabana, Central Rio, Niterio (see below), the ocean and the various bays.

Brazil 2007   151.jpg
Sugarloaf

Brazil 2007   154.jpg
The Sugarloaf cable cars

It’s worth taking a stroll down the stone-lined pedestrian walk, which runs from Leblon down through Copacabana, a walk that will probably take you a good two hours or so, but well worth it. Along the way you can stop on the beach or grab a cocktail or snack at any one of the hundred or so stands that line the beach. (These stands range from shacks run by locals to higher-end cafes to, yes, even a McDonalds shack in Copacabana). This is a good opportunity to grab a beer, a coconut or a freshly-made caipirinha, which can be drank at any of the small tables that surround the shacks.

The two other major tourist attractions in Rio are the Botanical Gardens (Jardim Botânico), which I, unfortunately, did not get to see and the Football (Soccer) stadium. (A taxi drive told me that the only people who visit the football stadium are Brazilians, Argentinians and visitors from Uruguay, the country that shocked the Brazilian national team in the 1950 World Cup final in front of 199,000 (!) spectators).

Bars and Clubs by Night

Rio’s reputation as a party city certain holds true and you can find the typical variety of venues that you would expect in any large international city: bars, dance bars, large discotheques, etc. Nightlife hours are similar to those here in New York City – things really don’t start to happen until at least midnight, with the bars staying open way into the wee hours of the morning. Until 11:30 and midnight, most nightclubs are totally empty and some haven’t even open their doors. You can typically see tons of people enjoying a good beer, caipirinha, or cocktail at one of the many, bustling restaurants that line Copacabana or throughout Ipenema in the hours that precede the club opening. There are also a number of nightclubs and live music venues downtown (Centro), particularly in an area called the Lapa. The city government has invested a good amount of money over the years to increase the appearance and security in the Lapa and, as a result, it is now know as the most bustling center of nightlife in the city, with venues ranging from large dance clubs, bars, discotheques, salsa halls and other types of live music venues. Nevertheless, Lapa is still filled with locals and, like anyplace else in Brazil, walking around with a map to your face and a fanny pack is not recommended. In fact, if you are going to explore Centro in the late hours, it’s a good idea to make sure that your taxi driver knows exactly where to drop you off and that you have a taxi waiting for you when you are done with your evening – the area is safe to explore, but getting off the beaten path could be risky. I was lucky to explore some areas of the city with locals that I would never have made it to on my own, so I can attest that it’s definitely worth exploring beyond Copacabana if you have the chance.

There are a few things worth nothing when you get inside a club:

First, at clubs in Rio, cash bars are rare. When you enter the club, you are issued a drink card, which is used by the bartender to mark every drink that you order. When you are ready to leave, you show your drink card to a cashier who tallies what you drank and adds in any applicable cover charges. This is an efficient system that allows the bartenders to serve without worrying about cash and also allows you to keep minimal cash on you at the club, since you can pay for your whole evening with a credit card. If you lose the card, you must pay a penalty fee before they let you leave (oddly enough, at one very large club in Lapa, the penalty was only R$120, or about 60 dollars, essentially meaning you can drink the whole night for $60 if you lost the ticket. In New York City, you can pretty much blow $60 ordering one round of drinks).

Second, a word of advice that I give to any traveling American: keep it simple. The variety of American cocktails has exploded over the years and many US club-goers enjoy their easy access to fruity, syrupy alcoholic concoctions. Many of these don’t exist in foreign countries and, remember, there is the language barrier to contend with as well. Stick to beer, wine, simple mixed spirits and whatever else the locals are drinking.

Third, if there is a VIP option, it’s probably a better bet than standard admission, but it depends on the club. The notion of “VIP” doesn’t translate the same as with clubs in New York City or L.A. – you won’t be in a private booth sipping Crystal and ordering bottle service all night. VIP typically means that you get access to a segregated, less crowded area and, in some clubs, access to a better drink selection. For example, in one large club in central Rio, regular admission was R$20 (about $10 dollars), while VIP admission was $R40 (about $20 dollars). Club admission included all-you-can-drink alcohol (no, I’m not kidding), but standard admission only got you some cheap kind of vodka or rum, one local beer and some mixers. VIP admission, on the other hand, gave you full top-shelf bar in a special are that was significantly less crowded and about 20 degrees cooler than the main dance floor – a luxury in the warm Rio summers. (Interesting note: for a club that held around 2000 people, probably only about 200 went for VIP, which gives you some idea as to what the value of $10 is to many Brazilians).

Finally: Be smart. It’s generally not a good idea to leave your drink unattended. You also don’t want to bring anything too flashy or expensive into the club with you (PDAs, iPods/iPhones, expensive watches, etc.). Don’t accept a drink from strangers – in fact, a few locals vigorously declined my offer to buy them drinks the first time I met them, which I thought was weird, but made sense after I learned why. Don’t get so drunk that you don’t know how to get home or, more importantly, that you can’t communicate where you need to go when you’re done. Finally, it’s not a good idea to home with strangers or bring anyone home with you (sorry to ruin your fun). There are too many documented cases of tourists (both men and women) getting taken advantage of at the end of the night by criminals posing as innocent, one-night love interests.

Beyond Rio

If you’re interested in exploring beyond the typical Rio tourist destinations, there are a few options.

Local to Rio is Niterói, which was worth a visit for me, as it is home to one of my friends. Niterói is across the bay from central Rio and is accessible by car/taxi over the eight-mile-long Rio-Niterói Bridge (taxi ride: about $25) or via the Rio-Niterói ferry, which leaves from downtown. The ferry costs around $1, but you then need to take a bus or taxi back to wherever your hotel is (taxi fare to Ipenema: about $12). Niterói is a relatively-quiet Rio suburb which offers sweeping views of the Rio city landscape, less hustle and bustle of the big city and amenities such as American-style shopping malls (inclusive of a food court and an Outback Steakhouse). It is best known for its signature piece of architecture, the Oscar Nirmeyer-designed Niterói Contemporary Art Museum (Museu de Arte Contemporânea de Niterói, or MAC), a spaceship-looking building sitting on the bay of Niterói, overlooking greater Rio.

Niterói, RJ, Brazil
Museu de Arte Contemporânea de Niterói

Niterói, RJ, Brazil
Museu de Arte Contemporânea de Niterói, Sugarloaf in the distance

A bit further from Rio is Buzios, which I will write about in my next entry about Brazil. Located about 2 1/2 hours north of Rio, Buzios is a beautiful, sophisticated beach resort town with the most upscale bars, restaurants and shops that you will find in Brazil. It is certainly worth the trip! (I’ll save the details for my full write-up).

Brazil 2007   174.jpg
A shot of Buzios harbor at night (more to follow in the next article!)

Practical Items

First and foremost, if I haven’t driven this into your head already, be smart and be safe. Brazil has a terrible reputation in the US for being “dangerous” and, while I do agree that you should be concerned about the crime rate, I have to say that there was never a time that I felt scared or threatened – day or night. If you do something stupid, like get so drunk that you can’t find your way home, someone will probably take advantage of the situation – but that could be the case in any large city in the world. In general, don’t walk around dark, unknown areas at night and don’t wear flashy jewelry, watches or camera equipment if you don’t have to.

As far as language goes, no, not everyone speaks English. You should carry a discreet phrase book with you if you don’t know any Portuguese (I speak French and it didn’t help, so don’t think that your two year of college Italian will help you either). The nicer restaurants typically have menus in both Portuguese and English and a combination of your waiter’s broken English and some pointing should be enough in most other places.

Most places in Rio – actually, almost all restaurants and shops – accept credit cards. This is surprising considering that there was virtually no card use in Brazil not too long ago. Also surprising is the fact that American Express is taken at nearly all restaurants. Cash is always king, however, and you can access your bank account through all major bank ATMs in Rio (just make sure you have a 4-digit PIN, as some older networks won’t work with a longer PIN). As in any country, currency exchange booths at the airport or at your hotel are a ripoff so ATMs will guarantee you the best exchange rate. Note that many ATMs will dispense 50 Real notes and, due to the 2:1 exchange rate, you’ll most likely be taking out at least R$100 or R$200 at a clip. Don’t expect taxi drivers or street vendors to break this for you, however, so if that is all you have, break it at your hotel, a restaurant or supermarket before you venture out…it’s always good to have small bills and coins.

Lastly, I might have given taxi drivers a bad rap. Not only are most taxi drives NOT out to take advantage of tourists, but many are very talkative, friendly and extremely helpful. Keep in mind that meter fares are heavily regulated, but any trip can be negotiated as a flat fare, so don’t be afraid to haggle. For example, we hired a driver for 75 Reals to take us from our hotel to the top of Corcavado, wait for us while we saw the Christo and then take us to Sugarloaf. The entire metered fare of the trip was 65 Reals, but we would have paid 15 Reals per person to take the tram up Corcavado – so we saved money and got some great local commentary as well.

More Resources

The Frommer’s Guide to Brazil is a good all-around reference if you’re visiting multiple cities, otherwise stick with a Rio-specific guide book.

My complete photo collection for Rio, Niteroi, Salvador and Buzios can be found in my Flickr gallery.

Next entry will be on Buzios.. Stay tuned…

Published Travel Photos

It seems that the people over at Schmap have taken a liking to some of my snowboarding and mountainscape-related photos, as they have decided to publish two of my photos in their upcoming travel guides.

The first is one of my favorite photos of The Canyons in Park City, Utah:

IMG_0002-Top-of-Canyons

The second is a shot of Lake Tahoe from Heavenly Resort:

Lake Tahoe, Heavenly - California Side

(click on each to see them on my Flickr site, where you can get them in high-res)

It’s not exactly National Geographic, but I am honored, nonetheless.

Parsing Flickr and Blogger Feeds with Perl and XML::Parser

Note:

Unfortunately, WordPress does not allow for clean formatting of code examples.  Therefore, formatting on this page is a bit messed up.   You can go to my website for a clean example of this.

Thanks!

You may have noticed a few places on this site where there is a table that looks something like this:

New on CJU.comLatest from the CJU.com blog:The Wynn Las Vegas: Snack Anti-theft Technologies, Luxurious Suites and Free Drugs During your Stay (added: 2008-MAR-08)-New York Giants Win; Hoboken Madness Ensues (Update: February 5, 2008) (added: 2008-FEB-05)-The St. Regis San Francisco: When Your Hotel Room Needs to be Rebooted (added: 2008-JAN-22)-London New Year (added: 2008-JAN-03)-2007 Hoboken Accolades and Videos (added: 2007-DEC-27)-Christmas Day in New York City (added: 2007-DEC-26)Latest pics from my Flickr Photo Gallery:Super Bowl Sunday (added: 2008-02-17)-iSight is Dead (added: 2008-02-17)-Lake Tahoe, N. California and Nevada (added: 2008-01-26)-Lake Tahoe, N. California and Nevada (added: 2008-01-26)-Lake Tahoe, N. California and Nevada (added: 2008-01-26)-Lake Tahoe, N. California and Nevada (added: 2008-01-26)CJU.com Mini-sites:The Definitive Guide to Purchasing a SnowboardThe Deep Thoughts Server – served over 20 million Jack Handey Deep Thoughts since 1996

The table above shows the last five entries posted to my blog, as well as the last six photos posted to my photostream on Flickr. If you’re reading this, you probably already know what Flickr and Blogger are, so I won’t waste our time going into that, but you may not know that the content you post on both of those sites can be syndicated via RSS and Atom-style feeds, both rather easily. If you’re not familiar with what RSS is, take a quick read of the Wikipedia article, which addresses both RSS and Atom technologies.There are many ways that you can read syndicated XML feeds: Web browsers, such as Safari and Firefox have built in support; Third party applications like NetNewsReader provide robust interfaces for reading feeds; Portals such as Google customized front-page allow you to have these at your fingertips every time you fire up your browser and go to Google’s homepage. Reading RSS feeds is no problem, but what happens if you want to use the contents of these feeds for something?The good news is that RSS and Atom feeds are both XML-based and both have standard, well-documented formats, although the technical documents can be a bit tricky when you just want to bang out a quick web app without getting into the nitty-gritty of the protocol spec. this article talks about how you can use Perl to retrieve, parse and utilize these types of feeds.For simplicity’s sake, I’ll be focusing on the Atom format, which is easier to parse, IMO and is the only format currently available via Blogger. Flickr, thankfully, provides flexibility to syndicate feeds in just about any XML/RSS/Atom format available today.Determining the URL of Your FeedFirst and foremost, you must figure out what the URL is for the feed that you are trying to grab.For Blogger feeds, it’s pretty simple. The format of your blogger feed is always:   http://yourblog.blogspot.com/atom.xmlFor example, my blog URL is http://chrisjur.blogspot.com, so my Blogger Atom feed is http://chrisjur.blogspot.com/atom.xml.For Flickr feeds, it’s a bit more complicated. Flickr allows you to specify feeds for many different attributes of the site, which can include feeds for specific users and tags. Flickr has a specification for how to configure your feeds here. To get you started, however, it’s easy to use your photostream feed, which represents the last ten photos that you’ve uploaded to Flickr. The feed’s URL uses the following format for Atom feeds:   http://www.flickr.com/services/feeds/photos_public.gne?id=your_flickr_nsid&format=atom_03where the red colored “your_flickr_nsid” should be substituted with your Flickr NSID, which is a unique number that identifies you on the Flickr site. Note that this is NOT your Flickr username. You can have Flickr automatically generate this URL for you by going to your photostream and clicking on the “Feeds for (your username’s) photostream Available as RSS 2.0 and Atom” at the bottom of the page. Copy/Paste this URL and keep it in a safe place. Note that your Flickr NSID will be in the URL after the “id=” token of the query string. My feed URL, for example, looks like this:   http://www.flickr.com/services/feeds/photos_public.gne?id=64426228&format=atom_03Required Perl ModulesThere are a few methods to attack the parsing of the feed with Perl. Many people still parse XML “manually”, by writing their own parsers that use a lot of regular expressions and pattern matching. This can be a lot of work and you’re always at risk of slight changes in the feed format, which might throw your parsing routines off. There are several Perl modules written for RSS and Atom feeds, such as XML::Atom, but I have found that interfaces to these modules only allow you to pull out certain attributes about feed, which limits what you can do with it. All of the RSS/Atom modules, however, are built on top of Perl’s XML::Parser modules, which is a generic, event-based parser based on the Expat C XML parser. For flexibility’s sake, I’ll be using XML::Parser to do all of my feed parsing. No parsing libraries, however, provide methods to retrieve these feeds via HTTP, so you’ll have to do that yourself. The easiest way is to use the libwwwperl package, which provides you with the “LWP::” module namespace. Therefore, to get started, you’ll have to march down to your local CPAN and pick up XML::Parser and LWP. To validate if you have these installed, issue these two commands:

perl -MLWP::Simple -e "print;" perl -MXML::Parser -e "print;"

They should both return nothing. If you see something like this, however, you don’t have the module installed:

Can't locate Foobar.pm in @INC (@INC contains: /System/Library/Perl/5.8.6/darwin-thread-multi-2level /System/Library/Perl/5.8.6  /Library/Perl/5.8.6/darwin-thread-multi-2level /Library/Perl/5.8.6  /Library/Perl /Network/Library/Perl/5.8.6/darwin-thread-multi-2level /Network/Library/Perl/5.8.6 /Network/Library/Perl /System/Library/Perl/Extras/5.8.6/darwin-thread-multi-2level /System/Library/Perl/Extras/5.8.6 /Library/Perl/5.8.1 .). BEGIN failed--compilation aborted.

Parsing the FeedsWe’ll start with the Flickr Feed. You may just want to jump to the “Summary” part of this article if you’re not interested in how the code words, but just want to get the code and the details on the supporting files. The code we use to parse the Flickr feed is as follows:

#!/usr/bin/perl#(c) 2005 Christopher Uriarte# rssflckr.cgi - parses a flckr atom feed to show the most recent MAXENTRIES, links and date addeduse LWP::UserAgent;use XML::Parser;#####Static Values####$MAXENTRIES = 6;$url = 'http://www.flickr.com/services/feeds/photos_public.gne?id=64426228@N00&format=atom_03';#Tag Trackermy $thistag;#Track if we're in an <entry> blockmy $entryflag;#count the number of entriesmy $count = 0;#####Retrieve XML Date####my $data;my $ua = LWP::UserAgent->new;$ua->timeout(45);$ua->env_proxy;my $response = $ua->get($url);if ($response->is_success){$data = $response->content;}else{exit;}my $parser = new XML::Parser(ErrorContext => 2);$parser->setHandlers(Start => \&start_handler,End   => \&end_handler,Char  => \&char_handler);$parser->parse($data);#We start here when we encounter an HTML Tagsub start_handler {my $expat = $_[0];my $element = $_[1];#print "Encountered element $element\n";#If we enter an <entry> tag, we have a new element#Increase the county by 1 and set the entry flag to 1if ($element eq "entry"){$count++;$entryflag = 1;#print "Count is now $count and entryflag is set to $entryflag.\n";}if ($element eq "title" && $entryflag == 1){$thistag = "title";}#Grab the title and href element of the second "link" tag#exclude service.edit links, we want the "alternate" tag link#print "Encountering Element=$element,entryflag=$entryflag,dollar_1,2,3=$_[1],$_[2],$_[3] \n";if ( ($element eq "link") and ($entryflag == 1) and ($_[3] eq "alternate") ){$ENTRIES{$count}->{link} = $_[7];#print "Link: $_[7]\n";}if ($element eq "issued" && $entryflag == 1){$thistag = "issued";#print "Added: $_";}}#This is where we handle the values within the tagsub char_handler {my ($p, $data) = @_;#print the modified dateif ($thistag eq "issued" && $entryflag == 1){#Get the first 11 Chars of the date, that's all we care about$date = substr($data,0,10);#print "$date\n";$ENTRIES{$count}->{date} = $date;$thistag = "";}if ( ($thistag eq "title") and ($entryflag == 1) ){$ENTRIES{$count}->{title} = $data;$thistag = "";}1;}sub end_handler {my $expat = shift;my $element = shift;#If we're at the end of an <entry> block, clear the entry flagif ($element eq "entry"){$entryflag = 0;#print "\n\n";}1;}#Determine how many entries to display#If our set maximum amt of entries is less than what we encountered#we only display up to $MAXENTRIESif ($MAXENTRIES < $count){$MAX = $MAXENTRIES;}#Otherwise, we display what we encounteredelse{$MAX = $count;}#Map through the %ENTRIES hash from 1 to $MAX  to display the linksfor ($c=1; $c<=$MAX; $c++){#print "Loop is $c, count is $count\n";$title = $ENTRIES{$c}->{title};$link = $ENTRIES{$c}->{link};$date = $ENTRIES{$c}->{date};print "-<A href=\"$link\">$title</A> (added: $date)<BR>\n";}


Here’s a walkthrough of some of the code:

Lines 13-14: Configurable ValuesThese are the only two configurable values in the script. The $MAXENTRIES variable indicates the maximum number of entries you want to print out after parsing the feed. If your feed contains 100 entries, you may only wish to print out, say 5. The $url variable specifies the URL to your feed.Lines 24-47: Parser Setup and TimeoutsThis block initiates the XML::Parse object, retrieves your XML feed via HTTP and sets a timeout of 30 seconds on the HTTP retrieval. If the retrieval fails, the script exits.

Lines 50-85: The XML::Parser Start Handler This block is the tag start handler for XML::Parser, which is the sub-routine executed when a new XML tag is encountered. For the Atom feeds, we’re really only interested in the tags contained within and XML tags. If we find a new entry, we add a new element to the %ENTRIES hash array on line 75, which uses a global counter as the key. We make this hash multi-dimensional by setting $ENTRIES{$count}->{link} to the URL of the photo, which is the 7th element of a tag for that entry, e.g. If we’ve encountered the title of issued date tag, we set a variable ($this_tag) that indicates what we’ve encountered and wait until the next sub-routine for further processing of these tags.

Lines 88-110: The XML::Parser Char Handler This block is the tag char handler for XML::Parser, which is the sub-routine executed when we are examining the data contained between a start and end XML tag. As noted earlier, we’ve set flags for when we’ve encountered the issued date and and title tags. When we encounter the contents of each of these, we add them to the %ENTRIES hash array using the same key. The issued and title tags are added as $ENTRIES{$count}->{date} and $ENTRIES{$count}->{date}, respectively.

Lines 113-125: The XML::Parser End Handler This block is the tag end handler for XML::Parser, which is the sub-routine executed the close of an XML tag is encountered. In this sub-routine, we mainly just do some cleanup of state variables. If we’ve hit the end of an ENTRY tag, we set the state variable accordingly.

Lines 131-151: Printing the Contents of your FeedIn this block we determine the number of feed elements to print out, based o the number of elements encountered in the feed and what you’ve previous set $MAXENTRIES to in line 12. The format of the printing is done in line 150, where each entry is printed out in HTML format. This line can be modified accordingly to fit your requirements. All output is made to STDOUT.

The strategy for parsing the blogger feed is similar, which you can explore by examining the code itself (see SUMMARY section below).Using the Output of the FeedsNow that you’ve parsed the feeds and have the output, you need to incorporate them into your webpage, email or whatever your delivery mechanism is for this information. As I noted earlier, the script above outputs to STDOUT, so you can easily “catch” the output into a file by using simple re-direction, e.g.:

perl rssflickr.pl > flckrfeed.txt

You can then incorporate the contents of this text file into your website by simply reading the contents of the file. In order to keep the feed up-to-date, however, you will need to run this script automatically, which can be done through a standard UNIX cron job. I have separate cronjob entries for both my Flickr and Blogger feeds, which run every hour, e.g.:

0 * * * * perl ~chrisjur/www/cgi-bin/rssblogspot.pl > ~chrisjur/www/cgi-bin/blogfeed.txt  0 * * * * perl ~chrisjur/www/cgi-bin/rssflckr.pl > ~chrisjur/www/cgi-bin/flckrfeed.txt

Since I have several pages that call the display the same feed information, I like to keep the interface to these feed files consistent. I do this by using a simple ‘include’ perl route, which returns the contents of the feed based on a feed “keyword” that is passed to it. This script is the “roadmap” to all my feed files and how I access them. A simple example is this type of file follows:

1:      #!/usr/bin/perl 2: 3:      #dumpfeed.pl - returns HTML code pulled from CJU.com RSS/Atom feed grabbers. 4:      # use: 5:      # 6:      # require dumpfeed.pl 7:      # $blog = dumpfeed('blog); 8:      # print $blog; 9: 10:     sub dumpfeed { 11: 12:             # Configuration Hash uses key => value, where key is a keywork passed 13:             # to the routine, specifying what feed you want and value is the file 14:             # containing the feed contents 15:             my %feeds = ( 16:                     'blog' => 'blogfeed.txt', 17:                     'flckr' => 'flckrfeed.txt' 18:                     ); 19: 20:             my $requestfeed = shift(); 21:             my $feedfile = $feeds{$requestfeed}; 22: 23:             # Open the feed file 24:             my $text; 25:             my $failed; 26:             open (F, "$feedfile") || ($failed = 1); 27:                     while () 28:                     { 29:                             $text = $text . $_; 30:                     } 31:                     close F; 32: 33:             if ($failed == 1) 34:                     { 35:                     $text = "Error:  Could not open feed with token $requestfeed using source $feedfile."; 36:                     } 37: 38:             # Send it back. 39:             return $text; 40:     } 41: 42:     1;

You can call the subroutine as many times as you want from within your .cgi script or whatever is driving the display of your feed content. These 3 lines assign the contents of the blog feed to the $blog variable, which can be printed out at any point in your .cgi:

1:      require dumpfeed.pl 2:      $blog = dumpfeed('blog'); 3:      print $blog;

Summary Information and FilesRequired Perl Modules:

Files from Examples Above:

  • rssflickr.pl – Parses Flickr Atom feeds and prints summary output to STDOUT. Modify the $url variable to specify your Flickr feed URL. Modify the $MAXENTRIES variable to specify how many entries you want to print.
  • rssblogspot.pl – Parses Blogger Atom feeds and prints summary output to STDOUT.Modify the $url variable to specify your Blogger feed URL. Modify the $MAXENTRIES variable to specify how many entries you want to print.
  • dumpfeed.pl – include subroutine used to access various local feeds that you wish to incorporate into your output.