Sunday, May 28, 2017

Envious of Ueli Steck


Honestly I had never heard of him before his death news. I knew about his death through many who are following his footsteps, among others, Kilian Jornet, François d'Haene and Anna Frosty. We all always automatically associate death with sadness as if it is supposed to. Even though I didn't know anything about him, I did as many people did, I was sad when I saw the news. However, after I looked through what he did, what he had achieved, and died during he was doing what he crazed for, I don't think we should be sad for him at all. By watching this short clip of his record breaking attempt at summiting Eiger, I think everyone would agree with me. 
My dear,  
Find what you love and let it kill you.
Let it drain you of your all.
Let it cling onto your back and weigh you down into eventual nothingness.
Let it kill you and let it devour your remains.
For all things will kill you, both slowly and fastly, but it's much better to be killed by a lover. 
 
Falsely yours,
Charles Bukowski
Not many people have such a passion and the dedication to go with it. I am envious of his life. It is a good life because it has a good ending. 
















Saturday, April 15, 2017

The impossible to read - Tung Shing


I love not only reading but also collecting books. Some books in my collection are for me easy to digest, such as Atlas Shrugged, Das Kapital, A Brief History of Time, and To Kill a Mockingbird. While some are impossible to read pass the first 10 pages, such as Ulysses, Al-Quran, The Golden Notebook, and The Iliad. For these books, I always think that I am not able to read it not because my level of understanding is not good enough. Instead it is because it is not the right time for me yet. Take as example my favorite book of all time : The Catcher in the Rye. I would not say it is for everybody. Without a certain life experience, The Catcher just won't have the same impact. Without, the story would just appear to be bland and Holden would seem to be mildly annoying at best. 

Tung Shing (通勝) used to be on the "impossible to digest" side of the spectrum. But after my grandpa's death a few years ago, it appeared to be the right time to pick up Tung Shing again and dig in. May be it was because his death forced me to face my own mortality, may be it made me realize that what it wanted to say in this book was important to pass down to generations to come. My grandpa was always the only person in my family to read and understand it. By curiosity, I once or twice consulted my grandpa on some parts of the book but never really went in depth. But since his death, I became the only one in the family who has Classical Chinese ( 文言文) background thus the capability to tackle Tung Shing. I feel I have the responsibility to study and pass down the knowledge. Now I must carry the torch.

First of all, a crash course on Tung Shing. Tung Shing is a Chinese almanac and divination guide according to Wikipedia. But it is more than just that as explained in this website which I quote :
"The first few pages, consisting of the year zodiac ... "Spring Ox Diagram" (春牛圖), "Annual Stars Directions" (神煞), and "Heavenly God Bestowing Luck" (天官賜福) ... are unique to each year while the last 20% of the Almanac, which consists of the calendar section, is also different for each year. The 80% portion, which is repeated every year, contains topics ranging from face reading (面相), bazi (八字), Dong Gong date selection (董公擇日), talismans, various fortune telling systems, year charts, etc."
It is a common practice to buy a copy of the lastest Tung Shing before the Chinese New Year and store it in home altar when it is not used. According to my grandpa, one can also hang Tung Shing at the door for protection against the evil spirits as it contains talismans of Zhang Tian Shi (張天師). For the same reason, my grandpa said to me once not to simply discard Tung Shing from previous years. Instead just leave them in the cabinet of our home altar.

As one can see from above, the contents of the 80% invariant portion of Tung Shing is very diverse. So much so that on some topics, I still don't have any idea what they serve. The following is the list of topics that I understand or at least understand the concept, in order of appearance in the copy I own :

