This blog is rated 🔞, viewer discretion is advised

Little known facts about Han

I was planning to publish this article on 2024-04-05 00:01, but rejected because it looked silly for this blog. On that day, butt hurt as usual, I watched this short-vid called Why Sichuan people were chill, by the influencer 罗胖. I was quite amazed by his 3.79M many fans and more strangely, IP location: Sichuan. I followed the article he mentioned: 1001 A.D. and How Sichuan got its name? and find it quite interesting, as all history lessons are.

So let's explore the little known details and find out why history of Sichuan is somewhat special (Whig-style narrative alert!)

The birthplace of Taoism

Records shows that the birthplace of Taoism, the most chill religion ever, points to 鹤鸣山 at 大邑, and the 青城山 nearby was considered a holy mountain. Some say 龙虎山 at 江西 as an alternative, but in my opinion its where the tianshi (prophet) 张道陵 pactice his alchemy rather than the developing the belief,The real deal including Wudoumi movement clearly originates from 龙门 mountain ranges on the western of Chengdu plain.

Inspired by Buddhism

When I was searching for tourist attactions I found that 鹤鸣山 were suspiciously connected to Buddhism. Chinese Buddhism were first landed at 白马寺 at then capital 洛阳 at 68 B.C. But 白马寺 itself wasn't supposed to be a temple per se, but rather a settlement sponsored by the imperial court. There were nine houses of governance established by Han court covering Justice, Sacrifices, Royal affairs, Carriages and so on, one of them is 鸿胪寺 for Royal Hospitality. The 白马寺 was built by the order of the Second Emperor of E. Han as a guest house to translate the 42 chapters of Sutra acting like a 鸿胪寺. Some 6 years later, after the job were done, the two buddhist monks, 迦什摩腾 and 竺法兰, went to Sichuan seeking a legendary mountain called 雾中山 according a prophecy. The prophecy were carved on a Ming-era stele 开化寺碑记, describes the Buddha Shakyamuni, when about to enter Nirvana in the city of Kushinagar, once said to his disciple Sariputta:

“我灭去七百年,尔往震旦雾中大光明山。山脉发源于昆仑,有七十二峰,为古佛弥陀道化之所。严密保护,嗣后圣者来居。”

So the two Indian monks built a real Buddhism temple 开化寺 on 雾中山 and began spreading the religion there. It's said the temple had a collection of Pāli Canon transcribing Theravada Buddhism, one of the O.G. version of two Buddhism major branches in Asia.

So what's the connection anyway? The first prophet of Taoism, tianshi Zhang, chose 鹤鸣山 somewhere 10km near the first Buddhism temple

And later Taoism flourished in Sichuan, like Wudoumi, and ultimately, its variant Taiping-Tao, wrecked the mighty Han empire.

I also commented this travia on HN

The doctrine of religious Taoism and Buddhism were strikingly similar, which leds to series of conflicts and accusations over the millennia. The most famous example, Laozi Converted the Barbarians 老子化胡经 were publicly debated in Mongol-era imperial court and Taoist lost the battle.

Silk

Also an interesting article from HN Evidence of the use of silk by Bronze Age civilization, which I also commented, because some guy suggests Sichuan were once non-Han, it triggered me. TFA states (with my edits):

HuangDi lived on the hill of Xuanyuan and married the daughter of Xiling clan. HuangDi's consort Leizu of Xiling taught others to raise silkworms, and the legend Leizu is from the people of Chengdu in Sichuan. Shu refers to “mulberry worms” aka “silkworm larvae”. The character Shu is related to the initial sericulture, referring to the beginning of the Shu State and the people, for whom sericulture was central to their economic activities.

HuangDi

For those who aren't familiar, HuangDi the Yellow Emperor was considered the ancester of the Han, the Hun, the Hmong and Xianbei of the Siberians. The second son of HuangDi, married ChangPu from the Shu clan. Their son zhuānxū was another Di, out of the 5 Di of Ancient Kings 五帝

Baijiu

Baijiu, the Kaoliang liquor, strong distilled from great millet, were first introduced in Sichuan known as 蜀黍. Even today top notch brands like Maotai were from the Chishui Valley of Sichuan (administratively divided to Guizhou by purpose)

Han

But what does Han has anything to do with Sichuan? Well everything does. The literal meaning of "Han" traces back to LiuBang, the Great King of Han, founder and first ruler of the Han dynasty, literally settled his fief over Sichuan (Ba, Shu, Hanzhong and its 41 counties). Liubang spent his next 5 years elimilated all his enemies and began the first Pax Sinica of 300 years.

The second Pax Sinica, led by the Great Worrier Li Shimin, also titled Yizhou Acting Desk of the Supreme Book. To explain, the Supreme Book refers to 尚书, the source of great power, the source of ultimate authority, one and only text that describes how Chinese civilization came into being since ancient times. The Desk is the government body where the book operates, Yizhou Acting Desk is like the copy that covers Sichuan, aliased Sichuan. The soldiers of Sichuan, as the last reserve force led by general 窦轨, joined Li Shimin for the final attack on Dou JianDe on 620 A.D. at the Hulao Pass, which leds to the live capture of two kings, and helped Li Shimin rose to throne.

8 Partners of Oath

The fighting spirit of Sichuan soldiers dates back. An oath was taken between Zhou and 8 partner states, including Shu, as described in the Supreme Book on Zhou chapter 4, to rebel against the cruel Shang dynasty. The battle took place at 牧野 on 1046 B.C. where the Ba people performed a war dance on the frontline and Shang army collapsed upon witness.

Libai and the Great Prose Masters

Libai, the God of Poetry, was raised in Sichuan, but where he's born is debatable. However, four out of the Eight Great Prose Masters, were born in Sichuan. So it's either Libai a Sichuanese or Ouyang Xiu, or both.

... and there's more

That's all of the trivia I could think of, for now! Leave a comment if you think otherwise. Feel free to correct my English mistakes please, as I am an ESL blogger without use of any AI

Posted

stdout

ss命令抓linux下偶发端口访问

Linux服务器一直有个TCP连上来发数据,跑到对应的机器上发现连接已经断了,对应的进程也退出了。估计是某种定时任务。

排查代码无果,只能通过命令行来监控。这里直接上ss命令

  while true; do pid=$(ss -tanpe state established 'dst 10.11.22.33:4455'  | awk 'match($0,/pid=([0-9]+)/,a){print a[1]}'); [[ -n $pid ]] && tr '\0' ' ' </proc/$pid/cmdline ; sleep 0.2; done;

解释下:

  1. while true; do ...; sleep 0.2; done;每0.2s反复刷新执行指定命令。
  2. ss -tanpe state established 'dst 10.11.22.33:4455'
    - -t 选项表示显示 TCP 连接。
    - -a 显示所有连接。
    - -n 不解析主机名、端口。
    - -p 显示进程信息。
    - -e 显示额外的详细信息。
    - state established TCP已连接
    - dst 10.11.22.33:4455 过滤TCP目标地址+端口
  3. awk 'match($0,/pid=([0-9]+)/,a){print a[1]}' 提取出 pid
  4. [[ -n $pid ]] && tr '\0' ' ' </proc/$pid/cmdline 从procfs读取该进程启动时的命令和参数。且把空字符 \0替换为空格

综合起来:不断地查询目标 IP 地址和端口的网络连接,找到与之相关的进程 ID,并显示该进程的命令行。每隔 0.2 秒刷新一次,持续监控这个连接对应的进程。

