Sunday, January 31, 2010

The art of seduction

I started reading a book today because I had something interesting happen to me yesterday.

I was at a party hosted by a friend (a wedding/singles after party) for people to mingle and I was there just to meet people. I do what that should come naturally, meet and introduce yourself to the people around you. So it turns out that I met a very pretty Singaporean babe that just recently moved to Japan. Very out doorsy and we had lots to talk about. The conversation was great and we kicked it off really well.

While at the bar, there were some other guys hovering about, I didn't realize it at the time but I was being sized up as a competitor buy some English guys eager for my friend. Over the course of the night, I realized that I had already missed the last train home and casually asked if I could stay over till the morning, with obviously no ulterior motives. I generally don't like to be a "player" as a personal preference. One of the odd things about me is that sometimes I don't realize that I was subconsciously seducing this person since the conversation was going pretty well and some other guys were wanting in on the action. How they played me off was pretty slick but they couldn't separate the girl from me through out the entire evening.

One guy ran cover to try and get me into a conversation with him while the other guy tried to work the girl elsewhere. I caught on near the end and the ironic thing is that they got so completely desperate that after getting the girl's phone number to try and invite her after the party out for drinks. The ending was that I got double teamed by these guys and they confronted me to "get lost" in a subliminal way. I wasn't interested in bedding the girl, though she would have been fun to hang out with. I wasn't looking for a fight and buggered off and after replaying the events through out the evening in my head and everything clicked and I realized my mistake, I should have put up a fight and told them to screw off.

I decided to start reading a book today, called "The art of seduction" since I had a feeling that I might find something interesting about today's event, an analysis of the characters I bumped into today. I've only gotten through the preface and found this gem:

"Finally, seducers are completely amoral in their approach to life. It is all
a game, an arena for play. Knowing that the moralists, the crabbed repressed
types who croak about the evils of the seducer, secretly envy their power,
they do not concern themselves with other people's opinions."
-The Art of Seduction

Immediately the image of the two guys that worked me for the girl came to mind. I plan on reading through this book because it's a fascinating read to help me understand the games these people play and counter them. Feels like politics but it's a game that I am going to have to know how to play.

I might have lost this time around, but it was an interesting eye opener. Also as an aside, the event I went was filled with people in the financial world, all sorts of bankers and etc. The one thing that I felt was that many of them had the "seducer" archetype embedded in them in some manner. Power hungry, commanding, persuasive. As long as you're their friend you're fine, but if you're on the wrong side, all bets are off. It's a cut-throat world.

Wednesday, January 27, 2010

Being paid by the hour = work stays at work

I am paid pretty much by the hour, some fixed rate during the day and hourly for overtime. The one thing I realized is that I've developed a "if I'm not going to be paid for it, then I am not going to do it" type attitude. Meaning that I don't generally take work home to do during my off hours.

It's an interesting contrast compared to my university days when there was no such divide; the objective was to get the best possible grades in class and thus I did what I had to get good grades. It would be like the difference between getting grades for "going to class" versus "doing well on a test." The difference being similar to a salary vs performance based pay.

My time is as such, allocated in such a manner. If I have work to do, I'll be sure to try and to it at work, even though it might be nice to work from the comfort of home from time to time. When I am home and want to study something like the stock market and figure out how to profit on it, then I'd gladly spend my evenings doing research.

I guess, it's about following the incentive, but in this case, it seems to be that the room for personal development is more obvious compared to working a salary based job.

Sunday, January 24, 2010

Having a good software design document is important

I've come to the point in my software project where it's starting to get hard to manage making tweaks to my code and I am starting to realize that it would have been nice to have a software design document to keep track of what is going on in the code. I'm getting to the point where making a tweak in one part of my code requires tweaking of other bits of code to make everything work together properly is starting to consume a lot of time. This is one reason why sometimes rewriting things from the ground up can be faster than incrementally modifying a program.

