Why are the days of the week in Japanese named after classical elements?

A random thought stumbled into my mind the other day when I realized that Sunday matched the Japanese word for Sunday is “日曜日”. The “日” part means “sun”. At first I thought it was just a coincidence, then I realized that Monday represented the moon, and in Japanese that’s “月曜日” and the “月” part means moon. Something is clearly going on here. Since the idea of seven days in a week doesn’t originate from Asia, the Japanese days of the week probably just followed western convention, which makes sense. Now when it comes to the English days of the week, the names were originally named by the Romans with the names of the sun, the moon, and the five known planets at the time [1].

Day of the week Latin word (English word)
Sunday Solis (sun)
Monday Lunae (moon)
Tuesday Martis (Mars)
Wednesday Mercurii (Mercury)
Thursday Jovis (Jupiter)
Friday Veneris (Venus)
Saturday Saturni (Saturn)

Now on the other side of the world, the Chinese and the Japanese gave names to these planets using their classical elements (the Chinese and Japanese names are the same). They gave the celestial bodies these names:

Celestial body Chinese/Japanese name Corresponding element
The sun
The moon
Mars 火星 Fire
Mercury 水星 Water
Jupiter 木星 Wood
Venus 金星 Gold
Saturn 土星 Earth/soil

So now, when the Japanese went to adopt the western calendar, they took the base meanings of the days of the weeks by their planets, and used their planet names in their place. So Sunday (from the sun) became “日曜日”, Monday (from the moon) became “月曜日” and so forth. Like this:

Celestial body English day of the week Japanese day of the week
Sun Sunday 日曜日
Moon Monday 月曜日
Mars Tuesday 火曜日
Mercury Wednesday 水曜日
Jupiter Thursday 木曜日
Venus Friday 金曜日
Saturn Saturday 土曜日

Cool, huh?

Jenkins pipeline for Spring with beta and prod stages and deployment rollback

In the past couple of days, I’ve been experimenting a bit with the Jenkins pipeline plugin to create a code deployment pipeline with independent beta and prod stages for a Spring Boot app. I even managed to add rolling back a deployment in case a prod deployment fails! It took me a bit of time to Google my way through how to do everything, so I figure I just lay it all out here in case it helps other people do the same thing.

The nice thing about all of this is that I can push a code change to git, and Jenkins can build it, run through all the tests and then deploy to production automatically.

Layout of a pipeline script

Pipeline scripts are written in Groovy, which is a variant of Java. In general, a pipeline script is laid out like this:

node {
    def SOME_CONSTANT = "whatever"
    ...

    stage('some stage name like Build') {
        // Stuff to do as a part of this stage
    }

    stage('another stage') {
        // More stuff
    }

    ...
}

Each stage represents a stage in the pipeline (e.g. building, beta deployment, prod deployment etc.)

Defining some constants

First, a list of constants can be defined that can be used throughout the pipeline so that if the pipeline script gets reused somewhere, only these constants have to be changed. I’m not aware of anything that lets me reuse a pipeline in Jenkins without copying and pasting the code somewhere else so for now I’ll have to live with copying and pasting.

My project uses Maven so I got Jenkins to download its own copy of Maven that it can use to execute builds and have defined it as a constant. The name I’ve given it in the Jenkins Global Tool Configuration is “Maven 3.3.9” exactly. My project also uses Tomcat so there are some Tomcat specific things in there that may or may not be relevant to your use case.

    
def MAVEN_HOME = tool 'Maven 3.3.9'
    def WORKSPACE = pwd()

    def PROJECT_NAME = "name-of-project"
    def WAR_PATH_RELATIVE = "App/target/${PROJECT_NAME}.war"
    def WAR_PATH_FULL = "${WORKSPACE}/${WAR_PATH_RELATIVE}"
    def TOMCAT_CTX_PATH_BETA = "Tomcat-context-path-for-the-beta-stage"
    def TOMCAT_CTX_PATH_PROD = "Tomcat-context-path-for-the-prod-stage"
    def GIT_REPO_URL = "URL-to-git-repo-ending-in-.git"

Preparation Stage

