文摘-24年9月

Founder Mode

Paul Graham 指出,传统的扩大公司的方法论并不完全适合创业公司。有人会为创始人提供很多如何扩大公司的建议,但一些听从了这些建议的公司陷入了灾难。

Paul Graham 认为创始人常常收到错误建议,原因在于这些方法是根据职业经理人的做法总结的。而创始人往往具有超能力,能做到职业经理人做不到的事情。如果创始人没有运用超能力,就会感觉不对劲。这就是症结所在。

作者的结论是 1.存在两种模式:创始人模式和职业经理人模式
2.创始人模式可能比传统的职业经理人管理模式更有效,即使有时会显得很古怪,甚至让创始人陷入煤气灯效应一样的迷茫,但如果真正实践创始人模式,或许可以实现乔布斯一样的成就。

为什么 FastAPI 适合用 Uvicorn

TL;DR:Uvicorn 很适合 FastAPI。如果使用 FastAPI,建议首选 Uvicorn 作为 ASGI Web 服务器

FastAPI

FastAPI 是一个 Python 框架。

WSGI&ASGI

WSGI (Web Server Gateway Interface) Servers 是一种 Python Web 服务器技术,它定义了 Web 服务器和 Python Web 应用程序之间的标准接口。WSGI 服务器为不同的 Python Web 框架和 Web 服务器提供一个通用接口,增强互操作性。WSGI 服务器接收 HTTP 请求,将其转换为 WSGI 环境,调用 Python 应用,然后将响应发送回客户端。

ASGI(Asynchronous Server Gateway Interface,异步服务器网关接口)是 WSGI 的精神继承者,旨在在支持异步的 Python Web 服务器、框架和应用程序之间提供标准接口。

WSGI 是同步的,每个请求在处理完成前会阻塞线程。而 ASGI 则为异步和同步应用程序提供了一种标准,具有 WSGI 向后兼容性实现以及多个服务器和应用程序框架。

Uvicorn

而 Uvicorn 是一个快速的 ASGI web 服务器,专为 Python 设计。

为什么FastAPI适合用Uvicorn

  1. FastAPI 主要设计用于与 ASGI 服务器一起使用,而不是 WSGI 服务器。FastAPI 也需要一个 ASGI 服务器来运行。Uvicorn可以提供异步支持。FastAPI 重度使用 Python 的异步特性。Uvicorn 作为一个异步服务器,能够充分发挥 FastAPI 的异步性能。
  2. Uvicorn 是一个非常快速的 ASGI 服务器,它基于 uvloop 和 httptools 构建,这两者都是用 Cython 写的高性能 Python 网络库。
  3. 开发便利性:
    Uvicorn 提供了热重载功能(通过 –reload 参数),这在开发过程中非常有用,可以实时看到代码修改的效果。热重载是指,在开发过程中,当你修改代码后,服务器能够自动检测到这些更改并重新启动,使新的代码变更立即生效,而无需手动停止和重启服务器。热重载功能可以大幅提高开发效率。
  4. 轻量级,且易于使用:
    Uvicorn 是一个轻量级服务器,不会给应用增加太多额外的复杂性或开销。Uvicorn 使用很简单,几乎不用额外学习即可上手。通常只需一行命令就可以启动 FastAPI 应用。

对比其他 ASGI 服务器:

Daphne或许更适合Django,不是 FastAPI的最佳选择。
Hypercorn 性能可能不如Uvicorn,配置可能相对复杂。
Gunicorn (with Uvicorn workers)。Gunicorn本身是一个WSGI服务器,但它可以使用Uvicorn workers来支持ASGI。主要缺点也是配置更复杂一点。

参考链接:ASGI Documentation

Full Stack Python

文摘-24年8月

原来「李沐」停更去创业了。
https://www.bilibili.com/read/cv37076357

22年年底的时候想到两个用大语言模型(LLM)做生产力工具的想法。碰巧遇到张一鸣,就向他请教。讨论之后他反问:为什么不做LLM本身呢?我的下意识退缩:我们之前在Amazon的团队做了好几年这个,得上万张卡,和blabla这么一大堆困难。一鸣呵呵表示:这些都是短期困难,眼光得看长远点。

有了钱后就去买GPU。问各个供应商,统一回复是H100交货得一年以后了。灵机一动,直接给老黄写邮件。老黄秒回说他来看下。一个小时后超微的CEO就打电话过来了。多付了些钱,插了个队,20天后拿到了机器。很荣幸早早的吃到了螃蟹。

螃蟹吃到怀疑人生,遇到了各种匪夷所思的bug。例如GPU供电不足导致不稳定,后来靠超微工程师修改bios代码打上补丁;例如光纤的切开角度不对,导致通讯不稳定;例如Nvidia的推荐网络布局不是最优,我们重新做一个方案,后来Nvidia自己也采用了这个方案。至今我都不理解,我们就买了不到一千张卡,算小买家吧。但我们遇到的这些问题,难道大买家没遇到吗,为啥需要我们的debug?

那么一个人的存在的意义是什么呢?小时候曾因为想不清这个问题而抑郁。所以潜意识里,我想去创造价值,获得存在的意义。我选择“上进”,去提升自己的创造价值的能力;选择录长视频和写教材,创造教育价值;选择去写读博、工作、创业的总结,描述里面的纠结和困难,创造事例的价值;选择去创业,团结很多人的力量去创造更大价值。

Eric Schmidt 斯坦福演讲

Google decided that work life balance and going home early and working from home was more important than winning. And the startups, the reason startups work is because the people work like hell. And I’m sorry to be so blunt, but the fact of the matter is if you all leave the university and go found a company, you’re not going to let people work from home and only come in one day a week. If you want to compete against the other startups with the early days of Google, Microsoft was like that. Exactly.
谷歌认为,工作与生活的平衡、早点回家和在家工作比获胜更重要。对于初创公司来说,初创公司之所以能成功,是因为人们拼命工作。我很抱歉这么直言不讳,但事实是,如果你们都离开大学去寻找一家公司,你们不会让人们在家工作,每周只来一天。如果你想与谷歌早期的其他初创公司竞争,微软就是这样的。确切地。

But now it seems to be, there’s a long history of in my industry, our industry, I guess, of companies winning in a genuinely creative way and really dominating a space and not making this the next transition. So we’re very well documented. And I think that the truth is founders are special. The founders need to be in charge. The founders are difficult to work with.
但现在看来,在我的行业、我们的行业,我想,公司以真正的创造性方式获胜并真正主导一个空间,而不是将其作为下一个转型,有着悠久的历史。所以我们有很好的记录。我认为事实是创始人很特别。创始人需要负责。创始人很难共事。

They push people hard. As much as we can dislike Elon’s personal behavior, look at what he gets out of people. I had dinner with him and he was flying. I was in Montana. He was flying that night at 10 PM to have a meeting at midnight with x.ai.
他们对人们施加压力。尽管我们可能不喜欢埃隆的个人行为,但看看他从人们身上得到了什么。我和他一起吃晚饭,他正在飞行。我当时在蒙大拿州。那天晚上 10 点,他乘飞机前往午夜与 x.ai 开会。

Coke and Pepsi will still be around and the fight between Coke and Pepsi will continue to go on and it’s all glacial. When I dealt with telcos, the typical telco deal would take 18 months to sign. There’s no reason to take 18 months to do anything. Get it done. We’re in a period of maximum growth, maximum gain.
可口可乐和百事可乐仍将存在,可口可乐和百事可乐之间的斗争将继续进行,而且一切都是冰冷的。当我与电信公司打交道时,典型的电信公司协议需要 18 个月才能签署。没有理由花 18 个月来做任何事情。完成它。我们正处于最大成长、最大收获的时期。

E Pur Si Muove

Earlier this year, I noticed something in China that really surprised me. I realized I felt more comfortable discussing controversial ideas in Beijing than in San Francisco. I didn’t feel completely comfortable—this was China, after all—just more comfortable than at home.
今年早些时候,我注意到中国发生了一些令我惊讶的事情。我意识到,在北京讨论有争议的想法比在旧金山更舒服。我感觉并不完全舒服——毕竟这是中国——只是比在家里舒服多了。

限制言论会导致思想的限制,继而导致创新的限制。最成功的社会通常是最开放的社会。通常主流思想是正确的,异端思想是错误的,但真实和不受欢迎的思想才是推动世界前进的动力。

因此自己也应该对不同的思想更包容。

The Post-YC Slump YC