Writing a program is like writing an essay. In the case of the essay, you are writing to figure out what you want to say. Sometimes after many paragraphs, thesis', topic sentences and self reflecting discussions later, the initial premise of the essay could be completely or partially wrong, resulting in a rewrite of various sections. This is especially so for long or complicated essays and often having a outline of what you want to write can be a huge time saver-- instead of writing 2000 words to and then realizing that the logic was bad, you might have been able to write an outline in 200 words and figured that out earlier. It also helps when it comes to keeping track of what needs to be said.

In the case of a program, you are writing a set of procedures on what to do with data. So instead of having a thesis, topic sentences and discussions you are describing sets of data and the the kinds of operations that must be performed on the data. The difference between the essay and writing a program is the difference between figuring out what you want to say versus what you want to do.

Programming is an organic process

Like writing and essay to figure something out, writing a program is about figuring out what you want to do and how you're going to do it. For my current project with parsing html data from financial webpages and then performing analysis, I didn't have debugging in mind and decided that it would be OK to download data from the web, parse the HTML in memory, save the values in a table and then save it when I was done processing everything. I ran into significant problems when the program choked on bad html data and crashed. Since I wasn't saving the webpage in question, I wasn't able to easily recreate the error and I would have to manually download the webpage and then perform an analysis on my own. After that, I would restart the process and hope that I wouldn't run into another problem (which I usually did!).

What I learned from that experience was that it was important to keep a hard copy of the raw data and write a parsing module that would be able to look at bad data, write a report and continue onwards. When I first designed my program, I expected all available data to be properly formatted, which unfortunately wasn't true. The result of this ordeal resulted in me rewriting my download module from processing data on the fly (and thus saving HD space) to saving the data first and then separating the parsing module and have it access and read the HTML file from the hard drive instead.

Other problems also started to creep up, I was also incorporating data from both yahoo and google and I assumed that I would be able to get complete data from both financial sites. Unfortunately, that wasn't the case and there were many times when my analysis module would break down because I was missing data. I spent plenty of time debating what was the best solution to deal with this problem. Do I have the analysis module detect the missing data? or do I go back into the parsing module and add functionality to prevent data sets with missing data from getting put into the database? While writing code for the analysis module, it's tempting to just add some checking functionality there since it would break my train of thought... I used to build in functionality where ever I needed it without concern for organization. This would balloon into a rat's nest of functions scattered all over in the code that became problematic in figuring out what piece of code was doing what.

Walking the line between a creative and structured process

Writing code is both a creative and structured process, a point that I didn't appreciate until now. There is the design and organization aspect where one needs to decide the kinds of modules and the input-output functionality required for each module which would fall under the creative process. The structured process would be taking the outlined requirements and then translating that in to robust and tested code. It sounds easy when things are properly broken down, but it can turn into a hairy mess when one starts to realize that there were some missing things in the initial design. Without a design document, it becomes tempting to start making design decisions on the fly to get things done or if one start thinking too much it becomes pain to try and visualize the whole program and figure out how things might affect one or another part of the code.

I've been in both situations where I would an hour trying to visualize the entire program and trying to make a decision on what to do. After finally making a decision, the implementation might take only 20 minutes and I'd already be exhausted from all the thinking and still not be confident that I made the right decision. Running into road blocks like these can be a really frustrating experience.

All of this can be avoided by keeping a well maintained design document that describes the functionality of the program in it's current state where it can be used as a reference for further design revisions. Writing a design document, though, doesn't particularly feel like really coding and it is tempting to skip over it, but I realize now that keeping a decent outline of code and it's status is really helpful. I'll probably be spending my next few slots of free time creating a design document.

Saturday, January 23, 2010

You're lucky if it's "garbage in, garbage out"

When it comes to code, you don't usually have control over the data coming in. Usually I write code that I use on my own, when I know what kind of input to expect from myself or other parts of the program. Things don't break quite as easily. But when it comes to dealing with information out of the web, especially parsing data out of an html file, you don't have that luxury. Things can break on a moment's notice when someone decides to change the data format or communication errors resulting in bad data.