First, the code has to be retrieved from the repository before it gets built. Jenkins allows storing username/password pairs so that they can be referenced without having to write out the password in plaintext. Jenkins uses a “credential ID” for this.

   
    stage('Preparation') {
        git branch: "master",
        credentialsId: "credentials-ID-stored-in-Jenkins-that-can-access-the-git-repo",
        url: "${GIT_REPO_URL}"
    }

Build Stage

Next, the code must be built and unit tested. “mvn clean install” will do just that (depending on what you want, you can always put in a different maven goal). The junit command is just there to take the resulting XML that gets generated during the build process and posts a graph of how many tests were run for each build.

    
    stage('Build') {
        sh "'${MAVEN_HOME}/bin/mvn' clean install"
        junit '**/target/surefire-reports/TEST-*.xml'
    }

Beta Stage

Once the build succeeds, you’ll want to deploy it to a beta environment, so integration tests can happen. The following happens at this stage:

  1. Get the right credentials to get permissions to Tomcat
  2. Call the deploy method to deploy the war file in Tomcat (more on that later)
  3. If the deployment fails for whatever reason, print out the deployment log for debugging and fail the build
  4. If the deployment succeeds, run the integration tests (the command to do this may differ based on use case)
    
    stage('Beta') {
        withCredentials([[$class: 'UsernamePasswordMultiBinding',
            credentialsId: 'credential-id-for-tomcat',
            usernameVariable: 'USERNAME', passwordVariable: 'PASSWORD']]) {
                // Password is available as an env variable, but will be masked 
                // if you try to print it out any which way
                def output = deploy(WAR_PATH_FULL, TOMCAT_CTX_PATH_BETA,
                        env.USERNAME, env.PASSWORD)
                if (output.contains("FAIL - Deployed application at context path " + 
                        "/${TOMCAT_CTX_PATH_BETA} but context failed to start")) {
                    echo "----- Beta deployment log -----"
                    echo output
                    echo "-------------------------------"
                    currentBuild.result = 'FAILURE'
                    error "Beta stage deployment failure"
                }
            }

        echo "Running integration tests"
        sh "'${MAVEN_HOME}/bin/mvn' -Dtest=*IT test"
        junit '**/target/surefire-reports/TEST-*.xml'
    }

The deploy method is what takes care of the actual deployment to Tomcat, which is how the Jenkins build tells Tomcat about the newly built war file. The deploy method is below (be sure to change the server IP and port). Alternatively, I could have built my project as an embedded jar file, but that has a different challenge in figuring out how to get Jenkins to tell the OS to execute the newly built jar file as a particular user.

  1. Based on the Tomcat context path, decide whether a beta or production deployment is happening
  2. Make a copy of the build war file and add .prod or .beta to the end of it so as to keep the original
  3. Set the Spring profile to use on the newly copied war file (more on that later)
  4. Call the curl command to do the actual deployment to Tomcat (more on that later)
def deploy(warPathFull, tomcatCtxPath, username, password) {
    def envSuffix = ""
    def isBeta = tomcatCtxPath.contains("beta")
    if (isBeta) {
        envSuffix = "beta"
    } else {
        envSuffix = "prod"
    }
    sh script: "cp ${warPathFull} ${warPathFull}.${envSuffix}" 
    setSpringProfile(warPathFull, isBeta)
    def output = sh script: "curl --upload-file '${warPathFull}.${envSuffix}' " +
            "'http://${username}:${password}@localhost:8081/manager/text/deploy" + 
            "?path=/${tomcatCtxPath}&update=true'", returnStdout: true
    return output
}

In the case of my project, I’m building a single war file that does not have a Spring profile (beta/prod) defined. This means that I have to manually define this before I deploy the app to Tomcat since there are some things that differ between beta and prod like database URL’s. To do this, I wrote a method that opens the war file like a zip (jar/war files are zip files) and adds a line to my application.properties to define a Spring profile.

Admittedly, doing this zip file manipulation seems kind of hacky. Alternatively, I could have defined my build such that I had a separate beta build and a prod build to avoid modifying the zip file, but the drawback is that I’d then have to build my code twice.

