GDE 社区亮点:Lars Knudsen

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

Monika Janota
Monika Janota

Lars 与另外两位演讲者一起在舞台上做演讲。

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

Lars:我获得了工程学理学硕士学位,但实际上,我对技术的兴趣开始得更早。上世纪 80 年代,我还是个孩子的时候,我父亲拥有一家计算机公司,从事平面设计工作。有时,尤其是在暑假期间,他会带我一起工作。有时,他的一些员工会监视我。有一位非常聪明的人曾对我说:“Lars,我需要完成一些工作,但这里有一本 C 手册,那边有一台计算机。下面介绍了如何启动 C 编译器。如果您有任何问题,欢迎随时与我联系。”我开始写一些简短的文字,这些文字会被转换为计算机能够理解的内容。这对我来说很神奇。我开始学习编程时才 11 岁,大约在七年级时,我已经能够为同学或学校创建小型应用。事情就是这样开始的。

多年来,我曾在多家公司工作过,包括 Nokia、Maersk 和 Openwave。与许多其他行业一样,刚开始时,由于您只知道一点点,因此会觉得自己什么都能做,但随着时间的推移,您会发现每家公司都有自己的做事方式。

在一家医疗公司工作了几年后,我于 1999 年开始创业。我曾是一名自由合同工,因此有机会快速了解多个组织。完成前五份合同后,我发现每家公司都认为自己找到了理想的设置,但这些设置完全不同。那时,我还接触了许多不同的技术、操作系统等。到了 20 出头,我的心态发生了变化。一开始,我只专注于一项技术,并希望全面了解它。随着时间的推移,我开始思考如何将各种技术相结合,改善我们的生活。我特别希望缩小我们所说的“A 队”和“B 队”之间的差距。我会尽量向那些无法拥有计算机或免费上大学的地区传授尽可能多的知识。

我继续为外部合作伙伴担任承包商,但我会尽可能选择对环境或社会有积极影响的项目。我目前正在为一家名为 Oticon 的助听器公司开发嵌入式软件。在软件方面,我从事过从最小的微控制器到云端的各种工作;我所做的很多工作都与 Web 有关。我会尽可能结合使用各种技术。

Monika:在加入 Google 开发者专家计划之前,您是否参与过开发者社区?

Lars:是的,我参加过聚会和会议。我第一次与该社区建立联系是在为诺基亚工作时。2010 年左右,我遇到了 Kenneth Rohde Christiansen,他比我更早成为 GDE。他启发了我了解 Web 技术如何为发展中国家/地区有抱负的技术专业人士提供帮助。使用 C++、C# 或 Java 开发和部署解决方案需要几年的经验,但只要拥有计算机、浏览器和记事本,每个人都可以开始开发基于 Web 的应用,并且学习速度非常快。您可以使用有限的资源构建功能齐全的应用,并从零开始逐步扩展。因此,我将 Web 称为非常普惠的技术栈。

不过,回到社区,一段时间后,我开始对 Web 标准化以及前沿 Web 技术可以解决哪些问题产生了兴趣。我在发布之前在浏览器中试用过新功能。当时,我供职于诺基亚,负责为基于 Linux 的旗舰设备 N9 开发应用。我们构建的浏览器基于 WebKit,我获得了为大型开源项目开发功能的宝贵经验。离开诺基亚后的几年里,我参与了一些网络会议和聚会,因此在 2017 年加入 GDE 社区是顺理成章的事。

我非常喜欢社区工作以及我们一起开展的所有活动,尤其是疫情前举办的 Chrome 开发者峰会,我有幸与一群出色的 Google 工程师和其他 GDE 一起负责展台工作。

Monika:对于刚刚开始职业生涯且不确定该选择哪条路的年轻开发者,您有什么建议?

Lars:根据我的经验,如果您有能力,不妨考虑为几家不同的公司兼职。这样,您将接触到开发过程中许多不同形式和阶段的代码。您将学习多种操作系统和语言,并了解如何通过多种方式解决问题。这对我很有帮助,我在 20 多岁时就积累了高级开发者的经验。这种方法有助于您更快实现职业目标。

除此之外,还可以尽情探索硬件和软件,尽情享受乐趣。考虑构建一些能够解决实际问题的项目,比如为您的朋友、家人或当地商家构建项目。不要害怕尝试从未做过的事情。

Monika:Web 技术的未来发展前景如何?