- conversion table between Chinese Zodiac hours and international 24-hour system
- conversion table between Chinese and Gregorian calendars
- traditional customs
- Zhang Tian Shi's (張天師) talismans and their uses
- Zhou Gong's dream dictionary / 周公解夢
- divination based on your birthday date in Chinese calendar
- miscellaneous words of wisdom from Confucius
- list of formats for formal letters, wedding invitations, birthday invitations
- The Twenty-four Filial Exemplers / 二十四孝
- the complete matrix of titles for family members
- conversion table between 24 solar terms and Gregorian calendar (24 solar terms just been listed as one of the UNESCO intangible cultural heritage in December last year)
- ZhuGe Liang's divination / 諸葛神數
- Three Character Classic / 三字經
- Thousand Character Classic / 千字文
- Hundred Family Surname / 百家姓
- Zeng Guang Xian Wen / 增廣賢文
- Zhu Zi Zhi Jia Ge Yan / 朱子治家格言
- Chinese medicinal herbal recipes for a list of common maladies
- face reading
- moleosophy (mole divination)
- palm reading

Holding Tung Shing like a
bamboo book.
Even after I list down those I understand, there is still about 50% of the book that I don't understand. However the thing about Tung Shing that drives me crazy isn't the diversity of the topics but the lack of a table of contents, which makes the quick search impossible unless you know the book like the back of your hand. On the ergonomic side, the character size is sometimes too small and inconsistent, making the reading experience quite challenging. One good design worth mentioning is the odd dimension of the book. Its width to height ratio is really small, which means it is way higher than average books with around the same width. Probably this is designed as such to accustom the vertical writing and to be hold in one hand and read like an ancient bamboo book.

As anyone with a scientific background, I have to admit that there might be many topics and skills such as talismans, divination, face reading, and etc. that no longer apply in our modern world. The way I see it, there are still reasons to learn them. First they are fun. I totally get the fact that fortune telling is so much fun and I am glad I know a few techniques. But never ever believe in it. Secondly, even though it doesn't make sense in modern day, it is still interesting to see the way they work, and the way people think in the past. Who knows the combination of different perspectives can somehow amount to breakthrough to leap humanity forward. The fact is, reading Al-Quran doesn't mean I am a Muslim ; reading Mein Kampf doesn't mean I am pro neo-Nazism ; reading Lolita doesn't mean I am a pedophile ; and reading Tung Shing doesn't mean I am superstitious. It is all about gaining empathy and perspective, to gain a better understanding of things existed before us and things still exist around us. I hope by this blog entry, I can spark the interest of some of the readers on Tung Shing.























Saturday, March 4, 2017

A Zero Congestion Penang


I have been trying to assemble and arrange material on this topic for months. The only thing I felt lacking on this topic was my personal experience. So I figured I would wait for a few months first, accumulating my driving miles in Penang before I made my definitive statement. Well yesterday was the tipping point. Yesterday I felt like I had already experienced the worst traffic jam it could ever be in Penang and it was the perfect time to finish up this article.

I live in Butterworth and work in Bayan Lepas. During any normal Friday rush hour, the traffic would be horrible enough. But yesterday evening, the perfect storm happened. Multiple cars broken down and accidents along the highway from from my workplace all the way to Perai. From my office, I could see the jam started to form at around 17h. Waiting in office, in hope of sitting out the jam. I ate some, chit chatted with colleagues who were also waiting for the jam to clear up, and then I went to office gym. When I left the office at 21h, I thought it would be over. But guess what, it was still jammed! I finally reached home at 22h45, frustrated and exhausted.  

I had not been in Malaysia for long period of time during the last few years. The first thing I needed to do after coming back to Malaysia was practicing driving. Although I got my driving license a few years ago, I rarely drive until now. I don't drive in France simply because there is no need to. Public transport and bicycle can get me almost everywhere I want to go.

In Malaysia, that's a different story. You are getting nowhere without a car. Public transport is just not well developed as demonstrated by Andrew Han in his video. He also pointed out that sometimes even the public transport is good, the city itself is not walkable. The walk to a bus stop is often enough highly dangerous, required some physical fitness, and adventurous but not in a good way. What I found out in KL is the same, people take the LRT, Monorail, etc.., but usually it ends with a car ride from the LRT station back to home, rather than walking. Walkability is a major problem. Bicycle is not an option either because : first, there is no extensive bicycle lane coverage; second, the mindset of the road users is still not ready to accept cyclists; and finally, even there are proper bicycle lanes, it concerns me that they would be misused by motorbikers.

