二流エンジニアの逆襲

二流エンジニアが一流エンジニアになるまでの記録である

FY21 Q2 chia 状況

90TB 分の plot を portable plot に置き換えて1ヶ月程度経過したので、状況をメモ。

収益

7月から 2ヶ月間 old plot 45TB、portable plot 45TB で運用し、
9月中旬に old plot を portable plot に置き換え始めたので、

2month * 0.3xch + 1month * 0.67xch = 1.27 xch

ここから Fee を引いて、

1.27 * 0.99 = 1.25 xch

置換え中の計算をインチキしているのと、諸事情で稼働していない時間もあるのでちょっと少ないが、
だいたい Estimated Time to Win に収束していると思う。
※ 90TB で 0.67 chia/month 程度

f:id:polonity:20211021163655p:plain
chia_venefit_20211021

現状のレート(※2021/10/21時点 1xch = $151)だと、月々の電気代くらいはまかなえている状況。
初期投資は30マソ程度なので、今のレートだと 2.5年くらいで回収できるかな?()

なお、我が耕地では未だ1回も収穫は出来ておらず、、、
やはり port 8444 を開けないと厳しいんですかねぇ?

備考

SSD S.M.A.R.T値

old plot + portable plot の 180TB 分 plot するも、まだまだ正常。 1200TBW なので頑張っている方?

f:id:polonity:20211021163018p:plain
SSD_TBW

所感

4月から初めて1回も収穫できていなかったので、portable plot が来て本当に良かった。。。

SEから寿司職人に転職してS/Wエンジニアに戻った話

私は2019年9月末に前職を退職し、寿司学校に通い始めました。
そして、2020年5月を以て寿司学校を修了しました。
卒業後は寿司職人として就職する予定でしたが、新型コロナウイルスによる影響で、S/Wエンジニアに戻ることを決めました。この記事では、転職しようと思った理由から寿司職人からS/Wエンジニアに戻るに至った経緯をお話いたします。

自己紹介

まず、軽く自己紹介しておきます。

年月  出来事
2014年3月 情報工学部を卒業(学部卒)
2014年4月 新卒でメーカー系ソフトウェアハウスに就職。通信機器の組込みS/Wを中心に開発。
2019年9月 SEをやめる
2019年10月 寿司学校に入学
2020年5月 寿司学校を卒業
2020年8月 メーカー系スタートアップに就職

新卒で就職した会社では、主に組込み機器開発の上流から下流工程まで幅広く携わらせていただきました。
また、3~5人程度と小規模ですが、PM兼PLとしてマネジメントも経験させていただきました。

寿司職人としては、学校で魚捌きを始めとした寿司の技能だけでなく、和食の技能も学びました。また、実際に店でも働かせていただき、現場の業も学びました。

f:id:polonity:20200602001749j:plain

転職しようと思った理由

きっかけは、以前の会社で、もっとエンドユーザーと距離の近いところで働きたいと思ったことです。 以前務めていたの会社はS/W請負を中心に事業を行っていたので、エンドユーザーとの距離が疎遠でした。様々な方と仕事させていただきましたが、ありがたいことに「また一緒に仕事をしたい」というお言葉をいただけることがしばしばありました。私は、私と関わる人が仕事をしやすい雰囲気作りをモットーとしております。そのモットーに対して、他人から成果を得られたことが嬉しく、もっと多くの人と関わりたい、という思いが強くなりました。このときから、他の会社への転職を考えておりました。

寿司職人になる決意

そんなとき、テレビで寿司職人の番組を見ました。寿司職人が客の目の前で寿司を握り、お客様似提供する様子に憧れを抱きました。これぞ、私が思い描いていた職業ではないか、と思いました。また、寿司職人に関して調べていくに連れ、魚や仕込みの奥の深さに、極めがいがあると思いました。また、SEでの経験から、技術に関しては自分で研鑽すればなんとかなると分かっていたので、心配はありませんでした。そんなわけで、寿司職人を志すことを決めました。SEでのキャリアがもったいない、といろいろな人に言われましたが、SEのキャリアはどの場所でも活かせると思っていたので、特に抵抗はございませんでした。

