Spinach Forest

July, 2025

/ 気象庁データダンプ(をくれ!)   / 夏休み終了   / O'Reilly Safari   /   / Chinese AI Envy   / Force-Uploading Cloudflare Pages   /   /   /   /   /   /   / 音声コンテンツ中毒   /   /   /   /   /   /   / Reading gemini-cli #2   / Gemini-CLI in Obsidian Vault   / Reading gemini-cli #1   /   /   /   /   / More Links   / "Malleable software"   /   /   / TIL: Select Multiple Tabs in Chrome   / Anytype   /   /   / Cracking The Form Factor   / Blogging Platform 遍歴四半世紀   / Hyprland   /   /   / Obsidian Sync   / Native Tongue   / Dana Street Roasting Company   / Colossus   /   /   /   /   /   / Hugo on Obsidian   / ... 

気象庁データダンプ(をくれ!)

「東京は暑くてムリ」「チャットによると仙台は涼しいらしいよ」「天気予報見てたら仙台も暑かったよ」という会話があったので、どこかにデータないかな・・・と調べたら気象庁にあった

がしかし、CSV のダウンロードサイズ制限厳しすぎてだりーしかも Shift-JIS と来たもんだ・・・

が、めげず、いい機会だから Colab に逃げるのをぐっと我慢し simonw も推薦する marimo で適当に可視化。チャットインテグレーションがあるのでデータの整形もかんたーん、といいたいところだが Pandas のコードはどうがんばってもゴミ化しがちなのでさっさと諦め duckdb で reshape. いい時代になったもんです。

仙台、2022 までは涼しかったが 23, 24, 25 と三年続けて8月の最高気温平均が 30 度を大幅に超えており、仙台が涼しい時代は終わっていたらしい。

それはさておきいくら marimo と duckdb が素晴らしくても気象庁の SJIS CSV データダウンロードのサイズ制限がある限りこれ以上 EDA する気が起きないんだけど、どっかにデータダンプないんですかね・・・ GCP に置いて BigQuery 使わせろ・・・とはいいません AWS と Parquet でいいから!たのむ!

FAQ を見たところ 気象業務支援センター Japan Meteorological Business Support Center から磁気メディアで買えるらしいまじか・・・俺達の税金(払ってないけど)・・・。

Bot でも書いてぜんぶぶっこ抜くか・・・とおもいページを眺めると:

  • アクセス集中の原因となりますので、自動化ツール等による過度のアクセスはお控えいただくようお願いいたします。

おまえらがそのデータを BQ なり S3 … じゃなくていいいですよ Torrent にでも流してくれれば!アクセスは!!集中しないんだよ!!!アホか!!!!

クラウド業者の営業のひと、がんばって気象庁を説得してデータをホストしてあげて!人類のためだから!

追記

こんなかんじ

追記2

気象庁|過去の気象データ検索 このページを scrape すれば必要なデータは取得できそうである。

夏休み終了

妻子が滞在先の埼玉(妻実家)から帰ってきて、夏休みが終わった。今年は一ヶ月半くらいと長め。

去年の記録を眺める…

毎度生産的に過ごそうと試み、失敗に終わるのを繰り返している。ただ「生産的」というのは「なんかコードでも書く」という意味であって、コード以外で何らかの活動はしている。たとえば去年は子供ができて以来完全焼け野原になっていた金銭リテラシーの立て直しをしていた。八年くらい野放しだったせいで大損していたことがわかったが、何もしないでいるよりは良かった。

今年もコードは書かないがそれ以外はまあまあ生産的、という傾向だった。

  • 最初の二週間くらいは、時差ボケ、猫のノミ退治、気温ギャップへの不適応などで体調不良であった、
  • 加えて減量のため OMAD (one meal a day) をしたり、週末に three days fast をしたりと栄養失調気味だったので、この期間は何かが捗るはずもなかった。なお減量は概ね目標を達成できた。「生産的」というのには抵抗があるが、なにかを達成はしている。
  • 減量後、食事の見直しが必要ということで “Ultra-Processed People: The Science Behind Food That Isn’t Food” と “Fat Chance: Beating the Odds Against Sugar, Processed Food, Obesity, and Disease” を Audible で聞いた。以前読んだ “Salt Sugar Fat: How the Food Giants Hooked Us” と同系列の本だが食事のあり方に踏み込んだ内容で、減量後は low carb しつつ肉と野菜を食べる暮らしをしている。
  • Low carb 化にあわせて色々レシピを研究し、色々料理した。おかげでコメ、麺、パンに頼らず肉と野菜を食べるスキルが高まった、と思う。あと以前からやってみたかった meal prep (バッチで一週間分の晩飯を作り食べ続ける) もやってみた。他人に勧めるものではないが、試せたのは良かった。時短にはなるので来年も機会があればやりたい。
  • Audible といえば料理や散歩など耳の空いている時間が長かったので “Trust the Plan” と “Apple in China” の二冊を聞くことが出来てよかった。普段は Audible を聞くガッツがわかないことが多いけれど、ヒマがあると聞ける。
  • ただし後半は audio book も聴き過ぎで食傷し「若かった頃に好きだった音楽をかけながらダラダラ料理をする」というプレイを見出した。これは、よかった。
  • これまで「日本の歌を聴く」という行為から opt-out していたけど、久しぶりに聴くと良いものですね。日本語だからというのではなく、若いころ魂に刻み込まれた曲を再生するというのが良い。誰かがこれを「音楽の comfort food」と読んでいたけど、ほんとそんなかんじ。昔デスマ中に聴きすぎたせいでトラウマになっていた曲たちも、ダラダラ料理しながら聴き直すことで厄払いできた気がする。
  • 料理も、時間に追われず好きなペースで好きなものを作るのは良いものです。はい。たとえば chicken thigh 4lb を起点に唐揚げとフライドチキンを揚げ続け、きままにつまみ食いし、あとは全部冷凍、みたいなプレイ。(野菜も用意しておいて一緒にたべます。)
  • カロリー低めで筋肉量低下が心配なため、二週間前くらいから夜に筋トレを始めた。これがコード書いたりできない原因の一つかもな。筋トレ思ったより嫌いじゃないけど、終わるとくたびれてなんもやる気にならないのだよね。
  • あと、そういえばこのブログを Obsidian+Hugo に移行できた。

総体としては: ランダムな思いつきで時間を溶かす贅沢を通じ気分転換できた。仕事家事子守があると「楽しい」とか「無駄」みたいのが失われがち。夏休みくらい、そういうことしてもいいよね。あとは妻にもそういう機会を持ってほしいものだけれども、それはまた別の話。

O'Reilly Safari

OpenTelemetry でも冷やかすか、とウェブサイトをみるが、そういえば本ないのかなと探すと O’Reilly から Learning OpenTelemetry というのが出ている。そういえば、今年の ACM 会員費を会社にたかる請求するにあたって “Learning もつけていいよ” というのでつけたのだった。出番なのでは、ということで O’Reilly のサイトでログインしてみる。ついでにアプリもダウンロードする。

会社のカネで見ているものなので文句も言えないが、相変わらずアプリのできが悪いねー。自社コンテンツ独占なせいか、やる気がない。むかしは PDF がダウンロードできた気がするけれど、それもなくなっているし(文句は言えないが。)