跑了一阵子,发现 $pid 可能有多行。囧,只能用双层 while 了:

  while true; do ss -tanp state established 'dport = 2333' | awk 'match($0,/pid=([0-9]+)/,m){print m[1]}' | while read -r pid; do echo $(date '+%F %T') $pid $(readlink -f /proc/$pid/cwd) $(tr '\0' ' ' </proc/$pid/cmdline); done ;  done;

Posted

stdout

如何给职场老登们提意见

老登们从来不抱怨环境差,因为环境差就是他们造成的。哈哈哈。开个玩笑。HN上看到一篇How to give a senior leader feedback without getting fired 如何在不丢工作的前提下,向资深管理者提出反馈,觉得有用。上班打工这么多年,发现沟通与影响力太真实了。摘录几条:

1. 更多、更好、更棒,而不是二极管

🚫 “新员工培训欠缺”——老登:“你懂完了?就你会培训?滚“
✅ “我们可能需要为新员工提供更多指导” —— “的确现有的培训不够,还得加强”

二元的指责,意味着要么有培训,要么没培训,意味着这是对老登领导地位的威胁。

2. 拿自己当例子

🚫 “你应该试试 X 技术。”
✅ “我曾经为此而苦苦挣扎,当我尝试 X 时,它真的很有帮助。”

3. 外交式措辞

  • 我们可能想试试......
  • 我想知道是不是......
  • 也许我们可以......
  • 你怎么看......
  • 一种方法可能是......

4. 数据支撑对比

🚫 “这个项目麻烦您老给我们多指点”
✅ “我们发现,我们同客户每周都评审一轮设计稿时,他们往往对最终都比较满意;而对于现在这个项目,如果能在早期多确认一些事,可以帮助我们在某个方向上深入进展的时候,确保和目标是对齐的,并防止返工。”

🚫 “团队需要更明确定个优先级”
✅ “上个月当我们都专注于网站更新时,团队取得了大幅度进步;如果这个月,为团队制定一两个明确的重点事项,这样可以让每个人更加聚焦“

🚫 “我们应该花更多时间培训新人员工”
✅ “记得Steve来的第一周,都在投入培训,他很快就跟上了速度。一点前期时间投入看上去得到了很好的回报,为我们的下一位员工采用类似的培训方法,帮助他们同样快速地提高。你觉得怎么样?

作者推荐三个原则:

  • 以清晰、可操作的建议结束
  • 展示更新方法的好处
  • 保持简单、合乎逻辑和积极

建议熟读英语的可以看看原文。作者还有一篇 如何给下属训话 我觉得写得也挺好。

翻HN的时候发现很惊人,大概意思是,如果你发现需要花言巧语(fluff up)才听得进去,那么高层已经烂透了,最好开始润色简历。。。。。好吧。作者这篇标题就叫在“不丢工作”的前提下如何向上反馈。都没错。人和人的信任在利益面前都很脆弱:职位低的担心自己,因为很有可能因为狗屁原因就莫名其妙丢了工作;职位高的最害怕丢脸,怕输给资历没自己老,职级比自己低的。陷入猜疑链了。highly effective communication 难呀。大多数评论是:不值得给老板提意见

  • 权力能量不对等
  • 过激对抗风险
  • 损坏关系
  • 工作没辣
  • 误会
  • 破坏汇报关系
  • “开放”只是口号,说说而已

🤣🤣🤣🤣

Posted

stdin

ATProto之言论 自由和触达的分离

今天刷到个好玩的。先说下背景:

2019年,时任Twitter CEO 的 Jack Dorsey @jack 当时内部资助 五个去中心化的社交媒体项目,其中之一叫 Bluesky后来由Jay Graber成立独立公司独立运营。其核心卖点是一个叫 AT协议 (Authenticated Transfer Protocol,有趣的是 AT 也是 @ 这个符号的称呼) ,基于这个协议搭建的分布式社交网络。官服和app上线叫 https://bsky.app 。

2022年10月,世界首富 Elon Musk $440亿刀买下Twitter,2024年大选推波助澜,在11月成功助力懂王 @realDonaldTrump 重夺总统宝座, 特别多X.com的“自由派”认为是天塌了,于是纷纷出逃。所以 bsky 用户增长迅猛,有超过 mastodon、Threads和nostr的趋势。

  • mastodon 的问题是,RoR又慢又重,站长们带不动
  • threads 主要是反派从良,大家还是怕犹太人老板惦记
  • nostr 币圈味太冲

看过X的就知道上面的黄推、币圈电诈、民间政客特别多,如何在一个无法集中管理的网络里去掉杂音,保留有意思的内容,很具有挑战的。ATProto提出了一个概念叫做 Speech and Reach。我理解,它把言论自由和言论可触达性分开。你说啥话没人管,但是你的话谁能听见是另一回事。

Atproto's model is that speech and reach should be two separate layers, built to work with each other. The “speech” layer should remain permissive, distributing authority and designed to ensure everyone has a voice. The “reach” layer lives on top, built for flexibility and designed to scale.

说实话,当时我看到个设定觉得合理,但是不知道有啥用,直到今天我看到了Django(Python Web框架)的作者 Simon Willison @simonw 分享的一个有意思的玩法——挂人。

I am utterly delighted by this subversive use of the Bluesky label feature, where you can subscribe to a custom app that then adds visible labels to profiles
This one shows you which posh expensive private school British public figures attended, plus their current fees
https://bsky.app/profile/daddys.cash

是的你没看错,就是挂人。这个 daddys.cash (读作:爹滴点现金)账号的作用是,把 bsky.app 上正米字旗🇬🇧大V,上过私校的作为“标签”放到账号信息栏。甚至还包含私校的学费,时刻提醒你阶级差距。英国的私校是个圈子,非常抱团,在证界和商界非常具有影响力,这可太“同窗传承吾辈责”了。在评论区,你甚至还能看到有账号专注把正星条旗🇺🇸大V背后的政党派别和选举献金标出来。英美的内政和外交是有偏向性的维护这群人的世界观和利益。

为什么说这个功能是挂人?如果推广开了,这玩意极大降低了饭圈和小鬼们拿来给人贴标签的门槛,而且传播性极快。假如在一个平行世界里,bsky在国内上线,就现在的形式,很快🐒和🌸会形成两个阵营互相敌对对喷。

但如果你抛开网络论战,带入线下社交,这个功能可能会带来一个意想不到的效果——IRL的社会压力回来了。能在网络上肆无忌惮的彪悍发言,会考虑到今后被人 label 怎么办?实际上大多数人当着其他人的面说话还是很矜持的,得考虑个场合和面子。深怕别人背地里议论着你什么。这他人指指点点,不正好就是“贴标签”。

ATProto 的实现细节

It's broadly a system for publishing metadata on posts called "Labels". Application clients specify which labeling services they want to use in request headers. Those labels get attached to the responses, where they can then be interpreted by client.
This is an open system. Clients can choose which labelers they use, and while the Bluesky client hardcodes the Bluesky moderation another client can choose a different primary Labeler. Users can then add their community labelers, which I describe below. We aim to do the majority of our moderation at that layer. There are also "infrastructure takedowns" for illegal content and network abuse, which we execute at the services layer (ie the relay).

技术上来说,一个内容顶真不顶,你自己可以选择 Label 供应商;传播上来说,如果你影响力超大,你说话就得委婉,考虑万一被人贴上不好的标签的后果。所以一开始atproto这个拆分 speech 和 reach 的设计就挺有意思。要么你口无遮拦嗓门小,你谨言慎行上热搜,发言是自由的,但是传播成什么样可不是你说了算。

