標高+1m

Don't be rational

クラックリング -- パーカッシブなジャグリング

f:id:ympbyc:20160107133932j:plain
crackle balls

こんにちは、クラックラーのノリです。今日で26歳になりました。

今日は新しい遊びを発明しました。

木製の密なボールでパームジャグリングをするといい音が鳴ったので、リズムを作るようにわざと音を鳴らしてみた。

これがクラックリング:

youtu.be

ボールにアクリル絵の具を塗って、半乾きの状態でクラックリングすると、クラックルボールができる。

流行ってほしい!

パーカッシブなジャグリングには、Chuka chuksという先輩がいる。そちらも面白い。

https://www.chukachuks.com/

Jongler à Foix

balls

仕事でパリ、ライデン、フォワに行ってきた。

フォワはフランスのピレネー山脈の麓の町で、古いお城がある。 仕事が終わってから1日あったので、ジャグリングをした。 通りでやっていたらギターを持った男がきて、音を鳴らしてくれた。

Thank you everybody.

動画: youtu.be

最近ジャグリングを再開していて、ちょくちょく短い動画をinstagramに載せています。

www.instagram.com

S式しか書きたくない

ult screenshot

I want to only write S-expressions.

どんな言語もS式から浅くトランスパイルして書けば、とりあえずマクロは使い放題になる。

Any language, if you write it through a thin transpiler from S-expression, will have true macros.

リストとマクロさえあれば、あとははっきり言っておまけみたいなものだ。
といっちゃあ言い過ぎか。

If I have lists and macros, everything else seem like a small treat. Maybe that's too bold a thing to say.

マクロとCLOSでうまいことトランスパイラを書く工夫をしている。 その途中のメモ。

I'm figuring out a neat way to write those thin transpilers in CL using macros and CLOS.

ともあれ、今こんなことをしている場合ではないのだ。

But I really should not be doing this now. As you can probably tell.

gist.github.com

会話するLISP

スケッチ

ソバの脱穀

9月頭に蒔いたソバに無事実が付き、刈り取って干していた。 昨日きれいに晴れたので庭で脱穀をした。

最近電子工作クラブの中学生たちと遊んでいるminetest(マイクラクローン)の農業Modで、スノコ的なものに叩きつけて脱穀することを学んだので、笊に叩きつけてみることにした。

うまく取れたけど葉や茎が混ざったので、今度風で飛ばす。

1年目なので無理せず庭で育てたら、羽釜一杯分しか取れなかった。蒔いた分より増えたからよし。来年は山の畑で1年分作るぞ。

f:id:ympbyc:20181229024534j:plainf:id:ympbyc:20181229024543j:plainf:id:ympbyc:20181229024526j:plainf:id:ympbyc:20181229024551j:plain

今年は庭でいつでも焚火ができるようにしたのが嬉しい。燃料は前の川で流木を拾える。

LispマシンMirai

mirai screenshot

この記事は lisp Advent Calendar 2018 の25日目に書かれました。

メリークリスマス!

一月ほど前に、ワイヤードを漂っていたMiraiのバイナリをうっかり手に入れてしまったので、 環境を作って少し遊んでみました。*1

CG制作統合開発環境Miraiのコードベースは、1980年代のSymbolicsで作られたS-Graphicsに端を発します。S-Graphicsは92年にニチメングラフィックス(旧:日本シンボリクス,現:NGC)に売却され、IRIXとWindows NTに移植されてN-Worldになり、これを下敷きにしてMiraiが作られました。現在はIzWareが権利を保有しています。Miraiのリリースが1999年なので、20年前のソフトウェアということになります。

symbolics
嗚呼憧れのSymbolics

ここら辺の事情は、Practical Scheme WiLikiのLisp:Geometryの項目を参照してください。

簡単に機能の一部を紹介すると、

  • Geometry: Winged Edgeポリゴンモデラ
  • Painting: テクスチャエディタ
  • Animation: アニメーションエディタ(スケルタル、ディスプレイスメント、スクリプトなど色々使える)
  • UV Editing: UVマップエディタ
  • 3D Painting: モデルに直接色が塗れる

