Tuesday, December 18, 2007

Job Update

I promised many people that at some point I would write a post to help clarify what my job situation has been, where it is now, and where it looks to be going. However, due to the fluid nature of situation -- depending many things that hadn't been entirely concluded, I was reluctant to set thought to words until now.

At my previous company I was working with rather industrious Chinese immigrant, now with Japanese citizenship, whom we will call J.

J. was introduced to a system called "Second Life" at some point in his travels, which is a particular implementation of what could generally be called Virtual Worlds. VWs are essentially about using the Internet and immersive technologies (specifically modern 3D graphics), to help advance our online experience to something that helps fulfill our needs better than current, essentially 2D ones. So, for example, instead of using a 2D website for social networking, or a 2D chat agent to chat with your buddies, you would create a 3D avatar, go into a realistic 3D space, and chat and socialize there. Moreover, instead of creating your own text-and-image-based 2D website content on your own site or blog, you could own virtual land, and create fully-scripted (and therefore active and orchestrated) 3D objects on your land.

When considered in the context of the current Internet, it becomes obvious that VWs are simply a single convergence point for newer technologies that exist on everyone's modern desktop PC, and the same needs that drove the creation of the 2D Internet before it.

So J., having become infatuated with Second Life and wanting to take advantage of what appeared to be an emerging market -- but not really knowing how to, my co-worker decided to set about networking with whomever would listen, and see what would drop into his lap. J. approached me and appeared to be interested in cultivating a friendship with me; and then later with recruiting me to his yet very embryonic enterprise.

Having just met him, I has assumed that all his attention towards me was genuine, and that is interest must stem from possibility that when he learned more about my personality, he saw the potential in me that I know has always existed, and being such a sharp judge of character he was trying to leap on a "diamond in the rough" in recruiting me.

Later I was to learn that that was simply an operating mode of his: where he meets new people, calls them "friend", and bids them to join whatever his current cause is; then promptly moves on until needed again -- a user's mentality. That sad reality was born out in several instances where true friend would have stood by me and supported me, but instead he let me down and did whatever he wanted to at that moment.

It was also another operating mode of his was to take people out for dinners to "talk business", where in reality the talk was always of a superficial and vague nature; where items previously concluded, or questions asked, always came up again as if no discussion had happened previously.

This I believe comes from a desire to "look the part" of a big free-wheeling executive-type -- enjoying the superficialities, without having to get down to the dirty work of deciding things and taking responsibility for your decisions. Sadly this cultivation of "executive aire" over these path months has worked: people treat him seriously even if they see his words don't make sense. Its interesting to watch a person simply assume authority that exists only in the assumptions of others.

So eventually, over a period of months, in addition to the above mentioned problems which I discerned, what also came to light was that he had seen nothing special in me; rather he had just been asking every person he knew to join him, and I happened to be a person who knew him. In fact, he would demonstrate that he really knew nothing at all about what motivates me -- and it would be the cause of many conflicts between us.

When he asked me to quit my job at the time in order to join him, there was a decent amount of risk involved. And the more I questioned him about the basic operating principles of what he planned to do, the less satisfactorily he was able to explain himself.

At first I just assumed it was a language barrier issue, but eventually I had to conclude it was because he really didn't know what he was doing. At that point I made my participation in the adventure contingent on his ability to sell me on his business. I said "consider me your first customer", and set it aside as a bit of a foolish enterprise, bound for no good due to lack of competent foresight.

Later he was to also hand me a couple of bald lies, which at that time I lead me to decide there was no purpose in maintaining a friendship with a liar, and I stopped associating with him.

However, the conditions at the job I was employed at were increasingly getting worse. The field was interesting: R&D/Custom development in 3D rendering and haptic control. But the people running it were nice but utterly incompetent, a pattern I have come to believe is endemic in Japanese IT. The sheer ridiculousness of the organization at every level, and the way in which the incompetence was starting to drag on me professionally and personally, started to affect my job performance. And my personal relationship with my superiors deteriorated to the point where I was actively looking for a new job.

I knew they couldn't get rid of me because I was the only one who knew the system that I had written from scratch for them, which they hoped of one day selling, so I felt I could bide my time. However they caught me by surprise, by preemptively announcing to my contracting boss that they would not renew my contract in September, which I felt was a bit of a dick-move that left me further unimpressed. I resigned after two weeks notice. At the end of July.

J., having finally quit that company to start his own, but still having contacts there, found out about my situation, and smartly contacted me to let me know what had become of him, and ask if I would finally join him. It turns out a major venture capital/incubation firm in Tokyo had bought his company out and made him CTO of the new company. He still could not explain to me what he would be doing with this company, however what was different now from when he asked before, was that he was offering me a guaranteed salary at a healthy 40% raise. I was also told the company would be a global, English-speaking workplace, modeled after Google (free drinks, scheduling freedom, including 20% spare project time, etc), and so on. So after many interviews with financial companies, and one cell-phone software maker, I decided that it was a risk I could now accept given the potential for reward.

From the very beginning J. was fully of complements for me, when I first met him and when I first joined the company. He wanted me to be a leader within the new company -- starting with me taking the position of Head of the section of the company dedicated to the VW 3D client viewer. There was also some not-entirely-joking talk of me becoming CTO in his place (and I assume he would move up somewhere higher). Foolishly I bought into it because I thought again that it was my natural potential shining through. (Notice a pattern?)

To start with there just weren't nearly enough people to do everything that needed to be done. We didn't even have a secretary, so simple bookings were getting forgotten because the CTO or CEO were the only people who could do it, and they would just forget. Whats worse, is that J., having not the faintest idea how to start a company, was going about creating his dream company in what would seem like an arbitrary fashion.

In my way of thinking, you need to hire religiously for your first core group of people, because later on these are the people you have to trust implicitly to help you run your business. However it turns out that under J.'s recruiting method, the few people we had were essentially the just first people who said "yes" to him. Their skill-set was either flat-out sub-par or ill-fitting to what was required.

That assessment includes me: I have potential, but there is _no_ way I was or even am a seasoned project manager + leader + business man + C++ guru + any of the other hats I was asked, or felt required to wear. In effect I was thrown into the deep-end; which, if done with a capable mentor would have been survivable, or even healthy -- but considering I was thrown not for the purpose of teaching me the ropes, but rather so that J., who having no more ability than I -- and I would dare say less, didn't have to do that job himself!

At first I thrashed about, doing my best; but when it became clear I was sinking, I looked to J. He looked away or just criticized my work -- which was pretty galling considering that it was really his work in the first place. I blamed myself to start with, but increasingly I put the blame at the source, and we got into conflict. And by "conflict" I mean he would embarrass or insult me, and I would verbally berate him while he silently ignored what I was saying. A very functional relationship.

Given my rising stress levels and falling stock within the "leadership" of the company, the only choice was clear: explicitly decline all the implied responsibility that I had been given, and return to my core professional competency: programming.

I dove deeper into developing the 3D client viewer, however I couldn't really call myself a leader of anything since J. had neglected to realize before creating a group with a titular Head, that in fact, very little work was available on the viewer. The viewer is a dumb-client. And a professional dead-end within the company. Thanks.

Whats even worse is that J. neglected to notice that the code-base they had chosen for their server part was legally incompatible with the client viewer, and therefore anyone who worked on the viewer, as I had, was incapable of ever working on the server -- where 99% of the work needed to be done! Oops.

