Follow feeds: blogs, news, RSS and more. An effortless way to read and digest content of your choice.
Get Feederweishu.me
Get the latest updates from Weishu's Notes directly as they happen.
Last updated 3 months ago
7 months ago
【导语】很多年前,折腾 KernelSU 让我饱受“为开挂提供温床”的批评。主流观念总是一刀切地认为:只要和“破坏规则”沾边,就是可耻的。但后来我发现,无论是在技术发展的莽荒时代,还是在我们习以为常的现实社会中,创新往往源于对边界的试探;而那些被大众不假思索地捍卫的“公平”和“规则”,很多时候,只不过是系统为了维持运转而精心构建的一套控制代码。几年前,我曾提到过,KernelSU 某种程度上算是我早年折腾科技留下的副产品。那之后,我收到过不少批评,其中很多都围绕一个判断:只要和“开挂”沾边,就是可耻的,就是不正当的。现在回想起来,我探索写科技的那几年,我的人生也开挂了。这并非说我靠技术去盈利、改变了人生,而是因为我从中领悟到了一些关于技术、规则和社会运行的东西。创新雷军在《小米创业思考》中说过,“创新,是创造性地破坏”。如果你想改变什么东西,往往要先打破点什么。做漏洞挖掘的人,如果发现某些情况会导致系统重启,往往会很兴奋,因为这意味着他们已经 break something 了;而普通人遇到手机重启,只会觉得这系统怎么这么不稳定。乔布斯自传里也提到过,他人生的第一桶金,来自一个叫“蓝盒子”的东西。它利用了电信系统的漏洞,实现免费拨打长途电话。放在今天,这种行为显然会面临严重的法律后果,但在当年,它处在一个完全不同的技术和监管环境中。乔布斯确实从中获得了最早的一笔资本,也由此更早接触到了“通过技术撬动系统”的可能性。以前有个软件叫“金山游侠”,可以篡改游戏数据,本质上也是对游戏规则的绕过。而开发它的公司后来变成了今天的金山,老板是雷军。技术创新的源动力之一,恰恰来自于对边界的试探和突破。如果没有那些喜欢“不按套路出牌”的极客,就不会有今天繁荣的科技发展。当然了,对边界的突破,不等于一切行为都天然正当;但是,不假思索地批判这种行为,同样值得怀疑。规则与公平还有一种常见说法是,这样做破坏了游戏平衡,对其他玩家不公平。在多人对抗环境里,作弊确实会损害其他玩家的体验,但问题是,游戏的匹配机制本身就是绝对公平的吗?算法知道,如果你一直赢,你会觉得无聊而下线;如果你一直输,你会愤怒而卸载。所以,系统会精准计算你的“挫败阈值”。当你快要绝望退坑时,它可能故意给你匹配一局极其弱的对手(“福利局”),让你大杀四方,重新获得巨大的多巴胺分泌;当你连胜自满时,又可能把你塞进更难打的局里,让你继续留在这个循环中。游戏厂商的规则,很多时候并不只是为了维护抽象意义上的公平,而是利用人性的弱点通过算法调动你的情绪和时间,让你持续投入、欲罢不能。为什么很多人谈到“公平”时,只盯着最容易谴责的个体行为,却很少去质疑那些同样在操纵玩家、但因为写进规则里就显得理所当然的机制。他们似乎默认规则本身就是公平的,仿佛只要遵守规则,结果就天然正义。现实并没有这么简单。这个世界何时真正公平过?现实世界里,又有多少人从来没有享受过某种“开挂”般的不对称优势?风险开科技其实有两种完全不同的用法,也有两种完全不同的结局:自己用和拿去卖;造成不同结局的原因,是外部约束条件完全不同。“高风险,高回报”,“风浪越大鱼越贵”。风险,本质上是一种杠杆。绝对的风险厌恶者,不加任何杠杆,往往也很难获得非常规的回报。做法风险回报自己用违反游戏规则,被封号不一样的游戏体验拿去卖可能触犯刑法,面临严重法律后果经济报酬如果仅仅是自己用,代价通常就是游戏账号被封禁。在权衡利弊之后,这种风险对有些人来说可能是可接受的;但如果是拿去卖,那就完全是另一回事了,风险和性质都变了。然而可笑的是,很多人在面临人生中的重大选择,比如买房、结婚、生娃这些问题时,压根不认真评估风险和收益,往往是随大流、凭惯性;但对于自己开科技这种几乎不会影响现实生活走向的事,却格外谨慎,甚至还对别人进行道德审判。当然,如果你是开挂卖钱,这种违法行为毫无疑问不值得提倡;就像如果乔布斯生在现代,他大概率也不会去开发“蓝盒子”一样。教育和观念我无从考究“开挂可耻”这种观念究竟从何而来,也许它确实来自人们心中某种朴素的正义感。但也存在另一种可能:很多观念,会在规则制定者、平台方、既得利益者,以及舆论和教育的共同作用下,被不断强化,最后变成一种无需思考的本能判断。我们大多数普通人接受的教育,某种程度上是为了让我们成为社会运转中的标准件。我们按部就班地走完生命流程,从而维持整个系统的稳定。一旦某些人的思想或行为偏离轨道,就会被贴上“异类”的标签,因为这些人可能会破坏当前系统的运行逻辑,也可能损害既有利益结构。对于开科技自用这种场景来说,我们维护的那个“利益”,其中究竟包括不包括我们自己,这件事未必总是那么清楚。就像《黑客帝国》一样,你所认为的公平和规则,很多时候只是 Matrix 为了维持运转而写下的一套代码。结语如果你对本文感到不适,我深感抱歉。我也并非完全认同本文里的所有观点。当我想起这些时,我同样会对这个世界、对规则、对公平,产生很多怀疑。我想表达的并不是“开挂有理”,更不是为一切作弊行为开脱。我真正想说的是:技术上的突破往往来自对边界的试探,而人们对规则的崇拜、对公平的理解、对风险的判断,很多时候并没有自己想象得那么清醒和牢靠。顺带一提,原神的挪德卡莱剧情简直是神一般的存在,而我也早已脱离“科学家”行列了。
3 months ago
最近这几个月,我一直在高强度折腾 Vibe Coding,我发现了一个特别反直觉的现象:当你面对越来越强大的 Agent 时,你给出的提示词越详细、规定的步骤越精确,它最后交付的结果反而越差。然后我突然意识到,这其实是软件工程里臭名昭著的 X-Y Problem,正在 AI 时代以一种全新的形态大规模重演。什么是 X-Y 问题?很多非技术童鞋可能对这个概念比较陌生,我举个例子:你周末坐在卧室打游戏,网络卡得走不动道。你花了一上午查资料,然后跑去数码论坛发帖求助:“请问怎么硬改路由器的天线,并刷入第三方固件来锁定特定的信道频段?”论坛里的大神们围着这个问题讨论了半天,给你丢了一堆复杂的电焊教程和底层编译代码,结果你折腾到半夜,路由器直接变砖了。直到有个老鸟多问了一句:“你费这么大劲,到底想干嘛?”你回答:“我就是坐在卧室打游戏老掉线,想让网速稳一点。”老鸟无语了:“那你直接花 20...
10 months ago
最近这一个月,我深度使用 Coding Agent 完成了好几个项目:KernelSU 的 metamodule 功能一个内核文件系统 (ksufs?)公司的全栈项目除了第二个项目我写了 MVP 原型外,其余项目我几乎没有动一行代码,全程指挥 AI 完成。从需求规划、架构讨论,到具体代码执行,以及后续的迭代重构,AI...
over 2 years ago
自 2018 年我发布 VirtualXposed 以来,这 6 年里我做了不少开源或者免费的产品,用过我 App 的用户,没有千万也有百万;然而,所有这些东西都是完全免费的,我没有任何直接的经济收益,「用爱发电」说的大概就是这了。几天前我把小狐狸钱包的助记词搞丢了,当时我很着急,因为多年以前我就把这个钱包的地址放在我的很多捐赠页面,心想里面没准有一笔巨款呢;结果我去 etherscan 上去一查,没有任何交易记录,资产是零,总算有惊无险。这听起来似乎很滑稽,但却是绝大多数“用爱发电”项目的现状,靠用户自发捐赠,可能连一顿饭钱都挣不回来,更别提养家糊口了。不挣钱倒是没啥,毕竟我们都是手艺人,那两把刷子养活自己还是没啥问题的。更让人难受的是,我们还经常被各种网络喷子问候,那些无端的谩骂、诋毁甚至毁谤,会让人产生自我怀疑:“我到底是在图个啥?”。如果你喝了一杯奶茶,那种甜味只能维持几分钟;而如果你喝一杯咖啡或者吃一片柠檬,那种苦涩会在脑海里回荡很久。人就是这样一种奇怪的生物,那些友善用户支持和赞美的话语,可能转眼就被抛诸脑后,但那些恶意的言论却会让人久久无法释怀。这些年里,我经历过若干次停更,也有很多人因为立场或者意见不合诋毁甚至毁谤我,而由于软件 Bug...
about 2 years ago
最近,一款名为 Cursor 的 AI 编程工具火遍了编程圈。自从 ChatGPT 发布以来,AI 正以肉眼可见的速度进化,从最初的翻译和总结,到现在的语音、视觉和思考能力,极大地方便了我们的工作和生活。许多人担心,未来 AI 会不会取代人类?作为一个程序员,我的大部分工作都与代码打交道。在编程领域,AI 也展现了强大的能力。例如,Github Copilot...
over 4 years ago
若干年前,我还在做 Android 客户端性能优化的时候,读到了 OpenResty 作者章亦春老师的文章:动态追踪技术漫谈,当时被深深地震撼到了,原来通过使用各种高级的调试技术,解决问题竟然可以做到如此精准而优雅。 然而当我真正要解决 Android 系统上应用程序的性能问题时,才发现理想很丰满现实很骨感——手头趁手的工具几乎没有。文章中提到的内核态追踪技术 SystemTap / DTrace 在...
over 4 years ago
去年春节之前,妈妈打电话给我说,我们老家那边有疫情,听说高速路口都封锁了;今年你在外面过年,一定要好好搞点吃的,过个好年。 我听完之后一时间有点恍惚:长这么大,我还没有在外面过年过;每年春节,无论我身处何地,无论回家要转多少趟车,我都会回家陪爸妈过节。电话完之后我赶紧又给老家那边的疾控中心打电话确认了一遍,被告知疫情是隔壁县的,可以放心回家,心里一块石头落了地。终于,我在腊月廿七那一天踏上了回乡的旅途。 偷渡长江那一天我早早地起了床,在经过大半天的转车之后,终于在下午五点左右下了高速出口;结果出人意料的事情发生了:路上的一座大桥被人为堵住,回家的路被彻底堵死了;我辗转千里,却在离家不到两公里的地方被拒之门外。 这座桥大约有四层楼房那么高,其实按照障碍物的高度我是可以从侧边翻过去的,不过万一掉下去我可能就凉了;从上面翻的话,没有着力点,而且对面的就是社区的管理人员,看到你爬越就过来推你。常规方法这条路行不通。 我也尝试过跟工作人员沟通,说我们(很多人都被堵住)大老远回家过年,也不知道路会封,行行好让大家回家团个圆;它的话让我印象深刻:我不管你回来干啥的,这条路就是不让过。 后来实在没有办法,我们选择了直接从河里渡过去;就这样,在室外温度 3℃ 的条件下,我们徒步渡过了 30m 宽的河,美其名曰:大冬天偷渡长江(支流)。 当天晚上我非常气愤,打算直接去举报,并且还准备在公众号发文揭露一下;深思熟虑之后还是作罢了。社区工作人员都是村里人,我的亲人们不可能像我一样常年旅居在外,举报之后难免被穿小鞋;唉,成年人的生活就是这么无奈。 智能手机到家之后我惊奇地发现,老妈竟然换成了智能手机;我爸妈都是...
about 5 years ago
你如今的气质里,藏着你走过的路、读过的书、爱过的人,以及学习过的编程语言。 如果把编程类比作武侠或者修仙里面的打怪升级,那我在入行的头几年,一直在痴迷于各种各样的招式;那时候我学习和体验了各种各样的语言:C/C++/Java/Javascript/Kotlin/Python/Ruby/Scala/Clojure/Scheme/Erlang/Haskell,不过自从我学习了 Haskell 之后,这份列表就基本停止增长了;虽然后来也对 Elixer、Go 也有过简单的了解,但是也仅限于了解了。 一方面随着从业时间的增长,要解决的问题逐渐变成了系统问题或者业务问题;另一方面也是体会到,语言只是工具,招式再花里胡哨也是徒劳,修炼内功才是王道。 不过,在一次机缘巧合之下,我再一次接触到了 Rust。 那是在某大型 5V5 手游上个赛季更新的时候,我制作的游戏体验增强工具就用不了。当时我就想,与其用一些第三方工具找基址,不如直接自己整一个?如果再配合上我自制的内核...
about 5 years ago
有过刷机经验或者曾经尝试过刷机的童鞋,一定听说过「解锁」这个词。这里的「解锁」全称应该是「解锁 BootLoader」或者简称为「解 BL 锁」。与通过人脸识别或者指纹、数字图案解锁手机屏幕的那种「屏幕解锁」不同,这里的「解锁」完全是另外一个概念。直观来说,解 BL 锁是刷机的前提条件。通常情况下,一旦某个设备无法解锁 BL,基本上就无法在这个设备进行刷机了。 那么,一定会有童鞋关心,解锁 BootLoader 到底意味着什么?为什么它会有限制?我们能绕过限制强制解锁吗?今天,我就尝试来回答一下这几个问题。 在搞清楚解锁 BootLoader...