def setSpringProfile(warPathFull, isBeta) {
    def zipFileFullPath = warPathFull + "." + (isBeta ? "beta" : "prod")
    def zipIn = new File(zipFileFullPath)
    def zip = new ZipFile(zipIn)
    def zipTemp = File.createTempFile("temp_${System.nanoTime()}", 'zip')
    zipTemp.deleteOnExit()
    def zos = new ZipOutputStream(new FileOutputStream(zipTemp))
    def toModify = "WEB-INF/classes/application.properties"

    for(e in zip.entries()) {
        if(!e.name.equalsIgnoreCase(toModify)) {
            zos.putNextEntry(e)
            zos << zip.getInputStream(e).bytes
        } else {
            zos.putNextEntry(new ZipEntry(toModify))
            zos << zip.getInputStream(e).bytes
            zos << ("\nspring.profiles.active=" + (isBeta ? "beta" : "prod")).bytes
        }
        zos.closeEntry()
    }

    zos.close()
    zipIn.delete()
    zipTemp.renameTo(zipIn)
}

A curl command to Tomcat is what actually does the deployment. To deploy a file to Tomcat, do the following below. This will deploy the war file to Tomcat and instantly run it, thus it will be accessible at the given context path.

curl --upload-file 'path-to-war-file' http://username:password@server-address:port/manager/text/deploy?path=/tomcat-context-path&update=true

Prod Stage

The same kind of stuff happens in the prod stage as in the beta stage with a few exceptions. The following happens at this stage:

  1. Get the right credentials to get permissions to Tomcat
  2. Call the deploy method to deploy the war file in Tomcat (except this time it is prod)
  3. If the deployment fails for whatever reason, print out the deployment log for debugging and roll back the deployment
  4. If the deployment succeeds, save the build files, and then the pipeline is finished. Alternatively, smoke tests can be run at this point, but I did not implement this in my project

Rollback is important because if the deployment fails, you don’t want to be stuck with a broken environment. Since build artifacts are saved on successful deployments, these same artifacts can be brought back if future deployments fail. This means they can be redeployed so that the code can be fixed before another deployment happens.

    stage('Prod') {
        withCredentials([[$class: 'UsernamePasswordMultiBinding',
            credentialsId: 'credential-id-for-tomcat',
            usernameVariable: 'USERNAME', passwordVariable: 'PASSWORD']]) {
                // Password is available as an env variable, but will be masked 
                // if you try to print it out any which way
                def output = deploy(WAR_PATH_FULL, TOMCAT_CTX_PATH_PROD, env.USERNAME, env.PASSWORD)
                if (output.contains("FAIL - Deployed application at context path " + 
                        "/${TOMCAT_CTX_PATH_PROD} but context failed to start")) {
                    echo "Prod stage deployment failure, rolling back deployment"
                    echo "----- Prod deployment log -----"
                    echo output
                    echo "-------------------------------"
                    step([$class: 'CopyArtifact',
                            filter: "${WAR_PATH_RELATIVE}",
                            fingerprintArtifacts: true,
                            projectName: "${PROJECT_NAME}",
                            target: "${WAR_PATH_RELATIVE}.rollback"])
                    deploy(WAR_PATH_FULL + ".rollback/" + WAR_PATH_RELATIVE,
                            TOMCAT_CTX_PATH_PROD, env.USERNAME, env.PASSWORD)
                    currentBuild.result = 'FAILURE'
                    error "Prod deployment rolled back"
                } else {
                    archiveArtifacts artifacts: "${WAR_PATH_RELATIVE}*", fingerprint: true
                }
            }
    }

At the end you get to have something like this:

That pretty much sums up the whole Jenkins pipeline that I’ve been using lately for Spring projects!

Fixing T-Mobile international roaming

T-mobile has awesome phone plans for people living in America to get free international roaming in over 140 countries. For most people, all they’d have to do is flip the switch on their phones that enable international roaming. For a minority of people, there are a few more settings to mess with. In the past year, I’ve had two issues that resulted in me losing my data connection outside of USA and I’m documenting some things below to try since it worked for me – maybe it’ll help some people out.

Check that international data roaming is enabled

Try a different APN

I’m using “T-Mobile US LTE 260”. Not sure if changing this requires a phone restart. I restarted my phone anyway.

Set the APN protocol and APN roaming protocol to IPv4/IPv6

Just tap on the APN you want to change. Hitting the 3 dots will show the save button. Not sure if changing this requires a phone restart. I restarted my phone anyway.

Seoul