Unlike our in-house leadership, the leadership of the server part company was sensitive to my situation, and took steps to discuss a legal means of allowing me to work again: after a period of time it would be considered that the legal "taint" had washed off, and I could resume work. Thanks unrelated outside CEO!!

All the while, development was proceeding at a glacial pace, since the people in charge of it were literally just the first who agreed to join the company, and had no idea what they were doing. Mistakes that should be obvious to a first-year Computer Scientist or Software Engineer were a daily occurrence. And since all the decision making was done in Japanese only, arguing those mistakes was an exercise in masochism. The other English language employee and I spent all our time just guessing what was going on.

We desperately needed more people, but J. refused to do any recruiting outside his networking+"Hey you. Come join my company!" shtick. I decided it was necessary for the company's survival to go out myself, find a recruiter, and start doing interviews. Those interviews resulted in our current chief architect and two other lead programmers. No thanks ever came by voice nor mail.

So I reached a point where my dissatisfaction had grown to the point where if J. didn't go, there would be no future in the company, and therefore I had to go. I wrote a scathing email to the CEO of the parent company. This email was so unflattering that in a western company I could _guarantee_ you it would cost *someone* their job. To his credit, the parent CEO reacted somewhat swiftly, calling me to his office and assuring me he would make changes. I thought he meant deposing J. and setting me up in leadership (since there just wasn't anyone else to choose from), and I was giddly like a school-girl.

Well it turns out even in western-ish Japanese companies, things still proceed along the same essential lines as they do in regular Japanese companies: J. was mildly rebuked, a new project manager was brought in to a role that was hitherto desperately needed but totally unfilled -- but almost everything else remained as it was. How he dodged that bullet is still beyond me. Teflon briefs?

G., the new PM, was surprisingly like me. The way we thought and acted was strikingly similar. Even though he is Japanese, he went to school in Edmonton and even plays hockey, which makes him more Canadian than me.

I really feel sorry for him, because he essentially stepped into the same nightmare that I had hitherto been existing in. He came in with a clear mandate to clean things up, as I asked by the parent CEO -- but as he did so, he got push-back from J., and eventually J. won out. Now he is in the position of knowing what needs to be done, but being powerless to resist J.'s incessant interfering. How on earth do people so consistently prove themselves to be useless, yet retain so much political power?

G. came in an set about reorganizing the programmers into something that would resemble a minimally functional software development house, and spent a lot of time interviewing programmers, considering business needs, and creating a new organization. In that organization, I was to be the leader for essentially all the major software development, which was the core VW stuff, and some add-in tools. This plan was entirely and almost summarily rejected by J.

Well all the politicking has come to an end, and the dust is settling, and what it looks like is that J. remains CTO -- even though he is only a salesman and constantly interferes with technical matters he is not competent in, G. is our PM -- who's unenviable job is to endure the interference so us programmers don't have to, and me -- working as a lead programmer along with our architect doing core development (when my taint wears off). Its hardly the executive position that could have been in the cards, but I purposely chose to decline that direction because I knew the price I would have to pay to get it.

The position is where my competency is, so I no longer have to be a fish out of water with no help; and the work is still interesting with plenty to learn, so I haven't a real reason to quit yet. I expect the programming should continue be fun, rewarding and good for the resume, so I can say I enjoy my job again.

What I can't say is that I think my company will be successful in the mid to long term, as it is burdened with incompetent management that just won't go away. I am keeping an eye out for better opportunities, but I am currently thinking that none will be available that will provide a significant enough improvement on the current situation without leaving Japan; something M. is reluctant to do.

Still I can say that it was worth the risk to join the company, since even if the price has been rather steep, I have learned a lot about how run a company, and even more about how not to. That kind of education is worth the time spent. Its the wise man however, that knows when he has learned enough and is ready to move on.

Sunday, December 9, 2007

The way of virtue

Failure is an opportunity.
If you blame someone else,
there is no end to blame.

Therefore the master
fulfills her own obligations
and corrects her own mistakes.
She does what she needs to do
and demands nothing of others.

-- Chapter 79

Friday, December 7, 2007

Thursday, December 6, 2007

Wednesday, December 5, 2007

Lanavision (now in Technicolor)

video video

My words always mean precisely what I define them them to mean -- that's a Tautology!

'I don't know what you mean by "glory,"' Alice said.

Humpty Dumpty smiled contemptuously. 'Of course you don't-- till I tell you. I meant "there's a nice knock-down argument for you!"'

'But "glory" doesn't mean "a nice knock-down argument,"' Alice objected.

'When I use a word,' Humpty Dumpty said in rather a scornful tone, 'it means just what I choose it to mean--neither more nor less.'

--

Saturday, November 17, 2007

Confirmation of the Obvious is no less satisfying

Its something I have long known intuitively, confirmed by experiment, and set down in a form easily sharable with those who vex me so. The great irony is the people who most need to read this are the least likely to understand it.

Friday, November 16, 2007

Lanamania





while upon Setebos

Be not afeard; the isle is full of noises,
Sounds and sweet airs, that give delight and hurt not.
Sometimes a thousand twangling instruments
Will hum about mine ears, and sometime voices
That, if I then had waked after long sleep,
Will make me sleep again: and then, in dreaming,
The clouds methought would open and show riches
Ready to drop upon me; that, when I waked,
I cried to dream again.
-- Caliban, The Tempest, Act 3, Scene 2

Wednesday, November 7, 2007

A Toy Virtual World Game

I invented a toy-game for thinking about virtual worlds, since attempting to think or discuss a complex system like SL is just too difficult due to so many variables. The idea is to boil down an SL-like VW to the smallest possible subset that still exhibits the same scaling properties of the current SL region server.

Its a game called Boxes and Balls

There are 2 entities in the world: human controlled avatar Balls, and game artifact Boxes.
They both have two forms of state: position of their center in the world, and color.
All balls and boxes all have uniform size.

Humans can freely choose any unique color for their ball to begin with, but the color remains constant for the life of the ball avatar.
Each box can have variable color depending on world conditions.

The world itself is an infinite plane to which the player can move about; however the player is restricted to motion on the plane.

Balls have these actions available to them:
1. move at a uniform rate
2. create a new box that is the same color as itself
3. eat an existing box that is the same color as itself
4. paint any box the to be the same color as itself

The rules that apply in the world are:
1. when a ball collides with another ball, or a box of another color, their motion is halted
2. when a ball collides with a box of its color, it can pass through it
3. created boxes have the same center-position as its creator, at the moment of creation
4. to eat a box, the ball's center must be within the boundary of the box
5. each ball has an Effective Radius, outside of which nothing can be seen or painted

The requirements of the game design:
1. that the game is experienced uniformly by all players -- all players will agree on a consistent interpretation of the game state
2. that the game is scalable to 2M concurrent users

The way in which this models the tough parts of a VW is the way in which any player can affect the state of any other player's physical world within the effective radius.

The way in which this doesn't model the tough parts of a SL-like VW is there is no scripting.

Friday, November 2, 2007

Brain pushups

A little spot about why I meditate, and why you should too.

[Teaser: because its exercise that molds your mind into a healthier form; and like physical exercise, though it takes effort, its never too late to start to improve your quality of life.]

Wednesday, October 31, 2007

Super Intertubes 3.0D Fantasiticon!

Some of the things I'm doing at the company is getting the attention of the nascent 3D-internet/ virtual world blog sphere, which is nice.

The blogger's style is a little odd, since she seems to be grouping a whole lot of topics in one entry. You'll have to scroll down a little to see 3Di's name, or a picture of me.