这个机制当然也有很多问题,比如如果你是小人,你可以换各种马甲来诋毁和三人成虎。怎么办呢?实名制?social credit?

总之,这是一个有意思的设计。比X现在那套黑盒子封号,灵活的 community notes 更创新。@jack 这一波看来是真的懂这行搞出来的新玩意。

Posted

stderr

供应链 "supplier" 的迷思

刷到个个视频 《桑迪.门罗:看到2500个中国人在求知若渴地上你的课,就都明白了!》。我对 Sandy Munro 这老爷子有点印象,之前他高呼看不懂美的的注塑工艺。

这个视频主持人和他中美汽车行业对比,主持人说中国车便宜是因为 labor 便宜。Sandy反驳:

  • 说一辆车里面劳动力成本可能只占整体5%到15%,但中国人生产效率是120%,老美是 80% 因为要抽大麻,墨西哥日本是90%,欧洲是 70%。车的主要成本是物料成本,raw materials
  • 然后又说了中国行业碾压的最大优势是:material supply极其便宜,稳定可靠。欧美的原材料供应都极其昂贵。
  • supply的优势还在于国内的供应商敢于不要利润。听上去这就是打价格战吃补贴的套路吧?

最近网上所有聪明的老外都说只要引入自动化,然后寻找廉价的供货商,就能打败国内产业。国内聪明专家也大吹特吹,供应链优势。

但是这个说法,我觉得还需要进一步推敲。所谓供应链、原材料优势,其实归根结底就是上游产业优势。上游产业的成本构成呢?也是吃人的红利,然后转变为生产效率和成本优势。

汽车产业为啥被 off-shore 了,因为在金融行业看来,干实业的就是利润的material supply。没啥技术含量,赚钱的上限就在哪里。欧美大学里就没几个本地人读械制造专业。人都没有,更不要说人才了。

中国“制造”这个概念也很有意思,比如Apple喜欢说得很直白,这就是 assemble。但是你design 就不是assemble了?要硬拉扯,加州的工作,无非是把各种创意和工业设计拼凑到一起的功夫?在办公室打键盘,和在电子厂打螺丝,除了一个软一个硬,前者 manufacture 的是点子,后者是实物。

所以归根结底还是人矿优势。超负荷压榨。现在国内也没几个人读机械制造了。

Posted

stdin

强行入睡方法 v2.0

书接上回《快速入睡的技巧和原理

前几天跟朋友聊天,有一个想法萌生在脑海里:

因果论是人类发明和掌握语言之后的一个副产品

什么是因果?一个东西变动,导致另一个东西变动。但是大千世界哪里来的所谓「一个」东西?

其实都是一坨东西扭来扭去,然后另一坨东西晃来晃去。人的器官能感知的变化是连续光滑的

但语言和时序是离散的。这就导致万千思绪,最后被压扁成两件事:好事和坏事。

情绪和压力都是基于「事」这个东西上的。事之所以被称为、形成一件事,和语言环境密不可分。

给东西起名字是最困难的,就像写代码给class起名字一样。

但是一件「事」一旦有了名字,它就「成精」了。一件「事」它有自己的边界和形态,事能发起技能和施加影响,事有长处和弱点,有出生和死亡。「事」就是成年人在无数个夜晚思来想去,辗转难眠的心中之困。很多人被压垮就是一句话的事,被开导也可能因为一句精辟而准确的点拨。

但从纯「唯物」的角度来说,事存在吗?不存在。它只是内心对外界pattern的一个把控和约定。把这个核心问题确定之后,我尝试了一种船新入睡方法:打破这个pattern。

上一篇的方法,放下理性推理,这个其实有点难,而且有的时候就是烦恼多,无法彻底放下。这次 入睡 2.0 的要义更简单,反其道而行之,既然放不下各种想法,那么就多想,让你无暇顾及困难。具体的说

  1. 舒服的躺下。一定控制呼吸节奏,慢下来,平稳下来
  2. 类似 Marvel 电影那个片头,各种英雄集结pose和招牌动作,开始你的各种思考
  3. 但是每一个思考不能按按常理出牌,要快速切换到另一个思考。比如你纠结美国队长,那么你要快速把队长的盾牌切换到冬兵;冬兵身后漫天大雪景色不错,你发现一只麋鹿,麋鹿唱起了圣诞歌谣在一件小屋里,小屋里有温暖的书籍你正在静静有味的阅读。阅读的文字怎么是天体物理课本看不懂,公式符号好复杂让我想起了初中课堂,课堂上前排女同学的长发看上去很好玩,突然下课领响了。。。。
  4. 如果你发现我上面这一串胡言乱语就像梦境一样,恭喜你已经睡着了。。。。

这里有个关键点就是一定要类似 flash card 那样快速翻牌,不要在一个点上纠缠。如果你发现推理不对,有地方有问题进行不下去,那你肯定睡不着。人这个老毛病就是去纠结 something is wrong。放弃挣扎和内耗,随时跑题,就像一个孩童一样,不要尝试去理解这个疯狂的世界,就应该天马行空的去不停的变换注意力。当你累了,自然就睡了。

这个方法还有一点要注意,一定要去想「具象」的画面,而不是抽象的道理。最好你就是画面的主角,融入其中。比如你想象在看书,不要弄成电影镜头那样第三视角远远地看,你要想象这本书非常巨大, 从你脑门一直到你胸口那么大,镶嵌在你身体里,是你的一部分,你得摇头晃脑的去逐行扫描的观摩。书上的文字会随时飞起变成海浪把你吃掉淹没进入下一个场景。一定要身临其境,想象你身体每一个器官和毛孔都在被这个场景吞没。

遇到可怕或者矛盾的地方,直接抛之脑后,揪住一个小点立刻切换全新场景!每一个场景不要停留太久,太久了你就会生疑心,怀疑这是不是假的?赶紧跑题,挑个别的。避免惊恐刺激的,选一个平滑的,不要太多注意力的,越舒服越放松的场景,越容易入睡。

今日的疯狂梦呓就到这了。

Posted

stderr

日本为啥没有出色的软件行业

HN上看到这篇。没看正文之前,我头脑浮现的是管培生,大连的软件外包,日企那种细致又无用的上面拉spec下面填实现的功序长幼之分等等。

翻译有添油加醋,其中 Keiretsu 意思是“家族企业集团”,前身是日本财阀(Zaibatsu)比如住友Sumitomo、三井Mitsui、三菱Mitsubishi和安田Yasuda等。