I can have some primitive code up and running pretty quick but the program will crash at the first sign of bad input. If you're analyzing large data sets, the last thing that you want is the code crashing when you have bad data. Graceful error handling is important and also a pain in the ass to deal with.

Firstly there are a whole slew of potential errors that could occur that are hard to predict. Download connections could be reset, the available data could be incomplete, there could be an error in the input format. Then if you are cross referencing data from other sources, you have to make sure that the data you want to look at for all sources is available and who knows how things might break in the future.

Having robust code that can detect errors and report back can easily double the effort required to write a program. It's hard to realize what needs to be made more robust until things start breaking. I had a basic version of a stock analysis program working last year but I was continually hacking parts of the program to ignore bad data. I generally resorted to "execute and pray" kind of tactic to see if I would get any results.

And so error handling and data integrity verification has become another important pillar to good programming that I've just realized and will have to spend more time devising a good strategy on dealing with this kind of stuff.

Friday, January 22, 2010

Positive pressure

I came home early tonight, 7 being relatively early for Japan.

My work schedule last year in was just damn busy and I honestly needed a break. I had 2 weeks of during the winter and I cane back to work on the 5th of this month and I still don't really feel like working that hard. Nope, none of those 4 hours over time everyday kind of schedule. I just want to see the clock hit 5:30 and work a little bit more and then head home to rest.

And I have been in this resting mode for the last few weeks. Nothing particularly productive being done, but just doing some occasional studying, programming and watching a hell of a lot of The West Wing, which is a series about really busy people running the White House, which I find is really ironic for a guy like me.

Right now, I don't have any real motivation at the moment. The work just doesn't stop flowing and there is alwys some issue that needs to be dealt with; welcome to the world of R&D. As much as the end result of the project is going to be sexy, the process it self is very far from it, and I hate boring work. I wonder what would be exciting work... then again I might be afraid of the answer.

So with the work being a little on the boring side, I have realized one thing is that I've become complacent with my way of life and that way of life is just "getting by" as in finishing work, coming home, taking a breather and repeating the process till the weekend until I use that to relax.

This life style has turned into a habit, a habit that I am finding hard to break out of. I know that I should be doing something new or at least progressing on some kind of goal, but it's oh so easy to just work, come home, rest and repeat. Creatures of habit as some people might consider us.

So I've looked for change, something to help me break out of this habit and to do something I feel excited about. It's strange to realize that I haven't felt excited about doing something in a long time, not since going backpacking through Asia or another time that I thought it would be so cool to make an equalizer circuit for a presentation on Lapalce transforms for a seminar.

I miss feeling excited about doing something and being with people that I can be excited with. Not just to do something crazy like a dare but excited in a productive way, the desire to push my self beyond boundaries to do something new. So right now, I am looking for something to be excited about, some positive pressure in life to do something enjoyable. Gotta find a way to break the habit.

Monday, January 18, 2010

Insufficient data vs a bad model

I nearly blew a gasket trying to explain to a co-worker the difference between a calculation model being incomplete and having insufficient data. I was trying to do something a little tricky which these guys have never done, calculate the fundamental parameters of a diode using measured current-voltage data.

The problem I was trying to solve was backwards from the problems that most text books give you. The text books give you the diode parameters and maybe a resistor in the circuit and you had to go and calcualate the current flowing through the circuit at some voltage.

I managed to setup the basic diode resistor equation and then startted back solving for the unknown coefficients. For those that are interested the equation is:

V = I*R + n*Vth*Ln(I/I_s + 1)

with the unknown factors being n, Is and R and you are given a set of IV data with some noise.

This problem is impossible to solve algebraically so one does need to use a numerical solver to find the most optimal values of n, Is and R to fit some modeled data to the curve. Obviously there are likely other effects that aren't in the model, such as temperature effects which may cause the resistance to change. I made the simplyifying assumption that the temperature change was insignificant enough to ignore and proceeded to do my calculations through a program I wrote.