My flight back happened to have a 12-hour layover in Seoul, so I got the chance to check out Seoul again. If I had more time, I would have ventured out a bit further. Instead, I just stayed around Myeongdong and got to eat all kinds of street food.

Coming from Hanoi and their warm weather, I walked around in shorts in Seoul even in the cold while everyone was out with their winter clothes. People must’ve thought I was crazy. My flight landed early in the morning too, so I had to kill 2 hours before shops actually opened.

At the time, I had not realized that a massive protest against the government had been happening in Seoul (wiki). If I had known, I would have totally gone there instead!

Myeongdong looking quite festive this time of year!

LINE Friends! This place attracted so much attention from people wanting to take pictures, they they set up a queue for people to line up for photos.

This is Budae Jjigae. It is probably my favourite kind of Korean food. It’s got a spicy soup base, meat, mushrooms, and other things with instant noodles. It’s so simple, but so good.

Street food stand with bacon wrapped sausages, and skewers? How could I say no?

I should have tried these lobster tails. They look so good.

Not a huge fan of dessert, but it looked really cool.

Myeongdong was bustling that day.

The thing I realized that day is that the street market people can haggle in at least 3 languages: Korean, English, and Chinese, as opposed to just the native language, and English like a lot of other places. Good on them for learning all these numbers in different languages!

Link to photo album: here

Halong Bay

Another excursion from Hanoi – 2-day-1-night cruise in Halong Bay! The tour bus picked us up in the morning and we drove for a few hours to our destination. Along the way, we stopped at this sculpture making place. The garden outside was full of marble sculptures that people could buy for some thousands of dollars and get them shipped back to their home country.

After we arrived in Halong Bay, we set sail!

We got to kayak around some of the islands and visit a giant cave in one of them! Apparently my camera was so bad that all my cave pictures were blurry =/

The chefs on the boat crafted this masterpiece.

At night, we just chilled with the other travellers while looking at the night sky. It had been a while since I’d been anywhere remote enough to actually see a starry night.

The next morning, we were taken a fishing village on the water. They had a fishing boat on display and were explaining the various features of it. The fisherman can even sleep in the boat and has a way to cook on it. He can basically live out on the water.

Next, we went on a boat ride to an oyster farm.

At the oyster farm, the guide explained the process of how pearls were farmed. As a demonstration, the guide asked one of the travelers to randomly pick an oyster out of the tank. The guide took it out and immediately killed it and extracted the pearl and the rest of us immediately wondered, “did she just murder that oyster just to show us there was a pearl inside?” Kind of a waste of an oyster, but okay.

That night after the tour ended and we were all back in Hanoi, we randomly bumped into some of the British travellers that we went on the cruise with. We all went barhopping and bonded over our mutual dislike of the Trump presidency and Brexit. It was real fun!

Link to photo album: here

Perfume Pagoda

From Hanoi, we made a day trip to the Perfume Pagoda, a complex of Buddhist temples. The temples were in quite a remote area and it would have been really hard to get to these places without an organized tour. The tour bus first took us to a pier where we all got on small six person boats. Each boat was paddled by a lady, and they each paddled for an hour to go 4km. It was kind of nice to get away from the city a little bit – no more smelling exhaust and bad air.

Interesting way to paddle a barge…

Outside the Thien Tru Pagoda in the rain.

I think this was the first time I ever went to a Buddhist temple in Asia.

I think this was the place where the monks are buried.

Next, we hiked up a mountain to get to Huong Tich Cave. The cave itself is also a religious site.

Pretty amazing how the cave formed naturally over time.

Outside the entrance to the cave.

To go back, we took the same boat paddled by the same lady. Along the way, we came across a man fishing in the river. It’s just so different here compared to the lives we are used to in North America.

Link to photo album: here

Hanoi

With one week of vacation left at my job for this year, I decided to go to Hanoi, Vietnam! I chose Hanoi for a couple reasons: somewhere I’d never been, somewhere I’d like to go, and I can get cheap airfare. My plane tickets there and back only costed $630 USD through Asiana Airlines.

The weirdest part about boarding the plane: all the flight attendants just assumed I was Korean and spoke Korean to me, but changed to English for anyone that didn’t look Chinese/Japanese/Korean. I guess better to do that than to wrongly assume and speak English to actual Koreans. What’s cool about a Korean airline is that they serve Korean food like Bibimbap too. Oh, and they also asked me if I had a Samsung Galaxy Note 7. I guess that makes sense. Exploding plane… not good…

