Origin

Singee's Blog

Now

本页面灵感来自于 nownownow,我会至少每月更新一次我的最新动态

最后更新于 2024-02-12

技术领域

我相信不同的语言适合不同的事情,广泛学习各种语言,目前我在某不知名网络安全公司的基础架构组中间件团队,同时在努力做一些很酷的东西。

我擅长的语言包括:Rust, Go, TypeScript, Python

我正在使用的语言还有:Swift, Java, Ruby, Elixir, Clojure Script

我感兴趣并可能投入学习的语言有:Zig, Haskell, Common Lisp, Kotlin, Scala, WASM, Elm, Erlang

Project

我目前在做或计划做以下项目

TimeLock

TimeLock 仅为项目代号,真实名字暂未公开

一个 App 使用时间管理软件,利用 iOS 的新 ScreenTime API 帮助你更好的使用手机。最初的 idea 来自 何同学的时间锁 (这也是最初项目代号的名字来源)。

该 App 由我和 @Marcus 合作开发。

Space Reader

Space Reader 是我计划的一个 RSS + 稍后阅读的软件,目的一个是更好的思考一个是防止「稍后不读」。该项目的 idea 很久之前就有了,但是当时没有时间去做,后面有时间了 Readwise Reader 公布了,它「Reader for Power User」的口号让我以为不用做了,没想到至今它完全没达到我的要求。

在防止「稍后不读」我有一个自己的闭源解决方案 my-reading(计划稍晚在我的 Build for Self 准备好后 Source Available),目前已有的功能大概是

  • 每天早晨自动拉取我的 Readwise Reader,根据历史阅读数据给出一个今日阅读目标,推送消息给我
  • 根据生成的自动阅读目标从我 Readwise Reader 的 Inbox/Later 中随机选出对应数量的文章来(至少 30 个防止我想读但是没有可读的)
  • 每天保证(尽可能)将这选出来的文章读完(无论多难)
  • 界面上同时展示历史 7 天的阅读情况,防止忘记之前因故没有及时读完的文章
  • 在界面上点击阅读完的文章可以自动在 Readwise Reader 中进行 Archive,同时在界面上取消 Archive 的在 Reader 中也会自动 UnArchive
  • 与 Reader 相同的键盘快捷键,E 归档/取消归档,O 在浏览器中打开文章,Shift+O 在 Reader 中打开
  • 已知问题:因为整体是一个 JSON,而后端存储是 Cloudflare Workers KV 有 60s 的缓存,因此连续 Archive 多个文章可能会导致只有最后一篇才 Archive 成功了(但是不打算解决,毕竟对我来说够用了,毕竟不是真正的产品)

Space Reader 的防止「稍后不读」我打算就从我这套 my-reading 的流程复刻

而其他的功能,目前打算有

  • 浏览器扩展集成 Singlefile 来保存原始的网页内容,阅读模式使用 readability(而非只存储提取后的内容)
  • 后端(利用 API 插入)时也会调用 Singlefile 来存储完整网页内容,同时支持配置 Cookie/Storage 来 bypass 已购的 paywall
  • 利用 Deno Runtime 制作的扩展引擎,方便完成各种自定义操作
  • (利用 Hypothesis 进行)Highlight,同时支持自动同步至 Readwise
  • 内置 RSS,支持根据订阅源自定义拉取间隔、全文拉取、插件等
  • 自动化,各种事件触发插件 / Webhook
  • 基于 ElasticSearch 的全文搜索
  • (和我下面要做的 Space Card 一起协同)渐进阅读
  • (如果可以的话)集成沉浸式翻译,来方便阅读外文文献

Space Reader 计划开源 + Build in Public,在准备阶段可访问我的笔记中的 Space Reader 页面来跟踪我的最新想法

Space Card

卡片集合,用于实现间隔重复。一款我计划了很久但是一直没有精力去做的软件

  • 算法使用 Open Spaced Repetition
  • 编辑器采用 TipTap
  • Local First 软件,目前计划利用 Electric-SQLyjs 来实现本地化和同步
  • 按照网页端优先的次序开发,后续计划使用 React Native 来提供手机端、利用 Electron 来提供桌面端
  • 支持 API
  • 希望支持端对端加密,但是否支持(因为计划支持 API)待定

该项目本来优先级是很高的,但是受限于 Electric SQL 的部份问题,暂时打算搁置;另外可能也打算使用 loro 来替代 yjs(但目前它没有 ProseMirror 的 binding,对其进行支持可能比较有挑战)

Space Daily

又双叒叕一个 TODO App,任务管理 + 时间管理二合一的产品。

