Thursday, October 28, 2010

Stay on your toes

I'll be writing some more later on but for now, there will be a short lull in writing. Work is busy at the moment and a lot of things are going on. Will be back later!

Saturday, October 23, 2010

forget the limiting, focus on the enabling

I've posted plenty about my gripes on working in a corporation and doing research in an institution. I've decided that it's time to stop worrying about all the annoying things that bug me about these establishments and free myself of the "me versus them mindset" and become more fluid in dealing with roadblocks.

Perhaps I was naive when I was younger, when I saw a system or an organization that I thought was ineffective, that it would be easy to encourage change. After trying with little real results, I have come to the realization that change is hard and not worth the time. It's more effective to create a pocket in an organization where you can work effectively and if things are not optimal, then it's time to go. When finally getting into the real world, the scale that you deal with things changes, dramatically.

Before, life would revolve around the academic environment, going to elementary school or high school with 1,200 students and only interacting with mostly people in the same grade (say several hundred people) means that you have a really small point of reference. Going to a university of 40,000 people is a little different. When you finally get out of university and into the real world of millions of people the scale of what you deal with changes. When you're dealing with just a few hundred people and you're stuck with them for many years, that was the environment that you're stuck in and it's rather hard to change. You had to live with the things that you liked and didn't like. After getting out of school, the world is a big place and you don't have to put the effort into changing an environment to make it more palatable. If it's something that you don't like then you can easily move on.

And that's the thing when it comes to attracting smart people, keeping them and creating the right environment to getting good work done. I don't have time to fight the system, to convince people that doing things a different way is better and then doing it. Life is too short for that and I just want to find the right people and environment to be successful, because at the end of it, it takes way less effort to fight within a system and do something than to disengage and do it yourself. The strategy is to find the right way to be successful on your own. If the only taught that at school...

Performance review

I just had my performance review yesterday. In 6 months, I did a decent amount of work and at the same time, I also reduced the number of over time hours I've been putting in at work. I was pulling about 55 hours of overtime/month last year and this year, I've brought it down to about 30 hours/month. Having an extra 24 hours/month to yourself does make a difference in quality of life. Don't underestimate the value of time. I'm going off on a tangent however...

After my performance review, I asked my boss what does it take to get a promotion. How things work in a corporation is that you get raises based on the number of years you've been around, on top of that, after a certain number of years you can be recommended for a grade promotion. His response was that I need to take more of a leadership role and that I could be considered to get a promotion after my 4th year. Hearing something like that was shocking and disappointing. Why does it have to take at least 4 years to get considered for a promotion? I believe that promotions should be performance based, depending on the capacity of the person to handle responsibility and their ability to do good work. To be stuck in a position for 4 years and then take say another 5~6 years for another promotion is pretty much career advancement at a snail's pace.

I don't want to be half-way dead by the time I get into middle-upper management.

There has to be a better way at being successful instead of lining up in the seniority queue for a promotion. That way of thinking has to die and if you want to have a successful company, "promotions" shouldn't be limited to the number of upper level vacancies that need to be filled with someone. Instead, I argue that everyone should have a salary that scales with the level of their performance. I would rather have an environment where everyone can be rewarded for excellent performance instead of people waiting for someone to leave to get upgraded.

Real talent can't be kept waiting, because they will find other places to move upwards into and the company will be at a net loss in talent.

When it comes to making a successful company, having the right people is everything. More important than the amount of money that's bankrolled into the company. Smart, resourceful people will usually find a way to succeed. When your most talented members are gone, companies that were once great will be doomed.

Sunday, October 17, 2010

Having a backup computer is important

I've had previous experiences with computer hardware failure, namely having a laptop computer dying on me, leaving me without a PC to do any sort work or connection to the internet. Having a single point of failure for tools or equipment I use on a very regular basis can be a severe vulnerability and it is necessary to have a backup.

I learned this lesson through experience, after my first jaunt where my primary computing device was a laptop. It was great for about the first 1.5 years, then it died on me after expiry of my warranty, the extended care package also did not cover additional repairs at 100% and every time that something would fail, it would always be diagnosed as a motherboard "failure" which would cost just enough so I would seriously consider getting a new laptop instead.

