Lars Knudsen 是一名 Google 开发者专家,我们采访了他,谈论了一台价值 10 美元的设备如何让残障人士更方便地使用电脑。
Monika::是什么让你萌生了成为开发者的想法?您目前的专业重点是什么?
Lars:我获得了工程理学硕士学位,但实际上,我对技术的兴趣要早得多。在我 80 年代小时候,我父亲经营着一家计算机设计公司。有时,尤其是在暑假期间,他会带我一起工作。有时,他的一些员工会留意我。有一个非常聪明的人,曾经对我说:“Lars,我需要完成一些工作,但这是一本 C 手册,而且那里有一台电脑。下面介绍了如何启动 C 编译器。如果您有任何问题,欢迎随时与我联系。”我开始写一些简短的文字,然后被翻译成计算机可以理解的内容。这对我来说就像魔法一样。初学时我 11 岁,在七年级左右,我能够开发一些小型应用供同学或在学校使用。它就是这样开始的。
多年来,我曾就职于包括诺基亚、马士克和 Openwave 在内的许多公司。与许多其他职业一样,在一开始,您只是有所了解,所以会觉得自己无所不能,但随着时间推移,您会发现每家公司都有某种行事方式。
在一家医疗公司工作了几年后,我于 1999 年开办了自己的公司。我曾是一名自由合同工,得益于此,我有机会快速了解多个组织。完成前五份合同后,我发现每家公司都认为他们找到了理想的设置,但这三种合同完全不同。那时,我还接触了许多不同的技术和操作系统等。在二十多岁出头,我的心态发生了变化。最初,我专注于一项技术,想全面了解该技术。随着时间的推移,我开始思考结合使用各种技术来改善我们的生活。我特别希望缩小我们所谓的 A 团队与 B 团队之间的差距。我尽力将尽可能多的知识传授给人们无法拥有计算机或免费在大学学习的地区。
我继续以承包商的身份为外部合作伙伴工作,但我会尽可能选择对环境或社会产生某种积极影响的项目。我目前在一家名为 Oticon 的助听器公司从事嵌入式软件方面的工作。在软件方面,我从事各种工作,从最小的微控制器到云端,不一而足;我的很多工作都是围绕网络进行的我会尽力将各种技术结合起来。
Monika:在加入 Google 开发者专家计划之前,您是否参与过开发者社区?
Lars:是的,我参加了聚会和会议。我首次在诺基亚工作时与社区进行了互动。2010 年左右,我认识了 Kenneth Rohde Christiansen,他先于我成为了 GDE。他激励我了解网络技术可以如何为发展中国家/地区有抱负的技术专业人员提供帮助。使用 C++、C# 或 Java 开发和部署解决方案需要多年的经验,但每个能够使用计算机、浏览器和记事本的人都可以开始开发基于网络的应用,并快速学习相关知识。您可以用有限的资源构建功能齐全的应用,然后白手起家。正因如此,我将网络称为一个高度民主化的技术栈。
但一段时间后,我还是回到社区,对网络标准化以及前沿网络技术可以解决的问题感兴趣。在发布前,我在浏览器中对新功能进行了实验。我当时就职于诺基亚,为基于 Linux 的旗舰设备 N9 进行开发。我们构建的浏览器是基于 WebKit 的,我在为大型开源项目开发功能时积累了一定的经验。在离开诺基亚之后的几年里,我参加了网络会议和聚会,因此在 2017 年加入 GDE 社区是明智之举。
我非常喜欢社区工作和我们一起做的一切,尤其是疫情前的 Chrome 开发者峰会,在那里,我与一群出色的 Google 工程师和其他 GDE 一起,帮助完成展台工作。
Monika::对于刚刚开始职业生涯,不确定选择哪条道路的年轻开发者,您会给他们提供什么建议?
Lars:根据我的经验,如果你负担得起,可以考虑先去几家不同的公司做自由职业。这样,您将接触到许多不同形式和开发阶段的代码。您将了解多种操作系统和语言,并学习如何以多种方式解决问题。这让我在二十多岁的时候积累了高级开发者经验。这种方法将帮助您更快实现您的专业目标。
除此之外,我们要好好享受、探索和玩转硬件和软件。考虑打造能够解决实际问题的应用,比如为朋友、家人或本地商家。勇于尝试以前从未做过的事情。
Monika::网络技术的未来前景如何?
Lars:我认为多年来,网络已经完全能够为大型现场应用(无论是消费者还是企业)提供一个平台。在服务器端,网络技术可提供无缝体验,对于想要构建后端组件的前端开发者来说尤其如此。现在,他们能更轻松地迈出第一步。我知道有人同时使用 Firebase 和 Heroku 完成工作。而且,这种趋势还会不断增长 - 网络技术足以构建任何类型的复杂解决方案。我相信 Web Capabilities - Project Fugu 🐡? 可以真正释放这种潜力。
从略微不同的角度来看,我也认为,如果我们不仅提供英语版本的完整文档和深入的文章,还以其他语言(例如西班牙语和葡萄牙语)提供完整文档和深入文章,那么,在拉丁美洲,当然还有其他地区可以释放巨大的潜力。当地开发者通常对英语并不精通,无法充分理解所有相关文章。我们还应该为他们提供尽早学习的机会,即使在他们上大学之前,也仍是在他们的家乡。他们可以运用这些技能在出门之前为当地社区和商家提供帮助,这样可能就再也没回过家了。
Thomas:在任意一台计算机上进行 C 开发,到入侵硬件,您经历了很长的路程。你是怎么做到的?
Lars:我开始拆解家里的很多硬件。当我重拾旧习惯时,我爸爸并不总是很开心。随着时间的推移,我学会了如何打造一些小型设备,但这确实是后来才真正流行起来的,那时我加入了诺基亚,为我提供嵌入式体验。我有幸为 30 系列手机打造了小型屏保,即组件。我非常热衷于制作这种广告,而且可以跳出思维定式。他们给我分配了一项任务,那就是为这些设备开发贪吃蛇游戏。这是一次非常有趣的体验。构建嵌入式系统和大多数其他内容(包括 Web)的主要区别在于,这会占用少量空间,没有太多的空间或内存可供使用。在构建 Snake 时,可用的 RAM 不到帧缓冲区的三分之一(约 120 x 120 像素)。我得想出一些方法来通过算法重新联接屏幕上的组件,让组件看起来像是图块一样静态。从较大的系统转向小型的嵌入式解决方案,我学到了很多。
Thomas:一般前端开发者的技能与构建嵌入式硬件的人员截然不同。您会如何鼓励前端开发者研究硬件并开始进行二元思考?
Lars:我想先了解一些 Fugu API,这些 API 可以在 Chrome 和 Edge 中使用,并且内置于当今所有主流系统中。这正是您在刚开始时所需的一切。
另一方面,用于构建嵌入式解决方案的工具链具有陡峭的学习曲线。如果您想构建自己的定制硬件,请从 Arduino 或 ESP32 开始,它们既易于购买,又非常便宜。有了合适的开发环境,您可以立即启动并运行项目。
您还可以购买已经在使用蓝牙 GATT 服务的心率监测器或多传感器装置,这样您就不必自行构建硬件或固件 - 可以使用现有的硬件或固件,开始尝试使用 Web Bluetooth API 开始与其通信。
还有一些设备使用串行协议。对于这些设备,您可以使用 Web Serial API(也包括 Fugu)。最近,我一直在研究如何使用 WebHID API。借助此 API,你可以与所有人都可以使用的所有人机接口设备进行通信。我在地下室里发现了一些多年来没有任何操作系统支持的旧操作系统,但由于逆向工程,我花了几个小时才重新启用它们。
方法不尽相同,具体取决于您要构建的内容,但对于 Web 开发者,我想使用固体传感器装置,可能是来自 Nordic Semiconductor 的 Thingy 52;它有许多传感器,您可以毫不费力地连接到自己的 Web 应用。
Thomas:第一步是连接到设备,但之后要有效地与设备对话,则是另一回事。你为什么在直面困难后没有放弃?是什么激发了你继续工作的动力?
Lars:对我个人来说,解决问题的最重要。当我开始做自己的嵌入式项目时,我有一个愿景,渴望为发展中地区搭建一个科学实验室。我妻子来自墨西哥,我看过那里的一些学校;有些位于大城市以外的地方简直破旧,无法获得我们这里拥有的材料和设备。
我热衷于打造有可能用于帮助他人的产品,这就是我不断前进的动力。社区成员对我也非常满意。我联系了一些 Google 员工,他们都非常有帮助,并耐心回答了我的所有问题。
Thomas:很多人家里都有某种硬件,但不知道该怎么做。您是如何为自己的所有精彩项目(尤其是以名叫 SimpleMouse 的项目)寻找灵感的?
Lars:最近,我实际上翻新了很多旧硬件,但对于这个特定项目,名称尚未设定,不过我们把它叫做 SimpleMouse,我利用了自己的经验。我之前使用过一些无障碍解决方案,发现其中一些解决方案已经不再适用;则你需要在旧版 Windows XP 上安装特定软件才能运行。您无法更新这些设置,只能在家中使用,因为无法迁移您的设置。
因此,我想知道如何将我在嵌入式世界的技能与 Fugu 项目结合起来,以及现在网络上可以创造出廉价、实惠的硬件以及双方都易于理解的软件,以便人们可以在这些方面进行构建。
在这个特定的项目中,我准备了一个带有反射芯片 nRF52840 的小型 USB 加密狗。它一端与蓝牙通信,另一端与 USB 通信。基本上可以将其编程为两边任意值。后来,我想到了那些可以控制计算机的设备:鼠标和键盘。有些残障人士可能会觉得很难操控这些设备,因此我想为他们提供帮助。
我做的第一件事是确保任何操作系统都能将 USB 加密狗看作鼠标。您可以从原生应用或 Web 应用直接控制蓝牙。之后,我构建了一个 Web 应用,这是一个简单的模板,用户可以利用 Web 组件扩展他们想要的方式。因此,每个人都可以通过我花了几小时在 Android 手机上开发的一款 Web 应用来控制自己的计算机。
设置完成后,世界上任何拥有一定网络经验的人都可以在短短几天内,为希望控制自己计算机的残障人士打造一个高度定制的解决方案。很棒的一点是,您可以随时随地使用它,还可以通过其他设备使用它。体验完全相同。对我而言,设备的便携性和实惠性非常重要,因为人们不再局限于使用自己的设备,也不再局限于一个地点。
Thomas:您有机会在现实生活中测试一下设备吗?
Lars:实际上,在上次去墨西哥时,我与生活在那里的网络专业人员讨论了这一点;他现在正在研究能否在本地使用这种设备。那里的设备很昂贵,但 USB 加密狗通常大约需要 10 美元。现在,他在考虑我们能否在本地搭建一些设施来试一试。但我还没有在丹麦进行官方试用。
Thomas:许多专为残障人士设计的设备非常昂贵。您是否打算与任何一家特定公司合作,以远低于昂贵设备的价格将该设备投入生产呢?
Lars:当然可以!我已经与本地硬件制造商讨论了这一点。当然,设备无法取代所有这些高度专业化的解决方案,但它可以是构建更大型解决方案的第一步,例如使用已用于网络技术的语音识别。可让您轻松使用 Android 手机控制设备;它可以与任何类型的设备搭配使用
只要能在网络上构建你想要的任何东西,然后用它控制任何主机,就可以带来无限可能。
Thomas:你们会把 Zephyr 项目作为开源项目发布吗?您使用的是哪种类型的许可?是否有通过该项目获利的计划?
Lars:是的,这个解决方案是开源的。我没有在它上面添加特定的许可,但我认为 Apache 2.0 是适合它的方案。包括 Google 在内的许多大型公司都在使用此许可。在开发 SimpleMouse 时,我没有想过通过该项目获利,这不是我的目标。但我认为,尝试以某种方式投入生产环境是合理的,但代价是代价。而最终目标是让人们能够观看和收听。我希望看到它以较低的成本大规模实施。