黙ったのはね言葉足りないせいじゃなくて

黙ったのはね 言葉 足りないせいじゃなくて
伝えたい事が多過ぎたからだよ
TRUST IN ETERNITY/水瀬いのり

トラエタはいいぞ.

ゼミ終わりに帰宅しようと電車に乗ったら, 逆方向だったので数駅先で降りて駅前を適当に散歩して何もせずに帰りました. 不意なハプニングも楽しめる人間でありたい.

最近ピアノ熱が再燃しています. 電子ピアノにペダル譜めくり機能がついているのでiPadと繋げてYoutubeにアップロードされているMIDIを落ちてくるノーツにしたもののスクショを撮り, 左足でパラパラめくって練習するのが現時点での自分の中で一番効率が良い方法になっている. とはいえ, 楽譜を読む力が弱すぎるので楽譜で慣れることもしたい. とても簡単なランダムな音が生成されて初見奏の練習ができるアプリないのだろうか.

生活

  • 亀の歩みながらピアノ練習

  • 外出した日は公園の散歩

    • 外が暑い
  • mikanで単語学習

  • 就活: 微進

  • WASI とその実装について調査

    • Issues · WebAssembly/WASI · GitHub ファイルシステムやネットワークに関する機能が使えるようになったらブラウザの外でも活躍されていきそう?
  • 技術記事は息をするように読んでいるが, 書籍は読めていません…

  • レポート書く時に使っていたpandocをコンテナで使うようにした

  • vim, 最近意識的に esc ではなく ^[ を使うようにしている

  • GAN の実装 & 学習をしていた

  • 研の進捗(研究repoにコミットできていない)

  • 技術的な素振りが出来ていない

  • キャリアを考える中でソフトスキルに興味が出たので本を1冊呼んで自分とのdiffを考えたい

  • 『データ指向アプリケーションデザイン』(イノシシ本) 読みたい todo

  • 初めてトレースでも模写でも無いイラストを下書きから塗り, 仕上げまで行った

    • まずは正面アングル && 顔のみの構図に集中する
    • 毎週金曜日ワンドロしてどんなに酷くても内輪に見せることにした
  • イがあまり出来ていない

  • Crafting Interpreters いつかやりたい

  • Kindleセールだったので有名和洋ミステリーを何冊か積んだ

  • xx終わったらyyやりたいが山積している, 一旦今年やりたいことリスト作ってもよいかも

  • 論文のAbstractを読み札にして論文名でかるたしたい

ML系言語の実装について

HM型推論をJuliaで実装する, スクラッチでのコード生成をやりたいのでML系言語コンパイラを実装したくなった. そのために少し調査した.
遅延評価とかどうやって実装するのだろうか

RustでHM型推論を書こうとした

The borrow checker is your greatest friend disguised as a brutally honest tormentor.

言い得て妙

  • まだ Rust らしい書き方が出来ない. self のメンバを関数に &mut で渡したい時に嵌った.
fn hoge(&mut self) {
 if let Some(a) = self.map.get_mut("a") {
                  ^^^^
                  mutable borrow occurs here
            fuga(a)
            ^^^^^^
            cannot borrow `*self` as mutable because it is also borrowed as immutable
 }
}
let ref ref_c1 = c;
let ref_c2 = &c;

等価, let Some(ref hoge) = hoge の時に使うことが多い?

Structural Subtypingを実装する

見たり聞いたり

Rust

ところでRust, まだ初学者なので

  • structに参照持ちたくなるけどそのstructを使っている全ての関数とかenumにlifetime parameterつけて回って結局borrrow check通らなくて諦めの .clone() する
  • 内部可変性パターン 使うが結局実行時にpanicする

をしてしまいがち, もっとRust力を上げたい.

技術

  • git Gitリポジトリ内で自分が書いたコードの行数を数える
    • git ls-files '<glob>' | xargs -n1 git --no-pager blame -f -w | grep <user> | wc -l
  • Kotlin Contract はプロパティの存在保証が出来ない
    • プロパティに対する Contract は書けない(status == Adult ならば job != null であることが保証されるみたいな表現)
    • こういう時はADT(sealed class) を使って Human をより細かくモデリングするのが良いのだろうか
@ExperimentalContracts
fun ensureJobIsNotNull(human: Human): Boolean {
    contract {
        returns(true) implies (human.job != null)
    }
    return human.status == HumanState.Adult
}

misc

Jeff DeanにとってはNPは”No Problem”をあらわす。

vault(メモ集)について

|500

20220207_obsidian から4ヶ月経ち, 段々と Obsidian の使い方が確立されてきた. vaultもより有機的になってきた.

|500

記事を noteview に分類した. 前者は特定の概念(ex. りんご)自体の言及をし, 後者は1つ以上の概念に対しての言及や1つ以上の概念のある切り取り(ex. りんごの皮の剥き方)についての言及をする. 例えば, 日々のlifelogやブログ記事は view である. noteEvergreen note にさせるのが目的なのでactiveであるが, view はただのsnapshotなのでなるべく note にbacklinkを張ることで情報を死蔵させないようにするのが理想. しょうがないことではあるが, view に記述されている情報は重複してしまうのが問題, 埋め込み ![[]] を使いたいがObsidian以外のviewee(ex. ブログ)が対応していないのが問題.

あと, Obsidian はimplicit backlinkを貼ってくれるが, 例えばブログ上ではリンクにならないので, explicitなbacklinkを積極的に書くべきかは検討中.
vaultstat GitHub Actionsで定期的に通知させたいな.

娯楽

アニメ

  • anime かぐや様は告らせたい3:6

Youtube

その他

  • スタートアップ シーズン1 (字幕版) Prime Video
    • 最近夜寝る前にAmazon Primeで観ている
    • 『シリコンバレー』みたいなギャグ寄りな雰囲気かと思ったらクライム・サスペンスだった
    • 何もかも上手くいかないので全然起業しない. 全員ギリギリを生きていてスリリングで面白い.