The results I got was interesting, that I realized that we were taking insufficient data to for my simulator to make an accurate fit. For those that know diodes, diodes are non-linear devices, where the amount of current that goes through them is exponential in voltage or I = Is*e(V/Vth), resistors on the other hand, are linear devices and the current that goes through resistors is proportional to the voltage or I = I/R.

The interesting thing about having a diode and resistor in series is that the diode starts off as being the current limiting device at really low voltages (because the exponential is really small at first) then the resistor becomes the current limiting component at higher voltages. The problem was that our measurements had the current and voltage too low for us me to calculate a reasonable value for resistance, since resistance measurements becomes far more accurate because the resistor is influencing the circuit the most. For example, I modeled out a 1300 ohm resistance with a limited data set and then a 200 ohm resistance with an expanded data set.

Immediately after, everyone thought that the model was wrong since a different resistance was coming out after using a data say from 0 to 600 uA versus 0 to 2 mA. The biggest argument was that the model was flawed because I was getting different current values using different ranges of data. My head wanted to explode because I was telling them and had verified that we were getting in sufficient data.

The simplest example to illustrate this would be like the following example. Suppose that you had the following function: y = -a*x + b*x^2 + c*x^4 where a, b and c are unknown. You can measure both (x,y) and your objective is to find (a,b,c). There is some measurement noise when you get y and y is > 0

Suppose that you took data with x between 0 and 1, -a*x term is going to be the strongest and you'll probably be able to rig the equation to be always positive for some value of (a,b,c) and look about right for x between 0 and 1. But what if you took the same parameters and measured beyond [0,1] and up to [0,100]? How good would your fit be then? if your c*x^4 term had a lot of error, then the resulting graph is going to be out of whack. The (a,b,c) are going to have to be rejiggled so that the fit works well for both [0,1] and [0,100], the whole range. The values might change drastically!

And that is the problem when people try to fit limited data with higher order polynomic or non-linear functions. You could have many different functions that could describe a line segment very well, but everything falls apart when the line segment is extended, because the higher order terms were not fitted well.

I tried to explain that with all my might in Japanese. But they just didn't get it and they kept going with that the model was probably missing a few things. I even back calculated and showed reversed approximations giving a confidence interval down to 12% on the data, but alas no dice.

This is quite a problem when most people I work with are experimentalists, they just do stuff to see if things work or not. When it comes to simulation, programming or theoretical stuff, they know the basics but the real fruits are hidden in the details. Since we make some of these devices, it is important that they are characterized properly so we might have a good idea on what factors might impact the performance of these devices. Just saying that voltage is up or down isn't sufficient because you want to go after the biggest impact factors when improving things first.

Saturday, January 16, 2010

Update on the Stock Analysis Project

From text editor to IDE

I started learning a language called Python about 2 years ago after coming back from some traveling. The reason for that was because I fell in love with a dynamically typed, compiled on the fly interpretive language called Matlab which I used for a variety of scientific calculations.

The language had some limitations in the sense that it was slow and I hadn't figured out a way to run multi-threaded programs when it came to doing downloading and parsing html data. The bottle neck when dealing with data in this case is not the PC, but the speed at which the online servers can pump data into my computer. To alleviate this problem, I moved onto a different language called python.

In following my pursuit of a language with dynamically typed variables, easy methods to handle arrays of data and a large breath of built in packages, learning to use this language took some time at first but it would only take me a week to make my first real program: a program to download and compare price vs measured performance of a CPU with published CPU data online.

All of this was written without the luxury of an integrated development environment, which meant a text editor, compiler and debugging environment. I spent the better first part of 2 years writing code in the equivalent of notepad. Maintaining code in a plain text editor is a pain but I stuck with it since it was simple and I didn't want to have learning how to use a IDE getting in the way of learning a new programming language.

As of last month, I've finally installed a free IDE called Eclipse and the Python plug-in from pydev. Eclipse is an open software IDE written in Java designed to run on both Windows and Linux. I still remember when Microsoft Visual Studio was the the big software suite costing a few hundred dollars. Now all of this for nearly any language is available for free. I am impressed with how far things have come in the open source community.