目前市场上时间管理的 App 有、任务管理的 App 也有,但是把他们真的有机融合在一起的解决方案我找了很久都没有看到(至少达不到我的需求),所以这个 App 我其实觉得挺值得做的(至少我自己想要),甚至已经着手开发过几个版本的 demo 了,但是 block 在了

  • 全平台 Local First + 实时同步所需要的开发成本太高
  • 想离开独立开发者三件套的地狱
  • 我现在用着 OmniFocus 用的挺舒服的,而且目前没有特别急迫的时间管理的需求

计划在 Space Card 开发完成后(至少储备好 Local First 的相关技术)再着手这个的开发,还是打算先做一个自用版本(Build for Self) + 后面产品化。不过如果未来有一天我全职独立开发了可能会去把这个优先级提升上来(毕竟我自己要用)。

GitHub Star Enhance

增强 GitHub Star 的体验,主要是

  • 全文索引自己 Star 了的项目,支持搜索
  • 发送提醒历史 Star 的项目提醒回顾
  • 跟踪 Star 了的项目的最新更新(不是 Watch Release,隔一段时间汇总一下就行)

而目前 block 住没有继续的原因主要在于

  • 全文搜索导致的计算、存储、带宽成本都比较高,开发出来只自用成本太高了
  • 公开产品化的话市场太小,而且定价太便宜了远远不够成本的
  • 可能随时 GitHub 就自己出类似的功能了

类似的全文搜索的需求其实还有我 V2EX 收藏,但是这东西的产品化就更难了

Open Source Projects

gg / kitty

https://github.com/ImSingee/gg
https://github.com/ImSingee/kitty

用于管理 git hooks、项目依赖等的工具,用于自动 format、执行代码生成命令等

kitty 是利用 go 开发的,基本满足我的需求了,但是因为 Go 本身的简洁性,而 kitty 又很灵活,很多功能实现上十分费力,外加名字刚好和那个终端工具撞了,因此用 Rust 重写了一版 gg

OmniFocus Scripts - TS

利用 TypeScript 编写 OmniFocus Automation 脚本,主要目的是为了强类型 + 模块引用

https://github.com/ImSingee/OFScriptsTemplate

目前已发布、开源

windmill-queue

一个为 Windmill (我在使用的工具流引擎,代码优先的设计,推荐所有人都体验下)设计的事件引擎,用于将事件源和执行的操作进行解耦、并自动处理重复事件的忽略。

目前自用的版本是 https://github.com/ImSingee/windmill-events ,是完全利用 windmill 本身来完成的,但是存在若干的小问题

因此目前在重构一个版本,整体是利用 Rust 完成的(使用了一个新兴的 pavex 框架,强烈推荐试一试),计划除标准的事件派发外还可以提供历史事件列表、事件流转图、重放事件等功能。

目前在 https://github.com/ImSingee/windmill-queue 活跃开发

多说一句,这个做完后,可能会将里面的一些设计单独抽离出来作为一个 Queue 的服务来使用,目标可能是一个开源版本的 QStash

jsonbin

一个全功能的 jsonbin,支持对某个 json 进行部分获取/修改/patch,支持对数组进行 append,支持细粒度权限控制,支持利用 Shape 功能来对某个 json document 进行转换后输出

自用版本,代码功能已基本实现,尚未撰写文档、等待撰写完毕后进行开源

my-reading

为 Readwise Reader 撰写的一个解决「稍后不读」的解决方案,目前依赖 windmill 来进行每天的内容抓取

其实 jsonbin 的很多功能是为了 my-reading 而写的,但是因为 jsonbin 使用的是 cloudflare kv,存在着最长 1min 的缓存,导致无法进行原子性的操作,因此后面为 my-reading 做了独立的后端(利用 Cloudflare D1 解决了原子修改的问题)

我自用的版本在 https://my-reading.pages.dev/

目前开源主要 block 在文档和 readwise reader 内容抓取需要依赖 windmill 上

email-service

一个独立的邮件发送服务,主要用于为我其他的工作流引擎提供邮件发送服务,支持利用 React Email 来配置预设邮件模板,使用时只要调用 API 就可以发送指定模板的邮件

服务部署在 Cloudflare Workers 上,搭配 MailChannels 可以实现完全免费的发送邮件(也适配了 Resend,不过 Resend 不支持发送 alternative 类型的邮件来处理兼容性)

space-auth

一个基于 Cloudflare Workers 的认证授权服务,最初开发目的是为了…… 支持 Passkey 认证

后面应该会驱动我所有的项目的认证体系,待完善后开源

Build for Self

我自己写了好多好多自用的脚本,但是没有精力去开源,因此想到了一个以「Build for Self」为名进行 Source Code Available 的简化版分享方案

目前初版网站已上线,尚未有项目使用

待办:

  • Projects Showcase
  • How to Use
0%