我曾问过一个从事技术工作的小伙子一个问题,问他做的最骄傲的产品是什么,小伙子很聪明或者说不够自信,没有回答。其实这个问题不好回答,它需要你对过去做一些总结、归纳还有反思,你需要清楚的表明你未来的方向,同时,这个问题也代表了你最认同的价值观。

这个问题没法 Google,各行各业不同的人有不同的答案,律师的回答可能是打赢一场影响行业的官司,医生的回答可能是在手术台上抢救回了多少生命,演员的回答可能是一部经典的电影或者荣获了多少奖项。。。当然,也有比较通用的回答像买了房、买了车(一台车不算什么那就买 50 台车)、生了娃等。不过,写这篇博客不是评价各种差异而是讲讲我最骄傲的事情。

It's about the network

我对时间的记忆比较模糊大约在 2012 到 2013 年吧,我工作之余开发一个 Android 应用,一个支持 UPnP(Universal Plug and Play) 的媒体播放器 App。核心由 VLC 播放组件、HTTP 服务器、UPnP 协议栈构成,使用 HTTP 服务器是为了实现 UPnP 的 DMS,而 VLC 则是为了支持 UPnP 的 DMR 还有 DMC 端主动播放。

当时,App 把 DMR、DMS、DMC 都实现了,而且 App 既可以是服务的提供者也可以是服务的使用者,一个手机拍的照片或视频马上就可以推送到另外一部手机上观看,只要两个手机连接到一个网络而且安装了我的 App 就可以。此外,我 App 也可以接入基于 UPnP 协议的数字家庭网络提供服务或作为控制点。

不同于 Miracast 屏幕分享我 App 走的是 DLNA 的方式,Miracast 传输的是屏幕的内容(可以支持点击交互)而操作系统一般不允许应用直接访问屏幕数据,操作系统必须实现一些东西以支持 Miracast 并且向应用层提供 API。DLNA 应用比较偏软性,需要在应用层实现不少东西,所以 DLNA 应用设计的成分比较多。

那个 App 我觉得设计得过于复杂,主要是同时支援 DMS、DMR、DMC 引起:App 同时充当主动角色和被动角色,这让 App 的交互逻辑变得复杂难懂也难用;DMS 分享手机内部的媒体文件非常容易触发隐私问题,作为开发者我关注的自然是这个特性有多酷(开玩笑,是不是该申请专利);DMR 把手机变成电视并且支持远程控制,然而手机被遥控这种体验并不好;手机的性能有限功耗敏感,把手机用作“服务器”是不合适的。

更重要的是 UPnP 备受争议的安全性问题,除非 Sony、Google、Microsoft 这样的科技公司牵头给 UPnP 做次大的更新来改变人们对它的态度,否则,我应该没这个能量让人们重新认识它、理解它、相信它。于是,放弃这个 App 成了未来最可以预测的事情。App 开发完成后就发布到了 Google Play,那时恰逢国内网络收紧很多时候没法登录 Google Play 后台来更新 App,我也就没去更新了。基于 UPnP 的 IoT 或许是个机会吧。

It's about the network

工作几年一般都会有个方向了,很多人的目标是努力成为企业的一部分,研究儒家文化来提升自己的“才能”,通过购房购车来添加一些“成绩”。坚持热爱是少有人做的事情,也是一件很难的事情,因为多数人会善意的影响与他们不一样的人让后者成为前者的一份子,不过,善意与否有时候只差个心情或者情商,在国内,做自己意味着利益将遭受损失。我对应用一直保持着好奇心,应用程序的魅力在于它是可见的,所有的想象都能直接被呈现,所有创造都能产生直接影响。

设计能力是区分工程师与开发者的一项重要能力,这里说的设计当然不是 UI 设计,而是开发上偏宏观的设计,可以理解为架构吧。应用不只是 API 调用,应用是帮助人类的,它要能解决问题能减少人类的负担,很多时候应用都涉及到广泛的技术评估、能力实现、抽象、组织,并不是调调 API 问题就解决了。

对于技术目标有准确的认知和全面的专业知识支撑,有良好的大局观和经验才能去设计一款软件。实现一个设想要知道怎么做、有什么风险、需要那些资源,这其中会有遇到很多判断、选择还有预测。不是所有程序员(包含主修儒家文化的大多数)都能长为开发者,还得看对技术有没好奇心。

那个 App 谈不上是引以为傲的事情,但是它让我自信因为我实现一个很酷的设想,我感受到从无到有的创造一个东西的成就感。在可预测的上班下班每月拿些零花钱的工作里,我很清楚未来的可能性在哪

It's about the network

2017 年创建了个人网站(xinlake.dev),在 Node.js 成了标准在 Web 前端都用框架开发的时代我还用 Bootstrap 手写 HTML、JS,静态站点没自己的数据库和后端,基本就是使用服务器提供的页面托管服务,基于静态站的定位,我觉得 Bootstrap 是很好的选择,甚至认为它就是静态页的标准。

其实 Web 前端框架、HTML、JS 并不是我的关注点,毕竟与 App 的交集不多而且随着 Flutter 等跨平台框架的出现,App 支持 Web 平台会变得很轻松。和 App 上架一样,网站上线也是一件让人兴奋的事情,至少第一次是这样,但是要说引以为傲的话我觉得也谈不上,毕竟个人网站只是解决“我要上首页”的问题,解决“我的名字”的问题。

2020 年左右做的 PrivCh(国际联网 App)是源自一种加密通讯的客户端,PrivCh App 之前的文章也聊过,从能力本地化到多平台拓展再到的跨平台重构,一路进化过来现已上架 Google Play 目前在迭代更新的状态。这个 App 的本质是数据加密在网络通讯上的应用,你懂的。

基于软件复用的目的,PrivCh App 的开发和中间件抽象是同时进行的,中间件也一同发布到各托管平台了。不过目前这些中间件可能会有面向我的特定应用的成分,也就是说抽象得不太好,有的模块应该都没必要了因为那些模块官方也在做,科技公司做的肯定要更优,后续我可能会下线几个中间件,别的我觉得迭代更新就好。吹个牛,我做的事情科技公司也在做说明我的判断是对的,只不过我没资源。

It's about the network

我一直倾向于把 AI 叫“机器智能”或者“MI”,因为 AI 这个名称已经被影视作品赋予了太多的人性,给机器学习技术起个有其他含义的名称甚至做着“类人” AI 的生意会很容易误导大众,以至于国内国外都有不明真相的群众对 AI 技术产生恐惧。

影视里的 AI 具备主动性会思考有欲望甚至有情感,但是就我们当代的计算机科技而言 AI 技术还是工具的级别,在未来五十年里都不可能发展到具备人类意识的水准,即便是在最有实力的科技公司的推进下都不可能,因为目前机器学习所能达到的高度有限,远远达不到让机器具备人性的水准。这不是时间就能解决的问题,而是不知道该怎么实现的问题,让机器具备人性可能需要大量先进技术而且每项技术都可能比机器学习要高很多个维度,别说五十年就是在可预见的未来都是个未知数,我觉得对于这个 AI 问题的判断也能体现一个人对技术有没好奇心。

使用神经网络是个很酷的做法,基于数据统计的判断大部分时候是值得参考的,神经网络能把软件的一些特性推到一个新的高度,如拍照应用里的智能图像增强,基于语言理解的人机交互,视频监控里的对象识别和追踪,生意应用里的大数据算计等等。无论 AI 有没有生意可做我觉得神经网络都值得关注,因为它现在代表了一种先进的技术方案。

讲了这么多要说骄傲的事情我到现在应该还没有,我只有对技术的热爱。