Sunday, February 19, 2012

A brief life story of mine

In 1970, I was born in Koga, Ibaraki, Japan, which is 60 km north of Tokyo. After I graduated from an elementary school in Ibaraki, I entered a prestigious private junior high school, Kaisei Junior High School in Tokyo. I didn't adapt to the school life there so I quit after 2 years. After I graduated from a public junior high school in Kawasaki, I went back to Ibaraki to enter a public high school.

In 1989, I was accepted into Japan's most prestigious university, the University of Tokyo. I studied economics.

My dream then was to become an academic economist. Although I passed the entrance exam for the graduate school of economics in the University of Tokyo, I declined the acceptance. I thought that just studying the economic theories seemed boring and I would rather look at the real economy. That's why I got a job at the Bank of Tokyo (currently, the Bank of Mitsubishi Tokyo UFJ). However, I didn't like its conservative atmosphere and quit 6 months later.

I was a part-time worker for a year and experienced different kinds of jobs as such an office clerk at a community center, an assembly worker at a bus manufacturing factory, a salesperson for photocopiers and a security guard at a roadwork site. It was fun and each experience broadened my views.

In 1996, I found a job at a small software company in Kichijoji, Tokyo. This was the time when I became a professional software engineer. It was easy for me to master the technologies because I did a lot of programming when I was a junior high school student. I worked for cutting-edge companies including Rimnet and Tenartni.

In 1999, I moved to Canada. After I attended ESL schools in Toronto for 4 months, I became a regular student at the University of Victoria in British Columbia, Canada. I took computer science courses, which turned out to be uninteresting. Although I got straight As, I felt bored so quit the college. I went back to Toronto.

Once I got permanent residency in Canada, I started working in a small software company run by Canadians. It was most thrilling when I worked with the media company Sound Source.

In 2003 , I went to Korea and studied Korean, and in 2004, Mandarin in China. I got the level 5 certificate(National Korean Proficiency Exam) for Korean and level 7(HSK) for Chinese. These grades are good enough to enable the holder to be accepted to universities in the respective countries.

In 2004, I worked as a bridge engineer for an Indian software company, Patni Computer. I was based in Tokyo to help Indian engineers working in Japan.

In 2005, I became a full-time stock trader. I didn't work for a company; I stayed home and traded online. Although I made one million yen at the beginning, I lost it all when the stock market crashed at the beginning of 2006.

In 2006, I started my own software company, Softculture. I worked for a lot of projects including http://go-jimbou.info/ and http://commonsmarker.com/.

In 2008, I moved to Vietnam. I studied Vietnamese in college language schools. Although I tried to set up a software company for offshore development, I could not make it due to some problems.

In 2010, I braved US CPA exam. After studying 6 months, I passed all the 4 sections of the exam. Although I tried hard to find a job at big 4 accounting firms in Vietnam, I was unsuccessful.

In 2011, I had a job interview with Twitter at its San Francisco headquarters. Unfortunately, I was not accepted. I started http://shohyoj.in. Its tag line is "A book review site that lets you know how attractive the reviewers are".

I was married for 2 years between 2006 and 2008. I have no children.

My IT skills include programming, web development and server administration. When it comes to programming skills, I am the best at Ruby. I am also good at PHP / C / C++ / Java. Currently, I am also studying web design.

Language skills include English, Korean, Vietnamese and Chinese. My TOEIC(an English proficiency test) score is 965.