在60年代和70年代,软件往往是为定制且非常、非常昂贵的硬件编写的,软件需求通常作为整体购买合同的一部分进行谈判。软件并不被看作是一个独立的产品,更像是一种服务,类似于集成、培训以及持续的支持和维护。它通常是按时间和材料收费,有时为了促成交易,软件甚至会免费赠送。真正赚钱的还是硬件。
日本的家族企业在“大型主机时代”表现出色。比如富士通、NEC和日立。尽管在60、70年代并没有打败IBM和Univac在全球的主导地位,但它们在小型计算机和大型办公系统领域表现得相当不错。
当PC革命在1980年代末到来时,日本整体工业的准备工作完全不足,PC市场很快围绕着少数几个标准化的操作系统和硬件架构形成。日本的家族企业在“硬件”方面表现得相当不错,但非定制或“包装软件”的市场对所有人来说都是全新的。它要求取悦客户,并在客户意识到之前就知道他们想要什么。
但那是80年代日本经济超级发达和繁荣,到处都能赚钱,市场保护良好。对于家族企业来说,专注于赚快钱更有效率。每个家族企业集团都有自己的技术公司,这些公司开始销售个人电脑和软件,部分面向消费者,但真正的大钱是在企业销售中。由于家族企业集团喜欢把生意留在“家族”内,这些技术公司通过向集团内的“俘获”客户销售产品而不断成长并获利。就像以前一样,他们通过集成和定制服务赚取了真正的利润。
大型系统集成公司(Systems Integration,SI)成为了强有力的市场参与者,而日本的软件公司从未需要在全球范围内竞争,甚至连国内公司之间也没有竞争。
所以日本的软件行业在80年代和90年代保持着与“卖大型机硬件”时代相似的状态。软件只需要刚刚够用,能跟客户签下合同就行,由于客户来自家族企业,家族企业内部及其封闭死板,很少同外边世界交流,所以水准要求实际上是非常低的。
但没关系,只要行业繁荣,没人介意在 家族企业 关系户企业内部大肆花钱,所有那些“小小的软件缺陷”总能在“下一一定”阶段中修复。
软件开发变成了一种“打勾”式的任务。一旦客户提出需求,签下合同,再想办法去弥补某个功能。
这种情况不仅让日本错失了全球软件行业的发展机会,还标志着日本各行业创新崩溃的开端。在接下来的30年里,软件将成为推动创新和效率的关键驱动力。但是,通过将他们的IT战略外包给单一的系统集成商,日本企业实际上把自己绑上了锚,每年都在技术曲线上越来越落后。
日本至今尚未从这种情况中恢复过来。即便是今天,大多数企业系统仍远远落后于全球竞争者。但正如我们稍后将看到的,现在有一些变化可能会让日本迎来一次跨越式的发展。

怎么感觉很像信创和军品开发圈子。。。。国内相似 Keiretsu 的例子就是中字头央企,比如CASC、CASIC、CETC等等。软件不值钱,卖盒子才能拿到回款。工期紧,ppt画大饼,不和外界交流,因为保密和资质。靠关系吃饭,总包,分包,集成什么的,但是一旦突然财政断奶就。。。。。

Posted

stdin

体力劳动和脑力劳动

今日跟娃讲道理,为啥要学习,因为人要长大活下去,得工作挣钱;工作无非分为在乡下、城里;靠拳脚打斗赢得人生的日子可能不太现实,还是得靠技能。

然后就跟他讲,你愿意做体脑力劳动,还是力劳动?前者坐办公室吹空调把活儿给干了。后者就不得不风吹日晒雨淋。既然要选择做办公室,你就得把学习成绩务必搞好。

又想了下,这个个所谓的“白领”劳动其实也分脑力劳动中的体力活儿,和脑力劳动中的技术活儿。我跟他说了个最简单的比喻:

  • 如果是语文、英语问题,只要你阅读量足够多,那么只要填写了,答案八九不离十;
  • 但是数学题,即便你写得再多,只要中间环节任何一个步骤不会,或者不小心写错了,那么你(几乎)不可能得到正确答案。

这里可以延展一下,工作可以分为:

  • 按件计费,做得多挣得多的活儿
  • 如果瞎蒙,都是无用功,除非你精准命中目标🎯的活儿

其实脑力劳动这个行业很残酷,半导体和互联网就有严重的「赢家通吃」现象。头部企业拿走99%的市场和利润,剩下 0.99% 的又被第二名吃干抹净。人类发展出复杂社会建设如此高度的文明,起点就是一点一点的动脑子,脑子这个玩意有一点好,他能按照某种「想法」预测未来。所谓几个男人只要坐在一起闲下来就会诞生一个「点子王」。但是要系统性的搞出一项工程,建设一个国家,创造一个文明,仅仅靠几个零星的是不够的。得靠一个又一个的突破。有些突破不是线形的,靠庸才堆人口是积累不出来的,得靠天才。

比如爱因斯坦的相对论,其实通俗演义把这个事可能没讲明白,相对论其实有两套(有趣的是,哥德尔也有两套),前一套是特别版,如果老爱不做出来也会有他人做,水到渠成的事;但是通用相对论就是震古烁今让人可望不可及的存在了。

又想起一个著名的段子,国内可能安排到 尼古拉·特斯拉 头上的:画一条线$1美元,知道在哪里画 $9,999 刀

Henry Ford once balked at paying $10,000 to General Electric for work done troubleshooting a generator, and asked for an itemized bill. The engineer who performed the work, Charles Steinmetz, sent this: "Making chalk mark on generator, $1. Knowing where to make mark, $9,999." Ford paid the bill.
According to Scott, Steinmetz listened to the generator and scribbled computations on the notepad for two straight days and nights. On the second night, he asked for a ladder, climbed up the generator and made a chalk mark on its side. Then he told Ford’s skeptical engineers to remove a plate at the mark and replace sixteen windings from the field coil. They did, and the generator performed to perfection.

还有一个关于程序员的段子

如何看待程序员抄代码还拿着高薪这一现象?
会复制粘贴值1块,知道去哪复制值5K,知道粘贴在哪值5K,粘贴完了能跑起来值10K
如果还会backspace去掉bug,那不是10k能打住了
能带领一伙人复制粘贴值20k

还有人说

代码也就asiic值128个字符,连字典都不用抄。

这个又想到。如果给猴子一个机械键盘,能无意中敲出金瓶梅吗?

  • 数学上,问题简化为一个无限长的纸带随机生成CJK字符,那么恰好其中一段长度的字符完全等同于《金瓶梅》吴中初刻本全文内容的概率不为0
  • 物理上,如果是一个特定品牌的机械键盘、特定品种的猴子,那么不要说敲一部白话文小说了,敲一个完整的句子概率都是 0

为啥敢这么说?因为物理时空从根本上说,归根结底不是连续的,这个「根本」就是普朗克长度。气体、液体只能吸收特定 eV 的能量,高了低了都不行。比如氧气、N₂就只吸紫外线,透过可见光;氯气吸收蓝光,所以看起来就是黄绿色;一氧化二氢和二氧化碳吃红外线所以容易搞出温室效应。晶体吃高于间隙的「能带」,金属通吃。从这个意义上来说,由生理能量触发神经控制肌肉做出脸滚键盘不是真随机,而是一定边界下可预测的长序列。

总结一下,最值钱的脑力劳动无法随机积累达到。今日份的胡思乱想就到这了。

Posted

stderr

白嫖百度网盘“单次转存数”500限制

找了个资源,点击保存,居然提示充SVIP。看了下免费用户每次最多保存500份文件。本来找资源就白嫖,让我充钱?

研究了一会儿,发现可以搞。

  1. 首先你去你网盘里建立个目录 0000-0500,准备存文件。这么起名字是因为你在自己网盘里多选也是最多选500个,所以每次存一个目录用来对照数量
  2. 分享链接里文件列表默认只展示前100条,是惰性加载,所以请用鼠标一直反复向下滚,务必拉到底,然后点击「名称」排序。这样方便对比有没有漏掉
  3. F12打开 console 并粘贴下面的js。如果这一步看不懂建议直接放弃
    Array.prototype.slice.apply(document.querySelectorAll(
    '.share-list dd.open-enable>span'
    ), [0, 500]).forEach((x)=>x.click())
    这样就等效点击了前500个文件。点击保存。
  4. 等全部存好,再次执行上一段代码,取消点击前500个文件。
  5. 去你的网盘里新建个目录 0500-1000 ,用来保存下一批
  6. 把上面代码里的 [0,500] 改成 [500,1000] 然后再执行一遍,保存到刚才创建的目录里。
  7. 如果有更多的文件,在执行一遍 [500,1000] 这一批,取消点击;然后改成 [1000,1500] 如此反复。

