ハクソク

世界を動かす技術を、日本語で。

ジェフ・ディーンの真実

概要

  • Jeff Dean FactsはGoogleの伝説的エンジニアJeff Deanにまつわるジョーク集
  • Chuck Norrisジョークのプログラマー版として世界中で親しまれている
  • 元はQuoraなど複数のウェブサイトから収集・編集されたもの
  • 一部は実話、ほとんどは誇張されたユーモアが中心
  • 本記事では代表的なジョークとその出典を日本語で紹介

Jeff Dean Facts(Jeff Dean伝説ジョーク集)

  • Jeff DeanはP=NPを証明、ホワイトボード上で全てのNP問題を多項式時間で解決
  • Jeff DeanのPINコードは円周率の下4桁
  • StanfordでのJeffのセミナーは満員で、Don Knuthが床に座ることも(事実)
  • Jeff Deanがクモを噛むと、クモはスーパーパワーとC++可読性を獲得
  • 2002年、Googleのインデックスサーバーが停止した際、Jeffが2時間手動でユーザーの検索に対応、品質評価が5ポイント向上
  • Jeff Deanはレベル10が最大の評価システムでレベル11に昇進(事実)
  • Google SearchはJeff DeanのNooglerプロジェクト(入社時プロジェクト)
  • パンツを履く動作もO(log n)の効率を実現
  • Sawzall可読性を58行で獲得、スタイルガイドの欠陥も指摘
  • Sanjayが「ウェブ全体を記憶できるか?」と質問、JeffはMustangを書いて返答
  • Jeff Deanはコード提出前にコンパイルと実行、バグの有無はCPUやコンパイラ側を疑う
  • 定数時間に満足せず、O(1/n)アルゴリズムを発明
  • バイナリ可読性・書き込み能力
  • Jeffが休暇を取るとGoogle全体のサービスが停止しがち(事実とされる)
  • ビットを強くシフトしすぎて別のコンピュータに移動させる
  • Google面接でP=NPの帰結を問われ、「P=0またはN=1」と即答し、ホワイトボードに秘密鍵を記述
  • 脳の10%はあなたが使用、残り90%はJeffのMapReduceジョブが稼働
  • Jeffの履歴書は未経験リストのみで短い
  • 「NP」はJeffにとって「No Problemo」
  • JeffのO(n^2)アルゴリズムは巡回セールスマン問題用
  • Jeffが他人の仕事を説明、逆は不要
  • 履歴書に目次があるほど業績多数
  • 非同期APIの発明は最適化しすぎて関数が呼び出し前に返ってきたため
  • USB2.0キーボードでコード生産速度40倍向上
  • バイナリから書き始め、ソースはドキュメントとして後付け
  • Peer ReviewでLarryをCEOに昇進させた
  • 「光あれ」と神が言ったとき、Jeffがコードレビュー
  • 電話を発明したGraham Bellが最初に見た不在着信はJeff Dean
  • コンパイラがJeffに警告される側
  • Jeffは実は自身が作ったAI
  • JeffのIDEはコード分析ではなくコード賞賛
  • ECCメモリ不要、宇宙線を予知して性能向上
  • Turingテストで203番目のフィボナッチ数を1秒未満で答え失格
  • Bigtableを自身の週報送信先として発明
  • 0日目に神を創造
  • printf()一発でWebサーバーを実装、後にGoogle Web Serverと呼ばれる
  • エルゴノミクス評価はキーボード保護のため
  • Connect Fourで3手で勝利
  • BigTable発明は自身の履歴書が大きすぎたため
  • Appleのロゴからかじり取ったのはJeff
  • kill -9すらJeffに敵わない
  • 正規表現でHTMLを正しくパース可能
  • 眠れない時はMapReduceで羊を数える
  • Jeffがプロファイラを起動するとループが自動展開で逃げる
  • 未定義動作時、Jeffのコードでは虹に乗ったユニコーンがアイスクリームを配る
  • sleep()不要、SIGSUSPENDで宇宙を一時停止
  • Java可読性を8行で取得
  • 抽象クラスのインスタンス化が可能
  • gcc -O4はJeffにコードを送り完全リライト
  • πの2万桁を5時間で暗唱(計算で再現、O(log n)空間)
  • パスワードは1つのみ、SHA-256でサイトごとに生成
  • πの数字に隠したジョークの発見を数学者に期待
  • Ctrlキー不要、常にコントロール状態
  • 1969年12月31日23:48生まれ、12分で最初のタイムカウンタを実装
  • 「Hello World」と言うと世界が「Hello Jeff」と返す
  • /dev/zeroから1を取得可能
  • Mordorにもそのまま歩いて入る
  • 20%タイムでAIプロジェクト、Urs Hoelzleが誕生
  • インデックス圧縮しすぎてブラックホール発生、データセンター移転
  • cat > /dev/memでプログラミング開始
  • 物理法則の最適化で光速が35mphから高速化
  • Jeffのコードレビューは学びのために送られる
  • sleep()ではなくwait()を使用
  • MapReduceの発明はファンレターのソートのため
  • Jeffがリストを注文するとリストが従う
  • Chuck NorrisはJeffの20%プロジェクト
  • SIGJEFFで終了したコードは二度と動かない
  • カレンダーは3月31日から4月2日へ、誰もJeffを騙せない
  • Jeffは番号を間違えない、相手が間違える
  • キーボードには0と1の2キーのみ
  • エラーはJeffを警告として扱う
  • クリケットの試合もJeffの最適化で短縮
  • 時計は1970年1月1日からの秒数を表示、遅刻しない
  • アセンブリコードはJeffのコードを止めるのにHALT命令3回必要
  • Emacsの好みのエディタはJeff
  • GoogleはJeffのサイドプロジェクト
  • コードを人間が書いたと信じさせるためにわざと非最適化
  • Websearchは本来のアプリのための大規模ユニットテスト
  • *スピーカー不要、cat .mp3で脳内再生
  • Perl可読性も取得済み(事実)
  • 洗濯物もクイックソート
  • OR ELSE構文はJeffの使用でISO Cから削除
  • 邪悪なコンストラクタを恐れず、逆に恐れられる
  • バグを書かず、他人が理解できない機能のみ
  • EmacsもVIも使わず、zcatに直接タイプ
  • Jeffのイーサネットフレームは衝突しない
  • バイナリサイズ3%削減とPythonバグの優先度変更を同時に、Pythonコード無しで実現
  • Etch-a-SketchでTetrisをプログラム
  • x86-64の未公開命令はJeff専用
  • Knuthの本にサインして返送
  • StallmanがJeffの自伝のためにKindle購入
  • ランダムデータもロスレス圧縮
  • 「111111」と返答、全てが真実と主張
  • 頭の中でビットコインをマイニング
  • KILLシグナルを捕捉可能
  • SEGFAULTしない、メモリ自体が最適配置

