TinyPilot: Month 10

Michael Lynch

TinyPilot:第 10 個月

原文由 Michael Lynch 發布,訂閱此部落格

一句話總結

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 的指示非常不清楚,而且一遇到硬體或 Wi-Fi 問題就直接當掉,完全沒有妥善處理錯誤。

不過全部設定好之後,不用在口袋裡掏鑰匙就能開門很方便,能看到誰進出辦公室的紀錄也很酷。

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

桌上印表機的照片

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

Zebra 這台我們本來在家裡就在用,所以就直接搬到辦公室。它可以正常運作,但我似乎沒辦法像在家用 Windows 電腦時那樣調整列印濃度,所以印出來的標籤有點難辨識。

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

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

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

我在家裡用的是 Ubiquiti EdgeRouter 4,但 Ubiquiti 今年狀況急轉直下。pfSense 是熱門的替代方案,但他們似乎在是否為開源這件事上說謊。我從好幾個來源聽說,OPNsense 才是 pfSense 中「有良心」的分支。

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

目前為止我很喜歡 OPNsense。它的複雜度比 Ubiquiti 高,但比 MikroTik 直覺得多。我已經能摸索出操作方式,只是不太敢隨便亂調設定。

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

TP-Link 8 埠交換器的照片

這台跟我在家用的同一款,我很喜歡。不過 PoE 埠很快就不夠用了,所以我已經訂了一台 Netgear 16 埠的 GS116LP,打算裝到機櫃上。

無線基地台:Ruckus R310

尚未安裝的 Ruckus 無線基地台

同樣跟我在家用的是同一款。對一間只有約 125 平方英尺(約 3.5 坪)的辦公室來說,可能有點太高級了。

我很喜歡它是 PoE 供電,所以只需要一條線。家裡那台 Ruckus 我設定一次後就再也沒去動過,幾乎不用維護,這點很棒。

列印伺服器:在 Pi 4B 上運行的 CUPS

Raspberry Pi 列印伺服器的照片

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

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

跳板 / Bastion 伺服器:在舊款 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)對承攬人和雇員的區別有明確的指引。以我需要的工作內容來看,IRS 會認定為雇傭關係。這意味著我必須處理一大堆文書作業,還要投保勞工保險。我的租約也要求我必須購買責任險和財產險。

TinyPilot 很難被歸到保險公司常用的行業類別裡。保險公司所說的「製造業」,通常是指有大型重機械、可能造成致命危險的工廠。我們雖然也算「製造」產品——把電路板鎖進塑膠外殼裡——但保險公司就把這視為「製造業」,收取高額保費。

人資相關的事務更煩人,而且到現在還在拖。聽從其他創辦人的推薦,我選擇了 JustWorks,但我漸漸發現,因為我不是純軟體公司,體驗恐怕比別人差很多。

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

  • JustWorks 的 onboarding 流程中有七個不同的人來聯繫我,問同樣的問題,團隊內部似乎完全沒有互相溝通。
  • JustWorks 隱藏了一筆很高的費用:你必須向他們購買勞工保險,但要等到註冊流程進行一週後才會發現。
  • JustWorks 預設會寄給你一張勞動法規海報,然後收你 50 美元。雖然可以選擇不拿,但真的讓人覺得 JustWorks 在斤斤計較。如果我一個四人的團隊每個月付 200 美元,這種便宜的海報感覺應該免費附送才對。

JustWorks 最讓人沮喪的是,他們在勞工保險上把我的職務歸類為批發倉庫工人。我被放在跟用堆高機搬運巨大棧板的人同一個風險等級裡。即使我已經說明我的工作純粹是電腦作業,我薪資的保險費率還是比實際動手組裝裝置的員工高出三倍。當我試圖更正費率時,JustWorks 卻一直堅稱他們給的代碼是正確的,且不願進一步說明。

我最後直接跟我的客戶經理通了電話,向他解釋我的工作僅限於寫軟體和管理人員,把我歸為倉庫工人完全不合理。他表示理解,並說會去跟勞工保險團隊溝通。幾天後,他轉達了這樣的回覆:

