Monthly Archive for March, 2008

話すというアウトプット

今年に入ってから、3回のLTをやってきました。

話してみて思うのは、話すというアウトプットの密度の濃さです。

これまでにやってきたアウトプットは、調べたことやつくったものをブログに書くということでした。 そうしたアウトプットと話すということを比べると、消化した感がだいぶ違います。 何かについて取り組んだたら、ブログで公開して、プレゼンで話してやっとそのネタについて卒業、と。話してみてはじめて理解できる、とも言える。 それはなぜかな、と考えてみたら:

  • 人前で話すためには対象をきちんと理解していないといけない。たくさんの咀嚼が求められる
  • 文章を書くときと話すときとではアタマのつかいかたが違う。話すときには頭をフル回転させてる
  • 話すのは緊張する。けど、自分の言葉がほんとうに人に聞こえてるのを生で見ることができる (ブログだとそうはいかない)。それがうれしい

ということなのかな、と。

自分の理解のためにも、人に考えを広めるためにも。 指を動かしてキーボードを叩くだけではなく、口で言葉に出そうよ! どんどんあちこちに出ていこうよ! というお話でした。

第三回Award on Rails LT で話してきた

第三回Award on Railsライトニングトーク にお呼ばれしたので、話してきました。ありがとうございます!

RailsといえばイントラBTSもどきくらいしかつくったことがないぼくが、Railsの会に行って何をしゃべるのか。実際なかなかのアウェイっぷりでした。しかもネタがニッチ。 2007-11-14 に書いたRubyでTwitter bot を書く というエントリをベースに、デモを加えて話しました。

伝えたかったこと

  • JabberでつくるとAPI制限なくていいよ
  • Webアプリのメール通知はうっとうしい → IMで通知 (Jabber) がもっと広まればな

よかったこと

  • daisakuさんと話せた。List共有のつくりこみを3週間で、ていうのはすごい
  • technohippy さんのcrayon physicsプレゼン。ライブラリはオープンになってるとか。使うしか
  • negipo さんと話せた。可視化とかエロギークとか。優秀なひとオーラがあった
  • クックパッドのCTOの人と話せた。Railsでお仕事してる人たち、と初めて話せたんじゃなかろうか。「毎日たのしいよ!」とにこやかだったのが印象的
  • ごはん激うます

その他

  • これからは祇園バレー
  • みんな若い

クックパッドのオフィスはマンションの一室。キッチンがすぐ横にあっていい匂いがする素敵な場所でした。仕事しにいくといいんじゃないかな。おいしい料理も食べれるし。

ふだんとぜんぜ違う人たちに交わると、ものを見る目をまたひとつ獲得できる気がします。みんなどんどん外に出ていくといいよ!

1000speakers:3 : どこでもゆびピアノ++

1000speakers:3 名札

1000speakers:3 で話してきました。 ゆびピアノとGainerをくっつけた、どこでもゆびピアノ++というネタでした。


ゆびピアノという旬なデバイスを、いち早くハックして発表できてよかった。 こういうネタは鮮度が命ですよね。

LTネタをずらっと並べて、聴衆に選択してもらうスタイルでやろうという腹づもりでした。 しかし、焦ってしまって、すぐにゆびピアノネタで話はじめてしまいました。いかんいかん >< 話さなかった他のネタについて聴きたい人は、何かの機会に僕をつかまえてください。 いちおう全部の資料は用意してありました。

気をつけたこと

せっかくライブでしゃべるのだから、ライブでしか体験できない何かをしようと思ってました。 リア充ですね。

1. フィジカルプレゼン

コードだけじゃなくて物理的に存在するモノを動かして発表するというスタイル。 みんなGainer買うといいよ。

2. 小咄

プレゼンの定石である、背景→問題点→解決方法→まとめ というのを、ドラえもんメソッドでやってみました。

ドラえもんメソッドとはなにか

ドラえもんのストーリーは、

  1. のび太が泣きながら帰ってくる (つかみ)
  2. ドラえもんが話を聞いてやる (問題提議)
  3. ドラえもんが四次元ポケットから道具を出す (解決方法)

というものです。おや、これってプレゼンにつかえるんじゃない? と。 会話形式でやることで、聴衆に興味を抱いてもらえやすくなると考えたのです。

さいしょスライドはドラえもんのAAでつくっていたのですが、どうも著作権的にアウトぽかったので、 前日の夜に急いで2chのAAに差し替えました。ちょっとインパクトは下がってしまいましたが、致し方なしですね。