Monday, October 22, 2007

Best Indian Food in Yokohama

I've been going to this quiet gem of an Indian Restaurant for a couple months now, and thought I would let the secret out about where people in Yokohama can get real, high quality, well priced Indian food. Check out Sami's The Tiffin.

Its well known among the Indian and foreigner communities, but I thought I should make it a little more open to the public.

Saturday, September 29, 2007

New Lana Pictures

本当におやばかやなぁ。。。

For my wife.

M., I love you. You're the only one for me.

Thursday, September 27, 2007

The Truth Hurts

is the most idiotic phrase I've ever heard.

The truth doesn't hurt, it just is. The truth can't hurt any more than the knowledge that the earth is round and orbits about the sun hurts. The universe doesn't hurt you, its your own faulty, broken, human psychology that is hurting itself.

The truth can only hurt if you've been lying to yourself the whole time. What hurts is having the comforting lie ripped away from you. When the lie collapses under the weight of reality, as it must always in time, the sense of loss of your fantasy world is what hurts, not "The Truth". The truth was always there, waiting to be noticed; blameless, without ego.

If you don't want to be hurt by the truth, you shouldn't be lying to yourself.

Saturday, September 15, 2007

Big discovery about health

Exercise makes you physically more intelligent.

If you need to do any sort of thinking at all in your life, you should have an exercise routine.

Monday, September 10, 2007

Left Brain - Right Brain

Experimental proof of a theory I have held for a long time on the neurological basis of "Left" and "Right" in politics.

I have always held that "left" people are "adaptive", and "right" people are "committed". Which is why even if you as an individual hold one sided beliefs, because they make sense to you, society as a whole needs both sides to function; and while the specific policies of the sides may change with time, this division itself is fundamental and will never disappear.

Culture Clash

I have been doing a lot of recruiting and business development work since joining 3Di; essentially because I knew that there were things that needed to be done, and wouldn't get done if I didn't do it myself. For the most part this was looking among my friends and new acquaintances for people who were interested in virtual worlds, and ask them if they wanted to help us somehow -- very simple stuff.

My CEO and CTO, to their credit, noticed my work, and probably looking to take advantage of my native English ability as much as anything else, asked me to continue this work; and perhaps give me a promotion to a managerial/executive role some time in the future. I was flattered, and intentionally threw myself even more into a role that up until then I had merely wandered in to.

The problem is that I finally got a chance to do business development with my CTO on the trip that I took recently to San Francisco, and thus work directly with him for the first time in this capacity.

I was lead to believe that we would be meeting all the CEOs of our potential competitors and partners for the first time, for the purpose of developing our initial strategy for dealing with them -- the sort of stuff that sets the tone for the entire future of our company; which is why I had to face the choice between going on the trip, or staying behind to wait for L. with M. I made the wrong choice.

Firstly, the recurring problem of incomplete or unclear communication reared its head in the form of how many of the CEOs we'd actually get to meet. For me it turns out none. The trip was planned, but not overly official, since all the people we had arranged to me eventually had to cancel the meeting, or delegate it to an underling. The lack of certainty was never made clear to me, perhaps intentionally, so I was unable to add that into my decision making.

However, most importantly, in reality we were not actually on a tour of our own, but we were piggy backing on the tour of a much larger company called HPH, that our parent company has invested in. Even worse, we weren't really invited on that trip as a separate company, so the question arose as to how we manage our conflict of interest. Are we investors in HPH, or are we developers of our own competing product? The CTO of our company is personal friends with the CEO of HPH, a director of the parent company who invested in HPH, and president of the future HPH Japan division. If that sounds confusing to you, don't worry it is confusing. And a conflict of interest. And bad news any way you slice it.

The problem here was we wanted to sell our own custom platform to people, but we were only able to meet with these CEOs because our parent company was an investor in one of our competitors. So how we explain this to the companies we meet so they don't think we are sneaky and underhanded, and how to we sell ourselves without pissing off HPH, using their largess in inviting us against them? Thankfully this was communicated beforehand, but my solution, picking compromise approach and being totally upfront about it, was essentially ignored, in favor of the CTO running things by his gut without any sort of plan. (Insert Marge Simpson's concerned groan.)

The first meeting we had, was with MOU, which the CTO had met with in Singapore. HPH was supposed to meet with MOU, but it would appear that my CTO had asked MOU to cancel their meeting with HPH and only meet with us. Our CTO then lied to HPH about what we were doing.

We went in to the meeting without any sort of plan. For our readers not familiar with eastern business practices, this is not really that uncommon a "strategy" when considering new partnerships -- just head down, have some fun, become buddies, let little people worry about the details later. However, for westerners, its a pretty big sign of not being serious.

I knew this, but my CTO didn't really communicate with me about what he wanted and expected out of things. Basically, I just showed up and watch MOU lose interest in hearing us speak, the more they realized we had nothing to say. I was able to salvage the situation by explaining things to both sides, that it was just a little cultural error, and that we could get to some actual business eventually. Unfortunately I was unable to do this without offending my CTO by embarrassing him in front of the clients. He tried to realize that I was doing what was in the best interest of the company, but wounded pride is a tricky thing. Later in the evening he told me to do something in an offensive way. I told him he needed to speak more politely when ordering people around. Hrm, things not going well.

The next communication issue was that HPH is a Chinese company, and my CTO is Chinese. Therefore, with the exception of the actual meetings with clients, all conversation was done totally in Chinese. Despite being in the heart of an English speaking city, I felt hugely left out of the discussions, and largely by myself. Everyone on the trip had lots of interesting discussions on the industry, strategy, even just socialization. I stared out the window. Even if I was an employee of my CTO's company, charged with helping him doing business development, we never once had any real discussion about business direction, or planning for meetings, or strategy. I was a spare wheel. For me it was a huge waste of time.

The only other people we met was a graphics hardware maker. No one told me why we were meeting them. It turns out that unlike our company, HPH has an actual strategy (a pretty smart one at that), and was there to do real strategy. However I was a bit sleepy and just assumed it was more random wandering about speaking with people because you can. No one disabused me of this assumption.

When we arrived, everyone from HPH gave out their cards to the hardware maker's people. However, when I reached for mine, my CTO warned me in Japanese not to give it out. Hrm, I don't like this. The Hardware guys looked concerned and suspicious at this move. I knew it was a bad idea and a breach of protocol to walk into a confidential meeting without telling anyone who you are, and it made me nervous.

The two above things caused me to speak during the meeting, something vague an innocuous about open standards, just to lay a card out on the table to help show that we weren't hiding anything. But given that, although I didn't know it at the time, this was a real meeting where the HPH CEO was discussing real high level strategy, my words were a pretty serious breach of protocol, especially to eastern people who look pretty down on speaking out of turn.

So by then the lack of effective communication had come to a head, and I tried to explain to my CTO that he needed to give me more information than he was giving, if I had any hope of doing my job. He countered by saying that I should spend less time thinking of things to do and say, and more time studying the situation quietly so I can develop an intuition about things, including what he was thinking, and then I wouldn't need to be told. I was also told that I was naive for being so quick to tell people what I was thinking and doing all the time. This lead into a discussion of east-west culture, which I tried my best to follow. However in the end I just could not agree that more communication was not necessary, or that direct honesty, in absence of a compelling and justified reason to be dishonest, was not the best strategy in the long term.