そして、寿司職人になるべく、まずは学校に通おうと思いました1。基礎が大事であることは、SEでの経験から感じていたからです。この時点では、学校で基礎を固め、寿司店で転職する予定でした。

寿司学校に入学して

最初の2ヶ月は寿司の基礎を学びました。内容としては、魚の捌き方から握り寿司と細巻き、と寿司のいろをこの期間で学びました。私自身、何事も土台となる知識や技術が大事だと思っておりましたので、 この期間に基礎となる知識や技術を習得できてよかったと思っています。

並行して、実店舗でも週1回アルバイトし、実務経験も得ました。学校の先輩の紹介で高級店でも働かせていただき、密度の濃い2ヶ月でした。

f:id:polonity:20200602002103j:plain

次の2ヶ月はインターンとして、実店舗に週40時間働きました。バイト以来の肉体労働だったので正直しんどかったですが、貴重な実務経験を得られました。また、その道20年の先輩の方々がたくさんいらっしゃいましたので、貴重な話をたくさん聞くことができました。また、ここでシステムエンジニアとしての話も尋ねられることがしばしばあり、自分のシステムエンジニアとしてのキャリアの価値を再確認しました。
しかし、なれない業務になかなか体がついていきません。私が、もともと物事の飲み込みが遅いことも相まって、しょうもないことで毎日怒られていました。 だんだん気が滅入ってしまい、毎日が精一杯で、業務時間後はクタクタ。 日課としていた自己研鑽もだんだんおざなりになっていってしまいました。 正直、インターン期間中に「この職業続けていけるかな.....」と不安に思い始めました。ただ、SEの時も同じような感じだった2ので、私の特性上、我慢の期間だったと思います。

そして緊急事態宣言...

インターン後、再び2ヶ月間授業がありましたが、残り授業が2週間を切ったところで緊急事態宣言が発令されました。 それを受け、学校は1ヶ月間休校となりました。

f:id:polonity:20200602004356j:plain f:id:polonity:20200602004126j:plain

1ヶ月間のステイホームの始まり

学校が休校となり、1ヶ月間のステイホーム期間が始まりました。この期間で今後の人生について考えさせられました。ステイホーム中は買い物の頻度が少なくなるため、保存の効かない魚を捌く機会は少なくなりました。最初の1週間は動画を見たりしながら堕落した生活を送っておりました。しかし、そのような生活は飽きますし、人生に張りがありません。そういうわけで、自然とプログラミングに目が向いておりました。久しぶりにプログラムに触れましたが、好きなものは変わらず好きでした。stm32 nucleo boardでBLEあたりを動かして遊んでおりましたが、自分で作ったものが動くってやっぱ感動しますよね。

このまま寿司職人として働くのか

新型コロナによって飲食店は大打撃を受けており、収束の目処は立っておりません。授業の後に予定されていた2ヶ月のインターンも開始未定となりました。この状態もいつかは収束すると思ってはおりましたが、このまま寿司職人として働くか悩みました。結局、貯金もそこをつく寸前だったのもあり、 四の五の言ってられなかったので、エンジニアで就職することに決めました。

エンジニアでの就職活動

前職にいたときに、職務経歴書は作っておいたので、
エージェントからの添削をサクッとやるだけで、資料を作成するのにさほど時間はかかりませんでした。 そして、興味のある企業に片っ端から応募いたしました。もともと憧れがあったベンチャー企業を中心に受けることにしました。

何社か受けましたが、久々の面接で緊張しました。
余談ですが、面接というのは、自分の価値を再確認する意味でも有意義だと思いました。
例えば、ある企業では1年程度かかるものを、自分がいたチームは3ヶ月程度でこなしていた、など聞くと、飛んで喜べます(業務プロセスの違いの関係もあると思いますが)。

一方で、AI系の企業を受けたときには、「いくら本を読んで学習していても、実務経験がなくては。。。」と言われました。ベンチャー企業では、即戦力を期待していると思うので、今考えればごく自然のことだと思います。 このような経験から、同じIT系でも、別の分野で転職するのは至難の業だな、と改めて感じました。