I arrived in Hanoi at night, and after a terrible night of jet lagged sleep, my adventure began.

Crossing the street on busy streets without traffic lights

Probably the biggest WTF moment I had was when I noticed that there are exactly zero traffic lights at intersections and there’s like a hundred people on mopeds crossing these intersections. People here are somehow magically able to weave through each other while crossing the intersection. People crossing the street just walk at a constant pace and just let the drivers drive around them.

The first time I crossed the street, it was like a giant leap of faith. As I’m crossing the street, I’m thinking “I wonder if this is what it feels like to know your life is about to end”. After I crossed, I thought, “Oh that wasn’t so bad”. But then there are like a dozen more intersections to cross before getting to the destination. After a while though, it definitely got easier.

There’s so many people here and the air pollution is epic

I thought I was used to large Asian cities (e.g. Hong Kong, Tokyo, etc.), but Hanoi is on a different level. The average population density of Hong Kong is about 6000 people/square km, but in Hanoi, it’s about 15000. For some reason though, it doesn’t seem like there are as many people walking around as in Hong Kong or Tokyo. Maybe it’s because they’re all driving their mopeds. It’s so crowded here that some people live in front of an unused railway track.

The streets are way less spacious too. People are always selling stuff on the side of the street, or people are parking their mopeds everywhere, so it makes it really hard to just walk in a straight line along the sidewalk. And as you’re walking, you’re constantly smelling exhaust.

Lots of cheap stuff

The street markets are often selling cheap knockoffs of things. People on the street were selling tons of North Face jackets. Apparently, they are made in Vietnam, but I have no idea whether or not the jackets here are real though, but they sure felt real. And they only cost $35 USD. I picked up two football jerseys for Bayern München and Borussia Dortmund for about $5 USD each. Dong Xuan market is another place selling tons of cheap stuff. Stores are tiny, but full of merchandise stacked up and the walkways are super narrow, but to our western standards, everything is super cheap. This is a city where a regular guy like me can walk into a Louis Vuitton store without being judged by all the people working there.

I almost bought this “Lepin” Millenium Falcon for $40 USD. The lady wouldn’t budge on her price =/.

On weekends, there’s a night market selling more cheap stuff.

They’ve got a really cool lake in the middle of the city

It was definitely the most scenic part of Hanoi that I went to.

On weekends afternoons and nights, everybody is going to Hoan Kiem Lake to hang out with their family and friends.

I wanted one of these electric cars as a kid…

Literally everybody came out to hang out that night.

At night, the lake lights up real good.

Of course, there’s the food

A while ago, there was a story about Barack Obama and Anthony Bourdain eating dinner in Hanoi. Since that happened, the restaurant they went to, Bún chả Hương Liên, became famous and tons of people went there to eat the “Obama Special” – Bún chả and spring rolls. A local guide we met later in the trip told us that this restaurant is overrated, but I thought it was good. Thanks Obama!

There was also this barbecue place. There’s a giant selection of meats with different cuts and you pick which ones you want and it all gets cooked on a giant barbecue platter. Aside from the usual beef, chicken, pork, they had an entire frog. Looking back, I should have ordered it. Frog is definitely up there on my list of delicious exotic meats. If I knew Vietnamese, I would have asked them if they had dog meat because I would have ordered that for sure. We ended up picking up a few things that looked good, but had no idea what they were. One of them tasted like beef and was kind of chewy and reminded me of beef intestines that I ate in Osaka.

At one point in the trip, we got a volunteer tour guide to take us around the city to eat stuff. We help them practice their English and pay for their food, and they show us around – it’s a pretty cool idea (Hanoikids). Our guide took us to try some fried eel in a salad and some eel soup.

Our guide also took us to eat this Vietnamese version of a steamed rice roll. Not as good as the kind I eat at Dim Sum.

Everybody knows Pho. It’s a lot different than the ones I eat in Vancouver and not very comparable. The ones I ate in Hanoi were generally plainer and was less savoury. It also costs about $2.50 USD. Some people prefer this taste over the kind we get in the western world, but I would disagree.