Sam Altman 指出,很多公司在离开YC之后,没有继续坚持不懈地专注于构建一个伟大的产品,而是专注于其他。而且工作也不那么努力,效率也比较低。(失去了YC期间的同辈压力)

这也让我想起之前在黑客松时爆棚的生产力。

在 YC 期间,我们毫不留情地提醒初创公司,虚假工作不算数,无论您做得多么激烈,仍然会让您获得失败的创业机会。我们也很无情地询问你的进步,如果事情不顺利,我们会对你诚实。在 YC 之后,我们与初创公司的联系减少了——如果你愿意,你可以对我们暗淡无声。就其本身而言,这几乎总是一个迹象,表明创业公司做得很糟糕。

冲浪在同一片海

当代的各种网络文化,可能也是构成「我是中国人」的认同之一。

最近在纽约,想认识中国人实在太太容易了:只要听到有人说中文,上去打招呼就行。然而自我介绍自己是 I 人或 E 人,好像才是中国人身份认同中最有辨识性的一部分。

当代的各种网络文化,似乎是网络上许多中国年轻人主动塑造的共同认同。

不鸟万如一对身份认同的看法:[1]https://blog.yitianshijie.net/2024/08/12/what-does-it-mean-to-be-chinese-according-to-sub-wb/

sub_wb_ 對中國人身份認同提供了一个新的视角:https://www.threads.net/@sun_wb_/post/C-iOXJqIYkM/

新的焦虑(留学版)

从留学开始,就有了很多很多新的烦恼。

租房

首先,在美国租房就是极大的难题。

很多人会选择在国内提前租好。但在国内看美国的房子可不容易,照片想拍得好看太容易了,很多问题只有线下才看得出来。我当时虽然花了很多时间找房,但对价格和位置都没有认知,一开始把预算设的很低,也意味着没什么好房子。而且租房效率也很低,要跟很多人线上了,「线上聊天」这种事自然超级浪费时间,真心心疼。

况且租房就是至少一笔二三十万的决策,我不是很信任单纯地线上看房。万一踩雷了,都不知道怎么办才好。因此没有选择在国内就找好,而是想先找短租,落地美国后再去看房租房。

(不得不说一句,1500人民币住的酒店可真凄凉,再中国酒店习以为常的牙具、吹风机、拖鞋、热水壶、沐浴露、茶叶等等都没有,几乎就是什么都没有。不知道美国其他酒店是不是也是这样。)

然而一开始在Airbnb, StreetEasy等多个美国网站上找短期的房子,都需要美国电话卡,但当时时间太紧了,又没借到电话号码。(当时我还不知道可以在国内提前就买美国电话卡。)但突然发现美国入关时是要求要有住处的,很头疼,也尤其担心入关。后来在朋友的建议下,先住几天酒店过渡。(幸好入关很顺利)

后来落地后找到新的长期住处还比较顺利。在各个平台上搜,还直接线下去各个apartments看房。但是新的住处是9.1开始,而我到美国是8.21,意味着我又十多天要找地方住。这在中国的话就很容易解决,即使一直住酒店也还不会特别贵。但是在纽约,最便宜的酒店一天也要1000~1500人民币。后来我软磨硬泡一个只肯出长租的朋友,短租给我一个星期。虽然我也付了钱,但还是颇为感激的。

记录Auth.js的callbackUrl问题解决经历

最近在给Next.js项目配置 Auth.js时,遇到一个很头疼的问题。在本地测试和在Vercel上部署时,均可正常运行,但是同样的代码部署到 Google Cloud 云服务器上时,就会有问题。具体问题是,当使用Github登录时,callback会callback到http://0.0.0.0:3000/api/auth/signin?error=OAuthCallbackError

一开始猜测是Nginx配置问题,检查之后确认无误。

后面花了很长时间,才意识到,Auth.js可以开启debug:true。开启后,发现我向github发送的请求内容中,

1
2
"signinUrl": "http://0.0.0.0:3000/api/auth/signin/github",
“callbackUrl”: “http://0.0.0.0:3000/api/auth/callback/github”,

虽然没有发现具体原因。但是想起auth.js文档中,明确写了v5版本,不需要规定AUTH_URL

Auth.js AUTH_URL

在环境变量中,设置

1
2
AUTH_URL=【自己的域名】
例如:AUTH_URL=https://podcasthighlight.com

重启项目,发现运行正常,问题解决。

文摘-24年7月

《Google “We Have No Moat, And Neither Does OpenAI” 谷歌“我们没有护城河,OpenAI 也没有”》

旧文重读,这篇文章很重要。

《The 18 Mistakes That Kill Startups》

Paul Graham 对初创公司提了一些建议:

  1. 不要只有一个创始人,即不要独自创业。因为这表明你的idea 吸引不到其他人参与。而且创业很困难,你需要合伙人一起集思广益,说服自己避免愚蠢的决定,并在陷入低估时振奋起来。

  2. 要选一个好位置。最好是硅谷,其次是波士顿、西雅图、奥斯汀、丹佛和纽约。

  3. 不要害怕竞争,不要做太微小的市场。

    3. Marginal Niche 3. 边缘利基

    Most of the groups that apply to Y Combinator suffer from a common problem: choosing a small, obscure niche in the hope of avoiding competition.
    大多数申请 Y Combinator 的群体都有一个共同点: 问题:选择一个小的、不起眼的利基市场以避免 竞赛。

    If you watch little kids playing sports, you notice that below a certain age they’re afraid of the ball. When the ball comes near them their instinct is to avoid it. I didn’t make a lot of catches as an eight year old outfielder, because whenever a fly ball came my way, I used to close my eyes and hold my glove up more for protection than in the hope of catching it.
    如果你观察小孩子做运动,你会注意到下面的 到了一定年龄他们就会害怕球。当球靠近时 他们的本能是避免它。我没有抓到很多东西 作为一名八岁的外野手,因为每当飞球到来时 我的方式是,我常常闭上眼睛,更多地举起手套 保护而不是希望抓住它。

    Choosing a marginal project is the startup equivalent of my eight year old strategy for dealing with fly balls. If you make anything good, you’re going to have competitors, so you may as well face that. You can only avoid competition by avoiding good ideas.
    选择一个边际项目相当于我的八个项目的启动 一年前处理飞球的策略。如果你做了什么 很好,你将会有竞争对手,所以你不妨面对 那。你只能通过避免好的想法来避免竞争。

    I think this shrinking from big problems is mostly unconscious. It’s not that people think of grand ideas but decide to pursue smaller ones because they seem safer. Your unconscious won’t even let you think of grand ideas. So the solution may be to think about ideas without involving yourself. What would be a great idea for someone else to do as a startup?
    我认为这种面对大问题的退缩大多是无意识的。 人们并不是想到了宏伟的想法,而是决定去追求 较小的,因为它们看起来更安全。你的无意识甚至不会 让你想到宏伟的想法。所以解决方案可能是考虑 不涉及自己的想法。什么是个好主意 别人来做初创公司吗?

    这点特意直接摘录原文。Paul Graham 这篇文章创作于2006年,所以我不确定在2024年,这些建议是否是 100% 正确的。因为上面几点都和 Pieter Levels 都很不同。Pieter Levels 建议首先独自创业,因此对创业的地点更没有要求,而且建议从微小的市场切入。

小红书的粉丝有用吗

今天也在想:小红书的粉丝有什么用?

如果是自己的粉丝的话,自己可以或许推广一下自己的产品,或者可以作为个人品牌来推广自己。但好像很多小红书号,不能做这样的用途,只可以接一些利润微薄的商单。

昨天泽凯哥跟我说,他在国外留学时,「小红书简直是救命稻草」「新时代的百科全书」我也很好奇,为什么小红书上可以产生那么多的生活指南,而百度不能?而且,小红书的流量逻辑,让作为创作者的自己倍感焦虑,为什么小红书的 UGC 还可以做得那么好?

无需扩展

《The New Internet 新互联网》

在现代计算中,我们容忍长时间的构建,然后是 docker 构建,然后上传到容器存储,以及程序运行前的几分钟部署时间,甚至在日志输出上传到您可以看到它的地方之前的时间更长,所有这些都是因为我们被欺骗了,认为一切都必须扩展。人们对部署到最新的新兴容器托管服务感到兴奋,因为它只需几十秒即可推出,而不是几分钟。但是在 1990 年代我缓慢的计算机上,我可以运行一个 perl 或 python 程序,该程序在毫秒内启动,每秒处理超过 0.2 个请求,并立即将日志打印到 stderr,这样我就可以一遍又一遍地编辑-运行-调试,每分钟多次。

