duangsuse::Echo
956 subscribers
4.9K photos
154 videos
588 files
7.26K links
import this:
美而不丑、明而不暗、短而不凡、长而不乱,扁平不宽,读而后码,行之天下,勿托地上天国。
异常勿吞,难过勿过,叹一真理。效率是很重要,盲目最是低效。
简明是可靠的先验,不是可靠的祭品。
知其变,守其恒,为天下式;穷其变,知不穷,得地上势。知变守恒却穷变知新,我认真理,我不认真。

技术相干订阅~
另外有 throws 闲杂频道 @dsuset
转载频道 @dsusep
极小可能会有批评zf的消息 如有不适可退出
suse小站(面向运气编程): a19a0b
Download Telegram
duangsuse::Echo
A\配合面板调教,只要2k行代码,就可以做到相比之下,惊人的质量(甚至在光影上,比《迷你世界》还强)
#game 这基本上都是 A\ ,其中甚至有oneshot的,代码量基本<3k, 那个CEO写的(P3)有5k ,纯THREE
https://gamesvibe.app/play/NwKUBhhow0LiYfhXMnqCw 这个是仿别的

总而言之, MC管线比许多人想象的简单。 AI是能 one-shot <20$ 的完成的,它完不成的是在几万行代码上继续自我繁殖(人不会 也不能)

Blockwild 那种 10 万+ 行的项目,实际上是已经死了,贪多必失。232 种生物、Cardforge、公会任务、AI 同伴、多人权威、双版本迁移(TS + 未完成的 Rust)………………

(生物定义同时喂模拟、渲染、图鉴、卡牌、测试、htm wiki...)

(你自己玩的过来么)

这样,我们就能基本理解AI在【中型游戏】里今天的实际能力,以及realworld软件工程的许多选择有多少【偶然复杂度】。 MC当然是可以替代的,一句话的事,不骗你,不吹牛。
duangsuse
这样的软件工程,真的早点毁灭吧。 端到端的优化AI也完全可以生成啊
哀悼细节的消逝
原文:https://purplesyringa.moe/blog/grieving-the-loss-of-details/
阅读时间:4 分钟
分数:481 🔥

#design
作者把机器看作身体的延伸

我却厌恶机械化的代码,【人体不是机箱外边的挂件】,觉得Emacs是个UX很差的操作系统。 我是101% declarative ,完全自顶向下的思路

编程界的参差大抵如此
duangsuse::Echo
作者把机器看作身体的延伸

我却厌恶机械化的代码,【人体不是机箱外边的挂件】,觉得Emacs是个UX很差的操作系统。
其实点出了一个有意思的对立:

作者是身体向机器延伸:我要理解 ARM64、要看 JIT 反汇编、要知道 Python 怎么分配内存,否则我不完整。

你是机器该向身体靠拢:编程工具应该服从人的直觉和认知习惯,Emacs 那种"先学会一套世界观才能用"的东西是本末倒置。


这两种人在 AI 之前能和平共处,是因为软件行业给前者留了一个"避风港"——大家默认底层洞察是稀缺且值钱的。

本来就没把自我价值押在"懂细节"上,所以感受不到那种失落,反而可能觉得解放。

性能、调试这些领域仍然是真实的职业需求,只是市场不再为它付溢价了。被 AI 稀释的不是这种能力本身,而是它的可见度

[{},{},{}] 是 AoS 里最蠢的一种,每行重复 key,压缩器都替你尴尬;字典压缩、schema、zero-copy 这些 2010 年前就该是标配的东西,一个都没有

这个"释然"其实比上一篇的作者高明一层——他在哀悼的那些细节,相当一部分正是你说的这种:给烂抽象收税的手艺。simdjson 之所以是传奇,恰恰因为 JSON 的词法设计烂到需要 SIMD 才能跑快。

simdjson这个需求如果是我来分解,我会把它变成PEG和pull AST的通用simd/多线程收集,以及从curl和fetch就开始平滑替换掉json请返的模式,直接拆掉这个【高性能的json】的概念

还是那句话: 我的研究不是【懂不懂】,是已知和未知。


同样有解决的欲望,我选择的是把未知尽量推到更早的、可被人和工具【共同理解】的RT层面,而不是在已知的、封闭的优化空间里无限循环。

Parabix(Robert Cameron 那一派)确实早在十多年前就做了「把任意文法编译成位流 SIMD 并行」的路线:用 bitstream 表示字符类、用并行位操作做扫描和匹配,而不是逐字符状态机。simdjson 的 structural indexing(先找出所有结构字符和 escape 位置,再做后续解析)本质上是同一思路在 JSON 上的高度特化。几条 pshufb 一类的指令完成一轮分类