Lars:我认为,在过去几年里,Web 已经完全能够为面向消费者和企业的大型现场应用提供平台。在服务器端,Web 技术可提供无缝体验,对于想要构建后端组件的前端开发者来说,更是如此。现在,他们可以更轻松地开始使用了。我认识一些同时使用 Firebase 和 Heroku 来完成此任务的用户。这种趋势将会持续发展,Web 技术足以构建任何类型的复杂解决方案。我认为,Web 功能 - Project Fugu 🐡 可以真正释放这种潜力。

从另一个角度来看,我还认为,如果我们不仅提供英语版完整文档和深入文章,还提供其他语言(例如西班牙语和葡萄牙语)版本,那么我们将能够在拉丁美洲(当然还有其他地区)释放出巨大潜力。当地的开发者通常不太懂英语,无法完全理解所有相关文章。我们还应让他们尽早有机会学习,甚至在他们还在家乡时,就开始学习,而不是等到他们上大学后再学习。他们可能会在离开家乡之前,利用这些技能帮助当地社区和企业,也可能永远不会回来。

Thomas:从在任意计算机上进行 C 语言开发,到对硬件进行黑客攻击,您已经走过了漫长的道路。您是怎么做到的?

Lars:我开始拆解家里的许多硬件。当我无法将其重新组装时,我爸爸并不总是高兴。随着时间的推移,我学会了如何构建一些小型设备,但真正起飞是在很久以后,大约是我加入诺基亚、获得嵌入式开发经验的时候。我有机会为 30 系列手机构建小屏保程序和组件。我对此非常热衷,而且能够跳出固有框架进行思考。他们给我布置了一项任务,要求我为这些设备构建贪食蛇游戏。这是一个非常有趣的体验。构建嵌入式系统与构建大多数其他内容(包括 Web 内容)之间的主要区别在于,您需要占用较小的空间,因为可用的空间或内存较少。在构建 Snake 时,我可用的 RAM 不到帧缓冲区(大约 120 x 120 像素)的三分之一。我不得不想出一些方法,以算法方式重新连接屏幕上的组件,使其看起来静态,就像是功能块一样。我学到了很多东西,从大型系统转向小型嵌入式解决方案。

Thomas:典型前端开发者的技能与构建嵌入式硬件的开发者的技能大不相同。您会如何鼓励前端开发者研究硬件并开始以二进制方式思考?

Lars:我认为,第一步是了解一些在 Chrome 和 Edge 中运行且内置于所有主要系统中的 Fugu API。开始时,只需完成以上步骤即可。

另一点是,用于构建嵌入式解决方案的工具链的学习曲线较陡。如果您想构建自己的自定义硬件,请先使用 ArduinoESP32,它们价格便宜且易于购买。借助合适的开发环境,您可以快速启动并运行项目。

您还可以购买已经在使用 Bluetooth 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 应用来控制计算机。

这样一来,世界各地拥有一定 Web 使用经验的任何人都可以在几天内为想要控制计算机的残障人士打造高度自定义的解决方案。更棒的是,您可以随身携带它,并将其与其他设备搭配使用。体验完全相同。对我来说,设备的便携性和价格非常重要,因为人们不再局限于使用自己的设备,也不再局限于一个位置。

Thomas:您有机会在实际环境中测试该设备吗?

Lars:其实,我上次去墨西哥时就曾与当地的一位网络专业人士讨论过这个问题;他现在正在研究在当地使用该设备的可能性。那里的设备非常昂贵,但 USB 加密狗通常只需要 10 美元左右。他现在正在检查我们是否可以在那里构建本地设置来试用。但我还没有在丹麦进行过正式试用。

Thomas:许多专为残障人士设计的设备价格非常昂贵。您是否打算与某个特定公司合作,以极低的价格将其投入生产?

Lars:是的,当然!我已经与当地的硬件制造商讨论过这个问题。当然,该设备无法取代所有这些高度专业化的解决方案,但它可以成为构建更大项目的第一步,例如,使用 Web 技术提供的语音识别功能。这样,您就可以轻松地使用 Android 手机控制设备,而且它适用于任何类型的设备。

只需能够在 Web 上构建您想要的任何内容,并使用这些内容控制任何主机,就能开启无限可能。

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

Lars:是的,该解决方案是开源的。我没有为其指定特定许可,但我认为 Apache 2.0 是最佳选择。许多大公司都使用此许可,包括 Google。在开发 SimpleMouse 时,我从未考虑过通过该项目创收,这不是我的目标。但我认为,尝试以某种方式将其投入生产也是有意义的,不过这会带来成本。最终目标是使其可供使用。我希望能够以低成本大规模实现该技术。