本页面灵感来自于 nownownow,我会至少每月更新一次我的最新动态
最后更新于 2024-04-09
技术领域
我相信不同的语言适合不同的事情,广泛学习各种语言,目前我在某不知名网络安全公司的基础架构组中间件团队,同时在努力做一些很酷的东西。
我擅长的语言包括:Rust, Go, TypeScript, Python, Swift
Project
我目前在做或计划做以下项目
出海团
一个拼团产品,致力于用人数向厂商换取低价。该项目由我与 Evan Long @evanlong0803、得否 @wangpangzier 合作。
项目已上线,并已组织过几场拼团活动,产品官网 https://chuhaituan.com/、公众 Twitter @chuhaituan。
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-SQL 和 yjs 来实现本地化和同步
- 按照网页端优先的次序开发,后续计划使用 React Native 来提供手机端、利用 Electron 来提供桌面端
- 支持 API
- 希望支持端对端加密,但是否支持(因为计划支持 API)待定
该项目本来优先级是很高的,但是受限于 Electric SQL 的部份问题,暂时打算搁置;另外可能也打算使用 loro 来替代 yjs(但目前它没有 ProseMirror 的 binding,对其进行支持可能比较有挑战)
该项目用于测试 Tiptap 和同步功能的 demo 放置于 https://space-card.pages.dev/cards。
Space Daily
又双叒叕一个 TODO App,任务管理 + 时间管理二合一的产品。
目前市场上时间管理的 App 有、任务管理的 App 也有,但是把他们真的有机融合在一起的解决方案我找了很久都没有看到(至少达不到我的需求),所以这个 App 我其实觉得挺值得做的(至少我自己想要),甚至已经着手开发过几个版本的 demo 了,但是 block 在了
- 全平台 Local First + 实时同步所需要的开发成本太高
- 想离开独立开发者三件套的地狱
- 我现在用着 OmniFocus 用的挺舒服的,而且目前没有特别急迫的时间管理的需求
Space Daily 的 MVP 目前使用了 Expo 作为跨平台解决方案、Electric SQL 作为同步解决方案。
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
目前已发布、开源
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://reading.singee.me
目前开源主要 block 在文档和 readwise reader 内容抓取需要依赖 windmill 上
my-short-url
利用 CF Workers 写的短链解决方案,利用我自己的 jsonbin 存储映射信息,支持 301/302/307/308 跳转和隐式跳转(即类似于一个反向代理),利用 Cloudflare Workers Analytics Engine 做统计。
该产品驱动了我自己的 singee.link 1space.link 和出海团的 chuhaituan.link,计划在 jsonbin 开源后一同开源
email-service
一个独立的邮件发送服务,主要用于为我其他的工作流引擎提供邮件发送服务,支持利用 React Email 来配置预设邮件模板,使用时只要调用 API 就可以发送指定模板的邮件
服务部署在 Cloudflare Workers 上,搭配 MailChannels 可以实现完全免费的发送邮件(同时也适配了 Resend 和 SES,可以免修改应用层代码来自由切换服务商)
space-auth
一个基于 Cloudflare Workers 的认证授权服务,最初开发目的是为了…… 支持 Passkey 认证
后面应该会驱动我所有的项目的认证体系,待完善后开源
Build for Self
我自己写了好多好多自用的脚本,但是没有精力去开源,因此想到了一个以「Build for Self」为名进行 Source Code Available 的简化版分享方案
目前初版网站已上线,尚未有项目使用
待办:
- Projects Showcase
- How to Use