GDE 社区亮点:Lars Knudsen

Lars Knudsen 是一位 Google 开发者专家,我们与他探讨了价值 10 美元的设备如何让残障人士更方便地使用计算机。

莫妮卡·贾诺塔
Monika Janota

Lars 与另外两位演讲者在舞台上演示。

Monika:是什么让你萌生了成为开发者的想法?您目前的专业领域是什么?

Lars:我获得了工程专业理学硕士学位,但实际上我对技术的兴趣是从早开始的。80 年代我还是个孩子时,我父亲经营一家计算机公司,从事平面设计业务。有时,尤其是在暑假期间,他会带我一起工作。有时,他的部分员工会密切关注我。有个非常聪明的人曾经对我说:“Lars,我需要完成一些工作,但是这里有一本 C 手册,上面还有一台电脑。下面演示了如何启动 C 编译器。如果您有任何问题,欢迎过来问我。”我开始写短文,并翻译成计算机可以理解的内容。我觉得这感觉就像魔法一样。我刚入学时 11 岁,大约七年级,我可以创建一些小应用供同学或在学校使用。一切就是这么开始的。

这些年,我曾就职于诺基亚、Maersk 和 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:网络技术的前景是怎样的?

拉尔斯:我认为,几年来,网络一直能够为消费者和企业提供大型现场应用的平台。在服务器端,网络技术提供了无缝的体验,对于希望构建后端组件的前端开发者来说更是如此。让他们立即开始行动起来更轻松。我知道同时使用 Firebase 和 Heroku 完成了工作。而且这一趋势还会进一步发展,网络技术将足以构建任何类型的复杂解决方案。我相信,Web Capabilities - Project Fugu 🐡?可以真正释放这种潜力。

从略有不同的角度来看,我还认为,如果同时提供英语和其他语言(例如西班牙语和葡萄牙语)的完整文档和深入文章,肯定会在拉丁美洲及其他地区释放巨大的潜力。当地的开发者通常不太了解英语,因而无法充分理解所有相关文章。我们还应该为他们提供尽早学习的机会,即使在他们上大学前,我们还应该留在家乡。他们可能会利用这些技能在离家之前为当地社区和商家提供帮助,可能永远也不再回来。

Thomas:从随机在计算机上进行 C 开发,到开始入侵硬件,你取得了长足的进步。你是怎么做的?

Lars:我开始拆解家里的很多硬件。当我无法把它重新聚到一起时,我父亲有时并不高兴。随着时间的推移,我学会了如何构建一些小型设备,但后来,这款应用在不久之后才取得真正的成功,在我加入诺基亚时,我便有了自己的嵌入式经验。我有幸为 30 系列手机打造了小型屏保组件。我对此充满热情,能够跳出思维定式,跳出思维定式。他们给我分配了一项任务:针对这些设备开发一款贪吃蛇游戏。这是一次非常有趣的体验。构建嵌入式系统与大多数其他内容(包括 Web)之间的主要区别在于,您的占用空间较小,也就是说没有太多空间或内存可供使用。在构建 Snake 时,我的可用 RAM 不到帧缓冲区的三分之一(约 120 x 120 像素)。我不得不想出一些方法来通过算法重新联接屏幕上的组件,使其看起来静止不动,就像它们是图块一样。我学到了很多东西,那就是从大型系统迁移到小型嵌入式解决方案。

Thomas:典型前端开发者的技能组合与构建嵌入式硬件的人的技能组合截然不同。您会如何鼓励前端开发者研究硬件并开始考虑二进制?

Lars:我认为首先要介绍的一些 Fugu API 在 Chrome 和 Edge 中运行,它们已内置于当今所有主要系统中。刚创建时,您只要满足这些条件即可。

另一个方面,用于构建嵌入式解决方案的工具链需要一定的学习时间。如果您想构建自己的自定义硬件,请从 ArduinoESP32 开始,这些硬件可以轻松购买且价格相当便宜。在合适的开发环境中,您可以快速启动并运行项目。

您也可以购买已在使用蓝牙 GATT 服务的心率监测器或多传感器装置,因此您无需自行构建硬件或固件,您可以使用已有的硬件或固件,开始尝试使用 Web Bluetooth API 开始与 Web Bluetooth API 通信。

还有一些设备使用串行协议,对于这些设备,您可以使用 Web Serial API也是 Fugu)。最近,我一直在考虑如何使用 WebHID API,该 API 可让你与每个人都有权访问的所有人机界面设备进行通信。我发现地下室里有些旧设备多年来都不受任何操作系统的支持,但多亏了逆向工程,我才花了几个小时才重新启用它们。