而事实上,很多东西根本不会扩展,所以也不需要提前扩展。但类似的扩展工作可能提前占用了开发人员大量的时间。

如何天使投资(2)

我不认为自己有资格谈论这个大的话题。这篇文章的主要思想来自 Naval。Naval是著名的风险投资家,他写的《纳瓦尔宝典》也曾风靡于创投圈。

每个人都觉得自己有着很好的判断力

心理学上,有「邓宁-克鲁格效应」,指的是一种认知偏差:在特定领域能力有限的人高估了自己的能力。或者说,无能者很难认识到自己的无能。

这在一定程度上是一种自我防御机制。但也说明,我们很难知道自己有没有好的判断力。

Naval 认为,需要5~15年才能知道自己有没有好的判断力,并且需要有一个计划,来长期校准并提高自己的判断力。

在种子阶段,判断更多的是关于人的判断、产品潜力和市场潜力,而不是你衡量现金流、客户获取成本或病毒式传播指标的能力——因为你没有太多数据。

而多元化的投资组合,可以理解为对知识匮乏的一种对冲。

Naval认为,在天使轮阶段,没有人有足够的信息,能抱有很高的信念,或万无一失的判断

博客、小红书和即刻

最近在同时运营博客、小红书和即刻。

我发现只要发小红书,就不可避免地陷入流量逻辑。Utility(效用)不可避免地变成点赞、收藏和浏览次数。在这种情况下,似乎会渐渐偏离自己分享的初心,而去关注读者喜欢阅读什么样的内容,自己创作什么样的内容会获得更好的数据,然后根据读者的喜好来创作。也似乎不可避免地为了保持更新频率,而输出一些质量一般般的内容。发到最后,自己也感觉自己创作的内容很没有营养。

而且小红书也不是一个适合沉淀的平台。很多纯文字的想法并没有合适的配图。而且早期的内容,读者点进主页之后,也需要下划很久才能找到。

最近读到《WTF happened to blogs 博客怎么了》:「Blogs are raw, unfiltered windows into someone’s mind.博客是进入某人原始的、未经过滤的思想的窗口。」至少我现在发博客,不会有流量焦虑。Plausible(一个流量分析工具)过期后,更不会每天都去查看访问量。在这样的心态下,反而感觉能写出一些更真实,更值得阅读的内容,沉淀得也会更有深度一点。

或许,我下一篇文章就应该写《小红书创作者应该如何避免流量焦虑》。

有缺陷的映射引擎

今天读到一篇有点思辨的文章:《有缺陷的映射引擎》The Lens That Sees Its Flaws

我们用眼睛看到一些东西,这是一种「现实」在我们大脑皮层的映射,而我们看到的结果,是我们反映现实的「信念」,也就是我们如何具体理解现实的。

简单地说,整个科学就是一个,「过程更可靠的反思性推理」,能让我们的理解更加贴近现实本身。因为科学能有方法来系统性地检验我们的想法,从而不断完善我们对现实的理解,这种方法可以使我们超越个人偏见和直觉,建立一个更客观,更准确的模型。比如在数学领域,发明了很多推理方法,能够保证在这种推理方法下,只有条件满足,结果就一定成立。

而这种映射是可靠的吗?关于人类思维的缺陷,作者提供了一个很好的例子。作者在EFNet的 #philosophy 聊天室问:「你认为未来20年会发生核战争吗?」一个回答的人说,他预计100年内都不会发生核战争,因为「所有参与核战争决策的参与者现在都不感兴趣。」作者问:「但为什么要延长到 100 年呢?」他的回答是「Pure hope. 纯粹的希望」。

这种「一厢情愿的想法」是一种常见的认知偏差。一个人仅仅基于”希望”就认为100年内不会发生核战争。它导致人们根据自己的期望,而非客观事实来判断事物的可能性。

说到这里,就容易明白作者的观点。我们应该把自己的思想或大脑,理解成有缺陷的映射引擎,知道我们是透过它去看待这个世界,透过它去看待现实。我们如果能理解到这种缺陷,可能是系统性的错误或者偏见,就可以想办法去反思性地矫正,从而让我们的映射引擎更加强大。

文摘-24年6月

本月挖坟读了和菜头《槽边往事》的很多文章。

没有什么点子是了不起的

和菜头认为想法太不值钱了,没做出的app不值得一聊。和菜头认为,很多想法刚出现时,就有人把它实现了。而现在运行着的很多伟大的产品,并不符合创造者最早的想法,而是在运行过程中逐步找到自己的方向的。

和菜头总是鼓励读者先做,不要想太多。参见《手上有血》《弄脏你的手》

从番茄时钟和记账本开始

初次成为独立开发者,​他们都会面临一个问题:做个什么才好?​争取个人自由是一回事,用这个自由具体来做点什么是另外一回事。大部分都是如此,每个人都会说“我想做我自己想做的事情”,等真正可以去做的时候,却发现自己并不知道​真正想做什么。
独立开发者从番茄时钟和记账本开始自己的​生涯,我觉得一点问题都没有。​而且,我还认为要尽早开始,尽早完成。开发这些大路货肯定不会有多少成功的机会,但是通往未来的道路就隐藏在​尝试的过程之中。而且要我说的话,通过这种模仿式的开发,多少都能洗掉一点程序员身上或浓或淡的各种“厂味”,这对于​自己的人生而言也是一件好事,好处不止是在开发这一件事情上。凡事你都习惯了靠自己,那么人生的选择自然也就变得更加丰富。

技术的倒退

自从我出生以来,科学似乎总是在飞快着发展着。在我印象中就没有技术倒退的例子。但Idle Words的一篇文章,用「极地探险家斯科特和坏血病」介绍了一个「某个领域的技术进步,导致另一领域技术倒退」的例子。

本篇文章摘录自《Scott And Scurvy》

在描述队员们在冰上度过的第一个冬天时,Cherry-Garrard随意提到了探险队医生之一关于坏血病的一个惊人讲座:

Atkinson倾向于Almroth Wright的理论,认为坏血病是由细菌引起的血液酸中毒… 在Nelson时代很少有坏血病病例;但原因尚不明确,因为根据现代研究,酸橙汁只能帮助预防坏血病。我们在Cape Evans,有一种钠盐,如果有必要,可以用来碱化血液作为实验。Atkinson认为黑暗、寒冷和繁重的工作是导致坏血病的重要原因。

我在学校已经学到坏血病在1747年被解决,当时苏格兰医生James Lind通过首次对照医学实验证明柑橘类水果是治疗这种疾病的有效方法。从那时起,我们被告知,皇家海军要求在水手的烈性酒中每天加入酸橙汁,从此坏血病在长途航行中不再是问题。

但这里是一位1911年的皇家海军外科医生,显然不知道这种疾病的原因或如何治愈它。在20世纪初,一群高素质的科学家对坏血病的了解竟然比拿破仑时代的普通海军船长还少。Scott在基地留下了大量的新鲜肉类、水果、苹果和酸橙汁,然后出发在冰上待了五个月,没有任何坏血病的防护措施,同时确信自己没有风险。发生了什么?

保持无聊也是开始工作的好方法

保持无聊也是开始工作的好方法。

当各种信息流进入脑子的时候,大脑顺着信息流,似乎容易停止思考。但当封印了X、公众号、YouTube,以及其他各类信息流渠道的时候,会更容易感觉到无聊,但其实也把大脑空了出来。这时就更容易进入深度思考,也更容易进入工作状态。

所以有时感觉到无聊可能是好事,可以主动让自己感觉到无聊,也应该提升自己对无聊的忍受力。

你为什么不应该对你的创业想法保密

今天读到Chris Dixon的一篇文章你为什么不应该对你的创业想法保密。Chris Dixon是a16z的普通合伙人,也是Hunch的联创。

Chris Dixon认为,创业的「隐身模式」是危险的,应该和任何愿意谈论的人谈论自己的创业想法,包括投资人、创业者、业内人士、朋友、或者路人。

与人交流有很多好处。可以获得改进建议;发现缺陷;可以了解到行业相关信息;了解到同类竞品;可以更好地了解到人们对于这个产品及功能的兴奋程度。也可以完善自己的销售,或者对投资人的路演。也可能甚至发现这是一个馊主意,免去走弯路的麻烦。