在此案例中,儘管該人員在辦公室從事的是電腦相關工作,但其行政職務仍會接觸到產品及批發業務的營運。這就是為什麼客戶會被歸為此分類。這種接觸使得該員工無法被單純視為文書人員。

現階段要從 JustWorks 換到別家太麻煩了,但我打算在年底評估 GustoOnPay

讓我先問問律師

重看了 Mike Monteiro 著名的演講《F— You, Pay Me》後,我生平第一次聘請律師來審閱商業合約。

Monteiro 的建議主要是針對顧問和承攬人,但他的演講內容大多也適用於創辦人。他認為,如果你讓對方單方面定義合約的所有條款,而自己身邊沒有律師,就等於放棄了巨大的主導權。即使你的事業小到似乎請不起律師,一位好律師也能透過幫你避開糟糕的交易來值回票價。

我從來沒簽過商業租約,也不知道什麼才是正常的條款,所以這似乎是諮詢律師的好機會。這讓租約流程多了一週的壓力。會拖這麼久,是因為我同時在做兩件事:第一次聘請律師,以及請他審閱租約。

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

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

Will Yarborough 是最早評測 TinyPilot 的 YouTuber 之一,我很想跟他合作,探索 TinyPilot 更有趣的使用情境。

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

TinyPilot 運行在 Raspberry Pi 上,而 Pi 有可以透過軟體控制開關的電子接腳。如果我能在 TinyPilot 的網頁介面中加入一個控制 Pi 接腳的按鈕,Will 就能架設一個連接到相機快門的電路。

這聽起來是個很棒的主意!它可能為 TinyPilot 開闢一個全新的市場。而且,雖然已經有人寫過用 Raspberry Pi 控制單眼快門的文章,但還沒有人把它跟影像擷取結合,並放進一個精美的網頁介面中。

Will 負責了打造電路和拍攝影片等繁重工作,這感覺像是穩贏的合作。我只需要在網頁介面上加一個按鈕,最多花一個小時就能搞定。

當我坐下來實作軟體部分時,才很快意識到工作量不只是加一個按鈕而已。我需要更新 TinyPilot 的安裝程式,加入控制 Raspberry Pi 電子介面所需的函式庫。而且按鈕也不能隨便亂放——我得重新安排介面,把按鈕放在合理的位置。即使有了可行的方案,我和 Will 還是得隨著在不同相機上的測試結果來回調整好幾次。

總計我在這上面花了大約六小時的開發時間。聽起來不多,但以我現在一週能擠出幾個小時寫程式就算幸運的情況來說,這個專案就吃掉了我超過一整週的程式開發時間。

Will 完成了一支很棒的影片,但我們兩人都對迴響感到失望。以下是撰寫本文時的數據:

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

影片發布後,我才意識到自己問錯了問題。雖然確實沒有人用Raspberry Pi 做出過這樣的解決方案,但市面上已經有可以透過手機或網頁瀏覽器控制單眼相機的產品。甚至有一家公司還擁有專利,聲稱他們發明了透過電腦網路控制相機的概念,所以如果我推出競品,他們甚至可能對我提告。

還好我有先見之明,把所有單眼相機相關的程式碼都留在程式碼庫中一個獨立的實驗分支裡。一開始我以為這改動很小,可以直接當作一般功能加進 TinyPilot 的正式軟體中。幸好沒有這麼做,否則會為程式碼帶來大量複雜度,還會讓 99% 的使用者不需要的功能把介面弄得雜亂不堪。

舊有專案近況

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

Is It Keto

指標2021 年 3 月2021 年 4 月變動
不重複訪客63,49356,094-7,399 (-12%)
總瀏覽次數141,199123,723-17,476 (-12%)
網域權重(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 社群而出現大幅成長。三月時,Monica 開始將課程作為免費福利提供給她的會員,並為每一次不重複的課程下載支付版稅給我。那波初期的熱潮已經消退。

我很開心仍有人持續找到這門課程,並跟我分享他們的學習心得。來自 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 的營運完全轉移到新辦公室。
  • 針對 Refactoring English 的目錄收集回饋並進行迭代。

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

留言