It took a few weeks to learn the basics of learning how to program with the IDE and I am getting more comfortable with it; and the benefits are great. Code organization has improved, automatic look up of functions is awesome, a variable spell checker with a real time code parser in the background to highlight bad programming syntax cuts down on development time. The debugger is useful as I can trace how variables are accessed and if the right data is going to the right place while the program is running. I still have many things to learn.

For the past 4 weeks I have been migrating the stock market analysis code into a format that makes it easier to manage with the IDE. I used to keep all my code in a single directory in different importable files, this made things messy and hard to find. I've finally reorganized and divvied out the code into modules which made things easier to manage and track problems. While moving the code over I've also been rewriting significant chunks of code to make things cleaner as I've found some really ugly bits of code.

What are my objectives with this program?

There is a lot about the stock market that I don't know. I blew a lot of cash after the crash last year, I had good predictions about where the economy was going but was terrible on the execution. Being able to make economic predictions doesn't necessarily mean that you are going to make good trades. My biggest mistakes were leveraging myself too much and was negligent in determining a good price and contingencies. In order to correct these mistakes and fill my informational gap, I am developing a stock analysis software to help me in evaluating stocks and help make better decisions.

Comparing against having my own analysis program compared against online stock screeners, the online screeners are limited to the search parameters and conditions provided. The problem with looking at search terms like PE, EPS and asset/debt ratio independently is that you can't combine the information into a more comprehensive analysis function.

For example, what is the true/implied value of a company's share being sold on the market. This is important when determining when a share is expensive or cheap. When a hot tech stock is jumping in price, at what point do you say this share is over-priced or still have more room to grow? The importance of answering these questions is directly related to the success and failure of one's trading strategy. Because if you don't know when to get in and out then you're asking for a lot of trouble.

This is the biggest challenge when it comes to the stock market; knowing how to valuate the price of a stock. When a person says that the stock is expensive or cheap, I want to know in relation to what data and the direct calculations instead of hand wavy analysis you might see on mad money. For those that might be interested in taking a look at success rates of prominent stock gurus, take a look at the continually updated list at CXO. Most of these gurus are close to the 50% range with a few in the 60% and 40% range. I might as well flip a coin and pray, but I'd rather do better.

What I want to be able to do with the software I am developing is come up with a technique to calculate the intrinsic value of a share based on financial data provided from a company to determine a fair value of the share and market expectations of where the company is going in the next quarter or few years. If the intrinsic value of a stock is at price 'x' and the market is trading at 'y' then the market is expecting that the worth of the company to rise in the future to justify price 'y'.

I have found no screener that calculates the intrinsic value of a stock and I have taken it upon myself to develop a program to test different valuation models to find something that works. Of course, no valuation model is perfectly correct and it would be nice to back test against historical data to find something that works most of the time. As a human being, I am limited by the amount of data I look at and perform calculations, I've decided to enlist the help of a computer and hopefully be able to make well informed decisions in the future.

Programming objectives

Most of my programming experience comes from numerical analysis of experimental data sets. In most of these projects, I would just need to write a very simple program to take measurement data and another program to perform analysis. Unfortunately, I've never needed skills to manage complicated data structures, program modules and software architecture. Making good software design decisions is important to easily add new features without requiring a complete rewrite of code. There are still many things that I still need to learn.

In list form here are a few of those programming objectives:
  1. Develop skills in software architecture
  2. Become familiar with dealing with large and complicated data sets
  3. Learn what kind of data structure to use and when
  4. Develop robust code that can automatically handle errors
  5. Learn module unit testing techniques
  6. Improve programming speed
  7. Become more familiar with using IDEs
  8. Learn how to make a distributable software package
  9. Learn how to make a user interface (meaning: also learning event driven programming)
Knowing good software design is a blessing as it means taking a complicated programming problem and making it simpler. I've just managed to decide on the implementation of a simple analysis engine design. Instead of writing a hard coded loop for every analysis run, I can just import functions and requirements to the engine and let it do the work instead. Now I don't have to keep track of what code when where and I am starting to see the beauty of functional programming, which was a topic that used to go over my head.

