Lars Knudsen 是 Google 開發人員專家,我們與他討論了如何利用 10 美元的裝置,讓身心障礙人士更容易使用電腦。

Monika:你是如何成為開發人員的?您目前專注於哪個專業領域?
Lars:我擁有工程學碩士學位,但其實我對科技的興趣早在那之前就開始了。在 80 年代,我還是個孩子時,父親經營一家電腦公司,從事平面設計工作。有時,尤其是在暑假期間,他會帶我一起工作。有時,他的部分員工會密切留意我的動向。有位非常聰明的人曾對我說:「Lars,我需要完成一些工作,但這裡有一份 C 手冊,那邊也有一台電腦。以下說明如何啟動 C 編譯器。如有任何問題,歡迎隨時來問我。」我開始寫出簡短的文字,並將其翻譯成電腦能理解的內容。對我來說,這就像魔法一樣。我從 11 歲開始學習程式設計,大約在七年級時,我就能為同學或學校製作小型應用程式。這就是起源。
多年以來,我曾為許多公司服務,包括 Nokia、Maersk 和 Openwave。一開始,就像許多其他行業一樣,您會因為瞭解一點而覺得自己什麼都能做,但隨著時間過去,您會發現每家公司都有特定的做事方式。
在醫療公司工作了幾年後,我於 1999 年自行創業。我曾擔任自由接案人員,因此有機會快速瞭解多個機構。完成前五份合約後,我發現每家公司都認為自己找到了完美的設定,但每家公司的設定都完全不同。當時我接觸過許多不同的技術和作業系統。在二十出頭時,我的想法有所改變。一開始,我只專注於單一技術,並想深入瞭解這項技術。隨著時間過去,我開始思考如何透過結合多種技術來改善生活。我特別想縮小我們稱為 A 隊和 B 隊之間的差距。我會盡可能將知識傳授給那些無法擁有電腦或免費就讀大學的地區。
我仍會繼續為外部合作夥伴擔任承包商,但我會盡可能選擇對環境或社會有正面影響的專案。我目前為助聽器公司 Oticon 開發嵌入式軟體。在軟體方面,我曾經接觸過從最小型的微控制器到雲端的所有技術,而且我的工作內容大多與網路有關。我會在適當情況下嘗試結合多種技術。
Monika:加入 Google Developers 專家計畫前,你是否曾參與開發人員社群?
Lars:是的,我曾參加聚會和研討會。我最初是在為 Nokia 工作時,與社群建立了連結。2010 年左右,我認識了 Kenneth Rohde Christiansen,他比我早成為 GDE。他讓我瞭解,網頁技術如何協助發展中國家有志一搏的科技專業人士。使用 C++、C# 或 Java 開發及部署解決方案,需要有幾年的經驗,但只要有電腦、瀏覽器和記事本,任何人都能開始開發網路應用程式,並快速學習相關知識。您可以利用有限的資源建構功能完整的應用程式,並從無到有地逐步擴大規模。因此,我認為網路是一種非常民主化的技術堆疊。
不過,回到社群這個話題,一段時間後,我開始對網路標準化和新興網路技術能解決哪些問題感到興趣。我在發布前在瀏覽器中試驗了新功能。當時我在 Nokia 工作,為以 Linux 為基礎的旗艦機種 N9 進行開發。我們打造的瀏覽器是以 WebKit 為基礎,因此我有為大型開放原始碼專案開發功能的豐富經驗。離開 Nokia 後的幾年,我參與了網路研討會和聚會,因此在 2017 年加入 GDE 社群也是理所當然。
我非常享受社群工作,以及我們共同完成的所有事,尤其是在疫情爆發前舉辦的 Chrome 開發人員大會,當時我有幸與許多優秀的 Google 工程師和其他 GDE 一起協助攤位工作。
Monika:如果有年輕開發人員剛開始職涯,但不確定要走哪條路,您會給他們什麼建議?
Lars:我個人認為,如果有能力,不妨考慮為幾家不同的公司擔任自由接案人員。這樣一來,您就能在許多不同的形式和開發階段中接觸程式碼。您將瞭解各種作業系統和語言,並學習如何以多種方式解決問題。這對我來說幫助很大,我在二十多歲時就累積了資深開發人員的經驗。這麼做有助於您更快達成職涯目標。
除此之外,請盡情探索、體驗硬體和軟體。建議您著手解決實際問題,例如為朋友、家人或當地商家解決問題。不要害怕嘗試從未嘗試過的事物。
Monika:網路技術的未來發展方向為何?
Lars:我認為,在過去幾年,網站已完全具備提供大型應用程式平台的條件,無論是消費者還是企業,都能在這個平台上執行應用程式。在伺服器端,網頁技術可提供流暢的體驗,特別是對於想建構後端元件的前端開發人員。讓他們更輕鬆地開始使用。我知道有人同時使用 Firebase 和 Heroku 來完成工作。這種趨勢將持續成長,網頁技術將足以建構任何類型的複雜解決方案。我相信網頁功能 - Project Fugu 🐡 能發揮這項潛力。
從另一個角度來看,我認為如果我們不僅提供英文版完整說明文件和深入文章,也提供其他語言 (例如西班牙文和葡萄牙文) 版本,就能在拉丁美洲和其他地區發揮很大的潛力。當地開發人員通常不太熟悉英文,無法完全理解所有相關文章。我們也應盡早讓他們有機會學習,甚至在他們就讀大學前,甚至在他們還在故鄉時,就開始學習。他們可能會在離開家鄉前,運用這些技能協助當地社區和商家,甚至可能永遠不會回來。
Thomas:你從在隨機電腦上進行 C 開發,到現在可以駭入硬體,可說是走了很長一段路。你是如何做到的?
Lars:我開始拆解家中的許多硬體。我爸爸不喜歡我無法把玩具組裝回去。隨著時間推移,我學會如何建構一些小型裝置,但真正讓我大放異彩的,是在我加入 Nokia 後,那時我才開始累積嵌入式經驗。我曾有機會為 30 系列手機打造小型螢幕保護程式元件。我對這項工作充滿熱情,而且能跳脫框架思考。他們指派給我一個任務,要我為這些裝置建立貪食蛇遊戲。這真是一次非常有趣的體驗。建構嵌入式系統與其他大部分項目 (包括網頁) 的主要差異在於,您會留下較小的足跡,也就是說,您沒有太多空間或記憶體可用。在建構 Snake 時,我可用的 RAM 不到影格緩衝區的三分之一 (約 120 x 120 像素)。我必須想辦法透過演算法重新加入畫面上的元件,讓這些元件看起來像是靜態圖塊。我學到很多,從大型系統轉移到小型嵌入式解決方案。
Thomas:一般前端開發人員的技能組合,與建構嵌入式硬體的開發人員技能組合截然不同。您會如何鼓勵前端開發人員研究硬體,並開始以二進位思考?
Lars:我認為第一步是查看在 Chrome 和 Edge 中運作,且已內建於所有主要系統中的部分 Fugu API。這就是您一開始需要做的所有事。
另外,建構嵌入式解決方案的工具鍊學習曲線陡峭。如果您想自行建構自訂硬體,請先從 Arduino 或 ESP32 開始,這類硬體容易購買且價格便宜。只要使用適當的開發環境,您就能立即啟動專案。
您也可以購買已使用藍牙 GATT 服務的心率監測器或多感應器單元,這樣就不必自行建構硬體或韌體,而是可以使用現有的硬體或韌體,並開始嘗試使用 Web Bluetooth API 與之通訊。
有些裝置會使用序列通訊協定,針對這類裝置,您可以使用 Web Serial API (也稱為 Fugu)。最近我一直在研究如何使用 WebHID API,讓您可以與所有人都能存取的人機介面裝置互動。我發現家中的地下室有幾個舊裝置,這些裝置多年未受任何作業系統支援,但透過逆向工程,我只花了幾個小時就重新啟用這些裝置。
您可以根據要建構的項目採用不同的方法,但我建議網頁開發人員使用可靠的傳感器單元,例如 Nordic Semiconductor 的 Thingy 52,因為它有許多傳感器,您可以輕鬆將其連結至網頁應用程式。
Thomas:連上裝置是第一步,但要有效地與裝置對話則是另一回事。面對困難時,你是如何不放棄的?你為何持續努力工作?
Lars:對我來說,解決問題的社會層面最為重要。開始著手自己的嵌入式專案時,我有著一項願景和期望,希望能為開發中國家打造科學實驗室。我太太來自墨西哥,我曾在當地看到一些學校,其中位於大城市以外的學校環境相當簡陋,沒有我們這邊的學校擁有的資源和設備。
我熱衷於打造可協助他人的產品,這也是我持續努力的原因。我也很感謝社群提供的支援。我曾與一些 Google 人員聯絡,他們都非常樂於提供協助,並耐心解答所有問題。
Thomas:許多人家中都有某種硬體,但不知道該如何使用。你是如何發想出這些精彩的專案,尤其是「SimpleMouse」SimpleMouse這個工作名稱?
Lars:最近我確實復活了許多舊硬體,但這個專案 (名稱尚未確定,我們就叫它 SimpleMouse) 我採用了自己的經驗。我先前曾使用過一些無障礙解決方案,發現其中部分無法運作,你必須使用舊版 Windows XP 並安裝特定軟體才能執行。你無法更新這些設定,只能在家中使用,因為你無法移動設定。
因此,我開始思考如何將自己在嵌入式領域的專業技能與 Fugu 專案結合,並利用目前網路上的資源,打造價格實惠的硬體,並搭配兩邊都易於理解的軟體,讓使用者能在此基礎上進行開發。
在該專案中,我使用了內建反射式晶片 nRF52840 的小型 USB 轉接器。一端連結藍牙,另一端連結 USB。基本上,您可以將其程式設計為兩側的任何內容。接著,我想到用來控制電腦的裝置,也就是滑鼠和鍵盤。有些身心障礙者可能無法順利操作這些裝置,因此我想提供協助。
我首先要確保任何作業系統都會將 USB 轉接器視為滑鼠。您可以透過原生應用程式或網頁應用程式直接控制藍牙。接著,我建立了一個網頁應用程式,也就是一個簡單的範本,讓使用者可以使用網頁元件擴充所需功能。因此,只要透過 Android 手機上幾小時內製作的網頁應用程式,每個人都能控制電腦。
只要完成設定,全世界任何具備一定網頁操作經驗的使用者,都能在幾天內為有意控制電腦的殘障人士打造專屬解決方案。最棒的是,你可以隨身攜帶,並在其他裝置上使用。使用體驗完全相同。對我來說,裝置的攜帶性和實惠性非常重要,因為使用者不再侷限於使用自己的裝置,也不再受限於單一地點。
Thomas:你有實際測試過裝置嗎?
Lars:其實上次造訪墨西哥時,我曾與當地的網頁專家討論這個問題,他目前正在研究在當地使用這款裝置的可能性。在那裡,設備的價格非常昂貴,但 USB 轉接器通常只需花費約 10 美元。他現在正在檢查是否可以建立本機設定來試試。但我還沒有在丹麥進行正式測試。
Thomas:許多專為身心障礙者設計的輔助裝置價格不斐,您是否打算與特定公司合作,以比昂貴設備便宜許多的價格投入生產?
Lars:是的,當然!我已經與當地的硬體製造商討論過這個問題。當然,這款裝置不會取代所有高度專業的解決方案,但這可以說是打造更大規模解決方案的第一步,例如使用語音辨識功能,這項功能已可用於網路技術。這麼一來,你就能輕鬆透過 Android 手機控制裝置,而且不限裝置類型。
只要能夠在網路上建立任何東西,並用於控制任何主機電腦,就能開啟許多可能性。
Thomas:您會將 Zephyr 專案以開放原始碼形式發布嗎?您使用何種授權?是否有計劃透過專案營利?
Lars:是,這個解決方案是開放原始碼。我沒有為該檔案指定特定授權,但我認為 Apache 2.0 是個不錯的選擇。許多大型公司都使用這項授權,包括 Google。在開發 SimpleMouse 時,我並未考慮將這個專案營利,那不是我的目標。不過,我認為您還是可以嘗試以某種方式將其導入生產環境,但這會產生成本。最終目標是讓使用者可以使用這項功能。我很樂見這項服務以低成本大規模導入。