而就被窃取想法的担忧而言。首先,世界上只有极少数人,能偷窃你的想法并真正实现。因为很多人有自己的工作,而且大部分创业者都是有道德和诚信的,有道德的企业家不会复制你的想法。而投资人,要么不喜欢你的想法,要么愿意资助你,而不会另外去建立一个团队。

其次,大多数人会认为你的想法很愚蠢。(即使事实未必是这样。)

即使你的想法落入坏人之手,他们可能只会得到高层次的“电梯推销”,无论如何都没有多大价值。到那时,你已经通过与尽可能多的人交谈,进一步、更详细地发展了这个想法。

好的研究离不开详尽的调查

最近阅读了浑水做空瑞幸的《Luckin Coffee: Fraud + Fundamentally Broken Business》,这篇的目的是揭露瑞幸的数据造假,风险警报,以及商业模式的缺陷。

好的研究离不开详尽的调查。为了支撑文中提出的16个非共识的观点,浑水动员了一千多人,采集了620个门店长达11260小时的门店流量视频,2.5万+份客户收据,让这些论点变得确凿无比。

瑞幸门店

浑水提出的确切观点有:

确凿证据 #1

2019年第三季度每店每日的销售数量至少被夸大了69%,2019年第四季度被夸大了88%,这由11,260小时的门店视频监控数据支持。我们动员了92名全职和1,418名兼职员工,在981个店日内监控和记录了100%营业时间内的门店客流。门店选取基于城市和位置类型,与瑞幸所有直营门店的分布相同。

确凿证据 #2

瑞幸咖啡“每单商品数量”从2019年第二季度的1.38下降到2019年第四季度的1.14。

确凿证据 #3

我们收集了25,843张顾客收据,发现瑞幸咖啡至少夸大了每件商品的净售价1.23元人民币或12.3%以人为维持其商业模式。实际店面级别的亏损率高达24.7%-28%。扣除免费商品,实际售价为标价的46%,而非管理层声称的55%。

确凿证据 #4

第三方媒体跟踪显示,瑞幸咖啡在2019年第三季度夸大了其广告费用超过150%,尤其是对分众传媒的支出。瑞幸咖啡可能通过回收夸大的广告费用回收,进而配平夸大的收入和店面利润。

确凿证据 #5

瑞幸咖啡2019年第三季度“其他产品”的收入贡献仅为约6%,几乎夸大了400%,这由25,843张顾客收据和其申报的增值税数据显示。

商业模式缺陷 #1

瑞幸咖啡瞄准核心功能性咖啡需求的提议是错误的:中国人均咖啡因摄入量为86毫克/天,与其他亚洲国家相当,其中95%的摄入量来自茶。中国的核心功能性咖啡产品市场规模较小且增长适中。

商业模式缺陷 #2

瑞幸的客户是高度价格敏感的,客户保留主要依赖于大幅折扣促销。瑞幸试图减少折扣(即提高实际价格)并同时增加同店销售的做法是不可能实现的。

商业模式缺陷 #3

瑞幸的单店经济效益有缺陷,无法实现盈利,其破碎的商业模式注定会崩溃。

商业模式缺陷 #4

瑞幸“成为每个人日常生活的一部分,从咖啡开始”的梦想不太可能实现,因为它在非咖啡产品方面也缺乏核心竞争力。其“平台”充斥着没有品牌忠诚度的机会主义客户。其轻量化劳动力模式只适合生产已经存在市场十多年的“1.0”代茶饮,而领先的新鲜茶饮玩家五年前已经推出了“3.0”代产品。

商业模式缺陷 #5

瑞幸茶的特许经营业务面临高合规风险,因为它没有按照法律要求在相关部门注册。瑞幸茶于2019年9月启动其特许经营业务,而当时它没有至少两家直营店运营满一年。

全文报告中列出的证据非常详细,包括大量的视频截图和收据截图,论证的估计也都是有依据的。自然,浑水的这份报告是非常成功的。

手机上的订单图片

类似的优秀研究报告还有毛主席的《湖南农民运动考察报告》和《寻乌调查》。这些报告同样基于大量调查,用详实的证据、数据和信息做支撑,得出了非共识且正确的结论。

(附注:有趣的是,浑水公司虽然提出了很多瑞幸的商业模式缺陷,但现在四年半之后回首再看,应该会有不一样的结论。例如,瑞幸的价格战越打越猛烈,推出了9.9元一杯的活动,但是经营并没有崩溃,而且在 2023 年营收就超过了星巴克中国。并且中国整体的咖啡市场也在快速增长,2022 年同比增长 28.67%。而且中国人均咖啡因摄入量超过 100mg/d。从现在来看,当初浑水公司提出的不少预测也是错误的。)

2013-2023中国咖啡行业市场规模

Climbing the wrong hill

我经常提醒自己,不要 climbing the wrong hill

计算机科学中的一个经典问题是爬山(hill climbing)。想象一下,自己像一个小蚂蚁一样被扔在丘陵地带的一个随机地点,你只看得到周围一个小局部。目标是到达最高的山峰。

一个最简单的算法是,在任何时刻,都朝着更高的方向迈出一小步。这种方法的风险是,很可能到达某个小山丘的顶部,而非最高的山峰顶部。

另一个通常更好的算法是,先让自己反复地把自己随机地放在地形的不同部分,做简单的爬山,然后在多次这样的尝试之后,决定哪个山丘最高。

作为一个普通人,我们可能知道我们想要登上的山峰并不是我们正在攀登的山丘。但当前的山丘诱惑力很强。最终陷入了行为经济学家强调的一个常见陷阱「当下享乐偏误」:人们倾向于系统性地高估短期回报,而非长期回报。这种影响在更有野心的人身上似乎更强烈。他们的雄心壮志似乎使他们很难放弃短期的上升台阶。

那我们应该怎么做呢?应该随机地进入地形的不同部分,寻找最高的山峰,当寻找到最高的山峰时,不要再在当前的山丘上浪费时间了,无论下一步看起来多么好。

为什么应该用 Hugging Face Inference Endpoints 构建AI应用

最近在构建产品的过程当中,偶然使用了 Hugging face 的 Inference API 和 Inference Endpoints,感觉非常方便好用,想推荐给大家。(不是软文)

我采取的整体技术方案是,Next.js + Vercel + Hugging Face Inference Endpoint 的 API,前后端采用统一的框架,没有使用云服务器。

因为做独立开发,最重要的,就是快速推出产品,而且为了快速迭代,应该使用简单的部署方案。而为了尽可能地使用简单的技术方案,用 API 构建产品,比自己部署大模型,要更方便快速,尤其是在构造 MVP(最小可行性产品)的时候。

但问题是,有很多模型并没有提供 API,或者提供的 API 并不完全,比如说 OpenAI 的 Whisper,现在官方还只提供 Whisper-large-V2 的 API,但 Whisper-large-V3 已经推出很长时间了,但 OpenAI 并没有提供 API。而且还有很多基于某些特定任务做了微调的大模型,也没有提供 API。也有些模型,只有 Python 的 API,没有提供JavaScript 的API,使用起来也会麻烦一点。

并且,不同的模型,提供的 API 格式可能也不一样,如果产品需要用到多个不同的模型,切换起来会麻烦一点。

而 Hugging Face 就为很多模型提供了 API,只需要在 Hugging Face 找到需要的模型,点击 Deploy—Inference API,即可使用,并且有 Python, JavaScript, cURL 三个版本。而且,要切换不同的模型,只需要更改API链接,比如将meta-llama/Meta-Llama-3-8B-Instruct修改成https://api-inference.huggingface.co/models/mistralai/Mistral-7B-Instruct-v0.3即可。

image-20240604160351720

image-20240604160054753

注意,Inference API 只适合开发环境或者测试,因为比较拥挤,在生产环境是不够用的。在生产环境需要使用 Inference Endpoints。Inference API 是免费的,Inference Endpoints 按小时付费。如果说使用量较大的话,也需要注意成本。

image-20240604161107855

Inference Endpoints 的主要作用,正如它官网所说,是让生产部署更加简单。可以部署任何模型到任何云。

而且如果需要自己训练模型,也可以把模型上传到 Hugging Face Hub ,然后使用 Inference Endpoints 进行部署。

总的来说,Hugging Face 的 Inference API 和 Inference Endpoints 为独立开发者和小型团队提供了一个轻量化的解决方案,帮助他们快速推出和迭代产品。