Hyperscan 是最好的参照:通用正则,SIMD 加速,有平滑降级,比手写 memchr 慢一点但谁都能用。ripgrep 走的是 memchr,相比simdjson 的 stage 2 ——把结构索引变成 tape、处理嵌套、校验——还是一个基本两层级非嵌套的状态机。

这恰恰说明了,视角分解的【洞察力】是必须始终跟随的,不是指指路就完成了。 PEG 只是一个用户接口,AI却把它当成金科玉律来兼容,为此甚至给simdjson的性能打五折,没有平滑降级,没有intrinsic组合子,只支持scannerless,没有F12可视化的配套

太过重视之前的失败经验,以至于忘了他们的设计到底有多缺乏常识与同理心



为什么他们会哀悼【可探索的编程】被AI取代了??

不就是因为,simdjson这些机器甜点没有任何公众价值、科普效率,只是垫片么。他们的遭遇和数学界完全一样。 反观 RegExp 呢? UNIX path和netcat呢? API Set和F12请返面板呢? 相对于 explorabl.es/ ,他们的“Rust们” 也可称为深入理解的编程么?
🤔
我们把「如何让 JSON 更快」这个问题本身取消了,变成【如何让任何parser容易优化】【如何让curl+列表绑定突破瓶颈】,然后用.json这个场景当人质,把新路线植入进去。 结果是任何体量的读写器都能有RegExp/pull的性能,以及API函数的route框架不再默认只支持收发json

这就是一种【换购思维】的体现: 不认为simdjson必须是【深奥的】,而是通过1+1>2与因果链的理解,来消解它的独特性

AI可能放弃一大堆领域特定的库,但不会不 import .. THREE ,也不会不给tweakpane。 simdjson 可以是【特定的库】而苟延残喘,也可以是THREE而发扬光大, 这不是【技术力之争】,而是观念之战。
AI的存在其实是对【新生框架】更加友好的。曾经,可能只有GTK/Qt这样的能做桌面或跨平台,现在各种gl、自绘、gpui,只要足够有特点,调包也没有学习成本了。 相对应的,就连LLM自己的算法都可以AIGC loop,八股文彻底露馅了(没有认知 全靠天赋和套作)

THREE不简单,但Pythonic。 【深奥的技术】从202x就一直在失败,因为他们并不理解事情,全靠天赋和啃老本。
技术人员不是必须要IDE这些【特定的工具】,他们可能只是想在任何一台电脑,打开F12或特定框架的editor。 没有一种定律是说,软件开发工作流中不需要有【App】,那纯粹是因为“牛人”们不会做,也不理解全局,没有心智模型。 我就经常调 easingwizard.com
duangsuse::Echo
哀悼细节的消逝 原文:https://purplesyringa.moe/blog/grieving-the-loss-of-details/ 阅读时间:4 分钟 分数:481 🔥 #design 作者把机器看作身体的延伸 我却厌恶机械化的代码,【人体不是机箱外边的挂件】,觉得Emacs是个UX很差的操作系统。 我是101% declarative ,完全自顶向下的思路 编程界的参差大抵如此
#perf #algor #learn

我依然可以这样做比较: PEG json 就像【右手比‘八’,放在大字上,食指探拇指取】,它能区分 123, "123" 也能收集进嵌套的 [,]

simd json 则是以高亮和边界符为单位。呼的一下把 "abc\nabc" 压成 "...",又以 [] 这些坐标分割多线程扫描。 当然,这是因为JSON被滥用于大数据才产生的。treesitter IDE哪怕在巨型代码基上,食指1-by-1往后比,也够。simdjson 是 2–3 GB/s,快两个数量级。

在中文圈,能描述到我这个程度的,我至今找不到超过5人。


Parabix 组、simdjson 作者、Pison 作者,还有国内做数据库 JSONB 列存的那批人,没错,他们都知道这回事,

他们也知道一大堆【偶然复杂性】,他们就是没法像我们一样,分清楚,哪些是偶然的选择,以及到底可以多简单。就像代码高亮一样简单。

高亮引擎喜欢线性偷懒的事情谁都知道,json 语法主线是个switch,而非【递归下降实现式】的多层嵌套,我也知道,只是我不会模块拆分的如此古怪。 既不是PEG对照的直白,也不足够通用。

你不理解我为什么用【高亮】做视觉比喻,只是在挑词。

