kanejaku.org

やれることをやる - 2021/01/19

19 Jan 2021

shinh さんが Message Passing に登場している!いちファンとして嬉しい。

一方で心がざわつく話題でもあった。ハイテクなこと、10 年以上プログラマとして働いているのに一度もやれたことがない。理由は自明で、単にやれる能力がないから。仕事に限らず趣味コードでも技術的にすごいものを書けたためしがない。ワナビーとしてハイテクには憧れるけれど、できないことをやろうとしてもストレスが溜まるだけなので、自分は自分のできることでほそぼそとやっていこうと言い聞かせている。

葛藤といえば最近偶然見かけたある Ph.D. thesis の個人的な振り返りが印象に残っている。冗長で繰り返しも多い。でもその分思いが詰まっていて読ませる文章だった。やれることはやったから、と誇りを持っている姿勢に共感している。(この貢献が研究と呼べるのか、という問いについて思うところはある。けれど本文をちゃんと読んでいないし、著者が解さないと思われる日本語で言及するのはフェアじゃないので止めておく)

Starting 2D sculpting

11 Jan 2021

One of my 2021 resolutions is to be creative.

I’ve been actively developing my own retro game console emulators. That’s fun and I still enjoy it, but I also feel that I’m just reiterating what other people do.

Playing retro games on my emulator motivated me to draw my own pixel art. Learning to draw seems like a good activity to be creative. Around last fall, I bought a tutorial book, Pixel Logic, and took a quick look at it. It was so good. I had (still have) no idea about drawing but it gave me a nice overview on how to develop pixel art skills.

Very first Pixel
One of my initial attempts

I don’t think I can draw good pixel arts like we can find in r/PixelArt. Still I think I could be able to draw icons for my private tools/softwares like the emulator.

Message Passing が面白い

8 Jan 2021

Message Passing - はなしをふったりふられたりが面白い。コラムを読んでいるよう。次の話題がささやかな楽しみになるような、そんな感じ。

雑多に反応を書いてみる。バグや言語の話にも反応しようかなと思ったけれど、ちょっと重くなりそうなので別の機会があれば。

エディタ

自分は仕事では Emacs を使いそれ以外の趣味コードやブログ書きには VSCode を使っている。パンデミックが始まってすぐは VSCode の remote development でコードを書いていたが、自分が触るコードベースで使うには富豪的すぎる感じがして使うのをやめてしまった。ちょこっと変更しただけで、裏で数十 GB のメモリを使い 64 コアをぶん回しているのを見ると、なんとなくエコじゃないな、と。

Emacs 使うのやめたかったので仕事以外で Emacs を捨てられたのは大変良かった。Emacs を捨てられなかった主な要因は ripgrep + wgrep だったのだけど、 一年くらい前に入った Search Editors とそのキーバインドを設定できる変更が入ったおかげでほぼ同等のことができるようになった。

VSCode 基本的には満足しているのだが VSCode を使うようになってマウスを頻繁に使うようになってしまったのをどうにかしたいと思っている。キーボードだけで操作を完結させたいのだけど、まだやり方を模索している。

Vim と Emacs はたまにネタにされるけれど、Google トレンドを見れば両者の趨勢は 10 年ぐらい前には決まっているのが分かる。Vim はその独自の価値から今後も一定のユーザが居続けるだろうけど、 Emacs は(ずっと生き残るだろうけれど)新しい人は入ってこないだろうし利用の推奨もされないだろうな、と自分は理解している。

読み物

Slow Software

仕事で親しんでいるのもあって自分はやっぱり Applications のセクションに興味が向く。RAIL が参照されているけれど、以後、さまざまな試行錯誤を経て今は Web Vitals という指標を掲げている。Web Vitals ユーザ視点でレイテンシに着目した指標になっていて、かつ計測可能という点で良い指標なんじゃないかと思っている。記事の推奨レイテンシの上限と FID の目安が共に 100 ms になっているのは偶然じゃないんだろうな、と思った。

ディスプレイの遅延については、表示遅延と応答速度って違うんだよ、と解説している記事をふと思い出した。自分には差を認識できる気がしないが、ゲーマーの人たちにはある程度影響するのかもしれない。

*OS Internals

以前の版を電子版で購入して読んだ記憶がある。Jonathan Levin の本は編集を通していればもっと良い本になるんじゃないかな。ちょっと記憶があやふやだけど、初版とかは出版社経由で出していたはずで、その版は良く書けていた印象がある。

本の付録?としていろんなツールが提供されていて、特に procexp は以前メモリ周りの仕事をしているときに参考にさせてもらった。MacOS の memory pressure handing が workaround だらけで辛かった記憶が思い出される。

BPF Performance Tools

みなさん読んでいて感想もそれぞれ微妙に違うのが面白い。自分は最初のいくつかの章を読んで止まっているので、ざっと目を通しておきたい。


