返回首页
最新
我对软件工程未来发展方向的预测尝试
我上周被裁员了,因此终于有机会尝试一些非AIDE的解决方案(例如OpenAI Codex、Google Janus、Claude Code),目的是构建一些非平凡的东西。我决定创建一个与我的音乐库的管理和维护相关的命令行工具。
几乎立刻,我遇到了一个问题:目前没有适用于TypeScript/JavaScript运行时的完整音乐元数据库。TagLib([https://taglib.org/](https://taglib.org/))看起来很不错,但我找不到任何好的TypeScript封装,而且我希望避免在可能作为独立工具的一部分分发的库中包含特定于操作系统的二进制文件。不幸的是,TagLib项目目前(还)没有包含原生的Wasm构建。
(注:我不是专业的软件工程师。我的历史角色是开发者关系、产品管理/战略和产品营销。我有计算机科学背景,并曾帮助领导团队构建极其复杂的系统,因此这个项目介于“真正的软件工程”和“随性编码”之间。)
经过一些研究和实验,我最终选择了Deno、Wasm、Emscripten和Emscripten Embind(在开始这个项目之前我从未听说过它)作为技术栈,并将Claude Code作为我的“搭档程序员”。我之前曾用TypeScript(以Node.js作为运行时)构建过一些东西,但这是我第一次接触其他所有技术。
在TagLib-Wasm的开发过程中,Claude Code多次让我感到惊讶。以下是我对它之前提出的关于改善类型安全性建议的问题的回应:[https://imgur.com/a/nRrYz3p](https://imgur.com/a/nRrYz3p)
我认为TagLib-Wasm有趣的原因如下:
→ 它是唯一一个适用于TS/JS开发者的完整音乐元数据管理库。
→ 这仍然有些理想化,直到我为每个运行时创建一套测试,但我目标是真正的跨运行时支持——Deno、Node.js、Bun、Electron、Cloudflare Workers和浏览器。
→ 我不知道还有其他库能像处理文件一样轻松地操作内存缓冲区。肯定有这样的库,但我怀疑在TS|JS领域它是独一无二的。
在开始这个项目后,我在HN上遇到了go-taglib的创建者(sentriz/go-taglib,而不是wtolson/go-taglib),他也为他的Golang库找到了基于Wasm的解决方案。于是我借鉴了他的开发者体验,为这个库提供了一个“简单API”变体,以便更随意地使用。
RM2000 磁带录音机让录制音频样本和整理它们变得非常简单:只需录制样本,给它一个标题(也许还可以加上一些标签),然后它就会整齐地保存在你选择的目录中。
我是一名数据收集爱好者,一直以来都很欣赏像 PureRef 和 Are.na 这样的工具/服务,它们帮助我整理我收集的所有东西。这些服务主要关注图像和视频——我想,为什么不能对音乐和音频文件做同样的事情呢?
我实际上是从 Emacs Denote 包中获得了文件命名方案的灵感——每个样本都以 title--tag1--tag2.mp3 的格式保存。Emacs Denote 也做类似的事情,例如 identifier--title--keywords.org。
我选择这种方法是因为任何带模糊搜索的文件浏览器都可以搜索样本,比如 Ableton 文件浏览器。只需搜索一些标签和标题,你就能找到你的样本。
我希望这个应用程序看起来也不错(这也是我花了很多时间制作它的原因!)。这个应用是用 SwiftUI 和 AppKit 混合制作的,而资产则是在 Sketch 中渲染的。
感谢你的时间,我很想听听你的想法。如果你下载了它,并发现了建议或错误,请告诉我!
谢谢!