なお世の中にはこのコンテンツをダウンロードして epub 化するスクリプトがある。

GitHub - lorenzodifuccia/safaribooks: Download and generate EPUB of your favorite books from O’Reilly Learning (aka Safari Books Online) library.

しかしこれは ACM などで SSO ログインしていると使うのが大変かったるいので、まあ O’Reilly アプリで我慢するか・・・という気になるのだった。

Jul 28, 2025 20:07

Canalys Newsroom - US smartphone market grows 1% in Q2 2025, as Made-in-India shipments surge amid tariff risks

Apple in China: The Capture of the World’s Greatest Company made me intrigued by this kind of news.

So all the parts are still made in China. What Apple etc does is to ship these parts to India. I guess this hurts Apple than its does China.

Given China and India is in the same continent, I wonder if it makes sense for Apple to shift the factory from east part China to west - the dessert or farming region (I imagine). If that happens it can be blessing for Chinese people since they would get the employment which it would never get otherwise.

Interesting times.

Chinese AI Envy

GLM-4.5: Reasoning, Coding, and Agentic Abililties

Another, new, huge, open-weight foundation model coming out from a Chinese AI lab. How many do we have something similar outside China today? It’s astonishing. They’re supposed to have limited GPU supply but it doesn’t seem to matter.1

The Coder ‘Village’ at the Heart of China’s A.I. Frenzy - The New York Times

This article portrays the life at a “AI town” in China which has strong ties to both an “Ivy league”-esque University there and the industry players like Alibaba. It’s kind of like San Francisco but they’re doing it in open-weight ways.

For these catching up players there are strategic values to be open-weight, and there is no way to see this as a pure altruism. But it doesn’t matter.

Well, it doesn’t matter if you’re one of the researchers or engineers working on these big frontier models. There are so many players in their own country! They are competitors but they must be friends too. And they’re all trolling (or even dominating) the US closed model players. How exciting it is to be in such a possibly once-in-a-lifetime moment. I cannot imagine.


  1. Japanese IME stopped working on new Obsidian installation on my corp laptop so here you go… ↩︎

Force-Uploading Cloudflare Pages

ブログ内のリンクが間違っていたので修正し、Cloudflare にアップロードしなおす、が、反映されない。試行錯誤の記録:

  • ブラウザキャッシュを疑う -> そんなん最初に試すわ。
  • “Clouflare Caching” を疑う -> Cloudflare Pages は Caching を (直接) は使っていないので、対処のしようがない。
  • コンテンツをカラにして deploy し、そのあとオリジナルのコンテンツを deploy しなおす -> コンテンツをカラにするとファイルは消えるが、オリジナルのコンテンツに戻そうとすると古いファイルが復活する。なんなの。
  • リンクではない可視な部分を変更して deploy し、そのあと変更した部分をもとに戻して deploy しなおす -> It worked!!!
    • 具体的には Hugo の設定でタイトルをかえ、またもとに戻しました。

邪推としては、コンテンツ一致判定 (hashing) のアルゴリズムになんらかの heuristics を使っており、その heuristics にバグがある。ま、タダ乗りユーザなんでワークアラウンドできたのでよしとします。

ちなみに http://localhost:1313/ へのリンクが残っているというちょー恥ずかしい間違いだったので、なんとしても直したかったのだった (たぶん hugo serve のデータがアップロードのち残留してしまった)。

cf. VibeCon - the biggest vibe coding conference! : r/ChatGPTCoding

追記: pages deploy --skip-caching

念の為に コード を読んでいたら pages deploy には --skip-caching というフラグがあり、ためしたかんじこれで確実に回避できそうである。--help でリストされるようにしといてくれよ・・・

Jul 24, 2025 20:07

NVIDIA is full of shit - Sebin’s Blog

君がなんと言おうとあいつらの株価と近所の家の売価は上がり続けているぞ。

Jul 24, 2025 20:05

The Unsustainability of Moore’s Law - by Charles Rosenbauer

Roughly every five years, the cost to build a factory for making such chips doubles, and the number of companies that can do it halves. 25 years ago, there were about 40 such companies and the cost to build a fab was about $2-4 billion. Today, there are either two or three such companies left (depending on your optimism toward Intel) and the cost to build a fab is in excess of $100 billion. Project these trends forward another ten years and you can expect a single factory to cost nearly half a trillion dollars, and the number of companies that can do it should drop to less than one.

人類これ以上 CPU 作るのムリなのでは、という気分になるが、

Highly parallel chips designed from the ground up for extremely high defect tolerance could perhaps be manufactured with a vastly lower-quality, and by extension vastly cheaper chip fab.

 I’m currently raising some pre-seed funds, aiming to build high-performance, high-efficiency, general-purpose CPUs designed from first principles. I’m also increasingly convinced that, with the right compromises and specialization, a startup-scale fab may be viable and is at least well-worth the experiment.

という求人への長いフリなのだった。Cerebras が似たようなことを言っていましたね。

100x Defect Tolerance: How Cerebras Solved the Yield Problem - Cerebras


字数の大半はチップ細微化の不可能性を長々と説明していて、そこは面白い。

Jul 24, 2025 20:03

The Academic Pipeline Stall: Why Industry Must Stand for Academia – ACM SIGOPS

NSF の funding が切られたという話。アカデミアの皆様はヨーロッパなりアジアなりにお越しください。Hahaha.

Jul 24, 2025 20:02

Daniel Sada Caraveo – The broken Microsoft Pact: Layoffs and Performance Management – Software, Notes & Culture

The deal was simple: We’ll pay you 20-50% below market rate, but in exchange, you get stability, reasonable work-life balance, and most importantly, no layoffs. This wasn’t written in any employee handbook, but everyone understood it. It was the Microsoft way.

あの日までは南の方で Google 社員も似たような幻想を抱いていた旨をお知らせします。

そんな Pact を反故にした社長のお言葉ですが・・・

Recommitting to our why, what, and how - The Official Microsoft Blog

By every objective measure, Microsoft is thriving—our market performance, strategic positioning, and growth all point up and to the right. (…) And yet, at the same time, we’ve undergone layoffs.

This is the enigma of success in an industry that has no franchise value.

きみたちめっちゃ franchise value で生きてるじゃんか!!検索みたいにエーアイに殺される心配もないじゃんか!!何いってんだ!!なでらっち、最近ちょっと Zuck 氏みたいなサイコパスになってきてない? Sam Altman にフラレて性格変わっちゃったのかい?

Jul 24, 2025 20:01

Happy 20th birthday Django! Here’s my talk on Django Origins from Django’s 10th

Django 生誕秘話、という以前に Simon Willison キャリア振り返り講演だった。なぜ Datasette みたいなもを作っているのか不思議だったけど、一時期新聞社で働いていたのだね。

ゼロ年代の香り漂ういい(おっさん向けの)話でした。

Jul 24, 2025 19:07

Using the Matrix Cores of AMD RDNA 4 architecture GPUs - AMD GPUOpen

本題はさておき珍しく日本人のひとが書いていると思ったら、二人目の方は東京とある。日本に開発拠点あったんだな AMD.

求人を覗くと:

Senior Staff, GPU Software Development Engineer in Tokyo, Japan | Advanced Micro Devices, Inc