そして、縁あってある企業に内定をいただき、現在もその企業で働いております。
その企業は、魚に関連のある企業なので、私の IT×寿司 に直球ドストライクだったからです。

最後に

出来事をまとめると、

 エンジニアから離脱→寿司修行だ!→未曾有の感染症で職を失うorz→エンジニアで再就職!

でしょうか。

なかなかハードでしたが、、総括すると良い経験ができて良かったです!
寿司の修行中に大切な仲間もできましたし、現在進行系で新たな挑戦や人との出会いがあり、
人生の中で今が一番楽しいです!

寿司の技術も無駄にするつもりはなく、たまの週末には握ってますし、
忘年会で社長宅で握らせていただいたりしました!3

最後までお読みいただきありがとうございました。 フォースと共にあらんことを!!!


  1. 就学中はあらゆる鮨屋の大将から「学校なんか行かず店に入って修行したほうがいいよ」って言われ続けました。個人的には、店は入っても魚を触らしてもらえなかったり(実際にインターン中はずっと唐揚げを揚げていました)、学校は授業料がボッタクリ高額、とどちらも一長一短あると思います。ただ、最近は若者の教育に力を入れている鮨店もあります。今から寿司の修行をするとしたら、気になった大将にSNSで修行させてもらえないか連絡するかなあ。

  2. 前職も戦力に加わるのに2年程度要しました。自分で言うのもあれですが、そこからは主戦力になれる自信はありますが。。笑

  3. ありがたいことに、お客様から魚を頂いたりしますが、握ったものを撮って送ると反応が良いです!

madMAx plotterで chia portable plot を 作成する

忙しい人のために

command

.\chia_plot.exe -n -1 -r 8 -u 256 -v 256 -t E:\chiaTemp\ 
-d I:\ChiaPlots\  -c <pool confident key> 
-f <farm key>

pool contract address

f:id:polonity:20210709082729p:plain
chia_pool_contract_addr

farmar key

f:id:polonity:20210709083047p:plain
chia_farmar1

f:id:polonity:20210709083326p:plain
chia_farmar2

環境

  • OS
    windows10
  • CPU
    AMD Ryzen 3700x(8 core 16 thread 3900MHz)
  • Ram
    32GByte
  • SSD
    Samsung 980 PRO 2TB PCIe Gen 4.0 x4 (最大転送速度 7,000MB/秒) NVMe M.2 (2280)

download

chia v1.2.0

www.chia.net

madMax plotter

github.com

コマンド

download した madMAx plotter の plot.cmd を以下のように編集する。

.\chia_plot.exe -n -1 -r 8 -u 256 -v 256 -t E:\chiaTemp\ 
-d I:\ChiaPlots\  -c <pool confident key> 
-f <farm key>

負荷

上記システム構成で 以下の負荷。CPUがボトルネックか?

  • CPU
    plotコピー中以外は常に80~100%
  • RAM
    1GByte 程度
  • ディスク
    30~100%

plot 速度

45~50min で 1plot

mbed cli で export した vscode プロジェクトの make で失敗したでござるの巻

背景

mbed cli を使って vscode 上で開発する場合、 mbed clivscode 用にプロジェクトを export できる。 vscode 以外にも export に対応しており、自分がやりなれた、適したIDE で開発可能。

環境

  • GNU Tools for Arm Embedded Proccessors 9-2019-q4-major 2019
  • Git 2.26.1
  • TortoiseHg 5.0.2
  • GnuWin32 Make-3.81
  • Python 3.8.2

公式サイトのチュートリアルを参考に環境を構築

mbed cli が吐いた Makefile

小生も BLE のサンプルプロジェクトをexport してmake した結果、以下のように失敗。(隙を生ぜぬ3段構えでした。)

make に失敗~その①~

windows環境のecho でダブルクオーテーションが出力される問題が原因。 以下のエラーが発生。

make[1]: *** [BLE_GattServer.elf] Error -1073741819

パット見で原因不明。プリントデバッグを施して原因個所を特定し、Makefile を以下のように直せば解消した。

