Tip.It诞生记

灵光一闪

之所以想做 Tip.It,完全是受自己初到北京时找房子各种痛苦的启发,当时为了跳过中介租房子,去58同城,豆瓣等各种网站去看房子,比如说下图就是一个典型的58同城的租房页面。

可以看到电话号码是图片,如果我想记录这个房源,只能一个个号码的往自己的Evernote里面敲,同时还得记录这个房源的网址,以防自己空有号码但是忘记房源信息的尴尬。

即便这样,还是经常导致自己 chrome tab 开了几十个,分不清是否已经电话过某房源的主人的情况发生。

所以我灵光一闪,为什么我们不把这个做成一个可以追述原地址,同时可以保存文字,图片和链接的 todo-list 呢?

这个todo-list不同于evernote,它一打开就是我们要做的东西,里面的内容更像是对网页最有价值的部分的提炼。这个提炼我们会在短时间内频繁的用到,比如我们需要回复某人的邮件,网上看见优惠码等等。

而我自己本人则在不找房子的时候,用来管理我的 bug 清单同时用来记录自己感兴趣但是又需要花时间来阅读的文章链接。

动手

来了 yahoo 之后,自己从最喜欢的 firefox 逐步迁移到了 chrome, 后来经过一番调研后发现 chrome 的 extension 还很好写, 于是自己开始了 chrome 插件的开发之旅。当时自己定的开发目标是这样的。

1
2
3
4
5
6
7
  - 能够 tip 网上的地图,视频,文字以及链接。
  - 通过每条 tip, 用户都能轻易的找到 tip 的原始链接。
  - 用户对每条 tip 添加备注。
  - 能够自动同步,就像evernote一样。
  - 用户手动可以创建各种类型的tip。
  - 有完整的登陆认证功能。
  - 后端的Api能够支持移动应用的开发。

于是就有了第一版的半成品,有登陆,用户可以自由添加 tip,后端用的是 Rails,数据存储是 Mysql + Redis, Redis 主要用来分发用户的login token。

可是当自己写到同步功能时,各种复杂的情况需要考虑,写出的程序自然是 bug 百出,同时考虑 Tip.It 设计的初衷是用户离线时也能使用,能够像 pocket 一样 archieve delete, 自然而然,程序逻辑变得非常复杂,用户每 sync 一次,mysql db 都要运行数十条语句。一度让我对这个项目产生了一些动摇,从最初的每天 check in code 到后面的长达一个月没有check in 过 code。

做减法