歡迎光臨
每天分享高質量文章

作為 CEO 使用 Emacs 的兩年經驗之談 | Linux 中國

兩年前,我寫了一篇部落格,並取得了一些反響。這讓我有點受寵若驚。那篇部落格寫的是我準備將 Emacs 作為我的主辦公軟體,當時我還是 CEO,現在已經是 CTO 了。

— Josh Stella

 

兩年前,我寫了一篇部落格[1],並取得了一些反響。這讓我有點受寵若驚。那篇部落格寫的是我準備將 Emacs 作為我的主辦公軟體,當時我還是 CEO,現在已經是 CTO 了。現在回想起來,我發現我之前不是做程式員就是做軟體架構師,而且那時我也喜歡用 Emacs 寫程式碼。重新考慮使用 Emacs 是一次令我振奮的嘗試,但我不太清楚這次行動會造成什麼反響。在網上,那篇部落格的評論也是褒貶不一,但是還是有數萬的閱讀量,所以總的來說,我寫的是一個蠻有意思的題材。在 Reddit[2] 和 HackerNews[3] 上有些令人哭笑不得的回覆,說我的手會變成雞爪,或者說我會因白色的背景而近視。在這裡我可以很高興地回答,到目前為止並沒有出現什麼特別糟糕的後果,相反,我的手腕還因此變得更靈活了。還有一些人擔心,說使用 Emacs 會耗費一個 CEO 的精力。把 Fugue 從一個在我家後院的靈感變成強大的產品,並有一大批忠實的顧客,我發現在做這種真正複雜之事的時候,Emacs 可以給你帶來安慰。還有,我現在仍然在用白色的背景。

近段時間那篇部落格又被翻出來了,併發到了 HackerNews[4] 上。我收到了大量的跟帖者問我現在使用狀況如何,所以我寫了這篇部落格來回應他們。在本文中,我還將重點討論為什麼 Emacs 和函式式程式設計有很高的關聯性,以及我們是怎樣使用 Emacs 來開發我們的產品 —— Fugue,一個使用函式式程式設計的自動化的雲端計算平臺的。由於我收到了很多反饋,其眾多細節和評論很有用,因此這篇部落格比較長,而我確實也需要費點精力來解釋我如此作為時的想法,但這篇文章的主要內容還是反映了我擔任 CEO 時處理的事務。而我想在之後更頻繁地用 Emacs 寫程式碼,所以需要提前做一些準備。一如既往,本文因人而異,後果自負。

意外之喜

我大部分時間都在不斷的處理公司內外溝通。交流是解決問題的唯一方法,但也是反思及思考困難或複雜問題的敵人。對我來說,作為創業公司的 CEO,最需要的是能專註工作而不被打擾的時間。一旦你決定投入時間來學習一些有用的命令,Emacs 就能幫助創造這種不被打擾的可貴環境。其他的應用會彈出提示,但是一個配置好了的 Emacs 可以完全不影響你 —— 無論是視覺上還是精神上。除非你想,否則的話它不會改變,況且沒有比空白螢幕和漂亮的字型更乾凈的介面了。不斷被打擾是我的日常狀況,因此這種簡潔讓我能夠專註於我在想的事情,而不是電腦本身。好的程式能夠默默地操縱電腦,並且不會奪取你的註意力。

一些人指出,我原來的部落格有太多對現代圖形介面的批判和對 Emacs 的贊許。我既不贊同,也不否認。現代的介面,特別是那些以應用程式為中心的方法(相對於以內容為中心的方法),既不是以使用者為中心的,也不是面向任務的。Emacs 避免了這種錯誤,這也是我如此喜歡它的部分原因,而它也帶來了其他優點。Emacs 是帶領你體會計算機魅力的傳送門,一個值得跳下去的兔子洞(LCTT 譯註:愛麗絲夢遊仙境裡的兔子洞,跳進去會有新世界)。它的核心是發現和創造屬於自己的道路,對我來說這本身就是創造了。現代計算的悲哀之處在於,它很大程度上是由帶有閃亮介面的黑盒組成的,這些黑盒提供的是瞬間的喜悅,而不是真正的滿足感。這讓我們變成了消費者,而不是技術的創造者。無論你是誰或者你的背景是什麼;你都可以理解你的電腦,你可以用它創造事物。它很有趣,能令人滿意,而且不是你想的那麼難學!