By the end of the trip, I had lost a lot of motivation, and even some respect for my CTO as a business man and leader. I had also lost some of the clarity of purpose that I had beforehand. When you start doing unclear things, or have people doing unclear things around you, you start to lose interest, and just basically want to leave the work for something that makes more sense to you. Therefore, when I made my trip report to my CTO and CEO, I said almost as much, and asked to return to concentrating on programming. Maybe there is no VP promotion in it for me in the future, but this way there is more purpose, less travel, and more time to be with L. and M.

Sunday, September 9, 2007

More pictures



Whats on Iranian TV

I haven't had a lot of time for political blog posts, but as I'm doing laundry for the first time in two weeks, and given the neocons in the US seem hell-bent on starting a new war -- partly based on the rabid-right belief that all Iranians, especially the government, are raging anti-Semites, I thought it would take some time to point out what the government controlled TV is producing for an eager public.

(spoiler: a jewish-iranian love story set during the holocaust)

Iranians are good people, even if their government isn't so hot. Lets not kill them shall we?

Who was it that said "let he who is without sin cast the first stone"?

Saturday, September 8, 2007

おめでとう

L. was born the morning of Saturday 8th a healthy 3.7kg. This was a little above average for a Japanese baby, so M. had a bit of a struggle with it, but eventually came through and is resting well now.

I was unable to make it in time despite the fact I was racing home from San Francisco. I missed the delivery by a couple hours, but M. expressed thankfulness that I wasn't around to witness what she described as a rather undignified labor process.

The following is the world's only known picture of the starlet.

Saturday, September 1, 2007

Thursday, August 23, 2007

For L.

I have a garden of my own,
Shining with flowers of every hue;
I loved it dearly while alone,
But I shall love it more with you:
And there the golden bees shall come,
In summer time at break of morn,
And wake us with the busy hum
Around the the Siha's fragrant thorn.

I have a fawn from Aden's land,
On leafy buds and berries nursed;
And you shall feed him from your hand,
Though he may start with fear at first;
And I will lead you where he lies
For shelter in the noon-tide heat;
And you may touch his sleeping eyes,
And feel his little silvery feet.

--


We are all waiting for you, soon.

In a week or so. Probably while I am in Chicago, with my luck.

Monday, August 13, 2007

Life Update Part 1

Things have been really very busy for me after joining the new company. Literally two days after joining, they sent me to SIGGRAPH where I spent the past week being totally awed by all the latest academic advancements in 3D, and generally getting really stoked about getting into some of that work myself soon.

Now its back to work this week, and the pace is nuts. Not necessarily the good kind. When you're working in a startup, and not necessarily one founded by all your uber-smart computer-geek buddies from college, there are lots of issues as people feel things out, and try their best to make a 5-legged pig fly. But when you try to do that over 3 different languages and at least 3 cultures, it adds an extra dimension. I can easily see our greatest corporate challenge will be communication. I think I'm up for some interesting times.

Maybe for those who haven't followed, I can describe the company I am working for now:
The observant among you will have already discovered that the website is here. However I suspect most of you cannot read the Japanese therein.

Basically the deal is that an incubator company here in Tokyo called NGI Group (formerly NetAge) purchased a company that a friend started, and is helping set it up. The company is about developing technologies for virtual worlds (the most famous being Second Life), with the idea that virtual worlds could be a Next Big Thing, and whoever enters the market early will have first movers advantage.
As anyone who is following the virtual world (Second Life) phenomenon has noticed, there is a certain amount of speculation involved as to whether and whither this thing will go. I myself am not sure, but I think I can enjoy the ride, wherever it takes me.

My own role here is not strictly defined, as one might guess. I am nominally head of the group of programmers improving and developing virtual world clients. Specifically our team will be working on improving the Open Source client for Second Life, but our company is not limited in focus to just Second Life. Indeed our company has strategic relations with the Chinese virtual world company HiPiHi, and is working on developing our own compatible but improved system in the future. However, since we are really lacking experienced engineers, I just don't have anyone under me, so the title is entirely meaningless.

However I do get to have my input on business and strategy matters, which is fun to exercise the non-engineer part of my skill-set. Since I am a native English speaker, I get called in on a number of conferences dealing with non-Japanese and non-Chinese groups.

Friday, August 3, 2007

Goin' to Winnipeg

So gate 22A was San Diego, and gate 22B was...

Well it seems that the ticket issues got sorted out and I am going to be able to go to SIGGRAPH after all. I should be there from Saturday to next Friday. Its for work, so Ill expected to be taking lots of notes. Ill try to put some of them up on my blog as well.

If anyone will also be there, please drop me a line either on this blog or to my email.

Wednesday, August 1, 2007

First day

Today is my first day at work. All I can say is that by far this is the most professionally run company I have worked at in Japan (which really is not actually saying that much). We will see how the rest turns out.

Here is a link to a rare english language press release.

Tuesday, July 17, 2007

Perhaps there is yet hope for the future

Organic farming methods can produce yields comparable to current unsustainable practices.

And we may have a means of truly sustainable energy at our disposal.

Sunday, July 15, 2007

What does "pro-life" mean?


I saw this one a while ago, but only now got around to posting it up. Not sure who I should give credit for though.

Friday, July 13, 2007

何か書こうぜ

ずっと前から自分のブログで何か書こうと思っていますが、なかなか時間がないし、いいテーマが思いつかないし、今までは英語でばっかり書いていましたが、日本語でも挑戦してみます。

今でもあんまりいいテーマもないですが、今日は第一歩ですから。

日本語を知っている方、変な表現か単語を見つけたら、コメントで直してもらえば本当に助かります。

Wednesday, July 11, 2007

Coming Soon



L. is looking ready to join the family soon.

Thursday, July 5, 2007

A classic

Elements of style. Every writer should review this text frequently.

One for organic

It seems industrial farming practices are slowly draining the nutrients from even the fruits and vegetables in our diets.

Monday, July 2, 2007

Well the good news is

I was finally able to corner my CTO in his office, and we were able to talk it out to the point of at least dispensing with the acrimony for the remainder of of my contract.

He even went as far as to agree with basically everything I said, once it was put humbly. His point of view however, is one where even as the CTO he feels it is not his position to enforce some sort of minimum level of communication, nor even speak with his own project leaders to ensure basic healthy workplace practices. It our individual responsibility to ensure a harmonious workplace by striving to understand each others' flawed ways of working, even if that affects the bottom line, apparently.

I guess he feels that that is the project leaders' individual "way", and it would be wrong to impose another way upon them. Even one that might objectively be called "correct".

Did I mention logic is not always highly prized here?

Suffice it to say, fundamental failure of leadership is another reason to try someplace new.

Sunday, July 1, 2007

Time for some changes

Its been an interesting week. As readers may be able to guess, I've been looking for a new job, and that usually implies leaving the current one. This week its been formalized that I will finish out the remainder of my current contract, ending in September, and I will not be offered a new one.

Its very much as case of the girlfriend dumping you before you can dump her, and the consequent bad feelings you have about it -- even if you intended on leaving in the first place. But the reasoning they're giving me is just so horrible, perhaps relating it to you will give you some idea of what I go through.

Preamble

To continue, it may help some readers to know that my workplace is essentially all English speaking (for the programming section). In specific, all of my bosses are very good at English. They are most definitely far better at English than I am at Japanese. Yet, with the help of an electronic dictionary, I am basically able to read and mostly understand most Japanese language e-mails.

English ability should NOT be considered an onerous requirement for my co-workers.

The Reason

