Posts for: #Tech

了解 GitHub

这些天对 GitHub 的信息做了些收集整理,看网上没有很完整的信息,发出来共享。

我个人对 GitHub 能高速发展的一些观点

  • 解决的问题

  • 开发者

  • 大规模远程协作、交流代码的需求

  • 成为开发者对外的名片

  • 组织和企业

  • 存储代码的 SaaS 需求

  • 抓住的机会

  • 踩中了开发者数量爆发增长的二十年(2011.08 Software is eating the world - Marc Andreessen)

  • 在持续增长的市场里,做了多年有复利的事

  • 有可能在 AI 带来的“人人都是开发者”的时代,进一步增长

阅读过程中我的一些感触

创始人说:And we’re all about getting things done. We’re very lucky to be working (mostly) on a web app, which means it’s super easy to make changes fast. We’ve learned it’s much better to ship it now and fix it later, once you can see how people are using it, than it is to let it linger in development forever. Just ship it.

[阅读全文]

关于 xz backdoor 的观点

一位自称 Jia Tan 的开发者,花了三年时间,取得开源软件 xz 社区信任,谨慎地植入了一个后门,可以让攻击者无需账号也能通过 sshd 进入系统。如果成功,大多数 Linux 系统(也就是大多数公司的服务器使用的操作系统)都会受到影响。

最后功亏一篑——因为程序没写好,系统资源占用过高,被一位认真的工程师分析并发现。

这几天网上有很多技术分析(我看不懂)和讨论,说说我的观点。

  1. 这次事件,其实正好证明了开源界常说的:只要有足够的眼睛关注,任何漏洞都无处藏身。

  2. 任何软件,而不仅仅是开源软件,会受到这样的攻击。商业产品中被发现后门的事件,历史上发生过不止一次。

  3. 未来的 AI 或许有机会帮助检查出类似构造巧妙的后门和漏洞。

  4. 开发者们可能会面临一小波信任危机——要取得社区的信任,以后或许会更加艰难一些。而中国开发者(虽然 Jia Tan 未必——甚至大概率不来自中国,但这个 ID 的设计,就会带来不好的影响)会面临更多挑战。

  5. 对于信任问题,或许一个解决办法是付费。具体实现是:要提交代码,先做一笔小额支付验证身份,认证完成后可以立即返还。后续代码质量高,项目方甚至可以将收到的捐赠款项分配给贡献者。在知识星球里,通过付费,我们减少了数据量、噪音,提高了服务质量。在开源领域,或许有机会通过付费,借助真实世界里对金融领域的严谨认证来保障信任。

  6. 对这类攻击,普通用户其实没什么好应对的,要我说,“用小众产品”就能避开很多攻击。

  7. 要是真的很在意,那我有些朋友有些古怪习惯,比如:只在虚拟机里访问网络。比如:用极“老旧”但是稳定的系统和版本。

–

精英团队

  1. 其实你们做得很好了

上周有机会近距离听 QQ 早期设计者和开发者聊起往事和产品。送走客人后,ppchen 跟我说,刚刚有句很重要的话,我估计你没听懂。

ppchen 指的是,我请教人才培养,怎样让团队更厉害时,对方说的:其实你们做得很好了。

我脑子里“自动过滤”了这句话——客套和夸奖,不用太在意。ppchen 认为:其实,小规模团队,做好用的产品,老板没怎么管,团队就跑得很顺畅,能服务好用户,能挣到钱,这真的做得很好了。

2. 这种工作方法需要精英团队

前几天讨论 37signals 提出的 Shape Up 方法。这种方法想解决的问题是:开发者和设计师认为项目一直在持续,不发布,看不到尽头,产品经理疲于奔命没有时间对产品进行战略思考,而创始人郁闷地问为什么我们变慢了。

探讨期间,邱岳说了一嘴:37signals 提出来的工作方法,都需要是精英团队,才能很好地实践。

我脑子里闪过:是呀,其实我有点不靠谱,一会推动大家试试 Scrum,一会又考虑 Shape Up,想试试 remote 时,趁着疫情大家就四五个月居家……这么折腾之下,团队都还很高效,可不就是精英团队嘛。

3. 夸夸我的同事们

有前同事曾经很郁闷地批评我:不夸人,做得好也不夸——在大家看来,就没有了肯定和鼓励。

现在送上几句赞美:

知识星球团队是精英团队。我们用很少的人力,支持了其他互联网公司可能要两三倍甚至十倍人力和资源才能支持的业务。因此让公司有了利润。

知识星球团队是精英团队。我们能在最近互联网产品如履薄冰的几年里,做好安全,也做好产品体验,做了艰难的平衡,这很难,但我们努力维持住了对大量活跃知识社群的支撑。

知识星球团队是精英团队。我们并不满足于现状,还在努力探索。虽然当下输多赢少,但只要不下牌桌,就还有机会创造。