我們常常低估了環境對我們心理的影響。Emacs 給人一種平靜和自由的感覺,而不是緊迫感、煩惱或興奮 —— 後者是思考和沉思的敵人。我喜歡那些持久的、不礙事的東西,當我花時間去關註它們的時候,它們會給我帶來真知灼見。Emacs 滿足我的所有這些標準。我每天都使用 Emacs 來工作,我也很高興我很少需要註意到它。Emacs 確實有一個學習曲線,但不會比學腳踏車的學習曲線來的更陡,而且一旦你掌握了它,你會得到相應的回報,而且不必再去想它了。它賦予你一種其他工具所沒有的自由感。這是一個優雅的工具,來自一個更加文明的計算時代。我很高興我們步入了另一個文明的計算時代,我相信 Emacs 也將越來越受歡迎。

棄用 Org 樣式處理日程和待辦事項

在原來的文章中,我花了一些時間介紹如何使用 Org 樣式來規劃日程。不過現在我放棄了使用 Org 樣式來處理待辦事項一類的事物,因為我每天都有很多會議要開,很多電話要打,我也不能讓其他人來適應我選的工具,而且也沒有時間將事務轉換或是自動移動到 Org 上。我們主要是 Mac 一族,使用谷歌日曆等工具,而且原生的 Mac OS/iOS 工具可以很好的進行團隊協作。我還有支老鋼筆用來在會議中做筆記,因為我發現在會議中使用膝上型電腦或者說鍵盤記錄很不禮貌,而且這也限制了我的聆聽和思考。因此,我基本上放棄了用 Org 樣式幫我規劃日程或安排生活。當然,Org 樣式對其他的方面也很有用,它是我編寫檔案的首選,包括本文。換句話說,我使用它的方式與其作者的想法背道而馳,但它的確做得很好。我也希望有一天也有人如此評價並使用我們的 Fugue。

Emacs 已經在 Fugue 公司中擴散

我在上篇部落格就有說,你可能會喜歡 Emacs,也可能不會。因此,當 Fugue 的檔案組將 Emacs 作為標準工具時,我是有點擔心的,因為我覺得他們可能是受了我的影響才做出這種選擇。不過在兩年後,我確信他們做出了正確的選擇。檔案組的組長是一個很聰明的程式員,但是另外兩個編寫檔案的人卻沒有怎麼接觸過技術。我想,如果這是一個經理強迫員工使用錯誤工具的案例,我就會收到投訴要去解決它,因為 Fugue 有反威權文化,大家不怕挑戰任何事和任何人。之前的組長在去年辭職了,但檔案組[5]現在有了一個靈活的整合的 CI/CD 工具鏈,並且檔案組的人已經成為了 Emacs 的忠實使用者。Emacs 有一條學習曲線,但即使在最陡的時候,也不至於多麼困難,並且翻過頂峰後,對生產力和總體幸福感都得到了提升。這也提醒我們,學文科的人在技術方面和程式員一樣聰明,一樣能幹,也許不那麼容易受到技術崇拜與習俗產生的影響。

我的手腕感激我的決定

上世紀 80 年代中期以來,我每天花 12 個小時左右在電腦前工作,這給我的手腕(以及後背)造成了很大的損傷(因此我強烈安利 Tag Capisco 的椅子)。Emacs 和人機工程學鍵盤的結合讓手腕的 RSI[6]重覆性壓迫損傷Repetitive Strain Injury)問題消失了,我已經一年多沒有想過這種問題了。在那之前,我的手腕每天都會疼,尤其是右手。如果你也有這種問題,你就知道這疼痛很讓人分心和憂慮。有幾個人問過關於選購鍵盤和滑鼠的問題,如果你也對此有興趣,那麼在過去兩年裡,我主要使用的是 Truly Ergonomic 鍵盤,不過我現在用的是這款鍵盤[7]。我已經換成現在的鍵盤有幾個星期,而且我愛死它了。大寫鍵的形狀很神奇,因為你不用看就能知道它在哪裡。而人體工學的拇指鍵也設計的十分合理,尤其是對於 Emacs 使用者而言,Control 和 Meta 是你的堅實伴侶,不要再需要用小指做高度重覆的任務了!

我使用滑鼠的次數比使用 Office 和 IDE 時要少得多,這對我的工作效率有很大幫助,但我還是需要一個滑鼠。我一直在使用外觀相當過時,但功能和人體工程學非常優秀的 Clearly Superior 軌跡球,恰如其名。

撇開具體的工具不談,事實證明,一個很棒的鍵盤,再加上避免使用滑鼠,在減少身體的磨損方面很有效。Emacs 是達成這方面的核心,因為我不需要在選單上滑動滑鼠來完成任務,而且導航鍵就在我的手指下麵。我現在十分肯定,我的手離開標準打字位置會給我的肌腱造成很大的壓力。不過這也因人而異,我不是醫生不好下定論。