ソリッドボディやゼリー状の物体の物理シミュレーションなども行えるようです。

Miraiと言えば映画Lord of the Ringsのゴラムのモデリングに使われたエピソードが有名ですが、この記事ではモデラとしての側面ではなく、Symbolicsから連綿と受け継がれてきたLispマシンのバイブスに注目します。モデラに興味がある方は、Wings 3Dを使ってみるとよいかと思います。

MiraiはAllegro Common Lisp 5.0のACL Runtimeの上で動いています。面白いのが、裏にLispのリスナがいて、タスクトレイのアイコンのコンテキストメニューからInterrupt Lispを選ぶだけで、簡単にアクセスできてしまうことです。

他にもなにかしらエラーが発生したときに出るダイアログのDebugボタンなどから、すんなりとLispリスナに落としてくれます。

mirai error dialog
エラーダイアログ. CLのリスタート機能が生かされていて、よくあるOKしかないダイアログよりずっと柔軟.

common lisp listener for Mirai
リスナ

REPLが繋がっているというのは、そんなに珍しくはなくて、例えばBlederではPythonコンソールが使えたりしますが、Miraiのリスナのすごいのは、これがMiraiのプロセスそのものだというところです。

単純にスクリプティング用にAPIが提供されているというのではなく、動いているプロセスの実装そのものであるところの生きたオブジェクトがウヨウヨいる海を自由に泳ぎ回ることができます。CLOSのMOP等も使って、アプリケーションを実行中に内側から好きなように改変できてしまうという魅力が、上記WiLikiのLisp:Geometryにて存分に語られています。

さてこのリスナ、そのままだと使いづらいのですが、ACLEmacs連携機能を使って、Emacsに繋いで使うことができます。Miraiに付いてきたelispはEmacs20用のものでしたが、数か所書き換えたらすんなり動きました。ネットワーク越しに繋ぐので、ローカルでもリモートでもいけます。

Mirai on winxp talking to NT Emacs on win10
ホストOS(win10)上のNT EmacsとゲストOS上のMiraiを繋いだところ

こうなるともういつものLispハッキングと変わりません。ACL Runtimeは、dumplispやdisassembleが無いのと、ドキュメンテーション文字列が皆無でdescribeも大して役に立たないことを除けば、普通のAllegro CLです。*2

準備が整ったら、どんどん式を評価していきましょう。

aproposでどんな手続きが定義されているかは探れるのですが、describeがまるで役に立たないので困ります。

usless describe
役立たずのdescribe

N-Worldのオンラインドキュメンテーションを公開してくれている方がいるので、それとにらめっこすることになります。以下のリンク先のWide Open World Programmer's GuideにLispの情報が載っています。N-Worldのものですが、Miraiと高い互換性があります。 N-World 3.0 Online Documentation

全然大したことはしていませんが、動画を撮りました。のんびりご覧ください。ほんとはかっこよくboidsでも飛ばしたかったんですが、Lispエイリアンのモデリングで力尽きてそこまでいけませんでした。

www.youtube.com

Lisp界隈だとライブオブジェクトプログラミングという言い方はあまり聞きませんが、開発と実行が分かれていない環境はやはり楽しいし、オブジェクトの数が多ければ多いほど、ソフトウェアが複雑であるほど面白いように思います。こんなソフトウェアが増えればいいなあ。

Lisperならこんなに面白いおもちゃもなかなかないんじゃないでしょうか?うっかり手に入れちゃった人は遊んでみましょう。

just ask

*1:ほんとはN-Worldが欲しかったのですが、NGCも持っていないそうなのでMiraiで我慢します。N-World持っている方ぜひ譲ってください。

*2:実はdisassembleしたくてFranzにACL 5を安く売ってくれないか掛け合ってみましたが、ライセンスの発行にエンジニアを動かす必要があるとのことで、だめでした。ACL 10 Professionalの値段を出せば買えるようです。