A developed country is not a place where the poor have cars; it's where the rich use public transportation.
-- Gustavo Petro --

In Oscar Boyson's very well-made video essay "The Future of Cities", one particular statement strikes me as a hard truth. He says : "When walking, cycling, and public transportation are the fastest ways to move, nobody feels like a second class citizen for not owning a car." Guess who are cycling to work every morning - foreign low cost workers in factories, who are considered as second class citizens in Malaysia. In fact in Malaysia, although nobody admits it publicly, the car you own represents your social status. Malaysians' craze about car brands like Mercedes Benz and BMW seems to be ridiculous to foreigners. I got a German friend. He had stayed in Malaysia for few months and he finds this craze about car brands from his own country rather amusing.

I deeply believe that the key to develop a better city is public transportation and walkability. After I first saw Jeff Speck's talk on TED, I am convinced by what so called "induced demand". Basically, it states that building more wider highways isn't going to relieve the traffic jam; on the contrary, it will worsen it. I used to live in a city where I can walk from one end to another without the concern of getting hit by a car. So I can immediately feel the difference when I am in KL. From a LRT station, I once tried to walk back to my uncle's house and I had to run across a highway because there was no other options. Highways are becoming the scars of KL and we are building more of them. In my opinion, the landscape of KL is beyond saving. The hope to convert KL a fully walkable city is very slim.

However Penang still has hope as it is not scarred by the web of highways yet. Looking at the Penang Transport Master Plan (PTMP), with a lot of public transportation proposals, a walkable Penang seems very promising. But a plan is just a plan. The execution is what that matters. I see PTMP as two parts : one is the development of public transportation ; and another is the development of roadways. From here we can foresee a risk. The order of execution of these two parts is really important. If PTMP starts with the development of roadways, then it will fall into the blackhole of induced demand. Yes, the congestion will be relieved but only for a while. More roadways are built, the less walkable the city becomes, everybody then feels the need the use more cars. So more cars will inflow and quickly fill up the capacity of the new roadways. Then the congestion problem is back again! It is just a vicious cycle of frustration. So the development of public transportation should be the priority.

Everybody has dreams. I have many too. One of them is a zero congestion Penang. A zero congestion Penang needs to be walkable and for that, not only policy makers have to make wise decision, people of Penang have to change their mindset too. Public transport is not for second class citizens. Instead it is meant for everyone, the public. This is not a part of the PTMP. But I have a dream, a dream that one day I can cycle across Penang bridge to work.























Sunday, February 19, 2017

TDD and Agile - A Retrospect of the Thales Project


After almost a month of sitting idly, finally I was assigned to a project. I started by writing some unit tests on the legacy code using CppUTest framework. The learning curve is hard. In fact, there are many things to learn such as mocks and stubs which I am having difficulty writing. But when I finally got my unit tests merged into the main codebase, that feeling was very satisfying. Furthermore, lcov is used to track the test coverage. Writing test cases and seeing the progression of the test coverage is almost like unlocking levels in video games, oddly addictive. 

Although I can say I know programming, this is the first time I get to work on a large codebase. With a large codebase, the importance of a software development process becomes clearer to me than ever before. In one particular school project, my teacher kept emphasizing on thinking about the test cases the code needed to fulfill before actually writing any code. During that time, I didn't know it was called Test Driven Development (TDD). Actually, I didn't even know there was a thing called software development process.

Before getting into Motorola, I knew almost nothing about TDD. The same goes for Agile. I first heard of Agile when working on the project under Thales during the summer of 2015. That time my friends and I were sort of left into the wild. It was my friend Louis who found out what was Agile. We tried to implement the process into our code development. But since it was just small project involving a small number of people, we dropped the idea and went on the coding blindly. In spontaneous and surprising ways when I come to think about it, we unconsciously implemented a few techniques from Agile. We were able to divide the code into parts. Each of us were responsible to manage different parts and at the same time, each of us knew the code thoroughly. We did stand up meeting every morning before working to make known the progress made and progress to make to each other. In fact, we were kinda in constant meeting and discussion since we were just four in our small office. This kinda rendered the stand up meeting in the morning to just a formality. Also by chance, we also performed quite often pair programming, which was also one of the techniques in Agile.

