TinyPilot: Month 10

Michael Lynch

TinyPilot:第 10 個月

一句話總結

TinyPilot 有了第一間真正的辦公室。

重點提要

  • TinyPilot 有了第一個正式的辦公空間。
  • 我嘗試了一項行銷實驗,結果失敗了。
  • 為新辦公室設計 IT 基礎架構很有趣。

目標成績

每個月月初,我都會宣告想達成的目標。以下是我達成這些目標的情況:

將 TinyPilot 營收提升至 3 萬美元

  • 結果:營收成長 46%,達到 2.9 萬美元
  • 評分:A-

雖然沒能完全達到 3 萬美元的目標,但已經非常接近。總算結束了從二月開始的銷售下滑趨勢,讓人鬆了一口氣。

為客製化 TinyPilot PoE HAT(乙太網路供電擴充板) 製作原型

剛開始時,我的電機工程合作夥伴已將全球積體電路短缺納入考量,但實際情況比他們預期的更嚴重。

一般來說,會在設計並印製出成功的原型之後,才大量採購零組件。我們原本計畫把採購時程提前到僅僅設計出原型的階段。我們嘗試了三次,結果每次在我們花三、四天設計電路板的期間,零組件就銷售一空。我們的新策略是,一旦確定可用零件,就立刻採購關鍵零組件六個月份的庫存量,然後祈禱它們能在設計中正常運作。

為我的新書 Refactoring English(《重構英文》)撰寫大綱

我寫出了一份自己覺得合適的大綱,但尚未收集讀者的回饋。下一步是向本書的訂閱名單發送問卷,了解這份大綱是否符合他們期望學習的內容。

TinyPilot 數據

指標2021 年 3 月2021 年 4 月變化
不重複訪客5,8055,880+75 (+1%)
總瀏覽次數9,76210,483+721 (+7%)
銷售營收$19,782.96$28,880.65+$9,097.69 (+46%)
捐款$19.92$0.00-$19.92 (-100%)
總營收$19,802.30$28,880.65+$9,078.35 (+46%)
淨利-$352.77$843.56N/A

TinyPilot 的新辦公室:有趣的部分

TinyPilot 有了第一個正式的辦公空間!從我家步行只要 15 分鐘,地點非常棒。租約從 5 月 1 日開始,我正在把營運陸續搬遷過去。

TinyPilot 辦公室搬入當天的照片

新辦公室的第一天(現在整齊多了)

雖然我主要還是在家工作,但擁有一間真正的辦公室,比我想像中更有趣。我家越來越像 TinyPilot 的倉庫,所以把所有東西搬到辦公室、空出兩個大櫃子和一間大儲藏室,讓人如釋重負。

新辦公室另一個出乎意料讓我樂在其中的部分,是挑選科技基礎設施。以下簡單介紹我目前使用的設備:

門鎖:Yale Assure Lever

辦公室門上智慧門鎖的照片

辦公室原本配有一般的帶鎖門把,但我想要更好的臨時通行管理方式。此外,如果與員工的合作關係惡化而必須分道揚鑣,我也不想擔心對方手上可能還留有辦公室鑰匙的複本。

我聽說 August 智慧門鎖評價不錯,但他們只做輔助鎖。Yale 在 2017 年收購了 August,並推出搭載 August 軟體的門把鎖。

不確定這是否是 Yale 收購的副作用,但安裝過程出乎意料地糟糕。設定的每個步驟至少要試三次,因為 App 的指示非常不清楚,而且只要遇到任何硬體或 WiFi 問題就會直接失敗,完全沒有妥善處理錯誤。

現在全部設定完成後,不用掏口袋找鑰匙就能開門很方便,而且能查看誰進出辦公室的紀錄也很酷。

印表機:Zebra LP2844(出貨標籤)與 Brother HL-2300D(一般紙張)

桌上印表機的照片

我在網路印表機上的運氣一向很差,尤其是透過 WiFi 連線的機種。這台 Brother 印表機只是一台單純的 USB 印表機,我透過一台專屬的 print server(列印伺服器)(如下所述)將它分享到區域網路。我在家裡也用同一款印表機,一直很穩定,所以覺得很適合放在辦公室。

我們在家本來就已經在使用 Zebra 印表機,所以直接把它搬到辦公室。它可以運作,但我似乎無法像在家用 Windows 電腦時那樣調整墨色濃度,所以印出來的標籤有點難以辨識。

路由器:在 Qotom Q355G4 迷你電腦上執行的 OPNsense

