“What we know about eating animals is that we don’t want to know.”
Ergosoft and Monokakido
I was going to post an article on how sad and surprised I was to learn that Ergosoft (エルゴソフト), a Japanese input method maker1, folded their Mac software business in January 2008. I met one of their engineers at an input method developer’s seminar hosted by Apple in Beijing, China in 2007. They used animated menu and had an excellent UI (that was before Core Animation) and showed people what input method could be.
A number of articles reported or commented on its quitting Mac software business:
And that was when Kida-san saw my tweet and told me that Monokakido (物書堂) was a spin-out, founded by two of Ergosoft’s former employees. I was so gladly surprised to learn that, because Monokakido is the company that makes the iPhone version of the very popular Japanese dictionary Daijirin (大辞林) !
The story of Monokakido is definitely inspiring. Their mission, according to their company intro, is
“Mac で文章を書く人々に対して、創造力を最大限に発揮できる道具を提供することを目的としています”
(to provide everyone who writes on Mac with tools that bring out the best of their creativity).
Plus the fact that they are a company of two, it immediately becomes my role model of what a small software company can do and achieve.
Kindle 2 and the Disruptive Force
Kindle goes international. The new international model seems to use now 3G instead of EVDO, which is a big step forward.
As much as Apple was possible to roll out the App Store by first building up a global app distribution and payment collection mechanism, Amazon seems to have talked mobile operators well into buying their ideas. If it’s as promised that it’s a subscription-less roaming device (even if the usage fee is actually included in the book price), it’s still a huge improvement over some of the last barriers of mobile communication. This probably also raises the bar for Apple, considering Apple is now a handset manufacturer, which has certain constraints when talking to mobile operators.
The implication could be huge. For example, Amazon can have huge leverage over many local markets (it doesn’t even have to sell physical books there now—just like Apple doesn’t have to have iTunes Music Store everywhere to have a say in a market). Another possibility is when/if Amazon combines its already leading role in providing cloud computing utilities, and comes up with a business platform. An e-ink reader, a mobile device, an internet communicator—companies like Bloomberg or big banks might be highly interested in turning that into a great transaction device, who knows1.
Then there are books, and for now it’s still about books. There is already much written about it. I’m happy with my Kindle 2 as it is now—although I do envy friends who use their DX to read journals and papers. The publishing industry is transforming in a pace faster than people would have imagined a year ago. Let’s see what goes with it and what will be born, or reborn, out of this great disruptive, if not destructive, force.
Hiragino Sans GB: A typeface with Japanese soul and Simplified Chinese look
Who else could give a more authoritative non-official introduction1 than Kida-sensei:
心配なのは、一番最初の例のように、質の低い日本語の文字がグローバルスタンダードになってしまって、高品質なフォントが日本国内だけのお家芸になってしまうことだ。グローバルに羽ばたける高品質な日中共通デザインのフォントが欲しい。
SnowLeopard で新しく加わったフォント Hiragino Sans GB はまさにそういうフォントだ。
これはヒラギノ角ゴシックの中国語版、正確に言うと大陸の簡体字版で、ヒラギノ角ゴシックとデザイン的な互換性がある。ウェイト(太さ)は W3 と W6 の二つ。漢字の字形は完全に中国の規格に沿っていて、日本のメーカーが作ったフォントでは初めて中国政府の認証を取得した。
In rough summary, Hiragino Sans GB is the Simplified Chinese version of the Hiragino typeface. The glyphs use the forms that are Chinese national standard. It’s designed to make Chinese characters look good in Japanese texts, and vice versa.
I have always been a fan of Hiragino. Sometimes I even print documents using the fonts in its family. I usually avoid Traditional Chinese characters that are not covered by them2. With zonble’s system-wide font fallback hack, I am now able to use Hiragino Sans GB as my default Traditional Chinese font.
What’s my take, as a Taiwanese, in using a Japanese/Simplified Chinese font for Traditional Chinese? I have mixed feelings. But I know these things hold true for me:
While the punctuations in Traditional Chinese should always be aligned in the center, not on the baseline, when written vertically (直書), I don’t belong to the traditional school that thinks the same should hold true when written horizontally (橫書). So I’m quite comfortable actually with any CJK font as long as it looks good.
For some period of time I had actually used STHeiti as my default fallback font for any Chinese.
This being said, I don’t like inconsistencies—and this makes Apple’s Hei TC, while a laudable attempt to offer a modernized Traditional Chinese typeface, unusable in professional settings. It also has other major flaws, most objective, some subjective depending on your aesthetic take.
As long as a typeface has consistent radical components3, I don’t actually mind if a character is written according to the Japanese, Taiwanese, Chinese, or Korean standard (the first three in the order of my subjective preference).
I want to say that it’s a good thing that a Japanese font foundry would want to come up with a typeface that attempts to make mixed kanji writings look good. It’s a shame that hardly any Taiwanese or Chinese font I know of tries to do that. Most of the latter two look good in Chinese only (and often only in either Traditional or Simplified, not even both). Many of them, Apple’s Hei SC and Hei TC included, have substandard Japanese kanas. The Roman characters in those fonts also look just so-so (this is, however, also something that Hiragino has space to improve). I hardly know any Korean so I can’t speak for the hangul part—although I assume the Korean language is much less dependent on hanja (kanji).
Some caveats for using C Blocks
One audacious thing that Apple does when it releases Mac OS X 10.6 is it adds block support into the C language. It’s pretty much like what you expect—first-class objects that can be passed as function parameter and saved for later use. C aficionados now don’t have to envy C++0x—if they’re happy with the fact that it’s an Apple-only extension for now (Apple is advocating the addition of the extension to the C language).
It’s pretty fun. Read Mike Ash’s article for a summary of what blocks do. I just want to point out some gotchas:
Blocks live on your local stack. Fine if you pass them as function/method arguments in a local scope. If you want to toss them around, say save them for later use, you must make a copy.
Copying a block has the side-effect of making a copy of its current local variables. These local variables are henceforth consts by nature when the copied block is later invoked. This is a very important point to bear in mind. See the usage for __block modifier if you need vars to live beyond such local scope1.
Objective-C objects inside a block are implicitly retained when the block is copied. The compilers supplied by Apple are smart enough to produce codes that send -retain to all local variables that represent Objective-C objects (in short, all ids) in a managed setting (i.e. non-gc) when you copy a block2, so you really have something very close to a closure. On the other hand, objects are retained, not copied (it’s the pointer values that get copied, copy that?), so make sure you don’t fiddle with those objects unless you really want to (e.g. sending addObject: to an NSMutableArray object)—it might surprise you.
If you want to pass a block to a property, make sure you have declared the property as copy. No, retain won’t work, for reasons (1.) and (2.). You must use the copy attribute even if you are using gc.
Yes, you need to remember to release the blocks if yours are copies, unless if you’re using gc.
Debugging is gapless. Simply set breakpoints inside any block. The only exception that I’ve run into so far is when you forgot to copy a block, and you use the objects pointed by the local vars—there you get really bizarre crashes and the debugger is stopped in the middle of nowhere. You’re warned.
The block syntax has its own irregularities (different when you’re declaring a method argument, for example), but once you get past and get used to that, it really becomes part of the code’s blood. And at least in my case I couldn’t imagine how I ever lived without it. After all, many other languages already have it for ages—they are nothing new! Finally ye olde C has it. I do hope this extension will get accepted in the industry—standardization takes long time, but it should be a good one to add to the language.
Dido's Name
From the Wikipedia entry on her:
Dido was named after the mythical Queen of Carthage. As a child, she had to deal with the ambiguous and unusual nature of her name, which led to her being bullied and even to her pretending to have an ordinary name. As she explains:
To be called one thing and christened another is actually very confusing and annoying. It’s one of the most irritating things that my parents did to me. …Florian is a German man’s name. That’s just mean. To give your child a whole lot of odd names. They were all so embarrassing. …I thought it was cruel to call me Dido and then expect me to just deal with it.
—Dido, Interview published in The Observer in 2001
It’s one of those funny things that can happen to your children after you have given them extraordinary names, and the effects can last long.
In Search of the Real Ideas
From The Economist, “Germany’s oddly vapid election”:
The German people are in a “very unusual” mood, says Werner Weidenfeld of the University of Munich. Past elections involved clashes of ideas and angry finger-pointing between the big parties. In the 1970s, recalls the professor, voters turned out in record numbers to cast their verdicts on Willy Brandt’s entente with the Communist east. In television debates voters used to ask leaders about the “society of tomorrow”. Today, they have “zero” interest in such lofty questions, inquiring instead about optimal levels for health-insurance contributions. In the depths of the biggest economic crisis in 70 years, many Germans feel that their country has weathered the storm well.
…
Alas, this crisis is deeper than German politicians admit. Germany’s social-market model still faces severe tests. It is specious to boast that it should be exported widely, even within Europe: Germany’s combination of wealth, wage discipline and post-war obsession with consensus is pretty unusual. Cosy, smug introspection may be right for a Bavarian country fair. Elsewhere, though, it is time for Germany’s leaders to debate real ideas.
It’s probably not just in Germany, but complacency is the keyword. It’s also probably true that in advanced, developed economies, division of labor has conferred the task of “imagineering” or “the art of the possible” to the politicians. The political systems in those economies have usually worked well in all these post-war years, and usually they are backed by both competent bureaucracies (such is the case in Japan) and strong, healthy economies.
I’m not so sure if our generation (specifically, those of us who were born in the 1970s), the generation that is taking up the baton of social and economic responsibilities, will ever be able to engage in those big actions.
We are probably seeing the ends of the “post-” talks there were so prevalent in the 90s. But that does not mean the “end” of things. No, no eschatology yet1. But, like that article in The Economist says, people are probably more concerned with their health care and retirement pensions—admittedly also big issues—than problems at a larger scale. The problem now is whether we should ask bigger questions, because issues like health care and pension are really just manifestations of those bigger troubles, or if the system one’s having—here the term “YMMV” can’t be more appropriate—is still trustable and well-geared.
If you ask me to come up with a few big words quickly, the top two big items on my list would be like:
Whether economic development can be done without political freedom (the even bigger question: whether the values that we see as “modern” and in particular “Western” are universal, or are they relative): Would moral relativism prevail?
Will the pension scheme in my country go broke? I wonder if this is going to be a generational issue in many places in the world, where the schemes were designed long ago on premises that are probably no longer true today (e.g. assumptions on demographical growth, economic growth, promises to certain classes, etc.). I say it’s a generation issue because our generation is never consulted on those many designs2. It’s a harsh scenario, but what if the pension scheme (again, YMMV and depending on which country you are from) is a Ponzi/Madoff scheme?
There are also a few Taiwan-specific big questions, naturally, although I won’t say we’re complacent about them (like the German people, who at least from the article seem to be confident in their tested system), but rather we’re paralyzed. The questions themselves (the “who are we, from where we have come, and to where will we go” questions) become an impassé and trying to ask those questions, meaningful and important doing so is, can make you an unpleasant dinner guest. So we actually face a meta-problem here: Whether it’s possible to have meaningful discussion on them at all3.
There are admittedly very difficult ones. But I don’t think we can afford staying where we are either.
“I know it’s ridiculous, but one of my favorite tweaks in Snow Leopard is that you can now have the character palette/keyboard viewer option in your menubar without having to have a flag. It used to be that this option would be (in my case) the US flag, which looked silly as hell. Not any more!”
This is a bedtime story that goes wrong
At a divorce court.
Prince Charming: “Pay me alimony, and we’ll settle.”
Snow White: “But I’m a princess! A princess! No princess in history has ever paid alimony. You’re a man, be a man!”
Prince Charming: “But I’m not a man anymore! Remember?”
OpenVanilla 0.9.0a1
Zonble and I have released OpenVanilla 0.9.0a1 for Mac OS X today. OpenVanilla is an input method toolset. I’ve started the project with a number of friends in late 2004, and it has become one of Taiwan’s most important open source projects for Mac users. Its Mac distribution provides a replacement for Apple’s own built-in Traditional Chinese input methods, regarded as inferior to their Windows counterparts.
0.9.0a1 is built from the Oranje branch that Zonble and I have forked in late 2008. Our goal is to keep only the core and the most essential modules, and to modernize the code base, whose foundation was largely laid during our early days of dabbling with C++.
Personally I no longer use OpenVanilla. I now use Yahoo! KeyKey for my everyday text input. My company was commissioned by Yahoo! Taiwan in 2007 to create a cross-platform input method solution. Its design and architecture is based on OpenVanilla, but it also supersedes OpenVanilla in many ways. Take the Smart Mandarin input method for example. Also commissioned from scratch-up by Yahoo! Taiwan, it uses a database-driven, bigram-based engine that is capable of utilizing large corpus and search engine-provided terms. This is the input method with which I finally settle down.
Still, I’m glad to have been able to resume working on the core of the Oranje branch. It is also an example of using IMK-Tiger to produce distribution packages that support both 10.4 and 10.5/10.6.
In essence, 0.9.0a1 is a more developer-oriented version, with the focus on the core (framework, loader, essential modules). With our limited resource and time, polishes needed for end-user distribution are mostly left out to future developers who want to continue OpenVanilla’s development. For people who choose to use OpenVanilla because it’s an open source solution, on the other hand, 0.9.0a1 will bring timely update to the software itself, especially compatibility with Mac OS X 10.6.