- +@echo "$(filter %.o, $^)" > .link_options.txt
+   +@echo $(filter %.o, $^) > .link_options.txt

make に失敗~その②~

windows の標準出力で 8192 byte 以上切り落とし問題が原因。.link_options.txt に書き込むリンク情報が切り落とされるので、以下のようなエラーが発生。

make[1]: *** [BLE_GattServer.elf] No such file directory

こちらもエラーmsgからは特定が厳しかったが、.link_options.txt が途中でちょん切られていたのを見て原因を推定。 1行でリンク情報を.link_options.txtへリダイレクトしている個所を、リンク情報を1つずつリダイレクトするように修正。

+ define append
+   +@echo $1 >> .link_options.txt
+ endef

$(PROJECT).elf: $(OBJECTS) $(SYS_OBJECTS) $(PROJECT).link_script.ld
-  +@echo "$(filter %.o, $^)" > .link_options.txt
+   +@echo. > .link_options.txt
+   $(foreach LINK_OPTION, $(filter %.o, $^), $(call append, $(LINK_OPTION)))
    +@echo "link: $(notdir $@)"

これを直してもまた失敗。。。

make に失敗~その③~

Makefile で call する定義の最下行に空行がないのが原因。

発生する現象は、.link_options.txt にリダイレクトされる内容にコマンド名+@echo が含まれてしまうこと。このせいでリンクに失敗する。

以下のように修正する。

define append
    +@echo $1 >> .link_options.txt
+   
endef

$(PROJECT).elf: $(OBJECTS) $(SYS_OBJECTS) $(PROJECT).link_script.ld
    +@echo. > .link_options.txt
    $(foreach LINK_OPTION, $(filter %.o, $^), $(call append, $(LINK_OPTION)))
    +@echo "link: $(notdir $@)"

これで make に成功! Yatta!

ただ、正しい解決策としては、mbed osや driver を意味ある単位で静的ライブラリとしてリンクして、最後に全部まとめることだと思う。

vscode で nucleo-F401RE のデバッグ環境を構築

経緯

nucleo 用にビルド環境を docker で構築したが、 現状、docker for windows は USBデバイスに対応していないため、コンテナ内ではデバッグができない。 そこで、泣く泣くホスト側にも開発環境を用意し、デバッグ環境を構築することにした。

vscodeデバッグ機能を使用して構築する

公式サイトのチュートリアルをもとに環境を構築。

os.mbed.com

以下をインストール。

  • GNU Tools for Arm Embedded Proccessors 9-2019-q4-major 2019
  • Git 2.26.1
  • TortoiseHg 5.0.2
  • GnuWin32 Make-3.81
  • Python 3.8.2

vscode 用にmbed-cli プロジェクトをインポートし、make する。

# mbed import http://os.mbed.com/teams/ST/code/mbed-os-example-blinky/
# cd mbed-os-example-blinky
# mbed export -i vscode_gcc_arm -m NUCLEO_F401RE --profile debug
# make

ここで make に失敗(No such file on directory)して詰まったが、PCを再起動するとすんなり make できた。

後は、先ほど export したときに生成されている launch.json を環境に合わせていじる。

            "debugServerArgs": "-f \"C:\\Program Files (x86)\\OpenOCD-20200408-0.10.0\\share\\openocd\\scripts\\board\\st_nucleo_f4.cfg\" -f \"C:\\Program Files (x86)\\OpenOCD-20200408-0.10.0\\share\\openocd\\scripts\\interface\\stlink-v2-1.cfg\" -c init -c \"reset init\"",
            "serverStarted": "target halted due to debug-request, current mode: Thread",
                "MIDebuggerPath": "C:\\Program Files (x86)\\GNU Tools ARM Embedded\\9 2019-q4-major\\bin\\arm-none-eabi-gdb.exe",
                "debugServerPath": "C:\\Program Files (x86)\\OpenOCD-20200408-0.10.0\\bin\\openocd.exe",

vscodeデバッグ画面から ”C++ Launch” を押下し、デバッグを開始する。 make が走り、flash writeが始まる。 しかし、flash write が終わっても、target board が reset せず、デバッグを開始できない。 苦肉の策で board 上の reset ボタンを押下すると、main.cpp に張った break point で止まった!