I still have much coding work to do but hopefully I'll be able to produce some interesting results in the future.

Sunday, January 03, 2010

2009 Yearly Expenditures

It's that time of year again, the annual review of my living expenses. The 2009 expenditure review will be the 4th consecutive year I've been keeping track of all my expenses. For now, I will be posting my 2009 expenditures and be comparing against my 2008 expenditures. For those that are interested my 2008 and 2007 expenditure charts are here.

Firstly let's take a look at 2009's monthly expenditure bar chart:


2009 Monthly Expenditures (click for a larger image)

As usual, my expenses have been broken down into Food, Goods, Transport, Service, Room, Entertainment, Travel and (Salary) Deduction categories.

Food:

Annual Total: 443,727 Yen ($5,014.12 CAD)
Monthly Average: 36,977 Yen/month ($417.84 CAD/month)

At first glance we see that the my food expenditures have been some what varied through out the year. The cheapest being in January for reasons I am not sure about. The monthly average I spent on food was 36,977 Yen and for January where I spent 21,272 yen for food. I highly doubt that I ate 35% less food in January, but it might have been a result of being treated to a few lunches, being on a ski trip and attending plenty of post new year's parties. The fluctuations in monthly food prices is likely a result of me not having time to cook and eating out due to a busy work schedule.

Goods:

Annual Total: 189,725 Yen ($2,143 CAD)
Monthly Average: 15,810 Yen/month ($178.66 CAD/month)

As seen in the graph, there I've made only a few large purchases in August and September, those purchases being a TV capture card + 2x 1 TB hard drives, a few memory cards and the new Asus EEE PC netbook that I now use while on small trips. There was one other item I bought in February which was a $100 project bench for my room. Other then that, most physical good purchases were just small items.

Transport:

Annual Total: 127,714 Yen ($1,443.17 CAD)
Monthly Average: 10,642 Yen/Month ($120.26 CAD/Month)

Transportation costs for this year was quite low. I generally travel by scooter to pick up groceries. I use the trains on the weekends when I have a few events to attend in Tokyo, otherwise I would usually spend the weekend at home doing some reading or relaxing.

Service:

Annual Total: 130,190 Yen ($1,471.15 CAD)
Monthly Average: 10,849 Yen/Month ($122.60 CAD/Month)

In the service category, there were only 2 main expenditures my cell phone monthly fees, my gym subscription and internet service. I find it rather interesting that I spent more money in the services category compared to the total amount of goods I bought.

Room:

Annual Total: 262,162 Yen ($2,962.43 CAD)
Monthly Average: 21,846 Yen/Month ($246.87 CAD/Month)

Nothing too much to say here other than that my room related costs were pretty fixed. I am saving a bundle by living at the company dorm. These monthly costs include water, electricity and rent.

Travel:

Annual Total: 302,437 Yen ($3,417.54 CAD)
Monthly Average: 25,203 Yen/Month ($284.80 CAD/Month)

As noticeable by the bar graph, I go traveling somewhere at a rate of about once every 2 months. This year, most of my adventures has been through domestic travel to the country side. My travels included a trip to Okinawa, 2 trips to Nagano, 1 trip to Sendai and a trip to Yamanashi. For the mount of traveling I've done this year, the numbers look quite reasonable.

Deductions:

Annual Total: 2,852,197 Yen ($11,241.69 CAD)
Monthly Average: 237,683 Yen ($936.81 CAD)

Taxes this year were kicked up a notch for me as salary deductions from municipal income taxes occur 1 year after the start of work. The few blips seen on the bar charts represent taxes paid due to summer and winter bonuses in Japan. There is an additional blip in October as a result of paying a lump sum into a pension plan which I didn't have to pay at first when I came to Japan, but something I had to pay after I started working.

Now for a quick comparison between my 2008 and 2009 expenditures.


2008 vs 2009 Annual Total Expenditure Table

