『Rustで作るプログラミング言語』を読んで、かねてから構想していた自作言語を形にした

Rustで作るプログラミング言語という書籍が先日発売されました。簡単なプログラミング言語を作ってバイトコードに変換して実行したりネイティブコードに変換して実行してみよう、という本で、大変面白く読みました。最終的にまあまあ本格的な言語になるので…

デイリーポータルZの新着記事をBlueskyに投稿するbotを作った

デイリーポータルZの新着記事をBlueskyに投稿するbotを作りました。 github.com デイリーポータルZは2024年1月1日から独立した会社になるようですが、状況から察するに実態としては消滅まで秒読みと思われます。インターネットからデイリーポータルZが無くな…

SMBCのOliveカードでオンライン決済が拒否されたら「クレジットモード専用カード番号」を試すとよい

2023年から三井住友銀行にオリーブアカウントなるものができて、これのクレジットカードが「クレジットモード」「デビットモード」「Vポイント払いモード」を切り替えて使えるという触れ込みです。このほか、オリーブ化するとSMBCからの振り込み手数料が無料…

家計口座用の家計簿アプリをマネーフォワードMEからZaimに乗り換えた

追記(2023/11/29): 2023/11/1からまたZaimでアメリカン・エキスプレスとの連携ができなくなりました: (11/2 掲載)アメリカン・エキスプレスの連携不具合について:よくある質問|家計簿アプリ Zaim。マネーフォワードではできているようです。困惑の極み……

40代の男性プログラマーが5ヶ月の育休を取った

次子のために5ヶ月の育休をとった記録です*1。 家族構成は、外資系*2勤務フルタイムワーカーの私、同じく外資系勤務フルタイムワーカーの妻、長子のmfx氏(2017年9月生まれ)、そして次子のrfx氏(2022年6月生まれ)という四人家族です。 私が育児休業をとっ…

エンジニアHubにHTTP/3の記事を寄稿しました

エンジニアHubに「HTTP/3|Webエンジニアが知るべき新常識 ─ QUICやコネクションマイグレーションなどを学ぶ 」という記事を寄稿しました。CDNとしてHTTP/3を提供しているFastlyで働いているという縁からです*1。 eh-career.com 書きたいことはこの記事にす…

『日経サイエンス』誌を読んだら思いの外よかった

ふと思い立って『日経サイエンス』誌を読んだらけっこうよくて軽く感動しました。 これまではTwitter至上主義だったので情報はTwitterから仕入れればよいと思っていたのですが、最近のTwitterのサードパーティ・マイノリティ排除の様子に辟易してTwitterをや…

vscodeが使うTypeScript.tmLanguageに基づいて構文ハイライトを実現する

vscodeはTypeScriptの構文ハイライトのために TypeScript.tmLanguage という定義ファイルをもっています。 GitHub - microsoft/TypeScript-TmLanguage: TextMate grammar files for TypeScript for VS Code, Sublime Text, and Atom. この tmLanguage はもと…

