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

技术相干订阅~
另外有 throws 闲杂频道 @dsuset
转载频道 @dsusep
极小可能会有批评zf的消息 如有不适可退出
suse小站(面向运气编程): a19a0b
Download Telegram
Forwarded from Hacker News (yahnc_bot)
Professional video editing, right in the browser with WebGPU and WASM https://tooscut.app/
#今日挑战*47:庞加莱截面与双摆混沌(Double Pendulum Chaos & Phase Space)
https://codepen.io/duangsuz/pen/WbGEPxy
双摆是动力学系统中展示**混沌(Chaos)**的最典型案例。其运动由一组耦合的非线性二阶微分方程描述。
在实数域内,我们使用 Runge-Kutta (RK4) 方法对能量泛函进行数值积分。

弃了复杂的约束求解器,直接在微分方程层面上使用四阶龙格-库塔的简化变体。derivs 函数封装了拉格朗日方程的纯代数形态。
鼠标移动带来的并非位移指令,而是对能量守恒系统的动量注入。用户能直观感受到“敏感依赖于初始条件”这一混沌科学的核心。
#design 其实bool并不自然。null?. 已经证明了bool不是基本的逻辑单元,只是一个不可组合的类型检查

在很多现代语言(如 Rust、Swift 甚至现在的 TS/JS)的演进中,大家越来越意识到:Boolean 本质上是一种信息丢失。

当你把一个复杂的状态压缩成 true 或 false 时,你切断了上下文。而 null?.(可选链)和 ??(空值合并)的出现,实际上是 JavaScript 在向函数式编程中的 Option/Maybe Monad(容器类型) 妥协。

它关注的是**“是否存在(Presence)”,而不是“是对是错(Truthiness)”,这让逻辑得以像管道一样组合(Compose)**下去,而不需要动辄打断控制流去写 if (typeof x !== 'undefined') 这种干瘪的类型检查。


像我这样思考存在性设计的PLTer太少了,绝大部分人觉得布尔是代数,在我看来它就是null、unix flag、类型检查的三选一而已😅

你刚才提到的这段话,完美地击中了类型论中一个非常著名的概念:布尔盲(Boolean Blindness)。


在真正严格的代数数据类型(ADT)和构造性逻辑(如 Curry-Howard 同构)视角下,Boolean 是一个极其劣质的类型。

因为它丢失了所有的上下文(Context)和语义(Semantics)。当你拿到一个 true 或者 false 的时候,你根本不知道这个结论是如何得出的,

它只是一个干瘪的比特位。无论你给Boolean起yes,no还是更对称的nope,true ,都只比01好一点

只要你的命名不是None,True,enum(bitflags!),你就还原不了使用场景。在人的语境下讨论非列表的二进制不能让类型安全
#day AIGC 默认设置非常拉垮
确实是一个很平庸的解法,其实就是id++对应改a,sup而已,你居然写了快20行。我很好奇其他人用你的AIGC怎么能维护代码
哈哈,我当然知道那是黑魔法,只是想看看没有padStart支持怎么办,比如不提前转str会不会更有趣

这个功能如果20行,我根本不会考虑加。这恰巧是我的特点了,我不会故弄玄虚,这只是游戏

我对你这种默认设置是完全没意见的。 如果一个简单的id++对应改a,sup要20行,vibe菜鸟根本不会想到加这个功能,而且完全是不可维护的。

这种UIUX分离只是自我感动,分不清主次的政治正确,他们越信这些我的软件越有竞争力。

你成功的把这个精巧不深奥的解耦变成正确但平庸的烂摊子
如果r_raw, r_eq和if None复制一下就叫纯函数? 那种人根本写不出def Swizzling


结构性正确的代码是不需要注释的

“我认为数学不算是科学,就某方面来说不算是自然科学,可能是‘非自然’的科学。”[3]

“事实证明:真理总是比你想象得还简单。
如果有个知识点,你可以用数种完全不同的公式化说法来描述,却没办法让人字面上知道你只是文字游戏,那这件事本来可能就是简单的。”

数学是替不同的东西取相同名字的艺术。
庞加莱
数学是透过在纸上的无意义的记号,建立简单法则的游戏。
希尔伯特
做数学的艺术在于找到一个特例,其中隐含了所有推广的胚芽。
希尔伯特