One major problem we faced during the Thales project was version control. Each time we made some code change, we needed to painstakingly integrate it into the principal code, which meant comparing side by side the code with all the changes and the principal code, copied and pasted the changes, recompiled, and prayed for the best. 90% of the time, there will be some errors. The worst case scenario, the bugs burst out like you just accidentally opened the Pandora's box. Near the end of the project, one of us, Cyprien, was needed to do this one and only task - version control and code integration. If only we used some sort of version control system like Git or Redmine, we could have freed Cyprien from that painful task of manual version control and put that extra hand into better use. Lucky for us, our team and our code size was relatively small, so manual version control was still manageable. With a large codebase and hundreds of people working on it like in Motorola, it becomes almost impossible.

I was never taught about unit test, software development process, and version control in school. After being a Motorolan and exposed to these new knowledge, I realized how bad the final product of the Thales project was - no singular coding style, no elaborate test cases, not well structured in general, and not easily maintainable in long term. I already imagine the person who continue to work on our code will hate us for life.























Friday, November 4, 2016

Alpsman


Suicidal morning


3am. Alarm goes off. Only one thought in my head : I seriously have no desire to race. My head is just not in the racing mode at all. In fact, I need to move back to Malaysia very soon. People are always afraid of change and so do I. By moving back to Malaysia, my life is uprooted. Anxiety about the future is inevitable. Plus moving is always a headache. Just so much stuff to think about and so much to sell or give away. I tend to give meaning to inanimate objects that I own. So losing stuff that I owned is heartbreaking, especially my two beloved bikes.

Unprepared mind is the worst when going into a long endurance race. I signed up for the race straight away after I got to know about the race in May without much thinking. My thought was : sign up first, plan later. I thought it could be a perfect ending for my stay in France and to my triathlon "career" since my first triathlon was also in Annecy. I initially thought it could be fun, but not recently anymore. In fact, all the training I did in September felt more like a job to me rather than enjoyment. 

The fact that this is the very first edition of Alpsman, there is no previous results to refer to nor testimony of how hard it is. There is just no way to visualize the course. All I know is the distance and the monstrous amount of climbing. 3.8k of swim which is supposed to be the easiest part, 183k of bike with a total of 4300m of climbing, and finally a marathon. There are also two finish lines : one is up at Semnoz for participants who manage to reach the 27k point of the marathon before 6pm to become Top Finisher ; and another one beside the Lake Annecy for everyone else to become Lake Finisher. That means to become Top Finisher, one has to do an extra 1300m of climbing on foot which makes a total of 5600m in the end! Just to put the cycling part of Alpsman into perspective, 183k of cycling with 4300m of climbing can already be crowned as the queen stage of a Tour de France!

I am number four.....forty six.
There are only 127 participants. I knew I was in deep shit when I lined up to get my bib. I saw all these triathletes with their super well-built body, and I mean all of them. Me ending up last is highly probable. I always try to avoid any motivational quote or the word "life" in my posts because I don't want to be too preachy. I put one only if my action matches up to the quote. For Alpsman I think I am allowed say : it is still a battle worth fighting even though it is a losing battle. It is absurd, I know. But I will be really sad if I never give it a try.
The struggle itself is enough to fill a man's heart. 
Albert Camus, The Myth of Sisyphus



The longest swim of my life


5am. Transition area. Bike checked, wet suit on, and boarding the boat. In my mind, I run through the transition step by step. Even though, everything is set to go, I still think I miss out something. Nervous is common, especially you are under-prepared in front of a daunting challenge, and alone. 

The swim is going to start by jumping off the boat at the middle of the lake, imitating the swim start of Norseman. On board of the boat and a sea of darkness. The main concern of all participants is the visibility of the markers. There are supposed to be five illuminated cubes of 1.5m and plenty of buoys to guide us during the 3.8k swim. When the boat passes near by one of those cubes, everyone tries to get a glimpse at it. Troubled when I see it. The cube is just not as huge and as bright as I thought it would be.

