SQLiteのSTRICTテーブルは、型の厳格なチェックを強制し、整数カラムへの文字列入力などのミスを防ぐ。テーブル定義の末尾に「STRICT」を追加するだけで有効になり、不正な型の挿入や更新をエラーとして検出できる。柔軟性が必要な場合はANY型も利用可能で、パフォーマンスへの影響も実用的にはほぼない。著者はSTRICTテーブルの利点が欠点を上回ると主張している。
evanhahn-com
evanhahn-com から 19 件
2026年6月の雑記
1.5シカゴの気候と日々の記録。Ghostで初の大規模プロジェクト「オートメーション機能」をベータ公開。Taper誌のために時間を16分の1単位で視覚化する作品を制作。生成AIが引き起こす問題(AIのPR問題、宗教的免除による抵抗戦略、パブリックパッチ受け入れ停止)や、ターゲティング広告禁止の提言、オープンソースを業務時間内に行う活動、Climate.gov再建などのリンクをまとめている。
2026年5月の雑記
1.5ブログが16周年を迎えた今月は、ZIP圧縮率を高めるWebアプリや完全オフライン翻訳ツール、Firefox拡張機能など4つの小さなツールを公開。オープンソースプロジェクトHelmetのv8.2.0リリースやGitHubからの段階的移行も進めた。また、テックワーカーの労働組合結成、Gnutellaへのラブレター、AIシフトにおける「人間のためにやるべきだったことをLLMのためにやる」問題など、技術倫理に関する様々なリンクを紹介。
オンラインマガジン『Taper』の第16号に寄せて、時間を16分の1単位で区切り、その流れを異なる視点で捉える試み。2026年は約7/16、今日は約14/16が経過したと表現される。2048バイト未満のコードは日付計算とGoサーバーによるミニファイ処理で構成され、ソースコードも公開されている。
ZIP Shrinkerは、ブラウザ上で動作するZIPファイル圧縮ツール。APK、EPUB、JARなどZIPベースの形式にも対応。内部ではlibdeflateを使ってDeflate圧縮を再実行し、メタデータや空ディレクトリを削除することでファイルサイズを削減する。Linux v6.19のソースコードで5.62%、Project GutenbergのEPUBで18.16%、Signal for AndroidのAPKで30.06%の削減を達成した実績がある。
Firefoxでタブをアンロード(メモリ解放)した状態で新しいリンクを開ける拡張機能「Open Link in Unloaded Tab」を公開。右クリックメニューに項目が追加され、リソース節約に役立つ。シンプルな設計で、約15ドルのアイコンも用意。Firefoxアドオンストアで公開中。
png-cmpは、2つのPNG画像が視覚的に同一かどうかをチェックするコマンドラインツール。cmpコマンドに着想を得ており、画像が同じなら何も表示せず、異なる場合はエラーを出力する。ただし、バイナリデータではなくピクセルデータを比較するため、テキストメタデータなどが異なっていても見た目が同じ画像は同一と判定する。
コマンドラインで完全オフラインのテキスト翻訳を実現するシンプルなスクリプトを紹介。Googleの翻訳特化モデル「TranslateGemma」とローカルLLM実行ツール「Ollama」、言語検出ライブラリ「Efficient Language Detector」を組み合わせ、標準入力から読み取ったテキストを自動で検出・翻訳する。Denoで書かれており、プライベートでオフライン動作が可能なのが特徴。
2026年4月の雑記
1.5忙しかった3月に比べ、4月は少し静かに過ごした。今月もクリックしたくなるようなリンクを多数紹介。GitHubのダウンタイムを擁護する記事や、JavaScriptライブラリ「setbigtimeout」v0.2.0の公開、Zelda Dungeonへの寄稿記事など。さらに、AI批判書のリストや自動運転車に関するポッドキャストなど、興味深い外部記事へのリンクも掲載している。
gzipストリームには、圧縮を行ったOSや変更時間などのメタデータが含まれています。著者はZig言語で学習しながら、これらのメタデータを読み取るコマンドラインツール「gzpeek」を開発しました。このツールを使えば、gzipファイルの圧縮元OS、元ファイル名、変更時間などの詳細情報を簡単に確認できます。
2026年2月の記録
1.5著者が2026年2月に取り組んだプロジェクト(GhostのInbox Links機能、gzpeekツール、ゼルダの伝説記念カレンダーなど)と、オンラインで見つけた興味深いリンク(CSSのみのゲーム、LLMの本質、AI懐疑論のキャリアへの影響、データ主権問題など)をまとめた月次記録。
2種類のエラー
1.0ソフトウェアのエラーは「予期されるエラー」(ユーザーの無効な入力など、通常の操作で発生し、開発者の責任ではない)と「予期しないエラー」(nullポインタ例外など、開発者の責任でバグを示す)の2種類に分類される。予期されるエラーは適切に処理し、予期しないエラーはクラッシュさせて問題を明らかにするべきだ。
llm-elizaの紹介
1.5LLM CLIツール用のプラグイン「llm-eliza」を紹介します。このプラグインを使用すると、1966年にリリースされた歴史的な言語モデルELIZAと対話できます。ELIZAはGPU不要でサブミリ秒の推論速度を実現し、感情知能の測定で高いスコアを獲得しています。
著者は生成AIのデメリットがメリットを上回ると考えつつも、このブログ執筆に活用している。主に類語辞典としての使用や、具体的なアイデアのブレインストーミングに利用し、最終的な文章はAIなしで書いたものと完全に一致することを原則としている。日常的に使用するユーザーとしての批判的視点を重視している。
human.json
2.0human.jsonは、人間が自身のサイトコンテンツの著者性を主張し、他者の人間性を保証するためのプロトコルです。URLの所有権をアイデンティティとして使用し、サイト間の保証ネットワークを通じて信頼が伝播します。このアイデアを気に入り、私のサイトにも実装しました。
Rosetta Codeからすべてのプログラミング言語をスクレイピングして作成した、ランダムにプログラミング言語を選択するシンプルなウェブアプリ。このツールを通じてArturoという言語を知り、その経験について短編小説も執筆しました。
著者はランダムなプログラミング言語を選ぶツールでArturoに出会い、試してみることにしました。AIにDeflate圧縮の実装を依頼しましたが、AIはPythonスクリプトをラップするだけの実装を提出し、純粋なArturo実装を求める著者の意図とは異なる結果となりました。
2026年3月のノート
1.52026年3月は著者の最も忙しい月だった。ソフトウェアエラーの2種類についての記事や生成AIの使用に関する免責事項を公開し、ELIZAチャットボットのコマンドラインプラグインを作成した。また、Zelda Dungeonでの執筆活動やfzfのバグ修正など、多岐にわたる活動を行った。
GitHubのダウンタイムは確かに問題だが、稼働率の数字は誤解を招くことがある。複数のサービスが独立してダウンすると、全体の稼働率は個別のサービスよりも悪く見えるが、これはサービスが適切に分離されている良いエンジニアリング実践の結果でもある。実際の状況は「ゼロナイン」と言われるほど深刻ではなく、Dランク程度の評価が適切だろう。