Weekly#20

又鸽了一周,这周的周刊一定要赶出来啦!

上周去了韶关看红叶和流星,还爬了山看日落。

日落还是挺好看的,山顶望过去,有点雾气,层峦叠嶂,就是风大,太冷了。

晚上看双子座流星雨,恰好是农历十四,月亮在天上像是一个电灯,很亮,稍微暗淡一点的星星就比较难看到。

一群人躺在一个稍微暗一点的地方看流星,冷风哗哗地刮,超级冷,所幸还是看到了一颗流星,很明亮的一颗星星,非常快速地从夜空中划过,转瞬即逝。

去的这个时间,红叶也差不多掉光了,只剩下光秃秃的树枝,不过还是给女朋友拍到了一张她挺满意的照片( ˘ω˘ )

总的来说,这次行程时间选的不好,太冷,没法一直在外面观星;太晚,已经没有红叶了。

这周周刊的内容包括上周整理的内容,所以比较多,希望你看得开心啦~

新的一周,祝好~ 提前祝你圣诞快乐~ (又是给自己送礼物或者向别人要礼物的好机会)

News | Article

State Of JS 2024

前阵子看到问卷我回答了一下,那 150 个中国回答者中或许有我一份(´・ω・`)

了解了解 2024 年 JS 的一些特性和趋势~

State Of The Web 2024

我们的任务是将 HTTP Archive 的原始统计数据和趋势与 web 社区的专业知识结合起来。

Web Almanac 网络年鉴是一个关于网络状态的综合报告,由真实的数据和可信的网络专家支持。

2024 年版包括 21 个章节组成,涵盖了页面内容、用户体验、发布和分发的各个方面。

25+ Years of Personal Knowledge Management. From Scattered Ideas to Connected Thoughts

作者分享了他 25 年来知识库的整理,涉及很多内容的整理,软盘,光盘,音乐,照片,视频,笔记等,其中作者最大的心得应该是要有一个统一合理的命名方案。

文章里有不少整理数据的技巧和命名方案,可以借鉴一下。

某种程度上,我觉得我和作者也挺像,很喜欢收集网络上的各种链接,整理到笔记系统里,不过和作者相比,只能是小巫见大巫。

我生平第一次盯着闪烁的光标。它在呼唤我。希望我写下一些东西。于是我答应了。我爱上了它。

Source

在最初的日子里,我学会了如何保存文件、为文件命名等。这些都是很好的经验。正确的数据管理始于清晰一致的命名。我很快意识到,命名对我日后检索内容至关重要。

Source

结构化带来了易用性,减轻了我的心理负担,让我知道在哪里可以找到我需要的东西。而命名方案则让一切都变得美轮美奂。我慢慢迷上了数据组织。

Source

我对所有东西都有明确的命名规则。

比如电影: <Engligh name> (YYYY) (EN|FR|JP|...) (<Quality>) 。电视剧: <English name>\Sxy_<EN|FR|JP|...>

一致性对我保持理智至关重要。这也使各种操作的自动化变得更加简单。

Source

我收集 MP3 和 FLAC 文件。实际上,我从来没听出有什么区别,但我还是想获得 FLAC 版本😂。

Source

hhh,同感,虽然听不出来,但下载一定要下音质高的。

我开始关注大量撰写有关 IT、软件开发、技术和科学的有趣文章的人。

我开始整天阅读 Jeff Atwood、Joel Spolsky、Steve Yegge、John Perry Barlow、Dave Winer、David Heinemeier Hansson、Bruce Schneier、Ward Cunningham、Chet Haase、Romain Guy 等人的文章。

他们在不知不觉中成为了我的良师益友。这就是网络的魅力。

Source

我喜欢 RSS 的原因是,它能让我轻松避免错过文章,但更重要的是,它有助于确定内容消费的优先顺序。

有了一份有条理的信息来源清单,并对这些信息进行优先排序,我就能保持清醒的头脑,知道自己想先浏览和消费哪些内容。

多亏了 RSS,我才从随机/偶然的内容消费方式转变为系统的消费方式。

Source

我觉得我已经接受了是时候放下过去的想法。

我没有给自己施加压力,但我扔掉的东西越来越多。

我慢慢地这样做。深思熟虑。

这并不是因为我害怕失去一些重要的东西,而是因为我有美好的回忆,我意识到我需要时间来接受删除一些东西,即使我知道我再也不需要这些东西了。

在与我的朋友安德烈讨论时,他提到了对事物的情感依恋,并像近藤麻理惠建议的那样,轻轻地放下这些东西。

我仔细想了想,虽然我确实对生活中的很多实际事物没有感情,但我其实对很多数字事物有感情。

Source

我并没有坚持写博客,只是为了好玩。

2018 年底,当我准备开始自由职业时,我开始更认真地在 Medium 上写博客。

我的理由是,写更多的文章将是双赢的。我可以帮助人们学习,也能获得更多认可,希望能帮我找到新客户。

Source

最重要的是,不要为了安排好一切而毁了自己的生活。人生苦短。设计你自己的系统,尝试应用帕累托原则。整理最重要的东西,不要为其他东西感到难过。

Source

If you had to store something for 100 years, how would you do it?

这篇文章探讨了一个单一的问题:如果你必须存储某样东西 100 年,你会怎么做?

文章探讨了很多存储介质:磁盘,云服务,CD,磁带,石头,印刷品,IPFS,区块链…

文章很长,12000+ 字,但也值得一看。

即使考虑到人类对整齐数字和十进制系统(10 根手指,10 根脚趾)的偏好,100 年仍然是任意的。

但 100 年之所以成为我们的标准,正是因为它是可实现的。

它是在单个人生的外部可能性范围内的一个尺度,但不是单个人职业的尺度。

它是一个无法通过个人意志力实现的持续时间。它需要跨越至少一代人的规划和组织。

这个时间段足够宽广,社会、经济和技术变革的机会是绝对的,但又足够接近,以至于所有的背景不会崩溃。

它是从拿破仑战争结束到第一次世界大战开始,从短波无线电的发明到 Facebook 时代,从亨利五世国王的统治到马丁·路德发表《九十五条论纲》,从伊戈尔·斯特拉文斯基的《春之祭》首次演出到达夫朋克的最后一张专辑发布,从盖茨堡战役到部分核试验禁令条约的签署,从电话专利到苹果 I 的发布。 我们选择了一个世纪的尺度,因为大多数物理对象在良好的保养下可以存活 100 年。

这是可以实现的,但我们选择它是因为主流数字存储介质的设计根本没有考虑到这个标准。

在亚马逊 S3、微软 Azure 和谷歌云的管理下,人类生产的总量是不可想象的。

它是一个黑洞,一颗如此密集的星星,它已经坍缩到自身,只会变得越来越重。

Source

对记录作为存储格式稳定性的信仰最著名的例子目前分别是距离地球 152 亿英里和 127 亿英里。

它们相对于地球以 38,026.77 英里每小时和 34,390.98 英里每小时的速度在星际空间的日球层外旅行。

载于旅行者号太空探测器上的旅行者金唱片是由镀金和镍的铜制成,而不是乙烯基。

它们包含 55 种人类语言的问候;26 个音乐录音,包括盲威利·约翰逊、查克·贝里和约翰·塞巴斯蒂安·巴赫的作品;自然的现场录音;以及 116 幅生命的编码图像。每张唱片的设计寿命超过十亿年。

Source

湿度、害虫、光、磁力和热量几乎可以摧毁任何东西。减轻它们的影响可以帮助保护几乎所有东西。

Source

在与其他可用存储技术进行比较时,脱离其周围的组织、财务、架构和社会结构,磁带存储可能是单站点存储大型数字收藏的最佳选择,前提是该收藏永远不需要更新。

但磁带的使用寿命仍然最多以几十年为单位,设计上是为了在我们达到 100 年标志之前被继任系统替代。

Source.

如果这个项目被称为 “千年规模存储”,历史记录表明有两种特别成功的方法可以确保书面和视觉媒体的存活——在石头上雕刻或在泥板上刻写。

人类在任何类似文明或书面历史出现之前,已经在数万年里绘画、雕刻和塑造石头。

许多这些作品依然存在,只有在暴力改造或毁灭的情况下才会消失,无论是由于人类还是自然力量。

Source

一个世纪规模存储的解决方案是分散你的资产,将副本分散到世界各地,以便没有灾难、战争或资金突然损失能够威胁到数字收藏的生存。

Source

这些例子的共同点在于它们都涉及关心的群体。

最持久的去中心化努力并不是因为技术或组织创新而成功,而是因为招募了几代人对其价值有情感和智力投资。

对于云存储服务和分布式存储方案,问题在于它们是否能够激发必要的热情和警觉性。

Source

可以说,存储方法和媒介在如此长的时间内与生存基本无关。

世纪级存储的成功归结于存储和任何持续时间的保存所需的相同因素:维护。

一个人日常照顾某物的工作。如果一个收藏在 400 年内得到了适当的维护和照顾,那么这个收藏在 400 年内存活的几率很大。

它的存储方式会随着维护而演变或改变,但如果有维护者,它就会持续存在。

Source

如果你想存储某样东西一百年,未来能够读取和检索该存储项目的能力至关重要。

而确保这种能力的唯一方法是保存允许你访问数据的软件,保存能够运行该软件的硬件,以及保存维护整个系统所需的知识和技能。

Source

如果你,作为一个阅读此文的个人,想要存储某样东西并确保它能存活一个世纪,你应该怎么做?不止一种方法。

你应该结合所有可用的方法,层层备份,成群的副本,最重要的是,选择能够促进警觉和关怀文化的做法和场所。

The 6 Mistakes You’re Going to Make as a New Manager

你可能会陷入的最常见的陷阱就是(很多时候是下意识的)不愿授权。从开发者过渡到经理的过程中,我发现自己对以前的职责耿耿于怀,无法信任我的团队来完成我曾经做过的工作。

你会把它合理化,“他们不会像我一样去做”,但即使这是真的(事实并非如此),从长远考虑,你还是希望你的团队能够处理你以前做过的事情。否则,他们不会成长,你也不会成长。

请记住,授权并不是随意分配任务,而是要赋予团队权力,信任他们,让他们成为你新的领导者。

Source.

真正的成长来自团队产出的质量,而不是成员的数量。

专注于推动团队更上一层楼;为他们创造一个可以提出新想法、完成出色工作的环境。

这不仅能提高工作质量,还能让团队更团结、更快乐。

请记住,一个合作愉快的小团队会比一个不合作的大团队做得更好。

Source

团队参与度是一个微妙的平衡。参与过多,你成了微观管理者;参与过少,你显得事不关己。

平衡的关键在于“赋能”。设定清晰的目标和期望,然后放手,让团队自主完成。你的角色是指导,而非指挥。这既能培养团队责任感和自主性,又能确保项目目标达成。

我的经验告诉我,有效参与是平衡的艺术。你需要营造一种既能提供支持,又能鼓励创新和自主的环境。关键在于,在提供指导和支持的同时,尊重团队的独立性。

Source

你经常会怀疑自己的工作,甚至怀疑自己所做的一切是否有价值。

我也有过这样的经历,根据我的经验,对你来说,成功就像问自己两个问题一样简单:

  1. 我的团队在完成交付吗?
  2. 他们幸福吗?

如果两个答案都是 "是",别担心,你会成功的。🎉

Source

Ten Thousand Years

废物隔离试点工厂(Waste Isolation Pilot Plant ,WIPP)是美国唯一的永久地下核废料储存库,旨在储存所有这些放射性材料并保护我们免受其影响。

WIPP 需要经历上万年的演变,里面的核废料才会被完全掩埋,固化在地壳中。

问题是怎么提醒往后 10000 年的人,这个地点是危险的。

有人说用语言,但是语言有半衰期,像是很久以前的文明留下来的文字现在人未必能明白了。

有人说用符号,但是符号表达的含义也是在演变的,现在看起来是警告的符号,在以后未必是相同的含义。

有人说把那个地方建造的比较怪异吓人,但是这可能反而会吸引一些人去探索。

还有人说可以创造一种受到辐射就会变色的猫,创造关于它流传的传说,音乐,电影,让以后的人看到猫变色了就知道危险。

要把一个信息准确地传达万年之久,确实很不容易。

If Not React, Then What?

作者建议避免使用 Single Page Application(SPA),因为这会带来很多客户端复杂性。

他提出了一个 最小客户端复杂性规则 :

在服务器上运行的代码可以完全计算成本。服务器端系统的性能和可用性由供应组织控制,延迟可由开发人员和 DevOps 工程师主动管理。

相比之下,在客户端上运行的代码则是在 “魔鬼电脑” 上运行。开发人员无法控制经验延迟、客户端资源甚至可用的 API。

客户端网络开发的最佳概念或许是面向影响的编程。一旦代码离开数据中心,网络开发人员所能做的就是寄托哀思和祈祷。

因此,一个不合理的有效策略就是少发送代码。在实践中,这意味着 HTML 和 CSS 比 JavaScript 更受青睐,因为它们能优雅地降级,并具有更高的压缩率。

Source

作者还给了不同场景下,不使用 SPA 的替代方案。

同时,对于一些开发人员疑虑给出了答复。

不过说实话,公司的项目中很难不使用这些 SPA 框架,毕竟熟悉了,觉得 SPA 更简单。

Don't Fuck With Scroll

文章页面实现了动量滚动,页面滚动感觉有一种惯性的感觉,但是体验挺糟糕的。

作者例举了动量滚动的坏处,不推荐使用。

How a BBC navigation bar component broke depending on which external monitor it was on

挺有趣的 Bug 定位过程,谁能想到外接显示器会影响 click 的事件处理呢。

作者行文也挺有趣的,作者大概很喜欢玩逆转裁判吧(´・_・`)