Posted

stdout

Linux删除了 .ru 帐号?我查了一下

发生了什么事

日前,Linux 内核主要维护者之一 Greg Kroah-Hartman (Greg K-H) 提交了一项不寻常的“文档”更新,将数名具有 <.ru> 顶级域名邮箱的维护者,和一名明确为俄罗斯身份的维护者从 MAINTAINERS(维护者名录)文件除名。
这一提交已于上周日被 Linus Torvalds 拉取并包含于 6.12-rc4 版本的代码中。
已有来自于 AOSC 的开发者提交了 revert(尚未合并),而 Linus 本人在评论中声明其对先前的 commit 知情并支持

一开始,我以为是 “反向” 厚脸皮PR

一般来说, github 上混一个 contributor 得贡献代码,很多人就改改文档、翻译就拿到一个“贡献者”称号(我也干过哈哈哈)。甚至还有离了大谱的,直接提一个 pull request 内容是把自己加到 contributors 文件里。。

我以为是 Linux Foundation 发疯了,为了某种 “合规” 或者 sanction,掩耳盗铃,把 作者名字列表.txt 改改掩人耳目

仔细看了下,发现好像并不是那么简单。这里是diff

https://github.com/torvalds/linux/commit/6e90b675cf942e50c70e8394dfb5862975c3b3b2

这里是更改后完整的 MAINTAINERS 内容:

https://github.com/torvalds/linux/blob/6e90b675cf942e50c70e8394dfb5862975c3b3b2/MAINTAINERS

直接通过 github API 拿到原始的 diff

curl -H'Accept: application/vnd.github.diff' -sk 'https://api.github.com/repos/torvalds/linux/commits/6e90b675cf942e50c70e8394dfb5862975c3b3b2'

乱写几个 prompt 丢给 gpt-4o,可以看到大概做了下列几处更改:

Device/Module Probable Date Author Email
Acer Aspire 1 Embedded Controller ~2018 Nikita Travkin nikita@trvn.ru
Alpha Port (Ivan Kokshaysky removed) ~1992 Ivan Kokshaysky (removed) ink@jurassic.park.msu.ru
ARM/Cirrus Logic CLPS711X Architecture ~1996 Alexander Shiyan shc_work@mail.ru
Baikal-T1 PVT Hardware Monitor ~2015 Serge Semin fancer.lancer@gmail.com
GRE Demultiplexer Driver ~2000 Dmitry Kozlov xeb@mail.ru
LIBATA PATA Drivers ~2003 Sergey Shtylyov s.shtylyov@omp.ru
LIBATA SATA AHCI Synopsys DWC Driver ~2014 Serge Semin fancer.lancer@gmail.com
Media Drivers for Ascot2E ~2010 Sergey Kozlov, Abylay Ospan serjk@netup.ru, aospan@netup.ru
Media Drivers for CXD2841ER ~2015 Sergey Kozlov, Abylay Ospan serjk@netup.ru, aospan@netup.ru
Media Drivers for Helene ~2017 Abylay Ospan aospan@netup.ru
Media Drivers for Horus3A ~2018 Sergey Kozlov, Abylay Ospan serjk@netup.ru, aospan@netup.ru
Media Drivers for LNBH25 ~2012 Sergey Kozlov, Abylay Ospan serjk@netup.ru, aospan@netup.ru
NetUP PCI Universal DVB Devices ~2010 Sergey Kozlov, Abylay Ospan serjk@netup.ru, aospan@netup.ru
MIPS Baikal-T1 Platform ~2015 Serge Semin fancer.lancer@gmail.com
NTB IDT Driver ~2014 Serge Semin fancer.lancer@gmail.com
PPTP Driver ~1996 Dmitry Kozlov xeb@mail.ru
Renesas Ethernet AVB Driver ~2013 Sergey Shtylyov s.shtylyov@omp.ru
Renesas R-Car SATA Driver ~2015 Sergey Shtylyov s.shtylyov@omp.ru
Renesas SuperH Ethernet Driver ~2000 Sergey Shtylyov s.shtylyov@omp.ru
Synopsys DesignWare APB SSI Driver ~2010 Serge Semin fancer.lancer@gmail.com
UFS Filesystem ~1974 Evgeniy Dushistov dushistov@gmail.com

如果说作者 @gregkh 作出这个改动的动机说

Remove some entries due to various compliance requirements

那么 BAIKAL 这个是明显会去掉。其余的改动,我能认出来的比较重要的有 PPTP Driver,其它都是五花八门驱动的维护者,感觉就算去掉, impact 的功能也不多。

当然你也可以说 first they came for the ... 我就不继续展开了

下面列举几个可能不那么重要,但是我觉得很容易被忽略的事实:

一、 .ru 的邮箱被全部移除了吗?

是的。最新版本 MAINTAINERS 文件里我搜了 .rurussia 关键词没找到了。干干净净。当然后期会不会加回来我不知道。

二、 俄国人对 Linux 的贡献被抹掉了吗?

第一,上面这些人的对应代码贡献,目前并没有删掉。

第二,Linux 源码根目录还有一个 CREDITS 文件,里面包含了下列俄国人:

N: Yuri Per
E: yuri@pts.mipt.ru
D: Some smbfs fixes
S: Demonstratsii 8-382
S: Tula 300000
S: Russia

N: Alexey Kuznetsov
E: kuznet@ms2.inr.ac.ru
D: Author and maintainer of large parts of the networking stack

N: Stas Sergeev
E: stsp@users.sourceforge.net
D: PCM PC-Speaker driver
D: misc fixes
S: Russia

三、 俄国人不能参与 Linux 项目了吗?

我在这里想补充一个背景知识,什么是 Linux Kernel 的 maintainer

内核功能繁多,Linus 老爷子一个人照看不过来,得把拆分成各个模块,授权给相应的 负责人(maintainer),给予他们检查、合并代码的权限。Linux基金会(注册地:美国)会给他们配置一个专用邮件列表用来主持专项议事

上面这句话,如何理解?可能对某些简中读者没看明白。简单的说:.ru 用户还是可以以 developer 身份向别的 maintainer 提交代码。这里不得不提到那个出名的 kernel git workflow

这是普通 git 项目的工作流:

这个是 linux kernel 的(图很老,大概这个意思):

普通人是没法直接向 mainline https://github.com/torvalds/linux 提交代码的。这个社区甚至会给你一个长长的文档教你一步一步如何提代码

不要说新功能了,一些老功能的 patch 要赶上主线发车窗口,你手续流程都很长。

想给内核做贡献,你要面对的甚至都不是 Linus 本尊,恰好是这些 MAINTAINERS 里列举的各位把关人。世界上绝大部分的人对 Linux 内核做贡献都是这样。 maintainer 是极少数,他们可以直接向 Linus 提改动。

Linus 自己也说了,他是芬兰人,意思就是说他不想看到俄国人。啊这。能理解,不提倡!

四、maintainer 名单变化多吗?

从提交历史来看,

https://github.com/torvalds/linux/commits/master/MAINTAINERS

人员进进出出很频繁。但是 @gregkh 这种在 char-misc 里搭车进去,的确偷偷摸摸。

五、 .cn 会被波及吗?