要把那两倍跑掉的是A\,不是我,我只负责像你一样在这里顶回来,不过,我是会把pshufb 在 ARM64 和 x86 上延迟不同,作为一种坑和笑谈放文首表格,而不是经验和特性。

转义符的奇偶前缀、carryless multiply 算 in-string mask、UTF-8 合法性四条并行校验(顺带把str.decode越俎代庖?)、块边界 carry,这些【报菜名】我倒很好奇,如果不是局限于这个paper,它们能做到什么程度。

in-string可支持 ""内外、/* */ 注释内外、heredoc 内外 。simdutf 现在 Node 和 Bun 都在用。 括号匹配的并行算法是 Bar-On,第二趟就知道每块的起始深度。


所以你看,simdjson 在科普上的复杂性在哪? 在于没有正确分解,以及,没有任何比喻和纲要,没有数据流。
duangsuse::Echo
#game 这基本上都是 A\ ,其中甚至有oneshot的,代码量基本<3k, 那个CEO写的(P3)有5k ,纯THREE https://gamesvibe.app/play/NwKUBhhow0LiYfhXMnqCw 这个是仿别的 总而言之, MC管线比许多人想象的简单。 AI是能 one-shot <20$ 的完成的,它完不成的是在几万行代码上继续自我繁殖(人不会 也不能) Blockwild 那种 10 万+ 行的项目,实际上是已经死了,贪多必失。232 种生物、Cardforge、公会任务、AI…
https://www.seangoedecke.com/software-engineers-dont-get-to-be-luddites-about-ai/

#statement 有人认为, #IT 和线上经济,本身就在【取代】传统行业,所以被【卡上经济】威胁时,不能持反对态度

现在轮到自己被自动化时,却说“软件工程是不可替代的艺术、不应该被自动化”,这不成立。

赌场里没有哭哭啼啼的资格。


类比历史:卢德分子是被动力织机取代的纺织工人;而软件工程师更像当年建造这些织机的工匠和机械师。讽刺的是,那些机械师大约50年后自己也被进一步的制造流程自动化掉了,伪善的罢工最终失败

所以外行容易把“写代码的”和“搞 AI 的”分成两个完全不同的物种,而一线实际干活的人会发现:两者共享大量底层能力(系统思维、抽象、调试、对生产环境的敬畏)

文章的冷硬立场是“你一直站在自动化这边,现在没资格突然反对”。
补的这层则是:一线工程师和 AI 系统之间,也不是简单的“被取代者 vs 取代者”关系,而是能力谱系上的连续体,取决于你更喜欢【确定安全、人机接口与人际】,还是【随性推进、外脑主导】。

🤔 🧑‍💻
duangsuse::Echo
https://codepen.io/editor/duangsuz/pen/01a12507-5341-72dc-8bf7-f63387ddf490 #game P1 还是我昨天刚做的游戏demo (纯ai可得 cui-ling.grok.me ) Fable 帮助我把【难开发的要死】【可测试不可组装】的管线弄了,高程图直出raymarch,自带贴图,200行gl 。 我继续指挥它弄了双指触屏->WASD的零接口hack,全部都是模块,下个项目还能复用 😋 不得不感叹,还是端到端好。 虽然…
#game https://codepen.io/duangsuz/pen/yyMvvvK

这个小实验就此停止了,1.4k行 渲染管线 500行,键鼠触屏交互顺滑,游戏AI略弱智 ,程序化地形(Simplex FBM 噪声 + Three.js)视觉+特效亮点突出,输入层完成度、行数性价比较高。

它用了 Three.js + Tweakpane 噪声面板、带 HUD 小地图、支持触屏双指模拟 WASD,以及简单的食物放置等互动。


它证明了 A\ 5.1 的辅助下,即便临时起意,几乎不提及术语,3天也可以打磨出某方面特性较突出的3D视觉场景

不过开发体素游戏,是长期且需较多打磨的,我一般会摇号几个 #xref 去缝合优点。 人品好的情况下,oneshot得到 Codex $14 直接上架的结果也有机会

(ps. 这个2k行单文件代码质量确实没得说,模块清楚,脚本直观,完美利用了H5消除imgui复杂性,用canvas生成默认贴图)

(首选js生态自然没得说,但AI在编程上也是最均衡的,不会像人一样莫名其妙拆十几个文件,导一堆半成品lib,交互结果却写的一塌糊涂 🙉)

但是我对这方面开发不感兴趣,就像 senko.net/vibecode-bench ,将其归档。AI起的名字是《青屿》,最初灵感来自grok自带的prompt和《生存战争》,我没有想要起名字 🤨。
Forwarded from codedump的电报频道 (老C)
#读书