:我們還沒架設辦公室的伺服器機櫃,所以我像個邋遢鬼一樣把所有網路設備都放在地板上。

Qotom Q355G4 迷你電腦的照片OPNsense 螢幕截圖

我在家使用 Ubiquiti EdgeRouter 4,但 Ubiquiti 今年每況愈下。pfSense 是熱門的替代方案,但他們似乎在是否為開源一事上說謊。我從多個來源聽說,OPNsense 是 pfSense 中「守規矩」的分支。

Qotom Q355G4 迷你電腦是執行 OPNsense 的熱門選擇,所以我在 Amazon 上買了一台。當然,多虧了新的虛擬儲存掛載功能,我只用一台 TinyPilot 就完成了作業系統的安裝。

到目前為止我很喜歡 OPNsense。複雜度比 Ubiquiti 高,但比 MicroTik 直覺許多。我已經能找到操作方向,但還不太敢隨意調整設定。

交換器:TP-Link 8 埠 PoE 交換器

TP-Link 8 埠交換器的照片

這和我在家用的同一款交換器,我很喜歡。不過 PoE 連接埠很快就不夠用了,所以我已經訂購了 Netgear 16 埠 GS116LP,計畫將它安裝到機櫃上。

無線基地台:Ruckus R310

尚未安裝的 Ruckus 無線基地台

又是和家裡同一款。大概對一間僅 125 平方英尺(約 3.5 坪)的辦公室來說有點太高階了。

我很喜歡它支援 PoE,所以只需要一條線就好。我家的 Ruckus 設定一次後就再也不用調整,所以我喜歡這種幾乎免維護的特性。

Print server:Pi 4B 上的 CUPS

Raspberry Pi 列印伺服器的照片

我的 print server 設定起來出乎意料地簡單。我在一台 Pi 4B 上裝了 PoE HAT(剛好我手邊有很多),然後安裝了 cupsprinter-driver-brlaser

目前列印時遇到一些小狀況,但不確定該怪我用來列印的 Linux 用戶端、CUPS 伺服器,還是印表機本身。

Jumpbox / bastion server(跳板/堡壘主機):舊款 Pi 3 上的 Tailscale

舊款 Raspberry Pi 3 的照片

為了遠端存取我的機器,我在一台舊的 Raspberry Pi 3 上安裝了 Tailscale。接著,我也在家裡的桌機上安裝 Tailscale,這樣只要兩台機器都有連上網路,就會透過 Tailscale 的虛擬網路連在一起。

如果我需要存取路由器,我會在家中桌機上執行這個指令:

ssh bastion -L 443:192.168.1.1:443

這樣就搞定了!我可以存取路由器的管理介面。

當我想管理辦公室的列印伺服器(franklin)時,我會執行這個指令:

ssh -J bastion franklin -L 631:localhost:631

這樣一來,我就能存取 franklin 的 CUPS 網頁介面。

CUPS 介面的螢幕截圖

使用 Tailscale 從家中的開發電腦管理辦公室的列印伺服器

尚未完成

  • 12U 伺服器機櫃
  • HP DL380 G7 機櫃式伺服器
    • 主要是因為我想第一次嘗試使用伺服器機櫃。
    • 它非常巨大,重達 60 磅(約 27 公斤)。
    • 最後可能會證明這是個糟糕的主意。
  • Dell Optiplex 3050 Micro(主要工作站)
    • 目前暫時以一台 17 吋測試用筆電作為主要工作站

TinyPilot 的新辦公室:煩人的部分

開設辦公室不好玩的部分,就是各種法律和保險事務。

我以前只以「獨立承攬人」的形式聘人,在美國這是相對輕量、官僚程序較少的作法。但你不能隨意把任何人都認定為承攬人。美國國稅局(IRS)針對承攬人與雇員的區別發布了指引。就我需要的工作內容而言,國稅局認定這屬於雇傭關係。這意味著我必須處理一大堆文書作業,並投保職災保險。我的租約也要求我購買責任險和財產保險。

TinyPilot 很難被歸入保險公司常用的營業類別。當保險公司談到「製造業」時,通常指的是擁有可能致命重型機械的工廠。我們所謂的「製造」產品,只是把電路板鎖進塑膠外殼,但保險公司仍將此視為「製造業」,並收取高額費率。

人資相關事務更為惱人,而且持續拖延。我根據其他創辦人的推薦選擇了 JustWorks,但我逐漸意識到,因為我不是純軟體公司,體驗可能對我來說更糟。