Senior staff の求人とか日本で取れるんかいなと思わなくもないが、ゲーム会社とかにはいるな。そもそも日本に求人があるのも SONY や Nintendo のような AMD APU を採用したコンソールの会社があるからなのだろうし。


本題としては WMMA って CUDA にもあったなあと思い出すと同時に以下の記事も思い出した。

GPUs Go Brrr · Hazy Research

しかしこの記事に出てくるのは W-G-MMA だったわ。しかし一番最後に

Coming soon – ThunderKittens on AMD hardware!

とありますね。上の AMD WMMA は async とか sizzle とかおかしなことは言っていないので、一周遅れという味方もできるし素朴で良いとも言える。

論文: [2410.20399] ThunderKittens: Simple, Fast, and Adorable AI Kernels

音声コンテンツ中毒

家族帰省中につき家に独り身なので家事雑用食事などをしつつ無限に音声コンテンツ (podcast, audible) を消化していたが、doomscroll に似たダメさがあることに気づいた。アタマのスペースが他人の言葉に埋められ、思考停止してしまう。

20 世紀によく見られたつけっぱなしのテレビに似ているが、一面ではよりたちが悪い。テレビ(地上波)というのは必ずしも自分の関心との相関が高くないので、無視しやすいし、大半の時間は無視されている。一方でインターネットの音声コンテンツは自分が楽しめそうなものをより好んで選ぶから、退屈さが低い。なので無視しないし、できない。

イヤホンで聞くと、また一層よくない。コンテンツが常に環境音に勝る。なおさら無視できないし、外界の刺激から切り離される。

あるとき、イヤホンをつけた瞬間にピタリと考え事が止まって脳がコンテンツ待ち状態に入ったのに気づいた。何も聞く前からすでに脳死している。

また別のある日、聞いていた podcast でホストの一人が「壊れたイヤホンを修理に出したら返ってくるまで一週間かかって、その間はまったく miserable だった」と愚痴ていた。依存じゃん。そして自分も一緒じゃん。

そこでまずイヤホンをやめて小型スピーカーから音を出してみた。生活音が混じって生活を覆い隠す感じがなくなったのはいいが、話の内容が気になるのに聞こえにくいのはそれはそれでストレス。気になるコンテンツが流れている時点で負けているのかもしれない。

そこで音声コンテンツ・・・というか podcast および audible をやめて音楽をスピーカーから流してみた。これは、いいんじゃないか。生活音でかき消されても気にならないし、脳の占有率も低い。端的にいうと podcast を聞きながらの考え事はむずかしいが、音楽を聞きながらはさほど問題ない。歌詞が気になることはゼロじゃないけれど、人の話よりは桁違いに平和。しかも音量を絞ることで attention budget を減らせるのである!べんりー。

ただ年をとったせいか「好きな音楽」というものが枯渇しているので、そこはなんとかしたい。もっとも家族が帰ってきたあと音楽をかける時間があるのかは不明。暇さ固有の問題なのかもしれない。

Jul 22, 2025 15:07

Qwen3-Coder: Agentic Coding in the World | Qwen

400B か。人々頑張って distill などしてローカルで動くようになればいいなあ。まあ Alibaba はクラウドを売りたいだろうからモチベーション低そうだけど。

GitHub - QwenLM/qwen-code: qwen-code is a coding agent that lives in digital world.

qwen-code, 親しみのあるディレクトリ構成だなとおもったら gemini-cli のフォークだった。仲良くしてほしいけど geopolitics 的にムリだろうなあ。悲しみ。

Jul 22, 2025 14:07

🦊 How to Firefox - Kaushik Gopal’s Website

Ads-blocker はさておき、モバイルで拡張を使えるのはいいな。

拡張の API は簡単っぽい。

しかし (persistent な) sideload はできない。これは Chrome と一緒。残念。

Android アプリは sideload できるのにブラウザ拡張が sideload できないの、ほんと残念だよな。デスクトップのセキュリティモデル (悪意あるアプリが勝手に拡張を sideload できる)に合わせているからなわけだけれど。ブラウザのこうした野良プログラマビリティの低さは自由を殺していませんか。言いがかりかもしらんけど、せめて beta channel では OK とかのフラグで穴をあけらえるとか、妥協をしてほしい (unbranded build ではできるらしいが、それは不便すぎです)


…と思ってチャットに聞いたところ, web-ext コマンドは sign ができるらしい! へーそれでいいのでは? そのうち一度気合をいれて Firefox 再挑戦しないとな。

Jul 22, 2025 13:07

Introducing Pedalboard: Spotify’s Audio Effects Library for Python | Spotify Engineering

最近 podcast やってないから遊ぶ題材がなくて残念。

Jul 22, 2025 10:07

Apple almost open-sourced its AI models, here’s why it didn’t: report - 9to5Mac

Federighi said he was more concerned the public would believe Apple was making too many compromises to get the software running on iPhones, the people said.

secret sauce を隠したいのかと思いきや、出遅れている事実を隠したいという判断なのか…

Jul 21, 2025 14:07

Google solves its Pixel 10 leaks by just showing us the phone | The Verge

なぜあと一ヶ月待たない・・・うっかりリークを織り込み済みということだろうか・・・

わたくしは出荷前ラッシュでわりかし猛然と働き1 降ってきた主要なバグを全部直したのでプチ燃え尽き気味。本日はスローに働いておりますが、本当はこういうタイミングこそ色々仕込み作業や借金返済をしないといけないのだよねー。しかし借金=作業バックログをみたらいっぱいありすぎてどんよりしてしまう。まず作業優先で放置してしまったこの借金リストを整理したいと思います。やれやれ。


  1. 九時五時ではある。 ↩︎

Jul 21, 2025 11:07

Outdoor physical activity is more beneficial than indoor physical activity for cognition in young people - ScienceDirect

11-13 歳相手の調査らしい。大人についても調べてほしい。

Reading gemini-cli #2

さて今日は core を眺めようねー。

Code Assist

  • CLI 側からよくアクセスされていたのは GeminiClient. こいつは core 側の色々な機能の facade だと思えば良さそうである。
  • Facade されているオブジェクトの一つ ContentGenerator インターフェイスを見てみると・・・異なる API endpoints の差分を吸収している。具体的にはなぜなら API キーは GCP を使う勢は普通の Gemini API が使えるが、Google Sign-in 勢は code assist という別の API に依存しているからである!わー大変残念。
    • Code Assist というのは VS Code などのプラグインで、全然話題にならなかった。一方 gemini-cli はそれなりに buzz り、その一因は google sign-in で使える手軽さだったと思うので、統一 API の登場をまたず重複を受け入れる判断はビジネス的には正しかったと言えよう。絵に書いたような tech debt のケーススタディーとして記憶しておいてあげます。がんばった。
    • Code Assist API/SDK というのは公式には存在しないので、types.ts を見ると色々なものを社内からコピーした様子が伺えて趣深い。(なお公平を期すために書いておくと、多くの型情報は genai SDKから再利用されている。)
    • いやーがんばってるね。