By far the best meal of the whole trip was at “The Hung Snake Restaurant“. Yep, I got to eat an entire snake – a bamboo snake. A guy came with a sack with a snake inside. He took it out and let me hold onto it to “play” with it before eating. Sure, okay, playing with a snake is great and all, but that thing was frickin poisonous and the entire time, I was just kind of freaked out and hoped that thing didn’t bite me.

The next thing you know, the guy takes out a platter with scissors and knives like in a surgery and cuts open the snake. As it bleeds to death, he drains its blood into a glass, THEN takes out its beating heart and puts it into another glass. FINALLY, he cuts out part of the stomach and drains its stomach bile into another glass. He hands me the glass with the still beating heart and tells me to eat it. It was exactly what I came here for and it was amazing. I only wish I had chewed the heart before swallowing it instead of swallowing it whole like he told me to.

The blood and bile were mixed with some sort of alcohol and I drank those too. My friend on the other hand, could not bear to watch the snake get murdered like that and barely ate any of it when the food actually came. More for me :). All sorts of snake bits were used with different cooking styles: grilled meat, deep fried bones, deep fried skin, snake tail boiled into a soup, sauteed meat, spring rolls, steamed meat, the stomach, etc. Everything was GREAT. A++, would eat again – the king cobra next time.

In addition to snake, I also wanted to try cat meat. I asked the staff at our hostel and he told me that he knew that people did eat that sort of stuff, but wasn’t able to tell me where. Too bad. I also missed out on this silkworm omelette that they only serve in the mornings. Everywhere I saw a cat or a dog, I’d wonder if people would kidnap them and cook them =/

As usual, I drank the local beer. The Beer Corner is a popular place. It was weird to see a kid who looked about 12 pour my beer. Apparently that’s allowed around here.

Their way of life can be very simple

Just some kids playing Tug of War.

Let’s cut some hair on the side of the street.

Unique history and culture

This is a country where for so much of their history, they were conquered by someone: China, France, Japan, etc. The French left behind some of their architecture too.

Since Vietnam is a communist country, of course there has to be a statue of Lenin.

There was also an influence from Confucianism here. Enough for there to be a Confucian temple, which is also the site of the Imperial Academy, the first national university of Vietnam.

How fitting that when we were there, there were groups of students posing for pictures for graduation.

They’re really proud about going up against their enemies and winning

From going to museums there, they are really happy about finally having their own country back again. There were so many exhibits about their triumphs against the colonialists, against the Japanese, and eventually against the Americans. They even claim that the Americans fabricated the Gulf of Tonkin Incident as an excuse to fight in Vietnam. That could very well have been true, but everything just seemed super biased. During the war, the North Vietnamese shot down a B-52, which they proudly display.

There’s even a bit of a B-52 in the water where it crashed. The buidings in the back are also super narrow, which was because buildings were taxed on their width (not sure if this is still the case though).

They also like to point out all the terrible things that their French conquerors did to them at the Prison Museum.

The body of Ho Chi Minh is preserved and displayed in the mausoleum. When we were there though, his body had been transported to Russia for some work, and so it wasn’t on display.

At their military museum, they went on about how they fought a war against American imperialism and showed off the weapons they used. And of course, every time I see a tank, I think “cuz baby you’re a firreeeworkkkkk” and drinking margaritas.

I think that sums up the visit to Hanoi real good!

Link to photo album: here

Paris

The last leg of our trip took us to Paris, and we’d be there on the same day as the Eurocup final between France and Portugal! We were all set to fly there until while having some beer at the Hofbräuhaus in München, I got an e-mail saying our flight was cancelled. Luckily, I knew my way around quite well already, so I booked train tickets right away through Deutsche Bahn. Our route had a transfer at my old stomping grounds – Stuttgart. I barely recognized the place since everything was under construction for Stuttgart 21. When I was there, the main train station hadn’t been renovated and people were protesting all over the place about the whole project. The trains also went a lot faster than I remembered – a whopping 319 km/h.

First order of business after arriving: food. The last two times I was there as a poor student, we never splurged on food, but now as working professionals, I can! Frog legs? Okay.

With the Eurocup games being hosted in France and the terrorist attacks that happened in Paris, there were soldiers on the street in just about every place with crowds. If any terrorist attacks were to happen in Paris, it wouldn’t be during the Eurocup games.