I've removed the pay cheque deductions to take a look at my living expenses directly. According to the data, it seems that purchases are down all across the board except for the food category. I've just been eating out a little more which has driven my food expenses up a little more. For 2009, there were less large purchases which has driven the amount of money spent on goods down. The largest purchase for me last year was a ~$1000 computer and a few misc things after moving which accounts for the $1,500 difference. The service group remains largely unchanged. The rooming costs have decreased. 2008 included 4 months in Sendai where I paid higher rent than I do currently in the company dormitory. Entertainment costs remain largely unchanged. Travel expenses this year are down by about $2,000 which is directly related to a return trip to Canada for a wedding in Toronto plus a stop in Vancouver.

The total difference between 2008 and 2009 expenditures is a total less of $3,797.49, or a 15.32% reduction in spending. This is a number that would probably have most economists in tears. On average, I spent about $1,749 in living expenses, I think that this figure is a quite reasonable number for living in Japan. If I were not living in the company dorm, monthly expenses would probably be up by about $500/month due to rent to about $2,250 for living about 1 hour outside of Tokyo. Living around the Tokyo area isn't all that expensive that most people might make it to be, but if you want to live somewhere pretty posh, then that might be a different story, but that goes the same way for anywhere else.

So, there's 2009 for you and it was a relatively cheap year.

Friday, January 01, 2010

4 Days and 3 nights in Okinawa

This trip was planned as sort of a get away from the Tokyo and to finally do some vacationing after the long hours I've been doing at work as a chance to go somewhere and relax for a few days. At first, I was looking into getting out of the country so somewhere warm like Bali, Indonesia or somewhere but unfortunately to my dismay, most of the tickets were booked up. By a stroke of luck, I managed to find a travel package to Okinawa with a return ticket, 1 days of accommodation and 4 days worth of car rental included for about $320 and so I was hooked. This is even cheaper compared to just directly booking a round ticket from Okinawa as the tickets themselves would have ran me $360.

Okinawa is probably best described as the Hawaii of Japan, though the Okinawan islands aren't as developed as Hawaii. The islands are fairly south of Japan, putting them in the tropics or sub-tropics region of the equator with temperatures for December ranging in the low 20 Celsius range.

A Map of Okinawa ripped of some guy's webpage

The Okinawan islands have an interesting history given that they are the most southern islands in Japan, having been used in trade between Korea, China, Malaysia and other countries in South East Asia. As a result, the Okinawan culture has many Chinese influences, especially from what I saw in the historical buildings and castles I saw.

Shurijo Castle, Center of Government and Religious activities in Okinawa during the 14th Century (source: Wikipedia)

The throne room

The color red is obviously prominent here, red representing good luck and prosperity in Chinese culture. All other castles in Japan generally do not use the red but rather black and white instead.

As a result of close relations with countries in South East Asia, it is often said by the Japanese living in Tokyo and else where that Okinawa is sort of like a different country. From what I have heard, the culture and language can be quite different from standard Japanese as a result from trade with other countries. Older people in Okinawa apparently speak the Okinawan dialect of Japanese, for which most ordinary Japanese people wouldn't be able to understand. However, during my travels in Okinawa, I didn't find that to be the case as most people spoke standard Japanese.

The weather I experienced for the first 2 days was excellent with plenty of sun. I had a chance to explore the outdoors. The beaches in Okinawa were what you would expect from an island in the tropics. Very clear/transparent blue seas.

Left: The first white sandy beach I found, Right: Looking down at the water from the top of a cliff, below are corals

The ocean was great to look at but unfortunately the weather didn't hold out for me to find and book a diving trip. When it comes to weather dependent activities, I don't usually like to book in advance in case the weather goes sour. But it would have been a great experience. From what I am told, Okinawa is in the world's top 5 best diving spots. I will have to make a note to come back again to do some diving.

The fauna found in around the island was very tropical looking with palm, banana and papaya trees accentuating the tropical environment. The island it self also appeared to be formed through a volcanic process as some parts of the island had incredibly jagged rock formations near the coast though I wasn't aware of any dormant volcanoes on the island which might have given the impression that you were on another planet.