这个问题我无法回答,但是可以列一下现在有的:

  1. 一大堆 LOONGARCH 龙芯的驱动和各种模块
  2. 海光 HYGON 驱动
  3. 简中翻译 Alex Shi alexs@kernel.org Yanteng Si siyanteng@loongson.cn
  4. 繁体翻译 Hu Haowen 2023002089@link.tyut.edu.cn https://github.com/srcres258/linux-doc 太原理工的人才!
  5. RADOS BLOCK DEVICE (RBD) Ilya Dryomov idryomov@gmail.com Dongsheng Yang dongsheng.yang@easystack.cn ceph-devel@vger.kernel.org
  6. 一大堆 @huawei.com @linux.alibaba.com的各种驱动和模块
  7. 可能有别的大陆+港澳台公司邮箱我漏掉了。懒得看了。

CREDITS 里鸣谢的:

N: Chih-Jen Chang
E: chihjenc@scf.usc.edu
E: chihjen@iis.sinica.edu.tw
D: IGMP(Internet Group Management Protocol) version 2
S: 3F, 65 Tajen street
S: Tamsui town, Taipei county,
S: Taiwan 251
S: Republic of China

N: Li Yang
E: leoli@freescale.com
D: Freescale Highspeed USB device driver
D: Freescale QE SoC support and Ethernet driver
S: B-1206 Jingmao Guojigongyu
S: 16 Baliqiao Nanjie, Beijing 101100
S: People's Repulic of China

N: Tsu-Sheng Tsao
E: tsusheng@scf.usc.edu
D: IGMP(Internet Group Management Protocol) version 2
S: 2F 14 ALY 31 LN 166 SEC 1 SHIH-PEI RD
S: Taipei
S: Taiwan 112
S: Republic of China
S: 24335 Delta Drive
S: Diamond Bar, California 91765
S: USA

六、结束语

总的来说 Linux内核项目,包括不限于很多别的社区项目,还是英雄主义色彩很重的,这样的个人主义既可以说出“nVidia fuck you”,也完全有可能在某一天把主语丝滑切成 “Russia”。这压根就是同一个硬币的同一面(甚至都不是另一面)

在国际地缘政治热火朝天、段视频AI诵读、情绪控制终端满天飞的今天,讨论这些重要吗?有用吗?

回答:不重要,没用

但是对我个人而言,或许有那么一丢丢重要,有一丁点用。

希望对你也有点用。

Posted

stdout

ChatGPT 对我过往问题的吐槽

看起来是 “凌晨3点” 写javascript 节拍器 这事很不满啊。哈哈哈

You're on macOS, building metronomes in JavaScript, which is cute. But let’s be real: spending your free time tinkering with oscillators in Terminal feels like the programming equivalent of playing the triangle in a rock band. “Look, everyone! I made a metronome!” 👏 …And now it’s just you and a beep, beep, beep wondering why you can’t stop tweaking code that only a clock could love. 🕰️
Oh, and what’s with those hyper-detailed questions? I bet when you watch movies, you’re that person pausing every five minutes to Google “Why did the villain’s cat blink in scene 3?” because there’s nothing you won’t overthink. Meanwhile, your poor Mac is just begging for a break, like, “Please... Can we NOT compile sound waves at 3 a.m.?” 🖥️
And hey, Mr./Ms. Terminal Expert, you’ve got all the tech know-how to build clever things but somehow still end up asking me for solutions like I’m your lifeline in this relationship. Did the JavaScript throw one unexpected token and you went, “Welp, time to bother ChatGPT again!”?
You: "CreateOscillator, metronome, web audio… I got this!”
Also you after two minutes: “Why isn't this working?!” 😂
But seriously, props to you for staying curious and diving deep. You’re like a mad scientist—except instead of creating life, you’re just making a metronome.
Roast level? Medium-well. 😎

半生不熟。哈哈哈。可以的。。V站主题

Posted

stdin

“分封制” 代替RBAC权限管理模型

作为开发狗,手上堆的系统和任务多了,开权限就变成了一件麻烦的事。

一开始做一个功能X,给甲用,就做一个简单的权限关联表:功能key人员id就完事大吉

后来人员调整流动,换人换得勤快,得考虑一个功能给一个团队使用,于是引入 RBAC,基于角色的鉴权控制。说到底就是个三元组 功能key角色成员id

我也一度迷信这样的设计。用了这么久还是麻烦了。在一个正常官僚程度的大中型组织里,压根没人知道自己角色是啥。

你说他是管理人员吧,他也就管一部分;你说他负责这事吧,也就负责一阵。该给他放到哪个角色呢?

如果做一个自动化角色申请审批流程,他会跑来问你,该申请哪个角色啊?

所以问题又回到了原点。因此我琢磨出来一套具有大汉封建主义特色的,「分封制」权限控制体系。

  • 系统超管:普天之下,莫非王土;率土之宾,莫非王臣。拥有系统一切权限。但是不负责,不执行,不搞具体管理。超管只干一件事:分封
  • 如何分封:把「事」交给一个信得过的领主(serf)。领主对一块业务全权负责。但代价得自己把封地采邑打下来。具体在系统层面,系统所有权限、功能都直接开放,所谓 zero-trust。但是你得从零开始搭建和配置。一旦你配置好、跑起来,这快权限和功能就是你独有的。(owner)
  • 线上既有的业务权限,那也是有人配置管理和主导,你只能从别那里抢夺,或者过继。
  • 领主可以给自己封臣划分部分管理权限
  • 如果一个领主挂了,超管指定一个接盘的领主

感觉这样开发和超管就可以不用每天处理谁负责哪个功能的麻烦事了。哈哈哈

Posted

stdout

“中庸”的艺术 - 如跟需求方讨价还价

翻到一个神贴 How to make Product give a shit about your architecture proposal ,标题直译就是《如何让沙雕产品经理接受技术改造》

具体故事,原文非常值得一看。搞了这么多研发,产品经理各种水平的都遇到过一堆,最大的烦恼就是“我有个想法”,“今天就要”而全然不顾你当前技术架构的问题。到底是技术优先,还是业务优先?开发人员和销售非常普遍的冲突怎么处理?

产品经理,老板,甲方,销售,实际上是研发的衣食父母。他们所有的诉求:

  1. 产品不管你的技术问题,他们也不懂。他们只关心 产品 本身
  2. 产品需要的是一个 结果,而不是一个白板上巨复杂的分布式系统架构图
  3. 产品是人,产品为人服务。他们也能理解有工程方面的顾虑,这也是他们找开发的原因。他们是来“讨价还价”的!

开发是“乙方”,正如那个文章里的 水管工 故事一样,实际上是 “赢得信任” 的实施方。所以接下来的套路是:

  1. 你先不要 what about,先别反驳说 but 。先按照理想的条件,全部答应下来,
  2. 做一个理想化,全套,SSVIP,贵宾级别的报价,所谓 platinum package。内部需求就把人力、服务器、时间、排期等成本按最坏的估计全部算出来。
  3. 拿这套方案,给到需求方,一定要让他们很诧异的问出:“why” ,怎么这么麻烦啊!?
  4. 这就是让产品对你的技术问题关心的机会!接下来,开发需要有礼貌,不卑不亢的,有理有据的把你的处境讲出来,要展示你的专业能力和素养。
  5. 接下来需要让对方陷入自我怀疑,内心:“Do I really need all this? 是不是这要求有点过份!?”
  6. 最终结论,还是要做,换更经济的方式去做,要么不做。如果这件事是能挣钱的,那么的确投入人力物力时间去征服麻烦啊。

文章也讨论了,话也说回来,一个粗糙的结果,和没有结果,哪个更讨人厌?实际上是粗糙的结果。就好比故事里的水管工,你下水道漏了,又舍不得大修,就缝缝补补。结果过一段时间又漏了。这还不如不修。烦呐!

