🙃

又是两年不写作。

我觉得,应当抛弃对于“好好写一篇文章”的不理智追求,一些片段,直接放上来即可。

毕竟 Web log , 随手写两句log,无伤大雅。

昨天微信上看到脏媒体36kr转发一篇文章《上午种田,下午写代码,35+程序员在跨国远程里找回生活 》,大致讲远程从事web3工作如何惬意。

我觉得如此表述不妥,不如“上午种田,下午从事跨国电信诈骗”。

近况小结

又好久没正经写文章了,想写的挺多,先列出来再慢慢展开。

疫情以来对人感觉很失望。最开始是对国人失望,后来发现世界人民都半斤八两,竟失望得麻木了。

最近没啥活,以前的款子也结不出来,想着要不找找工作算了。

这简历一投可没气死我。 我发现现在公司招人,有的电话技术面的哥们都不会问问题。聊来聊去聊了半天语言偏好点评几大框架,问我对事件循环有啥了解。我一讲我怎么C语言实现一个命令行的IM daemon,对面就一副听不明白你在说啥的样子;我问对面高见,就让我回去再了解一下,敢情这问题有正确答案,就是特么某个科普文章给科普的node.js架构图几个阶段循环一下,想让我给背一遍这东西?

有些人本职工作是做开发,面试别人就是赶鸭子上架,我在这分享几点老鸟经验,希望负责面试的同学能更有效地履职,背地里少挨点骂。

首先来讲,面试是为了了解对方的能力,对方的知识还在其次。最忌你会什么就问什么,什么偏问什么,问倒为止。面试不是为了让你难倒对方,找优越感的。

其次来讲,面试更要结合业务需求和岗位的定位,是要判断候选人能不能完成这份任务,或从业务上来讲,候选人能够从哪些方面,多大程度承担和发展业务。你面试是为公司服务,不是让你按个人好恶,拉帮结伙或者找老婆的。

最狗的面试官就是,拿自己解决的一个什么问题,问对面咋做,凡是对面和自己方案有出入的,就觉得是有问题,要么错要么low,一定要引导对面去给出自己的那个答案。这完全就是瞎找优越感,履职不能,应该扣工资。

刚才我表述得其实欠得体,说有最狗的面试官,其实没有,不好意思,只有更狗的面试官。

更狗的面试官就是,拿自己的一个个人观点作为正确答案,去问对面候选人,对面和自己观点不一致,就问为什么不像自己一样,然后问自己那样好在哪。这已经不是面试履职问题,这已经是为人问题了。

设想:消极自由的社交网络(Liberated Social Network)

社交网络自出现至今已近第二个十年。如今社交网络已经深深根植于现代人的日常工作生活,想要摆脱社交网络就和想要摆脱自来水一样痴人说梦。

在中国大陆,社交网络的代名词就是微信、微博;在墙外,代名词是Facebook、Twitter。同一个世界,同一个枷锁。

在2010年左右,社交网络流行初期,世界范围内都曾经出现过一次“百花齐放”,各类社交产品如雨后春笋,你方唱罢我登场。但这种多样性仅仅是昙花一现,在各自投资人的资金烧完之后,只留下了等待收割用户的世界级寡头。

异状的浮现: 有点不对劲了

曾几何时,人对自己的电子产品,还是可以有掌控感的。电脑?说砸咱就砸。手机?说摔咱就摔。但微信,你干得掉吗?到底是谁可以随时决定将对方干掉呢?

在中国,微信微博成为了舆论监管的桥头堡,普通民众所遭遇的言论审查、所认识的利维坦,很多时候其实并不直接来自政府,而是来自双微自己的审核团队,为了维护自己的商业利益而行动的审核团队。很少有人能够意识到,跳出寡头控制的微信微博,其实言论自由一直都在。

在世界的其他地方,Facebook、Twitter其实也在做类似的事情,根据各国政府的要求,分别进行着一定程度的言论管控。除此之外,用户的敏感数据屡屡遭到泄露,涉及隐私的行为记录被商业售卖的事件屡见报端。Trump政府甚至让社交网络成为了移民局的政审工具。同样国内也很少有人意识到这一点:墙外的Facebook、Twitter,从来不是什么应许之地。

