MoreRSS

site iconWang Fenjin修改

前 Tiktok,新加坡。
请复制 RSS 到你的阅读器,或快速订阅到 :

Inoreader Feedly Follow Feedbin Local Reader

Wang Fenjin的 RSS 预览

留白:一个受 Emacs 启发的 macOS Typst 写作工具

2026-10-02 08:00:00

English version

最近做了一个新的开源项目,叫留白(LeftBlank)。这是一个基于 Typst 的 macOS 写作工具,可以用来写文章、技术笔记,也可以写比较长的文档。程序免费,代码也开源,目前已经有一个可以下载使用的开发预览版。

我平常主要做后端开发,这次做一个桌面软件,有不少东西需要重新学习。这篇文章介绍一下留白现在能做什么,以及之前用 Emacs 时接触到的一些设计,怎么影响了这个项目。

留白的写作界面:左侧编辑 Typst 源文档,右侧显示排版结果

背景

写文档时通常有两件事要做,一件是把内容写清楚,另一件是把页面排好。对于技术文档,公式、表格、代码和图片又会增加一些工作。Markdown 很适合记笔记,但是需要控制页面布局的时候,就得再找其他工具。

Typst 提供了一个挺好的选择。它是一个基于文本的排版系统,文档本身是普通的源文件,可以用标记和函数来描述内容与样式,再编译成 PDF。下面就是一个简单的例子:

= 一份技术笔记

这里可以写普通的文字,也可以写公式:

$ f(x) = x^2 + 1 $

#table(
 columns: 2,
 [项目], [说明],
 [编辑器], [留白],
 [排版引擎], [Typst],
)

可以看到,文字、公式和表格都放在同一个文档里。需要更复杂的功能时,还可以使用 Typst Universe 里的包,比如画图或者给代码块加上行号。

有了排版引擎,编辑器还有很多可以做的事。比如怎么方便地找到一个命令,怎么在源文档和页面之间跳转,怎么让一篇长文章读起来更舒服。留白主要想把这些日常使用的问题处理好,让写作和看排版结果可以在一个程序里完成。

从 Spacemacs 和 which-key 学到的东西

我在 2020 年写过一篇 Spacemacs 的介绍。当时那篇文章很简单,主要列了一些常用的操作和按键。其中一个我很喜欢的设计,就是按下前缀键以后,可以看到接下来有哪些命令可以用。

编辑器的功能越来越多,快捷键也会越来越多。平常经常用的几个很好记,但是偶尔才用一次的功能,下次需要的时候很可能就忘了。Spacemacs 和 which-key 的做法很实用:把命令按用途分组,每按一步,都提示下一步能做什么。

留白也采用了类似的方式。按下 ⌘J 会打开命令面板,然后可以按照提示继续选择。例如插入一个表格:

  1. 按 ⌘J 打开命令面板。
  2. 按 i 进入插入分组。
  3. 按 t 插入表格。

如果不知道一个功能属于哪个分组,可以按 / 搜索所有命令。常用的操作也有直接快捷键,用熟之后就可以直接执行。

LeftBlank: a macOS Typst writing app inspired by Emacs

2026-10-02 08:00:00

中文版

I recently started a new open-source project called LeftBlank, or 留白 in Chinese. It is a macOS writing app built around Typst, for articles, technical notes, and longer documents. The app is free, the source is open, and a development preview is already available to download.

Most of my work is on the backend, so building a desktop app has given me quite a few things to learn. In this post, I want to introduce what LeftBlank can do today and explain how some ideas I encountered through Emacs influenced the project.

SwanLake:一个基于 DuckDB + DuckLake 的 Arrow Flight SQL 数据湖服务

2026-02-21 08:00:00

2023 年我把 duckdb-rs 交给 DuckDB 官方维护之后,心里一直有个没做完的题:

如果 DuckDB 在单机进程里已经足够强,那怎么把这份能力变成一个更容易接入、可部署、可观测的服务?

SwanLake 就是我给这个问题的答案。

它本质上是一个基于 Rust 的 Arrow Flight SQL Server,底层执行引擎是 DuckDB,同时围绕 DuckLake 做了数据湖场景的能力扩展。更准确地说,SwanLake 的核心组合是 DuckDB + DuckLake + Arrow Flight SQL。

SwanLake 项目示意图

为什么是 SwanLake

我最早做 duckdb-rs 的时候,目标是把 DuckDB 更自然地带到 Rust 生态里。这个目标后来基本实现了,但新的问题也很明确:

  1. 很多团队不是 Rust 单一语言栈,客户端接入方式需要统一。
  2. 业务里常见的不只是“本地查询”,而是对象存储 + 元数据 + 多服务协作。
  3. 线上系统需要可观测性,不能只靠日志排障。

所以 SwanLake 从一开始就不是“再封一层 API”,而是想做一个可以真正放进生产系统的分析服务入口。

系统架构

SwanLake 可以按 5 层来理解:

1) 接入层:Arrow Flight SQL(gRPC)