我並沒有做太多配置……

有人說我會在介面配置上耗費很多的時間。我想驗證下他們說的對不對,所以我特別留意了下。我不僅在很多程度上不用配置,關註這個問題還讓我意識到,我使用的其他工具是多麼的耗費我的精力和時間。Emacs 是我用過的維護成本最低的軟體。Mac OS 和 Windows 一直要求我更新它,但在我看來,這遠沒有 Adobe 套件和 Office 的更新給我帶來的困擾那麼大。我只是偶爾更新 Emacs,但對我來說它也沒什麼變化,所以從我的個人觀點而言,更新基本上是一個接近於零成本的操作,我高興什麼時候更新就什麼時候更新。

有一點讓你們失望了,因為許多人想知道我為跟上重新打造的 Emacs 社群的更新做了些什麼,但是在過去的兩年中,我只在配置中添加了少部分內容。我認為這也是一種成功,因為 Emacs 只是一個工具,而不是我的愛好。但即便如此,如果你想和我分享關於 Emacs 的新鮮事物,我很樂意聆聽。

期望實現雲端控制

在我們 Fugue 公司有很多 Emacs 的粉絲,所以我們有一段時間在用 Ludwing 樣式[8]。Ludwig 樣式是我們用於自動化雲基礎設施和服務的宣告式、功能性的 DSL。最近,Alex Schoof 利用在飛機上和晚上的時間來構建 fugue 樣式,它在 Fugue CLI 上充當 Emacs 控制檯。要是你不熟悉 Fugue,這是我們開發的一個雲自動化和治理工具,它利用函式式程式設計為使用者提供與雲的 API 互動的良好體驗。但它做的不止這些。fugue 樣式很酷的原因有很多,它有一個不斷報告雲基礎設施狀態的緩衝區,由於我經常修改這些基礎設施,這樣我就可以快速看到程式碼的效果。Fugue 將雲工作負載當成行程處理,fugue 樣式非常類似於為雲工作負載設計的 top 工具。它還允許我執行一些操作,比如建立新的裝置或刪除過期的東西,而且也不需要太多輸入。Fugue 樣式只是個雛形,但它非常方便,而我現在也經常使用它。

fugue-mode edited

樣式及監控

我添加了一些樣式和整合外掛,但並不是真正用於工作或 CEO 職能。我喜歡在週末時寫寫 Haskell 和 Scheme 娛樂,所以我添加了 haskell 樣式和 geiser。Emacs 很適合擁有 REPL 的語言,因為你可以在不同的視窗中執行不同的樣式,包括 REPL 和 shell。geiser 和 Scheme 很配,要是你還沒有用過 Scheme,那麼閱讀《計算機程式的構造和解釋》(SICP)也不失為一種樂趣,在這個有很多貨物崇拜程式設計(LCTT 譯註:是一種計算機程式設計中的反樣式,其特徵為不明就裡地、儀式性地使用程式碼或程式架構)例子的時代,閱讀此書或許可以啟發你。安裝 MIT Scheme 和 geiser,你就會感覺有點像 lore 的符號環境。

這就引出了我在 2015 年的文章中沒有提到的另一個話題:螢幕管理。我喜歡使用單獨一個縱向樣式的顯示器來寫作,我在家裡和我的主要辦公室都有這個配置。對於程式設計或混合使用,我喜歡我們提供給所有 Fugue 人的新型超寬顯示器。對於它來說,我更喜歡將螢幕分成三列,中間是主編輯緩衝區,左邊是水平分隔的 shell 和 fugue 樣式緩衝區,右邊是檔案緩衝區或另外一、兩個編輯緩衝區。這個很簡單,首先按 Ctl-x 3 兩次,然後使用 Ctl-x = 使視窗的寬度相等。這將提供三個相等的列,你也可以使用 Ctl-x 2 對分割之後的視窗再次進行水平分割。以下是我的截圖。

Emacs Screen Shot

這將是最後一篇 CEO/Emacs 文章

首先是因為我現在是 Fugue 的 CTO 而並非 CEO,其次是我有好多要寫的部落格主題,而我現在剛好有時間。我還打算寫些更深入的東西,比如說函式式程式設計、基礎設施即程式碼的型別安全,以及我們即將推出的一些 Fugue 的新功能、關於 Fugue 在雲上可以做什麼的博文等等。

贊(0)

分享創造快樂