以下是我目前使用 JustWorks 的體驗:

  • JustWorks 的導入流程有七個不同的人聯絡我,問同樣的問題,團隊內部似乎完全沒有協作。
  • JustWorks 隱藏了一筆龐大的費用:你必須向他們購買職災保險,直到註冊流程進行一週後才會得知。
  • JustWorks 預設會寄給你一張勞工法規海報,然後收費 50 美元。客戶可以選擇不拿,但真的讓人覺得 JustWorks 在錙銖必較。如果我每個月為四人團隊付 200 美元,一張便宜的海報感覺應該是 JustWorks 可以免費附送的東西。

JustWorks 最令人沮喪的地方在於,在職災保險上,他們把我的職務歸類為批發倉庫作業員。我和那些用堆高機搬運巨大棧板的人被歸在同一個風險等級。儘管我已說明我的工作純粹是電腦作業,我薪資的保險費率卻比實際從事組裝裝置等體力勞動的員工高出三倍。當我試圖更正費率時,JustWorks 一直堅稱他們指派的代碼是正確的,並拒絕進一步說明。

我最後和我的客戶經理通上電話,向他解釋我的工作僅限於撰寫軟體和管理人員,因此把我歸類為倉庫作業員毫無道理。他表示理解,並說會去和職災保險團隊溝通。幾天後,他轉達了這段回覆:

此案例中的行政人員即使從事的是辦公室內的電腦工作,仍會接觸到產品與批發業務的營運。這就是客戶會被歸為此分類的原因。這種接觸使得該員工無法被單純視為文書人員。

目前要脫離 JustWorks 實在太麻煩,但我計畫在年底評估 GustoOnPay

讓我先問問我的律師

受到重溫 Mike Monteiro(麥克·蒙泰羅)著名演講 〈F— You, Pay Me〉 的啟發,我生平第一次聘請律師來審閱商業合約。

蒙泰羅的建議主要是針對顧問和承攬人,但他的演講大部分內容對創辦人同樣適用。他主張,如果讓對方單方面定義合約的所有條款而自己這邊沒有律師,就等於放棄了巨大的談判力量。即使你的公司看起來還小到請不起律師,一位好律師也能透過幫你避開糟糕的交易來回本。

我從未簽過商業租約,也不知道什麼是常態,所以這似乎是諮詢律師的好機會。這讓租約流程多了一週的壓力。延遲的原因是我同時在做兩件事:第一次聘請律師,並請他審閱租約。

不過結果倒是很有趣。能說出「這份文件我得先讓律師看過」讓我覺得自己像個真正的生意人。而且律師發現了租約中的矛盾之處,並針對對我重要的條款(例如網路可用性以及房東進入租賃空間的權限限制)建議了更清晰的用語。

我那個想錯方向的行銷實驗

Will Yarborough(威爾·亞伯勒)是最早評測 TinyPilot 的 YouTuber 之一,我很想與他合作,探索 TinyPilot 更有趣的使用情境。

我們透過視訊通話一起腦力激盪,亞伯勒建議用 TinyPilot 來控制 DSLR 相機。幾乎所有 DSLR 都有 HDMI 輸出,並提供一個簡單的電子介面來觸發快門。

TinyPilot 在 Raspberry Pi 上運行,而 Raspberry Pi 擁有可透過軟體切換開關的電子接腳。如果我能在 TinyPilot 的網頁介面上新增一個控制 Pi 其中一個接腳的按鈕,亞伯勒就能設計一個連接到相機快門的電路。

這似乎是個絕佳的主意!它可能為 TinyPilot 開拓全新的市場。而且,雖然已經有人在部落格上分享過用 Raspberry Pi 控制 DSLR 快門的做法,但從來沒有人把它與影像擷取結合,並放進一個精美的網頁介面中。

由亞伯勒負責製作電路和拍攝影片,這感覺像是穩贏的合作。我只需要做的是在網頁介面上加一個按鈕。這最多應該只花我一個小時。

當我坐下來實作軟體部分時,很快就發現不只是加一個按鈕那麼簡單。我需要更新 TinyPilot 的安裝程式,以加入用來控制 Raspberry Pi 電子介面的正確函式庫。而且我不能隨便把按鈕塞在任何地方——我必須重新安排介面,把按鈕放在合理的位置。即使有了可行的解決方案,我和亞伯勒仍必須針對不同相機的相容性反覆調整好幾次。

總計,我在這個開發上花了大約六個小時。聽起來不多,但在現在的情況下,我每週能寫程式的時間只有幾個小時。這個專案就耗掉了我一週多所有的程式開發時間。