问题的根源: 产品式微,服务为王

导致今天局面的根本原因,是席卷全球、全行业的服务化运动。一次性交付的产品转变为按订阅时长付费的服务。有些时候这是无害的,甚至还可以节省一些成本,但在铺天盖地的XaaS广告攻势背后,人们忽略了一个严重的问题: 服务方可以随时修改服务内容甚至终止运行,因为没人能够强迫另外的人服务自己。

你的电脑,是整机生产商的产品,往细里说,大多是几大芯片厂商的产品,但电脑是你的,谁也别想拿走你的电脑,这你比谁都清楚。电脑里运行的软件,像Office办公套件,这是微软公司的产品,它的所有细节,都是微软公司决定的。但即便如此,这套软件也是你的,他不会在你的命令以外行动,这你也很清楚。各类文档、报表,既不会莫名消失,也不会自动出现在别人的电脑上,所以你可以将自己所有的秘密放心地交给它。

但网站不是产品,你的账户不是产品,所有SaaS类自称产品的东西都不是产品,它们是服务: 一种暂时提供你想要的功能,但可以随时变更、关闭,强行扣押你的数据挪作他用,并顺便讹你一笔的商业资本造物。

前辈的努力: 自由软件运动

自上古时代以来,自由软件运动就一直如火如荼。感谢以RMS为代表的软件行业早期的诸位大佬,和相关基金会如FSF、EFF、LF,他们每一位都是用户权益的守护神。多亏了这些前辈的激进态度和忘我工作,他们作为软件行业的最初缔造者,将私有商业软件的包围圈撕开了一条口子,守住了操作系统和互联网形态的底线,最终迫使商业公司在有关操作系统、基础软件和互联网基本形态的事务上对于公共所有、用户掌控的态度由对抗(EEE: Embrace Extend Extinguish)转变为合作(♥)。

但英雄迟暮,如今那些战士多已卸甲归田,战场也早已不是他们熟悉的基础软件,就连对面的比尔盖茨也早已一头白发。最令人感伤的是,在当今云计算和XaaS的缔造者中,却再也没有产生这样的英雄。

从来没有什么云计算: 就只有别人家的计算机
(THERE IS NO CLOUD: It’s just someone else’s computer)

计算机的性能相较几十年前,早已翻了岂止千倍。我们每个人所个人拥有的计算资源、存储资源,都是早期互联网时代所无法想象的。然而,如今的我们却越来越依赖其他人的计算机、大企业的计算机。

硬件性能的提升无法解释这个现象,软件复杂度的增加也无法解释这个现象。是计算机的社会定位变了。计算机不再主要被人类用来征服自然,而是被人类用来征服其他人类。资本要通过计算机,从这个社会榨出每一滴可能的利润。

去服务化: 不是你知道的那个去中心化

近几年,所谓加密货币、区块链概念甚嚣尘上。作为一种挑战各国央行权威的金融理财工具或者说洗钱工具,以比特币为代表的加密货币做得很好。与金融行业的高度结合,第一次使“去中心化”这个词被拓扑学和IT行业以外的大众所熟知。因其反叛固有央行权威的姿态,许多人也自动将对抗数字威权主义的期望赋予了区块链和它所承诺的“去中心化”。

但正如上文所说,目前社交网络和整个互联网产业面临的问题,其实不是过度中心化,而是过度服务化。就如Microsoft Office几乎每个人都用,Adobe全家桶几乎每个设计人员也都用,更不用说Microsoft Windows。但它们因为产品属性更强,服务属性更弱,所操作的数据更是自始至终由用户掌握,所以没有如社交网络这么严重的控制和隐私相关问题。

真正的问题: 数据存在哪

在如社交网络的高度中心化服务系统中,数据扮演了非常重要的角色,正是我们在各大网站、各大服务中长期以来提供、产生的数据,以及人与人之间的社会关系数据,使得我们对这些服务商产生依赖,欲罢不能。