f:id:polonity:20200416111743p:plain

できた。

結構 elf ファイルの転送に時間がかかるが、breakpoint を張れるようになってデバッグが必要になっても心強い。


[追記]

visual studio code拡張機能として、Platform IO がある。 これを使えば、割と簡単にデバッグ環境を構築できた。(少なくとも、デバッグ設定ファイルをいじる手間は省ける。) また、ターゲットが(いまのところ)確実に reset するので、使いやすい。 こっちのほうがおすすめですね。

Nucleo-64 で Lチカまで

引き出しの肥やしになっていた Nucleo ボードを掘り出して動かしてみました。とりあえずLチカまで。

ファームウェアをアップグレードする

  1. USBケーブルでPCとNucleoボードを接続する。

  2. 接続するとファイルが見えるので、MBED.HTM でmbed に飛ぶ。

  3. mbed に登録し、ファームウェアをダウンロードし、インストールする。 f:id:polonity:20200414112442p:plain

Lチカのプログラムを書き込む

  1. nucleo-F401RE のページ内open compiler を押下し、開発環境を開く

  2. テンプレートで "Blinky LED test for the ST Nucleo boards"を選択し、OKを押下

f:id:polonity:20200414122809p:plain

  1. コンパイルとダウンロードを押下。コンパイルに成功すると、bin ファイルをダウンロードできる。

  2. ダウンロードした bin ファイルを MBED.HTMがあるフォルダに放り込む。と、binファイルが読み込まれ、Lチカが始まる!

mbed を初めて使ったが、サポートされたペリフェラルを動かすだけなら組込みも簡単になったもんだ。まあ、実際の開発ではサポートされていないペリフェラルも動かすわけだから、データシートに従って実装してTry&Error しながら、オシロなりでデバッグできる必要があるわけだが。。。←この敷居はかなり高い。。。っていうかオシロが個人には高い。。。

vue の開発環境を docker で得る

せっかくdocker 環境を手に入れたので、実務でも使えるポータブル可能&使い捨て開発環境を作ろうかと。 今わたしが学習したい言語 No.1 の vue の開発環境を得ます。(といってもとっても簡単。)

準備するもの

環境構築手順

  1. vscode で開発環境用ディレクトリを開き、ctrl+shift+p などでコマンドパレットを起動し、"add container"などと打ち込み、"Remote-Containers: Add Development Container Configuration Files..."を選択。

  2. 利用したい開発環境を選択する。明示的なvue 開発環境は見られないので、今回は、"Node.js 12 + Typescript "を選択。

  3. devcontainer.json が開発環境用フォルダ直下に作成されるので、開いて以下の設定を追記する。

 ForwardPorts: [8080], //vue で作成したwebアプリケーション をhost PC側のブラウザから動作確認するときに必要。
    "extensions": [
        "dbaeumer.vscode-eslint",
        "ms-vscode.vscode-typescript-tslint-plugin",
        "octref.vetur"
    ]
  1. Dockerfile に以下のようにvue をインストールするコマンドを追記する。
RUN npm install -g tslint typescript \
&& npm install -g @vue/cli \
&& npm install -g @vue/cli-init
  1. 「このフォルダには dev container の設定ファイルがあるぜ!このフォルダをコンテナで開くか?」と聞かれるので、「Reopen in Container 」と答える

→コンテナが開き、コンテナ内のterminal が表示される!

 ※vscode の remote Explore を開くとコンテナの設定が表示されます。ちなみに、今回設定した fowarding port などもここで確認できますし、コンテナを建てた後からでもこの画面から追加可能です。

f:id:polonity:20200413174023p:plain

  1. 適当に vue application を作って動作確認までする。
#vue create sample
#cd sample
#yarn serve

http://localhost:8080 を開くと、いつものサイトが表示されるはずです。お疲れ様でした!


それにしても、 はてなmarkdownenum の中にコードなど仕込むと、採番が初期化されてしまうのは何とかならないのか。。。