关于APIConnectionError: Connection error在JavaScript的最新解决方案

TL;DR: 使用 axios 和 dotenv 解决 APIConnectionError 问题。

问题描述:

在本地服务器运行 Next.js 项目时,调用 OpenAI API 或 Hugging face API 会报错 APIConnectionError: Connection error。调用 Hugging Face 的其他模型 API 时,同样报错。然而,部署在 Vercel 上可以正常运行。

项目环境:

  • 编程语言:JavaScript 和 TypeScript
  • 框架:Next.js 和 React
  • 地理位置:中国大陆

错误原因分析

错误原因分析:

通过谷歌查询,初步判断是 Node.js 的代理问题。附 OpenAI 官方文档:APIConnectionError

尝试过的解决方案(无效):

  1. 在 powershell 上配置代理

    1
    2
    3
    $env:HTTP_PROXY="http://127.0.0.1:33210"
    $env:HTTPS_PROXY="http://127.0.0.1:33210"
    $env:ALL_PROXY="socks5://127.0.0.1:33211"

    但发现这样配置了之后,仍然出现APIConnectionError: Connection error报错。

  2. 很多解决方案通过修改 openai 的 Python 库来解决,但是无法用在JavaScript 和 Next.js上。

解决方案概述:

使用axios 和dotenv即可解决问题,以下是具体步骤:

1.在 Next.js 项目中安装 axios 和 dotenv:

1
npm install axios dotenv

2.在需要调用API的场景,使用axios进行API请求,并同时配置代理。

代码示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
import * as fs from 'fs';
import * as path from 'path';
import axios from 'axios';
import * as dotenv from 'dotenv';

dotenv.config();

async function query(filePath: string) {
try {
const data = fs.readFileSync(filePath); // 读取文件内容
const response = await axios.post(
'https://api-inference.huggingface.co/models/openai/whisper-tiny',
data, // 文件内容作为请求体
{
headers: {
"Accept":"application/json",
Authorization: `Bearer hf_xxxxxxxxxxxxxxxxxxxxxxxxxx`,
'Content-Type': 'audio/wav', // 确保内容类型是音频文件
},
proxy: {
protocol: 'http',
host: '127.0.0.1',
port: 33210,// 这里应该根据使用的代理,修改成相应的port
},
timeout: 10000, // 设置超时时间为10秒
}
);
return response.data;
} catch (error) {
if (axios.isAxiosError(error)) {
console.error('Axios error:', error.response?.data);
} else {
console.error('Unexpected error:', error);
}
throw error;
}
}

// 调用函数并传入文件路径
query(path.resolve(__dirname, "C:\\Users\\caoca\\Music\\sample1.wav"))
.then((response) => {
console.log(JSON.stringify(response));
})
.catch((error) => {
console.error(error);
});

结论:

通过使用 axios 和 dotenv,可以有效解决 Next.js 项目中调用 OpenAI API 或 Hugging face API 报错的问题,提升开发体验和项目的稳定性。

语C黑话手册

最近偶然接触到一个亚文化圈子「语C」,突然发现,这不就和各种流行的AI聊天机器人很像吗?

语C,又称语言cosplay,是一种用纯文字进行的角色扮演活动。通过文字描写叙述特定的背景故事,描述人物动作和心理活动,并与其他玩家互动。语C是由二次元文化衍生出的亚文化。

由于这个圈子黑话很多,所以我整理了一些常用的词义,方便对语C感兴趣的朋友们收藏,碰到时可以对照理解。Enjoy。

语C黑话手册

  1. 语C,语擦,语cos:语言cosplay,一种用纯文字进行的角色扮演活动。

  2. :饰演的角色。

  3. 披皮、上皮、改备注:将备注修改成自己所扮演的角色。

  4. 带套:例如]、】、}、)等符号,用于说明三次元现实情况的句子。一些群也有单独的规定。

  5. 开戏,KJ:将自己的角色带入特定场景或剧情,与其他角色互动或对话。

聚光灯效应:如何在创业中减轻焦虑

创业途中,许多人总会有各种各样的担忧,比如担心迟迟没有收入,或者担心产品没做出来而被别人笑话。我想分享一个自己的心理妙方「聚光灯效应」,它或许能帮你缓解这些担忧。

聚光灯效应

聚光灯效应指的是,人们常常把自己看做一切的中心,并且高估别人对自己的关注程度。然而,事实上,其他人并没有那么在意我们的一举一动。在创业方面,像各种商业媒体,往往也只对大公司们感兴趣,很少报道小微公司。

为什么会产生聚光灯效应?

聚光灯效应的产生与我们的大脑运作方式密切相关。我们每个人都是自己生活的主角,因此对自己的行为和外貌会格外敏感和关注。这种自我关注让我们不自觉地认为他人也在同样地关注着我们。

心理学研究表明,聚光灯效应的出现主要是因为我们无法完全摆脱自我视角。在社交互动中,我们常常忘记他人也有自己的关注点和优先事项,因此会高估自己在他人眼中的显著性。

例如,你可能在会议上发表了一个观点,随后一直担心大家对你观点的评价。然而,实际上,其他人可能只会短暂注意到你的发言,然后继续关注他们自己的事情。

如何应对聚光灯效应?

认识到聚光灯效应的存在,可以帮助你在创业过程中减少不必要的紧张和焦虑。以下是几种应对的方法:

  1. 勇于尝试:不要因为害怕被失败而退缩。创业本身就是一个不断试错和学习的过程,失败是其中的一部分。至少在当今时代,保守往往容易拖累发展,冒险更可能获得机会。
  2. 调整心态:记住,别人并没有那么在意你。他们同样忙于自己的生活和工作。即使你在某些方面表现不佳,大多数人也不会过多关注。
  3. 专注于目标:把注意力从他人的评价转移到自己的目标和任务上。专注于自己要完成的工作,而不是担心别人怎么想。

认识到聚光灯效应,就不那么容易紧张而焦虑了。别人不会那么在意你,而且即使失败了,也没有你想象中的那么严重。勇敢地迈出每一步,你会发现自己的潜力远超预期。

乔布斯往事两则

最近几年,马斯克似乎已经取代了乔布斯,成为了很多人的创业偶像。也很少再有人提乔布斯的现实扭曲力场了。但是读了《硅谷革命——成就苹果公司的疯狂往事》,发现了乔布斯蛮多有趣的细节。

作者 Andy Hertzfeld 最早是在 Apple II 项目组,却想加入麦金塔项目组。当 Andy 走进乔布斯的办公室时,乔布斯劈头就问:「你行吗?我们麦金塔团队只要真正的能人,我不确定你行不行。」Andy 说能行。几个小时后,乔布斯告诉 Andy:「跟我来,让我带你到你的新工位。」

Andy 说,他需要一两天时间来完成手头上的工作,下个星期一就可以加入麦金塔团队。

乔布斯发问:「你现在在做什么?有什么事情比麦金塔更重要?你做这个只是在浪费时间而已!谁会关心 Apple II?再过几年 Apple II 就玩完了,你的操作系统还没写完就已经过时了。麦金塔才是苹果公司的未来,你现在就过来吧!」

乔布斯说着,走到 Andy 桌旁,找到 Apple II 的电源线,用力一拉拔掉插头,电脑被关掉了。Andy 刚刚写的代码也跟着消失了。乔布斯拔掉显示器的插头,把它放在主机上,然后搬起它们放到车的后备箱里。

乔布斯似乎很多时候都急不可耐,而且不是很有礼貌。有次,乔布斯面试一个软件经理时,候选人回答支支吾吾的,十分拘谨,乔布斯很快就不耐烦了,开始问一些出格的问题:

「你是几岁失去童贞的?」

候选人以为自己听错了。

乔布斯又问:「你磕过几次迷幻药?」

候选人就在回答问题时,乔布斯开始“呱、呱、呱”模仿火鸡的叫声,直接结束了面试。

尽管《硅谷革命》揭示了许多关于乔布斯的有趣细节,但这本书整体上内容冗长、写作平淡,难以引人入胜。

更糟糕的是,书中大量的细节描写显得琐碎且无关紧要,很多故事虎头蛇尾,无法为读者提供实质性的启示或价值。许多奇闻轶事虽然有趣,但未能深入挖掘事件背后的原因和影响,让人读后感觉不过是一些片段拼凑而成的文字。

如果你对乔布斯的传奇生涯和苹果公司的发展历程感兴趣,或许有更好的选择可以深入了解这些内容。