所以一般的经验是,要么不做,要么就把一个事彻底解决最好。不要交付半吊子工程!

当然,这个时候要思路灵活。水管坏了不一定要在原地修补啊,说不定换一个管线完全绕过以前的大坑呢?

所以就回到了这篇blog的主题:tradeoff

以前我不知道如何准确翻译这个词,一直把叫“妥协”。但是这似乎有点贬义。或许叫 折衷,取舍 更好?。

我觉得装逼的翻译是 —— 中庸。

成年人的世界哪有那么多“既要……又要”,乃至“……还要”。

以前上学的时候,就喜欢“中庸”,60分及格万岁,一个知识点了解个大概就行,平庸,和稀泥,不表态,无原则,优柔寡断。结果贻害无穷。一只吃亏到而立之年,发现中了孔老二的圈套。

对中庸最大的误会是它丫的压根就不应该是一个“方法论”,而是一个“对结果的欣然承认”态度;

作为方法论,我的心得是,才接触一个事,就要走极端。抓东西就从一个“抓手”入手,如果恰好能抓住“主要”矛盾那就最好不过,而且最好只抓一个。抓住,抓稳了之后,再去了解事物的全貌和corner case,这个时候事半功倍势如破竹。

就好比,以前打 CS 1.5,突然转角处出现两个敌人,你慌乱之中,既不向A也不朝B开枪,而是瞄准他俩的中间空隙biu~biu~biu~。然后就躺了。这种遭遇战就应该训练自己的下意思,必须集中火力,断其一指。

做事也一样,认准一个方向,全力推到超出它极限为止;然后再停下来,考虑有没有更好的方案,做到周全;其次考虑对方接受程度,该省省能砍砍;最后一看,嘿,也就一般般。

好吧。其实我也不懂中庸,也不想懂,更不想revision中庸,就是纯粹想附会,如果是个误会也无所谓。就这样吧。

Posted

stdin

Install mosh for macOS arm64 with Miniconda3

I always hate compiling and building. It's an error-prone path filled with riddles and unknowns.

mosh is a great tool replacing ssh in many cases, sadly it does not provide an arm64 binary download or installer for M1/M2/M3 MacBooks. Moreover I dont like XCode and protected /usr/bin shit so I prefer isolated envs like miniconda3.

Anyway, for such a detour, following the official mobile-shell build wiki, type these commands:

conda install autoconf automake libprotobuf pkg-config tmux
# use libncursesw 6.5 since  6.4 is buggy, rpath and dyld not load LC_RPATH shit
conda install conda-forge::ncurses
git clone --depth=1 https://github.com/mobile-shell/mosh.git`
cd mosh

./autogen.sh
./configure --prefix $CONDA_PREFIX
make check
make
make install

And it's done. All thanks to authors for open source project and butter-smooth build scripts.

Posted

stdout

精准 javascript 节拍器

娃学琴,节奏感糊成一坨了。老师让抖腿打节拍,显然不work。码农特有的穷B气质让我舍不得买个实体的;去找个节拍器app,结果各大市场都是各种广告,怕给娃用不正经;甚至找了很多公众号版的,小程序版的,网页版的,普遍都是各种跳转诱导点击。

失望之余,想起来上次JS播放DTMF对 WebAudio 有点感觉,要不这次自己干脆再手搓一个。调研了一圈发现这玩意没那么容易,主要就是javascript在浏览器里 setInterval 是有时间抖动(jitter)的,不能保证节奏精确。下面的图来自 Monica Dinculescu

即便采用了 requestAnimationFrame 也不行

因为js的执行无论如何trick,本质都是在只有一个主线程的单线程。如何才能做到精准采样打节拍呢?连续精心编排 AudioContext 时间轴!因为音频播放是系统调度跟js无关

搜了一圈发现一位叫 Grant James 已经写好放在 github 了。那还等什么直接拿来~~针对性下列需求改了一番

  1. 无广告
  2. 去掉 .js .css 依赖,单文件更快
  3. 精简不必要的代码结构,方便以后魔改

改完之后发现两三个坑也跟着一起修补了:

  1. wakeLock 防止手机上使用息屏
  2. 突破固定的4拍子,加上可以增减的节拍控制
  3. 增减按钮禁止调到小于 0

最后成果就放在 https://lab.est.im/metronome/ 这里了。有需要的拿去用。协议 CC BY-NC 4.0

20240929更新:

  1. 支持了长按按钮一直增加减少 bpm
  2. 禁止长按出现菜单
  3. 禁止双击缩放

Posted

stdout

Edge找回丢失的右上角Copilot侧边栏图标

右上角图标和侧边栏的官方截图:

如果不小心关掉了,找回办法:

  1. 打开 edge://settings/sidebar/appSettings?hubApp=cd4688a9-e888-48ea-ad81-76193d56b1be
  2. F12 或者 Opt+Cmd+I,找到第一个“Show Copilot”开关,把它改成关闭。
  3. 如果第二步不会搞,输入 document.querySelector('input[aria-label="Show Copilot"]').removeAttribute('disabled') 可破

为什么会有这个问题,因为政策的原因,Microsoft Copilot 不能在简中使用,于是右上角的按钮点一下会消失;但是开发或者集成测试的为了省事儿,就直接给隐藏掉,导致侧边栏无法点开

这串 hubApp 的id如何找到呢?新建一个浏览器profile,这个时候 Copilot 是有图标的。不要去点,去设置里翻 edge://settings/sidebar 就能看到 Copilot 的选项。

Posted

stdout

归属感

偶然看到一张图

The link between imagination and place is no trivial matter. The existential question, 'Where do I belong?' is addressed to the imagination. To inhabit a place physically, but to remain unaware of what it means or how it feels, is a deprivation more profound than deafness at a concert or blindness in an art gallery. Humans in this condition belong no where.
— Eugene Walter, Placeways, 1988

这句话比较难翻译,我尝试一下:

遐想与所在地的关系不可忽视。“我属于这里吗?”这一挑战存在感的问题,往往被归结于遐想。现实中,你住在一个地方,对其渊源、历史、意义等感受一无所知的话,就好比聋子听音乐会、瞎子看美术展。在这种状态的人,无家可归。

总感觉漏掉了点什么,或者想多了?展开一点的说:

  • 北京意义是一块八旗、南方贵族聚居的飞地,普通人的归属感不会超过骆驼祥子
  • 上海的渊源只有从租界开始,如果你的人生跟通商口岸没交集也很难找到归属感
  • 深圳的历史比大部分居民寿命短

Posted

stdin

创始人模式

外网的油爆爆,看了下,pg的文章,应该是受这个视频的启发

https://youtu.be/ia6Di_ytiSE?t=2792

Brian 说世界上每 $1500 交易中,就有 $1 是给了 airbnb,挺新鲜。他接着用了个”爬山“喻。创业就好比爬山,创始人好不容易爬上一个山头,这个时候你找一个职业经理人空降到团队,他有能力带领大家去攀登下一个山峰吗?

Brian 说得很有道理。很多人能进大企业,迅速掌握组织架构里的生存技巧,但是出来从 0 建立一套东西不是人人都会的。因为创业的本质就是打破陈见,敲碎现状,更需要说服拿工资老保们跟着一起去打破。