5.45am. The moment of truth. Everybody lines up to jump into the lake. I am reluctant but there is no turning back. The water is announced at 18°C and pitch black. I have never seen Lake Annecy as terrifying before. People are fear of the unknown and this can't be more true at this moment. A leap of faith literally.

As normal, I stay behind the crowd to avoid the super competitive and chaotic front. 6am. sharp, the boat blows the horn. The race starts and a tough day ahead is promised. At first I try follow the crowd in front of me. But then athletes at the front take off so fast it becomes impossible for me to keep up with them anymore. At some point, I can see nobody anymore and my worry has become the reality : I can't see any marker at all. The cubes are blended together with the lampposts and lights from the villages around the lake, making things worst. There are supposed to be people on kayaks who are supposed to guide us but I can't see any of them either.

Left behind with no reference point, no idea where to head to, I have to take a guess, guess which light I think is the marker cube. Towards a chosen point, I swim and swim for what feels like an eternity, and yet I find nobody. I seriously think I am dead last and the organizer has forgotten about me. While I refuse to admit it, deep down I know I am lost. Six in the morning, the sun is not out yet. Lost in the middle of the lake alone, shore is at least a few kilometers away from me. It certainly feels like I am the sole survivor of a shipwreck. The longer I swim, it turns more and more into a matter of survival.

The only thing that can probably guide me is my vague mental image of the general shape of the lake. I know the lake is more or less an elongated rectangle. Judging by the silhouette of the lights alongside the lake, I think I know with some certainty where Annecy is more or less situated. My thought is if I continue swimming towards the direction of Annecy, I should pass by St. Jorioz where the swim is supposed to end.  

There, I continue to swim. The only thing I worry about the most is exhaustion. I don't have a watch, so I don't know how long I have been swimming. Finally a flash of hope as I meet another participant. What a relieve to know that I am not the last and I am not the only one who got lost. We have a short discussion, and together we head towards a light source that, again we are not sure if it is the right direction. The tricky thing is, even we find a buoy by chance, we still are not sure if it is a marker or random buoy on the lake. The light source turns out to be false beacon. Again?! At this point, I have already lost count of how many times I have changed direction.

Daybreak. At last I can see more and more swimmers and kayakers, and also the end - St. Jorioz. However, the wind picks up speed and the water surface becomes really rough, making the final 800m or so extra tough. When I get out of the water, my legs are so weak that I am not able to run. Although wetsuit is still on, long exposure in 18°C water and with the cold wind, I shiver my way into the transition zone.

The moment I see the time, devastation! I have used 2 hours and 15 mins for the swim! Under normal circumstances, I should complete the 3.8k swim within 90mins. Taking into account of all the directional changes, I must have at least swam 5k! This revelation is like receiving an uppercut by Mike Tyson, all hope is shattered. Sitting in the transition zone, I am just in a state of utter disbelief.

One participant has chosen to quit straight after the swim, which is very rare in any triathlon. Nevertheless, the other participants who came out of the water the same time as me keep pressing on. Seeing them, I press on too. I put on two layers as the heavy rain is coming very soon, judging by the angry clouds above all of us. I am the last one out of the transition zone as I am having trouble changing because of all the shivering.

Here starts the beginning of the end.



Etape du tour


In any regular grand tour, the cycling part of Alpsman would have been dubbed as the queen stage. Why? 183km with 4300m of total climbing, 5 mountain passes including one HC climb up to Semnoz and 4 category-two climbs. Broken by the unexpectedly strenuous swim, I am not looking forward to what lies ahead. The hope of finishing is very slim already but I press on. This is a rare character-defining opportunity, I keep telling myself. No matter what, I must at least show my determination so that when I go to sleep tonight, I can say to myself : I had tried.     

The last place is not a funny position to be in. It requires a totally different mental state. A van is following me as they needs to sweep the race course after everyone has passed through. Every pit stop I pass by, they are packing up while waiting for me. Although the organizers and the volunteers are very helpful and friendly, I can't help but to think that I am bogging them down, putting some sort of pressure onto myself.