GeminiChat

  • さてゴシップでそれた脇道から復帰し続きを読むと・・・
    • ContentGeneratorGenAI SDK の API の subset だということがわかる。つまり Code Assist を公式 API の signature にあわせる bridge だった。
  • もう一つのメジャーなクラスは GeminiChat. これは ContentGenerator を wrap してオンメモリの history を保持したりする。ところで JS いつの間にか yield が入っていたのだね1。チャットの結果はストリームなので大活躍している。
    • しかしこんなにコードいっぱい書かないとダメとは随分 low-level だな・・・とおもっていたら、DISCLAIMER: This is a copied version of ... with the intention of working around a key bug とのことで、普通は SDK を使えば良い。
  • さて GeminiClient に戻ると、--full-context というフラグをつけるとディレクトリのファイルを全部突っ込む機能があり、その処理がある。1M token 贅沢に使ってこうな、という話か。
  • あとは built-in のツールを登録したりとか。

prompts.ts

  • お、System Prompt など各種 prompt の定義された prompts.ts があった!見どころの一つ(のはず)。
  • Mobile App: Compose Multiplatform (Kotlin Multiplatform) or Flutter (Dart) using Material Design libraries and principles, when sharing code between Android and iOS. Jetpack Compose (Kotlin JVM) with Material Design principles or SwiftUI (Swift) for native apps targeted at either Android or iOS, respectively.
  • シレっと Flutter 推すのやめてくれませんかね・・・
  • Parallelism: Execute multiple independent tool calls in parallel when feasible (i.e. searching the codebase).
  • そんなことできるんだ!たしかにサーチが並列に動いてる時あるよな。実装みておきたいところ。

  • few-shot 的なものは <example> タグで囲んでいる。へえ。

  • plan を立てろと序盤に書いてあり、Plan 提案例が <example> に入っている。 しかしそこでは plan を箇条書きして許可を求めあとは agentic に動いてしまうので、ステップごとに一旦止まるとか計画をファイルに書くとかしたい場合は GEMINI.md で上書きしないとダメそうだな。

    • が、よくみると環境変数 GEMINI_SYSTEM_MD を使うと .gemini/system.md or お好みのパスから上書きできるらしい。いいじゃない!自分の Obsidian helper はコード関係の system prompt まったく必要ないからな。
  • そのほかヒストリ圧縮機能のプロンプトもここにある。君はツールじゃないのかい? とおもったが、history のような内部構造はツールからはアクセスできないな。

  • さて GeminiChat に戻ると generateEmbedding() なんてのがあるね。何に使うだろうか -> 使われていない。SDK コピペの残骸か。

  • GeminiChat は切り上げ他のファイルも眺めましょう。

  • はて、ところで昨日は gemini-cli はクライアント・サーバだと書いたけれど、全然クライアントサーバじゃないね。UI とロジックが切り分けてあるだけで。まあその方が自然だと思うけれど。

    • architecture.md を見直すと backend とは言っているが server とは言っていないな。私の思い違いでした。

logger.ts

  • core/src/index.ts をじっとにらみ・・・
  • logger.ts いってみっか。
  • メッセージをファイルに書きます。次回起動時に続行できます。
  • へーと思い .gemini にある logs.json を見ると、ユーザ(自分)のメッセージしかない。はて?コードを確認すると、たしかにユーザのログしか書いてない。なんか嬉しいのそれ?
  • というと、user input の UI から “↑” キーで履歴を戻るためのものらしい。それめっちゃ UI の機能じゃん・・・。
  • それとは別に、オンメモリのフル履歴を checkpoint する機能もこのファイルに定義されている。それ全然別物だろ・・・ダメだなこのコードは・・・。

sendMessageStream

  • 次に turn.ts. これは Chat へのメッセージ送信を微妙なかんじにラップする Turn クラスを定義する。 Turn.run() メソッドが生えている。
  • ここでは tool call をハンドル…はせず、tool call request を抜き出して呼び出しもとから使えるようラップする。
  • Turnclient.tsGeminiClient.sendMessageStream() メソッドから呼ばれている。そしてよく見るとこの sendMessageStream がいわゆる agentic loop ですね。
    • Turn を介してリクエストを送る。すると Tool call が返ってきたり来なかったりするので、それを必要に応じて処理する。
    • このコードからわかることは、ツールの並列呼び出しはモデルがネイティブにサポートしているのだね。複数の tool call request が返ってくる。
  • というか、tool call にせよその他の返事にせよ、全部 ServerGeminiStreamEvent として yield され、呼び出し側にストリームされる。(つまり sendMessageStream() は generator である。)
    • ServerGeminiStreamEvent は turn.ts に定義されている。
    • これが client.ts の呼び出し側から参照されるんだから依存関係はグチャグチャだな・・・。
  • したがって tool call をハンドルするのは GeminiClient の利用者である。しかしどうやってサーバに結果返すの?
  • というのを調べるべく、長い旅が始まります。

CoreToolScheduler

  • Tool call のための入口は CoreToolScheduler です。
    • coreToolScheduler.ts
    • そしてついになる UI 側の useToolScheduler.ts というのがある。
    • Core が tool call の状態遷移を管理して色々なイベントを発行し、UI 側がそのイベントに応じて仕事をして返す、というかんじ。
    • 仕事とは、UI の表示のみならず、実行許可の確認などもある。
    • そういう確認がおわるとツールを実s行し、全部のツールの実行が終わるとコールバックを呼びます。

ToolRegistry and MCP

  • ツールは tools.ts にインターフェイスがあり、tool-registory.ts に登録される。built-in tool はどこか最初の方で登録されていた気がする。MCP はどうなのかな?
  • ToolRegistory は初期化時に Config を呼んで MCP から tool を登録する。
  • そのコードは mcp-client.ts で、これは MCP SDK (というのがある) を gemini-cli 内の Tools のインターフェイスにつなぐという仕事をしています。めっちゃ相互依存してて失神しそうなひどいコードだが、これが若さの勢いなんだよ。
  • なお MCP 標準 は MPC server が tools 以外にも色々なデータなどを提供できることになっているが、みたかんじ gemini-cli は tools しかサポートしていない。まあ本家たる Claude Desktop でも実装されてない機能があるとどこかで読んだので、そういうものなのでしょう。
  • まあ MCP まわりにそんなに驚きはないね。あっても困るが。

checkNextSpeaker

さてツールの結果が出揃ったら(あるいはツールが必要なかったら) dMessageStream は checkNextSpeaker というのを呼びます (nextSpeakerChecker.ts。)

  • というのも、LLM からの返信は必ずしもユーザに戻るわけではなく、たとえばツールの結果をうけて LLM が仕事を続行したいかもしれないわけだ。
  • で、どう実装されているかというと、Gemini Flash に訊きます!たしかに NLP 得意だよな君たち!

今日はここまで。というかだいたい気が済んだので code reading は終了。これで何らかの疑問が生じた時にコードを眺めて調べるくらいはできることでしょう (React 部分除く。つまり半分はわかってない。Sigh.)