简单比正确更重要

Luyao 写了一个帖子《简单比正确更重要》

为什么一些看起来“很垃圾”的软件会占领市场?

我从中学到的东西就是,简单比正确更重要。不必追求“正确”,你需要 50% 正确,当它像病毒一样传播以后,人们会花时间将它改进到 90% 正确。但它首先要是一个病毒,而不是一个“正确”的东西。而复杂的东西显然不会成为病毒。(作者把 C 语言和 Unix 称做最大的计算机病毒。)

参考链接:[The Rise of “Worse is Better’’]https://www.jwz.org/doc/worse-is-better.html

中外程序员差异和文字表达

《中外程序员差异》

文字表达

文字表达能力是开源社区里一个非常重要的,因为但凡一个大的改动都需要和其他人广泛讨论和协作。

不少国外的程序员有文字表达的习惯,就是即使看很小的一点问题也会通过文字表达出来。这是很多国内程序员所没有的习惯,因为我们大多比较含蓄,认为多做比说强,说多容易错,说多容易暴露自己。

可能和教育和网络环境也有一定关系,如果不是刻意维持文字表达的习惯,很多人高中毕业后就没有写过几篇长文,对很多事情也没有自己的看法。

另外他们习惯使用 Email 来沟通,但中国开发人员大多习惯使用 IM 沟通。这两者还是有区别的,IM 沟通会让人不自觉地回复得更快,有的模糊想法随口就就表达了。而 Email 沟通更容易让人把事情写清楚,也更容易写得更长和有条理。

这种细微的差异长久了之后就可看出中英文技术社区的巨大差别。另外,中文网络的环境中戾气更重一些,人们对自我推销很反感,容易揣测你的意图。

看到这一点,深有感触。说多确实容易说错,但即使这样,也应该多说。

而且,我自己短的帖子写多了,也会觉得长文很难写,写一篇2000字的文章,可能要花一整个下午。把事情写清楚,也是一种需要锻炼的能力。

《一日男友》

被夸奖、被鼓励、被倾听、被看见,我们把对这些事物的渴望投射到“爱”上。“爱”不会天然眷顾每一个人。为了得到它,一些女性四处求索,从手机里到现实中,从二次元到三次元。她们痴迷、成瘾,最终相信自己得到了爱,哪怕是短暂的,明码标价的爱。

我在游戏中体验到一种超越现实的理想亲密关系。我们的恋爱从暧昧开始,他会假装不经意地关心我,暗中吃我和别人的醋,我们给彼此起专属的外号。随着了解增加,我发现他其实在很早之前就爱上了我。当然了,他还拥有几乎完美的外貌和身材。

卡马克和 DOOM

最近读了一本书《DOOM 启示录》,这本书讲述了《DOOM》这款游戏的开发历程,以及其背后的主创之一——约翰·卡马克的故事。

Carmack

约翰·卡马克

约翰·卡马克是《DOOM》这款游戏的主要创作者,也是 id Software 的联合创始人之一。二十多年前,卡马克凭借《DOOM》在游戏界获得了极高的声誉。

卡马克的猫

卡马克有一只猫,叫咪子,咪子陪伴了他很久,他编程时,猫就趴在电脑上面。甚至他的合伙人罗梅洛,都把咪子放到公司的员工名单中了。

但后来那只猫脾气变得有点暴躁,总是在办公室闲游乱逛,还把新买的皮沙发尿了一通。

卡马克就向公司的人宣布,咪子只会给他带来麻烦,他要把咪子送到动物收容所。

即使他那个合伙人说,咪子送到收容所可能就活不了了,但卡马克不以为然,回到房间继续工作了。

其他员工要是不合适,他就会踢除,甚至 id Software 的创始人之一罗梅洛,也是卡马克踢除的,因为他认为罗梅洛不再专注了。

DOOM

卡马克的专注力

因为卡马克性格就是这样,他写程序时很专注很专注。

有一次,他同事为了测试卡马克的专注力,在他隔壁放色情片,并把音量调到最大,其他同事很快都被呻吟声吸引到了电视机旁。但卡马克好像一开始没听到,后来听到了,就“嗯?”了一声,并没有停止工作。

卡马克的黑客精神

《DOOM 启示录》里提到过很多次:

卡马克清楚地知道,他喜欢的事情就是——编程,他系统地安排着生活,以便把大部分时间都用于此。从制作 DOOM 时起,他就决定开始调整生物钟,以达到一种更孤寂更专注的境界,以避开罗梅洛的尖叫,避开记者的电话,避开所有这些日常生活中使他分心的事物。他开始强迫自己每天睡觉前多熬一个小时,然后第二天再晚一个小时到办公室。1995 年初,他养成了他觉得最理想的作息规律:下午四点到公司,凌晨四点离开。为了 Quake,他得全神贯注才行。

卡马克听到艾尔建议他去申请专利后怒不可遏。

卡马克认为,所有科学技术,以及文化、知识、理论,都是在前人的基础上发展起来的。去注册一项专利,就等于宣布说:”这个想法是我的想法,你不能使用或扩展它,因为,我“拥有”了这个想法,这听起来荒谬绝伦。

专利制度威胁到他生命中最重要的事情:编写代码去解决问题。如果这个世界上充斥着各种专利,以至于他连解决一个简单的问题都要侵犯到某项专利的话,那么,这将不是他所乐意生活在其中的世界。

张一鸣和他的创业策略

阑夕在《理性蜕变中的张一鸣》里说:

  • 黄章晋说,张一鸣的创业项目是区分人的筛子,被他捕获的,是自我塑造意识薄弱,延迟满足能力低下,很难在现实世界获得成就奖赏的人,用饭桌上的话来说就是,他们的时间和生命不值钱,是我们给了他们幸福感。
  • 创业可以分为两种,一种是比较感性的,知行合一的。做的事情就是自己真心认同并热爱的。另一种是理性的,是从逻辑判断某个市场存在机会,然后调度一切资源进入谋求成功,自己是否对这件事情抱有兴趣,倒是非必要的。显而易见,张一鸣属于后一种创业者。他绝对不会是今日头条和抖音上的内容消费者,甚至恰恰相反。
  • 认识张一鸣十几年的大学室友说这个人像机器一样,“不打牌,不看碟,也不玩游戏,读了四年大学,除了上课、看书,他的业余活动就是写代码和修电脑。显然,如果张一鸣在他的大学时代遇到今日头条,恐怕连下载按钮都不会去点。
  • 张一鸣甚至很清醒的表达过一个现在看来相当残酷的观点:人可以分为两类,一类是追求效率的少数精英,他们可以在现实生活里实现自我认知,另一类则是大部分需要围绕一个东西打转的人,不管这些东西是宗教、小说、爱情还是今日头条,用户需要沉迷其中。
  • 张一鸣说,RSS模式对于用户是不友善的,RSS要求用户具备相当高的信息组织能力,而且还要足够自律,在信息匮乏和信息过载之间获得平衡,而普通用户是做不到的。——这篇日志没有给他刚刚开始做的今日头条打半个字的广告,但指向性已经相当明确,因为判断用户需要信息饲养,这才有了今日头条的横空出世。

其实也给我的其启示是,有时创业确实应该瞄准更广大的普罗大众,而不是少数过于精英的人。

前一阵子还看到 github 上一个中国独立开发者项目列表,给我的感觉是,大部分程序员做的项目,实在太小众了,比方说很多 rss 相关的,很多生产力工具。

极简设计和用户体验

上次读到《极简主义的胜利》,也发现很多网站产品的风格很类似,包括网页和 logo。比如都是极简风格,比较喜欢用蓝色或紫色。其余的装饰比较少。

比如:Glitter AI

Glitter AI

Supabase

Supabase

Jira logo

Atlassian Jira and Jira Plugins - Jira

我之前觉得,千篇一律的设计太无聊了,为什么他们不能差异化地做出一些不同的设计呢?

最近读了《华与华方法》,似乎找到了原因。

一切创意的创作原则也是降低成本,降低识别成本,记忆成本,阅读城堡,理解成本,传播成本。因为创意本身不是目的,创意是要解决问题的。比如一家银行的logo,首先要和餐馆区分开,要让用户第一眼看到的时候,就知道是银行。其次才是和其他银行区分开。所以大多数银行的logo设计里,都有一个铜钱。

各种网站的设计也是这样。首先需要让用户一目了然,用标题,落地页和正文,快速告诉用户这个网站是做什么的,然后才是美学上的设计。