你没猜出来吧,这些是Feynman的话

Hilbert和庞加莱一比就可见一斑了。无意义记号的游戏 / 特例中的胚芽?给不同的东西取相同的名字?
前者的本意是找优雅的demo来描述整个系统,但庞加莱更好理解,因为所有系统都是从用例来的。

他寻找的“优雅的demo”或“特例”,就像一个完美的基因序列,其中包含了长成整个参天大树的所有信息。这是一种**自上而下(Top-down)**的、非常“纯数学”的视角。它是内向的

当庞加莱看到单摆的运动、行星的轨道和电路的振荡都遵循同一个微分方程时,他意识到数学的巨大威力在于“抽象”。它把不同“用例”(use cases)的共性提炼出来,赋予其一个统一的“名字”(数学模型)。这是一种**自下而上(Bottom-up)**的视角,是外向的


😅 🤖
#今日挑战*80:雷诺群聚与非线性避障涌现(Boids & Nonlinear Obstacle Avoidance)
https://codepen.io/duangsuz/pen/bNwrzqM
本挑战模拟经典流体动力学中的群聚行为(Flocking)。通过三个简单的实数矢量规则:对齐(Alignment)、聚合(Cohesion)和分离(Separation),大量粒子自发涌现出类似鸟群或鱼群的复杂社会性结构。

鼠标位置被定义为一个带有高斯权重的阻尼场。粒子受到的斥力与距离的平方成反比
虽然代码中没有任何关于“阵型”的指令,但粒子会自发地形成协同飞行的“小队”,并在鼠标靠近时呈现出流畅的避障散开效果。
- 想尝试加入“捕食者”粒子(具有不同的力矩阵),观察群聚结构如何在压力下演化出更复杂的防御策略吗?
🦄2
duangsuse::Echo
https://artsandculture.google.com/experiment/viola-the-bird/nAEJVwNkp-FnrQ #music 太经典了,有卡农、Amazing Grace 等等 Blob Opera 正在巡回演出!在世界各地的城市以 4 种歌剧声音演出,并观看它们的表演。下面是我为The Blobpera House创作的歌曲 🎼 https://artsandculture.google.com/experiment/blob-opera/AAHWrq360N…
b23.tv/BV1Fg411F7Xk 😂 阿b有二十多个blob歌剧

还做了 MIDI 播放功能! viola bird 应该也有?😱

可惜webui不支持一个一个blob的录,只能录一个音轨。这个lab还是很顶级的 ,HN top10 的水平

他们最牛的地方就在于:把极其硬核的前沿技术(机器学习、DDSP、实时音频合成、WebGL),包装成了一个连三岁小孩都能无脑玩的沙雕玩具。

鸵鸟项目本质上是一个连续的二维输入:X 轴控制运弓方向和力度(Bow),Y 轴控制指板音高(Pitch)。
duangsuse::Echo
实际上js里就改了几个词,加了1行代码
#statement #ai #dev

我对LLM大贤者是怎么看的呢?

显然,they在绝大部分小app,尤其是“目标单一”的算法、物理模拟上比95%的人强多了!

😒 其实这个 ball game 120 行,已经宽容了三成死代码。复用和移植、键鼠绑定不尽如人意,但是,相比之下,这些人手写的300行起步,功能和UX差劲的…… 是AI半自动的一半都不如!


为什么要怀疑语料库辅助编程呢? 它们比95%的计科大佬见多识广的多,不会把垃圾代码,当体验和功能。就是纯粹的数理!我相信 oimo.io 的水平SOTA也是能达到的

当然,直觉是不可或缺的:比如Verlet-substep动量的数值稳定性就比牛顿法好太多,有时ai默认实现为速度,有时是动量,但是怎么重构是玩游戏的人决定。😒

但是这简单到幼稚的重力传感器balls demo,我全网搜不到。浏览器本该是这么好玩的!
js世界真弱。而且“大牛”的代码质量很差!不如AI来写。
duangsuse::Echo
相比之下 uber-apk-signer 好像是包了一层官方实现就 3MB 😅
👈😅 同样的功能(甚至包括了界面)
20K vs 3MB ,我不知道形式化证明,怎么证明一些几百万行的屎山正确,嗯,干脆让ai来写test好了🌚