我们守好本分:做简单好用的产品。做好服务挣到钱。大家高效且工作生活平衡。能做到这些,大家都是精英 :)

–

好工具记录

开一个页面,记录一些我自己有深度使用的好工具,不定期更新。

开源产品

小产品

中大厂产品

  • Notion
  • Slack
  • VSCode
  • ChatGPT
  • Spotify
  • 1Password
  • Zoom

大厂产品

Google 全家桶

  • Chrome
  • Gmail
  • Google Slides
  • Google Calendar
  • Google Keep
  • Google tasks
  • YouTube
  • Google meet
  • Gemini
  • Google Drive
  • Google Map

Apple 产品

  • Apple Notes

腾讯产品

  • 微信
  • 企业微信
  • 微信读书

开发

其他产品

这里记录的,未必深度使用,但是在各种渠道看到过,感兴趣,做记录备查。

新产品的方向怎么找

这里说的“新产品”,偏小而美,毕竟我们没什么远大志向,从小事做起。

前几天和朋友聊天,他说多年前的暴风影音在下载站找下载量大,但还没有商业公司介入的产品方向,跟我介绍了现在他选项目的方法。

一看行业数据。从有行业信息的公司那里订阅、购买数据,找到增长快的类目。

二看支付数据。设法找海外一些支付产品的数据,这通常是更直接的“现金流”情况。

然后再判断有哪些是自己能做、适合的。

这种方法,可以称之为从数据里挖。

之前跟同事聊到,这两三年,大厂们默默放弃了很多项目——不再是全面开花的思路了,不挣钱,或者不够挣钱,就可能会被裁撤。

但这些项目在大厂不挣钱,不代表拿到小厂不挣钱。flomo 向飞书收购的“幕布”,或许可以是一个这种例子。

这种方法,算是从大厂的边缘项目里挖。

此外海外和国内的独立开发者们做了很多小产品,这些可能也会是项目灵感——也类似在下载站找下载量大,但还没有商业公司介入的产品。

这种,是从独立开发者、开源开发者的实验项目里挖。

至于什么项目能做,我自己的考虑是:

我自己需要,且会天天使用的。如果不是我自己会用的东西,我很有可能没有好手感。

能做出不一样的。如果没有不一样,不太容易被识别、记忆,那就不容易站住脚。

用户有需求(如:多少人会搜索相关信息),且有比较直接的商业模式的。否则,无法形成现金流的正循环,可能很难长期做。

–

Ubuntu 里的中文输入法

给一台 2015 年的 Macbook Air 装上了 Ubuntu,本来想偶尔没带电脑时可以顶一下,不过确实键盘太难用,以及有点慢,想玩 Linux,还是回头再去正经买一台电脑好了。

Ubuntu 我装的是英文版,所以装完后还需要简单设置中文输入法:

  • System Tools - Language Support 安装简体中文
  • sudo apt-get install ibus-googlepinyin
  • ibus-setup 和 Region & Language 里设置

基本就可以了。就用来上网、写字的话,再装几个软件就差不多了,比如:

  • Chrome
  • VSCode

VS Code Commit 中文名乱码

Mac 和 Linux 下用 VS Code,中文文件名在 Commit 到 Github 时会乱码。解决方法:

git config --global core.quotepath false

终身幼儿园