芒格对李光耀、邓小平、李录(之前专门写过李录的介绍)、王传福都赞不绝口,也很推崇中国的儒家文化。尤其是李光耀,芒格家里摆着两个人的半身像,一个是自己的偶像富兰克林,另一个就是李光耀。

芒格的价值观偏保守:决不能接受赌博、吸毒这些行为,重视家庭。

看完的时候怅然若失,尤其是看到最后一篇2022年的股东大会时,因为我知道这个有个性的老头将不久于人世。
❤4
Forwarded from duangsuse
#book 答案可能是,根本没关系。 人家很有钱来度过任何迷茫期,或许并非是赌徒的有钱,但这就像【人机界面中,人总是不变的】, 书籍会提醒你做个开放、有弹性的人,而不止是【深耕】什么物质。

只要有智慧,一切总会好起来。 问AIGC对编程有什么用,就像问内燃机能怎么帮到马匹。 问问自己,到底从经验中学到了什么【屏幕之外的东西】

《芒格股东会讲话 1987—2022》涉及储贷危机、日本泡沫、互联网泡沫、2008年金融危机、加密货币、疫情等,也包含他思想演进、投资案例(如可口可乐、比亚迪)与人生观

变化很快的时代,看这些熬过好几个大周期的老人的话,能有很多启发


对我自己而言, 软件工程师,并非是【能读写代码的人】。 编程无关计算机正如天文学无关望远镜,与其说,是为了实现或证明PoC而编程,不如说,编程是数字化时代最像【魔法画笔】的东西,也是最前沿的媒介,而我只是被它拣择。
duangsuse::Echo
哀悼细节的消逝 原文:https://purplesyringa.moe/blog/grieving-the-loss-of-details/ 阅读时间:4 分钟 分数:481 🔥 #design 作者把机器看作身体的延伸 我却厌恶机械化的代码,【人体不是机箱外边的挂件】,觉得Emacs是个UX很差的操作系统。 我是101% declarative ,完全自顶向下的思路 编程界的参差大抵如此
#history #life 以此为契机,往前翻了翻自己的【技术起点】。

https://duangsuse.gitlab.io/blog/2017/07/09/A-fork-in-the-road/

其他文章 #ai锐评
https://grok.com/share/bGVnYWN5_18e9882e-72e7-41dc-9616-bbcdc9fce394