ドラえもんメソッド、つかってみてはどうでしょうか。

よかったこと :)

  • それなりに笑いはとれた。
  • おお、と思わせることができた。One More Thingというメリハリ。
  • Psychsさんの隣の席で、あれこれ話せた。惚れた。僕があと12歳若ければ、恋に堕ちていただろう。
  • よしおかさんに宴会でコードリーディングについて聞いた。でかいコードは動的な読み方が最速だよ、というのに同意。
  • レオさんと、分業についてトークできた。最終製品にみんなが責任を持つためには、というテーマ。
  • Yuyarinにおともだち認定された。いぇい

一発ネタとしてはまずまずだったかな、と。

反省 ><

  • 緊張のあまりコードを断線させてしまい、プレゼンを中断してしまった ><
  • せっかくライブ演奏してるのに、手元が見えてない。カメラのアングルを調べておくべき ><
  • 滑舌がわるい ><
  • もっと聴衆を見て話すべき ><
  • 「で」でスライドをつなげてしゃべってる。はっきり区切るべき ><
  • 「〜わけですよ」大杉 ><
  • 小咄ではもっとなりきるべきだった ><
  • 宴会でもっとたくさんの人と絡みたかった ><

言い忘れてたこと

  • 英語重要。高校生のひとたちは、クルマの運転免許取得につかう30万円をもってそのままマンツーマンの英会話学校に通うべき。
  • エンジニアはドラえもん。四次元ポケットからどんなコードでも出せるよ。

感じたこと

自分をアイデンティファイするものを、はっきりさせよう。 ぼくはこういうものです、という何か自分の代名詞となるものを、しっかりとつくっていこう。 すごいプログラマになる !


話してみて、こうやったらよかったなー、と気づいたことを、 1000speakersのWikiに書いておきました。 書き足していくといいんじゃないかな。

次回は4/26です。みんな話しにいくといいよ!

関連

先行事例が2つありました…

Gainer++ その2

昨日のつづき。 今日のコミットで、以下の動作が確認できました。

  • コンストラクタでのモード切り替え
  • アナログ入力
  • デジタル入力

アナログ入力の確認中に、どうも値がヘンなことになってて30分くらい悩んだのですが、参考書によると、アナログ端子はアンテナみたいになるので値が不定になるよ、とのこと。そんなことも知らない素人です。

gainer-ruby のコードでは、デジタル入力が1ポートしか取れないことになっていたので、ビット演算したりして4ポートぶんとれるようにしました。

それにしてもプロトコルの仕様が知りたいよ、とうろうろしていたら、ちゃーんと公開されてました。さすが。ちゃんと調べなきゃですね。

Gainer++ – GainerをC++から使う

Gainerを、C++から使えるようなラッパを書いています。 Rubyから扱えるgainer-rubyのコードをC++に書き移して、Gainer++としてCodeReposに登録しておきました。コードはこちら

まだI/Oポート周りのコードを移していないのですが、Gainer I/OモジュールのLEDを点灯させるサンプルプログラム (gainer-rubyのページにあるもの) は動いています。(gainer-led.cc)

せっかくより書き易いRubyのライブラリがあるのにC++で書くなんて逆行してるよ! と自分でもつっこまざるを得ないのですが、Gainerをより低レイヤ (CoreMIDIとか)と連携させてみたい、というのが動機です。

つかったりコード直したりしてみてくださいね。

関連

Aipo4 on Debian etch

Aipo4というオープンソースのグループウェアがなかなかいかしてます。 Linux版のインストーラは、RedHat系のものしか用意されていないんですが、Debian etchなマシンにインストールできたのでやりかたを書いておきます。

1. パッチあて

aipo4-debian-patch を展開して出てきた installer-debian.patch を、aipo/bin/fc にて

# patch -p0 < installer.sh-debian.patch

のようにしてあてます。下に貼りつけときますが、やってることは単に必要なrpmがインストールされてるかどうかのチェックをコメントアウトしてるだけ、というもの。

2. 必要なライブラリのインストール

libreadline-dev, zlib1g-dev が必要ぽいので、apt-get install しておきます。

3. install

# cd aipo/bin/fc && sh installer.sh

でOK。


と書いてきましたが、まとめるほどのことではないですね。コメントアウトしておわり。簡単ですね。

パッチ