こういうプログラマが書いたコラム的な文書を見かける機会が減った気がする。

技術の話題を中心にしつつ、なんらかの情緒を感じられる、心が乗っている文章が自分は好きなんだな、と思った。

ふと思い出したようにBK ノートを読み直す。

2021年 正月休み

4 Jan 2021

帰省することが叶わなかったので令和三年の年明けは自宅でのんびりと過ごす。正月に帰省しなかったのは人生で初めてだったのでやや寂しい。

近所のスーパーで正月っぽい食べ物を買ってきて雰囲気を出す。黒豆は自分で煮てみたのだけど、ちゃんと美味しく煮ることができた。

技術書典 10 で同人誌を二冊買ったのでざっと目を通した。

一冊目は「DAW・シーケンサーエンジンを支える技術」の第二版。音源のエミュレーションをするのに役立つ知識があるかな、と思って買ってみた。ニッチな話題を扱っているけど、初めに対象読者が明確に定義されているから書き手と読み手の期待値がずれることはなさそう。自分は VST などのプラグインどころか DAW も触ったことがないので明らかに対象読者ではなかった。実際出てくる固有名詞がほとんど分からない、といった感じだったけれど、概念的なところは意外と理解できる部分が多かった。エミュレータを実装する過程で苦労した部分と本質的に重なる部分が多かったからかもしれない。逆に言えば、ある程度コードを書くなりして苦労した経験がないと本書の内容を読み進めるのは難しい気もする。全体的には知らない世界への俯瞰的な見方を与えてくれた一冊で満足度が高かった。

二冊目は「3D グラフィクス API Vulkan を出来るだけやさしく解説する本」。こちらは頑張って中ほどまで読み進めたが途中で止まってしまっている。これは自分の、Vulkan から 3D グラフィックスに入門しよう、という見通しが甘かっただけで、本書に非はない。むしろ本書は良く書かれていて、予備知識をあまり必要としないし、個々の API がなぜ存在するのかといったあたりも軽く触れられていたりする。この手の本、とくに和書は「どうやって」は説明するけど「なぜ」を説明しない本が多いのだけど、この本にはそういった不満を覚えなかった。一方 Vulkan に対しては複雑な印象を持った。自分は API の本質を、抽象化を通して「出来ることを制限すること」で「有用な概念を提供すること」だと思っている。Vulkan はそれを諦めているように思えてしまった。低レベルな API なのは過去の反省を踏まえた意図的なものであると本書の冒頭にも説明があるし、実際その通りなのかもしれない、とは感じたが、自分みたいに 3D グラフィクス全く分からない勢としては素直に OpenGL を勉強したほうがいい気がした。

2020年の振り返り

31 Dec 2020

世の中的には大変な一年だった。個人的にも停滞したなあ、というぼんやりとした感覚が残る一年だった。12 月に入ってからは原因が分からない無気力状態に陥ってしまい、何もできなかったのもあって余計にそう感じるのかもしれない。

趣味コーディング

相変わらず晩酌をしながらコードを書く時間が一番楽しい。すぐに気が散ってしまって込み入った思考ができないことが多く、今年は思ったような出力ができなかった。それでも可処分時間の大部分をコードを書くのに使っているのでやったことをつらつらと書いてみる。

今年は主に NES エミュレータの完成度を上げていた。対応マッパーを増やしたり、VRC6とかの拡張音源をサポートしたりしていた。ステートセーブやエミュレーション速度変更などの機能も実装したので普通に遊べるレベルのものができた。自作のエミュレータで FF3 や悪魔城伝説をクリアできたのは良い思い出になった。副作用としてスーパーポテト秋葉原店に足繁く通うようになった。

ff3-screenshot
制作過程の一コマ: バンク切り替えをミスると censored みたいになって楽しい

minimp3 を Emscripten 依存無しで Wasm 化したりもしていた。これを使ってポッドキャスト再生 Web アプリを作ろうと思っていたけれど、作り始める前に WebCodecs が使えるようになってお役御免になるかもしれない。

去年作った Chrome Mojo IDL の Language Server を書き直して公開した。時間が取れたら async/await ベースで書き直すのと、最近追加された Semantic Tokens 対応をしたい。

ここ 1,2 か月はスーパーファミコンの音源を AudioWorklet として実装している。全く動かない日々が続いてしんどかったけれど、ようやくある程度音が出るようになった。Desktop PWA 化して作業中の BGM プレーヤとして使えるようにしたい。

最近の趣味コードはほとんど Rust で書いていて、だいぶ手になじんできた感じがある。

読書

去年の振り返りで読書量を増やしたいと書いていたけれど、今年もそんなに読めなかった。特に物語を読む時間をとるようにしたいなあ。

Snippets

日々の記録を取るのは継続できている。こうやって振り返りを書くときに便利だ。来年以降も続けていきたい。

仕事