後半感想:

  • コードは悪く言えば雑、良く言えば勢いがある。なんらかの巨大な野望に向かって慎重にデザインして巨大建築を作る・・・という感じはゼロで、競合にキャッチアップするためにちゃちゃっと実装してる雰囲気。
    • 良くも悪くも伝統的な “Google っぽさ” はゼロ。
    • それは、いいんじゃないですかね。野望はモデルの方にまかせておけば。この大企業にジャカジャカ雑コードを書く余地が残っているとは思わなかったですよ。
  • JS の async/await/generator がバリバリに使われており、TS でイベントの型をきちんと定義したりもしており、型付非同期言語の良さが生きているなと感心する。
    • Ink は差し置いても、これを TS 以外で書くのはそんなに嬉しくない気がする。Rust … がどうかはしらないが、たとえば Python だと辛いんじゃないか。async/await/generator 全部あるけど全部出来が悪いからな。
    • まあ、これは Claude Code を作った人たちが偉かったね。Codex は Rust rewrite をしているけど、どうかねー。
  • CLI だから作るのは割と簡単なのかなとおもったが、全然そんなことはなくてコードは結構いっぱい書かれていた。というのは、
    • CLI というよりはターミナルアプリなので、UI は割と入り組んでいる。(さわればわかりますね。Claude Code も同様。) もちろん「クラウドのサーバとブラウザのJS」という分離はないので、そこはラクなはず。
    • モデルの制限とか SDK のバグとかが結構あるが、直るのを待ったりせずテキトーにワークアラウンドしているケースが多い。このへんは現在進行系の分野ですねーというかんじ。
    • UI の要件が色々あるので、コアも高尚な「ドメインモデル」というより UI 部分を event stream consumer および callback に追い出したループ、みたいになっている.しかも flat なループではなく、ツールとかの都合で結構ネストしたりして大変。もうちょっとなんとかならなかったのかと思わなくもないが、そこを勢いで押し切れるのが JS+TS の力のような気もする。
  • こうした現実を考えると、今の所 model agnostic にいいものを作るのは大変そう。これは前にも思ったことだけれど, まだ色々荒削りなので抽象化をするのは早いってことじゃないかな。cline とか goose とかがんばってるけれど、しばらくは claude code なり gemini-cli なり model 固有のツールを使うほうが現実的に思える。
    • もっともツールを作る人たちは今のうちから作っておかないと分野が成熟した時に出遅れてしまうので、開発を進めていくのが悪いとも思わないけれど。

後発ゆえの必然とはいえオープンソースにしたのは偉かったね。ある程度機能が固まってきた暁にはつよつよエンジニアを連れてきて tech debt を返済のうえ素敵な client-side agentic platform に仕立てていっていただきたいものです。

個人的には「エージェントアプリつくるのこういうかんじかー」と大変勉強になりました。個人がおもちゃとして agent をつくるなら、もっと用途を限定してデザインを簡素化する方法を考える必要があることでしょう。


  1. 10年前からあるらしい。 ↩︎

Gemini-CLI in Obsidian Vault

gemini-cli のコードをみて、思ったよりコード書きには特化していないことに気づく。ためしにチャットクライントとして使ってみると、そんなに悪くない。

自分は以前からチャットの結論をまとめてどこかに保存しておきたいと思っていた。生のチャット履歴は back-and-forth があって若干読みにくいので、結論だけをどこかに書いておいて欲しい。あと履歴がウェブアプリの中に閉じられているのも気に入らない。さがすのめんどい。まとめ保存 MCP とかが必要なのかとぼんやり考えていたが、よくわからん。というか Gemini Web は MCP なんてない。MCP のある Claude Desktop は Linux 版がない。

ふとターミナルを開き Obsidian の vault に移動して gemini を使ってみる。GEMINI.md には「『結論をまとめろ』と言ったら WhatAiSays ディレクトリに markdown でファイルをかけ」と指示しておく。gemini-cli は(当然)ファイルの読み書きができるので MCP は不要。Jan とちがって最初からウェブ検索もついている。

いくつか試してみると、なかなかよい。手元にファイルが残るのが便利。追加で調べて欲しいことがあったら会話を続けて、さいごに「まとめを更新して」といえば良い。

大きな欠点としては(これは Linux だからかもしれないが) ターミナル + Ink での日本語入力がほぼ不可能なことで、そこは仕方なく英語を使う。でも日本の調べものをしたい時はやや不便。「日本語で検索して」と頼み、まとめも「日本語で書いて」と頼む。

Gemini Web を完全に置き換えたいとは思わないが、ある程度の量のある調べものには CLI を使っていきたい。あと MCP もこの用途で便利に使えるもののがないか探してみるとしよう。Claude Code でも同じことはできそうだが、別にコードを書くわけではないので Gemini でも困らないかな。

Reading gemini-cli #1

職場で使われがちなので、いちおうコード読んどくかという試み。

といったところでドキュメントは終了。

寄り道したが今度こそコード読まないとな。CLI からみていくべし。

Core.

疲れたので今日はこのへんまで。


個人的に面白かったところ:

  • GEMINI.md が他の md をインポートできる。
  • MCP を書かなくてもCLIのバイナリがあれば使い方を教えられる。つまりMCPは stateful にしたい時だけ作れば良い。
  • なぜか client-server である。 (追記: クライアントサーバじゃなかった。UIを切りわけてあるだけ。)
  • ウェブ検索は Gemini API を呼ぶという tool である.
  • これだけ agentic なツールでも、わりかし沢山コードを書かないといけない。

Jul 18, 2025 10:07

San Diego に出張するたびに思うことだが、空港からの Uber 代が高すぎ。ヒコーキを安く上げても台無しである。しかし公共交通機関がバスで一時間半とかなのだよなー。電車だったら公共交通機関を使いたいが、バスは厳しい。なぜなら通勤ラッシュとかで無限に遅れるリスクがあるからである。

あと一泊の出張だと交通機関のオーバーヘッド一時間とか、削られるミーティング可能時間の割合が高くて、カネをケチるのが正しい選択には思えないのだよね。

つまり: 一泊の出張はよくない。出張するならちゃんと集会を企画して移動のコストを amortize すべきである。そうでないならオンラインで済ますべき。

Jul 18, 2025 09:07

Ask HN: Any active COBOL devs here? What are you working on? | Hacker News

My mother and her husband are COBOL devs for a US state government. She works on the health insurance side for teachers and other state employees. Think claim processing.

Lots of batch jobs running at night. Their alert system is an actual human who calls my mom when jobs fail in the middle of the night.

My father is 75 and he still works, has his own software development company with his own back-office program written in cobol. He started a company back in 1991 with two other cobol programmers, they are retired now, and while almost all of the code they wrote has been replaced with c# code by younger programmers there are still some parts of the code written in cobol that he still maintains.

いいスレだなァ。この世代で親がプログラマってどういうかんじだろうといつも思う。

Jul 16, 2025 21:07

The AI lifestyle subsidy is going to end — Digital Seams

…if you woke up on a Casper mattress, worked out with a Peloton, Ubered to a WeWork, ordered on DoorDash for lunch, took a Lyft home, and ordered dinner through Postmates only to realize your partner had already started on a Blue Apron meal, your household had, in one day, interacted with eight unprofitable companies that collectively lost about $15 billion in one year.

という Why City Life Has Gotten Way More Expensive - The Atlantic からの引用がほぼすべてを物語っているが、エーアイ課金はこのところ値上がり著しいのであまり VC money のおこぼれに預かれている気がしない。なお自分は上記のようなサービス群は高くてシャレになんねーということで、特別な時しか使ってない。こういうのにカネ垂れ流してるアメリカ若者、経済回してんなと思う。

Gen Z, It Turns Out, Is Great at Saving for Retirement - The New York Times