不过幸运的是问题能够复现,复现问题是最重要的

就像常见的错误一样,问题非常复杂,但解决起来却非常简单。

这是一堂很好的课程,让我们明白了如何谨慎地假设 API 是如何工作的。

即使是用户界面事件规范也没有明确说明 screenX 和 screenY 中是否可以出现负数。

虽然这段代码在单元测试、Puppeteer 以及各种浏览器、设备和辅助技术工具的手动测试中都经过了严格的测试,但这个错误始终没有被发现。

Understanding the BM25 full text search algorithm

BM25 是搜索引擎用来估计文档与给定搜索查询相关性的排名函数。

文章分析了 BM25 的数学公式,在作者的拆解下还是相对容易理解。

AutoConsis:UI 内容一致性智能检测

美团的一篇博文,讲述如何使用 LLM 进行 UI 测试。

最近字节也出了一个类似的工具: Midscene.js

LLM 确实带来了很多变化。

'I f–ked up': How a pilot crashed a full passenger jet into the bay (and didn't lose his job)

一位飞行员迫降在了海面上,被问及原因,他坦诚地认错,是他搞砸了事情。

幸运地是,机上无一人身亡,基本也没什么受伤,顶多沾了点水。

有时候,最好的办法就是承认错误。

当被问及出了什么问题时,他简单地回答道:"就像你们美国人说的那样……我搞砸了"。

“我搞砸了” 这个理由,或者在法律界被更形象地称为 “麻生辩护”,用来证明有时坦白认罪是摆脱困境的最简单办法。

Source

这种自责也是对此事的一种了结,因为你很难与一个告诉你自己犯了大错的人争辩。

Source

Sustainable Hardware Choices

大家多久没有更新设备了呢?

我的电脑是 MacBook Pro 2018 款,手机是 iPhone Pro 11,手机的背壳摔得稀烂,但套了个外壳又继续用着了,电池不够就随身带个移动电源。

这些年很少更新设备,能用就用着,一方面是它们的性能还能满足我的使用需要,一些卡顿也还能接受;另一方面是也不想花费太多资金。

文章鼓励大家关心设备的可持续性,减少环境污染。

我不是一个需要最新、最先进技术的人。它只需要发挥作用,让我快速、轻松地完成我需要的任务。我需要的是低摩擦。

Source

科技行业会让我们相信,我们需要每年升级我们的设备。

但实际上,除了摄像头稍微好一点之外,新机型能给我们带来什么呢?

现在,各家公司都在不遗余力地说服我们,我们需要 “人工智能” 的一切。

但是,这些东西能让我们更快乐或更有效率吗?(天哪,我讨厌这个词)

还是说它只是提供了另一种让我们买更多东西的方法,同时方便地获取我们更多的数据?

我知道,每年拥有一部全新的高级手机,对我的幸福感不会有丝毫影响。

Source

在选择可持续发展的硬件时,请记住:

  1. 尽可能延长设备的使用寿命,使电子垃圾远离垃圾填埋场,并减少体现排放和制造新设备所需的原材料。
  2. 二手货可能和新货一样好,而且通常更便宜。
  3. 如果你真的想买新的,那就买更可持续的。
  4. 出售、赠送或回收您的旧设备,让它们为他人(或其他事物)所用。

Source

A letter to open-source maintainers

我想讨论的第一件事就是这个:所有工作都是在开源时都已经完成了。

这意味着您没有义务,任何人也不能要求您做以下事情:

  • 继续维护该项目
  • 处理 issues 并审查拉取请求
  • 撰写简洁明了的文件
  • 确保及时发布
  • 致力于满足社区需求。

请永远记住:没关系,这样是可以的。如果你不再喜欢它,就停止。

当一件事情,自己已经无力承担,心立交瘁时,我想还是可以选择放弃的,自己不是别无选择,不用勉强自己。

开源也好,其他事情也好,都是如此。

The age of average

世界上很多东西的发展和设计都有点趋同,室内装修,建筑,汽车,妆容等等,看起来都差不多,现在 AI 流行,更是如此了。

那么我的周刊呢?好像也和别人的没有太大的区别,也可以思考一下怎么做出一些不一样的地方(´-ω-`)

但事情并没有就此结束。在这个平庸的时代,同质性几乎可以在无数领域中找到。

Source

当每个超市的过道看起来都像一片单调的海洋,当每个类别都遵循相同的惯例,当每个行业都趋向于其独特风格时,大胆的品牌和勇敢的公司有机会开辟一条不同的道路。

要与众不同、独特和颠覆。

Source

Or as the ad agency BBH says.

When the world zigs. Zag.

或者正如广告公司 BBH 所说。

当世界 zig 时。zag。

The Death of the Junior Developer

作者认为以后初级开发者会渐渐消亡,能存活的更多的是高级开发者,配合着提高他生产力的 LLM。

LLM 对高级开发者的帮助比初级开发者更大,因为初级开发者可能不知道自己需要什么,甚至无法分辨 LLM 的错误。

(当在做一个不熟悉的领域的时候,在这个领域也算是一个初级者吧,例如使用不熟悉的语言。)

而高级开发者知道自己要什么,以及能够分辨 LLM 的错误,这样就能很大程度上利用 LLM 提高效率。

weekly#19 中分享的 The 70% problem: Hard truths about AI-assisted coding 也是类似的观点。

此外,作者还认为顽固开发者,也即那些不愿意接纳新技术(LLM)的开发者,也会消亡

述职汇报这样做,加分儿

又到年底评绩效,做述职汇报的时候了,可以参考一下。

可惜我司好像没有╮(╯_╰)╭

最后,很简单也很重要的一点, 声音要大

更大的音量会让你更加自信,同时讲的每一句话产生的效果也会更大。

Tutorial

韧性网页设计

有了《韧性网页设计》这样的标题,你可能会认为这是一本设计强大网站的手册。这不是一本手册。它更像是一本历史书。

Marshall McLuhan 曾说:“我们通过后视镜看现在。我们向后走入未来。”(We look at the present through a rear‐view mirror. We march backwards into the future.)

但在网页设计的世界里,我们大多专注于当下。

当我们超越当前时刻思考时,通常是为了展望未来——想象那些尚不存在的设备、功能和界面。

我们没有时间回顾过去,然而网页设计的历史充满了有趣的想法。

互联网已经存在了足够长的时间,我们可以开始评估其演变的曲折历程。

我写这本书是为了突出一些已经证明具有韧性的网页设计方法。

我这样做并不是纯粹出于历史兴趣(尽管我对我们年轻行业已经丰富的历史感到着迷)。

通过从过去学习,我相信我们可以更好地为未来做好准备。

在这里你找不到任何代码来帮助你构建更好的网站。但你会找到想法和方法。想法比代码更具韧性。

我试图将网络设计历史上最具韧性的想法结合起来,形成一种构建未来网站的方法。

我希望你能和我一起建立一个持久的网络;一个有韧性的网络。

一本篇幅不长的小册,回顾了一些网页发展的历史,从中可以收获一些如何让网页变得更具韧性的想法和方法。

DevTools Tips

Learn to get more comfortable with DevTools.

一些浏览器 DevTools 的使用技巧,挺不错的网站,每个技巧还有图片/GIFs,一目了然。

Examples and guides for using the Gemini API

这是一个关于 Gemini API 的指南和示例集合,包括编写提示和使用 API 不同功能的快速入门教程,以及您可以构建的内容示例。

Java Design Patterns (中文)

Java 相关的软件设计模式,编程原则还有代码片段。

Taming LLMs

当前关于大型语言模型(LLMs)的讨论往往过于关注其能力,而忽视了基本挑战。

相反,本书对工程师和技术产品经理在构建 LLM 驱动的应用程序时遇到的关键限制和实施陷阱进行了批判性的审视。

通过实用的 Python 示例和经过验证的开源解决方案,它提供了一本既入门又全面的指南,以应对这些挑战。

重点是具体问题——从处理非结构化输出到管理上下文窗口——并提供可重复的代码示例和经过实战检验的开源工具。

通过提前了解这些陷阱,读者将更好地装备自己,以构建能够利用 LLMs 的力量,同时避开其固有的限制。

Modern CSS Solutions

Modern CSS Solutions for Old CSS Problems.

Learn and Practice Modern CSS.

通过一些问题,学习一些新的 CSS 特性的使用。

Simplest inner glow card animation

彩色边框环绕动画效果,样式看起来不是很复杂,算得上 Simplest (≖ᴗ≖๑)

SQL Style Guide

SQL 风格指南。

Code

Come to the light-dark() Side

一篇非常好的文章,告诉你如何给网站适配明暗主题,提供了好几种方法,还考虑到了无障碍性。

按照文章的技巧,我也给博客添加了 dark mode

A Framework for Evaluating Browser Support

2024 年新增了很多 CSS 特性,但是浏览器的支持度还不是全面。

假如一个特性,Can I use 告诉你支持度在 97%,那么你会选择使用还是不用?

如果决定使用,那么还需要考虑回退的样式,避免不支持的浏览器渲染出奇怪的样式。

文章给了一个判断的框架,以及一个不错的校验方法:创建一个分支移除所有特性,校验如果特性失效时的样式。

View Transitions API: Single Page Apps Without a Framework

一篇关于 View Transitions API 的介绍,我的博客上已经添加了,如果你的浏览器支持这个功能,在切换文章的时候就会有一个过渡动画。

视图过渡是如何工作的(简化版本):

  1. 浏览器会对旧页面进行快照,您可以将快照视为页面的截图。
  2. 浏览器对新页面进行快照。
  3. DOM 开始更新到新页面内容,但显示(渲染)内容被暂停。
  4. 浏览器在恢复渲染时使用 CSS 动画在两个快照之间过渡。

文章还介绍了如何改变过渡时间,过渡动画等,对 View Transitions API 的用法解释的比较详细。

(Up-) Scoped Scroll Timelines

两个同级的 DOM 元素,有一个共同的父元素。在父元素上设置 timeline-scope: --id; 左边的子元素用于滚动,设置 scroll-timeline: --id; 右边的子元素实现滚动动画,设置 animation-timeline: --id; 实现滚动左边元素,右边元素进行动画的效果。

滚动一个元素,另一个元素基于滚动实现动画。

Simplified Fluid Typography

使用 clamp() 实现文字在不同屏幕宽度下的大小变换,过度相对更平滑一些。

Learn how overflow: clip works in CSS

关于 overflow: clip; 的使用介绍,给出了很多可交互的用例,推荐一读。

The visible/clip values of overflow compute to auto/hidden (respectively) if one of overflow-x or overflow-y is neither visible nor clip.

  • 当只设置 overflow-y: hidden; ,则 overflow-x 会被计算为 auto ,x 轴如果溢出就会出现滚动条。
  • 当只设置 overflow-y: clip; ,则 overflow-x 会保持为 visible, 从而实现只裁剪 y 轴,保留 x 轴可见的效果。

结合 overflow-clip-margin 还能解决嵌套的边框圆角问题

左边的边框半径不匹配,而右边的边框半径与之匹配,并遵循相同的曲线,从而达到完美的效果。

Using Typescript in node.js scripts without actually writing Typescript

文章介绍了一些不用 TypeScript 但依然能得到 TypeScript 类型检查的方法, 主要就是用 JSDoc 去补充类型信息。

除了 JSDoc, 还可以看看 TSDoc

Cool Bit

Man ran 700 miles to make ‘insanely impressive’ art on GPS fitness app

一张 GPS 地图图片,上面有一个高跟鞋的跑步轨迹

一个人跑步,用 GPS 轨迹画图,蛮有趣的。

Daily Routines

关于作家、艺术家和其他有趣的人如何安排自己的生活的一些记录。

牛顿的一名雇员在 1680 年代记录下了这位物理学家的生活习惯,他观察到牛顿很少在凌晨两三点之前上床睡觉,有时甚至要到凌晨五六点才上床睡觉–然而,“在一个早晨,他似乎因为睡了几个小时而精神焕发,就像休息了一整夜一样”。

白天,牛顿从未见过散步或从事其他娱乐活动,他的助手只记得听到牛顿笑过一次。

食物也是可有可无的奢侈品;牛顿很少用餐,经常忘记吃饭。如果有人提醒他没有动桌上为他准备的饭菜,牛顿会回答:“我动过吗?” 然后心不在焉地吃几口,然后又投入到工作中。

Organic Text Distortion Effect with Infinite Scrolling

无限滚动的文字扭曲效果,感兴趣可以看实现教程

Pictures of Pensions

养老金存的越早,复利越多,作者用一个交互式的页面和图表,表达他的观点。

这种交互式的页面呈现数据还是不错的。

Moon

在环绕地球的广袤空旷的空间中,月球是我们最近的天体邻居。它的面孔,时而被光明填满,时而被黑暗吞噬,在我们的天空中有着不断变化但又可靠的存在。

在本文中,我们将了解月球及其围绕我们星球的轨道,但要亲身体验这段旅程,我们必须进入宇宙本身。

一篇介绍地球和月球轨道的交互式文章。

Meet Willow, our state-of-the-art quantum chip

Google 发布了一款量子芯片 Willow,之前还不知道有这种类型的芯片,当量子芯片真正可用的时候,计算性能会得到飞跃吧。

The Google Willow thing 中有一些关于这块芯片的看法。

Sora is here

Sora 是 OpenAI 的一款视频生成 AI,最近开放给 ChatGPT 的订阅用户使用了,优化了交互。

ChatGPT 最近也更新了一些功能,例如手机上可以进行视频通话,网页上可以创建 project 分组会话。最近还发布了新的模型 o3。

Mayday 拼贴诗

用五月天的歌词,创建拼贴时,想法不错。

OldMaps

一个在线地图,可以拖拽时间轴,查看不同时间的变化,去了解当时的历史。

Map of GitHub

GitHub repo 地图,可以看看什么领域的 repo 比较多,也可以看看关注的领域有什么。

meet.hn

Meet the Hacker News community in your city.

Hacker News 用户地图,如果 Hacker News 的账号关联了这个网站,就能在世界地图上显示出来。

Hacker Scripts

一些好玩的脚本。

xxx: (最牛的就是接下来这个) fucking-coffee.sh - 这个脚本在启动之后,会先等待恰好17秒(!),然后启动一个登录进程连接到我们的咖啡机(淦,我们之前完全不知道我们的咖啡机是联网的,上面还运行着Linux系统,甚至还跑着TCP socket连接!),然后它会发送类似 “系统!开始煮咖啡!” 之类的消息,结果这条消息会让咖啡机开始工作,煮一杯 中杯大小、半咖啡因的拿铁,再等待恰好24秒(!)后,才倒进咖啡杯里。这些时间加起来刚好就是这位程序员从自己的工位走到机器前要的时间。

A visual proof that a2 – b2 = (a + b)(a – b).

可视化证明 \( a^2 - b^2 = (a + b)(a - b) \) ,可视化就是直观呀。

评论里还有其他一些可视化资源。

IRATA.ONLINE

A Community For Retro-Computing Enthusiasts。

outdraw.AI

Steam 上的一个游戏,挑战画出人类能看懂,但是 AI 看不懂的东西。

3 shell scripts to improve your writing, or "My Ph.D. advisor rewrote himself in bash."

指导博士生最难的部分是教他们如何写作。

幸运的是,在过去几年里,我看到了一些规律。

因此,我决定用 shell 脚本来代替自己。

我特别创建了 shell 脚本来解决三个问题:

  • 滥用被动语态
  • 黄鼠狼的话 (听起来很好听但没有传达信息的短语或词语)
  • 词汇错觉

此外,我还将这些功能集成到了 LaTeX 文档的构建系统中。

这些脚本的目的并不是禁止使用被动语态等所有结构。(在写作中,任何 “规则” 都有例外)。

这些脚本的意义在于确保我和我的学生有意识地选择使用这些结构。

当这些脚本突出显示一个句子时,我的学生应该问自己:“有没有更好的方法来表达我所说的内容–一种让文章读起来更清晰、更准确的方法?答案往往是 ‘有’。”

本文的主要观点是,作家应该了解自己的弱点。

当作家是程序员时,我们应该利用自动化来克服这些弱点。

Biological Miracle

木蛙冬天会结成冰,以度过冬眠。

冬眠的树蛙看起来是什么样的?没有肌肉运动。没有心跳。没有呼吸。在整个冬天,树蛙就像一块坚硬、寒冷、冰冷的石头,雕刻成青蛙的形状。但它是活着的,处于悬浮状态。

A Pretty Visualisation of the European Power Grid

欧洲电网的可视化。

如果我们能确保所有电力都接近零排放,那么通过将供暖、汽车和卡车运输转为电力运输,我们就能消除当今发达国家的大部分排放。

不过,仅仅建设更多的可再生能源发电站并不能解决这个问题,因为我们还需要确保这些发电站覆盖所有地方的消费。

这幅地图旨在说明为什么这是一个复杂的问题,以及为什么我们应该明智地选择可再生能源发电的建设地点,这样产生的大部分能源也能被利用,而不是因为电网无法处理而被丢弃。

Tool | Library

JSON5

JSON5 是对流行的 JSON 文件格式的扩展,旨在简化手工编写和维护(如配置文件)。

它无意用于机器与机器之间的通信(请继续使用 JSON 或其他文件格式)。

Douglas Crockford Is Not Your Dad:

我知道有人告诉过你什么。Douglas Crockford 说 JSON 不能有注释。

你接受了这个说法。这个错误可以理解,我们都经历过。

但我要告诉你还有另一种方法,因为 Douglas Crockford 不是你爸爸。

如果你知道只有合理的解析器才能读取 JSON 文件中的注释,那么你就可以在 JSON 文件中添加注释。

如果你维护了一个解析器,你可以让它接受注释,这样就不会发生任何不好的事情!

codate

Easily Create Custom Date Formats in Any Programming Language

罗列了不同语言实现各种时间格式的代码。

InclusiveColors accessible palette creator

这是一款为网页和用户界面设计制作自定义品牌调色板的工具,它从底层开始构建,符合 WCAG 对比无障碍指南

Tailwind Gradient Generator

Tailwind 渐变色代码生成工具。

GitHub Card

可以生成 GitHub Card 链接,分享 GitHub Repo 的时候还挺有用。

spike-leung/taxodium 仓库的链接图片

They see your photos.

上传图片,可以解析图片信息,看看别人通过图片都能知道你的什么信息。

例如拍摄地点,设备,图片中呈现的信息等。

markitdown

Python tool for converting files and office documents to Markdown.

appicon-forge

生成 Logo 的工具,从一堆的 icon 中选择一个合适的 icon,然后针对 icon 调整 logo 样式。

需要制作一个简单的 logo 的时候还挺方便。

Meshtastic

Meshtastic 是一个能让您在没有现有或可靠通信基础设施的地区使用廉价 LoRa 无线电作为远距离离网通信平台的项目。

Nullboard

一个极简的看板工具,只有一个 HTML 和一些字体文件,数据通过 localStorage 存储,也支持导出导入以及自动备份。

很喜欢这样简洁的工具。

GitHub Dashboard Feed

GitHub 改版后,首页返回的动态总有些问题,有时会什么都没有。

而这个链接返回的动态看起来比较正常,和原来的首页数据差不多。

TXT

TXT 是一个故意保持简单的写作工具。

MathJax

展示数学公式的库,这周的周刊里集成了,因为有一条公式需要展示。

多媒体

一些话

Han Kang Nobel Lecture

Where is love? It is inside my thump-thumping beating chest.

What is love? It is the gold thread connecting between our hearts.

爱在哪里? 它在我砰砰跳动的胸膛里。

爱是什么? 它是连接我们心灵的金线。

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

我认为你学到了任何职业中最重要的教训:客户不是你的客户。控制你加薪、奖金和晋升的人才是真正的客户。

There's No Such Thing As Software Productivity

没有所谓的软件生产力。

正如马丁·福勒在近十年前所观察到的,软件中的生产力无法有效测量。

原因在于它在相关事物的领域中根本不存在。

换句话说,生产力作为软件中的一个指标是没有适用性的。

Source

我认为优秀的软件开发者所做的就是消除问题。实际上,这与生产是相反的。

创建技术工件,如代码、文档、数据等,都是为了实现消除问题的目标而必须付出的代价。

这就是为什么有时解决问题最有效的办法是一场 5 分钟的对话。

Source

Parkinson's Law: It's Real, So Use It

回到帕金森定律:在没有严格时间限制的情况下,团队项目的范围将扩展以填满可用时间。这就是人性。

看看我清洗好的衣物在篮子里放多久才真正收起来,或者那些小的 DIY 工作在家里需要多长时间才能完成。

没有截止日期,就没有紧迫感,因此事情就是不发生。

所以,截止日期是有效的。

通常对截止日期的反驳是“虚假的”截止日期会导致工作质量差,有时这确实是有道理的。

然而,这种情况通常代表着糟糕的应用,而不是方法论的问题。

在一个健康的环境中对项目设定具有挑战性的截止时间可以带来重大的创新和创造力。

在一个有毒的环境中对项目设定不可能的截止时间则会导致你所预期的所有坏事。

Source

不要轻易地走进 AI Native(AI 原生)

但到了 2024 年,AI 在应用中的实践如果只能确定一件事,那就是绝大部分 AI 不是一个产品,只是一个功能。

Music

Author: Spike Leung

Date: 2024-12-23 Mon 00:00

License: CC BY-NC 4.0