出典・参考元

  • Quora: https://www.quora.com/What-are-all-the-Jeff-Dean-facts
  • infO(N): ブルガリアのプログラミング大会関連サイト
  • 削除済みGoogle+スレッド: Redditユーザーによる引用
  • 注記: 一部事実かジョークか不明なものも含む

このリストはプログラマー文化の一端として、ユーモアリスペクトが詰まったもの。Jeff Dean本人も公認の「伝説」として世界中で語り継がれている。

Hackerたちの意見

大好き! > ジェフ・ディーンは、自分のコードを提出する前にコンパイルして実行するけど、コンパイラやCPUのバグをチェックするためだけなんだ。残念ながら、俺は「非ジェフ・ディーン」開発者たちでこれに遭遇したことがある。
一番のハイライトは、ジェフ・ディーンが自分のGoogle面接のときに「P=NPが真ならどうなるか?」って聞かれて、「P = 0 または N = 1」って答えたこと。面接官が笑い終わる前に、ジェフはGoogleの公開証明書を調べて、ホワイトボードに秘密鍵を書いちゃった。ジェフ・ディーンは一度O(n^2)のアルゴリズムを書いたことがある。それは旅行セールスマン問題のためで、俺はそれをチャック・ノリスのパロディとして読む方が多かった。
「チャック・ノリスの事実」は2000年代中頃のテキストオンリーのミームフォーマットだった。「チャック・ノリスはテニスの試合でレンガの壁を倒した唯一の男」とか「チャック・ノリスが腕立て伏せをするとき、彼は自分を押し上げるんじゃなくて、地球を押し下げる」とか。ジェフ・ディーンの事実も同じフォーマットを使ってる。チャック・ノリス本人とは関係ないよ。
[遅延]
「ジェフ・ディーンは一度ビットをすごくシフトさせたら、別のコンピュータに移動しちゃった」っていうのには、思わず笑っちゃった。
これは、1つのマウスで複数のコンピュータのマウスポインタを操作できるソフトウェアの基盤になってるんだ。
> ジェフ・ディーンが休暇に行くと、Google全体のプロダクションサービスが数日以内に謎の停止をする。これは実際に真実だ。…この事実が本当に真実か、単なるジョークの一部なのかは不明だから、いつもの(TRUE)識別子は省略したよ。解釈はお任せします :) これはちょっと真実っぽいと思う。昔、Googleがコーポレートやプロダクションドメインのために良いcronサービスを持っていなかった頃、ジェフ・ディーンのワークステーションは「プロトコルバッファデバッグデータベース」っていうものを作るジョブを実行してた(うろ覚えだけど)。基本的には、たくさんのチェックインされたprotobufのコンパイルされた.protoのイントロスペクションデータを含む大きなファイル(おそらくsstable)だった。それを使うと、通常は解読不能なデータから人間が読めるデバッグ出力を生成できた。プロダクション用途を意図していたわけではないと思うけど、いくつかのものがそれを使うべきではなかった。ジェフがしばらく休暇に行った後、彼の`prodaccess`資格情報が切れて、そのジョブが動かなくなって、出力が利用できなくなって、いくつかのものが壊れたんじゃないかな。これに関する真実の話がある:Googleリーダーを運営していたとき、Bigtableのレプリケーション遅延で頻繁に呼び出されて、最終的にはこのデータベースとGFSチャンクサーバーを共有しているファイルにアクセスするのが問題だとわかった。あるメーリングリストでそれを言及したら、すぐにジェフ・ディーンがそのファイルのレプリケーションをr=3からr=12に変更するコードレビューでCCしてくれた。問題は解決した。 [1] これは予想以上に長く続いた。
ジェフの机の下で長い間動いていたもう一つのものは、古いコード検索だった。
この「事実」を提出したんだけど、確かに君が言った通りの真実の話だよ。「グローバルprotobuf DB」には、プロダクションに重要なタスクには使わない方がいいってコメントがたくさんあったし、ジェフのデスクトップで作られた以外にも注意点や落とし穴がいっぱいあった。でも、便利すぎてみんな自然に使っちゃったんだよね。
ハハ、何年も経った今でもこのprotobuf DBの事実を覚えてるよ。もう一つのジェフ・ディーンの事実は「ラッス・コックスはジェフ・ディーンのインターンだった」ってこと。これが2006年か2007年、ラッスが始めた時期だと思う。ジェフとサンジェイが「gsearch」を書いた時のことを覚えてるよ。これはgoogle3で動く分散grepで、40台から80台のマシンで動いてたんだ。[1] 「Nooglers and the PDB」っていうトークシリーズがあったと思うけど、ジェフが小さな会議室で20人から40人くらいにgsearchを説明してたのを覚えてる。それは小さくてエレガントなコードで、C++で約2000行くらいだったかな。「indexer」(多分、全ファイルをcatしてメモリにマッピングしてた)や、レプリケートサーバー、クライアント、Borgの設定があった。indexerの認証はジェフのホームディレクトリにあったと思うけど、protobuf DBに似てたかも。それが俺が読んだ最初の「本物のGoogle C++分散システム」のコードで、目から鱗だったよ。--- そのトークの後、俺はそのディレクトリに小さなCLを提出したんだけど(サンジェイはちょっと引いてた気がするけど、ジェフは受け入れてくれた)。それから、他の変更が提出されてるのを見たくてPerforceで監視をかけたんだ。コードはしばらく眠ってたけど、後でラッス・コックスっていう人がたくさんの変更を提出し始めたんだ。それが公開のGoogle Code Search製品になったんだよ。[2] 俺の記憶では、ラッスは1つの夏に約3万行のgoogle3 C++を書いたんだ。そしてその後、RE2を書いた(俺はそれをBigtableなどで使った)。その作業の多くはここに書かれてるよ: https://swtch.com/~rsc/regexp/ 誰かがメーリングリストで「自分の正規表現エンジンを作るなんて無理だよ。PCREにはあまりにも多くのコーナーケースがあるから」って言ってたのを覚えてる。そして多くの人がラッス・コックスがGo言語の主要な貢献者の一人になったことを知ってる。Code Searchのインターンシップの後、彼はGoに取り組んで、2009年にオープンソースになったんだ。--- [1] 実際、今の時代、64コアや128コアの単一マシンでこれがどれだけうまく動くのか気になるな。あの頃はプロダクションマシンが2、4、8コアくらいだったと思う。[2] これはオープンソースコード上のトライグラム正規表現検索だった。その後、スティーブ・イェッジが主導したコンパイラのフロントエンドを使った構造化検索もあった。
2010年、中国のハッキング事件があって、Googleはネットワークをかなり厳重にしたんだよね。少なくとも1つのサービスがダウンしちゃったのは、ジェフ・ディーンの個人用PCで動いてたジョブに依存してたからで、そのPCはもうアクセスできなくなってたんだ。残念ながら、そのジョブが何だったかは忘れちゃった。
私の3つ目のネタ:グラハム・ベルが電話を発明したとき、彼はジェフ・ディーンからの不在着信を見た。ジェフ・ディーンのPINはπの最後の4桁。若い頃、ジェフ・ディーンはエッチ・ア・スケッチを再プログラムしてテトリスをプレイさせた。
ねえ!ジェフ・ディーンの事実を作ったよ!ジョークそのものじゃなくて、それを集めたサイトね。たしか2008年だったと思う(1年ぐらいの誤差はあるけど、覚えてない)。その時、Googleで働いてたんだ。チャック・ノリスの事実は人気のインターネットミームだった(彼がMAGAを支持したときに少し影が薄くなったと思うけど、話がそれるね…)。同僚(匿名希望)がジェフ・ディーンの事実のアイデアは面白いだろうって思って、4月1日が近づいてたんだ。その時、プロメテウスっていうコードネームの実験的なウェブアプリホスティングプラットフォームのチームがあって、後にApp Engineとしてリリースされた。初期の内部ビルドを使って、みんながジェフ・ディーンについての「事実」を投稿したり、お互いの事実を5つ星で評価したり、トップ評価の事実を見たりできるウェブサイトを作ったんだ。すべて匿名だった。俺より面白い同僚がいくつかの初期の事実を埋めてくれた。プロメテウスのバグをいくつか見つけて、チームは俺の「ローンチ日」である4月1日に間に合うようにすぐに修正してくれた。:) その日、たしか日曜日の早朝に、会社全体の「misc」メーリングリスト(もしくはeng-miscだったかも?)に偽のメールアドレス(プライベートメンバーシップのGoogleグループのエイリアス)からメールを送って、メーリングリストのモデレーターに承認してもらった。ジェフがバックエンドサーバーをハッキングして俺の正体を突き止めるのに1、2時間しかかからなかったけど、みんな楽しんでくれた!唯一の後悔は、サイトをジェフに特化させて、サンジェイ・ゲマワットにはしなかったこと。あの頃、ジェフとサンジェイは一緒に何でもやってて、Googleのコア技術をたくさん発明してた(今でもどの程度一緒に働いているのかはわからない)。サイトはジョークだったけど、ジェフをサンジェイよりも上に引き上げる副作用があったと思う。それは意図したことじゃなかった。実際、ジェフをターゲットにした唯一の理由は、彼の性格的にちょっとからかいやすいからで、「ジェフ・ディーンの事実」っていうのが「サンジェイ・ゲマワットの事実」よりも言いやすいからなんだけど、振り返るとちょっと人種差別的に感じる。 :( 私のお気に入りのジョークは、ジェフ・ディーンは片足ずつズボンを履くけど、もし彼が2本以上の足を持っていたら、彼のアプローチは実際にはO(log n)だってこと。
なんでちょっと人種差別的に感じるの?
専門家じゃないけど、あれを人種差別だとは絶対に言わないよ。バイアスはあるけど、それを認めることが大事だよね。でも、もっと字義通りに言うと、君のジョークが受け入れられる可能性は、君が言ったことや、オーディエンスのバイアスによって高くなったんじゃないかな。俺は君のジョークがサンジェイに対して何か害を及ぼすとは思わないけど、ジェフ・ディーンがもっと人気になることでの影響はあるかもしれない。でも、もし君が自分の行動のすべての二次的、三次的な結果を計算しようとしたら、ましてやユーモアの瞬間まで考慮に入れたら…まあ、今すぐ自分を閉じ込めた方がいいかもね。
ああ、ジェフとサンジェイの友情を認識してたのは知ってたよ。彼らは2018年のニューヨーカーの記事の対象だったんだ: https://www.newyorker.com/magazine/2018/12/10/the-friendship... 編集: その時のHNも: https://news.ycombinator.com/item?id=18588697
あのミームは2007年の初めに始まったと思う。俺は2006年に始めて、2008年にはZRHにいたから、その移動のずっと前からあったよ。
https://static.googleusercontent.com/media/research.google.c... 俺にとっては、これが彼の最高の作品のままだね。
俺はあんまり技術的じゃないから、ほとんどのことはすぐに理解できないけど、ジェフ・ディーンのインタビューをたくさん見た後だと、10倍から100倍のエンジニアがこんなに長いキャリアをどうやって築いているのかを見るのがすごく楽しいよ(しかも普通で優しい人っぽいし)。
ニューヨーカーが数年前にジェフ・ディーンとサンジェイ・ゲマワットについて面白い記事を掲載したよ - 「Googleを巨大にした友情」[0] [0]: https://www.newyorker.com/magazine/2018/12/10/the-friendship...
> ジェフは一度に全てのバイナリサイズを3%削減し、以前から知られていた低優先度のPythonバグの重大度をクリティカル優先度に引き上げたことがあるんだ。それもPythonコードを含まない変更でね。これ、すごくあり得そうだよね。Cツールチェーンやライブラリへの変更(例えば、特化した/インラインのmemcpyなど)がバイナリサイズに大きく影響することもあるし、C標準が未定義としている何かの動作を変えることもあるから(例えば、重複した引数を持つmemcpyとか)。