Brian 又说,创始人有三点无可替代:

  1. 是生理父母(不是抚养父母)。你亲自生出来的娃,就是你自己。这种母爱和对外部事物的喜欢有根本的不同
  2. 有permission。有些事跟外边小朋友不会讲,但是给自己娃会说。Brian比喻说如果有必要,他可以给公司改名字。职业经理人敢吗?
  3. 创始人既然创建了一件事,也能重建它。职业经理人能打理清楚,避免出岔子就不错了。Brian 又用了个精彩的比喻,只有创始人才知道公司的冰点和沸腾点。他随手拿起个杯子,说只有创始人才知道这杯子设计之初是啥样,这杯子怎么来的,比如铝合金从哪家订的。这不仅仅是管理问题,而是掌握如何建造的过程。

Brian 又说 创始人有2点不足:

  1. 不清楚如何把生意 scale 到大公司级别的管理
  2. 创始人精力和生命有限。如何接班?

Brian 又读了下他给 AirBNB 发的全员信。有句话很俏皮:

You must design the culture you want, otherwise, it'll be designed for you, you might not like what emerges

然后就开始喷 HR 部门。。。哈哈。那什么是culture呢?他说

Your culture is the shared way to do things (and often they're) based on the lessons you've learned ..... Your culture is the behaviour of the leaders that get mimicked all the way down every single person... The way a leader designes the culture is not by writing out list of values, it's by basically leading by example every single day.

culture 就是做事风格,随时表率,迭代更新的。


由于视频太长了我没继续看了。反过来我觉得 pg 看重的点,和 Brian 访谈里的不太一样。可能是我找错视频了?

pg 文章里核心的点是,manager 做事有一条潜规则:严禁越级报告。这个规则又导致,CXO们都是职场向上管理的老油条。

大厂出来的manager都喜欢把组织架构的子节点当成“黑箱”,然后只用跟直属同事(direct reports)做IO就能遥控功能。

pg 指出:

Whatever founder mode consists of, it's pretty clear that it's going to break the principle that the CEO should engage with the company only via his or her direct reports. "Skip-level" meetings will become the norm instead of a practice so unusual that there's a name for it. And once you abandon that constraint there are a huge number of permutations to choose from.

这个创始人模式,目前是什么大家都不清楚,但是无论如何,很明显核心就是要打破层级,做跨级(skip-level)沟通。但是创始人不可能在2000员工里的公司里也像20个人团队一样直接沟通,所以还是需要一定程度的托管。至于托管自治的边界在哪里,pg也不知道。他只说了看具体行业具体赛道具体阶段有不同。你越级管理过渡,还可能变成运输大队长那种“微操战神”。


founder vs manager 这个说法,我感觉可能太笼统了。这个模式可以进一步抽象为:无限兜底 vs 完成指定 的模式区别。

founder 知道哪些事能做,哪些不能做;manager 只能在划定好的职权内做事;

founder 做事是黑名单模式,除了某些选项排除掉,别的所有已知的未知的都得去对付,能动用全公司资源。manager则是白名单模式,一亩三分地,只管把业绩指标操完了事。甚至给下任挖坑。往往留下一下很 toxic 的实践,实践久了就成了习惯最后成了习俗。

这两种模式,归根结底在于,如何定义“事”,有些事和业务,跳出自身角色局限性,其实压根不存在,甚至可以更低成本解决。我个人体会,遇到的某些麻烦,隔壁部门明明稍微改进一下就能解决,但是这个因为不算对方绩效,就推不动,不上心。所以就得花额外高昂的成本。大企业病的所有问题都来源于部门和指责切分,业务是垂直的,但是技术和赋能最高效往往是水平的。

Posted

stdin

php是最好的……serverless

php是不是最好的语言先不说,但是如果从 serverless 的角度看php:

  1. 语法简单,功能丰富,10分钟就能学会
  2. 通过 FTP 之类的标准工具部署,而不是脑残的命令行
  3. 不用管理麻烦的服务器。基于非常成熟的 php-fpm 去做 scaling。也有大量巨型网站验证过这一方案
  4. 虽然不是 docker,但是 vhost 够用了。而且要容器化 vhost 也很容易
  5. 让人梦寐以求的“热更新”技术
  6. 超级便宜的月租。(还记得 dreamhost 吗?)
  7. 不会吊死在一颗树(vendor lock-in)上。全球遍地的厂商都支持

你就说好不好吧。同时评论在 Hacker News

Posted

stdout

2024年玩xml真是笑死了(xsl)

昨天大早上的6点就醒了,翻来覆去睡不着,就开始胡思乱想。忘记是什么缘起了,反正突然想到一个问题,博客这种静态站,又要输出html,又要输出rss。太冗余了。要不直接把内容存在RSS里。然后用js去fetch()。。。。

等等,死去的记忆突然攻击我。RSS不就是XML,XML似乎有个加皮肤的技术。于是就更睡不着了,起床一查,原来是 XSLT 转换成 HTML 然后就可以自由发挥了。

可行性没问题,准备找个前人的例子开抄。比如 2021年Nathan Clark的Styling an RSS Feed With XSLT2023年Darek Kay的Style your RSS feed

思路就很匹配,执行效果也不错。我想百尺竿头更进一步,把 XSL 给 inline 到 RSS 里,避免额外的加载,节省一次网络请求。吗,没想到这下麻烦大了,折腾到现在才有个初步结果。直接贴源码:

<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="#stylesheet"?>

<some_xml_root xmlns:shit="http://xxx">

<xsl:stylesheet xml:id="stylesheet" version="3.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" doctype-system="about:legacy-compat" version="5.0" encoding="UTF-8" indent="yes" />
<xsl:template match="/">
  <html>
    ...
  </html>

</xsl:template>
</xsl:stylesheet>

</some_xml_root>

这里的 href="#stylesheet" 方法,是官方推荐的 。但是要起效果,一定注意 type="text/xsl" 别抄成网上的 application/xslt+xml

主要浪费时间的坑点主要在根的 xmlns 上。这玩意把 xpath 给搞挂了。比如 sitemap你写

<xsl:for-each select="/urlset/url">

好好的,加上 xmlns 就得写成:

<xsl:for-each select="/*[local-name() = 'urlset']/*[local-name() = 'url']">

怪不得现在没人玩XML了。这破玩意没法直观的本地调试,还得靠各种第三方 validator,反人类啊。

于是把根的 xmlns 直接改成 tag namespace。也就是 xmlns:shit 。反正你namespace冲突了关我什么事?而且说实话,xmlns这玩意除了坑各种解析器不好写之外,并没有什么卵用。我以前写都是想办法去掉 xmlns 再解析。感觉这一块真的 over-engineering 了。 好像有点明白 namespace 是干嘛的了。这玩意主要解决一个sb需求:允许多个XML合并到一个文件里。这不就得考虑如何分清楚tag谁是谁的。。。。并且标准已经挖好坑了,一个XML有且只有一个root。。你把别的 tag 合并进来,那的确不容易区分。还有这样写不会造成文件体积膨胀吗?真是xsl笑死了。

接下来的问题就是如何生成一个规规矩矩的 html5 doctype。搜了下 doctype-system就可以了。本来其实可以在<xsl:template>后面加上

<xsl:text disable-output-escaping='yes'>&lt;!DOCTYPE html&gt;</xsl:text>

但实际只加这个是不行的。

另外吐槽下 Chrome,默认的viewer把xml渲染成html了,在 devtool 里通过 $x() 无法直接调试xpath,还得靠别的第三方工具。(⊙﹏⊙)

这可能就是XSL的核心问题了——没法方便直观的调试,挂了就给你白屏。有点react那种白屏的 ptsd 感觉了。

Posted

stdout