历史上,存储器的价格曾经很高,数据的持久存储也很有问题,这使得作为专业服务提供商的企业在历史上曾经拥有过托管我们数据的合理性。

然而这一点合理性在如今已经消磨殆尽了:我们每个人几乎都拥有智能手机,而且每隔一段时间,还会更新换代。闪存卡、U盘,只需很少的成本,就可以存储大量的数据。如果以家庭为单位,即便仅仅依靠手机,也完全可以实现数据的多副本备份。

服务商掌握我们的数据太多、控制得太牢,并自始至终都是一副“这是我们的数据,不是你的,爱用用,不用滚”的嘴脸。甚至连我们的数据如何产生,以何种形式存储,存储在哪里,都完全是由服务厂商定义的。这里才是问题的重中之重。

只有当用户能够真正自行承载、管理自己的数据,并能有效而严格地控制对外数据披露的形式、规模和方法时,我们所面临的账户控制、数据隐私问题才能真正得到解决。

服务的原本意义: 当你不在线的时候怎么办

回顾互联网的起源和发展,不得不提在互联网早期即广泛应用,一直持续至今,能够称为互联网基石的服务: Email电子邮件。也许很多老网民还记得,第一次上网,需要做的第一件事情,就是注册自己的电子邮箱地址。从这个古老而基础的服务身上,我们可以对互联网开拓者们的思路和意图窥视一二。

在Email系统中,某个用户如果想要和另外的用户通信,必须要通过一个第三方服务商完成。这个服务商,就是你的电子邮件提供商,@后面的地址,就是它的名字。为了投递你的电子邮件,这个邮件服务提供商必须行动起来,联系到你所发信的对方用户的邮件提供商——而不是这个用户,并向对方服务商完成邮件的交接。而只有当对方用户主动检查自己的邮箱时,他才可以从自己的邮件服务商手中接收你最初所发送的这封电子邮件。

为什么不是两个用户直接建立连接,直接传递邮件呢?原因很简单:

  1. 用户不总是在线
  2. 但邮件服务商可以一直在线
  3. 用户没有唯一、稳定可连接的网络地址
  4. 但邮件服务商可以有唯一、稳定可连接的网络地址

为了破解用户之间在线状态、可连接性的困局,先行者们引入了可以一直在线,勇于承担的邮件服务器——其实并不必要是商业的,为用户解决这些问题,从而使得电子邮件服务更适合于当时的互联网环境。

作为一种后发优势,Email在中国的地位其实并不高,而是由QQ这种即时通讯工具替代,即便有邮箱,也是QQ邮箱,只能算是QQ号的一个副产品;在手机普及后,更是因为中国一系列政策的出台,令手机号成为了很多服务账号的ID。但在这之前,以及更广阔的世界其他地区,Email一直以来都是服务账号ID的首选。即时通信软件将信息收发双方的流程简化,并统一了服务提供商为自己,也遵循了以上四点规律,一定程度上填补了Email的对应需求,得到了大发展,也为发展成为今天的巨头微信埋下了种子。

但显然,之前所描述的四点,随着移动互联网和IPv6的普及,情况在如今早已悄然发生了变化。IPv6可以做到地球上每一粒沙子具备一个IP地址,更可以使用DDNS抹平地址变动。而你,还记得上次离线是什么时候吗?

另一个传统重量级服务,现代互联网的直系祖先,www网页服务,其实也遵循类似的逻辑。它实际上是一个公告板,可以让用户托管自己想要展示的数据,即便用户不在线上,不在终端旁,这台计算机也可以对外展示之前用户所托管的信息。

重构社交网络: 基本形态

这里设想的“Liberated Social Network”,是一种软件产品而不是一种服务。

整套体系建立在如下假设基础上:

  1. 每位用户,或每个家庭,拥有一台或多台计算机(包括智能手机、电脑、路由器和其他通用智能设备)
  2. 用户拥有的计算机之间,可以实现内部互联互通
  3. 用户所拥有的计算机,任一时间至少有一台,可以具备独立的IP地址(IPv6),并且在线工作
  4. 利用非对称加密机制,可以唯一验证用户或第三方服务商的身份
  5. DNS系统和DDNS服务商,忠实而稳定地为所有用户设备提供DDNS服务和域名解析服务