再过半个多月,我有机会拜访 Scratch(https://scratch.mit.edu/)的创始人 Mitchel Resnick 教授。

他带领的“终身幼儿园小组”,在 Scratch 之外,还发布了一款能运行在手机、iPad 上,方便随时随地创作的移动端产品 OctoStdio(https://octostudio.org/zh-CN/)。

诚邀你(或者你的孩子)体验 OctoStudio(应用商店里搜索 octo studio 就能下载),如果有任何 Scratch 或 OctoStudio 的问题或改进建议,给我留言,我会向 Mitchel 教授转达。

为了帮助你了解 Mitchel 教授的理念,我摘抄部分他写过的《终身幼儿园》中的部分文字,或许对你激发孩子的创造力,能有些启发。

–

最有价值的学习经验来自当你积极参与设计、建造或创造某样东西的过程中,即当你通过制造来学习的时候。

和能够思考的玩具相比,能引人思考的玩具才是我的兴趣所在。如果孩子们可以用这个玩具去想象和创造他们自己的项目,让自己沉浸在创造性学习螺旋中,那么这就是能让我感到兴奋的好玩具。

为什么要专注于项目?我们认为编程应该是一种流畅的表达形式,就像写作一样。当你学习写作时,仅仅学会拼写、语法和标点是不够的,还要学会讲故事和交流想法。编程也是如此。要想学习编程的基本语法和标点,挑战难关可能是很好的方法,但这不能帮助你学会表达自己。想象一下,通过填字游戏来学习写作,可以提高你的拼写技能和词汇量,可能也很有趣,但你能成为一个好作家吗?能讲故事、流利地表达你的想法吗?我想是不可能的。无论是写作还是编程,以项目为本的方法都是达到流畅的最佳途径。

Scratch则是另一种屏幕上的游乐场。我们最初的口号是“想象、编程、分享”。

当问题不能被立即解决时,很多孩子都会因此而沮丧或泄气。但EmeraldDragon不是,她不怕犯错误,对她来说,错误本身就是整个过程中的一部分。当她一开始没有成功的时候,她渴望尝试、再尝试,她不断征询社区其他人的意见和建议,并继续寻求修改和完善项目的新策略。这种态度对创造过程至关重要。肯·罗宾逊爵士在他广受欢迎的关于创造力的TED演讲中,强调了冒险和犯错的重要性。“如果你不准备犯错,你就永远不会想出任何原创的东西,”他解释说,“我们正在运行的教育系统中,错误是你能做的最糟糕的事情。我们正在教育人们放弃他们的创造力。”

以及,书中给学习者的十条建议,很简单,很朴实,也很实用:

从简单的开始做起

做你自己喜欢的东西

如果你不知道该做什么,那就先瞎折腾吧

不要害怕尝试

找到一个朋友共同协作,并分享想法

为激发你的想法,复制也没关系

把你的想法记在本子上

建造,拆开,再重建

很多事都可能会出错,要坚持住

创建你自己的学习策略

二十年,一百年,或者一千年

在杨澜的《提问》里,看到这样一段问答:

杨澜:回顾自己这一辈子设计过这么多建筑作品,您认为自己是怎样一位设计师?

贝聿铭:很难说,我是比较保守一点的,可是因为问题想得穿,想得透,总有一点好结果的。建筑至少要(存在)二十年、五十年、一百年,希望一千年。不赶时髦,我不是时髦建筑师。

刘慈欣在《三体》里,写了一段:

学者们开始寻找那些在漫长的时间中保存下来的信息。史前古陶器上的图案,保存了一万年左右;欧洲岩洞里发现的壁画,大约有四万年的历史;人类的人猿祖先为制造工具在石头上砸出的刻痕,如果也算信息的话,最早在上新世中期出现,距今约二百五十万年。可你别说,还真的找到了一亿年前留下来的信息,当然不是人类留下的,是恐龙的脚印。

研究继续进行,但没有什么进展,科学家们显然已经有了一些结论,但在我面前总是欲言又止。我对他们说,没什么,不管你们得出的结果多么离奇或离谱,没有其他的结果,我们就应该接受。我向他们保证,不会有什么东西比我的经历更离奇和离谱的,我不会笑话他们。于是他们告诉我,基于现代科学在各个学科最先进的理论和技术,根据大量的理论研究和实验的结果,通过对大量方案的综合分析和比较,他们已经得出了把信息保存一亿年左右的方法,他们强调,这是目前已知的唯一可行的方法,它就是——罗辑把拐杖高举过头 ,白发长须舞动着,看上去像分开红海的摩西,庄严地喊道, “把字刻在石头上 !”

很多事,加上“时间”这个参数,应该就能检验出,这事究竟值不值得做。在看到贝聿铭那句“建筑至少要(存在)二十年、五十年、一百年,希望一千年”时,我在想,我们能做些什么,值得存在二十年,甚至一百年,甚至一千年的?

你有什么想法吗?

你真的相信这些计划吗?

2014年,当时我刚刚打算离开信息安全行业,毫无经验、莽撞地试图做移动互联网,所幸股东(腾讯和启明星辰)给了非常好的帮助。在规划着新的产品时,我有了些想法,做了个计划,去找 Tony 请教。

写这篇文章的时候,我翻出了当时的计划,截几张图——当时天真地设想了这样的目标:

还有服务器、数据库、云存储的规划:

当然还有许多,比如人员、预算的计划等等。当时,我努力地想说清楚我的规划,但只说了一小会儿,Tony 就打断我的滔滔不绝,问:你真的相信这些计划吗?

我有些懵,不过——确实,在这么列计划的时候,我心里并无底气。于是有些羞愧地承认了。

Tony 当时给我的建议是:先不急着做超过三个月的计划。

对初创公司来说,优先级更高的,是先想清楚想解决什么问题,要用什么方法解决。至于多少日活,多少付费用户,不是计划了就能有,而是我们解决了用户遇到的问题之后,自然而然来的。

然后他跳过了这些“宏大”的规划,跟我聊起细小但扎实的用户需求、使用习惯、交互体验了。

从那以后,我确实比较少盲目做过于长远的考虑了(瞧,直到现在,我们都没实现那时的日活目标)。

多说一句,并不是说战略、规划不重要,而是什么阶段,该做什么阶段最重要的事。