Left: Palm tree boulevards, Right: Jagged rock formations by the coast

Onwards from the landscape and onwards to food, Okinawa is well known for both their pork and seafood. Though I still am not sure what is generally considered traditional Okinawan cooking, I did have some Okinawan esque cooking while driving around.


Left: Okinawan Soba, Right: A buffet at a cafe

One of the things that was listed in the tour guides I've read was to try out Okinawan Soba, which after eating, was like a cross between soba and udon. The noodles in the soup were thicker and chewier compared to ordinary soba reminding me of udon noodles. The noodles are topped with stewed pork which were quite good. The image on the upper right was a buffet I had at a rather nice cafe, consisting of an assortment of rice, fried chicken, cooked seaweed and fried bitter melon. Bitter melon is apparently, one of those things that tourists ought to try when coming out to Okinawa. I personally thought that bitter melon was something that you couldn't find in Tokyo, but apparently after going to the grocery store just yesterday, I managed to find it in the produce section. If you are wondering what bitter melon is, the image below should give you a good idea, it is also often used in Chinese soups.


Chinese bitter melon

A place where I had a good time looking around on Okinawa was at one of the large markets on "International Street" in Naha, the largest city in Okinawa. The market sells a variety of goods like clothes, bags and food. The food market stood out the most to me.

Being the city slicker that I am, I've generally bought my produce in shrink wrapped packages and brought them home, as most ordinary people would do. The island being well known for their pork and seafood, sells their meats in large chunks compared to what most ordinary grocery stores do. It was a very fascinating sight to see.


Meat for sale at the meat market

It's probably been a while since I've had the chance to see stacks of pork bellies like these in a long while as I probably bet that there are a few places back home which sells meats like these, just by looking at them, they already look much more delicious compared to the usual store packaged meats.

While walking around the markets, I also managed to run unto a "salt shop," selling a variety of different salts from all over the island and around the world. If there was one thing I noticed about salt used in Japan compared to salt in North America is that Japanese salt is much "saltier." In other words, if you're cooking in Japan and you use the same amount of salt that you would usually use in Canada, you're going to be in for one salty meal. I never did dig into that much more since coming to Japan but the clerk at the store was nice enough to give me a nice explanation of all the different tasting salts.


Left: Snow salt found in Okinawa, Right: A section of different salts found in Japan

Of the salts they had, the the salts were ranked on a "smooth to sharp," sharp being "very salty" and smooth being mild. After sampling a few different salts, they recommended to me that sharp salts are generally good for seasoning seafood, which is predominantly used in Japan. The smoother salts are generally used in western cooking. After tasting a few of the smoother kinds of salts, I'd have to say that you want to use those in foods like pop corn, but would want to steer clear of using the sharper salts in a similar situation.

It was a very educational experience through it is the only place that I have ever gone to that has rated the differences in the salts. In all, they had about 50 different basic salts at the store and also a wide variety of mixed salts with herbs.

The last 2 days of the trip was spent visiting some of the old war museums as Okinawa was a very major battle front before the surrender of Japan. Casualties of this battle was very lopsided with the Japanese losing 110,000 compared to the US losing 12,000 soldiers, nearly a 10:1 ratio. One of the reasons for this lopsided victory was that much of the natively living populations on the islands were conscripted into the war effort, even the Japanese school girls being sent into service by attending to the wounded. I did some see some old relics such as old torpedoes and very rusted war equipment.

In general, Okinawa was a nice place to visit, but not as resort-like as I imagined it to be. Many of the buildings looked a bit past their time and traffic over there is a pain as the train system is not as developed compared to the central parts of Japan. Actually, I find traveling by train to be something pleasant compared to going around by car because I know exactly when I'll be able to make it to some place, though it isn't as liberating as being to take a car anywhere.

As a place to live, though the culture is a little more laid back and rural compared to most parts of Japan, it isn't a place I would want to stay for long periods of time. Other than the touring, there isn't a whole lot to do. It was a good trip and if there is a good travel deal, I may fly out to visit again for some diving.