这种软件运行于日常使用的智能手机、被淘汰的旧智能手机、从不关机的Wi-Fi路由器,以及在理想状态下,家中24小时待机的低功耗NAS系统之上。

这种软件利用可以在线运行的硬盘、离线备份的固态、磁、光介质存储器,通过家庭环境中一直对外连接,具备独立IPv6地址的路由器,或直接通过手机的移动网络,和其他同样运行这种软件的用户设备通讯,传输用户通过手机或电脑发布,而保存在自己家中或手机中的文字动态、视音频文件等信息。

用户的好友列表,是一个真正意义上的通讯录,其中记载着每一位用户的个人域名,通过域名,程序可以直接连接到对方家中设备或智能手机上,并利用公私钥技术相互验证,继而根据自身身份获取、投递完全在双方用户控制范围之内的数据。

至于跨用户的搜索索引,则留给真正意义上的搜索引擎,而用户,则可以完全控制到底向哪家搜索引擎披露信息,披露何种信息,何时刷新信息,和何时删除信息。

相互寻找和连接: DNS并不是敌人

DNS是互联网古老而基础的服务,它将网络层面的地址,无论是IPv4还是IPv6,转化成一种可以由人类理解、记忆和传播的地址,这种地址和网络地址一样,也是全球唯一的,并因此需要国际组织的管理,即我们现在所知的域名。

DNS系统的职能简单而纯粹,根域名解析服务器由国际组织所维护,并且有着极端的可靠性和可用性。任何系统只要不以技术层面的ID(无论是网络地址、资源哈希,或某种DHT)作为查找依据,而想要实现一种人类能够理解的资源命名、查找方式,都无法避免使用,或者实现一个类似于DNS的系统,并且不会做得比现在的DNS更好、更中立。

在本文所述的设想中,不同用户之间的连接主要通过广泛使用的DDNS系统促成。因为无论是智能手机还是家用宽带,即便普及了IPv6地址,也难免出现地址变动的情况。在整个体系中,这是唯一依赖的外部服务。这是在现有网络结构下,最难以避开的一环。

真正的难点: 数据的存储、索引、备份和引用

如上文所述,实现自由社交网络的基本要点就在于需要在用户方面实现对于全部自己所产生数据的存储、索引、备份和对外提供引用。

这一点和现在已经出现的一些主打P2P的存储系统,如IPFS,或者ZeroNet不同,并不是要把自己的数据交由其他人存储保管,由全网分摊存储成本和提供备份;而是和私人NAS存储系统,如ownCloud、NextCloud更相似,在个人或家庭层面,形成独立而完整的数据管理能力,做到自己能够对自己的数据负责。

在现有的基于家庭服务器的NAS系统之上,我们需要更进一步,以手机、U盘、移动硬盘之类的设备实现现有功能,在这些设备之间分配存储、备份,维护一个相对高效的索引系统,并管理好数据的在线存取途径。这将是主要面临的技术挑战之一。

ActivityPub: 个人动态的收发,现有方案或已足够

ActivityPub是W3C于2018年1月正式确立的专门用于社交动态发布的数据交换协议,其中既定义了服务器和服务器之间的数据交换方式,也定义了服务器和客户端之间的服务交换方式。其总体的运行方式和前文所述的Email运行方式有很多相通之处。

基于ActivityPub,社区中已经不乏数个人气颇高的实际项目,如Mastodon、GNU Social,甚至NextCloud也实现了相关功能。在这一方面,很多现有的项目似乎已经足够完善,在具体实现时,套用实现ActivityPub就可以实现和这些项目的互联互通,这无疑是一个令人振奋的好消息。

从另一个侧面来讲,基于ActivityPub实现的社交网络项目,实际已经很接近我们想要达成的“Liberated Social Network”目标,只是在数据的独立性方面还有较大差距。另外,如果不是以家庭或个人为服务器部属单位,现有项目就还是有一定的第三方服务属性,虽然在集中程度和尺度上不可与目前的几巨头同日而语,但在性质上实际还是一样的,都是第三方实际持有和管理用户数据,这同样也是对用户数据所有权、控制权和隐私的侵犯。