こんな若者たちも昔よりマシというんだから、自分がアメリカン・マインドを理解できる日は永遠に来ないことでしょう。

Jul 16, 2025 21:07

The Tech Job Meltdown - Professor Axelrod

But, the Tax Cuts and Jobs Act (TCJA) of 2017 amended Section 174, effective for tax years beginning after December 31, 2021. Starting in 2022, R&D expenditures must be capitalized and amortized over 5 years for domestic research (and 15 years for foreign research… which is pretty untenable.) This change eliminated the option to immediately deduct R&D costs, increasing tax liability for companies with significant research budgets in the short term.

The short version is: this rule change has increased taxable income for businesses in the short term, as they can no longer deduct R&D costs immediately.

これも T 政権のやらかしだったのか・・・。

More Links

ためこんでしまったせいで引用・コメントを残す気力が尽きたためリンクのみ記録。

"Malleable software"

Malleable software: Restoring user agency in a world of locked-down apps

最近読んだテック文章のなかで一番心が晴れる良い読み物でした。自分がソフトウェアに希望を失っていたことに気付かされる。

Jul 16, 2025 21:07

Anthropic のこのシリーズ(?) は、さすがに中の人だけあって読み応えがある。そして一個目が去年、二個目が今年。時代の流れの速さを感じる。

Jul 16, 2025 21:07

AI Killed My Job: Tech workers - by Brian Merchant

 These young engineers - squandering their opportunities to learn how things actually work - would briefly glance at the AI-generated code and/or explanation messages and continue producing more code when “it looks okay.”

こういう sentiment が数年後にどう感じられるか興味があるので記録しておくものなり。

TIL: Select Multiple Tabs in Chrome

|

Select multiple tabs in Chrome - Stack Overflow

All you need to do is to hold-down the CTRL key on the keyboard and then single-left click on each desired tab to multi-select them.

こんなチョー基本的な機能に今まで気が付かなかったとは!普段はそんなに出番がないけど、この機能を活かしている拡張があると有用さが増す。

Anytype

The Everything App

self-host できて local first な Notion 代替品。個人的には Obsidian でいいです。

Jul 16, 2025 08:07

Linux Reaches 5% Desktop Market Share In USA - OSTechNix

ほんまかいな・・・。参照されている StatCounter というサービスのバイアスなんじゃないのかね。Windows のシェアも妙に swing しているし。なお Chrome OS は別に数えられており、かつシェアは減少中。

Jul 14, 2025 13:07

Meta’s New Superintelligence Lab Is Discussing Major A.I. Strategy Changes - The New York Times

Llama series がなくなってしまったら主要な open weight は中国だけになってしまうな。個人的には Llama OSS に頑張ってほしかったが、資本主義は厳しい。OAI の「オープンモデル」もなんらかの骨抜きバージョンだろうし。

それはさておき Meta と Alibaba でどちらが incentive 的に信頼できるかというと Alibaba のような氣もする。クラウドベンダー、必ずしもモデルを独占しなくてもいいからね。

Cracking The Form Factor

勤務先で gemini-cli が大流行の兆しを見せている。それまでも Copilot / Devin 的なやつはあり、わりかし使われていた。しかしgemini-cli への熱狂はなんらかの壁を破っている。

これは世間での Claude Code をとりまく熱狂の鏡像である。Claude Code 以前も Devin や Cursor にはファンがいて、GH Copilot も広く使われていた。しかし Claude Code の破竹の勢いは次元の違いがある。自分ですら細々と使っている

Claude Code はフォームファクターの正解を見つけたのだろう。 gemini-cli や Codex など競合による丸パクリも、この「正解を引き当てた」という見立てを裏付けている。「正解」が出てしまうと、まわりはマネするしか無い。


Claude Code は “agentic coding” の最終形態なのだろうか… はさておき、過去にあった「正解フォームファクター」に思いを馳せる。

TikTok のフルスクリーン縦長動画ストリーム (2016)。スマホで動画を冷やかすのにあたりこれに勝る UI なし。Instagram も YouTube もマネしている。

ソーシャルメディアの「正解フォームファクター」 はこれ以外にも色々知られている Twitter の timeline (2006) は一瞬で Facebook に (News) Feed としてマネされたほか、Facebook 自身の Like ボタン、あとソーシャルメディア自身の発明ではないが notification badge などもカウントできるだろう。

iPhone (2007). iPhone は沢山の正解をクラックしたので “iPhone” だけだと具体性がないけれど、タッチ UI や App Store などが真っ先に思いつくところ。

タブブラウザ (1990s). ワシの若い頃はブラウザにタブなんぞなかったもんじゃ… Chrome の切り離せるタブも発明だったけど、そこまで普及しなかったので「正解フォームファクター」には数えないでおく。

正解フォームファクターはエンドユーザ製品に限られない。

S3. S3 互換 API の普及は互換性のためだけでなく、URL と REST で(も)アクセセスできるオブジェクトストアというフォームファクターが正解を引き当てたせいもあると思う。これは REST という先人の肩に乗った面もあるけれど、REST の使い所を見出したのは偉かった。NFS 互換 API でもおかしくなかったわけだから。

Cloud Run. Docker container で serverless をする。Cloud Run が最初かどうかあまり確信はないが、どのクラウド業者にも似たようなサービスがある。これは AWS Lambda という先人の肩の上に立っているわけだが、コンテナによって Lambda のデプロイ先環境の不透明さが払拭され「正解」にたどり着いたのではないか。ただし職業バックエンドエンジニアからすると sidecar 欲しいとか色々異論はあるかもしれない。でもホビープログラミング環境としては正解。

Ruby Bundler. これ以降の言語は NPM なり Crate なり、似たような使い勝手になった。Python にもようやく uv がやってきた。Java の Maven や Perl のような先人の肩があるのは確かだけれど、Bundler はコマンドライン UX などを「正解」に押し上げた功績はある。ただ後発言語を完全制覇はできてないので、もしかしたら Yehuda Katz が特異点だっただけかもしれない。

Ruby Block 文法. それ単に lambda expression じゃねーのという人もいるだろうし、そこまで一般化はしてないので「正解」は言い過ぎかもしれない、けれど Lisp じゃないメインストリーム言語にスッと押し込んだのが偉い、と思う私は Kotlin プログラマです。


ぱっと思いつくのはこのくらい。でも「正解フォームファクター」はもっと色々あるはず。皆様も思いついたらどこかに書いてあげてくださいね。

追記: こんな記事もあった.

AI coding tools are shifting to a surprising place: the terminal | TechCrunch

Blogging Platform 遍歴四半世紀

Hugo + Obsidian 体制への移行を終え、なんかこういう作業数年に一回しているな・・・と過去を見返す。

1999 年からやっていたのは、いま Way Back Machine してはじめて気がついた。そこから数えると四半世紀を突破している!すごくね?いやすごくはないな。歳をとっているだけで。

ツール・プラットフォーム単位で集計してみると:

  • tDiary: 7 年 (2003-2010)
  • Hugo: 6 年 (2015-2021, 現在)
  • Octopress: 4 年 (2011-2014)
  • WP.com: 3 年 (2022-2025)

というわけで最初の tDiary 政権が一番長かったことがわかる。ウェブでぱぱっとかけたし、WP のように遅くもなかったし、よいツールでした1