After having enough of that experience, I decided that laptops had a too high cost of failure in terms of time (as repairs had a 1 month turn around time) and financial cost (ie. $700~$1000 for a motherboard replacement) to repair. Being experienced with the assembly of desktop computers, I know that I can generally replace damaged computer parts for far, far cheaper. I decided to switch back to having a desktop as my primary working system 3 years ago and put together my own system. The machine was working great until today when the computer started acting up when the power started cutting itself out during use. I am highly suspicious that the power supply needs to be replaced and I just put an order for a new part online for about $40 for a new unit.

The difference between $40 and $700~$1000 is staggering, and in addition, instead of having to wait 3~4 weeks for the repair, I'll have the parts arriving in the next few days to make the replacement.

When it comes to mobile computing, I have opted to have a cheap $400 netbook for use when I am on the road. Equipped with 160 GB in hard drive space and an atom processor with 7~8 hours of battery life, the machine has sufficient enough kick for me to watch movies on the go, digitally enhance and store travel photos, and the usual net browsing and e-mail applications. Should anything should happen to my little netbook, I would be far more comfortable with discarding it and getting a new once for about the same price. I am very happy with the decision to change my computing setup years ago, because it is finally paying off.

The beginnings of a bookmark list

I incredibly happy about the news aggregator sites like slashdot, reddit and now hacker news. With so many articles being posted everyday, and sometimes, degradation of communities with growing number of people, I have decided that I would like to create a bookmark list of good articles that I have read to share with other people. It may simply be a page on this site for now, but I would like to more functionality to create feeds with other peoples bookmark lists to enrich breadth of reading topics and material.
BlogBooster-The most productive way for mobile blogging. BlogBooster is a multi-service blog editor for iPhone, Android, WebOs and your desktop

Being with the right peoole is rejuvinating

Yesterday, I had the pleasure of going to a small gathering of Tokyo based programmers working or interested in start ups. Though interaction with everyone wasn't technical in nature, it was great to meet people working to starting their own businesses.

The great part of everyone was how supportive to each other they were. I would have thought that the world of startups be all about competition but it isn't, it is also about people helping each other out. I sense of altruism and community resonates well with me and I want to work in an environment like that.

I talked about being in a place with the right kind of culture in an earlier post, that community is the kind of place where I want to be.BlogBooster-The most productive way for mobile blogging. BlogBooster is a multi-service blog editor for iPhone, Android, WebOs and your desktop

Saturday, October 16, 2010

Know your tier 1 friends

Life is short and the things is that you should you know in life is know who you can depend on. When push cones to shove, there aren't a whole lot of people in life that you can depend on in life.

There are people in life that will call upon in you when they need you, and there are people that won't come to help you when it comes time when you need help. Maybe when a person grows up is becomes necessary to separate the wheat from the chaff. It is necessary to know who you can depend on. Those that you can depend on, treasure them. The rest, is a decision call. But if you can't depend on them then there isn't a point to being friends with them, but that us the cold truth. You might as well know who you can depend on now then waste your time on useless people later.

If this sounds cold, then realize that the truth is equally cold, because this is what you must answer to everyday. If you want to have real friends then find real people that you can depend on. BlogBooster-The most productive way for mobile blogging. BlogBooster is a multi-service blog editor for iPhone, Android, WebOs and your desktop

Friday, October 15, 2010

Company culture is important

I went to a company seminar for junior employees of the company I work for today. I was throttled with disappointment and have reservations about the future direction of the corporation that I work at. The environment and the kind of people you hire are essential to create the right kind of culture/atmosphere that makes a successful company. We face a creativity and innovation crisis and I am starting to see that part of the problem is a result of the culture of the company -- there aren't a lot of people with the right kind of creative flare, follow through and leadership to pull off innovative and visionary projects. Hell, I don't even think that there is a real vision at work.

You know when you are in trouble when the executives are telling employees that "we have to be more creative," thinking that just telling people to be a certain way will enact change. When you have executives that can't lead, set good examples or communicate inspirationally throughout the company then there are very fundamental problems. The problem is even worse when there are superiors that don't listen or are stubborn and you have weak subordinates that know when it's time to push against the grain to get things done. We lost 6 months on one project because people weren't able to speak up. But back to the seminar I went to today.

