tag:blogger.com,1999:blog-19927648233002412342024-03-11T12:23:34.110+09:00Going on RailsI have been working on Ruby on Rails for years. I am a software engineer as well as a business person who tries to create the future.Eiji Sakai a.k.a. elm200http://www.blogger.com/profile/07259027018805783593noreply@blogger.comBlogger76125tag:blogger.com,1999:blog-1992764823300241234.post-79780675560316978122022-05-02T14:36:00.003+09:002022-07-21T09:18:27.002+09:00It has been a while since I posted lastI don't remember how many years have passed since my last post. I will post entries sometimes. I have just started learning English again. I signed up for an online English school, where I can talk to teachers worldwide, that is, Asia, Europe, Africa, and the Americas. I have had teachers from the Philippines, South Africa, and Papua New Giniua.
I used to worry about grammatical mistakes in my English. But does it matter? Everybody knows that I am not a native English speaker. My mother tongue is Japanese. So who cares about my English grammar?
A far more important thing is what I express. How could it be helpful if I had nothing to convey but had perfect grammar instead? I believe my English is good enough for readers to understand. If there is anything unclear to you, please ask me. I will write what I feel inside from now on.Eiji Sakai a.k.a. elm200http://www.blogger.com/profile/07259027018805783593noreply@blogger.com0tag:blogger.com,1999:blog-1992764823300241234.post-48633726238973784562017-09-14T00:28:00.002+09:002017-09-14T00:32:01.495+09:00Watching television is a waste of time<div dir="ltr" style="text-align: left;" trbidi="on">
<p>
Many people enjoy watching television. They can get useful information as well as good entertainment from it. At the same time, some people claim that watching television is harmful. They also point out that watching it is no longer necessary, because recent advances in technology are bringing about more efficient ways to get information. I agree. Personally, I believe that watching television is just a waste of time.
</p>
<p>
First of all, watching television is a passive activity. When you read books, you need to concentrate on whatever book you are reading. Otherwise, you will not be able to understand what the books attempt to convey. In contrast, you have to make no active effort when you watch television. Broadcasting stations decide what you can view. Once you have chosen a channel on the television set, you will never have a choice about what you will see. As a result, you might stop thinking for yourself. This is how television makes you passive.
</p>
<p>
In addition to the previous point, television is no longer the best information source. Nowadays, the Internet offers better information in both quality and quantity than television. For example, you have to sit and wait for a long time before your favorite dramas appear on television. By contrast, on the Internet, you can watch them anytime you like. Weather information is available on television, but you can get more detailed information on websites. Furthermore, the Internet provides a virtually unlimited amount of information, while a television channel has only twenty four hours a day to broadcast programs. In many ways, television is inferior to the Internet as a source of information.
</p>
<p>
In conclusion, watching television wastes your precious time. People tend to become passive when they watch television. Moreover, television is not as good as other information sources. Television used to be the main source information and entertainment at home, but it is no longer the case. Your time is always limited. You should think twice about spending a lot of time watching television.
</p>
<p>
(Thanks for the correction at <a href="http://www.cz-training.com/">CZ-Training</a>)
</p>
<br /></div>
Eiji Sakai a.k.a. elm200http://www.blogger.com/profile/07259027018805783593noreply@blogger.com1tag:blogger.com,1999:blog-1992764823300241234.post-1781226703041625122017-09-08T15:02:00.003+09:002017-09-08T15:18:33.049+09:00What are the best jobs?<p>
Personally I don not agree with the argument that the best jobs pay the most. Money is just one aspect of a job. How much you can learn from the job is a more important aspect.
</p>
<p>
First of all, many people who have high paying jobs are miserable at work. Let's assume that people have a well-paid job, but they are not interested in it. Although they can make a lot of money at it, they will not be satisfied with it and will feel a great stress at work. As a result, they will have to spend a great amount of money buying things to compensate for their regular dissatisfaction and distress. They will not be able to save money at all even though their income is very high.
</p>
<p>
Another pitfall of high income work is that you might be trapped in such a job and might not be able to move to another job that would potentially give you more satisfaction. This deprives you of not only the possibility to get a more suitable job but also the chance to grow professionally. People never perform best in jobs they do just to make a living. They need to really like what they do. If they don't make a serious effort at the workplace, they will never develop professional skills either.
</p>
<p>
In conclusion, the best jobs are the ones that offer workers the greatest growth opportunity both professionally and mentally. Many people are still unhappy even though their jobs pay a lot. High income jobs might also prevent you from getting a more fulfilling job or even a calling. Of course, sometimes people can get lucky and both growth and high income. However, even in such a case, we should consider the high income something extra on top of what is really important: personal growth and professional development.
</p>
<p>
(Thanks for the correction at <a href="http://www.cz-training.com/">CZ-Training</a>)Eiji Sakai a.k.a. elm200http://www.blogger.com/profile/07259027018805783593noreply@blogger.com4tag:blogger.com,1999:blog-1992764823300241234.post-4169081246057580182012-02-19T20:49:00.011+09:002012-02-20T08:44:23.887+09:00A brief life story of mineIn 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. <br />
<br />
In 1989, I was accepted into Japan's most prestigious university, the University of Tokyo. I studied economics.<br />
<br />
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.<br />
<br />
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.<br />
<br />
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.<br />
<br />
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.<br />
<br />
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.<br />
<br />
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.<br />
<br />
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.<br />
<br />
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.<br />
<br />
In 2006, I started my own software company, Softculture. I worked for a lot of projects including <a href="http://go-jimbou.info/">http://go-jimbou.info/</a> and <a href="http://commonsmarker.com/">http://commonsmarker.com/</a>.<br />
<br />
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.<br />
<br />
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.<br />
<br />
In 2011, I had a job interview with Twitter at its San Francisco headquarters. Unfortunately, I was not accepted. I started <a href="http://shohyoj.in">http://shohyoj.in</a>. Its tag line is "A book review site that lets you know how attractive the reviewers are".<br />
<br />
I was married for 2 years between 2006 and 2008. I have no children.<br />
<br />
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.<br />
<br />
Language skills include English, Korean, Vietnamese and Chinese. My TOEIC(an English proficiency test) score is 965.<br />
<br />
I am very active in social media. My Japanese blog(<a href="http://d.hatena.ne.jp/elm200">http://d.hatena.ne.jp/elm200</a>) has attracted about 4 million page views in the past 5 years. I have more than 11500 followers at Twitter(<a href="http://twitter.com/elm200">@elm200</a>) as of Feb 2012.Eiji Sakai a.k.a. elm200http://www.blogger.com/profile/07259027018805783593noreply@blogger.com6tag:blogger.com,1999:blog-1992764823300241234.post-53078352209773949302012-01-08T23:01:00.006+09:002012-01-22T07:54:00.858+09:00Life is an intriguing multidimensional objectI 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.<br />
<br />
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.<br />
<br />
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.<br />
<br />
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.<br />
<br />
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.<br />
<br />
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.<br />
<br />
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.<br />
<br />
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.Eiji Sakai a.k.a. elm200http://www.blogger.com/profile/07259027018805783593noreply@blogger.com3tag:blogger.com,1999:blog-1992764823300241234.post-2823165996707588432011-12-27T18:18:00.001+09:002011-12-27T21:45:10.575+09:00New FourtiesI was born in 1970. I am 41 years old. I am becoming 42 next June.<br />
<br />
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.<br />
<br />
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.<br />
<br />
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.<br />
<br />
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.<br />
<br />
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.<br />
<br />
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.<br />
<br />
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.Eiji Sakai a.k.a. elm200http://www.blogger.com/profile/07259027018805783593noreply@blogger.com0tag:blogger.com,1999:blog-1992764823300241234.post-90331804750145599742011-12-23T17:51:00.006+09:002011-12-23T18:54:07.633+09:00Impression on the PhilippinesYesterday I aired a radio program via Ustream. I invited three guests. They are Filipino English teachers. <br />
<br />
<a href="http://www.ustream.tv/recorded/19315470">Click here to listen to the recording.</a><br />
<br />
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.<br />
<br />
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.<br />
<br />
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.<br />
<br />
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.<br />
<br />
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.<br />
<br />
I will try to comprehend this country better step by step as I socialize with this world's most amiable Filipino people.Eiji Sakai a.k.a. elm200http://www.blogger.com/profile/07259027018805783593noreply@blogger.com2tag:blogger.com,1999:blog-1992764823300241234.post-69320789301168900532011-12-07T09:51:00.000+09:002011-12-07T09:51:28.318+09:00Self introduction videoIt's been a while since I posted an entry last...<br />
<br />
I have created a self introduction video in English. Take a look. You will see what kind of person I am.<br />
<br />
<iframe width="560" height="315" src="http://www.youtube.com/embed/Z89Ogaqidek" frameborder="0" allowfullscreen></iframe>Eiji Sakai a.k.a. elm200http://www.blogger.com/profile/07259027018805783593noreply@blogger.com1tag:blogger.com,1999:blog-1992764823300241234.post-57536601861593564762011-09-10T05:06:00.004+09:002011-09-10T05:11:35.580+09:00Skip lists in RubySkip 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 <a href="ftp://ftp.cs.umd.edu/pub/skipLists/skiplists.pdf">his paper on skip lists</a> :<br />
<br />
<blockquote>Skip lists are a data structure that can be used in place of balanced trees.<br />
Skip lists use probabilistic balancing rather than strictly enforced balancing<br />
and as a result the algorithms for insertion and deletion in skip lists are<br />
much simpler and significantly faster than equivalent algorithms for<br />
balanced trees.<br />
</blockquote><br />
I have tried to implement skip lists in Ruby. It is not super hard because <a href="ftp://ftp.cs.umd.edu/pub/skipLists/skiplists.pdf">the paper</a> has pseudocode and the algorithm is rather intuitive.<br />
<br />
<pre class="brush: ruby">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
</pre><br />
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?Eiji Sakai a.k.a. elm200http://www.blogger.com/profile/07259027018805783593noreply@blogger.com4tag:blogger.com,1999:blog-1992764823300241234.post-88479196232405451572011-09-01T01:04:00.001+09:002011-09-01T01:11:15.386+09:00Visiting GooleYesterday 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.<br />
<br />
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.<br />
<br />
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.<br />
<br />
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.<br />
<br />
(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)Eiji Sakai a.k.a. elm200http://www.blogger.com/profile/07259027018805783593noreply@blogger.com0tag:blogger.com,1999:blog-1992764823300241234.post-19609941669007222582011-08-26T09:47:00.005+09:002011-08-26T09:53:51.340+09:00Reverse a linked listI got a phone interview with a tech company located in San Francisco Bay Area.<br />
<br />
The interviewer questioned me about a linked list. I think that a linked list is basic but still can get really hard to answer in a short time under tremendous pressure.<br />
<br />
The question goes:<br />
<br />
<blockquote>Reverse any given linked list. For example, if a linked list A->B->C is given, return a new linked list C->B->A as an answer.<br />
</blockquote><br />
The interviewer gave me a hint that a simple loop is easier to program than recursion. After I struggled a lot, I came up with a rather clumsy solution. Probably, the interviewer wasn't very impressed.<br />
<br />
I should have studied more about data structures...Well, "don't cry over split milk" though.<br />
<br />
So today I have thought about a recursion version of the solution. I implemented it in Ruby. It took me quite a time (about 1 hour) to complete the code shown below. Please take a look if you are interested.<br />
<br />
<pre class="brush: ruby">require 'test/unit'
class Node
attr_accessor :value
attr_accessor :next
def initialize(value)
self.value = value
end
def add(node)
n = self
until n.next.nil?
n = n.next
end
n.next = node
end
def self.from_array(a)
return nil if a.nil? || a.size == 0
list = nil
a.each do |value|
if list.nil?
list = Node.new(value)
else
list.add(Node.new(value))
end
end
list
end
def to_array
arr = []
n = self
until n.nil?
arr.push(n.value)
n = n.next
end
arr
end
end
# returns [head, tail]
def reverse_linked_list_impl(list)
if list.next.nil?
return [list, list]
end
head, tail = reverse_linked_list_impl(list.next)
tail.next = list
list.next = nil
return [head, list]
end
def reverse_linked_list(list)
head, tail = reverse_linked_list_impl(list)
return head
end
class TestAlgorithm < Test::Unit::TestCase
def test_from_array
list = Node.from_array([1, 2, 3])
assert_equal(1, list.value)
assert_equal(2, list.next.value)
assert_equal(3, list.next.next.value)
end
def test_to_array
list = Node.new(3)
list.add(Node.new(5))
list.add(Node.new(7))
assert_equal([3, 5, 7], list.to_array)
end
def test_reverse_linked_list
arr = [1]
assert_equal(arr.reverse, reverse_linked_list(Node.from_array(arr)).to_array)
arr = [1, 2]
assert_equal(arr.reverse, reverse_linked_list(Node.from_array(arr)).to_array)
arr = [3, 1, 2]
assert_equal([2, 1, 3], reverse_linked_list(Node.from_array(arr)).to_array)
arr = [5, 3, 1, 2]
assert_equal([2, 1, 3, 5], reverse_linked_list(Node.from_array(arr)).to_array)
end
end
</pre>
Eiji Sakai a.k.a. elm200http://www.blogger.com/profile/07259027018805783593noreply@blogger.com1tag:blogger.com,1999:blog-1992764823300241234.post-5377913105154318362011-08-21T14:54:00.010+09:002011-08-24T14:10:43.674+09:00TweetMonkey allows you to tweet from any page on the web - now Google Chrome extension supports OAuthTweetMonkey is a web browser tool that allows you to post messages on Twitter from any web page on the spot. With this application, It takes just a few clicks to tweet. <br />
<br />
<a href="http://f.hatena.ne.jp/elm200/20110821142258"><img src="http://img.f.hatena.ne.jp/images/fotolife/e/elm200/20110821/20110821142258.png" alt="20110821142258"></a><br />
<br />
Last year, I built a Google Chrome extension for TweetMonkey.<br />
<br />
<a href="http://elm200.blogspot.com/2010/04/tweetmonkey-allows-you-to-tweet-from.html">TweetMonkey allows you to tweet from any page on the web - latest Google Chrome version has been released.</a><br />
<br />
Shortly after this release, however, Twitter stopped offering Basic Authentication. All Twitter clients are now required to support OAuth. Implementing OAuth was so painful that it took me a long time to complete the OAuth supported version of TweetMonkey.<br />
<br />
<b>Prerequisites</b><br />
All you need should be the latest version of Google Chrome. Mine is version 13.0.782.112 on Mac.<br />
Google Chrome on Windows should also work.<br />
<br />
<b>How to install</b><br />
Click on the link below to start the installation. You will be navigated to Chrome Web Store.<br />
<br />
<a href="https://chrome.google.com/webstore/detail/gfjllmmmpcifgaidpipfifmkicbfecha">Install TweetMonkey now</a><br />
<br />
Once the installation is completed, you will be navigated to a Twitter page and asked to authorize TweetMonkey to access to your Twitter account. Please authorize it (you can always disallow it by logging out on the option screen). Twitter page will show it as "TweetMonkeyEx" but this is what you want to get. Please be assured.<br />
<br />
<b>How to use</b><br />
You left-click on the TweetMonkey icon and will see a pop up show up. Enter a text and click on "Update" button to tweet. You can also enter the title and a shorten URL of the active tab by clicking on the chain icon.<br />
<br />
Right-click TweetMonkey icon in the right top corner of Chrome and choose "Option". Once the option screen shows up, you can log out and prevent TweetMonkey from accessing to your Twitter account.<br />
<br />
Have fun!<br />
<br />
<b>References</b><br />
This time, I check out so many websites to gather the information. I would like to show my gratitude to all the authors. Especially, I learned a lot on how to implement OAuth and Google Chrome extension from <a href="https://chrome.google.com/webstore/detail/ikknnkomiokeodcdkknnhgjmncfiefmn">Twitter Notifier</a>. I would like to thank its auther, Peter Josling.<br />
<br />
<b>Source code</b><br />
You can get a file called tweet_monkey.crx from the download link above. This is the extension file but it is merely a zipped file. Once you unzip it, you can have a look at source code of this software.<br />
<br />
Maybe I should post this to <a href="https://chrome.google.com/webstore/">Chrome Webstore</a> to reach broader audience. Before making this extension public, I would like to change the icon of the application. This "t" shape icon was taken from an old Twitter official website, so I need to change it to something original. If you could help me, please give me a shout. I would be very grateful.<br />
<br />
Eiji Sakai a.k.a. elm200http://www.blogger.com/profile/07259027018805783593noreply@blogger.com0tag:blogger.com,1999:blog-1992764823300241234.post-817398708715041762011-08-12T10:59:00.003+09:002011-08-12T11:52:56.389+09:00A "Hello World" Twitter client with OAuthLast year I wrote <a href="http://elm200.blogspot.com/2010/04/tweetmonkey-allows-you-to-tweet-from.html">a Twitter client</a> that allows you to tweet on any webpage in the browser. Shortly after I released it, Twitter abolished BASIC authentication and my Twitter client was not working any longer because of it. The age of OAuth has come, but I haven't done anything about it.<br />
<br />
Now I've started working on OAuth stuff again. I took a look at some blog entries and tried to build my first "Hello World" progarm for Twitter API with OAuth. This looked simple but it took me some time to write it. I will show you a few steps on how to write a Twitter client with OAuth in Ruby.<br />
<br />
As a prerequisite, you need to have two Ruby gem packages installed on your system. If not, run the following commands on the terminal:<br />
<br />
<pre class="brush: bash;">sudo gem install oauth
sudo gem install twitter
</pre><br />
<strong>1. Get a consumer key and a consumer secret by registering your client at <a href="http://twitter.com/apps">Twitter's website</a>.</strong><br />
<strong><br />
2. Have the users authorize your Twitter client to use their account<br />
</strong><br />
Type "irb" to start irb on the terminal. Copy and paste the below(double-click on the pane and you can copy and paste more easily):<br />
<br />
<pre class="brush: ruby;">require 'rubygems'
require 'oauth'
CONSUMER_KEY = "(your consumer key)"
CONSUMER_SECRET = "(your consumer secret)"
consumer = OAuth::Consumer.new(CONSUMER_KEY, CONSUMER_SECRET, :site => "http://twitter.com")
request_token = consumer.get_request_token
request_token.authorize_url
</pre>Navigate to the URL for user authorization and have users to authorize your client to access to their account information.(Most likely, your client's first user is yourself. If so, authorize your client to access to your own Twitter account).<br />
<strong><br />
3. Get OAuth token and secret to access to the account information of your Twitter client users. <br />
</strong><br />
Keep entering the below on the irb session:<br />
<br />
<pre class="brush: ruby;">require 'twitter'
oauth_verifier = "(a number shown on the user authorization screen)"
access_token = request_token.get_access_token(:oauth_verifier => oauth_verifier )
token = access_token.token
secret = access_token.secret
Twitter.configure do |config|
config.consumer_key = CONSUMER_KEY
config.consumer_secret = CONSUMER_SECRET
config.oauth_token = token
config.oauth_token_secret = secret
end
Twitter.update("Hello World!")
</pre><br />
Congratulations! Now you should be able to see a tweet with "Hello World" posted to the authorized account.<br />
<br />
Eiji Sakai a.k.a. elm200http://www.blogger.com/profile/07259027018805783593noreply@blogger.com1tag:blogger.com,1999:blog-1992764823300241234.post-67223645388595714982011-08-09T12:15:00.027+09:002011-08-15T21:59:03.875+09:00Sorting algorithms in RubyIf you wish to learn sort algorithms, <a href="http://www.ics.kagoshima-u.ac.jp/~fuchida/edu/algorithm/sort-algorithm/">this</a> is the best website to visit. Bad news for English speakers is that this site is written in Japanese. <br />
<br />
The author of the website uses Java for his sample code. I could write Java code but I am not a big fan of it since Java forces me to type too much (Who wants to type "HashMap<nteger, Boolean> map = new HashMap<Integer, Boolean>()" when you can do the same task by typing "map = {}" in Ruby?). So I rewrote his sample programs in Ruby.<br />
<br />
There are three interesting algorithms: heap sort, merge sort and quick sort. They are the most efficient ones among all the sorting algorithms.<br />
<br />
Let's start with heap sort.<br />
<pre class="brush:ruby;">class HeapSort
def initialize
@heap = []
end
def push(item)
@heap << item
i = @heap.size
j = i / 2
while i > 1
if @heap[i - 1] < @heap[j - 1]
t = @heap[i - 1]
@heap[i - 1] = @heap[j - 1]
@heap[j - 1] = t
end
i /= 2
j = i / 2
end
end
def pop
res = @heap.shift
return res if @heap.size == 0
last_item = @heap.pop
# bring the last item to the root
@heap.unshift(last_item)
i = 1
j = 2
while j <= @heap.size
if j < @heap.size && @heap[j - 1] > @heap[j]
j += 1
end
if @heap[i - 1] > @heap[j - 1]
t = @heap[i - 1]
@heap[i - 1] = @heap[j - 1]
@heap[j - 1] = t
end
i = j
j *= 2
end
res
end
def run(list)
list.each do |item|
push(item)
end
res = []
while item = pop
res << item
end
res
end
end
</pre>
Heap sort is a bit tricky in terms of how to maintain a balanced binary tree. It looks complicated especially when you remove the root element from the tree (look at pop() method above).
The second algorithm is merge sort.
<pre class="brush:ruby;">class MergeSort
def initialize
end
def merge(a1, a2, a)
i = 0
j = 0
while i < a1.size || j < a2.size
if j >= a2.length || (i < a1.length && a1[i] < a2[j])
a[i+j] = a1[i]
i += 1
else
a[i+j] = a2[j]
j += 1
end
end
end
def merge_sort(a)
if a.size > 1
m = a.size / 2
n = a.size - m
a1 = []
a2 = []
0.upto(m - 1) do |i|
a1[i] = a[i]
end
0.upto(n - 1) do |i|
a2[i] = a[m + i]
end
merge_sort(a1);
merge_sort(a2);
merge(a1, a2, a);
end
end
def run(list)
a = list.dup
merge_sort(a)
a
end
end
</pre>The idea of merge sort is rather simple. You can implement it with recursion elegantly.
And the last one is the queen of sorting algorithms, quick sort.
<pre class="brush:ruby;">class QuickSort
def initialize
end
def pivot(a, i, j)
k = i + 1
while k <= j && a[i] == a[k]
k += 1
end
if k > j
return -1
end
if a[i] >= a[k]
return i
end
return k
end
def partition(a, i, j, x)
l=i
r=j
while l <= r
while l<=j && a[l] < x
l += 1
end
while r>=i && a[r] >= x
r -= 1
end
if l > r
break
end
t=a[l]
a[l]=a[r]
a[r]=t
l += 1
r -= 1
end
return l
end
def quick_sort(a, i, j)
if i == j
return
end
p = pivot(a, i, j)
if p != -1
k = partition(a, i, j, a[p])
quick_sort(a, i, k - 1)
quick_sort(a, k, j)
end
end
def run(list)
a = list.dup
quick_sort(a, 0, a.size - 1)
a
end
end
</pre><br />
Although finding a pivot is a little tricky, quick sort is a cool algorithm. It is so elaborated that it almost looks like magic.<br />
<br />
Usually Java or C/C++ is used to describe algorithms, but Ruby is also great because it can highlight the essence of algorithms with a fewer lines. I LOVE RUBY, MAY RUBY LIVE FOREVER!<br />
<br />
Eiji Sakai a.k.a. elm200http://www.blogger.com/profile/07259027018805783593noreply@blogger.com0tag:blogger.com,1999:blog-1992764823300241234.post-26808902350434564542011-08-04T14:54:00.008+09:002011-08-04T16:24:19.948+09:00A philosophical difference in hiring processes for software engineers between US and JapanA person currently working in US suggested me reading a book named "Cracking the Coding Interview". He told me that the book was one of the most famous books that let software engineers prepare for their recruiting interviews. I was so impressed and excited because the way US software companies hire engineers is so rational. <br /><br />It says that interviewers can ask very intricate technical questions that relate to algorithm and coding. Sounds great! That's the way it should be. <br /><br />In Japan, interviewers rarely test candidates with coding questions, odd as it might sound. Japan's IT industry was dominated by a few big software "general contractors" such as NTT Data and they usually don't look into candidates' technical skill set scrupulously. Instead, they rather attach greater importance to candidates' "communication skills", a vague concept that allegedly guarantees a candidate to be a good "team player".<br /><br />However, I think that this is an absolute nonsense. A software engineer is supposed to be hired to code, not to chat. If a candidate is a very likable nice guy, but is unable to code even a line, he is useless in the workplace of software production. No wonder that Japanese IT industry has lost its competitive edge.<br /><br />I feel very encouraged. I have finally found a reason to study computer science in earnest. If nobody really cares about proper knowledge on algorithm, who is willing to make serious efforts to learn it, after all?Eiji Sakai a.k.a. elm200http://www.blogger.com/profile/07259027018805783593noreply@blogger.com2tag:blogger.com,1999:blog-1992764823300241234.post-90699024449620943382011-07-23T16:03:00.001+09:002011-07-23T16:05:25.063+09:00What do I want to achieve through information technology?A tweet told me that Twitter was seeking a Japanese software engineer at their San Franscisco Headquarters.<br /><br /><a href="https://twitter.com/job.html?jvi=oB2PVfw7,Job">Software Engineer - Japanese Product Focus, Applications</a><br /><br />It looked interesting to me, so I applied for it. Let's see what will happen.<br /><br />It is actually a little premature for me to apply for any job. I am not well-prepared yet. <br /> <br />I need a story... I want to accomplish something in this world. However, I still haven't found it yet. I am most interested in the web among many different fields inside information technology. I am especially interested in social networks or education. I am interested in making a difference in the society. I used to write a tiny electronic bulletin board system for communication with my old friends. I was also interested in groupware software like Lotus Notes for a better communication in workplace.<br /><br />Maybe I have some ideas to make the world a better place. But I don't know how to make them happen yet.Eiji Sakai a.k.a. elm200http://www.blogger.com/profile/07259027018805783593noreply@blogger.com1tag:blogger.com,1999:blog-1992764823300241234.post-85721639176628095482011-07-22T12:38:00.001+09:002011-07-22T12:42:21.614+09:00Inventing my own EnglishAs a non-native speaker of English, I have been feeling awkward about it. My pronunciation carries a heavy Japanese accent and my listening skills are far from perfect. I am a very slow reader of English. However, when it comes to writing English, there is a silver lining. Unless you are participating a real-time chatting, you are not required to respond to something quickly when you write it. You can stop to think for a while. You can modify your sentences after drafting swiftly.<br /><br />I am aware that my grammar is not perfect. I do know that I keep making small mistakes regarding choices of particles and singular/plural. Writing nouns is the most difficult part of English. The distinction between countable and uncountable nouns is just terrifying.<br /><br />Choice of words is not the only problem. Even problematic is choice of phrases or syntax. There are some very English-like syntaxes. (Sorry, I can't come up with a good example) Not only words but also syntaxes are very different between Japanese (my mother tongue) and English. It is very difficult for me to compose natural sentences characteristic of English.<br /><br />After a long reflection, however, I came to a conclusion that it does not really matter. The most important thing is to have people understood my ideas. As long as there exists a context, my subtle grammatical errors or unnatural syntaxes in English do not prevent people from understanding what I want to mean. What a great relief am I given if I think this way!<br /><br />In a way, this is the invention of a new language, my own English. It is not exactly the same as what typical American people speak, but still understandable to them. I can express my ideas with that tool. Let's not worry too much about superficial things such as grammar and wordings. Let's focus on the thoughts that I want to convey.<br /><br />My English is already good enough to express anything in the world. Let's stop worrying and start telling something more interesting. Probably, my writing skills also grow gradually. But it doesn't really matter. The most important thing is what you say, not how you say.Eiji Sakai a.k.a. elm200http://www.blogger.com/profile/07259027018805783593noreply@blogger.com2tag:blogger.com,1999:blog-1992764823300241234.post-61738895208046233412011-07-21T15:13:00.005+09:002011-07-21T18:08:01.044+09:00You don't need a formal education to be a good programmerY Combinator is a startup funding founded by Paul Graham. He is a programming guru as well as a popular author. One of my friends suggested me look at "Hacker News" of their website, where job openings of many startups are listed.<br /><br /><a href="http://news.ycombinator.com/item?id=2719028">Hacker News at ycombinator.com</a><br /> <br />As I looked into it, I found some interesting features regarding the long list.<br /><br />Very few of these job openings require candidates to have a formal education in information technology field. They emphasize how active their companies are and how exciting their jobs are. They list programming languages and technologies they use to perform projects. However, they don't say "you need to have a master degree or above in information technology or related disciplines" or something like that.<br /><br />I don't have any formal education in the field of information technology. I started programming at thirteen. I studied economics at university. I learned everything about being a professional software engineer on the job. It didn't take long before I became a decent programmer at work. <br /><br />As I observed people working at workplace, paradoxically, many of the most excellent programmers have any formal education in neither IT nor computer science. And some of the most useless programmers had degrees in computer science. I thought this mystery over and came to a conclusion. For the most talented people, probably, programming is too boring to learn in the classroom. All they need to be a good programmer is a cheap ordinary personal computer. You can learn almost everything about programming from computers themselves. If you still don't understand, then, you can also rely on the Internet (when I first started programming, I didn't have access to the Internet. I had to read technical books then. Nowadays, you don't need to read books any longer).<br /><br />Therefore, it is quite a correct attitude that you don't ask candidates for a formal IT education when you try to hire good people. I think that people who put ads at Y Combinator know how software should be created. I like it. Their way of thinking resembles mine.<br /><br />I am a kind of crazy person who can't adapt a normal society. My way of thinking is too little of conformist to fit an ordinary conservation organization. Bay Area seems to attract this kind of eccentric but smart people. If so, I have no choice but to go there, no matter how difficult it is.Eiji Sakai a.k.a. elm200http://www.blogger.com/profile/07259027018805783593noreply@blogger.com0tag:blogger.com,1999:blog-1992764823300241234.post-43829340464399164392011-07-20T15:35:00.019+09:002011-07-20T20:01:41.218+09:00Move beyond the comfort zoneRecently I stopped blogging in Japanese. Why? Maybe, my Japanese blog has too many readers for me to express something very personal :-). It might sound absurd, but when your blog get too much attention from the public, it will turn into a kind of "media" rather than mere personal records.<br /><br />I am sick and tired with the Japanese blogsphere. Many of them are too much of inward-looking...whenever I read something in Japanese, I feel it too domestic and Japan-specific. It lacks universality which I adore.<br /><br />I started programming at the age of 13. I have been a professional software engineer in the past 15 years. I am a native computer user. I am very familiar with the way digital devices work. Actually, it is so natural to me that I often forget the fact that a bunch of people still have difficulty in using computers.<br /><br />Unfortunately, I could not find any computer job that is very interesting for me in Japan. The IT industry of Japan is not tech oriented. It is rather sales oriented. That is, IT companies don't pay attention to technology itself. As long as they can get enough amount of work from big corporations, they are happy with it and don't make a serious effort to improve their technical skills. This seemingly mysterious behavior has to do with the hierarchical industrial structure of Japanese IT industry. It runs deep.<br /><br />When I was younger, I was more tech oriented. That's why I could not find any interesting IT company in Japan. More accurately, I was more innovation oriented. There are a plenty of tech guys who are exclusively interested in IT itself. However, most of them are not interested in innovation, which is a process where technology transforms the society. Technical people are not interested in social issues in Japan.<br /><br />I am interested in both technology and the society. More precisely, I am only interested in the interface between them. I am very curious about the dynamic process where technology creates a new society. I am not so interested in subtle technicalities of information technology. <br /><br />One small problem that bothers me is that I am so accustomed to be self-employed or bohemian that I am stuck in a rut. If I wish to engage in some more interesting business activities, I have to give up some part of freedom I am enjoying now. I have to sacrifice some part of my current lifestyle for a more valuable cause. Something inside me resists the change.<br /><br />To judge it objectively, my current life is comfortable but somewhat boring. It is easy but doesn't help me grow. I can't keep on doing this forever. It is just not right. I must move beyond my "comfort zone" to enter another growing phase. Today we are all obliged to keep learning and growing until we die. Otherwise, we can't rationalize our long life for young people. We are not supposed to be just burden to them when we become old.Eiji Sakai a.k.a. elm200http://www.blogger.com/profile/07259027018805783593noreply@blogger.com0tag:blogger.com,1999:blog-1992764823300241234.post-58307625940619073202011-07-14T09:24:00.016+09:002011-07-20T20:32:58.554+09:00What prevents the middle-aged from new challengesI've been thinking of moving to and working in Silicon Valley, also known as the Bay Area in US. It's a famous mecca for IT engineers. It's been my long time dream. I used to be a very eager-to-learn and frustrating young programmer who was never satisfied with Japanese IT industry. I really wanted to go to the Bay Area. But I didn't. I can name a dozen of reasons why I didn't go there. This might be just a "sour grapes" attitude, that is, a kind of rationalization, though.<br /><br />I moved to Canada in 1999. That would have been the best timing to move to the Bay Area, but I didn't. It's rare for me to regret something. Exceptionally, however, I feel a little regrettable about it. The first decade of the 21st century saw so many the Bay Area-based IT companies flourishing including Google, Apple and facebook. I missed the best decade of the Internet expansion from the Bay Area to the rest of the world.<br /><br />The Bay Area has been a very exciting place for ambitious engineers and entrepreneurs. And it will be. I met a Japanese guy who had a long working experience in US. According to him, there's neither "best" nor "worst" time to move to the Bay Area. Even the macro economy is in slump, some new startups are growing rapidly there. Similarly, even when the macro economy is booming, some companies are going bankrupt there. "The real best time for you to go to the Bay Area is when you WANT to go there," he added.<br /><br />I have no wife. I have no children, either. I have nothing which binds me to my home country, unlike other typical middle-aged people. I can do whatever I want to do. <br /><br />Nevertheless, I still feel hesitating to go to the Bay Area. Why?<br /><br />The real enemy resides in my own body. It's the memory of the past 12 years. I didn't go to the Bay Area 12 years ago in 1999. I have wandered all across the world since then. It was a great fun. I do appreciate these unique experiences. However, the idea of going to the Bay Area now makes me feel that I made a huge error in the past 12 years. Why did I not go there in 1999? Did I make a big mistake? "Are you stupid?" The inside of myself keeps blaming on me.<br /><br />It's considered normal for the middle-aged people to get conservative and stop challenging something new. They usually say that it's because their body is getting old and does not function as before. Or they may say that they have a family to support and can't jeopardize the life stability. However, the real reason why they go with the status quo might be somewhat different. Probably, the real reason resides in themselves. They have too much memory to deal with. They feel compelled to rationalize what they have been doing. They might say "When I was younger, I had a dream and wanted to do that. The dream has gone, but it's OK. I don't want it any longer, and even if I did, it would be too late. What else could I do?"<br /><br />Sometimes, those middle-aged people are right. Actually, their dream has gone forever. They can't do anything about it. Even if they still can do something about it, however, they also tend to give everything up. That's because they don't want to admit that they got wrong somewhere in the past.<br /><br />It is always painful for you to admit your mistakes. The more serious the error is, the more painful you feel. But middle age is not old age yet. It is also true that it's too early to give up everything and to retire with the status quo. It's really difficult for me to admit my own mistakes. But I will. And I will challenge again.Eiji Sakai a.k.a. elm200http://www.blogger.com/profile/07259027018805783593noreply@blogger.com1tag:blogger.com,1999:blog-1992764823300241234.post-2018496552144631632011-07-13T14:17:00.001+09:002011-07-13T14:19:36.271+09:00English is a language handy to address legal issuesAlthough I'm a slow reader, reading English sentences is fun because I find them more well-structured than those of Japanese.<br /><br />Mentioning one language is more superior to another always gets political and controversial. So I'd say there's "officially" no functional superiority or inferiority between languages. <br /><br />Nonetheless, experienced language learners can easily recognize that each language has its own strength and weakness depending on which matter you want to express by that. In my opinion, no other language is more excellent in terms of stating legal matters than English. For example, Japanese legal terms obviously lack sufficient vocabulary. Meanings of legal documents easily get obscure when expressed in Japanese.<br /><br />Let's take a look at a few examples. The legal term "sekinin(責任)" can stand for two distinct English words, that is, liability and responsibility. <br /><br />Another term "hosho" is even more confusing. Hosho can be stated in three different spellings in Japanese, which are "保証", "補償" and "保障". And these words would mean assurance, grarantee, warranty, surety, certification, compensation, indemnification, and security! <br /><br />Maybe you can get by daily conversations where the context can help you, but this ambiguity could be fatal in the legal field where one wording could change the whole meaning of a document.Eiji Sakai a.k.a. elm200http://www.blogger.com/profile/07259027018805783593noreply@blogger.com0tag:blogger.com,1999:blog-1992764823300241234.post-11298737068473251642011-07-09T13:50:00.028+09:002011-07-10T07:14:15.613+09:00The reason why I left CanadaI used to live in Canada. I lived there for 4 years, from 1999 until 2003. My life there was just fantastic. I loved the liberal Canadian society. Different peoples lived in peace together. Its ethnic diversity was such a wonder for a person who grew up in one of the world's most homogeneous societies. I even obtained permanent residency and decided to live there forever.<br /><br />However, I ended up leaving Canada. Why did I leave Canada even though I loved it? I should rethink of it now that I am considering moving to another English speaking country, the United States. If I don't figure out the exact reasons, I might make the same mistakes in US.<br /><br />The official reason why I left Canada is its climate. Canada is simply too cold to me. I really hate cold weather. I could not stand wearing a thick gown jacket for six months a year. I longed for a warm climate. (So later I ended up living in Vietnam!)<br /> <br />Having a closer look, however, this is not the only reason of my departure. I was lonely in Canada... I did<br />n't have any Japanese male friend there. (There were very few young Japanese men, actually. It was virtually impossible for me to find a person with a similar social background in Toronto of early 2000s...) I could not find another interesting job in Toronto. I<br /> didn't speak a perfect English and it was a source of my inferiority complex.<br /> <br />I wanted to make friends with Canadians who were born there. They were native English speakers and didn't seem to be interested in immigrants who were born abroad. Cultural gap was so huge that it was difficult for me to find a common topic to talk about over dinner party. Toronto people were not so friendly during the long cold winter. It made the winter even more unbearable.<br /><br />Maybe, this is a typical melancholy felt by immigrants who seriously wish to assimilate into the new society. Maybe I was too short-tempered. Time might have solved the problem. However, I wanted to get it solved immediately and when I saw it would take time to do so, I just decided to leave Canada instead of sticking to it.<br /><br />Asian societies are easier for me to adapt but not as exciting as English speaking countries. English speaking<br />societies keep stimulating my brain...make me think and grow my mind a lot. I like them. But the same time I hate them because it is difficult to adapt them...this is an ambivalent feeling.<br /><br />8 years have passed since I left Canada. Time flies! I still haven't solved this paradox yet. Maybe it's time t<br />o give it another try. Maybe this time I can do it better. I have had variety of experiences since leaving Cana<br />da. Now I am more mature than before. <br /> <br />After all, I am still too young to give up everything.Eiji Sakai a.k.a. elm200http://www.blogger.com/profile/07259027018805783593noreply@blogger.com5tag:blogger.com,1999:blog-1992764823300241234.post-35466782111197800302011-07-08T22:00:00.015+09:002011-07-10T22:44:41.277+09:00Challenge for Working in Silicon ValleyIt's been a while, my dear blog readers! I have long been away from this blog site. Why? I was just busy to update my Japanese version of blog and to tweet in Japanese. But now I feel like returning to English speaking world...<br /><br />Whenever I feel this way, it is usually because I am fed up with the Japanese speaking world. Japan saw a terrible disaster this year. On March 11th of 2011, a massive earthquake hit the northeastern part of Japan. A tremendous tsunami followed it. To make the situation more miserable, a nuclear power plant exploded in Fukushima. As many as 3 reactors and 1 used fuel pool blew up. This sequence of events have changed Japan forever in a profound way. We will never be the same after 3/11.<br /><br />However, the Establishment (elites in politics and economy) of Japan still behave as if nothing had happened on March 11th and nothing had changed. They are in a state of denial. They seem to pay more attention to their own interest rather than recovering and reconstructing Japan. Even before 3/11, I never like them. Now I am just sick and tired of them. I wish I wouldn't have to see and hear about them. Unfortunately, they are the leaders of Japan.<br /><br />I came back from Vietnam to my mother's house in Yokohama in February 2011. I was heartbroken then. I really wanted to build my own business in this rapid growing young country. But widespread political corruption prevented my business paperwork from proceeding without bribing and it knocked me down. You might ridicule me, but I just couldn't stand helping those corrupt officials build their filthy wealth any longer. Anyway, I had to come back with a broken heart and much reduced amount in my bank account.<br /><br />In the first few days back in Japan, I thought about settling down in Japan. Get a job, make money, find a girlfriend and maybe get married...well, these things did not excite me that much, but anyway I was back in my home country, what else could I do? I was standing at a loss with a diminished dream then. I was just sad. More accurately, I was really depressed. My body didn't function properly, either.<br /><br />I got a small project in Japan. I worked with a team of a Japanese customer. The outcome was another disaster. The customer demanded me work in the morning and at night without a proper planning. I found it ridiculous but it was just a norm in Japan. It is how the business works here no matter how absurd it looks.<br /><br />Then 3/11. Reactions of the government and business communities were disappointing enough to me. They were totally confused. They could not think properly. They could not come out with an appropriate plan. Post-3/11 consequences of Japan were so hopeless. I was forced to recognize the fact that Japan is not a kind of country that I could live with. OK, let's get out of Japan...AGAIN! (how many times have I attempted...I simply can't remember!)<br /><br />You might say I am stupid. Maybe I am. 12 years ago, I went to Canada and lived there 4 years. And I came back to Japan. 3 years ago, I went to Vietnam. And I came back to Japan, again. In the both cases, I abandoned Japan when I left it. I swore to myself I would never ever come back to live in Japan. But I could not keep my promise to myself. I am embarrassed.<br /><br />However, I am too young to retire. Life goes on...no matter how many times I make mistakes! The rest of life is too long to cry over the spilt milk. So...let's move on. Let's give it a try!<br /><br />So...now I am thinking of going to the United States of America...more specifically Silicon Valley. Working and living in Silicon Valley has been my dream for a long time. There is no place more innovative in terms of new industries...especially information technology. I do know it will be a difficult challenge. But it is worth challenging.Eiji Sakai a.k.a. elm200http://www.blogger.com/profile/07259027018805783593noreply@blogger.com2tag:blogger.com,1999:blog-1992764823300241234.post-50498726883750087552010-08-29T14:17:00.002+09:002010-08-29T14:36:14.131+09:00I passed all 4 parts in USCPA exam! I made it!I sat for all 4 parts of USCPA exam in Hawaii last July.<br />Two days ago, I finally learned that I had passed all 4 parts!<br /><br />The scores are BEC 83, AUD 85, FAR 92 and REG 89, where 75 is the passing mark.<br /><br />I am very grateful to those who helped me successfully achieve the goal. I'd like to say the biggest thanks to my mother, who kept encouraging me while I was preparing for the exam.<br /><br />I studied for the exam during the 7 month period starting December 2009 and ending June 2010. I studied about 1,000 hours during that period. REG was the most difficult part for me.<br /><br />My main textbook was Wiley. I also used some Japanese textbooks but didn't find them very useful.<br /><br /><span style="font-weight:bold;">Business Environment and Concept(BEC)</span><br /><a href="http://f.hatena.ne.jp/elm200/20100827142056"><img src="http://img.f.hatena.ne.jp/images/fotolife/e/elm200/20100827/20100827142056.png" alt="20100827142056"></a><br /><br /><span style="font-weight:bold;">Auditing and Attestation(AUD)</span><br /><a href="http://f.hatena.ne.jp/elm200/20100827142057"><img src="http://img.f.hatena.ne.jp/images/fotolife/e/elm200/20100827/20100827142057.png" alt="20100827142057"></a><br /><br /><br /><span style="font-weight:bold;">Financial Accounting and Reporting(FAR)</span><br /><a href="http://f.hatena.ne.jp/elm200/20100827142058"><img src="http://img.f.hatena.ne.jp/images/fotolife/e/elm200/20100827/20100827142058.png" alt="20100827142058"></a><br /><br /><br /><span style="font-weight:bold;">Regulation(REG)</span><br /><a href="http://f.hatena.ne.jp/elm200/20100827142059"><img style="zoom:110%" src="http://img.f.hatena.ne.jp/images/fotolife/e/elm200/20100827/20100827142059.png" alt="20100827142059"></a>Eiji Sakai a.k.a. elm200http://www.blogger.com/profile/07259027018805783593noreply@blogger.com1tag:blogger.com,1999:blog-1992764823300241234.post-32595247638929231532010-08-06T21:56:00.004+09:002010-08-06T21:58:12.904+09:00Tweeting in EnglishI have just started tweeting in English at <a href="http://twitter.com/elm200e">@elm200e</a>. Please follow me if you are interested.Eiji Sakai a.k.a. elm200http://www.blogger.com/profile/07259027018805783593noreply@blogger.com0