Hugo もブラウザでぱぱっと書いて出せればいいのにと思いいくつか CMS を評価したけれど、心許せるものは見当たらなかった 2

Obsidian-based な現在の方式は code-server や vs-code よりはマシな感じがしている。レイアウトも前よりはきちんと整えたことだし、長く使えるといいなあ。


記憶をたどると、枝葉のようにやってみたブログの残骸が GitHub etc. に残っていた:

ブログというものに何らかの obsession があると認めざるを得ない。何も生産的な結果には結びついていないが。いちおう学びはあり、流行りには迎合しなくなった (ex. substack をやらない。) あと自分の手元にデータを置いておくことを重視するようになった。WP.com を使ったのも、エクスポートするツールが手元にあったからで、実際 2022 年以降の記事は(若干壊れているが)だいたい移行できている。


Hyprland

|

Hyprland:

Hyprland provides the latest Wayland features, dynamic tiling, all the eyecandy, powerful plugins and much more, while still being lightweight and responsive

DHH が使っている というので存在を知った 1。おもしろそうだが、自分のラップトップは NVIDIA GPU つきなので色々と面倒が多そうである。次のラップトップは NVIDIA-free にしようと誓う。


  1. なぜ DHH かというと podcast に出ていたから です。 ↩︎

Jul 12, 2025 22:07

栄養価のハンドブックをさがす旅。

決定版 栄養学の基本がまるごとわかる事典 | 足立香代子 |本 | 通販 | Amazon

日本語ではこれを持っており、少し古いので新しいのないかな・・・と探すが、特別アップデートが必要という感じもない。ただ品目がもうちょっと欲しい。

英語で探すと・・・

The Food Counter’s Pocket Companion, Sixth Edition: Calories, Carbohydrates, Protein, Fats, Fiber, Sugar, Sodium, Iron, Calcium, Potassium, and Vitamin D―with 32 Restaurant Chains: Stephenson RDN CDE, Jane, Lindberg MPH RDN, Rebecca: 9781891011368: Amazon.com: Books

めちゃ子細な表からなるハンドブックではあるが、加工食品ばっかりだな。それぜんぶ袋に書いてあんだろ。アホなのかい?

“Food Counter” というジャンルはどれも似たような感じで、加工食品にばかりページを割いており使い勝手に疑問がある。おまえらそうやって加工食品ばっかり食ってるからデブになるんだよ自炊しろ、と思ってしまう。野菜とか肉とかこそ栄養価がラベルに書いていないから目安を知りたいというのに。

けっこう時間をかけて探したが、自分が必要な情報は日本語の本の方がよくカバーしており、なんなら↑の本と時折々のウェブ検索で十分という結論。

自分がほしいものは 食品成分データベース を見やすいかんじにパッケージしてくれた本なのだけどなー。一日の推奨摂取量とかが冒頭にあったりしてさ。

Food Search | USDA FoodData Central これでもいいが。チャットにまとめされる vive coding のにいい題材かもしれない。

Jul 12, 2025 19:07

Pulled pork について考える。

大量に作って保存できる安いプロテインとして優れているが、柔らかすぎるのとカロリー密度が高いのが難。野菜炒めの具にすることでカロリー密度を下げることはできるが、炒めるとなると作り置きのありがたみが減る。

安い塊の豚肉を食べるアイデアはいいと思うので、テクスチャを残す調理法を試すのが良いだろう。ローストとか、煮豚とかだな。スライスして冷凍すればすぐ食べられて便利。

Obsidian Sync

Obsidian Sync に sign up. 今までは Obsidian Git plugin を使っていたが、継続性という意味で Obsidian 本体にちゃんとカネ払ったほうがいいなと思い立つ。今どき使っていて納得感のある数少ないソフトウェアなので 1

完全に想像だが、一番の収入源は Enterprise ではないかと想像している。このページによると Amazon がぶっちぎりで一番のエンタープライズユーザらしい。


  1. 同じ理由で Todoist にもカネを払っている。Todoist はそこまで納得感が高いとは言えないけれど、潰れてほしくはない。 ↩︎

Native Tongue

夏休みの自由研究である Hugo+Obsidian への移行作業をちまちま進め、だいたい満足できる出来となった。あとはドメインを差し替えればできあがり。

今回は既存の theme を使わず、これまで使ってきた theme も捨て、サイトの構成とかをフルスクラッチでやり(といってもコンテンツは過去の蓄積があるんだけど)、流行りのフレームワークとかはゼロ、そもそも JS は一行もない、CSS も手書き (部分的にエーアイ補助あり) という 20 世紀みたいな構成で、我ながらオッサンと思う。老人と言ってもよいだろう。


最近聞いたこの podcast のエピソードでは、現大統領の Trump は Twitter/X native (最近は TruthSocial かもしれないが), 最近綺羅星のように現れた NY 視聴候補の Mamdani は TikTok native だという話をしていた。ここでは深入りしていないが、前々々大統領の Obama は FB native だったとされている。

話の本題は, established politician の多くはソーシャルメディア力がゼロで, そういう連中 (Biden, Cuomo) はいくらテレビの広告に金をかけても響かず負けるという話であった。


政治家に限らず、ソーシャルメディアの native tongue ってあるよな。自分は明らかに blog である。Native tongue だからこんなしょうもないことに時間を溶かしても抵抗がないし、むしろ満足感すら覚えてしまう。

自分は Twitter-like なメディアで native tongue を獲得することはなかった。 Instagram や TikTok に至ってはインストールすらしていない。ソーシャルメディア中毒予防として意図的に遠ざけてきた面もあるけれど、それ以前に世代的にズレている。だからハマれなかった。

それぞれが自分の世代のメディアを愉しめば良い。我々は同世代に向けてちまちまブログを書いていけば良い。たまに若い世代に向けてブログを勧める人がいるが、うざいだけである。いやべつにいいんだけどね。響かないのは自然なことだよ。

Dana Street Roasting Company

Mountain View Castro St. のコーヒー屋としては Red Rock Coffee が圧倒的な人気を誇っており、たとえば WhatsApp 発祥の地としても知られている:

Brian Acton, one of the co-founders of WhatsApp, describes how he and his business partner had been working on their endeavor for years at Red Rock, describing it as a community resource and one of the best cafes in the area.

のだけれど、個人的には Dana Street Roasting Company (Google Map) の方が好き。表通りを一本外れいい具合に寂れているのと、テック感が低く地元感が強いので。(自分は完全にテック側なわけだが…)

妻子が帰省中で独り身な土曜の朝、日向でコーヒーを啜りながらダウンロードしておいたインターネットのテキストを読み進めていると、にわかな幸福感がある。

別に Red Rock でも悪くはないんだけど、周りの客がガツガツしてて hiring とか funding とか AI とかの話をしてるのが聞こえてくるので疲れちゃうんだよね。Dana Street Roasting で聞こえてくるのは、年寄りの健康談義とゴシップとかなので平和なものである。

ちなみにコーヒーは美味しくない。

Colossus

‘How come I can’t breathe?’: Musk’s data company draws a backlash in Memphis - POLITICO

Grok 4 が出たというニュースを見てこの記事を思い出した。