The seminar I attended is a career planning seminar for junior employees (though I would not like to consider myself one). The idea that over the next few years, we are supposed to be preparing a general vision of ourselves, the kind of person that we are to evolve to be and present that vision to our project managers and eventually to the division executives when we get to our 4th year at the company. Feels like being back in high school by the sound of it.

I feel that many managers are in search of an answer for the next big thing. What many of them can do to a certain degree is identify them when they squeeze ideas out of their employees. I also find that so few of them have true visionary ideas of their own. The only difference between them and their employees is that they're subjected to more ideas and can pretend that they know more-- there is know easier way to stick out your chest and look like you are an "alpha" by appearing to know more than your colleagues. It is by nature of their profession that managers act this way. Dilbert comics make a good point about this with the pointy haired boss, know much about buzz words but little behind their meanings. To be a good manager, I believe that there is more to just knowing, but the ability to get things done on your own. If you want to inspire and attract the right kind of people, you have to start off as being the right kind of person.

Changing corporate culture, or culture in general is a tough process. I've tried it to little avail once before when I was a student at a Japanese lab while doing my masters. I've seen and experienced different things as a westerner and people are afraid of trying new things as old habits are hard to break. I talked about how we how it would be a good idea to start having better ways of exchanging ideas between members of the lab, (the lab I was a part of was really big, with 50 researchers) and better initial training to bring new members up to speed instead of fending for themselves. I eventually ran into a brick wall, with insufficient support and with looming deadlines coming up, I gritted my teeth and decided that I wanted to be the best possible person that I could be instead of changing my environment and did my own things.

Sometimes there isn't time to fight the fight and other times, it just isn't worth it. One of the things I learned over the years is to not waste time fighting over small things. If the effort it too much for some small return, then it isn't worth it to waste time over it-- simply moving on and finding better people to deal with is far more rewarding. I think that a lot of smart people are aware of this and when it become too much of a pain to do interesting work, you will start to lose your smartest people. Google, Microsoft and other technology companies know how valuable smart people are that they even had an agreement to not poach each other's company. If you want to be successful, part of it is knowing how to attract and keep the right kind of people to work with. When it comes to success, people and culture is crucial.

Tuesday, October 12, 2010

Financial Report Aggregation

Started reading some financial reports from Amazon and Apple today. What was interesting about the both of these companies is how they've deployed their capital in international markets to hedge against the declining USD. Amazon, in their 2010 Annual report would stand to lose money if the USD appreciated. Apple seems to be hedging against the declining USD as noted in their July annual report.

It would be interesting to see what kind of economic sentiment one can pickup from aggregating information by reading financial reports to figure out how businesses are positioning themselves for the future. So a question I've started mulling is how does one aggregate financial information from many sources well? The amount of information that I can process is limited, is there a collaborative strategy or a digital processing techniques?

Will need to do more reading to figure out a strategy.

Sunday, October 10, 2010

The "Life goes on" Stance

Maybe it's because I think too much, but I am the kind of person that likes making optimal decisions. I wonder if I am using the most optical technique for math problems, I wonder if the data structures and the functional relations are setup to write clean code, and I wonder if moving out to a more lively place, while costing more is better than living cheaper further way from the city.

Decisions, decisions, decisions. The problem is that one doesn't really know the end effects of a decision until having made them. For whatever known or unknown circumstances things may or may not go as according as planned. The question, is it really worth it worrying about all that stuff?

It's been ages since I played any Texas Hold'em poker, but I took away some very important lessons in life from this game. Texas hold'em poker is an incomplete information game, that is the beauty of this game-- the idea that you have to make decisions without knowing every piece of information available. You could still make the "best" decision given the information available and still lose and that is where the "risk management" aspects of the game kicks in. Sure you can have a 90% to win probability, but if you're playing all-in all the time then you are going to have your ass handed to you eventually. The moral of the story is that for whatever decision you make, even if it goes terribly wrong, you ought to be able to take the hits and keep on going (Rocky 6 reference).