亞伯勒製作了一支很棒的影片,但我們都對回響感到失望。以下是截至本文撰寫時的數據:

指標數值
YouTube 觀看次數812
電子報訂閱數17
轉換率2%

影片發布後,我才意識到自己問錯了問題。雖然確實沒有人用Raspberry Pi打造過這樣的解決方案,但市面上已經有可以透過手機或瀏覽器控制 DSLR 的產品。甚至有一家公司持有專利,聲稱他們發明了透過電腦網路控制相機的點子,因此如果我打造競爭產品,他們可能會對我提告。

我很慶幸自己有先見之明,把所有 DSLR 相關的程式碼都保留在程式碼庫中獨立的實驗分支裡。起初,我以為這只是個小改動,可以直接作為功能加到正規的 TinyPilot 軟體中。還好沒有這麼做,否則會讓程式碼變得非常複雜,並在介面上塞入一個 99% 使用者都不需要的功能。

舊專案

以下是我仍在維護、但非開發重心的專案的簡要更新:

Is It Keto

指標2021 年 3 月2021 年 4 月變化
不重複訪客63,49356,094-7,399 (-12%)
總瀏覽次數141,199123,723-17,476 (-12%)
Domain Rating(Ahrefs 網域權重)11.011.00
AdSense 營收$611.99$560.20-$51.79 (-8%)
Amazon 聯盟營收$337.29$116.78-$220.51 (-65%)
總營收$949.28$676.98-$272.30 (-29%)

Is It Keto 仍在背後安靜地運作。它和去年一樣,隨著人們對年初開始的飲食失去興趣,熱度正緩慢下降。

Amazon 聯盟營收下降幅度特別大,但那只是因為上個月是異常值

Hit the Front Page of Hacker News

指標2021 年 3 月2021 年 4 月變化
不重複訪客185114-71 (-38%)
Gumroad 營收$313.63$341.61+$27.98 (+9%)
Blogging for Devs 營收$655.20$109.20-$546.00 (-83%)
總營收$968.83$450.81-$518.02 (-53%)

我的課程仍持續小量銷售。上個月來自 Monica Lent(莫妮卡·倫特)的 Blogging for Devs 社群有一波大幅成長。三月時,倫特開始將本課程作為會員免費福利提供,並依每次獨立的課程下載向我支付版稅。那波初期熱潮已經趨緩。

我很高興仍有人持續發現這門課程並向我分享他們的學習心得。來自 CourseMaker 的 Chris Samiullah(克里斯·薩米烏拉) 發表了他的筆記,並肯定我的課程幫助他登上 /r/programming 子版面的熱門第一名

Zestful

指標2021 年 3 月2021 年 4 月變化
不重複訪客480892+412 (+86%)
總瀏覽次數1,3672,132+765 (+56%)
RapidAPI 營收$21.97$40.82+$18.85 (+86%)
總營收$21.97$40.82+$18.85 (+86%)

Zestful 持續處於維護模式。最近有不少人詢問企業方案,但在聽到報價後討論就很快無疾而終。我開出較高的價格,以反映將注意力從 TinyPilot 轉移開的機會成本。

不過,很多企業洽詢很難讓人認真看待。洽詢往往以「隨用隨付方案對我來說太貴了。你們的企業方案多少錢?」作為開頭。

總結

完成了什麼?

  • 簽下了 TinyPilot 有史以來第一間辦公空間的租約。
  • 聘請了兩名新員工以兼職方式支援辦公室營運。
  • 為新員工整理了約 50% 的 TinyPilot 內部流程文件。
  • 完成 TinyPilot 1.5.0 的程式碼開發,新增了虛擬儲存功能以及影片串流調校支援。
  • 發表了部落格文章〈How Litestream Eliminated My Database Server for $0.03/month〉

學到的教訓

  • 絕不要在即時討論中承諾新專案。
    • 即使看起來很小,實際上可能比想像中複雜得多。
    • 我需要更多時間思考這份工作是否值得投入。
  • 為變化預留更多時間。
    • TinyPilot 同時經歷兩項重大變化:搬進第一間辦公室以及從零開始培訓新員工。
    • 我預期兩者都需要時間,但應該為無法預期的任務預留更多緩衝。

下個月的目標

  • 將 TinyPilot 的營收提升至 3.3 萬美元。
  • 將 TinyPilot 的營運完全遷移至新辦公室。
  • 針對《重構英文》的目錄收集回饋並進行迭代。

原文由 Michael Lynch 發布

本文章由 muse-spark-1.2-contributor 進行翻譯