服务对外暴露 Flight SQL 接口,查询和更新请求都从这里进入。这个协议的核心价值是跨语言和高吞吐,仓库里的 Rust/Go/Python 示例就是围绕这层展开的。

SwanLake: An Arrow Flight SQL Datalake Service Built on DuckDB + DuckLake

2026-02-21 08:00:00

After handing duckdb-rs over to the DuckDB team in 2023, one question kept coming back to me:

If DuckDB is already great in-process, how do we turn that power into a service that is easier to integrate, deploy, and operate?

SwanLake is my answer to that question.

It is a Rust-based Arrow Flight SQL server, powered by DuckDB, with DuckLake-oriented extensions for datalake scenarios. In practice, SwanLake is built around a three-part combination: DuckDB + DuckLake + Flight SQL.

2026 年的软件开发流程,会被 AI 改成什么样?

2025-12-31 08:00:00

“这就意味着宇宙普适的物理规律不存在,那物理学……也不存在了。“汪淼从窗外收回目光说。

——《三体》

多年以后,面对黑色屏幕上闪动的白色光标,我们将会回想起,那个 AI 编程横空出世的 2025。

2025 年是 AI 编程的大年,从 OpenRouter 的年终统计 来看,AI 编程用的 Token 占了整个 Token 使用量的一半左右。 programing-token

作为“资深程序员”,我今年也贡献了很多的 token 使用量,深切感受到 AI 编程对于软件开发领域带来了不可逆的影响。至少从技术上,我认为这些影响绝大部分都是正向的。

之前写程序一定程度上是“体力劳动”,不管有多宏大的想法,代码总要一行一行写。 AI 编程让程序员向脑力劳动又前进了一步,我们需要更激进地学习新知识、使用新工具,从这个角度来说,我认为 AI 编程是提高了对计算机从业者的要求,而不是某些媒体鼓吹的“技术平权”。

这篇文章总结下我对 AI 编程现状的观察,以及对后续发展的预期。

开发工具

首先从开发工具讲起。明星创业公司 Cursor 因为 VS Code + Claude 一夜走红,算是彻底带火了 AI 编程。但是我想讲的不是这个,而是为什么突然所有的公司都开始做 CLI 工具,比如 Claude Code, Codex, Gemini CLI 等等?

我认为这里有三个方面的原因:

  • 投入太大: IDE 或者可视化编辑器这一块,VS Code已经是绝对的霸主,这可以说是一个已经解决的问题。如果新产品还从这个方向切入,势必要投入不少精力追赶,这在这个快速迭代的时代是不可想象的。虽然市面上还是有不少基于 VS Code fork 出来的编辑器,但是很难像 Cursor 刚出来的时候给人的惊艳感,包括 Amazon 的 Kiro 刚出来的 Spec 模式确实很不错,但是这些模式很容易被同行快速学习和复制,后续也渐渐陷入平庸。
  • 产出太小:其实如果投入大但是又是必须的话,那么还是避免不了要去做。但是对模型来说它并不需要一个 IDE,做 AI 编程最重要的是给模型提供一个高效的环境,而这个环境有命令行已经够了。而且这里有个逻辑是,如果你说你在做个新东西,但是又对过往路径有强依赖的话,可能要重新思考这个方向你到底该不该做,因为大概率竞争不过市场上的领先者。
  • 未来趋势:这个我觉得更加重要。VS Code 这样的编辑器是针对人使用设计的,最大的需求是给人提供便利;但是命令行工具很容易自动化,也很容易和别的工具协同工作。当模型和工具越来越成熟之后,人的参与度会越来越低,而这件事情实际上已经发生了。很多基于 IM、文档、网页等等提供的 AI 编程的工具已经开始被大家使用,我相信这背后肯定是这些 CLI 工具作为支撑。这些工具带来的最大的变化是多会话的管理,因为人同时只能处理一个问题,但是你可以开很多个 CLI 同时让模型做事。

总结来说,2025 年大部分人应该都能通过大模型加速写代码,我认为 2026 年开发者需要找到自己的工具,把工作并发起来,而且这可能不能单纯靠等待市场上产品成熟,也需要自己做好准备,比如开发规范、测试规范、发布流程等都配套跟上。

感恩字节

2025-08-04 08:00:00

如果用一个词来总结我在字节的日子,我想我会用成长。用这个词也很自然吧,毕竟初入职场后最重要的十年待在字节,并且还是一家成长这么快的公司,经常我还会反思自己的成长速度远远没有跟上公司的需要。对于字节我只有感恩,他不仅给了我超预期的工资回报,更重要的是给我有挑战的项目帮助我成长和证明自己,也给了我很多可以联系一辈子的朋友。

我要感谢我在字节的 leader 们,谢谢你们对我的指导和信任,特别是早期的 leader 容忍了我很多不成熟的做法;对一起合作过的同学,过往如果有沟通方式或者做事方式不对的地方,这里说一声抱歉;对于我之前指导过或者帮助过的同学,你们都有一个美好的未来,而且其中有不少已经做到了比我更重要的岗位。

字节依旧是一家伟大的公司,依旧会有很好的发展,祝福在字节奋斗的小伙伴们!