I am very active in social media. My Japanese blog(http://d.hatena.ne.jp/elm200) has attracted about 4 million page views in the past 5 years. I have more than 11500 followers at Twitter(@elm200) as of Feb 2012.

Sunday, January 8, 2012

Life is an intriguing multidimensional object

I used to think in a simpler way; advanced countries should be the future of developing countries. Developing countries should follow suit and should catch up with advanced countries.

It was easy for me to think this way when I lived in advanced countries such as Japan and Canada. But my thoughts are started to change after I actually began to experience life in developing country such as Vietnam and the Philippines.

There are many social problems in developing countries. Social infrastructures are poor. Governments are corrupt. Many destitute people have no access to basic necessities such as medicine and education.

Yet I have also found positive sides in developing countries. People are more relaxed and enjoy their lives. Family bonds are strong. Friendships are more appreciated.

Even though advanced countries boast their power and wealth, their people are not at all euphoric. People in advanced countries have a set of problems that is different from that of developing countries. People are forced to work hard under pressure. They have no time to enjoy their lives despite their wealth. Family bonds are week and almost disappearing. Friendships are sacrificed over their individualistic goals.

I slowly started to realize a simple fact. Probably, the comparison of an advanced country and a developing country is not a matter of which one is better. Instead, all we can say is that they are just different. None is more advanced nor lags behind. Each has its own pros and cons.

We can apply this way of thinking to another field, life. Some people are very smart and others are not. Some graduate from the best universities and others lack even basic education. Are university graduates are making more money than others? Maybe. Then are university graduates happier than others? This is a tricky question. I have no clear-cut answer to this.

After all, life is not something that you can grasp easily and get bored with quickly. Life are full of wonder and it stems from life's inherent self-contradictory nature. Life is an intriguing multidimensional object.

Tuesday, December 27, 2011

New Fourties

I was born in 1970. I am 41 years old. I am becoming 42 next June.

You are always new to your age. You are 20 years old, 30 years old or 40 years old for the first time and only once in life. You always feel vulnerable each year your birthday adds one to your age.

We need role models more than we would expect. We are almost slaves of role models. We need them because we feel nervous. The established idea tells us what we should do depending on how old you are. If you are off the track, you will invariably feel insecure.

There are a plenty of role models for young people. Most novels, movies and dramas feature young characters. Once you have reached 40, however, you will see a dramatic decrease of such lliterary role models that you can refer to.

Here is a reason. Young people are in search for many paths in life. By the age of 40, people accept fixed social roles and feel perfectly accustomed to monotone life styles. They are too boring to be drama characters. That is why we have few mediocre stereo types for people over 40.

The time is changing. Material production is no longer a big problem(especially for those who live in advanced countries). Instead, knowledge produces more value in the economy. People are now forced to learn throughout life and to adapt to new social changes.

For most people, the first role models are their parents. My father was an ordinary salaried man. He was a middle-level manager at a factory. He worked very hard, but his life style lacked variety. Once he would finish work and go home, he would turn on and watched TV purposelessly. I didn't like his life style at all and this experience grew my general disgust for life styles of salaried men.

I don't want to be like my father. I have no role models. I have no external guide on how to lead my fourties. As Steve Jobs said before, I have to listen to and follow my inner voice. I have to create my own life style by myself.

Friday, December 23, 2011

Impression on the Philippines

Yesterday I aired a radio program via Ustream. I invited three guests. They are Filipino English teachers.

Click here to listen to the recording.

They graduated from the University of the Philippines(UP). UP is the most prestigious university in the Philippines. Those teachers are intelligent as well as friendly. They speak English fluently. I like them very much.

This is my first visit to the Philippines. My first impression is that people are truly hospitable and outgoing.. They find happiness in conversations with their family members and friends. They know how to enjoy their lives. I was hugely impressed.

On contrary, Filipino economy has not yet reached its full potential. Its economic development has been impeded by its notoriously corrupt politicians. It has been saddening me for many years.

I have visited almost all Asian countries but the Philippines until this year. What prevented me from coming to the Philippines? It was probably because I did know that Filipino people would be super-nice despite innumerable serious social issues. I did not want to feel depressed when seeing these difficult problems. I wanted to avert my eyes from them.

I have not reached the conclusion yet. After all, I am just an outsider; it will take a long time before I finally understand the essence of this tropical country. It is unlikely for me to fathom it to the full extent before I die.

I will try to comprehend this country better step by step as I socialize with this world's most amiable Filipino people.

Wednesday, December 7, 2011

Self introduction video

It's been a while since I posted an entry last...

I have created a self introduction video in English. Take a look. You will see what kind of person I am.

Saturday, September 10, 2011

Skip lists in Ruby

Skip lists are an interesting data structure that you can use as a substitute of balanced trees. This relatively new data structure was invented by William Pugh in 1990. According to his paper on skip lists :

Skip lists are a data structure that can be used in place of balanced trees.
Skip lists use probabilistic balancing rather than strictly enforced balancing
and as a result the algorithms for insertion and deletion in skip lists are
much simpler and significantly faster than equivalent algorithms for
balanced trees.

I have tried to implement skip lists in Ruby. It is not super hard because the paper has pseudocode and the algorithm is rather intuitive.

class Node
  attr_accessor :key
  attr_accessor :value
  attr_accessor :forward

  def initialize(k, v = nil)
    @key = k 
    @value = v.nil? ? k : v 
    @forward = []
  end
end

class SkipList
  attr_accessor :level
  attr_accessor :header
  
  def initialize
   @header = Node.new(1) 
   @level = 0
   @max_level = 3 
   @p = 0.5 
   @node_nil = Node.new(1000000)
   @header.forward[0] = @node_nil
  end
  
  def search(search_key)
    x = @header
    @level.downto(0) do |i|
      while x.forward[i].key < search_key do
        x = x.forward[i]
      end
    end    
    x = x.forward[0]
    if x.key == search_key
      return x.value
    else
      return nil
    end
  end

  def random_level
    v = 0
    while rand < @p && v < @max_level
      v += 1
    end
    v
  end

  def insert(search_key, new_value = nil)
    new_value = search_key if new_value.nil? 
    update = []
    x = @header
    @level.downto(0) do |i|
      while x.forward[i].key < search_key do
        x = x.forward[i]
      end
      update[i] = x
    end    
    x = x.forward[0]
    if x.key == search_key
      x.value = new_value
    else
      v = random_level
      if v > @level 
        (@level + 1).upto(v) do |i|
          update[i] = @header
          @header.forward[i] = @node_nil
        end
        @level = v
      end
      x = Node.new(search_key, new_value) 
      0.upto(v) do |i|
        x.forward[i] = update[i].forward[i]
        update[i].forward[i] = x
      end
    end
  end
end

I have not implemented the delete method yet. It is similar to insert method and won't be so difficult to code. If you are interested, why don't you try to write it on your own?

Thursday, September 1, 2011

Visiting Goole

Yesterday I visited Google's headquarters to meet one of my acquaintances in US. He works for them as a software engineer. The Google's offices - actually they call them campuses like ones in college - were just overwhelmingly beautiful and affluent. As I have heard before, there were a plenty of decent restaurants and cafes inside the campuses and all foods and drinks are served to employees and visitors for free of charge.

I also got into the inside of office buildings and saw how employees work there. Their working desks were rather ordinary for North America, separated with cubicles (but the walls were semitransparent so that they won't feel isolated) However, beside their desks, there also existed sofas, toys, food and drink vendors, and all other kinds of amenities that help engineers alleviate their tiredness and keep concentrating on their work.

Google boasts of the quality of their engineers. They are the best and brightest in the world. They don't care which country the engineers come from and what kind of background they have - as long as they are smart.

I was totally overwhelmed. I just stood there in utter amazement. I was forced to realize that every effort I used to make in Japan just ended in vain. It is simply impossible for Japanese IT companies to defeat Google. It is just because Japanese companies run IT business wrong, while Google does it right.

(I also posted on FB and G+ .... Actually at first I didn't mean to post it on Blogger, I changed my mind because I've heard that G+ has a restriction that forces you to see only the latest 250 posts in your Profile screen)