Back when M. was in a period where miscarriage is most likely, and having already miscarried once before (while I was working for the same company no less), she was having problems again and was ordered by the doctor to remain in bed. This means to save my child, I would need to do all cooking and cleaning for M. The only thing she should do on her own was chew and go to the washroom.

I wrote an e-mail into work, saying since M. was in this condition, since I may be doing this for a couple weeks on end, and since I had no vacation days to use (and there is no provision for sick or nursing leave), could I possibly work from home? I asked this because I know that some people from work do in fact work from home, even now.

The reply I got was simply amazing. I was told that no, it was impossible to work from home because its bad security and against regulations, so no one is allowed to do it; and I needed to take vacation days, since my situation was not considered "special circumstances". (I counted two lies there.)

They claimed afterwards that it was all a misunderstanding, but even giving them full credit for having their intentions in the right place, the only way they could have misunderstood my meaning (given their fluency in English) was if they simply hadn't bothered to read my mails in full, and instead of thinking about my condition, simply leaped to the pre-made excuses that minimized their own trouble (which is a trait I've noticed for a long time at my work -- everyone is too busy to do their job properly).

So given my level of stress, and their apparent lack of compassion, I got a little mad and wrote a bit of a scathing e-mail, asking them to "think outside the box" sometimes, and try to help me out instead of stonewall me. A little bit forceful, but never with any cursing or naked personal attacks. So after finally getting peoples attention, I was set up with an SSH account, and was assured that no one would try to make me pay non-existent vacation days in exchange.

In truth I think this episode was the beginning of the end for me at that company. The places I want to work at need to show a minimal level of compassion, the kind where you don't stonewall your own co-workers. Especially when its a life-death medical situation. I think the response I was looking for from my company would be "don't worry about any of that right now, just take care of M. and we'll discuss it later." And that basic kind of thing is something I just never got.

So the shocker of the deal is that all of the above isn't my reason for leaving, its theirs! I'm still having trouble following the logic (logic not being popular here), but I guess it has to do with the notion of seniority. As a junior worker, I had no right to get mad at my bosses, even if they deserved it. Their unwillingness to read e-mails and address my legitimate concerns is excusable, but my assertiveness in questioning them is not.

My Reasons

Anyways, lets get down to the reasons I wanted to leave:

1. Communication.

Was just non-existent. I would send emails and the recipient would actually come and ask me if they were required to read them (!).

And those were the good cases, most of my emails that were not directly related to a current project simply went unread. And that was even after I realized people weren't reading my emails so I should pare down the content to the bare minimum.

I have literally been told, to my face and in reply, that my emails were too long or too many, so the recipient wont bother to read them.

In-person communication was hardly any better. I would start into the subject that I needed to speak about, and be greeted along the way polite head-nods and "oh, ok!" and "really?"s until I picked up on the lack of interest in what I was saying and just stopped speaking.

My project leader always made sure he let me know that I could ask him any question at any time; but the problem was whenever I asked him a question, he appeared busy and responded with answers that displayed a minimum of consideration of what I had just said. One quickly learns that there isn't much point in asking questions under such conditions.

Several times I tried to detail my concerns about this issue, using specific examples, and how I thought it was damaging the company or project. They would appear to read my email very carefully, but the reply was always ridiculously short and noncommittal.

In my whole time there I never received one performance review, formal or otherwise. The closest I ever came was being told twice that the project I was working on was ahead of schedule and very profitable. I was told on multiple occasions, regarding the quality of my work, "I don't care."

I was never asked my opinion on the technical direction of a project. That is solely the purview of the customer and team leader -- even if the team leader is less technically competent that the implementors. I was very rarely asked my opinion on technical matters within the scope of the implementation, although that did get better as I complained and my team lead actually listened to me, somewhat. His interest however was essentially limited to deadline estimation.