文摘

《火星任务在地球》

火星任务在我看来就是一个人生隐喻。它隐喻了5点,1、火星上将会发生的一切都是未知的,不确定的;2、火星任务是艰巨的,而且是从零开始,风险极大,性命攸关;3、执行火星任务,飞船飞行到某一个点之后,就再也没有回头路;4、火星任务孤立无援,抵达之后全靠自己。最后,也是最感性的一点:抵达火星之后,要么在众目睽睽之中存活,要么地球人眼睁睁看着初代殖民者去死。

只要去掉第5点,那么火星任务和一次表白,一次外派工作,一次北漂沪漂,一次跨越半球的旅行,或者一次砸锅卖铁的创业没有什么不同。并不需要大推力火箭,太空飞船,维生舱等等东西,你才能执行一次火星任务,你的火星任务在地球上随时都有。现在有了直播和社交媒体,那么连第5点也能同时满足,无数人可以实时目睹你的崛起或是陨落,只要直播间别被封号就行。
……
听起来这是有钱任性的天才疯子才有的梦呓,但是火星任务作为一种人生隐喻是成功的。地球上的人很多,大部分都满足于现在的生活,但是依然有一部分,想要得到他们人生中的火星任务,哪怕极度不确定,哪怕极度危险,哪怕极度艰辛,他们也依然坚持要去。

因为在过去的六个月,一年,乃至两年时间里,我通过后台留言看到许多读者陷入了沉郁、沮丧和绝望。“生活太艰难”和“做人太辛苦”是基本的两大主题。与此同时,保守的心理趋势也在流行,留言中读者相互劝勉:别辞职,别创业,别投资,别离开家乡父母,别去做任何异想天开的事情……和十年前,十五年前相比,心态完全颠倒了过来,给人一种“人生从此就这样了”的感受。

人生就是不确定,不可知的旅程,充满了不确定性,是你从零开始的艰巨任务,风险极高,付出极大。当你在这个世界上降生,就已经经过了这饭点,再不能回头。在你的人生旅途中,大部分时间你都孤立无援,只能依仗自己—毫无疑问的,你现在就是在执行你的火星任务。

《观点和想法》

从内容上来说,所有社交媒体的特点都是一样的:结果前置。什么意思呢?社交媒体上最匮乏也是最珍贵的东西,是人们的注意力。结果前置,就是吸引注意力最快当的方法。

一些观点是结论,但有些观点,需要有一系列的逻辑支撑,这整套的逻辑,就是想法。

但是,完整清晰地陈述一个想法,需要大量的篇幅,对读者也提出了很高的阅读要求,所以在社交媒体上基本没有什么市场。没有几个人愿意花时间认真阅读一下某个人的具体想法,人们只对结论性的东西,结果性的东西感兴趣。

即使社交媒体的流量逻辑,更偏好「结果前置」,但作者和菜头仍然鼓励人们多分享想法,认为「想法 > 观点」。

和菜头认为,所谓大众的注意力,是一种极不靠谱的存在,非常短暂,来去倏忽。

通过观点的表达,一个人确实可以在极短的时间内获得上百万人的关注。但是,这些注意力加在一起,价值约等于零。而输出想法则不然,虽然愿意看的人的确很少,阅读的门槛也会高很多,也确确实抵触了社交媒体的传播规律。不过,也会有少数人,愿意看一下你的想法,想要了解一下你的思考过程,最后会因此关注你。

类似这样的一个关注者,其价值或超过一万名流量粉。他们在相当程度上能够理解你,所以你们之间存在着真正的沟通,也存在着真正的共识。这种较为深厚的人际关系,能够抵挡时光的侵蚀,并且建立起宝贵的信任。

所谓的个人品牌,就是通过这样的方式建立起来的。

《如果你没有日常地被拒绝,说明你的目标仍然野心不够》 有时雇主拒绝你,可能有各种各样的原因,并不代表你这个人不行。像找工作这种事,只需要找到最好的一个就可以了,而不是很多工作的平均值。——2024.6.7

这篇文章,作者记述了他偶然创作的小插件获得成功的故事:

机缘巧合下,我为帮助一位朋友解决他所面临的问题,用相近一个小时写了个插件。出乎意料的是,这个插件竟然在接下来的数个月里为我带来了远超日常工资的额外收入。

这个插件技术含量并不高,对任何程序员来说都是易如反掌的事情,但对普通人来说,它能让成本降低无数倍,所以他们拥有强烈的付费意愿,最终一传十、十传百,很快,我的微信好友从 200 人不到变成 1000+。

——2024.5.15

纪念陈皓

2023年5月15日,偶然在 Twitter 上看到陈皓的讣告,但当时我还未曾听说过他,就在谷歌查了一下,因此就偶然知道了他的博客——酷壳

陈皓

读陈皓的博客,会真的很感慨。他的博客的内容比较丰富,不仅有很多技术文章,也有一些承载着很强烈观点的文章。而且博客也写得非常好,通过它,再沿着各种外链顺藤摸瓜,可以很完整地接触到他的思想和价值观。

举一个例子,他写过《如何超过大多数人》,里面写到

要超过别人其实还是比较简单的,尤其在今天的中国,更是简单。因为,你只看看中国的互联网,你就会发现,他们基本上全部都是在消费大众,让大众变得更为地愚蠢和傻瓜。所以,在今天的中国,你基本上不用做什么,只需要不使用中国互联网,你就很自然地超过大多数人了。当然,如果你还想跟他们彻底拉开,甩他们几个身位,把别人打到底层,下面的这些“技巧”你要多多了解一下。

在信息获取上,你要不断地向大众鼓吹下面的这些事:

让大家都用百度搜索引擎查找信息,订阅微信公众号或是到知乎上学习知识……要做到这一步,你就需要把“百度一下”挂在嘴边,然后要经常在群或朋友圈中转发微信公众号的文章,并且转发知乎里的各种“如何看待……”这样的文章,让他们爱上八卦,爱上转发,爱上碎片。

让大家到微博或是知识星球上粉一些大咖,密切关注他们的言论和动向……是的,告诉大家,大咖的任何想法一言一行都可以在微博、朋友圈或是知识星球上获得,让大家相信,你的成长和大咖的见闻和闲扯非常有关系,你跟牛人在一个圈子里你也会变牛。

把今日头条和抖音这样的APP推荐给大家……你只需要让你有朋友成功地安装这两个APP,他们就会花大量的时间在上面,而不能自拔,要让他们安装其实还是很容易的,你要不信你就装一个试玩一会看看(嘿嘿嘿)。

陈皓还提出了很多警告:

  1. 不要混淆认知和知识,以为开阔认知就是学习
  2. 不要使用碎片时间学习,习惯利用碎片时间吃快餐后,就会失去精读一本书的耐性。
  3. 玩具手枪是易用的,重武器是难以操控的,多给他们一些玩具,这样他们就会对玩具玩地得心应手,觉得玩玩具就是自己的专业。

这篇文章,不仅是有效的心灵鸡汤,很能让人缓解焦虑,而且也指出了我平时很多司空见惯,但实际上有害的做法。比如我现在摆弄各种玩具多了,就发现已经忘了很多之前本科学的重武器,很多数学定理已经记不太清了。

陈皓还有一些观点,比如他说,「作环保的程序员,从不用百度开始」,我之前虽然对百度没有感情,但后来发现向百度提交站点地图都极度麻烦,而且即使主动提交了网站,百度仍然没有收录我的个人网站,就会想起陈皓的那篇文章,感慨百度还在自暴自弃;「程序员练级攻略」介绍了学习金字塔和主动学习的重要性,我也是深受此影响,因此即使很麻烦,仍然搭建了个人博客,并坚持输出,把自己学到的知识教给别人。

陈皓对我影响深远,想说的太多,却又说不出话来,谨以此文纪念陈皓!

华与华的品牌出事论

品牌出现负面舆论,我自然而然的想法也是应该去压舆论控评,降低负面影响。

但最近读了《华与华方法》,书中有一个理论,「品牌出事论·品牌失灵论」,很有意思,分享给大家。

品牌出事论,指品牌就是为了出事而生的,如果不出事,就不需要品牌了。

品牌失灵论,指品牌出事时,主动认错并买单,则品牌有效,反之,如果出事了不承认,甚至抵赖删帖,想办法压舆论,那么品牌就是失灵的。