根据您要构建的内容,有多种不同的方法,但对于 Web 开发者,我想说,购买一个坚固的传感器单元,也许是来自 Nordic 半导体的 Thingy 52;它有很多传感器,您可以毫不费力地连接到自己的 Web 应用。

Thomas:连接到设备是第一步,然后有效地与设备对话 - 这是另一回事。你为什么在遇到重重障碍后没有放弃?您坚持工作的动力是什么?

Lars:对我个人而言,解决问题的社交环节最为重要。当我开始从事自己的嵌入式项目时,我有一个愿景,也渴望在发展中地区建立一个科学实验室。我妻子来自墨西哥,我在那里看到了一些学校;一些位于大城市之外的学校还很老旧,我们用在世界上的材料和设备都无法使用。

我热衷于打造可能能够帮到他人的东西,这也是我的动力源泉。我也非常享受社区的支持。我联系了一些 Google 员工,他们都非常乐于助人,并耐心解答了我的所有问题。

Thomas:很多人在家里有某种硬件,但却不知道该如何用它们。你如何为自己的所有精彩项目(尤其是“SimpleMouse”这个有效项目)寻找灵感?SimpleMouse

Lars:最近,实际上我一直在复活许多旧硬件,但对于这个特定项目,我还没有设定其名称,不过就叫 SimpleMouse 吧,我利用了我的经验。我之前使用过一些无障碍解决方案,后来我发现有些解决方案已不再适用;您需要安装安装了特定软件的旧版 Windows XP 才能运行这些解决方案。您无法真正更新这些设置,您只能在家中使用,因为您无法移动设置。

因此,我想知道如何将自己在嵌入式世界中的技能与 Project Fugu 结合起来,以及现在通过网络可以构建廉价实惠的硬件,同时结合易于理解的软件两方,让人们能够以此为基础。

对于这个特定项目,我采用了带有反射性芯片 nRF52840 的小型 USB 加密狗。它在一侧与蓝牙通信,另一侧与 USB 通信。您基本上可以在两端编写任何程序。然后我想到控制计算机的设备 - 鼠标和键盘。有些残障人士可能很难操作这些设备,我想帮助他们。

我做的第一件事是确保所有操作系统都能将 USB 加密狗视为鼠标。您可以通过原生应用或 Web 应用直接控制蓝牙。之后,我构建了一款 Web 应用,利用以下简单的模板,人们可以使用 Web 组件按照自己的需要扩展应用的方式。多亏了我,每个人都可以在自己的 Android 手机上使用我刚刚制作的 Web 应用控制自己的计算机。

完成此设置后,世界上拥有一定网络经验的任何人都可以在短短几天内构建出一个高度定制的解决方案,为任何想控制自己计算机的残障人士提供。超酷的一点是,这款设备可随时随地为您服务,并可与其他设备搭配使用。您将获得完全相同的体验。对我来说,设备的便携性和实惠性非常重要,因为用户不再局限于自己的设备,也不再局限于一个地方。

Thomas:您是否有机会实际测试一下设备?

Lars:在我上次去墨西哥旅行时,我和那里的一位网络专业人士讨论了这个问题;他现在正在研究在当地使用这种设备的可能性。那边的设备很贵,但是 USB 加密狗通常需要十美元左右。他现在正在看看我们是否可以在那里构建本地设置来试用。但我尚未在丹麦进行正式的试验。

Thomas:许多用于协助残障人士的设备都非常昂贵。您是否计划与任何一家特定的公司合作,并以这种昂贵设备的一小部分价格将其投入生产?

Lars:当然可以!我已经跟当地一家硬件制造商讨论这件事了。当然,虽然设备不会取代所有这些高度专业的解决方案,但可以成为构建更强大解决方案的第一步,例如使用已经可用于网络技术的语音识别技术。您可以通过 Android 手机轻松控制设备,而且可与任何类型的设备配合使用。

仅能在网络上构建自己想要的任何项目,并使用该技术来控制任何主机,这就带来了很多的可能性。

Thomas:你们是否会以开源形式发布 Zephyr 项目?您使用的是哪种许可?是否有通过该项目创收的计划?

Lars:是的,解决方案是开源的。我并未设置专用许可,但我认为 Apache 2.0 比较适合我。很多大公司都在使用这种许可,包括 Google。在开发 SimpleMouse 时,我没有考虑过利用以下项目获利,这不是我的目标。但我同时认为,以某种方式尝试将其投入生产是合理之举,而这会带来成本。最终的目标是为用户提供信息。我非常希望能以较低的费用大规模实施这项技术。