--- installer.sh.orig	2008-03-10 14:45:28.000000000 +0900
+++ installer.sh	2008-03-10 14:46:36.000000000 +0900
@@ -183,31 +183,31 @@
 
 rpm -qa --qf "%{GROUP},%{NAME}\n" > $path/bin/rpmlist
 
-tmp_str=`cat $path/bin/rpmlist | grep readline-devel`
-
-if [ "$tmp_str" != "" ]; then
-	echo "checking readline... ok"
-else
-	echo "checking readline... error"
-	check_str="ERROR"
-fi
-
-tmp_str=`cat $path/bin/rpmlist | grep zlib-devel`
-if [ "$tmp_str" != "" ]; then
-        echo "checking zlib... ok"
-else
-        echo "checking zlib... error"
-        check_str="ERROR"
-fi
-
-
-if [ "$check_str" != "AIPO_INSTALL_OK" ]; then
-	if [ "$1" != "check_pass" ]; then
-		echo "Aipo$aipo_versionのインストールに失敗しました"
-		userdel -r ${postgres_user}
-		exit 0
-	fi
-fi
+#tmp_str=`cat $path/bin/rpmlist | grep readline-devel`
+#
+#if [ "$tmp_str" != "" ]; then
+#	echo "checking readline... ok"
+#else
+#	echo "checking readline... error"
+#	check_str="ERROR"
+#fi
+
+#tmp_str=`cat $path/bin/rpmlist | grep zlib-devel`
+#if [ "$tmp_str" != "" ]; then
+##        echo "checking zlib... ok"
+#else
+#        echo "checking zlib... error"
+#        check_str="ERROR"
+#fi
+
+
+#if [ "$check_str" != "AIPO_INSTALL_OK" ]; then
+#	if [ "$1" != "check_pass" ]; then
+#		echo "Aipo$aipo_versionのインストールに失敗しました"
+#		userdel -r ${postgres_user}
+#		exit 0
+#	fi
+#fi

deadbeaf.org 不調

どうも Mac mini から異音がしてます。度重なるブレーカダウンによるクラッシュでHDDがダメになってきてるぽい。

deadbeaf.org と trac.deadbeaf.org はしばらく見れない状態になってるかもしれないです。QSTwitterのダウンロードができなくなってます。ご迷惑をおかけします。blog.deadbeaf.org, en.deadbeaf.org はだいじょうぶ (別サーバで動いてるので)。

1000speakers:3

再来週にある1000人スピーカプロジェクト 第3回 で話してきます。滑りこめてラッキー。

ネタは隙間産業的プログラミングとかWorking Effectively with Legacy Teamとか、いろいろ考えてます。なんにせよ、いまから2週間でなんかつくろう。プレゼン駆動開発ですね。


Working Effectively With Legacy Code
Michael C. Feathers
Prentice Hall (2004/09/16)
売り上げランキング: 6142

infowi.se

QSTwitterエントリを読んでくれた異国の人が、プロジェクト一緒にやんない? と言ってきてくれたので、やってみることにしました。infowi.seというプロジェクトです。これによると、ヨーロッパ人 x 1、アメリカ人 x 2、日本人 x 1 という混成部隊。

まだいろんなことが分からなくて五里霧中のまっただなかにいますが、なんとかひとつずつやっていこうと思います。 失うものはないのだから、やるだけやるしかない、ですよね。

TopCoder::SRM::392

ここのところずっとRatingが下がりつづけていたので、挽回したいところでした。

  • 250pts : とってもEasyな問題。ささっと解いて237.15pts。
  • 500pts : 2つの文字列でワイルドカードの処理をする問題。40分くらいかけて書き、テストケースをぜんぶ通してsubmit。なんだけど、Challengeされて陥落。0pts。
  • 1000pts : むずそうなので手つけず。こういうシンプルだけど頭を使う問題を考えつくのってすごい。

けっきょくChallengeもできずに250ptsを解いただけの237.15ptsでした。Room 6位でRatingは821→871と50pts up。まだ色無しコーダーです。しょぼいなー自分。

Room結果


TopCoderは、コードを書くだけじゃなくて読む力をつけることのできる場でもあると思いました。 Challenge phaseでは殺伐と他人のコードのアラを探し、試合終了後はハイレベルなレッドコーダーのコードを見て勉強したり、と。 ライブコーディングというか、できたてほやほやの良質なコードに触れることのできる良い機会だと思います。 みんなぜひ! そして僕より先に行かないでー。