再见Evernote, 你好Orgmode

我这个人记性不好,所有的事情必须写下来才不会忘记。可偏偏字又写得难看,不然定会去买本精美的手账,随身带着。幸亏打字的速度不慢,所以一直靠键盘记事。记事的软件从最初的Word,到Google Notebook(这个项目后来关了,几年后又以Google Keep重生),再到Evernote,最近这些日子又看上了Orgmode。

聊聊为什么我转投了Emacs

我用Vim已经8年了,虽然说不上是骨灰级用户,但我花在定制化Vim上的时间绝对不少,公司里的许多人也是在我怂恿之下才开始用Vim的。当年在Nvidia工作时,闲来无事,为公司Bug tracking系统写了一个Vim插件。离开多年后,依然有人在用,这似乎也是我在Nivdia唯一留下的东西,真不知道是该高兴还是悲哀。

Keyboard for hackers

5年前,在我刚工作不久之后,我买过花了500块买了IBM UltraNav Travel Keyboard,因为很喜欢当时IBM Thinkpad键盘的手感,所以买了这个与Thinkpad键盘手感完全相同的外置键盘,用于自己的台机。直到09年买了Macbook,那时的Macbook还是白色塑料外外壳的,俗称小白。小白的键盘手感非常好,并不逊色于Thinkpad。虽然小白的使用时间不到半年,在之后的日子一直用Macbook Pro但至今我仍这得小白键盘的手感要比MBP好些,mbp的键盘有点太软了。

Python - 合并多个进程的stdout和stderr

在开发中我们经常需要同时运行多个服务程序。以web开发为例,我们首先要启一个web server(django/flask/webpy/bottle等),一个或多个db server(mysql/mongodb/redis等),还可能用到一些watcher当源文件变化时自动编译(coffeescript/sass等)。如果这些程序运行在不同的terminal中,我们可能需要经常在这些terminal之间来回切换来查看它们的输出。因此我用python写了一个小的工具,用来在一个terminal中同时运行多个程序,合并它们的stdout和stderr。这个工具的工作原理很简单,启动时它读取一个配置文件并启动其中指定的若干个程序,之后它会捕获所有这些程序的输出,在每一行输出前加上对应程序的名字和进程ID,再输出到terminal上。它的代码加上帮助文档一共69行,麻雀虽小,却也用到了几个比较有意思的python模块,对初学python的朋友可以有一些帮助。以下是这个工具的完整代码