@kyanny's blog

My thoughts, my life. Views/opinions are my own.

Assist Lesson

ミスター早口と Assist Lesson でインタビュー。冒頭スモールトークでは、今日は昼友達とランチしたよとか仕事で小さいミスしたけどすぐリカバリできたよとか夜は友達がキャリアについて話す YouTube Live を観たよとか話した。

彼は大学でコンピュータサイエンスを専攻した人で、どうして CS を選んだの?とか、両親ともに英語に堪能な人でそれもあって小さい頃から英語を学んでたとか、小さい頃に Windows 95 だか 2000 だかのとても古いコンピュータがあって、高校の時に授業でプログラミングを使う機会があり、問題解決の面白さに目覚めたとか、他に興味があった分野は?と聞くと心理学には関心があったよ、人はどう考えるのか、認知バイアスとは、とかサンクコストとか、でも IT への興味が勝った話とか、以前の仕事は世界的なコンサルティング会社でアメリカの大手金融会社のために COBOL プログラマとして働いていたとか、COBOL といえば日本の MIZUHO っていう銀行が古いおそらく COBOL のシステムを 18 年とか 20 年とかかけて刷新して「日本のサグラダファミリア」なんて呼ばれてたけど、今年に入って新システムが何度も大規模な障害を出していて、COBOL のシステムをメンテナンスし続けるのとどっちが良かったんだろうね、銀行とかは安定性が第一だからねえ、なんて話をした。途中思わぬところからちょっと個人的な話になってしまい、ビズメイツコーチング動画で Kyota が言ってた「最初から個人的な話に立ち入らないように」という忠告に反してしまったなあと思ったりした。そのことは最後に、意図せず個人的なことに踏み込む形になってしまってごめん、でも話を聞かせてくれて感謝している、と伝えた。

明日は夕食の時間や献立などの関係で英語はお休みにしてね、と奥さんに言われているので、まあ無理せず休みにして、その代わりに土日で受けることを考えよう。八月以来だから約二ヶ月半ぶりの大学の教授をやってるという女性トレーナーを予約した。

  • I made a small mistake at work, but I was able to quickly recover.
  • I didn't major in IT, but I was part of a computer programming club.
  • Did you want to take any other courses?
  • It keeps me MOTIVATED.
  • Sometimes the problem is more complicated than I thought.
  • This bank was made up of many mergers of a number of small banks.
  • They remade it entirely from scratch.
  • This bank encountered numerous system failures.

How to create an arbitrary large size Ruby gem

Create a gem skeleton.

Bundler: How to create a Ruby gem with Bundler

bundle gem my-gem

Create a random binary data.

# 2GB data
dd if=/dev/urandom of=blob bs=1m count=2000

Modify .gemspec file.

# frozen_string_literal: true

require_relative "lib/my/gem/version"

Gem::Specification.new do |spec|
  spec.name          = "my-gem"
  spec.version       = My::Gem::VERSION
  spec.authors       = ["Kensuke Nagae"]
  spec.email         = ["kyanny@gmail.com"]

  spec.summary       = ": Write a short summary, because RubyGems requires one."
  spec.description   = ": Write a longer description or delete this line."
  spec.homepage      = "https://example.com/"
  spec.required_ruby_version = ">= 2.4.0"

  spec.metadata["allowed_push_host"] = "https://rubygems.pkg.github.com/"

  spec.metadata["homepage_uri"] = spec.homepage
  spec.metadata["source_code_uri"] = "https://example.com/"
  spec.metadata["changelog_uri"] = "https://example.com/changelog"

  # Specify which files should be added to the gem when it is released.
  # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
  spec.files = Dir.chdir(File.expand_path(__dir__)) do
    `git ls-files -z`.split("\x0").reject { |f| f.match(%r{\A(?:test|spec|features)/}) } + ['blob']
  end
  spec.bindir        = "exe"
  spec.executables   = spec.files.grep(%r{\Aexe/}) { |f| File.basename(f) }
  spec.require_paths = ["lib"]

  # Uncomment to register a new dependency of your gem
  # spec.add_dependency "example-gem", "~> 1.0"

  # For more information and examples about making a new gem, checkout our
  # guide at: https://bundler.io/guides/creating_gem.html