P2 所示, lsv0 scanutils 是完全没有代码的,那时候还叫 coolapk.com/@Trumeet 的Dir的克隆
(事实上做了 https://github.com/duangsuse-valid-projects/attrtools )

没错,0年经验的那几年,我会被readdir()卡住,可能连 ./tree . 都手写不了,最多读表readlink

h2 这类【只有表情包】的项目,象征了我从起点就是软件工艺(“业余” #PLT ),但实际上我现在有了真的设计体系。

fortune.rs 是把一个[(author,str),]绑定给curl ,以前这个 (import rand).pick 作为2hrs新手任务非常的有趣(我还让群友轰炸过VPS上的实例 领悟到 #rust 也只有4k并发),现在整个交给AI才算成熟。

(新手任务一说,也是今天回看,当年都是挑战)

当然,那一年我也写过rustplay tgbot (os.exec uid1k),源码就在本频道Files,现在AI也能生成和部署,可能async还更规范。 而且用 A\ 5.1,代码质量大概比9年前好,今天看来,也完全够用。
duangsuse::Echo
把一个[(author,str),]绑定给curl ,以前这个 (import rand).pick 作为2hrs新手任务非常的有趣
#TIL #statement 小板凳——故事时间

那个时候,也学Ruby后端做个str blog,还是用swapfile模式,换入换出到./db.json,从curl事件改变 GET / 的渲染。

今天的AI也大量使用 [].map{}.join(''),可以说从初心回到初心了。 同样的成品,这些最初的踩坑,大概就足以决定我和PHPer走的是不同道路,他们可能更业务,我既理想化、原理化,也vibe。

即便在初学时,这样的impl也是次日抛,没有像今天可以加上.md渲染和SSG/OG/CSS模板,效仿当年typecho


就像在今天,我会把任何框架的 POST / 路由认成curl事件,而把服务端理解为一个生成json的活进程,而曾经,MVC都是不同的东西,XML和CREATE TABLE也不是数据。也可以说后端已经是某种对等客户端,这些藏在我的心智模型里,就像Promise().then 取代尾参回调或Docker取代pm2那样不可退转

当年不是这样。那时URL模板是圣旨,json里有个{msg:''}或{status}是框架选型,Mapper.xml 是白象,JWT是诡异的密码学“登录密码”,C/S里每个端都是新东西,就像安卓的View绑定八股文。

今天已经不是那样了,JWT和sql(t"select {1}") 都是【小程序】,回看曾经我写不出的代码,发现它们还不如我的认知。

— 🦄
2017最开始学编程时,是从geek平缓改变的,GH号已经有两年空窗期了。 用cowsay “vibe”了纯选项文字游戏(那时还没有zenity风格),也用dnSpy把两条语句复制来去,调开了管理员面板,后面又从今天已死的AIDE入了java,但还不明白 mContext 是啥,以为print、cout和this.mXXX都是【语法】。最记不住的是 for(int i=0; i..; i++) 和里边偶尔的 list.add()

那时候也学 “算法”。 括号配对、字符串diff、dfs走迷宫、并查集,在OI鄙视链的底层, 像学钢琴一样痛苦的背模式、等着编译、红波浪、面向除错编程…… 渴望着【瞪眼法】能比同龄人稍稍优秀一点点,却经常连类型检查或初次传参都被pass掉

那时候最恨的就是try{}不断卡编译,分号卡编辑和编译,恨开源程序跑不起来,make到处报错;最喜欢的是makepkg,零成本体验GH直出的自搭软件,不会玩不了。 那时不知道为什么要有class和构造器赋值,也不想写 int xx=(int)1 ,现在居然也一样。

那时候用Vim只知道 :wq ,后来CLI只用nano,ssh直接vscode, 现在已经给Neovim写了gtk/qml KWin内嵌窗口+mold热重载的插件。但是仍然讨厌 :wq ,都是用CtrlS和q


第一个上线的是 MinBase64.apk ,之后九年却销声匿迹,其实却开始做了 hostsgen.yml “反IP污染项目” 的声明式codegen,之后的GeekSpec,甚至于真正有独创性的 uvx tkgui; db.htm .. SQL语法糖 也一脉相承

之后平稳时期也做过 uvx hachiko-bapu S/A键打轴扒谱工具、WebExt-LittleDict 试验Trie树 可给日语歌注音、curses贪吃蛇(9个版本手搓单文件)、ArgParser.kt 、ParserKt/单表达式calc(5门语言写过9版.. 最后剩js)

AxmlReader的重构(学会了IDEA的F12), ./extract_subtitles.py 的内存峰值优化(初次验证了信号处理基础),失败的 TreeToolbox.apk (只做了一屏类似 confetti 的打字机动画)

对我影响最大的是至今足足收获1star 的 https://github.com/duangsuse-valid-projects/Promise-Java

闲下来也会做些无意义的小脚本,比如 xy.htm 函数图计算器(今天让AI搓的功能更多),高级计算器UI和 Coding猴语言的for-switch实现,用js渲染sdf的vec2~4库和midi播放,3语言写了4个版本的png2ASCII 或opencv/中文字符版本……

绝大部分,我写过的…… 项目? 不会超过1个页面,1条subcommand,次年维护率为0% ,但是我仍然相信我生而适合做《软件工艺》

—
而在许多事情之前…… 大概是B站开始无限滚动前几年吧,我甚至无法对这种状态做有理有据的批判(可能嫌star<10,或行数太考究,但也说不出【单页质量】【可探索性】【次年维护率】【集成进了谁】这些一箩筐的证据)

就像那句,“除了冯·诺依曼,所有人都在梦游。” 比如我


现在我确信:比起【没有做到】,我更在乎代码段和组织的难度能不能【恰如其分】,就像最终用起来的【直觉主义】那样。短而不凡,长而不乱,我不相信这是不可达成的默认模式。

总之,对我在乎的code project,我的EGO当然很大。不同人眼里有不同的天才,而相对的,“最伟大”的独裁者们被历史遗忘,毫不含糊其辞的牛顿ball.xyz却为人称道。

无论会不会【成功】,我总是“父亲节”上最好的godaddy,而且丝毫不担心IQ不够或被【抢】了点子,或许这就是工匠精神吧。

或许我期待这样的事情因我而发生: 就像js突然到处都是useState(jsonLit),或css骤然变成 class="w-[20px]" 的形状,或到处都支持CommonMarks输入,在某年以后,就那样了。 当然,不要这样明确到有点傻的特征,也没必要像Vue之父那样成功,反正卖课的也能更加【成功】呗。

如果说《圣经》所指的Talent,是说每个人都如被托付了一种task的Agent,我想我要创造的,会是这样不稀奇但有用的【存在】