Upon leaving I wrote a exit interview style email (because they're refusing to do a real one despite my request), where I detailed my reasons for leaving, and how the company can improve themselves in the future. I specifically requested they do the same for me. I have received no reply.

In summary I think I could describe the situation as "I'm too busy to do my own job." Even if the reason they are so busy is that they are running around putting out fires caused by not communicating in the first place.

2. Lack of professional advancement.

There were some interesting projects happening at work, the decisions about but who gets assigned to which project were never made based on what kind of work you would like to do, and mostly never on what past experience or qualifications you have.

Decisions based on individual talent? Forget about it! It was almost always decided solely by the team leaders in private meetings based on who had the least busy programmer on their team at the time.

I tried voicing my concerns about the lack of challenging or interesting work, and well... read item 1. No one listened or cared. Many times I saw someone working on something interesting that I wanted to be a part of, but was told I could have nothing to do with.

I guess I could boil this down to "You are not a individual who enjoys their work and has specific areas of interest or career progression. You are a tool for me to wield in order to continue to collect a paycheque."

Conclusion

So all in all, despite the people being essentially very nice people outside of work, and generally very willing to be friendly and caring in a non-professional way, they were not very good people to try and have a career with, and staying there probably would have made me less and less happy with my life.

Also despite this company being exactly in the professional area I want to be in, and having lots of interesting projects on the go, the fact that I was rarely a part of those projects really destroys the benefit. I realize that other jobs are far less likely to be in such interesting areas, but now is a good time to try other things and hope for the best.

Saturday, June 23, 2007

A safety warning

Don't buy Chinese cars.

Friday, June 22, 2007

Logic is something Westerners invented to win arguments with Japanese

Had another one of my rare, but still not non-existent, encounters with Japanese-style racism today.

Usually Japanese racism is defined by ignorance of outsiders (no surprises here), a healthy sense of contempt and self-superiority, followed with an active desire to exclude outsiders. Like much of Japanese aggression, its extremely passive-aggressive. For a tiny taste, here's a link to a famous case that came out a while ago, on the blog of the somewhat controversial anti-discrimination activist Arudou Debito.

So after applying to renew my "Spouse of National" Second Class Citizen visa for another 3 years, I was returning with a very pregnant looking M. on the subway. We went to use the elevator -- usually reserved for people in wheelchairs, carrying heavy luggage, or otherwise having some disability -- so M. could avoid the taxing climb up the 2 or 3 flights of stairs. I noticed that a 12 year old boy and a 40 year oldish Salary man had just walked inside the otherwise empty, largish elevator (which can easily serve 20 people). The salary man looks up at me, quickly looks down, and presses the button to close the door immediately, almost shutting it in my face.

The context of this is, you have to recall, Japan. The standard for public etiquette is rather high, even if it isn't always observed. Especially, any situation that might result in conflict is carefully handled. Conflict, in Japan, is BAD. The opposite of conflict is Wa - harmony, and its the first Chinese character for the name that Japanese call themselves. Very central. In the case of accidentally bumping into someone, or stepping on their feet, or poking them with your umbrella, one must always apologize, however brief or insincerely, in order to head off any potential conflict.

So as the door was closing in my face, because this selfish git of a salary man decided neither my wife nor I needed to take the elevator, I quickly reached out and stuck my hand in the car to stop the door from closing completely. After I got on board, I snorted in the sort of contemptuous manner that Japanese males often use in such situations, and put it out of my mind on the ride up. However, next thing I know, when the door is opening, this salary man comes riding up my ass as I'm waiting for my pregnant wife to waddle off the elevator, and proceeds to stick his umbrella into my legs. The first time he pokes me in the right heel, I write it off as an accident -- ignore it; but when he does it again, on the left, with pin-point accuracy. I spin around to confront him.

If this was all really just an accident, or even if he just didn't want the confrontation he started, he would have simply let off a gruff "oops", and sauntered off before I could do anything. But when I turn around he just stares at me with contempt.

Anyone who knows me knows I don't spoil for fights, but neither do I suffer assholes gladly. So I tear into him in English. That always puts them on the defensive.

"Whats your @#$%ing problem pal?! You wanna tell me something?!"

I was greeted with the ever-present reply to anything spoken in English: "huh?"

[English has no symbol for a gluttal-stop, you'll have to imagine that sound has an abrupt end, and the speaker has a slack-jawed blank stare that mixes mortal fear of English with utter incomprehension.]

After a few preliminary pleasantries of this form, lets say about 4 or 5 "huh?!"s worth, he regains his footing and gets into the Japanese curses. Unfortunately I don't really get what he is saying because he appears to be using some new foreigner-handling code I haven't yet seen before, that consists of either using words I don't know, or just mumbling quietly enough that I cannot actually hear them.

Sweet, now I get to use "huh?!" as a reply, in mockery. I also ask him what his age is, "5 years old, Mr. Umbrella-poker?"

I next fall back to the good old trusty "deteike" (get the @#$% out of here), and a few others that came too fast and furious to recall. Everyone is now staring at us, at rush hour. Probably hundreds of people. I don't care. I want to smash his head into the wall.

In order to understand my some of actions, you have to understand the Japanese practice of "Ijime", which is bullying, but also so much more. It is the culturally sanctioned form of forcefully establishing social hierarchy in many cases, and can be found among adults in the form on Sempai-Kouhai. Its used heavily in all Japanese pissing matches, and mostly consists of brow-beating someone until their Wa takes over, and they submit.

Next he asks me if I want to go out and see the police (I'm assuming he thinks this will scare me). I misunderstand him, because he's mumbling his words under his breath, and I think he's asking me to go out and fight. Now, I don't want to be arrested for beating an older (but not small or weak, mind you!) man, and the thought does occur to me that he's eager to fight because hes a karate master or some such; so initially I decline. But after the Nth challenge, I say "OK, yeah. Lets go!" He then suddenly drops the whole idea without so much as a mumble.

M. Doesn't know whats going one because she was facing away, so she is busily trying apologize for my brutish behavior and calm me down. I explain to her that he poked me in the legs, making sure to invade this guy's personal space as much as possible during my graphic demonstrations. She begins the laughable, but admirable job of translating my words from ape-@#$% to Japanese. He's not surprised to hear it though, because he did it on purpose, to get this reaction.

He then takes a new tack, and starts to try to say things directly to my wife. I think he realizes this is dangerous territory, because he won't speak loud enough for anyone to actually hear him clearly. I take a decided disliking to this idea, and get back in his face. "No, you'll talk to me, #$%^head." He says something that was probably meant to insult me and turns to leave, but since it was mumbled all I got was the intent, which was all I needed.

I smack him once, upside the head. This is ijime. You can see some of this on Japanese slapstick comedy shows. Its meant to be more demeaning than painful.

He turns, outraged, and tells me I just hit him. I explain that in this regard he is quite right. He tells me to "Go home, scumbag". He means go back to "America". All white people are from "America" in Japan. I misunderstand, and think he means my house, so I tell him to do the same. He seems legitimately confused and insulted that I implied he doesn't belong in Japan. Score another one for me.

After pointing towards the exit and commanding him to leave, in the same manner as one would command a dog, he seems to tire of the spectacle, and unhopeful of his chances at winning the pissing contest he started, leaves as commanded. I played the game and won.

It was very much a hollow victory though, as it was immediately followed by M. lecturing me in front of the rush hour mob on how to speak to people without literally sounding like a gangster. And then me being thoroughly angry about the matter, what truly little control I actually had over it, and wishing some form of moderated hand-to-hand combat was in fact a socially accepted method of dispute settlement among strangers.

If you managed this far, just be glad I never bothered to relate the time we were almost run-down by hoodlums on scooters while walking on a park footpath at 10 at night (M. insists they weren't real Bosozoku). That time I was physically attacked.

I didn't hear it very well at the time, but I'm told the guy making a valiant attempt to appear to be beating me up was shouting the distinctly uncool, but never the less nationalistic phrase "Are you making fun of Japan?!"

They have a name for it!!

There is a scientific name for that thing where idiots and ignorants, despite knowing practically nothing about what they are talking about, actually attempt to tell you something contradictory to your own knowledge, as if they had some sort of leg to stand on!

Next time someone someone starts in on some half-baked idiot-theory, just calmly and politely suggest they are suffering from the Dunning-Kruger effect, and quickly change the subject.

This also explains why so many religious people, with no scientific training whatsoever, feel so comfortable dismissing the collected work of some of the smartest minds of our time in order to prop up their flimsy faith in magic books. It also explains how a quick search of the internet can find people who can barely manage the English language to a coherent degree, yet have figured out the all the answers to the most perplexing mysteries of the universe, like time travel and limitless energy sources.

Silly scientists, you don't need an education, rigorous research methods, peer review, or ridiculously expensive instruments! It all becomes much more simple when you just do away with all those things.

A true tribute to the indominable human spirit

Even in the greatest of defeats, we find a way to rise up and hold on to the things which define us most as human beings.

Thursday, June 21, 2007

Holy faces batman

Someone tricked me into signing up for Facebook. Man what a blast from the past. I wonder if I can search for people I used to know in Elementary School?

O. M. F. G.

Just goes to show you some people will do anything to avoid having to work or sacrifice for their own benefit.

If you prefer to shit your pants over controlling what you eat, and getting some bloody exercise, is there anything you won't NOT do?!

Tuesday, June 19, 2007

On the difference between knowing syntax, and understanding a language

I think some readers missed a subtly embedded point near the heart of my last post, that by elucidating, only further goes to demonstrate the difference between knowing something and understanding it.

C++ is strongly typed language. This I understand. It means its the job of the compiler to track the types of variables, and refuse to compile statements that violate the declared types, and thus possibly do something dangerous. In fact this is the entire purpose of the const keyword: "this data should never change, so please don't compile any other statements that may change it".

Code refusing to compile due to incorrect syntax is exactly the required behavior. The purpose is to inform the programmer that they are doing something wrong. (Read closely now.) Even if one is entirely, completely, and utterly ignorant of the correct answer to the below question, the compiler will always give you the right answer, by design, while you are working.

So tell me what the point of the question was??

Saturday, June 16, 2007

On the severely misguided nature of programming tests

Part 2: Intermediate Questions

Question 6:

Consider the following function:

void foo(const char* name)

{

char* Name1 = name; // Statement 1

const char* Name2 = name; // Statement 2

char* const Name3 = name; // Statement 3

char const* Name4 = name; // Statement 4

}

Which of the following is true?

  1. Statement 1 fails to compile.
  2. Statement 1 and 3 fails to compile.
  3. Statement 3 and 4 fails to compile.
  4. Statement 2 fails to compile.
  5. Statement 3 and 4 fails to compile.
  6. If you answered any of the above you have no place being around computer code. A person who programs as a profession needs to first ask them self if they need: a variable pointer to something that is itself constant, a constant pointer to something that is itself variable, or a constant pointer to something that is itself constant, then look up the correct syntax in the book. And if you're still worried, finally test it on the compiler -- THEN NOTE IF IT DOESN'T COMPILE! Anything else is pure nerd dick-waving.
And if I ever catch anyone using such unnecessarily confusing, dusty corners of the C++ standard in my code, or my job interviews, I will consider it an intentional attempt to trick the reader, and toss you out the door for being deceptive and a danger to the code-base. Seriously, what sort of programming job requires you to outwit an adversarial co-worker?!

Because, if programming tests are an accurate reflection of the work you will do as a programmer, then it must follow that the programming test itself is an accurate reflection of the kind of people you will be working with, by virtue of being the kind of people who would pass such a test.

Bonus points for anyone that can translate the following from its current wording to some form that would make me care.

Question 15:

What best describes virtual inheritance?

  1. A derived class which does not implement abstract methods.
  2. A derived class which adds abstract methods to a concrete base class.
  3. A multiply inherited class with multiple copies of its base class.
  4. A multiply inherited class with one copy of its base class.
  5. All of the above
ps. (d)

Wednesday, June 13, 2007

It was the best of phone interviews, it was the blurst of ..? you stupid monkey!

I just had phone interview with one of software guys for one of the top two graphics companies. Sounded like an amazing job, with huge potential. The interview was going unbelievably good; I even thought to myself that I got the job.

But then he asked for me to restate one of my replies in Japanese, and my mind went blank.

I jabbered on incomprehensibly for a minute or so before I stopped to apologize and end our mutual suffering. Japanese ability was a hard requirement for the position.

Oh well...

But its not ok to beat your children

Sadly it appears as if this is no longer common sense anymore. Parents are so worried about saving their children from every hardship, they fail to notice its hardship that teaches us the most important lessons.

Monday, June 11, 2007

The various costs of reducing CO2 in graph form

Shows you what youre missing.

Sunday, June 10, 2007

It doesn't appear to have a penis

Its the 28th week and M. came back from the doctors appointment. They looked and they peered, they glared and the stared, but try as they might, they were unable to view the groundhog's shadow^w^w baby's man-marker, which means that its quite likely to be a girl.

Which means my psychic baby-gender-predicting powers are true, and everyone else was wrong. :)

Mini-review of Foundations of GTK+ Development

Foundations of GTK+ Development is definitely recommended for anyone doing any serious GTK+ development. The authors style is easy to read, and the book serves as both a decent tutorial for any programmer fluent in C looking to learn GTK+, and a reference for intermediate programmers who want to broaden their knowledge of GTK+.

The author wisely spends his chapters on the most useful and most often misunderstood parts of GTK+, leaving the hand-holding chapters to a blessed minimum. This means there is little fluff, and a lot of meat. Since its based on GTK+ 2.10, we are able to skip the deprecated, or just plain old crufty parts, and get straight to the modern usages, such as GtkTreeView, GtkUIManager, and Glade. There is even a couple pages on cairo, within the context of GTK+ 2.10's new printer support.

His entire chapter on deriving existing types, and creating new ones (in the often arcane GType system) is sure to be a god-send to beginning programmers, and a well worn reference point for programmers in code mode. Add in the over 100 pages of appendix material documenting GTK+ properties, signals, styles, stock icons, and error types, and you've got a handy resource.

While all the information in the book is available somewhere free online, including the indispensable devhelp, the GNOME website, and even the GTK+ website itself, having a coherent narrative in handy physical form, I think, is worth the purchase.

Even though the book weighs in at over 600 pages, given the degree to which GTK's abstractions leak, I would have liked it if the author spent a little bit more time explaining the design issues that lead to these leaks.

For example, the author briefly mentions GObject's inherent ability to support the Pimpl (pointer to private implementation) idiom, and gives the boiler-plate code to achieve it (which is good). But when reading the code, one notices that MyObject appears to contain no reference to MyObjectPrivate, while the class constructor for MyObjectClass contains the function

g_type_class_add_private (klass, sizeof (MyObjectPrivate));

(which is mysterious, to me at least). If abstractions are going to leak, I would like it if the author could spare a couple sentences to give me an idea why such a call is necessary, if only avoid a mild state of incongruous bewilderment.

Lastly, I would have liked to get a bit more insight into some of the more fringe, but related, technologies, such as cairo or D-bus; and more details into tricker parts like threading, or a full working example of how to integrate foreign sub-systems using Glib. However this may be asking too much for one book, so perhaps we will have to wait for the author to spring "Advanced GTK+ Development" upon us!

Saturday, June 9, 2007

There is life out there, really, you just have to look

Its times like these that I wish I could just point and click, and magically download a high quality mp3 of any song that caught my fancy.

how to add social bookmarking sites to your blogger footer

1. Click on Customize->Template->Edit HTML
2. Click the Expand Widget Templates button
3. Search for "post-footer-line-3" and place your links within the <p> tag
4. Your links would look something like this:
<a expr:href='"http://del.icio.us/post?url=" + data:post.url + "&title=" + data:post.title' title="del.icio.us">

note: the expr namespace is necessary for the engine to convert the data:post into dynamic content for each post.

change your ways young man

Some simple things to change your daily habits to improve the environment and your life

1. Go to bed early.
- Save the electricity cost (and the greenhouse gases they produce) of lighting necessary after dark, and TV, computers, etc. you use to keep yourself entertained.
- Sleep is an underrated factor in determining quality of life. Get yours, and live better.

2. Read a book.
- Save the electricity cost (and the greenhouse gases they produce) of TV, computers, etc. you use to keep yourself entertained.
- You might just learn something more valuable than what can be found on American Idol.

3. Eat more veggies.
- Save the carbon footprint of raising cattle.
- Enjoy the health benefits of eating more vegetables.

Take off your party hats an go outside

It would seem now that, not only is sunlight a underestimated regulator of moods, but also necessary for producing vitamin D, and underestimated agent for significantly reducing the risk of cancer.

http://www.theglobeandmail.com/servlet/story/RTGAM.20070608.wvitaminD08/BNStory/specialScienceandHealth/home

That means you need to wake up with the sun, and get outside to enjoy the mild morning sunshine!

Thursday, June 7, 2007

The Social Animal

Required reading for anyone who spends any time around other people.

http://www.amazon.com/Social-Animal-Elliot-Aronson/dp/071675715X
http://en.wikipedia.org/wiki/List_of_cognitive_biases

And while we're at it, I't tired of constantly finding these when talking to people:
http://en.wikipedia.org/wiki/Fallacy
http://en.wikipedia.org/wiki/List_of_fallacies

Wednesday, June 6, 2007

More Monkey^wTemplate Magic

From Bjarn's paper here.

Same idea as before, but perhaps more clear.

template <bool b, class X, class Y>
struct if_ {typedef X type; };

template <class X, class Y>
struct if_ <false,x,y> { typedef Y type; };

void f() { if_<sizeof(foobar)<40,Foo,Bar>::type xy; }

Apparently, template programming is Turing complete.

Tuesday, June 5, 2007

Sunday, June 3, 2007

On the Superiority of Questions over Answers

Answers can be wrong. Questions can only Be; they are a more pure, even if derivative, form of observation on reality. Moreover, answers require supposition and interpretation of reality, and thus the assertion of ego onto the objective world.

While both fall victim to the pitfalls of individual perception, it is the nature of questions to contain the ego within itself, and thus often serve to highlight it. Answers only server to disguise assumptions, or set up conflict with those who don't share them.

Consider:

Q: "Why are we here?"
A: "Because god put us here, made in his own image."

Which do you consider more profound, or likely to lead to an insight to existence?

Accumulating answers is the process of erecting walls, confining lines of reason into what one hopes is a gilded path to the Truth. Accumulating questions is the process of expanding new avenues of thought. Most importantly however, is the tendency, when one has gathered enough questions, for the correct path to fall naturally from observation, egolessly.

Saturday, June 2, 2007

On the Nature of Suffering

Suffering is what gives meaning to happiness. In this way suffering is as necessary to happiness as black is to white.

Without suffering, we could be the most fortunate people in existence, and never know it.

A hard road traveled is what makes the destination worth arriving at.

Today we went to Minato-mirai to celebrate the 150th anniversary of the opening of Yokohama harbor (and therefore all of Japan) to foreign traffic. The theme was "thanks to the harbor".

There was a lot of people there, and while we enjoyed the day-light festivities and sampled all the foreign festival cuisine, as the evening came, and the prospect of a serious fireworks display at 8:30pm, so did the people.

In principle, I like people. In practice however, whenever they manage into crowds, its a statistical certainty that they will start doing things that make them become, as a unit, stupid.
So for this reason, we decided to skip fighting with the crowd, and just pack it in early.

(If you want a visual, imagine a dad, gleefully video-taping the strapping young pride of his loins attempting to rip a branch off one of the carefully landscaped trees in the public park. Now imagine what I said to him.)

Its a shame, as we left there were some pretty amazing fireworks going up, but there was not much room, and little will for a fight with the crowds.

Wednesday, May 30, 2007

Conditional statements in C++ Template meta-programming

C++ Template meta-programming is a black-frackin-art -- one of which I am totally in awe of -- that consists entirely of exploiting the corner cases of the specifications type deduction rules.

For your edutaining pleasure, the implementation of is_const <T> in GCC:

  /// @brief  helper classes [4.3].   
template
<typename T, T v>
struct integral_constant {
static const T value = v;
typedef T value_type;
typedef integral_constant type;
};
typedef integral_constant true_type;
typedef integral_constant false_type;

   /// @brief  type properties [4.5.3].    
template
<typename>
struct is_const : public false_type { };

template<typename T>
struct is_const
: public true_type { };

How it works depends entirely on the template (partial) specialization features of C++. When you have:

template <typename T>
void fun (T val, const true_type&) { do_foo(); }

template <typename T>
void fun (T val, const false_type&) { do_bar(); }

int main() {
typename const int a_type;
typename int b_type;
a_type a = 5;
b_type b = 3;

fun (a, is_const<a_type>);
fun (b, is_const<b_type>);
}

Temporary objects of types is_const<a_type> and is_const<b_type>, respectively, are made. C++ will try to pick the best match for each parameter type from the list of available classes for is_const<T>. In the case of b_type, the only suitable match is the non-specialized definition, for a_type, the specialization is_const<const> is a better match. That way the overloaded function fun is sent, in the case of a an is_const type that derives from true_type, and in the case of b an is_const type that derives from false_type, and thus is able to dispatch to different routines based on the overload.

New research showing that altruism is a biological function of the brain.

I wonder what this means for all the people on my daily commute who pretend to be asleep when they should be offering their seat up to an old lady clutching on to her walking cane?

Sunday, May 27, 2007

Addendum to my post about sexual discrimination: stereotypes R baad m'kay.

Saturday, May 26, 2007

The only places I've found for english language computer books in Tokyo/Kanto is Junkudo in Ikebukuro, and Yurindo in Landmark Plaza (Sakuragi cho). If you don't live near either place, your best bet is Amazon.com.

Thursday, May 24, 2007

In one who exaggerates self
there is always adherence to "I".
Through that adherence there is attachment to pleasure.

Through attachment disadvantages are obscured
and advantages seen, whereby there is strong attachment,
and objects that are "mine" are taken up as means of acheiveing pleasure.

Hence, as long as there is attraction to self,
so long do you revolve in cyclic existence.
--

There is no Frigate like a Book
To take us Lands away
Nor any Coursers like a Page
Of prancing Poetry --
This Traverse may the poorest take
Without oppress of Toll --
How frugal is the Chariot
That bears the Human soul.

--

Wednesday, May 23, 2007

In response to Jono Bacon's post on (sexual) discrimination in open source and technology in general, I'd like to add some more concrete points.

So what puts women off technology?
A partial list:

  1. Aggressiveness
  2. Being viewed as a sex object
  3. Not being taken seriously
Aggressiveness

The technology field has a rather individualistic and meritocratic culture, which is necessary and good. But whether males are born or socialized with a desire to revert to chest-thumping behaviour during conflicts, such behaviours seem to often carry over into our technical discussions (totally unrelated to hunting for the tribe's dinner).

Perhaps its a sub-conscious matter of establishing an geeky alpha-male status -- I don't know. What I do know is that women have no such need or desire to be the subject of that aggression, and such displays are most likely to give offense and nothing more.

We all have a professional and personal duty to ensure only the best technology gets selected, so no one is going to tell you you cannot argue your point based on your unbiased evidence. What we should do however, is take a good hard look at how we argue our points.

Before you write your next flame, consider how it will be interpreted: as the reasoning of a well balanced adult, or the testosterone fueled temper-tantrum of an under-socialised adolescent?


Being viewed as a sex object

This one should be easy, but I guess it isn't.

How would you feel if you arrived for the latest symposium with a head full of new ideas you're burning to share with all your intellectual peers, but when you arrive you find everyone only wants to talk about your clothes and stare at your crotch?

Women are human beings first, talented professionals next, and females somewhere down the line -- wherever they want to put that designation according to their way. And if anyone dares beat me over the head with the tired line about "why do they wear skirts if they don't want to be looked at", I may become cross.

They do want to be look at as a woman, but long before that they want to be looked at as a complete human and peer first. If you do well enough treating them as respected peers to start with, you'll find they are far more receptive to being treated as a women later -- but thats a priviledge you earn, they're not objects.

That means its only ok to ask women professionals for their address or pictures if thats the same way you treat your male colleagues.

Not being taken seriously

Read the above for one reason why. The rest comes from the belief that women somehow don't do the same amount of work to get where they are.

Its just not true, any more than its true for men. I went completed my computer science degree with my now wife, and there was not one single advantage she had that any other student didn't. Period.

Monday, May 21, 2007

I just got the new HP C5180 all-in-one printer I needed to apply for my passport. It works perfectly in Linux -- I just plugged it into the network via ethernet, set up CUPS, and got a perfect result.
very recommended.

Smoking a pipe is a bit of an art form. When you can have a good smoke, its one of life's sublime, meditative pleasures. When you have a bad smoke, its an exercise in masochism that puts you off your pipe for months.

Recently, due to lack of a place where I could buy pipe-cleaners, my pipe had become clogged with tar, which was totally ruining the whole proposition -- but recently Ive found a method to clean it decently, and tonight I had a wonderful half-bowl that really elevated the evening.

1. Wait until the pipe is cool and disassemble it, wiping out the remains with a tissue.
2. Draw a thimble of dark rum (I hear scotch will also do), and grab a couple q-tips.
3. Dip the clean cotton end in the rum and swab the inside of the bowl and stem. The alcohol should act as a solvent to clean out the tar, but leave the desirable layer of carbon (cake) intact.
4. When the pipe is clean (about 3 q-tips), turn the pipe upside down an let the flame of your match dry the inside out. This should also carbonize the sugars in the rum to add to the clean layer of cake.
5. Rinse out your mouth with the remaining rum. After all, those same tars are left in your mouth as well.