例如,一些网店卖了假冒伪劣产品,被封了换个号继续卖,因为他们的品牌本身没有价值,可以随意抛弃,相当于出事了并没有为错误买单。而一些大品牌,要是出事了,可能会毁掉整个品牌。因此更有动力提供好产品。

作者认为,

  1. 品牌出事时,应该马上认错,接受惩罚,甚至可以加大对自己的惩罚,这样就是最佳品牌,可以赢得顾客的信任。

  2. 维持完美人设没有好处,因为很容易崩塌,会加大风险。

  3. 会投诉的用户,是最好的用户。用户投诉的时候,就是你赢得终身终身用户的时候。因为你只要倾听用户的投诉,并解决他的问题,甚至给予一定的补偿,他就会终身信任你。

「食贫道」和对内容的思考

前一阵子偶然发现一个B站up主「食贫道」,做出了很多很有深度的视频,比如「迦南孤儿」,进入战时的以色列,从不同的角度介绍加以冲突;「迷失东京」,选题居然选了日本黑帮,日本风俗业等题材。

最近正好读到一篇「食贫道」对内容的思考:

  • 我对自己的定位一个“正能量硬核美食up主”,正能量是对自己的要求,“硬核”则是希望通过美食来传递不一样的内容。

  • 事实上,我们到现在做片子都没有脚本,完全是即兴、靠对现场的感觉和冲动,怎么想就怎么干了。然后在后期再去探索自己情绪的爆发点,朝爆发点上使劲儿。

    这其实跟我的工作经历也有关,做调查记者的时候,是不能写脚本的——那叫主题先行,所以,其实即便是做美食,过去做内容的感觉还在——在生活中找热点,到现场去捕捉细节,然后在观众的反馈中寻找答案。

    然后一开始,主要都是关注哪些饭店有哪些好吃的,虽然很开心,但是开心之余会有落寞吧,会觉得自己做的“太轻”了,自己的创作意图和心愿,不止是美食那么简单。其实食物是人类生活赖以生存的基础,透过食物,应该有更多的情感、理念、意义去表达,所以后面就开始想做特别节目。(如果能想到,能投过食物来传达更深层次的东西,内容也会变得更有深度)

  • 「有意义的内容」:首先要明确,自媒体是为谁服务的?可能说起来有些人会觉得很冠冕堂皇,但我认为内容创作者就是为人民服务的。这是一个基本概念,不管你是路边说书的,还是自媒体搞直播的,你为公众生产内容,就应该明确这个位置和导向,如果偏离了这个,那么早晚就会出问题。(这里感觉「人民」的概念好宽泛,不再细分一下市场吗?)

  • 「消费场景」:你的视频是谁在看?在哪里看?什么时候看?这个问题的答案,决定了受众的痛点,决定了选题的方向,再进一步,决定了曝光量、阅转比、转化率。

    以美食为例,很多美食吃播视频消费的场景是大家吃饭的时候。出于人类本能的需求,美食视频本身食物的特写、主播吃的很香吃的很多,甚至吃得吧唧吧唧,都可以极大地促进受众的食欲。在这种消费场景下,我们出现了大胃王等各种吃播。但问题是随着能吃的人一代一代出,你一年能吃那么多,能连续不停吃下去吗?仅仅依靠消费场景和视觉刺激,繁荣是长久的吗?这势必要寻找自己更有内涵的人设和内容,才能让观众始终保持对你的关注。

理解Merkle-Tree(默克尔树)

默克尔树,也称哈希树。

定义:若一种树,满足每个叶节点等于数据块的哈希值,每个非叶节点都等于其子节点的哈希值。

Merkle tree - Wikipedia

例如,假设我们要验证以下数据:

1
Hello, world!

我们可以将其分成两个小块:

1
2
Hello, 
world!

然后计算每个小块的哈希值:

1
2
SHA256(Hello, ) = 1115dd800feaacefdf481f1f9070374a2a81e27880f187396db67958b207cbad
SHA256(world!) = 098f6bcd4624e37a20471f1875a427d7d1172a5b28685e5b637d5cc72f707d64

接下来,将这两个哈希值配对并计算它们的哈希值:

1
SHA256(1115dd800feaacefdf481f1f9070374a2a81e27880f187396db67958b207cbad, 098f6bcd4624e37a20471f1875a427d7d1172a5b28685e5b637d5cc72f707d64) = 3a7bd3e2360a3d29eea436fcfb7e44c735d117c42d1c1835420b6b9942dd4f1b

现在只剩下一个哈希值,这就是默克尔树的根哈希值:

1
3a7bd3e2360a3d29eea436fcfb7e44c735d117c42d1c1835420b6b9942dd4f1b

作用

默克尔树主要防止传输的数据不被篡改。一个默克尔树,若某个数据块的内容发生修改,则对应的叶节点的哈希值就会改变,根哈希值就也会发生改变。所以,我们要验证数据是否发生篡改,只需要比较哈希值即可。

在区块链中,例如比特币,假如比特币不用默克尔树,那么每个节点都必须保留每笔比特币交易的完整内容,这将是极其庞大的数据。而利用默克尔树,只储存并比较根哈希值。

参考资料:https://www.simplilearn.com/tutorials/blockchain-tutorial/merkle-tree-in-blockchain

附比特币计算默克尔树-根哈希值的源码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
uint256 ComputeMerkleRoot(std::vector<uint256> hashes, bool* mutated) {

bool mutation = false;

while (hashes.size() > 1) {

​ if (mutated) {

​ for (size_t pos = 0; pos + 1 < hashes.size(); pos += 2) {

​ if (hashes[pos] == hashes[pos + 1]) mutation = true;

​ }

​ }

​ if (hashes.size() & 1) {

​ hashes.push_back(hashes.back());

​ }

​ SHA256D64(hashes[0].begin(), hashes[0].begin(), hashes.size() / 2);

​ hashes.resize(hashes.size() / 2);

}

if (mutated) *mutated = mutation;

if (hashes.size() == 0) return uint256();

return hashes[0];

}

不要给牦牛剃毛

今天读到一篇有意思的文章《不要给牦牛剃毛》(Don’t Shave That Yak!)。

给牦牛剃毛(Yak Shaving)指的是一系列步骤的最后一步。当您发现需要做的事情时,就会发生这些步骤:

“我今天想给汽车打蜡。”
“哎呀,打蜡要用到软管,软管还是冬天坏了。我需要在家得宝买一个新的。
“但是家得宝在 Tappan Zee 桥的另一边,没有我的 EZPass 到那里太痛苦了,因为要交通行费!”
“等等!我好像可以借用我邻居的 EZPass……”
“不会的!鲍勃不会把他的 EZPass 借给我,直到我还我儿子借来的 mooshi 枕头。”
“我们还没有还给他,是因为一些枕芯掉了出来,我们需要剪些牦牛毛来重新填充它。”
接下来你知道的,你在动物园里,给牦牛剃毛,这样你就可以给你的车打蜡了。

解决方案也很简单,可以参考马斯克的「五步工作法」:先判断每项步骤,把能删除的全部删除了;再做简化和优化。

比如在上面的例子中,就是不要去家得宝买软管。

有的时候,现在的「完成」比以后的「完美」更重要。

好看的网站

onepagelove 网站收集了一些好看的单页网站。我觉得可以为自己做网站提供一些思路。这里摘录几个例子。

  1. mubasic

image-20240502100624374

mubasic网站的设计很独特,之前没见过类似的设计。但缺点似乎是不是很实用,用户点进去会不知道该做什么。

  1. superlist

image-20240502101407008

  1. Newest Americans

image-20240502101647885

感觉做网页设计的方式有很多种,或许不应该拘泥于过去各种成熟的模板。

「我想,一个人还能在网上写下自己的感慨,那么他的个人境遇就不会差到哪里去。」——槽边往事

我自己也有这样的体会,自己发社媒多的时候,说明心境起码没有太糟。

「你的特质需要被保护」

今天读到一个帖子,作者Owen认为「你的特质需要被保护」。

特质包括对产品的想法,直觉和审美。

Owen发现,当他和某些圈子混熟之后,很容易受到他们的影响,以前坚持的想法会和所在的圈子看齐,(可能是为了被接纳吧),从而离那个「有特质的自己越来越远」。

而特质是很宝贵的,需要被保护起来。

作者建议,最好一开始就和不喜欢的圈子 or 人保持一定距离。

我感觉,隐身于一个群体里,太安全了。而「特质」是一种差异化,差异化就是竞争力。