vscodeの設定ファイル .vsocde/*.json をGitHubでJSONCとしてハイライトさせる

.gitattributes に次の1行を足すと、vscodeの設定ファイルがGitHubでJSONC (JSON with Comments) としてsyntax highlightされるようになります。 .vscode/*.json linguist-language=jsonc GitHubのsyntax highlightは github/linguist で制御されています。…

ナイフで果物を切っているときに手を滑らせて全治一ヶ月の切り傷を負った

3行で キウィフルーツなどのぬめりのある果物を切ったあとは、別の作業に取り掛かるまえに手を洗うべし リンゴなどの硬めの果物を手の上で切るのはハイリスクなので、可能であればまな板を使うべし 切り傷を負ったとき、5分経っても血が止まらなければ即病院…

4ヶ月の育休をとる

続き: 40代の男性プログラマーが5ヶ月の育休を取った - Islands in the byte stream 2022年の6月に第二子であるrfxを受け入れました。それに伴い、11月最終週から4月第1週いっぱいまで、約4ヶ月の育休をとることにしました。 第一子であるmfxのときは育休は…

BPF CO-RE は GitHub Actions の Ubuntu 20.04 インスタンスでテストできそう

BPF CO-RE (CO-RE: Compile Once , Run Everywhere) を実行するにはLinux kernelがBTF (BPF Type Format) つきでビルドされている必要があります。 Ubunt 20.04 の最初のリリースではBTFは有効になっていませんでしたが、アップデートで配信されているカーネ…

Firefoxの「プライバシーとセキュリティ」の設定を変えたらアプリの再起動が必要

追記: これをしてもはてなブログのヘッダでログイン状態にならない現象が起きてしまうようです。もはやFirefoxのバグなのかはてなブログのバグなのかわかりませんが…。 Firefoxの「プライバシーとセキュリティ」を変えると次のようにタブの再読み込みを行うU…

GitHub Pull-ReqでCIの完了をデスクトップ通知するChrome拡張 "WatchRaptor" を作った

Chrome Web Store chrome.google.com 使い方ですが、GitHub PR pageに次のようにCI statusにcheckboxが現れるので、完了通知がほしいCI statusにチェックをつけるだけ。 チェックされたCI statusが完了(success or failure)になると、次のようなデスクトッ…

M1 Mac + Intel NUC (mini PC) で快適AMD64 Linux生活

2021年現在、M1 MacでDockerを使うのが大変という話がちょいちょいあります。 個人的な事情でいうと、私は現在、AMD64 Linuxでしか動かせないソフトウェアを開発していて、Dockerもちょいちょい使う、という感じです。なのでAMD64 MacでVMWareを使ってUbuntu…

set -eのもとで特定のコマンドの終了ステータスを変数に入れるシェルスクリプトのスニペット

課題編 シェルスクリプトで「あるグローバルな状態を変える操作を行い、その結果をチェックし、状態をもとに戻す」みたいなタスクをするときに「その結果をチェックし」のところでコマンドの終了ステータスを変数に入れて置きたいみたいなことがあります。例…

Findy Engineer Labに Individual Contributor の話を寄稿しました

engineer-lab.findy-code.io 詳細は記事を読んでいただきたいのですが、おかげさまで「ICという役割を初めて知った」「自分もIC的な働き方をしたいのだと分かった」という感想が複数みられたので、この記事を書いた甲斐はあったなあと思います。 一方でやや…

Fastlyに入社して2年たちました

在職エントリってやつです。 gfx.hatenablog.com 2019年9月9日に現職に転職して今月で2年たちました。ウェブ系でRailsやReactなどをやっていた前職から活動分野を大きく変えて、C言語などでミドルウェアを開発する現職にきて、さらに英語が共通語の環境とい…

GitHub ActionsからGitHub wikiを更新する

GitHub ActionsからGitHub wikiを更新したいことがたまにあります。たとえば、何かのメトリクスを見やすく整形したものなど、repositoryのデータを何らかの形で加工したドキュメントを作りたいときです。コード生成したmarkdownドキュメントをコミットしても…

Kindle Fire HD 10" が固定レイアウト書籍やPDFを読むのにとてもよい件

クリスマスプレゼントで妻からもらったKindle Fire HD 10"が思いの外よくて快適だなという話です。 Kindle Fire HD 10" (amazon.co.jp) これまで電子書籍リーダーとしてはE-InkのKindleをここ数年ずっと使っていて、それはそれで軽量&電池長持ち&目に優し…

h2ologにみるBPF toolsの構造と設計

最近はお仕事で h2olog を開発しています。これはC++で書いたBPF toolsで、H2Oに組み込まれたUSDTが出力するイベントをトレースするためのツールです。 具体的にはこんな感じで使ってH2OプロセスをトレースしてJSON-Linesにして出力します: # QUICを有効にし…

アデノウィルス感染症の後遺症で長期の視力障害を経験した

追記 (2021年12月): このエントリを書いた当初、1年経過時点では完全に回復しきったとは言い難くて、エディタのフォントサイズを16ptくらいにしていたのですが、3年たってようやく完全回復してフォントサイズを14にしました。長かった…。 アデノウィルスによ…

git tips: git push $remote HEAD で現在のブランチを$remoteにpushできる

git tips: git push $remote HEAD で現在のブランチを$remoteにpushできて、コマンドラインでgitを使うときはよく使います。 ところで、この HEAD の実体はファイル(.git/HEAD)なので、ファイルシステムが大文字小文字を無視する(case-insensitive; e.g. …

BCCでBPF toolsの開発をするための基礎知識

最近仕事で h2olog を開発しています (H2O の QUIC 層をトレースしよう | Toru Maesaka) 。これはh2oのUSDT からデータを取り出すBPF toolです。その関係でBPFとかBCCをいろいろ触ったので、BPF toolsの開発に必要なことを書いておきます。 なおBCCまわりは…

Ubuntuで任意のバージョンのLinux Kernelにする

追記: ツールはこちらの getkernel がメンテされているのでこちらを使うほうがいいでしょう! ubuntu用のカーネルをとってくるやつ - w_tl00’s blog Ubuntuなどのディストリは、ディストリに同梱されたカーネルを別のバージョンに差し替えることができます。…

フィルターバブル vs QoL至上主義

フィルターバブル (filter bubble) とは、「インターネットの検索サイトが提供するアルゴリズムが、各ユーザーが見たくないような情報を遮断する機能」(フィルター)のせいで、まるで「泡」(バブル)の中に包まれたように、自分が見たい情報しか見えなくな…

Google公式のLinux用Chromeバイナリのバージョンを調べる

UbuntuなどにむけたChromeバイナリのインストール方法をググると以下のようなコマンドを指示されるわけですが wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | sudo apt-key add - sudo sh -c 'echo "deb https://dl.google.com/linu…

2019年はキャリアの方向性を大きく変えた年だった

2019年のまとめです。 前半3Qはウェブアプリのバックエンドやフロントエンドを開発し、最終1Qで転職してC言語でHTTPサーバーを開発するという感じに大きく方針を転換した年でした。 転職にあたっては「毎日楽しく開発をしたい」「生涯現役のプログラマーでい…

JSConf JP 2019で "How to Boost Your Code with WebAssembly" という話をしました

abstract: https://jsconf.jp/2019/talk/fuji-goro Wasmを触り始めるにはまだ少しはやくて、おそらく2020年にはリリースされるであろうSIMDなどがほしいところです。とはいえ、JSの最適化コンパイラ(スライドではV8のTurboFanにだけ触れていますがほかのJS…

Fastly に入社しました

2019年9月9日からFastlyに入社しています。勤務地は東京です。今後ともよろしくお願いいたします。 前職の Bit Journey, Inc. では3年ほどKibelaのサーバーサイドやフロントエンドアプリの開発に関わりました。Bit Journey在職中に子供がうまれ、現在も夫婦…