务实的第一步: NextCloud或Mastodon

虽然本文对Liberated Social Network进行了大胆的畅想,但想法和现实之间,总是有着许多难以逾越的障碍。

现存的开源项目中,NextCloud是和设想最为接近的一个,它不仅解决了复杂的数据管理控制,还实现了社交动态发布和交换,只是部署和维护门槛较高,难以普及。

Mastodon只涉及社交动态的发布和交换,重点不在文件管理。部署维护门槛也稍低,虽说如此,也难以做到人手一份。但建成一个独立的社交网络并持续运行,是它的强项。

虽说现有项目或多或少都有些差强人意,但作为一个起点,我想应该已经足够。愿我们能够相互启发,早日实现心中之所畅想。

公共事务信息平台

2020年1月的2019-nCov病毒疫情和相关事件使我意识到,虽然中国政府这一段时间以来在信息公开方面做了不少工作,但中央和各级地方政府,以及准政府机构,都是在各自的网站上各自发布信息,而没有一个统一的渠道可以对纷繁复杂的信息进行分类、搜索等必须操作。

这使我萌生了创建一个专门搜集公共事务相关信息,尤其是各级政府和机关单位的公开信息的数据平台。 利用平台将这些零散的信息碎片组合、关联、索引,使得公共事务信息可以被一般公民浏览,学者研究

Welcome To My Blog

九年前的2010年12月,刚上大学一年级的我在百度空间发出了最后一篇博客,表示博客不再更新,隐隐有种时代落幕的沧桑感。

今日回首,那些写作的日子竟已如此遥远,博客时代确乎是在那个年代被宣告了终结,时代的铁幕缓缓降下,被斩断的岂止写博客的生活方式?

2015年4月,百度空间官方宣布关闭,所有的文章和图片都被雪藏在百度云盘中,其实在博客平台正式瓦解之前,博主群体在更早时就已作鸟兽散了。如今甚至连博主这个词汇的中文含义都已改变,更多指的是拍视频上传到视频平台的VLog博主,而不是写文章发表的Blog博主。

不写博客的这些年,我念完了大学,又混迹职场五年,无论是初创团队,大中型私企,还是巨无霸国企,都有了亲身体验。在这个过程中,我自中学以来引以为傲的兴趣爱好和职业:IT工程师一途,竟在我自身追逐”更高技术”的过程中逐渐磨灭,在形成了完整的知识框架之后,似乎一切都沦为了无聊的套路。我踏入了兴趣灭失的虚空之境。

曾经追寻的人生目标,化为手中的朴实工具。当前途成为背景,这看起来又像是一个时代的落幕。

现在如果说还有什么兴趣的话,那应该就是自然语言处理(NLP)一途, 但这最近几个月了解了更多相关知识之后,我发现我实际感兴趣的其实是自然语言理解(NLU)。我希望让计算机能够从文字中理解人的意图,从而能自行分析更多,提供更好的建议和线索,从而使人类文明提升到一个新的层次。

文字和语言,还是有区别的,人可以在一个字也不认识的情况下掌握语言。但对计算机来讲,文本无疑是最容易处理和分析的。

所以,我决定重新开始写作。形式还是从最熟悉的博客开始。

在我上一个博客时代,坊间流传着一句话: “互联网不会忘记”,指的是信息一经发布到网上,就会立刻被广泛传播,从而被搜索引擎、资料库之类的存在入库保存,永不消失。

这几年来,我越发清楚地认清了这样一个现实: 互联网也会忘记。无论是搜索引擎还是档案资料馆,都不是超自然的存在。如果没有主动的索取,信息不会自然传播。而想让信息持久地保存,甚至成为历史的一部分,更是需要比想象中多得多的努力。如果没有人在意的话,互联网和历史一样,也是任人打扮的小姑娘。

我将”互联网也会忘记”作为这次博客的站名,为我自己、未来可能受益的读者、和来分析索引全文的计算机,记录一些终将被忘记的琐事。