Later that night, we met up with one of our friend’s coworkers for dinner. Time for more food. Escargot? Okay.

Beef tartare? Okay. We all had one for ourselves, and if anything bad were to happen, there was only one washroom in our AirBnB. Would have been game over.

The next day, we went to Versailles. Instead of taking pictures of things, I played Pokemon Go instead. It had just launched in USA, and since I had an account from that launch, I got to play. Everywhere I went, there was Pokemon. Never mind that it was a blazing hot day without much shade in the palace gardens. Gotta catch’em all. It was Pokemon Go everywhere I went – there’s even an arena at the Arc de Triomphe.

Make Napoleon great again!

After all the walking around, it was time for more food. Foie gras this time.

The next day was a trip to the catacombs and saw the skeletal remains of a lot of dead people.

And also visited a famous dead guy: Napoleon.

After that, it was time to go to the fan zone at the Eiffel Tower to watch France VS Portugal. All these people are trying to get in through the many entrances. The police guarding the gate were letting women and children go in without lining out while everyone else had to. Chivalry is alive and well in France.

After a long while of waiting we got in. There were so many people walking on the gravel road that it kicked up so much dust everywhere and it was hard to breathe and I was coughing every few minutes. It wasn’t comfortable at all. There were long lineups everywhere and nowhere to sit. But the atmosphere was really good. Lots of cheering and anticipation for a France win.

A friend of ours, who was coming from another location came too late and couldn’t get into the fan zone to meet up with us. After a grueling ordeal of deciding whether or not to stay or go, we left and watched the game from a small restaurant near our AirBnB.

After Portugal won, people still cheered in the streets and set up firecrackers and stuff. I couldn’t have imagined what it would have been like if France won. All the France fans would have lost their shits and the streets would have been even more rowdy.

The next day, it was time to fly back home, thus ending my 3rd European adventure.

Link to photo album: here

Munich

From Berlin, we made our way to Munich. I didn’t take a lot of pictures here, since I’d been here 3 times before. We did the usual stuff like drinking, eating pork knuckle at the Hofbräuhaus, and visiting Marienplatz.

We also got to check out the Deutsches Museum – it is a museum of all things technology. From stone age technology all the way to current research problems.

While we were in Munich, we watched the game between Germany and France in the Eurocup at a local pub. After Germany lost, everybody was pretty quiet when they left the pub. There was just sadness 🙁

That’s about it for Munich!

Link to photo album: here

Deutsches Panzermuseum

The next excursion from Berlin was the German Panzer Museum. I’ve always wanted to go here ever since I heard about it. It was about a 3-hour drive from Berlin, so this presented a good opportunity for me and my friends to drive on the famous Autobahn. Too bad our rental car was a Volvo and not the Mercedes Benz that we wanted, but we still got to drive really really fast.

The museum focussed on German tank developments since the beginning: World War I. Definitely an awesome museum. I’d recommend it for anyone interested in the subject.

During the interwar period and World War II, the Germans took the tank concept and built it into a very effective war machine. This museum is paradise for tank nerds like me.

This museum is also paradise for mechanical engineers too. Here is an interactive exhibit on the tank’s transmission. Yanking on the lever let you shift gears and one can see how the gears move around through the clear covering. Definitely real cool for people who are into that sort of stuff.

There are lots of tanks here. This is only one of the many rooms.

There’s also an exhibit showing how kids learn how to play war at a young age and it questions the morality whether or not this is okay. Ironically, when we were there, a group of children were going through the whole museum screaming about how the stuff in the museum was the coolest stuff ever.

Right behind that, was an exhibit of guns and how humans engineered death.

The exhibit on how armour piercing rounds work was especially cool.

And also the cool cross-sections.

What’s a tank musum if you can’t actually go inside one?

And of course, one can’t look at tanks without thinking of margaritas and Katy Perry…

After visiting the museum, we stopped in Hamburg to grab a bite to eat. We ate at this restaurant with a mysterious set menu where we knew neither the price nor what we would be served. We ended up eating different kinds of seafood over a few courses (swordfish, among them!), and it was ~40 euros!

Link to photo album: here

© 2017 Henry Poon's Blog

Theme by Anders NorénUp ↑