end

Build a gem.

gem build my-gem.gemspec

Check the gem size.

❯ ls -lah
-rw-r--r--   1 kyanny  staff   1.9G 10 21 17:31 blob
-rw-r--r--   1 kyanny  staff   1.9G 10 21 18:15 my-gem-0.1.0.gem
-rw-r--r--   1 kyanny  staff   1.4K 10 21 17:34 my-gem.gemspec

Publish to GitHub Packages RubyGems registry

Working with the RubyGems registry - GitHub Docs

Set a credentials.

~/.gem/credentials:

---
:github: Bearer TOKEN

Push the gem.

  • OWNER is username
  • Repository my-gem must exist
gem push --key github --host https://rubygems.pkg.github.com/OWNER my-gem-0.0.1.gem

How to create an arbitrary large size Docker image

Create a random binary data.

# 2GB data
dd if=/dev/urandom of=blob bs=1m count=2000

Dockerfile:

FROM ubuntu
COPY blob .

Build a Docker image.

docker build . -t myblob

Check the image size.

❯ docker images | grep myblob
REPOSITORY                                                            TAG       IMAGE ID       CREATED         SIZE
myblob                                                                latest    371aad860d44   2 minutes ago   2.17GB

Publish to GitHub Container registry

Working with the Container registry - GitHub Docs

Login to the Container registry.

echo $GITHUB_TOKEN | docker login ghcr.io -u USERNAME --password-stdin

Tag the docker image.

  • OWNER is username/repo
docker tag myblob ghcr.io/OWNER/IMAGE_NAME:latest

Or build a Docker image with tagging.

docker build . -t ghcr.io/OWNER/IMAGE_NAME:latest

Push the docker image.

docker push ghcr.io/OWNER/IMAGE_NAME:latest

Bizmates Program: Level 2 Rank C Lesson 10: Review

病気が続いててこの頃ちょっと元気がなかったミスター陽気と。今日はのっけからいつもの笑顔と陽気なトーンのトークで、元気になったようで良かった。まだ 100% じゃないんだ、今日も病院にいって薬をもらってきたし、とか言ってたけど、言葉とは裏腹にはつらつとしていた。俺がちょっと肩と首に軽い痛み?があって、というと、レッスン終わりにも get well soon! と言い去っていくくらいの余裕を見せた。

昨日のレッスンは Lesson 9 の Act パートを明示的にやってなくても完了扱いだったようで、今日は Lesson 10 Review から始まった。Lesson 3 の Review くらいまでは教材を見直して予習していたけど、割とサクサク進んだのもあり、過去の教材の PDF を都度プレビューしながら Biz Tips について答えていった。

レビューで Biz Tips を答えさせるのは、そんなはっきり覚えてないよなあというのと、教材見ながら答えてもレビューにならないのではというのと、ちょっと思うところはある。レビューはトレーナーによってもやり方が違うようなので、そういえばミスター陽気とは過去にもレビューをやったことがあったから、別の人とやった方が良かったかもしれない。

最後はロールプレイに夢中になってたら残り時間が目に入らず、気付いたら時間切れになっててトレーナーが話の流れで今日はもう時間だから続きは次回ね、というまで気づいてなかった。それだけ集中していたともいえる。

Lesson 6 の Review まで終わったので、おそらく次のレッスンで Lesson 10 も終わる見込み。明日は最近ローテーション入りしてレッスン回数多めのミスター早口。なんか彼も前にレビューを受けた気がするが、まあいいか。と思ったけど、今週は Assist Lesson を受けるミッションをまだこなしてなかったので、ちょっとまだ早い気もするけど彼を次のインタビュー相手にすることにした。ので Assist Lesson に予約内容を変更した。ちょうど今日、コーチング動画が更新されてたのもあり。

  • upper back
  • uric acid / 尿酸(おっさんくさい単語だ)
  • on foot

Bizmates Program: Level 2 Rank C Lesson 9: Following up by e-mail

