Episodes

  • カーネギーメロン大学の客員研究員として明日から赴任するるくすくんと、コンピュータのセキュリティや、システムズ系のコンピュータサイエンスの論文などについて話をしました。

    出演者: るくす (@RKX1209)、Rui Ueyama (@rui314)

    https://turingcomplete.fm/31

    ハッシュタグは#tcfmです。

    TCFMはサポーターの投げ銭によって収益を上げています。このコンテンツに課金してもいいよという方はぜひクリエイター支援サイトPatreonから登録してご協力ください。

    イントロ (0:00)カーネギーメロン大学に明日から行きます (0:47)Samsung Galaxyのシリアルコンソールを有効にするハードウェアの裏技 (9:00)iPhoneではアンロックしてから1時間が経過するとUSBデータ通信が完全無効化される (16:00)メモリアクセスのときに放射される電磁波ノイズでラジオを鳴らす (17:30)初代XBoxのメモリバスをタップしてデータを取得 (18:54)るくすくん作成のNintendo Switchエミュレータ公開されました (22:00)Nintendo SwitchにAndroidを移植 (26:10)Linus、他人に対する振る舞いを改善するために一時的に公的な立場を退く (27:50)るくすくん、Kernel/VM関西というイベントを主催 (34:06)x86ネイティブコードを安全に動かすNaCLの論文 (36:30)4KiBページを自動的に2MiBのスーパーページに昇格するというFreeBSDの機能 (44:57)Hans Boehmの「スレッドはライブラリとしては実装できない」という論文 (50:20)カーネギーメロン大学における生活 (55:59)エンディング (59:46)iOSのUSB制限モードMacbook system bus radioるくすくんのSwitchエミュレータNative Client: A Sandbox for Portable, Untrusted x86 Native CodePractical, transparent operating system support for superpages (PDF)Threads Cannot be Implemented as a Library (PDF)
  • セキュキャンのCコンパイラ自作コースが無事に終わりました。共同講師だったhikaliumと一緒に、コンパイラ自作の要点やコンピュータサイエンスの教え方などについて振り返りました。

    出演者: hikalium (@hikalium)、Rui Ueyama (@rui314)

    https://turingcomplete.fm/30

    ハッシュタグは#tcfmです。

    TCFMはサポーターの投げ銭によって収益を上げています。このコンテンツに課金してもいいよという方はぜひクリエイター支援サイトPatreonから登録してご協力ください。

    イントロ (0:00)よい寄付先とは (4:47)セキュキャンのCコンパイラ自作ゼミとは (7:51)インクリメンタルにCコンパイラを作る (12:21)左辺値と右辺値 (17:55)似て非なるものを作るのは努力の重複ではない (19:17)9cc書き始めました (20:51)自作コンパイラの性能もそんなに悪くはない (21:18)Ken Thompsonのログインハック (23:10)Cコンパイラ、アセンブラ、リンカ、libc関数を全て自前で書く (32:16)Stanford CS140 (34:59)Stanford CS140e (37:40)三億円事件 (40:59)仮想通貨盗難事件のスケールの大きさ (45:29)ビットコイン盗難とSIMスワップ攻撃 (48:11)ハードウェアのセキュリティキー (49:08)hikalium、Ergodoxキーボードを買う (51:24)キーボード早打ち対決 (55:35)国によってキー配列が違う (58:55)プログラミングを教える時の心構え (1:01:31)Keithというよい講師の話 (1:05:07)褒めるときに悪い話をセットにしない (1:07:10)久しぶりのTCFM (1:11:58)エンディング (1:14:14)An Incremental Approach to Compiler Construction (PDF)Let's Build a Compiler, by Jack CrenshawWriting A Compiler In Go8cc C Compiler9cc C Compilersk2ccaqccKen Thompsonのハック (PDF)自作Cコンパイラで Ken Thompson のログインハックを再現してみたaqccの解説スライドRustで書かれたJavaScriptエンジンStanford CS140Stanford CS140e三億円事件 (Wikipedia)YubikeyKinesis keyboardErgodox keyboardCコンパイラ制作の夏期集中コースが思っていた以上にうまくいった話
  • Missing episodes?

    Click here to refresh the feed.

  • セキュキャンのCコンパイラ作成コースの話、CGでよくでてくるティーポットの実物を入手した話、hikaliumの中学生時代のOS自作の話をしました。

    出演者: hikalium (@hikalium)、Rui Ueyama (@rui314)

    https://turingcomplete.fm/29

    ハッシュタグは#tcfmです。

    TCFMはサポーターの投げ銭によって収益を上げています。このコンテンツに課金してもいいよという方はぜひクリエイター支援サイトPatreonから登録してご協力ください。

    イントロ (0:00)セキュキャン事前学習始まりました (1:33)「低レイヤを知りたい人のためのCコンパイラ作成入門」(仮題)、現在7万字 (3:58)Cの不可解な言語仕様のルーツを知るために1972年の最初期のCコンパイラのコードを読んでみた (6:07)符号拡張とマイナス2進数 (13:04)コース参加者のコードのほうが8ccのコードよりきれい (17:57)一番最初のコンパイラは構文解析が非常に苦労した (20:23)CGでよくでてくる例のティーポットを買いました (22:07)元々はボストンのコンピュータ博物館で展示されていた (25:15)Frieslandという会社が今でも同じティーポットを作っている (26:03)ユタ・ティーポットはなにがCGに適しているのか (28:27)ユタ・ティーポットと南部鉄器の類似性 (30:31)内輪ネタとしてのユタ・ティーポット (33:14)ユタ大学のUtah Teapot Rendering Competition (34:00)画像処理の標準テストイメージとしてよく使われる女の人Lennaの話 (37:57)ユタ・ティーポットは日本からも普通に買えるはず (41:47)hikaliumのOS自作入門 (43:28)hikaliumの小学生時代のホームページ (44:21)30日OS自作入門本のOSのファイルシステム (48:00)GUIの多色対応 (51:36)30日OS自作入門本のmalloc (55:29)K&R mallocを自力で発明して実装 (58:10)テキストボックスを実装 (1:00:33)ARMの実行のみできるページ(読めない)という新しい機能 (1:03:17)x86のページテーブルがいつの間にか5段くらいに深くなっている件 (1:06:32)lldでEFIバイナリのブートローダを簡単に作成 (1:08:01)lldはクロスのビルドを簡単にするつもりで作っている (1:09:48)hikaliumのOS次回作のテーマ (1:12:07)Window Systemでウィンドウを入れ子にする (1:15:04)クリックした場所を検出しようとすると必ずマウスカーソル自身になる問題の回避法 (1:18:58)MIDIファイルを読んでPCのビープ音で再生する機能を実装 (1:20:48)無理やりなコードでも動くものを一回書くと学べることが多い (1:25:00)Intelのマニュアルを読んで16ビットモードのエミュレータの作成を試みる (1:26:42)中学生の夏休みの頃はひたすらコードを書いていたりしていた (1:31:38)エディタはWindowsのメモ帳だった (1:32:18)いまからみると稚拙なコードを書いていた中学生時代 (1:37:50)エンディング (1:39:57)1973年前後のCコンパイラのソースコード2の補数 (Wikipedia)8cc C Compilerユタ・ティーポット (Wikipedia)購入したユタ・ティーポットの写真コンピュータ・ヒストリー・ミュージアムに収められている「本物」のユタ・ティーポット南部鉄器 (Wikipedia)Utah Teapot Rendering Competition画像の標準テストイメージとしてよく使われるLennaFrieslandのティーポット注文ページFrieslandのティーポット注文ページ(中)Frieslandのティーポット注文ページ(オリジナルの大きいサイズ)30日でできる! OS自作入門(書籍)ARM execute-only memoryプログラミング言語C(通称K&R本)
  • Gauche Schemeの作者の川合史朗さんと言語処理系についての話をしました。GaucheのCコードとの互換性を保ちつつ無限リストを導入するために採用したトリックや、Gauche自身で書かれているGaucheを過去のバージョンでビルドするために気をつけていることなどの話をしました。

    出演者: 川合史朗 (@anohana)、Rui Ueyama (@rui314)

    https://turingcomplete.fm/28

    ハッシュタグは#tcfmです。

    TCFMはサポーターの投げ銭によって収益を上げています。このコンテンツに課金してもいいよという方はぜひクリエイター支援サイトPatreonから登録してご協力ください。

    イントロ (0:00)電卓そろばん対決の動画存在しました (2:28)Gaucheとそのほかのプログラムのリリースプロセス (3:33)コンパイラのブートストラッピング問題とバージョン間の互換性 (4:51)GCCやClangにおけるブートストラッピング問題 (18:08)Goでは言語仕様がフリーズされていてGo 1の間は変更されない (19:41)Webブラウザの6週間のリリースサイクルは短いのか長いのか (20:35)FirefoxもClangとlldにスイッチ (21:32)Gaucheがstdioを使わずに独自bufferred IOを実装している理由 (22:58)FILE構造体の内部にアクセスする(移植性のない)実装 (26:41)プログラム終了時にバッファをフラッシュしないといけない (27:13)stdioではstdinを読もうとしたらstdoutがフラッシュされる (28:24)遅延シーケンス(無限リスト) (31:05)Cレベルでの互換性を保ったままconsセルを遅延シーケンスにするトリック (34:52)遅延シーケンスをどこで使っているのか (37:29)遅延シーケンスのパフォーマンス最適化 (38:45)Clojure言語のTransducerという仕組み (42:07)カリー化とは何か (46:06)キーワードとシンボル (48:09)キーワードをシンボルのサブクラスにして発生した問題 (54:27)Scheme言語仕様にはキーワードはない(シンボルで十分?) (56:08)現在仕様策定中のScheme言語仕様R7RS (58:27)R6RSの言語仕様は振り返ってみて良いものといえるのだろうか? (1:00:12)標準化委員会が作る言語仕様と個人の作品としての言語仕様 (1:03:55)Goの言語仕様の変更のプロポーザル (1:05:09)Schemeでは言語仕様を実験的に拡張して良さそうなら標準化するというのがよくある流れ (1:06:51)言語仕様策定の投票権は全員平等なのが本当によいのか (1:09:19)Schemeは誰でも参加できるところがよいところ (1:10:02)C++のトライグラフの廃止に最後まで反対していたのはIBMとカナダ (1:11:14)エンディング (1:13:22)Running for Grace (Shiroさんの出ている映画)Gauche SchemeConsセル (Wikipedia)stdioにおけるバッファのフラッシュのルールGo言語仕様Clojure言語Transducersカリー化 (Wikipedia)Haskell (Wikipedia)ハスケル・カリー (Wikipedia)SRFI(サーフィー)R6RS(現行の最新のScheme言語仕様)トライグラフ (Wikipedia)
  • 今週は歴史回です。僕からは、終戦の翌年の東京で、日本のそろばん名人が米軍代表の電卓オペレータと大規模な公開マッチを行って、そろばん名人が勝利したという知られざるエピソードを紹介します。うどんくんからは、第二次世界大戦のドイツ軍の暗号がどう破られたのかという話をします。

    出演者: うどん (@kw_udon_)、Rui Ueyama (@rui314)

    https://turingcomplete.fm/27

    ハッシュタグは#tcfmです。

    TCFMはサポーターの投げ銭によって収益を上げています。このコンテンツに課金してもいいよという方はぜひクリエイター支援サイトPatreonから登録してご協力ください。

    イントロ (0:00)コンピュータ歴史博物館 (0:40)そろばん対決の当時の新聞記事を図書館で探す (4:22)星条旗新聞の一次資料を発見 (8:24)日本側挑戦者は逓信省に勤めるマツザキ・キヨシさん (9:50)新聞の興行としての計算勝負 (12:52)会場はアーニー・パイル・シアター(旧東京宝塚劇場) (14:55)アメリカ側挑戦者はGHQ財務局のThomas Nathan Wood二等兵 (16:32)モータを内蔵した機械式計算機 (17:19)勝負の予想は半々に割れる (18:40)日本側からNHKや新聞が取材に来ていてフィルムも残っているはず (20:39)マツザキさんが勝利 (21:27)マツザキさんの勝利を報じる星条旗新聞 (23:35)この計算対決があったことはほとんど知られていない (24:35)エニグマ暗号機 (27:24)大昔のコンピュータを、現役学生時代にMITでハックしていた人がデモしてくれる (27:56)エニグマの基本構造 (29:46)シーザー暗号やヴィジュネル暗号との比較とその解読法 (33:29)ワンタイムパッドとは (38:56)バベッジとバベッジの階差機関 (41:05)エニグマの基本構造と鍵空間の大きさ (43:24)エニグマはいつ解読されたのか (46:54)分散コンピューティングで解読する現代の試み (49:32)ポーランドが暗号化手順の脆弱性を発見してエニグマのレプリカを作ることに成功 (51:02)ソ連のページが重複した「乱数表」でアメリカが通信解読に成功していた事件 (1:06:30)ポーランド侵攻の直前にイギリスのチューリングのチームに成果を引き継いだ (1:07:38)チューリングを描いた映画「イミテーション・ゲーム」 (1:11:10)クリブを元に全探索する装置Bombe (1:12:10)ドイツ軍は連合国の暗号解読を試みたのか (1:16:05)アメリカ軍の暗号解読により山本五十六海軍長官が殺害される (1:17:52)タイガー手回し計算機 (1:19:26)物量の差で負けた戦争と、そろばん電卓対決 (1:22:29)テレビ番組化希望 (1:23:47)未解読の暗号文を解読する現代の試み (1:24:58)最近も新しい暗号文が解読されている (1:29:21)エニグマのレプリカ自作 (1:31:01)歴史回はどうだったか (1:32:21)サイモン・シン「暗号解読」 (1:33:02)エンディング (1:35:04)NHKの持っていたそろばん対決のフィルムの抜粋コンピュータ・ヒストリー・ミュージアムコンピュータグラフィックスのデモでよくでてくるティーポッド (Wikipedia)そろばん対決のWired日本語版の記事そろばん対決のWired英語版の記事そろばん対決についての短い説明 (Wikipedia)東京宝塚劇場 (Wikipedia)風船爆弾 (Wikipedia)星条旗新聞 (Wikipedia)Ancestryモンロー計算機のデモ (YouTube)エニグマ暗号機 (Wikipedia)エニグマの解読 (Wikipedia)バベッジの階差機関エニグマについての詳しい日本語スライドヴィジュネル暗号 (Wikipedia)エドガー・アラン・ポーの「黄金虫」 (Wikipedia)ポーランドが内部の配線を特定するのに成功した手法の説明 (Wikipedia)欠陥のある乱数表によりソ連の暗号を解読するプロジェクト映画「イミテーション・ゲーム」 (Wikipedia)チューリングによる暗号解読機Bombe (Wikipedia)イギリスによる海底ケーブル網山本五十六海軍大将の戦死 (Wikipedia)サイモン・シン「暗号解読」(書籍)How Polish Mathematicians Deciphered the Enigma (PDF)分散コンピューティングで解読するプロジェクト Enigma@HomeFrode Weierudさんによる エニグマ暗号まとめサイトFrode Weierudさんによるエニグマ暗号解読についての最近の進歩についての論文 (PDF)チャールズ・バベッジ (Wikipedia)タイガー計算機計算機屋かく戦えり(書籍)

    追記

    そろばん対決では四番勝負と言っていますが正しくは加減乗除とその全てのコンビネーションの五番勝負です。
  • るくすくんとSwitchエミュレータの進歩や、政府機関のサイバー部隊に就職したい話、セキュリティ全般について話をしました。

    出演者: るくす (@RKX1209)、Rui Ueyama (@rui314)

    https://turingcomplete.fm/26

    ハッシュタグは#tcfmです。

    TCFMはサポーターの投げ銭によって収益を上げています。このコンテンツに課金してもいいよという方はぜひクリエイター支援サイトPatreonから登録してご協力ください。

    イントロ (0:00)Switchエミュレータでネットワーク通信が動くようになった (0:53)SwitchのHomebrewのアプリをエミュレータで動かして動作確認 (1:48)Webブラウザの脆弱性を使ってアプリをインストール (4:12)完成度はまだまだだが、Switch用のNES(ファミコン)エミュレータくらいは動く (8:17)GPUのエミュレーションの方法 (14:01)既存のエミュレータと動作を比較してデバッグ (15:27)開発期間は4〜5ヶ月 (20:47)main関数に到達するまでが大変 (22:47)QEMUベースのSwitchエミュレータの比較 (26:04)オープンソース化したらどういう反応があるのか (27:13)るくすくんのセキュリティのサーベイ記事 (29:42)日本の政府機関のサイバー部隊 (30:55)日本の政府機関のハイテク音痴ぽさ (37:10)アメリカの情報機関に就職するには国籍がないと難しい (38:25)スパイ衛星の運用は内調 (39:20)ハッキングチームの情報流出事件 (42:00)ハードウェアの脆弱性を使ったターゲット攻撃 (45:34)PlayStation 4でWebブラウザがクラッシュすると警告文が出る (48:46)法執行機関に対抗してユーザのプライバシーを守ろうとするAppleの姿勢と努力 (50:56)セキュアブートとは (55:02)拡張ハードウェアを使ったセキュアブートの回避 (57:31)TCFMミートアップのQ&Aコーナーの質問 (1:00:20)ワーム事件を引き起こしたRobert Morrisは今はMITの教授 (1:08:29)Kevin Mitnickの逮捕に協力した下村努はノーベル賞受賞者の下村脩の息子 (1:10:21)Project LoonのAstro TellerはEdward Tellerの孫 (1:11:55)SwitchBrew(Nintendo SwitchのためのHomebrew)BSDソケット (Wikipedia)リモートデバッグのためのGDB stubHackadayHacker Newsるくすくんのサーベイ記事 − システムソフトウェアに対する攻撃の歴史と傾向 - 高度標的型攻撃や国家に支援された攻撃の仕組み内閣情報調査室 (Wikipedia)自衛隊のサイバー攻撃への対応についてハッキングチーム (Wikipedia)TPMロバート・モリス (Wikipedia)下村脩 (Wikipedia)下村努 (Wikipedia)ケビン・ミトニック (Wikipedia)Project Loonエドワード・テラー (Wikipedia)
  • Chrome開発者のKinukoさんと、Chromeのページロードを速くする話や、ブラウザのセキュリティ、ブラウザのマルチプロセスアーキテクチャとマイクロカーネルの類似性などについて話をしました。

    出演者: Kinuko (@kinu)、Rui Ueyama (@rui314)

    https://turingcomplete.fm/25

    ハッシュタグは#tcfmです。

    TCFMはサポーターの投げ銭によって収益を上げています。このコンテンツに課金してもいいよという方はぜひクリエイター支援サイトPatreonから登録してご協力ください。

    イントロ (0:00)Chromeのローディングを担当 (1:24)リンクはクリックしたら一瞬で表示されてほしい (3:32)Service Worker (4:28)WebページをまとめるWeb Packaging (6:23)Web PackagingとCDNとデジタル署名 (10:35)信頼できる第三者による署名 (15:06)マウスオーバーでプリフェッチ (16:22)機械学習でプリフェッチ (17:32)Chromeのデータセーバー (18:28)遅い機能を使っていないことを宣言できるfeature policy (21:14)ブラウザの深い話をするつもりが普通のWeb開発の話になっていた (23:00)Service WorkerはGoogle検索も使っている (24:22)Service Workerの最適化 (26:23)Service Workerを使っている大規模サイトの例 (30:36)ブラウザはとにかく大きくて複雑 (32:05)細かくプロセスに分ける現代のブラウザはマイクロカーネルぽい (34:11)File descriptor passing (42:04)ブラウザのタブをVMにしたら? (44:06)KinukoさんはOSぽい研究をしていた (47:43)分散ファイルシステムの研究 (48:40)WWWのデザインの適当さの衝撃度 (51:39)Chromeの脆弱性報奨システム (55:10)定評のあるオープンソース開発者が意図的に悪意あるコードを書いたら見つけられるか? (1:00:03)SanitizerがC++を延命している (1:05:31)セキュリティレビューワーは何をみているのか (1:11:30)開発力のあるエンジニアを大量に集めてブラウザの巨大さに対抗 (1:14:05)Windows版のChromeもlldリンカに移行 (1:15:16)TCFMミートアップに100人以上が参加 (1:17:39)趣味や研究でChrome開発に参加→就職 (1:21:14)Service WorkerWeb PackagingAMPソフトウェア危機MozillaのXUL(ズール)LLVM sanitizersValgrindChromeの脆弱性報奨システムTuring Complete FMミートアップlld
  • 東大医学部卒業後にソフトウェアエンジニアをしている門脇さんと、生物の研究の話や最近の遺伝子技術の進歩などについて話をしました。

    出演者: Shiro Kadowaki、Rui Ueyama (@rui314)

    https://turingcomplete.fm/24

    ハッシュタグは#tcfmです。

    TCFMはサポーターの投げ銭によって収益を上げています。このコンテンツに課金してもいいよという方はぜひクリエイター支援サイトPatreonから登録してご協力ください。

    イントロ (0:00)東大医学部 → ソフトウェアエンジニア (1:43)DOS版のソフトをWindows 3.1に移植 (4:51)医学部に行くと普通は医者になる (6:55)細胞内の物質の濃度を測る研究 (9:40)IP₃の濃度を蛍光タンパク質を使って測定 (16:15)生物の実験と再現性の問題 (19:33)測定することで測定対象に影響を与える問題 (24:00)遺伝子を一から作ることはできるのか (25:08)人体を設計し直せるとしたら (29:35)蛍光の観察方法 (31:26)制御装置をビジュアルプログラミング言語で作る話 (36:27)細胞のシートや立体構造を作る話 (38:29)実験の動画をMOで保存 (39:37)実験装置の光源 (40:56)ヒトゲノム計画 (46:29)Perlの正規表現で遺伝子を探索 (50:37)遺伝子の候補を見つけた後どう検証するのか (55:18)ディープラーニングを使って眼底写真から血圧や性別を判別する話 (58:22)蚊を根絶する話 (1:00:50)沖縄における不妊虫放飼の実例 (1:03:07)タスマニアデビルの感染性のガン (1:06:03)野生生物の種単位での根絶を可能にするGene Drive (1:07:37)数珠つなぎ式Gene Drive (1:11:11)UnicodeのDNA絵文字のバグ (1:14:53)マッドサイエンティストなPCR発明者 (1:18:49)Wikipediaの専門のページ (1:20:40)Win32sIP₃受容体蛍光タンパク質MOドライブSyQuestのリムーバブルハードディスクヒトゲノム計画タスマニアデビルの感染性のガン不妊虫放飼毎週数百万匹の不妊化蚊を放って蚊を地域から根絶する計画Gene Drive数珠繋ぎ式Gene DriveDNAの絵文字マリス博士の奇想天外な人生(書籍)オクロの天然原子炉
  • 戦略投票を行わなくてよいマッチングのアルゴリズム、Intel 3D XPointのような不揮発性メモリ、この世界はシミュレーションか、といった話などをしました。

    出演者: hikalium (@hikalium)、Rui Ueyama (@rui314)

    https://turingcomplete.fm/23

    ハッシュタグは#tcfmです。

    TCFMはサポーターの投げ銭によって収益を上げています。このコンテンツに課金してもいいよという方はぜひクリエイター支援サイトPatreonから登録してご協力ください。

    イントロ (0:00)セキュキャン2018 (2:05)戦略を必要としないマッチングアルゴリズム (3:34)デュヴェルジェの法則 (12:44)比例投票制の制度設計 (18:32)完全比例代表制と阻止条項 (20:41)不揮発性DIMM (24:43)不揮発性DIMMをどうモデル化するか (30:56)不揮発性DIMMはファイルシステムとして見えるべきか、永遠に存在するプロセスとして見えるべきか (33:08)3D XPointメモリは8バイト単位での書き込みがアトミック (39:37)Compare-and-swap命令 (42:57)ストレージ階層に新たな層が加わるのは面白い (45:32)シングル磁気記録方式のHDD (46:42)水槽の脳 (52:02)世界シミュレーション仮説 (54:33)シミューレーションと浮動小数点数演算の誤差 (55:19)パイオニア・アノマリー (58:25)カール・ポパーと反証可能性 (1:00:47)hikaliumはこの世界はシミュレーションだと思うかどうか (1:03:44)世界無課金ゲーム仮説 (1:07:25)シンギュラリティ後の世界でコンピュータ内に移住したいかどうか (1:08:40)「脳のなかの幽霊」と半球無視 (1:10:55)デュヴェルジェの法則MTRRレジスタCompare-and-swapシングル磁気記録方式水槽の脳胡蝶の夢シミュレーション仮説パイオニア・アノマリー原子力電池カール・ポパー反証可能性脳のなかの幽霊(書籍)
  • gVisorというLinux向けサンドボックスがオープンソース化されました。gVisorの構成は、ぬるぽへさんが作成していたNoahとかなりよく似ています。そこで、ぬるぽへさんからNoahの経験をもとにgVisorの話を伺いました。

    出演者: ぬるぽへ (@nullpo_head)、Rui Ueyama (@rui314)

    https://turingcomplete.fm/22

    ハッシュタグは#tcfmです。

    TCFMはサポーターの投げ銭によって収益を上げています。このコンテンツに課金してもいいよという方はぜひクリエイター支援サイトPatreonから登録してご協力ください。

    イントロ (0:00)NoahはLinux互換環境を提供する薄いVM環境 (1:38)NoahでもgVisorでもないサンドボックス環境の例 (2:40)Noahをサンドボックスにするアイデアはあった (4:51)gVisorはGoogleのクラウドで数年間使われている実績のあるもの (5:37)gVisorがlldでリンクできなかった問題 (6:36)-mcmodel={medium,large} (7:05)gVisorがうっかりlibcをリンクしていた (9:24)gVisorはNoahに似ている (11:53)gVisorは複数プロセスを持つことができる (12:55)gVisorはLinuxカーネルをGoで実装したもの (15:16)gVisorはTCP/IPプロトコルスタックを自前で実装 (19:54)TCP/IPはなぜカーネルに実装されているのか (26:52)Go Genericsパッケージ (28:28)C11の型でディスパッチするマクロ (30:02)C言語の正しいgoto文の使い方 (32:12)C言語にテンプレートを入れてほしい (34:15)コンテナはサンドボックスなのか (37:34)起動の速いVMの研究 (40:32)プロセスイメージのダンプ・アンダンプをgVisor/Noahでできないか (41:54)ダンプ・アンダンプはLispの伝統的テクニック (45:45)gVisorはptraceも実装 (51:51)VDSO (53:58)ソフトウェアでVMを実装するほうがハードウェアより速いことがよくある (56:56)Intel EPT (nested pages)は性能上のメリットがある (1:00:42)Shadow page table (1:02:55)スタンフォードのコンピュータサイエンスの古典の論文を読む授業 (1:07:10)IBM System/360とパーソナルコンピュータ (1:09:43)NFS v1の論文 (1:13:23)因果律を満たす限り非同期に書き込む同期ファイルシステムの研究 (1:14:57)投機的ファイル読み込みとプロセス状態のロールバックを行うカーネルの研究 (1:21:21)Ken Thompsonがコンパイラに埋め込んだハック (1:26:09)ビルド環境では再現可能性が重要 (1:32:54)エンディング (1:35:54)gVisorNoahlldUnderstanding the x64 code modelsMy VM is Lighter (and Safer) than your Container (PDF)CRIU — プロセスのチェックポインティングを行うツールCS240(Stanfordの授業)NFSの論文 (PDF)VMwareによるソフトウェアとハードウェアの仮想マシン実装の比較の論文 (PDF)Rethink the sync(因果律を満たすファイルシステムの実装の論文) (PDF)Reflections on Trusting Trust (Ken Thompsonのチューリング賞授賞式で発表した内容のペーパー) (PDF)
  • 東大の授業ではCPUやコンパイラを作ってレイトレイサを動かすという授業があります。高橋さんのチームはRISC-Vプロセッサを実装して汎用OSを動かそうとしました。その話を伺いました。

    出演者: 高橋祐花 (@00_)、Rui Ueyama (@rui314)

    https://turingcomplete.fm/21

    ハッシュタグは#tcfmです。

    TCFMはサポーターの投げ銭によって収益を上げています。このコンテンツに課金してもいいよという方はぜひクリエイター支援サイトPatreonから登録してご協力ください。

    イントロ (0:00)CPU実験のコア係とコンパイラ係 (1:46)CPU実験と商業的なプロセッサとの比較 (6:43)CPUシミュレータ作成係 (9:29)コアのデバグの辛さ (10:58)Intel 4004(Intel最初のCPU)の設計の話 (13:08)チップアート(シリコンの上の微小な落書き) (14:20)各社のCPUID命令 (15:33)コア係をするかコンパイラ係をするか (17:43)自作CPUにLinuxを移植したかったが頓挫 (19:55)1日で代替の自作OSを作成 (21:01)自作OSはマルチタスクもサポート (27:11)ユーザスレッドとカーネルスレッド (28:16)自作CPU作成に必要な機材 (31:41)ミニマムなCPUを作って最小限の命令を次第に足していく (34:21)自作CPUではDRAMは使っていない (40:23)SRAMとDRAMの解説 (41:24)浮動小数点数の演算はIPコアを使ってよいルール (43:24)浮動小数点数の丸めモード (45:48)IOはUARTでシリアル通信をサポート (48:20)UARTはデバグが辛い (49:33)暗中模索になりがちな低レイヤのデバグの話 (50:54)命令セットにはRISC-Vを選択 (54:09)Linuxが動くCPUを作るのは大変 (55:44)ELFフォーマットのカーネルをロードするのも面倒 (57:56)MMUを実装する必要性 (1:00:19)1stコアはハーバードアーキテクチャ (1:01:56)MMUの解説 (1:04:05)残り5日でOSを実装 (1:05:52)タイマ割り込みはクロックを数えて実現 (1:06:54)自作CPUをメインで作った3人は公立高校出身 (1:08:56)RISC-Vなのでgccの移植は不要 (1:14:04)CERNの仕事を学業と比べると (1:16:17)牧場系スマホゲームとスーパーエンジニア (1:18:49)ドラクエの乱数調整でのリアルタイムアタック (1:21:21)学祭でのドラクエのリアルタイムアタック (1:25:20)東大のCPU実験で自作コア上の自作OS上で自作シェルを動かした話(今回の話のブログ)RISCアーキテクチャARMプロセッサの歴史RISC-VIntel 4004の論理設計をした嶋正利チップアート(ICの上に書かれた微小な落書き)チップアートのコレクションIwaCPUパタヘネ本(CPUの設計の本)CPUID命令CPUIDで返されるプロセッサベンダの名前のリストVerilog2の補数SRAMDRAMUARTELFファイルフォーマットMMU仮想メモリや割り込み、タスクスイッチの仕組みがよくわかる本「はじめて読む486」ハーバード・アーキテクチャゲームの乱数調整の話スーパーマリオ最短時間クリアの世界記録の詳細な解説動画 (YouTube)東大TSGプログラミング生放送 (YouTube)
  • るくすくんと一緒に、デバグ例外を使ってx86プロセッサ上のOSのセキュリティホールをつく手法や、Nintendo Switchのハッキング、ゲーム機のセキュリティなどについて話をしました。

    出演者: るくす (@RKX1209)、Rui Ueyama (@rui314)

    https://turingcomplete.fm/20

    ハッシュタグは#tcfmです。

    TCFMはサポーターの投げ銭によって収益を上げています。このコンテンツに課金してもいいよという方はぜひクリエイター支援サイトPatreonから登録してご協力ください。

    イントロ (0:00)るくす君がカーネギーメロン大学に客員研究員として1年間行きます (1:30)POP SSデバグ例外を使った脆弱性 (10:47)セグメントレジスタを変更する命令に対するデバグ割り込みだけは特別扱いになるというCPUのマイナーな仕様を誰もよく理解していなかった (19:17)OpenBSDの強いセキュリティ (25:10)低レイヤのマイナーな仕様の不理解を突く脆弱性はまだまだあるはず (29:52)Nintendo Switchのハッキングやエミュレータの作成 (36:47)Switchで任意コードが最高権限で実行できるファームウェアのバグが最近見つかった (37:49)USBからのデータを正しく検証していないという、SwitchのブートROMのバグ (42:00)スーパーファミコンの「セキュア」チップ (47:33)スーパーマリオの最短時間クリア記録 (54:50)高品質なアスキーアートを生成する論文 (59:43)AlphaGoの次はスタークラフトで人間に勝つのが目標 (1:06:58)John CarmackとSteve Jobsの思い出 (1:11:11)マスターとPhDとその後 (1:13:48)POP SS debug exception vulnerability分岐予測の詳細なリバースエンジニアリング資料ソーシャル・エンジニアリングフューズで不可逆にNintendo Switchのファームをアップデートする話Nintendo SwitchのブートROMのバグWiiのゲーム「ゼルダ 風のタクト」、Switch上のエミュレータで動くDolphinエミュレータWine - Windows互換実行環境ジーコサッカーAtari Games対Nintendo of Americaの訴訟リセットをかける任天堂のチップバーチャルボーイスーパーマリオ最短時間クリアの世界記録の詳細な解説動画マリオブラザーズがNP hardであることを示した論文SIGGRAPHにアクセプトされたアスキーアートがたくさん載っている論文 (PDF)SIGGRAPH (シーグラフ)
  • 川合史朗さんが作っているScheme処理系Gaucheの実装について、特にメモリ管理やクロージャ、継続の実装などに焦点を当てて話をしました。最近のCPUでは単純にJITしても速くならない理由などについても話をしています。

    出演者: 川合史朗 (@anohana)、Rui Ueyama (@rui314)

    https://turingcomplete.fm/19

    ハッシュタグは#tcfmです。

    TCFMはサポーターの投げ銭によって収益を上げています。このコンテンツに課金してもいいよという方はぜひクリエイター支援サイトPatreonから登録してご協力ください。

    イントロ (0:00)Schemeのストレージモデルではすべてが無限エクステント (1:06)関数呼び出しのモデルとアクティベーションレコードのアロケーション (4:34)SPARCのレジスタウィンドウ (9:20)Alphaの速さの秘密 (12:41)大コケしたIntel Itaniumプロセッサ (14:11)GoのGC停止時間の劇的な改善 (16:55)ページテーブルのダーティービットをユーザプログラムから使う話 (20:14)Goの分割スタック機能 (23:07)クロージャを作ったときに使ってない変数を不必要に掴んでしまう問題 (25:54)32ビットハッシュ値を大量に作ると32ビットマシンで偽ポインタがたくさんできてしまう問題 (27:44)決してreturnしないCプログラムにコンパイルするScheme処理系 (33:00)タグ付きポインタ (41:23)C言語の仕様を満たすためのBoehm GCの機能と、それを使いたくない理由 (46:10)64ビット浮動小数点数をなるべくヒープにアロケートせずに扱いたい (50:30)16ビット"Brain"浮動小数点フォーマット (55:27)Gaucheの正規表現エンジン (56:44)Scheme→C→Schemeという呼び出しをした先で継続を取得すると限定継続になる (1:00:19)Schemeスタックからヒープへのコピー (1:04:44)末尾呼び出しはスタックを消費しないように手続きを呼び出す (1:05:50)Chez Schemeでは多値ありと多値なしの2つの継続を渡す (1:10:29)最近のCPUの分岐予測の賢さとMeltdown & Spectre (1:13:16)Gaucheを単純にJIT化してもCPUの分岐予測が賢いのでそれだけでは速くならない (1:20:08)社会的や経済的理由で速くなる言語 (1:25:05)リテラルで書けるオブジェクト (1:27:29)正規表現リテラル (1:28:32)マップのリテラル (1:30:55)Gaucheのハッシュテーブルとハッシュ衝突攻撃 (1:36:41)TCFMの難易度 (1:39:24)Gauche Schemeハッカーと画家(川合さんが翻訳した本)SISC SchemeメモリのローカリティSPARCDEC AlphaItanium (IA-64)VLIW命令セットHamajiさんによるGCフレンドリーなスタック塗りつぶしの話Clojure(JVMで動くLisp)Chicken SchemeAzul Systems(並列Javaマシンを作っていた会社)Hans Boehmによる保守的GC安全なデータ構造についての論文 (PDF)Cheney on the M.T.A.History of Tタグ付きポインタ16ビット"Brain"浮動小数点フォーマットRuss CoxによるThompson NFAの解説Anton Ertlらによるmemcpyを使ったJITの手法の論文 (PDF)末尾呼び出し最適化セキュアで速いハッシュとしてデザインされたHighwayHash

    追記

    CPythonはリファレンスカウンタを使っていますが、Pythonの言語仕様自体では必須とはされていません。
  • hikaliumのセキュキャン体験、コンピュータセキュリティ、LLVMプロジェクト、コンピュータサイエンスのおすすめ書籍などについて話をしました。

    出演者: hikalium (@hikalium)、Rui Ueyama (@rui314)

    https://turingcomplete.fm/18

    ハッシュタグは#tcfmです。

    TCFMはサポーターの投げ銭によって収益を上げています。このコンテンツに課金してもいいよという方はぜひクリエイター支援サイトPatreonから登録してご協力ください。

    イントロ (0:00)セキュキャン2018ではセルフホストできるCコンパイラの作成を目指す (1:10)IRC、Slack、シンギュラリティ (7:15)hikaliumのセキュキャン2016体験話 (9:24)イーサネット(10BASE-T)の物理的なワイヤフォーマット (10:37)謎のボードを気合いで解析するお題 (21:31)USBメモリを使ってアメリカとイスラエルがイランの核計画を妨害した話 (25:07)セキュアなオリジナルCPUの開発 (32:30)セキュキャンの講師はどう選んでいるのか (40:59)コンパイラ業界の景気の良さ (43:28)hikalium、Cコンパイラを書く (45:04)演算子優先順位文法 (47:55)LLVMプロジェクト (52:30)本のプレゼント企画 (1:11:21)セキュキャン2018xkcdのマンガ詳説イーサネット(書籍)マンチェスタ符号8b/10bエンコーディングEthernetフレームALOHAnetReturn-oriented programmingイランの核計画を妨害したワームStuxnetBruce Schneierhikaliumのセキュキャン応募書類OSECPU(オセクプ)Misreading ChatRebuild8cctccRUCCUdon C Compiler演算子優先順位文法Rafaelのメールの勝手翻訳lldリンカ「悪い方が良い」原則と僕の体験談TCFM18書籍プレゼント応募フォーム30日でできる! OS自作入門(書籍)CPUの創りかた(書籍)数学ガール(書籍)Cプログラマのためのアルゴリズムとデータ構造(書籍)すべてがFになる(書籍)

    追記

    イーサネットフレームはCRC32をチェックサムに使っています。
  • プログラミング言語を作る時には、途中で変えることが極めて難しいデザイン選択を最初に行わないといけないことがあります。今回は川合史朗さんがGaucheを設計した時に行ったデザイン選択の判断について話を伺いました。また、浮動小数点数のトリッキーさについても話をしています。

    出演者: 川合史朗 (@anohana)、Rui Ueyama (@rui314)

    https://turingcomplete.fm/17

    ハッシュタグは#tcfmです。

    TCFMはサポーターの投げ銭によって収益を上げています。このコンテンツに課金してもいいよという方はぜひクリエイター支援サイトPatreonから登録してご協力ください。

    イントロ (0:00)セキュキャン参加者募集中 (0:41)俳優のオーディションとその心構え (2:43)川合史朗さんが出演している映画がサンフランシスコで上映されます (5:16)前回の訂正 (7:40)Gaucheを作った経緯 (8:57)STkのオブジェクトシステム (12:22)CLOS(Common Lispのオブジェクトシステム)ではインスタンスのクラスを動的に変更できる (14:35)CLOSを使ってオブジェクトデータベースを作った話 (18:39)三つ組を使ったグラフデータベースを作った話 (24:38)構文木インタープリタではなくVMを選んだ理由は、継続 (29:24)プログラミングにおける概念としての「継続」 (30:39)文字列の内部表現はどうするか (36:46)マルチスレッドの対応 (37:47)GCのAPIはどうするか(GaucheはBoehm GCを使って保守的GC) (39:36)保守的GCとは何か (43:13)自分ではGCを書かなかった理由 (45:03)Precise GCにしなかった理由はC言語との親和性 (46:45)マルチスレッドとGCとUnixのシグナル (47:50)GoやErlangの並行処理モデルを導入していない理由 (51:17)Gauche版のjava.util.concurrent (52:31)R5RSの範囲を実装するのは1ヶ月以内でできた (55:16)浮動小数点数を10進で書き出して読み出した時、同じ数に戻ることを保証するには (57:37)Schemeは分数を正確な分数のままで扱うことができる (1:04:09)16進浮動小数点表現 (1:07:17)浮動小数点数の1.15を丸めた時、1.1になるべきか、1.2になるべきか (1:08:17)正確数のsqrtは正確数にしたい (1:12:12)浮動小数点数を安易に10倍すると精度が失われる (1:16:07)浮動小数点数はそれ自体で整合は取れているが、実数とは異なる数の体系 (1:16:49)x87の80ビット浮動小数点数フォーマットの落とし穴が原因で、PHPが特定の数を読み込むと無限ループに陥るバグ (1:17:43)JavaやGaucheが読み込むとハングする特定の浮動小数点数があった (1:19:38)浮動小数点数の精度は大は小を兼ねるわけではない (1:23:25)言語処理系はコーナーケースをすべて面倒を見なければいけないのが面白い (1:25:42)セキュキャン2018第442連隊(ヨーロッパ戦線で激戦を戦った日系アメリカ部隊)100回落ちることを目指す話Go For Broke; 川合史朗さんがでている映画Go For Broke公式トレイラー(冒頭で話しているのが川合史朗さん)Gaucheホームページ & 川合史朗さんのエッセイTcl/TkCommon Lisp Object System (CLOS)STk川合史朗さんによるSTkのMOPの話The Art of Meta Object Protocol (MOPの解説本)なんでも継続(川合史朗さんによる継続の説明)なんでも再帰R5RSGaucheの概要The Law of Leaky Abstractions (漏れのある抽象化)XORリストBoehm GCHans Boehm詳解Unixプログラミング(書籍)Java並行処理プログラミング(書籍)FuturePrinting Floating-Point Numbers Quickly and Accuratelyニュートン・ラフソン法Donald Knuth先生のThe Art of Computer Programming (2) 日本語版(多倍長の割り算のアルゴリズムの解説がある)Rui Ueyamaによる浮動小数点数の解説When the inexact square root of an integer is exactRounding 1.15Curse of extended floating point arithmeticBitten by floating point numbers againExact sqrt
  • うどんくんが研究していたプログラム検証の話や、システムズプログラミングの古典的な論文についての話をしました。

    出演者: うどん (@kw_udon_)、Rui Ueyama (@rui314)

    https://turingcomplete.fm/16

    ハッシュタグは#tcfmです。

    TCFMはサポーターの投げ銭によって収益を上げています。このコンテンツに課金してもいいよという方はぜひクリエイター支援サイトPatreonから登録してご協力ください。

    イントロ (0:00)Patreon (1:33)Wikipediaに寄付するとどうなるか (2:52)セキュキャン2018の講師やります (7:57)プログラム検証とは何か (13:09)Rustは型システムによってコンパイル時に安全性を検証できる (18:38)線形論理と線形型 (22:16)定理証明支援系Coq (26:29)関数型プログラミング言語に対するモデル検査 (39:25)プログラミング言語の研究が応用されるまでには時間がかかる (44:04)Misreading Chat (48:17)Stanford CS240 (49:38)「悪いほうが良い」エッセイ (52:05)Eraserによる動的エラー検出 (56:41)割り込みハンドラが忙しすぎてマシンがハングアップする問題を解決する論文 (1:03:23)VMware ESXのメモリ管理の論文 (1:09:23)MicrosoftのMidori OS (1:20:03)TCFMの話題のバリエーションについて (1:21:29)ガラケーを自動操作するデバイスを自作 (1:23:28)セキュキャン2018線形論理モデル検査高階モデル検査うどんくんの出身研究室が開発している関数型プログラムの自動検証器プログラミング言語Rustカリーハワード同型対応CoqCOMPCERT CコンパイラINRIA四色問題ケプラー予想プログラミング言語EiffelMisreading Chat簡単なプログラミング言語を30分で作る実況動画音の良いポッドキャストを録音するために ― Turing Complete FMの収録テクニックTuring Complete FMの裏側 ― Webサイト構築編Stanford CS240「悪い方が良い」原則と僕の体験談Arduinoで作る携帯サイト自動巡回マシン
  • CERNでソフトウェアエンジニアとして仕事をしている高橋祐花さんと、CERNでの話やスイスでの暮らし、外国語、フェミニズムなどについて話をしました。

    出演者: 高橋祐花 (@00_)、Rui Ueyama (@rui314)

    https://turingcomplete.fm/15

    ハッシュタグは#tcfmです。

    TCFMはサポーターの投げ銭によって収益を上げています。このコンテンツに課金してもいいよという方はぜひクリエイター支援サイトPatreonから登録してご協力ください。

    イントロ (0:00)CERNはWWWが発明された場所 (1:25)Patreonを使ってサポーター制度を導入 (2:50)CERNの粒子加速器が生成するペタバイトレベルのデータを処理している (8:27)TensorFlowを使って太陽系外の惑星を発見する話 (14:39)C++で大量のデータを処理 (17:43)物理学者でも使えるように考慮されたインタラクティブなC++ (24:17)C++ modules (29:42)コンパイル時間を短くしたい (32:13)スイスでの生活とCERNの仕事環境 (36:40)大量のデータの話 (40:07)CERNの(自然)言語 (43:46)言語獲得の臨界期説 (48:46)プログラミングを始めたのは3年前 (52:01)物理学者の書くコードはキレイではない? (57:11)国際女性デー (1:00:28)東大の女子率低すぎ問題 (1:03:34)出世して少女に夢を与えられる人になりたい (1:07:39)ファンを増やす話 (1:10:24)年齢性別その他の属性気にしすぎ問題 (1:13:55)CERN欧州原子核研究機構高橋祐花さんのLLVM Dev meeting 2017での発表動画CERNの場所WWWの発明者 ティム・バーナーズ=リー世界最初のWebサイト info.cern.ch東大のCPU実験で自作コア上の自作OS上で自作シェルを動かした話Auphonic音の大きさ(ラウドネス)Accidental Tech Podcastの広告出稿ページCERNの粒子加速器ヒッグス粒子P≠NP予想TensorFlowを使って遠くの恒星の惑星を発見スーパー・アース数百キロの深さの海を持つ海洋惑星SawzallCERNのRootデータ解析フレームワークLLVMC++ modulesCERNのデータセンタースイスの言語インド・ヨーロッパ語族ゲルマン語派琉球語CTFSLAC国立加速器研究所
  • Gauche Schemeの作者の川合史朗さんと、Z80 CPUを使ったPCをホストコンピュータなしに自作した話や、Schemeの話などをしました。

    出演者: 川合史朗 (@anohana)、Rui Ueyama (@rui314)

    https://turingcomplete.fm/14

    ハッシュタグは#tcfmです。

    TCFMはサポーターの投げ銭によって収益を上げています。このコンテンツに課金してもいいよという方はぜひクリエイター支援サイトPatreonから登録してご協力ください。

    ハワイ在住で副業は俳優 (0:00)Gaucheは仕事でも使っている (2:21)Common LispはGoogle(元ITA)でも使っている (3:11)Noahでプロセスのundumpができないだろうか? (5:00)Clojureの起動はJVMなので速くない (6:02)Lispコンパイラは改善の余地あり (8:47)Webのスクリプト言語はJavaScriptではなくSchemeが採用されるはずだった (10:09)ShiroさんはGCCのコードから多くを学んだ (12:12)並列Cコンパイラのプロジェクト (13:45)Gauche Schemeはとてもきれいなソースコード (14:55)中学生のころに電子工作としてZ80の自作PCを作り始める (17:55)本物のPCは高すぎて買ってもらえなかったので電気屋の店頭でコードを打ち込んでいた (20:04)親にこれからコンピュータは絶対必要になるとアピールするも失敗 (21:13)テレビを修理しようとする話 (22:58)トラ技で「Z80を使ってマイコンを組み立てよう」といった記事などをみて自作を始める (25:17)入出力はスライドスイッチとLED (26:13)バスを直接スイッチで操作してメモリに手で書き込んでいく (28:29)プログラムを書き込むためのプログラムを作る (29:58)7セグLEDと16進キーボードを作って接続 (31:20)ROMライターを作ってROMから起動できるように (33:42)殺虫灯でEPROMを消去 (34:19)フルキーボードとテレビを接続できるように (36:41)フォントを作ってキャラクタROMを作り画面に文字を出す (37:35)テトリスを作る (40:08)テトリス作者とその後一緒に仕事をすることになった (40:59)フロッピードライブを動かす (43:59)ファイルシステムがないのでノートにファイルの保存位置をメモっておく (46:53)CP/Mを動かす (47:33)アセンブラを入手 (49:42)大学でチップを作った話 (50:52)クロックは最初は2MHz (54:26)Z80のノウハウを使ってSillicon Graphicsの巨大なマシンにPS2のゲームコントローラをつなぐハードを作成 (55:14)プログラミング言語APL (56:21)Turbo Pascalを入手 (1:00:00)オーブンに入れて遮蔽 (1:01:50)フロッピーディスクは信頼性が低かった (1:03:57)大学時代に386BSDを(普通のPCに)インストール (1:05:01)TCP/IP以外のネットワークプロトコルも普通にあった (1:09:19)ハードウェア共有分散メモリとそのためのコンパイラとNoahとの共通点 (1:10:29)コンピュータは極端に進歩しているところとあまり変わっていないところの差が激しい (1:15:00)PS2のコプロセッサでアセンブラプログラミング (1:16:31)SIGGRAPHのデモでファイナルファタジーの映画の一場面をリアルタイムレンダリング (1:18:26)意外なところで自分のやっていることが一周回って役に立つことがある (1:21:12)Gauche Schemeハッカーと画家Gauche SchemeのソースコードSteel Bank Common LispITA SoftwareClojure言語V8 JavaScriptエンジンJavaScript作者のBrenden Eichは当初「Schemeをやる」約束でNetscapeに雇われたWebAssemblyのS式フォーマットgotoを使った手書きのDFAGaucheのbuffered portオーブンPCラジオを直す話(ご冗談でしょう、ファインマンさん)紫外線照射で消去できるROM、EPROM7セグメントLED紫外線を放つブラックライトフラッシュメモリテトリスアレクセイ・パジトノフ(テトリス開発者)ヘンク・ロジャース(テトリスの権利を買い付けてきた人)最初はいたずらだったが最後には実在するホストになったソ連のkremvax.demos.suフロッピーディスク線速度一定CP/Mワイヤ・ボンディングAPLJAPLによる1行のライフゲーム: ↑1 ⍵∨.∧3 4=+/,¯1 0 1∘.⊖¯1 0 1∘.⌽⊂⍵Turbo Pascal386BSDSLIPPPPAppleTalkATMプロトコルSonyのCellプロセッサSIGGRAPH(シーグラフ)

    追記

    10BASE-2と10BASE-5の説明が逆になっています。後半でPS2のVUとPS3のSPEを混同して話しています。
  • hikaliumの自作アセンブラや自作言語、データ構造やトリッキーなビット操作を使ったアルゴリズム、リンカの最適化などについて話をしました。

    出演者: hikalium (@hikalium)、Rui Ueyama (@rui314)

    https://turingcomplete.fm/13

    ハッシュタグは#tcfmです。

    TCFMはサポーターの投げ銭によって収益を上げています。このコンテンツに課金してもいいよという方はぜひクリエイター支援サイトPatreonから登録してご協力ください。

    イントロ (0:00)asmium — hikalium自作アセンブラ (1:20)Mach-Oオブジェクトファイルを自作アセンブラから出力するには (6:27)AppleがCPUをIntelからスイッチするという噂 (8:21)ラベルの後方参照がオブジェクトファイル内で解決されていない? (11:55)RISCプロセッサなら32ビットオフセットでジャンプできないのが普通 (16:30)リンカに手を入れてAndroid版Chromeのバイナリサイズを涙ぐましく削減する話 (20:42)Unixの共有ライブラリのシンボル解決のセマンティクス (24:01)ブルームフィルタというデータ構造 (27:22)オンディスクのハッシュテーブルを一個だけ作る (32:20)文字列の末尾部分だけをマージするサイズ最適化 (33:40)x86機械語のエンコーディングが難しい (36:53)(アセンブリ言語ではなく)アセンブラそのものを書けないと負け? (40:33)Goのアセンブラ (41:59)GoはCライブラリを使わずシステムコールを自前で呼び出している (44:10)GoはほとんどライブラリもGo自体で書かれている (46:25)GoのWaitGroupのバグとマルチスレッドプログラミングの難しさ (49:14)ビット操作の楽しさ (54:11)分岐なしで絶対値を求める (56:11)掛け算と割り算は2ワードの結果を出力するのにC言語ではそれにアクセスできない (1:01:08)サイボウズ・ラボユース (1:05:21)nv — hikalium自作言語 (1:08:46)Intelも使っているXbyak(カイビャク) (1:14:46)インターンコンバージョン (1:14:54)コーディング面接は対策して当たるべき (1:17:32)Intel and AT&T syntaxasmiumブルームフィルタASKAアセンブラGoのアセンブラXbyak(カイビャク)Xbyakを使っているIntelのディープニューラルネットワークライブラリハッカーのたのしみ(本)Hacker's Delight第2版の無料の章GoのWaitGroupWaitGroupのバグPOPCNTGoのPNGライブラリで使われている分岐なしabs関数サイボウズ・ラボユース募集要項nvGoogleの公式モックインタビュー動画StanfordのCS9の資料
  • Androidのテキスト処理を担当しているのなさんと、UnicodeやUnicode絵文字、テキスト処理の複雑さ、文字トリビアなどについて話をしました。

    出演者: のな (@ttuusskk)、Rui Ueyama (@rui314)

    https://turingcomplete.fm/12

    ハッシュタグは#tcfmです。

    TCFMはサポーターの投げ銭によって収益を上げています。このコンテンツに課金してもいいよという方はぜひクリエイター支援サイトPatreonから登録してご協力ください。

    イントロ (0:00)自分の読めない言語のテキスト処理は大変 (1:28)MMDDYYYYとDDMMYYYYの違いによる国際化バグ (3:07)Left-to-right言語とright-to-left言語 (5:23)アラビア語と英語のハイフネーション (6:15)日本語の禁則処理 (7:19)Android Oで絵文字の表示が最大3倍速くなった (9:12)結合絵文字の規格が決まっていない状態で実装を書くのは大変 (12:23)国旗の絵文字の仕組みと仕様バグ (14:49)ハンバーガー絵文字では肉の上にチーズが乗っているべきか (18:18)絵文字はガラケー起源 (20:30)モヤイ像の絵文字はあるけどモアイ像の絵文字はない (23:42)ガラケーに存在したけどUnicodeに収録されなかった稀な絵文字 (24:52)新元号の合成文字 (27:28)ひらがなやカタカナはもっと若いコードポイントに割り当ててくれればよかった (30:49)UTF-8は新世界のASCII (33:40)英語はフォントの機能を比較的ふんだんに使う言語 (38:47)汎用的な数式プロセッサをフォントだけで作ることができるかも? (40:40)Unicode規格書の紙バージョン (42:42)JISの幽霊文字 (43:41)将棋の相手の駒の記号(上下逆の漢字)をUnicodeに追加したい (47:01)100万文字は十分か (50:32)Unicodeの文字名称の規格バグ (52:12)Swiftは文字がgrapheme単位 (53:47)Goだとコードポイント単位 (55:21)ミャンマーのZawgyiフォントがUnicodeの既存の文字を勝手に使っている (57:50)東アジアのコンピュータ用文字セットの歴史的経緯 (1:00:36)ハイフネーションは多種多様 (1:03:00)最近の多言語処理はコンピュータの金字塔の一つ (1:05:38)Android Oでは明朝体が標準で入るかもしれない (1:09:21)サブピクセルレンダリング (1:15:20)のなさんによる絵文字の解説UnicodeUTF-8ハンバーガー絵文字とチーズの位置問題リガチャー(合字)ß (エスツェット)幽霊文字ビャンビャン麺Ponanzaのために作られた将棋の相手の駒の外事チェスの駒のUnicode記号ドミノタイルのUnicode記号Unicodeの麻雀牌Brakcetモヤイ像(「イースター島のモアイ像に似た日本の石像の絵文字」として定義されている)Rob PikeによるUTF-8の歴史Zawgyi fontO'ReillyのCJKV本(フグ本)キリル文字モンゴル文字満洲文字Notoフォント明朝体アンチエイリアシングサブピクセルレンダリングペンタイル

    追記

    JIS委員会が何の手がかりも得られなかった文字は「妛」ではなく「彁」です。