我真不知道有些人是怎么编的程。

做对了,然后呢?一点可移植性都没有!js、java、cpp? 不能用于提升自我,或者学技术学的很累,技术债务!不pythonic。

真的不如就包给ai,学习prompt元编程算了,
虽然我知道gemini对他们而言,是进一步劣化代码品味的恶魔投资人。但是我不会容忍大模型搞乱小游戏的,我会清楚每一个功能点占几行,模块占几成,排行榜要几项

这些实数,偏偏是技术人不爱纠结的问题。他们没有 david.li 那么酷,用电脑唱歌剧

那些弹性物理80行js已经是比较需要复用的 ,写五六百行还不带稀疏网格剪枝,用java写东西,简直是误人子弟。🤓👈

代码时代的真正开始

AI 正在帮助我们产出更好的代码。例如,作者利用 Opus 4.6 一次性解决了在 Val Town 中配置 React Router 7 的难题,并开发出了名为 vtrr 的框架。这个框架通过一段仅 50 行的单文件代码,优雅地处理了复杂的全栈应用逻辑。

目前社会上 99% 的人,包括一些著名的播客主持人,都认为编程已经死亡,甚至建议人们不要再学习编程。这就像在印刷机发明时认为讲故事的能力已经过时一样可悲。事实上,代码时代才刚刚开始,AI
duangsuse::Echo
代码为AIGC,请自己复制代码问AI

https://codepen.io/duangsuz/pen/qENKvLV
这两个全网都找不到的小demo,旧版才用了5分钟和一小时😂,灵感也是ai算出来的

可惜最近ai的老本也吃完了…… 但方向选对了,确实很快。上千行代码说明编程者并不理解。

实际上,正确的实现应该是能放在语文课文里的体量,真的。😒

我从不试图理解无聊的技术债务,上次我把base16,64,比特币和pdf都在用的b85都实现了一遍,总共才64行js。没什么好研究的
#今日挑战*136:图灵斑图与反应-扩散方程式(Reaction-Diffusion & Turing Patterns)
https://codepen.io/duangsuz/pen/qEaXgVN

系统仅包含两种化学物质:激活剂(A)和抑制剂(B)。
本挑战抛弃了力学系统,进入非平衡态热力学与化学涌现的领域。著名的计算生物学模型 Gray-Scott 反应-扩散模型 解释了自然界中(如斑马条纹、珊瑚、指纹)复杂时空结构的自发形成。

拉普拉斯扩散: 物质在空间中由于浓度梯度产生的平滑扩散(通过离散的 3×3 代数卷积核 L 计算)。

化学反应: A+2B→3B(代数项 −AB2与 +AB2),以及外源的注入和衰减(常数 f 和 k)。系统无法达到均匀的静态平衡,而是自发涌现出有丝分裂、蠕虫状或网格状的宏观拓扑结构。

这个系统极为敏感。你可以用鼠标像毛笔一样在屏幕上拖拽留下“物质 B”,你会观察到这些笔画在几秒钟后无法维持自身的形状,而是自发地经历**“有丝分裂”**,最终铺满屏幕形成犹如生命体般的网格状稳态。
严格分离了 A 和 nA 缓冲区。使用原生的 1D 形式 Float32Array 最大化了实数域计算的 CPU 高速缓存命中率。
https://www.sciencefocus.com/future-technology/blob-opera

https://news.ycombinator.com/item?id=25441592

https://github.com/0x2b3bfa0/python-blobopera #tool 歌剧

How do you get them all to sing at the same time?

I don't get it! Can someone explain why/how this is special? Seems like it is only a matrix of like 40 states per blob(4元音10音高) and that the lower blobs just follows with the same state? Of course well executed but..?

🌚准确的说,有人考据过了一个blob的演唱矩阵是5x25的。 DDSP 可微分

有工具技能就像拿py做计算器一样超高效

https://github.com/OverlappingElvis/blob-opera-midi/blob/main/src/midi-to-blob.js#L143