ミスター流暢とミーティング後のフォローアップメールの書き方というお題のレッスン。スモールトークが「今日はどうだった?夕食は食べた?」くらいであっさり終わったので時間がたっぷりあって、一応 Lesson 10 の予習も半分くらいしてあったけどどうなることやらと内心ヒヤヒヤしながらだった。

このレッスンも、実際のビジネスシーンでは〜、という観点で教材には載ってない Tips について話せてよかった。

  • Example パートの簡素なメールも、社内でのやり取りなら許容範囲。
  • Bizmates Style のメール(良いお手本という位置づけ)の Subject: Thank you for visiting MMB Corp - June 27 は良い件名か?君が Luke (受信者)だとして、メールボックスを開けたら 20 通もメールが来ていたとする、そこでこのメールを見て、今すぐ開こうと思うか?という質問に、緊急じゃなさそうだからプレッシャー感じずにさっと開くんじゃないかな、とか答えたら彼の期待と真逆だったようで、「ただのお礼メールに見えて、本文に書かれてる『訂正版の提案書を待ってる』という要件の緊急度が伝わらない。Subject: [URGENT] Revised Solution のようにしたらどうだ?これなら緊急度が伝わり、すぐにメールを開いてもらえる」と。なんでも URGENT つけるのはバッドプラクティスじゃないかなあ、などと内心思ったが、今これを書いてて、日本人と外国人の文化の違いが根底にあるやつかも、と思った。俺は基本的にメールはすべて開いて既読にする(中身をろくに読まないにしても)という習性があるので、内容が気楽なメールから片付けていって重いのをじっくりやる、という考え方をしていたけど、彼は「緊急でないメールは中身を読まれることもない」という前提で話していたのかもしれない。
  • Opening にあたる Thank you for visiting us at MMB Corp today. はどうか?と聞かれ、うーん典型的(ありがち)だねって以外に特に問題は感じない・・と答えたものの、そう template っぽいよな、と言われてから、もし書き直すなら、訪問に対してではなくて会議に対するお礼の形にするかな、その方が(どう良いのかを表現する語彙が上手く出てこなかった)、それはつまり personal ということか?ああそんな感じ、みたいな話をした。

Try パートでは、最後に社外の人と会議したので記憶に残ってるのは Quipper 時代に QA の会社とテスト結果の報告書の品質について話した(報告書がスカスカで読んでも何の分析の役にも立たない代物で、クレームをつけて改善を要望した)、という二年以上前のが「最近」だったので、そのミーティングのフォローアップメールを書くというロールプレイをした。残り時間が少なくなってきてたからか、チャットに書く必要は求められなかったが一応件名とかは書いたけど、声に出していうだけで良いと言われ、むしろ書きながらの方が楽な部分もあるけど、脳内だけでなんとか乗り切った。

あとは最後に、メール以外にフォローアップの手段は何かあるだろうか?という質問に、電話番号知ってて重要な相手・要件だったら、こちらが重要と思っていることを示すためにも翌朝とかに電話するのも手だね、でも電話したとしてもメールはメールで送ると思う、電話は記録に残らないけどメールは残るから(documentation, proof/evidence ということだな?)、では app で連絡を取るのはどうだ?WhatsApp とか LINE とか、君の会社では許可されているか?うーんうちの会社ではお客さんとその手のメッセージアプリで連絡取るのは許されてないと思う、セキュリティポリシーの理由で、みたいな話をして終わり。

今日のミスター流暢は機嫌が良かったのか、普段よりやや笑顔が多い気がした。

多分 Lesson 9 はまだ終わってなくて、Act パートが残っている気がする。明日は最近ちょっと元気がないミスター陽気を予約した。

  • Level 2 - Rank C - Lesson 9: Following up by e-mail
  • Internal email
  • external email
  • sense of urgency
  • Subject: [URGENT] Revised Solution
  • generic
  • template
  • Subject: Revised QA testing report - MyCompany
  • Dear Mr. Yamada,
  • Thank you for our meeting about the revised QA testing report yesterday.
  • Thank you for our meeting about QA testing discussion yesterday.
  • straightforward
  • documentation
  • proof/evidence
  • app