Grok のデータセンター “Colossus” は Memphis にあり、建物に隣接する発電機がばんばんガスを燃やし、窒素酸化物を撒き散らしている。XAI は「一時的に使う発電機なら排ガス規制が免除される」という法規制の抜け穴を使うことで、そのような大気汚染を許されている。「一時的」の期限は一年で、それまでになんとかする、あるいはなし崩し的に居座るという計画だとみなされている。該当地域で必要なクリーン(というのは、合法的な)電力を確保できる見込みはなさそうだという。

このデータセンター建設地は工業地帯で、隣接している住宅地には貧困層(かつ黒人層)が住んでいる。Colossus の建設以前から大気汚染で気管支系の病気を持つ人が多いという。Elon の抜け穴戦略は明らかに邪悪で、おそらく一年以内に脱法になる。が、これは別に新しい邪悪さではないのだよね。他の企業は時間とカネをかけ「合法的に」環境汚染を進めているだけで。

Elon は派手で目立つ上に悪どさの桁が違うので目立つが、アメリカ資本主義の邪悪さを体現しているだけとも言える。もっとも少なくとも他の企業に対しては「邪悪な行動に時間とカネがかかる」という点で法は機能しているのだから、引き続き法の力で戦う必要あはるのだろうな。負け戦だとしても。

Jul 9, 2025 11:07

Creating custom kernels for the AMD MI300

ROCm のカーネルってどう書くんだろうなと GitHub の repo をひやかす

GitHub - huggingface/hf-rocm-kernels

しかし .cu しか見当たらない。

hf-rocm-kernels/csrc/op_src/residual_rms at main · huggingface/hf-rocm-kernels · GitHub

CMake 関係のディレクトリをみると hipify なるものを発見

hf-rocm-kernels/cmake/hipify.py at main · huggingface/hf-rocm-kernels · GitHub

GitHub - ROCm/hipify_torch

hipify_torch is a python utility to convert CUDA C/C++ code into HIP C/C++ code. It is NOT a parser; it does a smart but basic search-and-replace based on CUDA-to-HIP mappings which are specified in the hipify_torch module. It can also “hipify” the header include statements in your source code to ensure that it’s the hipified header files that are included.

“MI300 のためにカスタムカーネル書くぞ!” というプロジェクトがこんなのに頼っている現状をみると、AMD の戦いの先は長そうである。

Jul 9, 2025 10:07

Galaxy Z Fold 7 goes official with thin design, $2,000 price

Other changes on Galaxy Z Fold 7 can be found in the camera array, with a new 200MP camera at the core and backed up by a 12MP sensor with an ultrawide lens, and a third 10MP sensor for telephoto.

200MP とは・・・と思ったが二年前からあったらしい。

Samsung Introduces the 200-Megapixel Image Sensor for the Ultimate High Resolution Experience in Flagship Smartphones – Samsung Global Newsroom

The ISOCELL HP2 packs 200-million 0.6-micrometer (μm) pixels in a 1/1.3” optical format, a sensor size that is widely used in 108MP main smartphone cameras.

画素がでかいわけではないので、たいした嬉しさはなさそうだな。むしろ画像サイズがデカくてストレージを圧迫する弊害があるのでは。フルサイズで撮ることは少なく、大抵は bin するのだろうけれど。

あと 1 pixel 1 byte でも 200MB だからねー。マージするために 10 枚バッファリングしたら 2GB だよ。大変だな。しかも普通 1 pixel 10bit くらいはあり、RAW を mosaic して RGB にした瞬間 3x になる。どうすんだろうね。

Jul 7, 2025 10:07

Trump says Musk is ‘off the rails’ and calls his new political party ‘ridiculous’ | Trump administration | The Guardian

Earlier on Sunday, Trump’s treasury secretary said Musk should focus on running his companies and keep himself out of politics, a day after the world’s richest person – and a former White House adviser – announced the formation of a new political party.

すべての文脈を無視してこの発言だけを見ると、個人的には同意してしまうな…

Jul 7, 2025 09:07

Yeah, pretty accurate. Perhaps even eerily so. Upon first reading, I was surprised when it nailed age range, location, family size, etc.—details that I didn’t expect to be represented in a data set that I thought mostly consisted of Hacker News posts. Shows you how much can be inferred by a simple trail of “likes.”

似たようなことは Gemini で自分の検索履歴を使える personalized mode でもできる:

ただしそんなに賢くはない。上の記事では o3 なので、だいぶ色々 guess できそうである。

Jul 6, 2025 16:07

タイトルの無い post を jot と読んで特別扱いしてみることにした。要するに tweet です。短い、タイトルをつけるまでもないテキストをここに書いて気を済まし、ソーシャルメディアを減らそうという試み。

友人の karino2.github.ioを真似している。しかしあまりつかってなさそうだな。


追記

扱いするほどの違いもなさそうなので、タイトルがない時に適当なプレースホルダーを置くくらいにしてみた。

Hugo on Obsidian

ブログを再び Hugo-based に戻した はいいが、以前に増して書く敷居があがってしまった。なんとかしたい。最近 Obsidian を使い始めたので Markdown は Obsidian で書き、それを Hugo 経由で公開できないかと試すと、できた。

要素技術:

  • Hugo Mounts: 任意のディレクトリを Hugo の要求するディレクトリ構造にマップする Hugo の設定。
  • Obsidian dot folders: Obsidian は “.” から始まるフォルダは vault ビューから隠してくれる。
  • Obsidian Unique note creator core plugin: 日付のタイムスタンプがついたファイルを指定したフォルダに一撃でつくる標準プラグイン。
  • SilentVoid13/Templater: A template plugin for obsidian Obsidian 標準よりちょっと強力なテンプレートプラグイン

やりかた:

  1. 書く側の準備
    1. Obsidian vault の適当なフォルダを blog のコンテンツ置き場にする、と決める (/contents/posts とか相当)。
    2. “Unique note creator” の設定で、新しい unique note はこのフォルダ以下に作られるようにする。(設定として日付ベースのサブティレクトリもパターンとして指定できる。)
    3. このディレクトリ以下のファイルに対し Templater plugin の Folder Templates を設定し、front matter の stub を適用する。こうすると command palette から unique note を作った瞬間に blog の stub が現れる。
  2. 読ませる側の準備
    1. .hugo というディレクトリを vault の中につくり、そのなかに hugo で必要になるファイルを揃える。ただしコンテンツは “Mounts” 機能を使って、親フォルダになる Obsidian vault 内の所定のフォルダを指定する。
    2. そんだけです. There is no step two!

世の中の人にとって意味があると思われる tips は以上ですが、細々したこと:

  • preview とか deploy は頻繁にやるので shell script を用意しておく。
  • デプロイは Cloudflare Pages を使ってみた。Direct upload 方式。以前は Netlify を使っていたが, Obsidian vault の git repo は Obsidian Git の sync を使っているため更新頻度が高すぎて CI-based の deploy には向かない。あと手元の preview に使っている hugo と CI の hugo でバージョンがズレてトラブルになることもあった。direct upload は手元のファイルを Cloudflare にアップロードするだけなので素朴で堅牢な気がする。

Obsidian + static site generator は Obsidian の中の人もやっている らしいので、そこそこ筋のいい方法なんじゃないでしょうか。Hugo の shortcode とかを使い出すとどうなるのかよくわからないけれど。