Wednesday, December 21, 2011

Then only thing I expect to every programmer

is to know the difference between interface and implementation.
It includes, but not limited to spec.

Tuesday, November 29, 2011

So what am I doing now?

Reading: Read a couple of papers, both reducing fluid sim calculation cost
Work: Working at Havok
Private: Will buy a motor bike
Event: Went to Exotic Matter's NUGGET Japan 2011 and met Mr. Marcus Nordenstam

A slime draws near

Slime meat bun.


Saturday, August 6, 2011

Two-Scale Particle Simulation

Two-Scale Particle Simulation

It's a straightforward, practical idea to reduce simulation time. First simulate fluid with roughly, and simulate again only within some regions (in the paper, water surface and camera frustum is taken as examples) that needs accracy which boudary conditions given by the rough simulation. Good for multi-threading.

Monday, July 25, 2011

Maya API charts

These are a couple of charts that tells what methods you can use to get an object you need. I wrote them when I was writing a Maya programming book (which ended up not being published), when Maya version was 5 so they're old and the interface and behavior written there may be changed but most of them are still valid.

The first chart shows the relationship between MDagPath, MObject, MFn*, etc. The second one focuses on plugs and attributes. The term "attribute" and "plug" are distinguished strictly in the API. You can say a node *type* has attributes, not a node, so

correct: a mesh has an attribute translateX.
wrong: pCone1 has an attribute translateX.

It indicates you need two informations to get a plug for "pCone1.translateX". First, the node is "pCone1", and second, the attribute is "translateX". You'll see it on the second chart.

Disclaimer: I do not guarantee the accuracy of the information. Refer to it at your own risk.

Friday, June 10, 2011

SPH second test

18000 particles.

Saturday, June 4, 2011



Thursday, March 31, 2011

Working Effectively with Legacy Code

I ordered Working Effectively with Legacy Code on Amazon.
According to the comments, it looks it's about how to tackle with real world problems.
I'll write a review here when I get it.

Friday, March 18, 2011

I'm still in Tokyo

There are still power cuts, not a lot of food, gasoline in stores due to seaport damage, prioritized allocation to afflicted areas, and nasty buyups. Lots of foreigners and a bit of Japanese around me left Tokyo momentarily. Tokyo is slowly getting back to normal. The gym I use, which was closed after the earthquake reopened yesterday. There is still a serious concern in the plant. The result is likely to be clear during this three-day weekend. I'm watching the news closely.

Friday, March 11, 2011


There was a couple of huge earthquakes that I had never experienced. Every public transportation stopped and I had to walk home taking 6 hours. There are still afterquakes every 30 minutes.

Monday, March 7, 2011


Sunday, February 6, 2011

“Less is More” is Bullshit

“Less is More” is Bullshit by Ian Crawford
“Less is More” implies that more is better. It’s not. Less is less. Less is just right. Less is better.
from 37signals blog.

That's very true.

Monday, January 31, 2011


Since I went to a workshop held several weeks ago, I got interested in LLVM. LLVM stands for Low Level Virtual Machine which is a compiler infrastructure (a good tool to use when you write your compiler). There are lots of project going on using LLVM, unladen swallow is a famous one of them. Now I'm reading LLVM tutorial and I found it's not only good for understanding LLVM, but it's very helpful to understand compiler itself, i.e. lexer, parser, and code generation, with lots of practical tips. It's not difficult at all if you have a basic knowledge of C++.

The following info are some tips to run the sample program (toy.cpp) on fedora.

1) Installation

yum install llvm
yum install clang
yum install llvm-doc
yum install clang-doc
yum install llvm-devel

2) Add -rdynamic option when you compile chapter 5 example program.

g++ -g toy.cpp `llvm-config --cppflags --ldflags --libs core jit native` -O3 -o toy -rdynamic

Accoding to the gcc man page,

Pass the flag -export-dynamic to the ELF linker, on targets that
support it. This instructs the linker to add all symbols, not only
used ones, to the dynamic symbol table. This option is needed for
some uses of "dlopen" or to allow obtaining backtraces from within
a program.

Without this, you'll see an error message when you use "putchard"

LLVM ERROR: Program used external function 'putchard' which could not be resolved!

3) To Make the chapter 5 example program work exactly like the document, comment out the following line.
Adding this will do some more optimization.


4) If you are puzzled by the following part of chapter5's If/Then/Else section,

// Codegen of 'Then' can change the current block, update ThenBB for the PHI.
ThenBB = Builder.GetInsertBlock();

try executing the following code and see what it generates.

extern foo();
extern bar();
extern kou();
extern tam();
def baz(x) if x then if foo() then kou() else tam() else bar();

and be aware that if/then/else/merge always ends its execution at merge(ifcont) block.

Sunday, January 30, 2011

PyCon mini JP

Yesterday we held PyCon mini JP.

Ice break

I think it was a big success. We had a wide variety of sessions and attendances seemed to enjoy them a lot. It was the first time for me to participate in holding a conference. I don't think I could work like others who regularly do it but I enjoyed it a lot and had a good experience. It was interesting that the way people who likes holding conferences think are quite different from other developers, they think about communities much more seriously for example.

Sunday, January 23, 2011

One more video

Find .mov and .ogv from a directory and its sub directories, convert them to .avi files and store them to another directory. 1080p available.

Thursday, January 13, 2011

Zamami pre-alpha

This is a software I've been making.
Watch them on full screen mode with 720p to see how the tool works in detail.

Basic usage

Batch execute and built-in debugger


Detect missing files in an image sequence

job dispatch

fancy template

I made a twitter client on it for a complecated node-network example but twitter has turned off Basic auth last year and it doesn't work now. I'll upload it when I've made it working.