The route to Col de Leschaux is relatively simple. The slope stays around 4 to 5%, allowing my legs and my body to warm up after the cold swim. I am surprised that I am still able to take over one participant. I am so happy that I am no longer the last one, lifting the pressure off myself. Unfortunately it is short-live. He quits soon after I overtakes him, says the driver of the sweeping van. I am the last one, again...

After that, here comes the HC climb of the day : Semnoz. It starts out easy and gradually becomes unforgiving. Slowly but never stop, by the time I reach the top, it is already around 11h30. It is rewarded by a breathtaking view. It is either Semnoz is really near Mont Blanc or Mont Blanc is really huge. When I turn my head around at the top and BOOM! Mont Blanc with its snowy coat suddenly appears and occupies three third of the view.

A long descent and a long flat later, at around 12h30, I reach Lescheraines pit stop. From here I need to do two 50k-laps, passing through Col de Plainpalais and Col de Pres twice. The idea of giving up is omnipresent ever since I got out of the water. Seeing many participants already doing their second lap, disappointed and exhausted, I stop there for quite a while, hesitating whether to quit. I know very well I won't be able to finish it, but I will regret it if I quit here. So again, I press on.

Riding up Col de Plainpalais, I finally know how strong the other participants really are. They are doing their second lap, yet still able to look fresher than me. Countless overtake me with relative ease. Not long after the climb, the awaited rain hits and it hits hard. While the rain is welcome during the ascend, it is extremely cold during the descent. Wet road surface, shivering, the descent is not fun at all.

Although they both are second-category climbs, the gradient of Col de Près is way more challenging. During the climb, the cold rain hitting my face, my head is down and I grind and grind. The cutoff time for the bike is pushed to 19h00, but there is still no way I can finish it in time. By the time I reach Col de Près, it is already over 15h00.

Perhaps it is just me or the temperature is really dropping. The continuous rain and wind hitting my face to the point that I can't feel it anymore. My shoes is soaking wet and my toes are non-existent. My gloves and my fingers are the same too. My whole body is basically shaking out of control. Steering the bike during the descent is becoming dangerously harder and harder. I am in the red zone for way too long by now, physically and mentally. The cold descent of Col de Près is the tipping point. The race finally breaks me. Finally, I tap out.

The road of giving up isn't easy either. Skipping the second lap and at the pit stop Le Châtelard, I am instructed to cycle back to the transition zone in St. Jorioz anyway. After deciding to quit, the mind is shut down and simply unwilling to pedal anymore. Although it is only a small climb back to Col de Leschaux, it feels like torturing. After that, again, I shiver all the way down back to St. Jorioz. Then I walk towards a referee and he gives out the word : number 46 has chosen to abandon the race.
   
"Number 46 has chosen to abandon the race, I repeat",
says referee.



The defeated pioneers


Back to the hotel. It is time to make peace with myself the fact that I didn't make it. It is always hard to deal with failure. Even I know for the fact that there are many participants who quit, even it is not my first failure, even I know I already did my best, it is still sad to see all the effort amounts to a "Did not Finish" (DNF). 

Like as said in Vsauce's video Mistakes : "Failure is like a carving on the bark of a tree. Overtime the scar won't go away ... but it won't get bigger. You however can keep growing... The wound won't get smaller but you can make it a smaller part of who you are." I guess it would be sadder if I never walked out of the hotel room and tried the race out this morning.

One can easily blame the organizer for the terrible swim course, or the bad weather. But honestly, I am unprepared and simply not tough enough to become Alpsman this time. Considering this is the first Alpsman, to some extend, the lack of experience on the part of the organizer is understandable. The final result : 34 top finishers, 51 lake finishers, 5 absences, 37 DNF. The winner did it in 12 hours 21 mins and the last finisher did it in 18 hours and 46 mins. Through my experience in multiple triathlon races, over 29% of DNF is huge. It just shows how ruthless that day was. For all finishers, I salute you, you earn the title Alpsman. And for everyone else who failed, we are still the pioneers of Alpsman. We failed but we failed under gruesome conditions of epic proportions.