三月の中旬ぐらいまでは会社へ行っていた。それ以後はずっと家からリモートワークしている。朝、昼、夕の決まった時間に散歩をするのを継続したので生活のリズムを保つことができた。これは良く機能したと思う。パッチ数や書いた design document の数といった出力だけみると生産性に大きな変化は無かったようだ。最初はかなり抵抗があったけれど、時間を柔軟に使えるし家から働くのもそんなに悪くないかもしれないと最近は思っている。ただでもオフィスが開いたら自分は出社するかな。家にずっといると retreat できる場所がなくて、それが結構ストレスになっている。年末に燃え尽きたのはこれが原因かもしれない。

仕事のやり方も変えていかないといけないなと感じているがこちらは上手くいっていない。これまでみたくオフラインでの議論は難しい。質問や分からないことがあったら、チャットを飛ばして即興の VC を始める、ぐらいのフットワークの軽さが必要だ。来年はここを改善したい。

春から夏にかけてインターンのホストをした。時間を無限に吸われて大変だったが、とても良い経験だった。自分のたどたどしい英語をインターンの学生さんが根気よく聞いてくれたおかげで、技術的に込み入った内容も少し説明できるようになってきた。付き合わせてしまった学生さんには申し訳ない気持ちもあるけれど、自分も学生さんの成長に少しは手助けできたかな、とも思っている。

プロジェクトとしては service workers のストレージ部分を out of process 化する、というのをずっとやっていた。このプロジェクトに対して自分は銀座線の改築みたいな感覚を持っている。自明で小さな変更を少しづつ加えていきつつ、最終的には大きな改修をする、といった感じ。実践できているかどうかは分からないけれど。年内に終わらせたかったが来年に持ち越してしまった。

英語

仕事で継続して使うので最低限のレベルは維持している。意思疎通するという意味では去年より上手くなったと思う。一方、昔覚えたけどあまり使わない単語や文法を忘れているのを実感することが多くなった。純粋な英語力は下がりつつあるけど運用や workaround でカバーしている感じ。

思えば 2018 年に通っていた英会話のレッスンは英語力向上にすごく役立った。あのときの反復練習で得た蓄積でやりくりしている実感がある。英会話レッスン、再開しようと思いつつ、腰が重くて再開できていない。

散歩

去年の秋ぐらいに Fitbit を買ったので記録が取れるようになった。今年は 800 万歩ぐらい歩いたらしい。人込みを避けた結果、早朝に長距離歩くようになった。

体型を維持しなければという強迫観念が強すぎるきらいがあるので少し歩く距離を減らそうと思っている。

来年の抱負

昨年と同じく細々としたものはやっているものの、難しいことをあんまりやれなかった一年だった。来年は難しいことを理解して出力することに時間を充てたい。

Frobbing - 2020/11/25

25 Nov 2020

This week I tried not to see the Internet as much as I could.

I was reading a document that was written by a programmer back in late 2000. I came across a word which I didn’t know of. I’ve seen the word several times in the past years. I thought it’s a signal that I should know the meaning of the word. I searched the web.

The word was “frobbing.” The urban dictionary explains the word as “to spend time on a computer surfing the net.” Ths was what I was trying to avoid.

I felt the irony.

Aside: According to the Jargon File, “frob” also means to tweak. Tweak is one of the words I use frequently in commit messages. The document seemed to use the word in that sense.

5 PM - 2020/11/17

17 Nov 2020

My desk is set up on the window side.

I was waiting for a long compile. I gazed absently out of the window. I saw a beautiful moon in the twilight.

2020/11/16

16 Nov 2020

ホームレスの人たちを新鮮な目でとらえる意見を見聞きした。引っかかりを言葉として残す。

書かれた感想は見知らぬ人々の生活を目にした率直な反応だろう。

今の自分の住処はホームレスが多い地域だ。自分は日常的に彼らを目にする。彼らがどういう立ち振る舞いをするのかだいたい把握していると思う。おおなるほど、とか思うことは確かにある。でもそれはあくまで日常だ。冬の時期に道端に落ちている手袋を見つけて、おや?、みたいな、そんな感じに近い。

公園や河川敷を散歩していると、ときどき彼らに炊き出しをしている場面に遭遇する。写真撮影しないで欲しい、という看板を立てている。好奇の目にさらされるのを避けていると自分は理解した。

彼らをコンテンツとして消費していないか。大多数の彼らやその支援者はそれを望んでいないのに?違和感はそこからきている。

2020/11/12

12 Nov 2020

I’m trying to decode SNES BRR.

The waveform above in the figure is the output of the library I’m referring to. The below is the output of mine.

Mine sounds like what it sounds, but I hear a lot of noises. The figure shows the difference clearly. The next step is to figure out where the noises come from.

ピクニック - 2020/11/08

9 Nov 2020

ふらっと出かけるピクニックはいつも楽しい。