An that's sort of the thing with life-- you do things, somethings fail some of them work out. Unforeseen circumstances kick you in the rear and sometimes pleasant unexpected surprises fall from the sky. But that's really all there is to it, no matter what happens, for better or worse, life simply goes on and there isn't much that you worrying can solve.

Being robust is more important than being optimal

There are too many things in life to worry about and worrying takes up precious time. It would be nice to reduce the amount of time worrying and increase productive time and state of mind. The simple solution is to make robust decisions, where the expected value if positive and failure is not catastrophic. That is not to say that one shouldn't make bold decisions; but for the bold decisions that you do make, you ought to be able to take the hit and still be able to stand if things don't work out. The interesting thing though about a lot of optimization mechanics is that risk/robustness analysis is often forgotten and left as a hidden variable-- things work out nicely unless something fails.

Being robust also means that you can set yourself up for some high yield/high risk (relative) situations since you could have a fall back setup should things don't work out. I'll say it here, but knowing how to be robust and knowing how to take chances and succeeding at them is a key ingredient when it comes to being successful (and even sexy).

The point is to not let failures be hangups or crippling and keep moving on. Oddly enough, this almost sounds like an investment strategy.

Tuesday, October 05, 2010

Goofing off pays off

Richard Feynman, the famous physicist, had mentioned that he had lost the inspiration to find new and useful ideas in physics. He also apparently was in a rut for it, where upon he just gave up on thinking hard about it and decided to let his mind meander to do whatever it felt like. The ends result was that he ended up winning a Nobel prize for his mind meandering when he came across a student in the Cornell cafeteria spinning plates and noticed that the plate had a 2:1 wobble to spin ratio. After performing the physical calculations and being chided by one of his colleagues that the analysis he was doing was "useless," Feynman would go on to win a Nobel Prize for a derivative work from the calculations he did from the wobbling place as it was related to electron spins in quantum electro-dynamics. For those that are interested, a small part of the story can be found here, and if you do have a chance, I highly recommend Feynman's book, "Surely You're Joking, Mr. Feynman!" as a great read.

I too would run into a similar problem these last few weeks after being thrown into the flame of writing simulation scripts using a terrible scripting language. The syntax is strict, variable names are strange and the compiler doesn't accept lowercase letters in the code. The code looks like Perl on bad crack and it's surprising how people can get work done in this language.

I have a colleague working on the simulation project and he's build up a code base over the last 2 years, he's resigned to bashing through this programming language to run simulations. I've tried to read the code and fell asleep multiple times and got several headaches as a result of trying to follow a convoluted path of variables. split across several files to figure out what it going on.

Traumatized, I gave up trying to write code in this language. After 2 days of trying to understand the code, I was pretty much in a rut with this terrible code and resigned myself to clearing my head by working on other projects and taking really long breaks. Nearly a week later, after getting a handle on the fundamentals, I was struck with an idea-- basically, I would write a program to writes the simulation script and I would by pass all the terrible variable handling by natively managing variables in a different language. I managed to clean up the interface considerably, write a main processing loop where I just throw cleanly designed data sets to generate complicated physical structures with simple commands.

What my colleague would need nearly a week to testing and debugging, I could do the same thing in an afternoon. After joining my colleague in the simulation team, we're going to throw out all the old code and redesign everything using my framework.

Perhaps it is an inherent trait in me, that I hate using an inelegant system to do something and my natural instinct is to run away from the problem until I find an elegant way of dealing with the problem. Sure, I may have been goofing off for the past week, but I've figured out to nearly multiply my productivity by a factor of 4~5 over my colleague and will be bringing him up to my speed after I teach him how to my code. Increasing the productivity of 2 people by a factor of 4~5 is huge when it comes to the amount of cost savings the company yields. I will be writing about this in my winter evaluation report no doubt.

Though this story may sound like that it serves a didactic anecdote, that running away from hard problems is a good idea, I assure you that it doesn't and there are times when it is necessary to roll up the sleeves and to the heavy duty grunt work. The question is knowing when to run and look for better solutions vs getting on with it is key. Maybe I'm just lazy, but I generally like attacking problems when I have an idea to make it easy to solve, otherwise, I'll be doing other things.