Shiro:log:2006後半

Shiro:log:2006後半

Shiro


(2006/12/26 00:28:40 PST)

らむ太は最近、椅子に乗ると高いところに手が届くことに気づいて、 いろんなところに椅子を押して行っては手を伸ばすようになった。 危険なものを隠すのが大変だ。

今日は棚の上に置いてあった懐中電灯を「発見」して熱心に調べていた。 最初は、床を照らした光がどこまでもついてくるので怖くなって 泣いてたらしい(かみさん談)が、じきに原理をマスターし、 仕事場に自慢気に見せびらかしに来た。あちこちを照らして 「おぅ、おぅ」と言い、次に懐中電灯を私に渡してやってみろと指示する。 さらにスイッチの切り方まで丁寧に教えてくれた。

全てが新鮮で、発見の連続なのだなあ。

(2006/12/25 01:42:15 PST)

12/22のrangeジェネレータだが、ジェネレータと範囲を取ってジェネレータを 返す方が綺麗だな。

(define-constant *eof* (read-from-string ""))
(define (eof) *eof*)

(define (generator-range begin? end? gen)
  (define next #f)
  (define (in)
    (let1 elt (gen)
      (cond ((eof-object? elt) (set! next eof) *eof*)
            ((end? elt) (set! next out)))
      elt))
  (define (out)
    (let1 elt (gen)
      (cond ((eof-object? elt) (set! next eof) *eof*)
            ((begin? elt) (set! next in) elt)
            (else (out)))))
  (set! next out)
  (lambda () (next)))

これで

gosh> (with-input-from-process "w3m -dump_source http://www.yahoo.com"
        (cut port-for-each print (generator-range #/^<style/ #/<\/style>/ read-line)))
<style type="text/css">
a{color:#16387c;}
a:link,a:visited{text-decoration:none;}
a:hover{text-decoration:underline;}
</style>
<style type="text/css" media="all">
#p{width:310px;}
form{margin:0;}
</style>
#<undef>

こうなる。

(2006/12/24 12:09:28 PST)

6行でプレゼント交換(最高にキモい Scheme コードを書いてみよう)より:

(use srfi-1) (#0=begin (#1=define-macro(oa . l)`(#0#,@(map(#2=lambda(x)`(define-method object-apply((l <list>),@(car x)),@(cdr x)))l)))(#1#
(dn s p)`(#0#,@(map(#2#(a b)`(define ,a ,b))s p)))(dn(d fn dl fc p! !p fm f- e? rv mm fl nl l/)(define #2# delay force push! pop! format filter-map
equal? reverse member fold newline let/cc))(oa(((i <integer>)) (list-ref l i)) (((s <symbol>)) (null? l)) (() (cdr l)) (((f <procedure>))(map f l))))(d 
!())(d(_ \>)(if[\> 'n](%)(l/ c(p! !(dl(c(_[\>]))))[\> 0])))(d %(l/ c(fn()(if[!'n](c '@)(fc(!p !))))))(d(pp l)(fl(fn(e _)(fm #t"~a->~a "(#1=[e car] 0)(#1# 1)))
(nl)l))(d(? x)(x(fn(e)(f-(fn(h)(if(or(e? e h)(e?[e][h]))#f`(,e ,h)))x))))(d(\ x r)(if[x 'n](pp(rv r))(\[x]`(,@r ,(let1 t (_ [x 0])(if(mm[t 1][r cadr])(%)t)))))
(%))(\(?'((a1 . a)(a2 . a)(b1 . b)(c1 . c)(d1 . d)))'())

すげえ。シンボルに#n=記法を使って記述量を減らす手法は気づかなかったわ。

シンボルにバックスラッシュ \ を使えるかどうかは未定義なんで、そこだけ 置き換えた方がいいかも (R5RSでは使えない、Common Lispではエスケープ文字、 Gaucheではどう扱おうか迷ってる)。

(2006/12/22 18:31:51 PST)

フリップフロップのように動作する演算子、/regexp/../regexp/。 awkの似たような機能はずいぶん使ったのでこれが便利であることは分かってるが、 隠された状態が色々あって気持ち悪い。同様の機能を、状態をうまく閉じ込めて実現 するとどういったAPIになるだろうか、とつらつら考えていて、ジェネレータを 扱う関数群としてまとめられるんじゃなかろうか、と思った。

ここでのジェネレータは単なるthunk (引数無しの手続き) で良い。呼ばれるたびに次の データか、もしくはデータが無くなれば#<eof>を返すとする。無限にデータを生成 してもいい。標準入力関数のreadやread-charはそのままジェネレータとして使える。

そうすると、このジェネレータの出力に対してfold, map, for-each, take, drop など、ストリームやシーケンスと同型の関数群が定義できるだろう。例えば:

(define (generator-fold proc seed gen)
  (define (rec seed)
    (let1 elt (gen)
      (if (eof-object? elt) sedd (rec (proc seed)))))
  (rec seed))

(define (generator-take gen k)
  (define (rec k)
    (if (<= k 0)
      '()
      (let1 elt (gen)
        (if (eof-object? elt) '() (cons elt (rec (- k 1)))))))
  (rec k))

無限要素を許すこと、必要なだけ値を生成すること、等は遅延ストリームと よく似ているが、ジェネレータはリスタートが出来ない(途中状態をcall/ccで 捕まえておいてそこから再実行をかけることが出来ない)。ただ、それは 状態を保存しておかなくても良いことを意味し、効率は遅延ストリームよりも 良くなる。

ジェネレータを使うなら、フリップフロップ演算は一つのジェネレータからの データの流れをふたつのデータの流れに振り分ける弁みたいなものになるだろうか。

(define (generator-range gen begin? end? in-proc out-proc)
  (define (out e ins outs)
    (cond ((eof-object? e) (values (reverse ins) (reverse outs)))
          ((begin? e) (in (gen) (cons (in-proc e) ins) outs))
          (else (out (gen) ins (cons (out-proc e) outs)))))
  (define (in e ins outs)
    (cond ((eof-object? e) (values (reverse ins) (reverse outs)))
          ((end? e) (out (gen) (cons (in-proc e) ins) outs))
          (else (in (gen) (cons (in-proc e) ins) outs))))
  (out (gen) '() '()))

ジェネレータgenからの流れを、in-procかout-procへと振り分ける。一応、 関数的に、副作用を当てにするのではなく結果をリストでそれぞれ収集してみた。

gosh> (with-input-from-process "w3m -dump_source http://www.yahoo.com"
        (lambda ()
          (values-ref (generator-range read-line #/^<style/ #/<\/style>/
                                       identity identity)
                      0)))
("<style type=\"text/css\">" "a{color:#16387c;}"
 "a:link,a:visited{text-decoration:none;}" "a:hover{text-decoration:underline;}"
 "</style>" "<style type=\"text/css\" media=\"all\">"
 "#p{width:310px;}" "form{margin:0;}" "</style>")

こういうの、util.generatorとかしてモジュールにしとくと何か使えるだろうか。

(2006/12/19 05:38:35 PST)

内田樹の研究室: 創造的労働者の悲哀

しかし今、労働は創造となった。
そのせいで仕事をする人々はその定義上、仕事をつうじて絶えず自己実現の愉悦と満足にうちふるえていなければならなくなった。
苛酷な条件である。
絶えず創造し続け、絶えず快楽にうちふるえていなければならないという重圧に耐えかねた創造的労働者たちの中から「自分らしい作品ができないくらいなら・・・」と沈黙と無為の道を選ぶようになる者が出てきても怪しむに足りない。
ニートやフリーターはこの「創造的労働者」の末路である。

「創造」や「芸術」といったものが、相変わらず、ひどく誤解されていることが 不幸の元であるのかもしれない。三木清が言うように、岡本太郎が言うように、 芸術は生活の中にあるものではなかったか。 それは生活を楽しむ技術(三木)であり、自由を取り戻す手段(岡本)ではなかったか。

生活に密着した自分自身のこととしてではなく、人が創るものを端から眺める だけで創造やら芸術やらをとらえていると、 ユニークでなければならないとか、人と違っていなければならないといった ことばかりに目が行く。でもそれは「結果としてそうなることもある」という だけのことで、そこばかり見るのは順序が逆だ。 繰り返す日常自体を楽しむ技術を見出した時、結果として日常が他人から見て ユニークになるのだ。

これは「個性」にまつわるアンビバレンツとも関連している。 社会的には人と同じであるべきという強烈な暗黙のプレッシャーがあるくせに、 建前では「個性を伸ばす教育」などと言っている。 個性というのはもうどうしようもなくそこに有ってしまうもの、 逃れようもない自分自身のことで、伸ばすとか育てるとかいうものではない。 抑えたり制御したりすることしかできない。 (昔、同じことを書いたことがあるが、子供を持ってみて改めてそう思った)。 全く抑えないと社会として収拾がつかなくなるから、 学校で個性を適度に抑える技術を学ばせるのは間違ったことではない。 でも今は、個性を徹底的に抑え込むせいで、「個性的」という言葉さえ いくつかの類型的なモデルを指す言葉になってしまったきらいがある。

自分ではない、メディア等で流布される特定の人物の生活を、それこそが クリエイティブで個性的な生活だと勘違いしていれば、そりゃ 自分自身が「創造的」「個性的」に生きるのは難しかろう。 他人の人生を生きようとしてるわけだから。

* * *

もっとも、労働者を取り替え可能な部品として扱った方が 収益が見込めるという構造があった場合、経営者側が それを利用するというダークサイドに堕ちることは十分にあり得る。 そのような職場で生活を楽しむのはとても難しいだろう。 「自由を取り戻される」ことは経営者側にとっては不都合だから、 そうさせないような有形無形のプレッシャーがあるはず。

「とにかく働け」と言うことの問題は、そういう環境で しゃにむに働いた場合、自己実現どころか利用されるだけに なりかねないことだ。1世代以上前ならどこも似たようなものだったので その場で闘うことが自由への道だったのだろうけれど、 仕事が多様化した今となってはその場を去るって選択肢も ありだと思う。

でも一方で、どんなに「自分に合った」仕事であっても、日常で やっていることの95%は泥臭い、本質とは一見関係無いような 作業であるのが普通で、表面的な作業の無意味さだけを見ていると その仕事の「おもしろさ」を見損なう危険がある。で、 そういうことを嗅ぎわけるには、やっぱり「とにかく働いてみる」 経験が必要だったりする。

(2006/11/25 14:05:44 PST)

らむ太語録。

  1. 「あいやいや」 - 嫌だ
  2. 「あいた」 - 痛い
  3. 「ないない」 - 片付けています
  4. 「め〜」 - 目
  5. 「み〜」 - 耳
  6. 「っち」 - あっち
  7. 「った」 - あった
  8. 「っしょ」 - よいしょ
  9. 「っぱい」 - おっぱい
  10. 「ぶぅ」 - おぶう (湯冷まし、お茶)
  11. 「ぶ〜」 - 自動車
  12. 「ぅ〜〜」 - 救急車、消防車、パトカー
  13. 「びぃ」 - ビデオ
  14. 「ごー」 - Go、もしくは「私を外に散歩に連れていきなさい」
  15. 「し〜」 - 「私は尿意を催しているようです」もしくは「あちらで粗相をしてしまいました、後片付けをお願いします」
  16. 「ばいばい」 - 別れの挨拶、もしくは「私は一人で遊びたいのでどこかに消えて下さい」

(2006/11/22 22:29:36 PST) Lispセミナー

Franzと数理システム主催のLispセミナーにて、リモートで参加(講演)した。 ネタは昨年末から今年頭にかけて数理システムさんとやったプロジェクトについて。 (少なくとも私の担当部分は)Lispならでは!って感じの内容ではなかったので、 主に開発プロセスについて喋った。しかし聴衆がどんな感じかとわからないので リモート講演はやっぱりやりにくい。その場にいると反応を見て内容を調整したり できるんだけど。

LL Ringと同じく、ビデオ中継はSkype Video。ただ、 今回はスライド操作をこちらからできるようにしてみた。 nekoieさん作のtcpcgiを ちょろっと改造して、同じサーバにアクセスしてきたブラウザ同士で、 ページ遷移が伝搬するようにした(実際は同一URLをXMLHttpRequestで読んでいて、 サーバ側で内容を入れ替えてるだけ)。 簡単な仕組みだけど、リモートプレゼンには使えるかもしれない。

(2006/10/31 19:33:44 PST) Exitting

Y CombinatorのFounder Program 一期生、 Reddit卒業したようだ (via ogijunさんとこ)。 Y Combinator発のスタートアップとして最初のexitじゃないかな。

これで世界はまた一歩、Paul Grahamの野望の実現に近づいた。 Paulの野望、それはNerdによる世界征服である。 Y Combinator傘下には、Redditらと同様の技術と情熱を持ったNerd軍団が 大量に控えている。Pointy Haired Bossの没落は既に始まっているのだ。

(2006/10/29 04:32:10 PST) "Sunday Wind"関係

"Sunday Wind" がHawaii International Film Festivalで 若手監督に送られるcause & f(x) DREAM DIGITAL AWARDを受賞したそうだ (Starbulletinの記事HIFFオフィシャル)。 Mike、Shawn、おめでとう。 おかげでもう一回、10/29の6:15から上映されるらしい。ってもう今日じゃん。

なお、同時上映の "Na Kamalei: Men of Hula" はRobert Cazimero率いる 男のフラのチームを追ったドキュメンタリーで、かなりおもしろかった。これも HAWAII FILM AND VIDEOMAKER AWARDを受賞して、再び"Sunday Wind"と同時上映される。 前回見逃した人はぜひ。

もひとつ、これは映画祭前のだが、"Sunday Wind"の撮影後に亡くなったRay Bumatai氏に 触れた Honolulu Advertiserの記事。

(追記: ちゃんとポスターとか作ってたらしい。一枚記念にもらった。)

[image]

(2006/10/28 02:29:30 PDT)

高林さん等による低レベル技術指南、 Binary Hacksが11/4に発売になるそうだ。私も序文を書かせてもらっている。

中身は、コンパイラやら機械に近いところをいじってきた人ならわりと知っている話だと思う。 ただ、その手の話ってみんな経験から学んでいる感じで、 まとまって明文化されることが少ないために、 新しい人が興味を持った時に どこから手を付けたらいいのかわかりにくかったのではないだろうか。 そういう場合に役に立つ一冊だと思う。

[image]

(2006/10/26 05:09:58 PDT)

最近、"obsolute" という(多分obsoleteの)誤綴を相次いで見かけた。 absoluteと混同されたのか? (アクセントのあるシラブルだから発音から違ってくるはずだが… 発音も[-lu:t]になってるのかな?)

(2006/10/26 04:25:13 PDT)

少し前のIEEE Computer誌にNASAの人が、安全なコードを 書くための10の規則、みたいな記事を書いていたのだけれど、それが普段我々の ようなどっちかというと関数型言語よりのプログラマが考えていることと かなり隔たりがあって興味深かった。以下、主観的要約。 (深く知りたい人は原文をあたってほしい: Gerard J. Holzmann, "The Power of 10: Rules for Developing Safety-Critical Code, Computer 39(6) pp.95--97, June 2006.)

  1. 制御フローはシンプルに。gotoやsetjmp/longjmpはもちろん、再帰も禁止。
  2. ループを回す回数の上限は静的に決まらないとだめ。
  3. mallocは初期化時以外使用禁止。
  4. 印刷した時1ページ以上になる関数は書いちゃだめ。
  5. 関数のprecondition, postconditionを検査するためのassertionを活用せよ。 関数あたり平均で2個以上。
  6. データの宣言される範囲はなるべく小さく。
  7. void以外の関数の戻り値は必ず検査せよ。各関数は引数の妥当性を必ず検査せよ。
  8. プリプロセッサ(ここではcpp)の使用はファイルのincludeと簡単なマクロに留めよ。 ネストするマクロ展開禁止。トークンの合成禁止。
  9. 2レベル以上のポインタの間接参照禁止。typedefでポインタをそうじゃなく見せかけるの 禁止。関数ポインタ禁止。
  10. 開発初日から常に、コンパイラの警告レベルを最高にしても警告が出ないようなコードを書け。

1, 2, 3あたりはええええって感じだし、8, 9あたり禁止されると 私なんかはプログラムが書けなくなりそうな気がするんだけど、 これも経験に裏打ちされた話なのだから、こういうのが要求される 世界があるってことでしょう。宇宙とか。

ちなみに1, 2, 3, 9あたりは静的検証ツールを使うことを前提にしていて、 静的検証ツールが追いきれないコードは書くなって意図のようだ。

ところで興味があるのは、コンパイルが通ればバグはまず無い、と豪語するような 強い静的型言語ならこういう条件を言語側でサポートできるかってこと。 少なくとも1, 2, 3あたりは静的に処理量の上限が決まって欲しいってことだから MLやHaskellの型システムだけじゃ検証できないよね。依存型ならできるのかな。

昔、comp.lang.lispあたりで静的型vs動的型のflame合戦が起きた時に、 某毒舌Lisperが、「俺は静的型でバグが潰せるというのはまやかしの安心だと 思っているが、静的検証ツールでバグが潰せるというのは信じている。 マルチタスクのタイミング絡みの非常に微妙なバグを、静的検証ツールで 見つけたことがあるからだ。あれは人間が見つけるのは不可能だ」みたいな 発言をしていた気がする。そう、時間が絡む話も普通の静的型言語は まだ扱わないよね。扱えるのかな。

(2006/10/23 03:43:32 PDT)

Roombaを試してみている。 「ガベージコレクションならやっぱりLisp (by 竹内郁雄)」だしね。 30日試して気に入らなければ返せるので、まあ期待せずに使ってみるかって感じ だったのだが、思ったよりも綺麗にしてくれる。うちはほとんど全て木のハードフロア ってこともあるだろうけど。ベッドの下とか今まで届かなかった ところも掃除してくれるし。同じところを何度も行き来したりと効率は悪く、その 仕事ぶりを注視していると不安になるんだが、正しい使い方は十分に時間を取って 放っておくことのようだ。僕等の21世紀には万能フランクも勤勉ビーバーもいないが 少なくともRoombaはいる。

ただ、らむ太は機械を見ると目の色を変えて襲いかかり押せるボタンは全て押し 外せるパーツは全て外すまで離さないので、何としてもらむ太に 気づかれないようにしなければならない。これは、外出前にこそっとRoombaを起動 し、帰宅直後に隠すことで何とかなるんじゃないか、と思っているが自信はない。

さて、今日は夕食の買い出し中に仕事部屋を掃除しようと 外出直前にRoombaを放ったのだが、その動作音をリビングから聞きつけた らむ太が突進して来た。あわててドアを閉めてにこやかな笑顔を作り 「さ〜お出かけだ〜」と抱き上げてみたものの、らむ太は疑わしそうに 閉まった仕事部屋のドアを見ている。済まん、らむ太。大人になるということは 秘密を抱えるということなんだ。今に君にもわかる時がくるさ。

この時、勢い良くドアを閉めたのが悪かったのかもしれない。

買い出しから帰ってらむ太の注意をビデオでそらし、仕事部屋の 様子を見に行くとドアが開かない。ちなみにドアは部屋の内側に向かって開く。 Roombaがドアの向こうに居座っているのかと思ったが、Roomba本体はそんなに 重くない。すぐに理由はわかった。ドアの対面に折り畳み式のレジャーチェアが 立てかけてあったのだが、それが倒れてちょうどつっかい棒になってしまっているのだ。

Roombaが衝突して倒れたのだろうか。いやおそらくはドアを閉めた勢いだろう。 ともかく力いっぱいドアを押しても出来る隙間は2cm程で、手を入れることもできない。 仕事部屋の入口はそこ一箇所。窓は空いているが2階であって、足場になるような 庇などはない。12尺ほどの梯子があれば窓から入れるがそういう梯子の持ち合わせもない。 ドア破壊など強制手段を取るにしても、得物となりそうな道具は全て仕事部屋の中だ。 ああRoombaがもっと賢くて人語を解し、ついでにアームか何かがついてて 力仕事もこなしてくれれば…

とりあえず焦っても仕方ないのでいつも通りらむ太に夕食をやり、風呂に入れ、 遊びの相手をしつつ戦略を考えた。と言っても出来ることは限られる。 結局、針金ハンガーをばらした針金で根気良く探ってひっかけるという 原始的な方法で解決した。

しかしこんなことがあると、Roombaをhackして カメラとwifiをつけようか、などと邪な考えが湧いてきてしまうな。

(2006/10/16 02:41:36 PDT) ハワイ大停電

朝7時過ぎ、らむ太に朝食を食べさせている時に地震を感じる。 珍しいものだと思っていたら程無く停電した。

PCはUPSでしばらく生きていたが、ISPの方が落ちたらしくて ネットはつながらず。車のラジオでスキャンすると、ほんの数局しか入らない。 ここでどうやらかなり広域の停電だと見当をつける (実際は、州全域で停電していた)。 この時はどの局も録音番組だったが、8時過ぎからライブでニュースが始まる。

昼過ぎ、車で食糧の買い出しに出た。近場はどこも閉まっている。 Diamond Head Grillの売店が空いていたので適当に購入。 Pearl Cityの方で電気が戻り始めたとの報。

2時過ぎ、らむ太を連れてWaikikiのビーチ方面へ散歩。大きめのホテルや コンドは大抵コジェネを回していたが、エレベーターと非常灯くらいしか 賄えないらしい。部屋にいても仕方ないのか、ホテルのロビーや 歩道は観光客で溢れていた。ABC Storeは内部の冷気を逃さないためだろうか、 扉を締めて入場制限をかけていて、どこも外側に長い列ができていた。

その後、家族で車を出して街の様子を見てみる。ドンキホーテ(旧ダイエー)は やはり長蛇の列。しかしちょっと離れたTimes Supermarketはそうでもない。 マッチの残りが心細かったので(うちはガスなのだが、電気式点火装置は当然 動かない)、ライターを購入したり。 ラジオの報道では島のあちこちで電気が戻り始めているらしい。 夜までに戻るだろうか。 州知事は地震発生時にたまたまハワイ島にいたらしいが、すぐにオアフに 戻ってCivil defense emergency operating centerで指揮を取っているそうな。 このcenter、Diamond Headのクレーター内にあるそうだ。そんなものがあったとは 知らなかった。

らむ太が寝たので一緒に昼寝。PCが動かないから仕事もできない。

日が暮れたがまだ電気は戻らない。キャンプ用のColemanのガスランタンを点火。 外に出るとSt. Louis Heightsなど山の方は 灯りがついているので、こっちももうすぐだろうと希望をつなぐ。 せっかくなので停電のWaikikiを見に行く。

8時すぎ、真っ暗なトイレに入っていたら家の裏手で喚声が上がった。 うちの裏まで電気が来たらしい。しかしうちを含む数軒がまだ。 電気のグリッドって、ひとつのブロック内でも数系統に分かれているらしい。

9時近くなって、らむ太を寝かしつけついでにまた車を出すかと思ったところで 電気が戻った。文明とはありがたい。らむ太を風呂に入れてなんだかんだして ようやくPCを立ち上げた。

(2006/10/14 04:21:56 PDT)

YouTubeについてはGoogleの買収意図とか無許諾コンテンツの問題とかの 話題がホットなわけだけれど、それはその方面の人に任せておいて、 一ユーザとしての楽しさを考えると、やはり自分のコンテンツを 気軽にネットに置けるというところだと思う。

今までだって自分のサーバスペースにムービーファイルを置くことは できたわけだけれど、なんというか、わざわざそこまでして見せたいものが あるかと考えるとちょっと壁が高い。それが、あれだけたくさん アップロードされてれば、大したことなくたってちょっと自分も のっけてみようかって思うわけだ。

これは、動画のリリースが気軽に出来るようになったということだ。 未完成でも早めにリリースして反応を見て改善してゆけるような コンテンツにとっては、その利点は大きい。映像作品そのものを そんなふうに反復的に作るのはちょっと難しそうだけれど、 動画でしか伝えられない「何か」を反復的に改善してゆくのに 非常に役に立つんじゃないか。

ということを実際に動画をアップロードしてみて思ったのだった。 先日、かみさんとらむ太が帰省している時に、 ピアノを弾いてるところを撮ったものだ:

どちらもまだまだ未完成だけど、リリースすることで役に立つ フィードバックが貰えている。らむ太がいると全然弾けないので 次はいつになるかわからないが、また撮ってアップロードしてみたい。 数年後になるかもしれないが…

(2006/10/11 02:48:34 PDT)

昨年、撮影に参加した短篇映画"Makani Lapule (Sunday Wind)"が、 Hawaii International Film Festivalに通ってたらしい (cf. Shiro:log:2005前半, 2005/06/14)。 一回だけだが上映される。

http://www.hiff.org/filmlisting_tickets/synopsis.php?id=242

初めての映画撮影だし、他のメインキャストはSAGの人だし、 自分にとってはいろいろ学べた良い経験だったのだが、 正直、監督の求める素材を提供できていたかどうか甚だ心許ない。 でもフィルムは焼き付けられたものが全てであって、言い訳は効かない。 舞台とは別の厳しさがある。 今回出来なかったことは次回のチャンスにできるようになっていなければならない。

(2006/10/09 04:42:26 PDT)

ひさびさにPaul Grahamのエッセイを訳してみた→ 学生のためのベンチャー指南

時間が無いのでほとんど1パス。 原文はコメントになっているので変なところがあったら教えて。

ちなみに普段の翻訳のやり方は、

  1. 読む
  2. htmlをダウンロード
  3. パラグラフごとに頭から訳す
  4. 何度も読み返して整える

だけど今回は整えるところをやってない。それでも4〜5時間かかってしまった。 また当分これだけの時間を取るのは難しいだろう。

ちなみに他の人の訳したのを含めての一覧は naoya_t:ポール・グレアムのエッセイと和訳一覧にある。

(2006/10/10 04:09:05 PDT追記:) Redditのコメントで 知ったこと。Paulが「ものつくりの病」に侵されている人を探している、 ってところで、移動カウチのスライドを見せたんだが、 それを作った当人が会場にいたらしい。それを指摘されてPaulが

"Oh shit, he's right over there." と言ったとか。

(2006/10/05 12:32:05 PDT)

OSM休刊かあ。 私自身、紙の雑誌を手にとることがほとんど無くなっていたから、 とやかく言える立場ではないが、編集部はしっかりしていたところなのになあ。

(2006/09/27 05:13:46 PDT)

前回、リセットボタンで会心の一撃をScheme Artsの中枢に放ったらむ太であったが、 Scheme Artsのサーバは何事も無く再起動して動作を再開したのだった。 それを見てらむ太はリベンジを誓った…のかどうかは本人が喋らないので わからない。

仕事場に入ってみると、やけに静かなのに気づいた。む、停電か? しかし 居間ではらむ太がビデオを見ている音がする。そもそも停電でもUPSが作動 しているはず…っ! UPSの元電源が切れている。やられたッ!

電源を入れて起動してみる。メインサーバは無事立ち上がったのが、 今のプロジェクトで使ってる開発マシンが立ち上がらないッ! 電源も入らない。マザーボードがやられたか、と焦る心を抑えて 順に調べると、電源ユニットのstand by 5Vのラインに0.3Vくらいしか出てない ことが判明。電源ユニットだけ変えてみたら無事立ち上がった。

らむ太…電源だけを飛ばすとは…一体どんな技を…

(2006/09/25 17:38:49 PDT)

WiLiKiのコンテンツをごそっと取って行くスパイダーが増えてきた。 WiLiKiは、特に使用頻度がそれほど高くないと思われるような操作はかなり 富豪的に書いてある。例えばページの過去のバージョンは、全ての編集操作の差分が シーケンシャルに記録されたファイルからそのページの編集差分を拾い出して、 最新版から順に適用することで求めてる。昔のバージョンを見ることは滅多に無い という仮定のもとにそういうふうに作ったのだが、スパイダーはそんなことは お構い無しに、全てのバージョンを持ってゆこうとする。

何が問題かって、サーバ負荷はそれほどでも無いんだけれど、read lockが ほとんどかかりっぱなしになるため、write lockが獲得出来ないエラーが頻発するのだ。

robots.txtでwiliki以下の検索を弾いていたこともあったけど、 検索にはやっぱりひっかかって欲しいんだよなあ。今でもいちおう 編集履歴のページには<meta name="robots" content="noindex,nofollow" /> を入れてるけど効いてないようだし。 何かいい方法はないものかのう。

(2006/09/14 12:41:26 PDT)

らむ太は つくえの したで あそんでいる

しろうは しごとを している

らむ太は PCの リセットボタンを おした!

しろうの ひめいが へやに ひびいた!

らむ太は かおじゅうで わらっている!

(2006/09/12 21:34:23 PDT)

オープンソースマガジン2006年10月号の特集記事に まつもとさん住井さんと並んで 記事を書かせてもらった。

今回はあんまり内容について考えないで引き受けてしまって、 当初ぼんやりと考えていたネタを発展させられなくて、 無理矢理着地させたような記事になってしまった。 クロージャとオブジェクトの関係については住井さんの方が フォーマルな議論に詳しそうなので、ツッコミが入ることを密かに 期待していたりする。

後から振り返れば、プログラムの二重性 (プログラムは実装である と同時に仕様記述である) を柱に持ってきた方が良かったかも。 これはSteeleが "Lambda: The Ultimate Imperative" と "Lambda: The Ultimate Declarative" で示唆しているけれど、 Jonathan Reesが うまいこと言っている

The ideal program is a pun, simultaneously declarative and imperative. When a human first reads it, it's understood declaratively, and only then, when someone (human or computer) cares about running it, is it understood imperatively.

(2006/08/26 23:25:28 PDT)

もう昨日のことだが、LL Ringの Language UpdateでSchemeについて喋らせてもらった。 スタッフの皆様、お疲れさまです。

使ったのはSkype Video。時々接続が不安定になって音がぶちぶち 切れたりするのだけれど、本番ではわりとスムースにいってくれたようだ。 10年前、Square USAに入ったら、会議室にTV会議システムがあって 東京の本社との間で会議できるようになってたんだけど、 何かと面倒で滅多に使わなかったような気がする。 ビットレートが違うとはいえ、PCから手軽に映像・音声でコミュニケート できるのはやっぱ大した進歩だよなあ。

発表で、「今日の言語の中ではLispに次いで2番目に古い」とか言ったんだけど Forthを失念してた。失敬。

入場? のBGMはラヴェルの Concerto pour la main gauche。 名前つながりで。

(2006/08/20 03:57:46 PDT)

昼間働いている人の雑用問題

一人暮らしの人はもちろん、フルタイム共働きで遅くまで働いている人も多くなってる昨今、 お役所や銀行や郵便局などの窓口が平日の9時〜5時ごろまで(+土曜は12時まで) しか開いてないというシステムはほんと困りものである。

米国はこの手の用事のほとんどが電話か手紙で済んでしまう。 決済手段として個人小切手が普及していることが大きいのだろう。 料金の支払いも、自分の口座への預金も、全て小切手を送るだけで済む。 私はふたつの銀行を使っているけど、口座間の金の移動も小切手だ。 手数料かからないし。電信払込って全く使わない。

あとは電話。込み入った話などは英語のハンデもあるから対面の方がやりやすい とも思うんだが、何でも「とりあえず電話してくれ」なんだよね。 時には窓口の人に処理の権限が無いらしく、わざわざ窓口に行って 頼んでも脇の電話を示されて「あそこからコールセンターにかけてくれ」と 言われることもある。

たぶんそんなだから、ネットによる電子的な手続きも普及しやすいんだろうと思う。 日本の役所の電子手続きって電子証明書取れだのカードリーダーがどうだの あまりに面倒そうで、あれじゃ普及しないだろう。対面での処理の信頼性があまりに 高くて、それと同等のことを実現しようとするから大変なんだろう。 こっちは逆にネット上の手続きの本人確認とか心配になるくらいいいかげんなんだが、 そもそも人が介在しても間違いはなんぼでも起こるんで、それは折込み済みで 訂正機構でカバー、という考えなんだろう。

それでも依然として困るのは荷物の受け取りだ。 郵便局は不在通知を持ってけば朝6時から対応してくれるのだけれど、 家具の配送とかは待たざるを得ない。これがえらくいいかげんで 午後来るって行っといて夕方になって「今日は遅くなっちゃったからまた明日」 なんてふざけた電話がかかってくることも覚悟しとかないとならない。

(2006/08/19 01:12:38 PDT)

Y Combinatorの支援を受けていた、 Ruby on Railsで構築されたwebベースカレンダーソフトkikoの資産が オークション に出されている。Google Calendarが出てきて、競争するのはしんどいから撤退するって ことらしい。 Paul Grahamがblogに エントリを上げている。 要点だけ抄訳。

  • これがWeb 2.0の終焉を示唆するとか騒いでるひともいるが、そんなことはない。
  • Kikoのユーザの多くは既にGmailアドレスを持っており、Google Calendarが 出た時点でそうとうのユーザがそっちに流れた。
  • Justinが学んだこと について書いている。余分なプロジェクトに力を注ぎすぎたと。 でも我々がやられたのは、Google CalendarとGmailの統合だった。 kikoには、競争するためにgmailを書くなんてことはできなかったからね。
  • これがwebスタートアップをくじくことになるとは思わないけれど、 ひとつ重要な点がある。これは、GoogleがMicrosoft Office効果によって 得をした最初の例になるかもしれない。80年代から90年代にかけて、Microsoftは 個々のアプリ毎の競合相手を、アプリを緊密に連携させることでやっつけてきた。 webアプリでもこの戦略はいけるようだ。
  • GoogleはMicrosoftよりも危険かもしれない。技術に関心のあるユーザが 好むからだ。Microsoftの新製品のユーザは最も技術に関心のない、 プレインストールされたソフトしか使わないような層だけど、 Googleと競争しようとしたら、本来ならスタートアップの味方である はずのアーリーアダプターの層を取り合うことになる。
  • 大手も大変だ。YahooやMSNやAOLがクールなソフトをローンチしようと したって、クールなソフトを好むユーザはそういうサイトをもともと見にゆかない。
  • スタートアップは、Googleの邪魔にならないところを狙うのがよさそうだ。
  • いい知らせもある。Googleの進路は案外狭いんだ。少なくとも今までは、 Googleは自分達の社員が使いたがるようなものを作るのが得意なようだ。 自社内でベータテストを、時には何年もかけてやっているのだから。 賢いハッカーが仕事で使いたいような製品なら、この方法はうまくいく。 でもそうでなかったら? 検索とメールサービスは得意だけれど、 最初に手をつけたにもかかわらずYouTubeにはなれなかった。 likebetterみたいなものは考えもしないだろう。 (訳注:likebetterは今期のSummer Founder Programで作られたサイト)。
  • もうひとつ、webスタートアップに励みになる点がある。 身軽なら、失敗してもたいしたことはない。 Kikoの開発につぎこんだのは、せいぜい一級のプログラマ一人の半年分のサラリーだ。 コードを売ることでその一部は回収できるだろうしね。Kikoは創立者以外に 一人しか雇っていなかったから。だからバブルの頃にあったようなひどい倒産劇には ならない。彼らは頑張って、良いものを作ったけれど、流れ弾に当たったんだ。 じゃあ、また挑戦すればいい。Y Combinatorは昨日、彼らの新しいアイディアに 投資したよ。
  • それはGoogleの社員が仕事で使いそうにないものだ。 いや、たぶん私の知る限り、もっとも常識外れのベンチャーだ。 彼らがリスクを取る欲求を失わなかったのは良いことだ。

ところでオークションの今のhigh bidderがogijunってなってるんだけど、 ogijunさんですか?

(2006/08/07 14:22:53 PDT)

オープンソースマガジン2006年6月号に掲載された、「ハッカー養成塾!」の 元原稿を掲載しました → Shiro:OpenSourceMagazine0606

(2006/08/01 22:05:42 PDT) Y Combinatorに行ってきた

せっかくボストンに来ているので、Paul Grahamの Y Combinatorに おじゃましてきた。毎週火曜日はY Combinatorの支援を受けているスタートアップの 卵が一同に会してディナー、なんだそうだ。ケンブリッジの静かな住宅街の一角に あるY Combinatorのオフィスは、平屋の四角い一軒家で、 ガレージを改造しましたと言われたら信じてしまいそうなくらい質素なものだった。 でも中の居心地は悪くない。オフィスと言っても大きなリビングとキッチン、 それに小部屋が2つといった風情で、Paul達が普段からそこで仕事をする わけではなく、打ち合わせやこういうイベントに使うスペースのようだ。

集まった面子をみて実に不思議な印象を受けた。Paul以外は初めて会うはずなのに、 どうも前にどこかで会ったような気がする顔ばかりなのだ。そうPaulに言ったら、 「みんなHackerだからじゃないの」と言われた。SIGGRAPHの会場もgeek度は かなり高いけれど、その比ではない。

Summer Founders Programの参加者が30人ちょっとくらいだったか。 みんな若い。平均年齢23歳だって。それと、Y Combinatorの4人のメンバーのうち Paul, Trevor, Jessicaの3人。Paulは自転車で、Trevorは一輪車でやってきた。 Robert Morrisは来れなかったようだ。 あとはゲストで投資ファームをやっている人が来てて、途中でトークがあった。

それにしてもやりたいことをやっているNerdが集まるとすげーパワーだ。 そこかしこでひっきりなしに議論していて、ついて行くにはこっちも 頭をフル回転させてないとならない。7時スタートで10時過ぎまで、あっという間に 時間が過ぎた。 ものつくりのセンスの 中でPaulは地理的な「ホットスポット」の重要性について述べているけれど、 あれはたぶん真実だ。この環境なら、少なくとも普段の5割増しくらい頭が回る。 大学院でこんだけ密度の濃い時間を過ごせていたらもう少し実績を残せたかもしれんなあ。

今あなたが学生をやってて、完全燃焼できてなくて不満を抱えているのなら、 挑戦してみる価値はある。日本からの場合ビザの問題があるが、研修という形に すればなんとかなるのではないか。日本で会社設立→Y Combinatorから 投資受け入れ→会社の予算でケンブリッジもしくはベイエリアで研修、 という流れ。Y Combinatorからもらうのは給料ではなくシードマネーだし、 USで作るのは基本的にエンジェルに見せるためのデモだし、 開発したものは日本で設立した会社のアセットになるわけだし、 研修で通りそうな気がする。それならBビザもしくはvisa waiverでいいはず。 ちゃんとしたところは移民弁護士に聞かないとわからないけど。

(2006/07/31 04:57:47 PDT)

LL Ringにリモートで参戦させてもらうのだけれど、 今日は会場の下見とかで、こちらの朝6時からビデオ中継のテスト。 寝過ごすかと心配したけど、まだ時差ボケボケのため逆に早く目が覚めてしまった。 夏の間は、ハワイ-日本の方がハワイ-東海岸より時差が少ないくらいなのだ。 今日も昼過ぎから眠気と戦うことになりそう。

(2006/07/29 21:38:32 PDT)

あの分厚い予稿集を抱えてホテルとコンベンションセンターを往復するのは 面倒だなーと思ったわけですよ。そしたら「紙の予稿集無し (DVD-ROMのみ)」って オプションがあったのでそれで申し込んだわけですよ。 ポータブルなUSB DVDドライブを持ってボストンに乗り込んだわけですよ。 なのに、「DVD製造が間に合わんかった!後で送るから!」って何ですか。

…と一瞬憤慨したのだけれど、今確かめたらACMのDigital Libraryで既に フルペーパーが入手できるようになっていた。な〜んだ。

(2006/07/26 21:35:37 PDT)

「ハッカーと画家」を訳していて、唯一ピンと来なかった章が "Why nerds are unpopular" だった。

自分は間違いなくNerdだったし、決してpopularではなかったが (たぶん変人と思われていたんじゃないかと思う)、 学校は居心地の悪い場所では無かった。いやむしろ、楽しかった。 なんてことを話したらPaulは 「じゃあ、米国の学校が特別おかしいのかもね」と言っていたのだが、 ネットでの感想を見る限り、日本でもあの章に共感を覚えている人は多いようだ。 「スクール・カースト」とか言うらしい。

私の通った学校が変だったのだろうか。確かに中学も高校ものんびり したところではあったが。思い返してみると、むしろカーストが あったとしても見えていなかったのかもしれない。 そもそもクラスというものに参加していた覚えがあまりない。 いつでも、何かしら取り掛かってるプロジェクトがあって、授業中も休み時間も そのことばかりやっていたような気がする (ずーっと論理表書いて回路図引いてたりとか)。 たとえそれがクラス絡みであったとしても(音楽祭でクラスの自由曲を編曲したりとか) それはやっぱり「プロジェクト」のひとつと思っていたんじゃないだろうか。

特に高校では大部分の時間を演劇部で過ごしていたから、たまに 劇部の活動が無くて教室で弁当を食べる時は一人で食べてたな。 あれ、俺、孤立してたのか? 大体そういう時も何かやりながら だったけれど。

自分(達)のやっていることが学校の中だけの価値基準で判断される ことに強く反発していたのは覚えている。「しょせん高校の部活動、 3年間楽しんで、卒業したら懐かしい想い出」、そういうのがすごく 嫌だった。未熟ではあっても、それが「大人」が本気でやるような 「本物の仕事」に連続的に接続しているものであって欲しかった。 高校生としての物差しではなく、プロの仕事と同じ物差しで見てほしいと 思っていた。それがどれだけ不遜な考えだったかはその後思い知る こととなるのだけれど、たとえそれを知っていたとしても、 「高校生としての評価、70点」よりは「実世界での評価、0.01点」 を望んでいただろうと思う。

でもPaulの理屈によれば、それこそがNerdの特質なのではないか。 特定集団内の相対的人気度ではなく、外にある問題を自分がどれだけ 解けるかという絶対的な尺度にこそ価値を見出す、っていう。

-*-*-

結局、そうやってつるんでいた連中のうち幾人かは、本当にそれを 仕事にしてしまった。そうしなかった連中の人生も、多かれ少なかれ、 あの時やっていたことの何らかの延長にあるんじゃないかと思う。

仕事の質、あるいは技術という意味では、あの頃やっていたことは 本物の仕事には到底及ばない。本当にものを知らなかったし、 何をやっても下手糞だった。 けれど仕事に向かう姿勢は、何ら変わっていないように思う。

(2006/07/24 00:21:22 PDT)

うわ。Aeron Chairの肘掛けがいきなり落ちた。 ボルトが折れてる。 さすがに10年使ってるとガタが来るかね。 パーツだけって買えるのかな。さすがに新品と買い替えるのはきついぞ…

(今のはもちろん新品を自分で買ったわけではない。前の会社がオフィスを 畳む時に買い取ったものだ)

(2006/07/01 22:43:38 PDT)

れのぼのX60sが来たのでFC5を入れてる。メモ→ Shiro:FC5 on X60s

 numero rio
More ...