Aug 6, 2009 - 我的大学

Comments

(应博文视点的几位编辑之邀, 总结了我大学本科的一些经历. 博文视点的新书<我是一只小小鸟>八月即将出版, 收录了我和其他将近20位的大学经历和感悟. **本文特别欢迎读者留言, 编辑说将选择一部分读者留言和这篇一起放到书中去**)

我的大学

虽然标题是”我的大学”,但大学中的一切,其实都和大学前的经历和学习习惯有关。因此,我还是从我小学时的一件对我以后人生,包括大学影响巨大的事情说起吧。

数理化和好老爸

我的小学是在农村里和爷爷奶奶度过的。我的父母住在小镇上,两人平时都要工作,没空照看我和我弟弟。所以,我只有周末和放假才到镇上,和父母弟弟在一起。四年级升五年级那个暑假,我到了镇上,和父母在一起。因为一起抓鱼钓虾的玩伴都在老家,百无聊赖的我开始乱翻父亲的书橱,找书看。某天,我翻出了一本叫做《平面几何一题多解》的书,那是本封面很好看的书。我把整本书翻下来,每个汉字我都认识,但每个符号我都不懂。好奇的我于是问父亲,这个书讲的是什么呀,怎么从来没见过这些奇怪的符号呢? 他就告诉我说,书里讲解的这个东西,叫平面几何。他接着问我说,“平面几何是个很有趣的东西,你想不想学呢?” 我说,当然想啊。那时的我,其实只是一个好奇的小学生,迫切想知道这个书中的图画和符号的意思。我肯定不会想到,这个很随意的决定,改变了我其后的整个人生。

听了我肯定的回答,我父亲立即从书橱里层(我家书太多了,书橱太小,书橱里书分里层外层,外层的书挡住了内层的书脊,我从来都不知道里面还有宝贝)变戏法一般的翻出了本《数理化自学丛书–平面几何》。对于我父亲这一代人来说,《数理化自学丛书》是代表着知识,荣耀和梦想的。我感觉他翻出这本书的时候的动作是虔诚的,但当时的我并不知道我父亲在这套书上寄托的希冀和梦想。我只记得他告诉我,当年这套书,用去了他大半个月工资。就这样,从五年级开始,我就在父亲的指点下,开始蹒跚前进学习《平面几何》。从一开始不知道什么叫 “证明”, 需要他一字一句帮我厘清逻辑关系,到后来全是自学不需要他教,我很快就喜欢上了自学这种学习方式,每天自己看书并且做八道题。暑假过完后,我就回到了爷爷奶奶的老家。父亲让我继续自学,并且布置我一周做八道题。我在爷爷奶奶家,每天放学回来不做家庭作业也不看动画片,就赶紧做一道几何题。做几何题的妙趣,是不融入其中的人不能理解的。比起小学里的抄生字,抄课文这种作业,做几何题是脑力和体力的双重享受。当时,我周围没人可以讨论切磋,全靠自己。遇到不会的题目,我只能自己冥思苦想,或者熬到周末和父亲讨论,因此,常常被一道难题从周一折腾到周日。好在这套书是粉碎四人帮后出的第一版,当年学生的数学水平比不上现在的学生,而这本书又是以自学为主要切入点,所以题目相对也简单,我冥思苦想几天后大体上也能想到解题思路。因此,我能够常常体验百思得解的愉悦感。我觉得,这种时常拜访的愉悦感,让我很早就开始相信独立思考的力量。

每个周末,父亲都用吱吱作响的自行车带我到镇上洗澡理发,然后批改上周我做的几何题。在自行车上的时候,他常常信马由缰,随口说些说些初中物理和初中代数知识,比如看到船就说浮力,看到马就说做功,看到三角形就说余弦定理等等。我也就半懂不懂的听,有时候插几句话,有时候能睡着了,没有丝毫的压力和拘束。很早就被中学数学物理知识装备的一个小学生是可怕的,我那时候觉得知识就是力量,因此我一定要用自己的数学物理知识做一台柴油机,我很自信的认为我懂得做柴油机和机动车的一切知识,说不定还能做出第二类永动机。我爸爸屡次告诉我不可行,而我反过来一直屡次告诉他,你是个没有理想的人。我爸爸不愿意打消我的理想,只是扔给我更多的书,希望能够打击我制造柴油机和永动机的热情,而我的知识理想,在读了更加多的书以后,变得更加的坚固了,我相信,学习知识是我人生第一重要事,有了知识,虽然不一定能做柴油机,但一定能做更多强大的事情。同时,我通过学习几何和其他的一些父亲扔给我的书,开始对自己的学习能力有了自信,我相信,找书自学是学知识的好方法,同时,把题从头到尾做一遍是很好的自学方法。

所以,我带着三个理念进入了大学,第一是什么东西都可以自学,第二是慢即是快,笨笨的做一遍题是学习的捷径;第三是知识理想主义,知识就是力量。而读书学知识能够消除蒙昧,掌握改变世界的力量,所以是一件快乐的事情。

大一,极端自负和极端自卑

我的高考成绩还很不错,高中还拿了一个数学联赛一等奖,所以,我是带着对自己数学知识(为了准备数学竞赛,我看了很多闲书,有很多就是大学数学系的教材)和学习方法的自信满满,和对南大数学系这个相对不好的选择的遗憾和自卑(当时的高考分数可以填报更加好的学校或更加喜欢的专业)来到大学的。当时我的心理状态可以用八个字概括: 极端自负,极端自卑。 这种心态,一直笼罩了我上大学的头两年,而且总是以一季度为周期,在两极之间交替变化。我在学期开始往往很自负,到期中考试左右很自卑,然后再自负,再自卑,不断反复。

在我看来,极端自负这个心态,其实不是因为自信,而是因为极端自卑生出的应激反应–为了掩盖自卑,只好用自负来掩饰。为什么我极端自卑呢,大体来自两个方面,一个是我的成绩排名在高中都是很前的,但是到了大学就 20 名开外了。尽管我觉得自己的数学水平很不错,考试却总是不怎么样,觉得考试考不出真水平。另一个是觉得自己没有在一个自己满意的系。我喜欢动手的工科,当时我觉得比起计算机系和电子系这样的“牛” 系,数学系并不“牛”。可即使在不牛的系,我都不能做到前10,更别说看上去更加牛的计算机系了。为了掩饰这种这种自卑,就自然生出了极端自负。那时候,我上课根本不听讲,理由是“书上的东西太简单了”。为了证明自己智商还可以,我总是坐在最后一排,显示自己并不热心于老师讲课。我这样持续了两年, 以至于到最后, 我连班上每次都坐在前面的几个同学的名字都不知道。这样的心态明明是错的,我却缺少一个很好的动因来改变它。

不过最原始的三个理念还是在的,我告诫自己即使不听讲,也不能浪费时间。所以,我把听课做作业上节省下来的时间,用在了看喜欢的计算机书和学习编程上了。于是,整个大一大二,我凭借着简单的自学的理念,开始了两件事情,敲 《Thinking in Java》(TIJ) 和 《The TeXbook》 上的没一个样例。

敲 TIJ 的机缘其实很简单,我是在软件学院听课的时候看到他们教 Java, 但是他们用的 《Java 大学教程》太贵了,我舍不得买。 我在网上搜了一圈,发现 《Thinking in Java》是一个免费的英文电子书。 于是,我就在数学系的机房,每天下午和晚上,开着一台计算机,屏幕上放着这个电子书,再用我的很土的笔记本,运行着未注册的 JCreator, 一个字母一个字母的敲 TIJ 上面的程序。我很偏激的认为拷贝粘帖的程序记不住,所以每个字母都自己手敲。 就这样,花了一个学期,居然就把所有的程序敲完了,基本上 Java 的方方面面,我也了然于胸了。

敲完 Thinking in Java 之前没几天,我们就期末考试了。那一次考试的试题是 LaTeX 排版的,而不是手写的。 我考试的时候就问监考老师这玩意怎么排版出来的,因为我知道 Word 这个软件做不到这个效果。监考老师除了对我不认真考试表示不满外, 还算仁慈,告诉了我 LaTeX 这个名词。 寒假里,我就买了一本 LaTeX 教程。然后,突然认识到,原来 TeX 居然是我最热爱的 Knuth 的杰作,于是我就疯狂的开始学 TeX。 我的方法还是一样, 敲例子。 记得 TeXbook 上有一个程序, Knuth 让大家自己照着敲入计算机, 然后还很幽默的说,实验证明,只有很少的人会按照他说的敲入这个程序,而这部分人,却是学 TeX 最好的人。看到这里我会心一笑,觉得自己的方法原来也不算笨。从此,一字不漏敲入一本书的程序成了我推荐别人学习语言的最好办法。 我后来大四又敲了 A Byte of Python,前段时间又敲玩了 The Awk Book,都是不到一个月瞬间从初学者成为细节很熟悉顺手拈来使用者。顺着这个方法,大二我把 《组合数学引论》 和上海交通大学出版的一本 《离散数学》 上的题目都做一题不漏做完了。当时选者两本书也没有特别的目的,就觉得这东西应该是计算机的数学基础。这些积累,在大四全部都显现了出来。

我个人认为, 《Thinking in Java》 和 《The TeXbook》都算得上是理论和实践结合的精品书,是经典的英文原版书。我一上来就读了这两本书,阅读品味就上升了不少,而且变得“崇洋媚外”了,任何时候都以英文原版书为第一选项了。也因为此,虽然我自学的过程中没有高人指点,但自学最重要的一个环节—选书–的盲目性就大大减少了。我记得那时候我看得最多的书就是华章引进的书,黑封面的,我们图书馆里有将近半书架,如果一一细读,穷尽四年是看不完的。但华章的书也不是本本经典,我那时候开始注意选择,细读开头十几页后,基本能决定这个书该不该看。所以即使当时没人指点,全靠自学,读的书还算过得去。那时候南大计算机系的教材,有的我看,有的我觉得不适合自己,就找替代品了。我觉得选书这个事情上,因为有前两本书的标杆,我少走了不少弯路。从这两本书开始,我疯狂的读书就开始了。南大的浦口校区的硬件条件并不好,唯一有空调且可以上自习的地方恰好图书馆。因此我每个暑假,基本上都是很早就过去占位,晚上很晚回去睡觉。我对小说等其他书也不感兴趣,就整天看自己觉得好的计算机书和数学书,做笔记。某天,我开始了一个雄心勃勃的计划:读完 TP312 书架。

大二,而今迈步从头越

大一大二基本上就是在不断的心态波动中前进。我学会了 Java, 也做了不少题,但是考试成绩一直不是很好,因此我比较苦闷,迫切的想要改变这种状态,我的想法是,要么转系,要么好好学习数学。但是转系阻力重重,我又不愿意耐心去学习数学,所以我一度非常纠结。但是大二下学期,我遇到了两个对我人生产生影响的两个人,这两个人让我从正弦曲线般的心态沉浮中跳了出来,让我一下子变得目标坚定了。

第一个人是我的同学以及非常好的搭档,现在在 IBM 工作的李获鼎,另一个是我的叔叔。他们让我变得沉稳,消除了原有的浮躁,学业和心态都走向了正轨。

大二上学期要结束的时候,我们数学系的学生会主席就说,在下次数学系搞的文化节上,要弄一个叫做 模拟股市 的软件,让大家来炒股。我那时候觉得挺简单的,也特自信,就说,明年我来搞吧。后来我记不得是我找获鼎还是他找我了,反正两个人决定一起搞。 寒假他在家自学 JSP, 我就在家看 JDBC 和 SQL。 开学没多久,我们就开工了,他负责写前端 JSP, 我写 Java Bean。两个人编程比一个人好多了, 可以相互看代码,而且可以轮流工作,克服浮躁感。我写程序比较粗线条,基本上功能有了,细节就不管了。他比我认真细致多了,前端一个表格的宽度和颜色都要调好久。在他的影响和“胁迫”下,我做事情也变得细致起来,因为我不细致,他的前端就没法正常工作。那时候他也是一边写一边学,对着书一行一行的敲JSP,态度比我敲 TIJ 时候还认真。和他在一起工作了 20 天,把玩具项目写完后,我也变得踏实起来。做完了模拟股市这个小程序,玩这个系统的同学都挺喜欢的,我的自信心也就有了,心态也平稳了,态度也踏实了,自然地,自卑心理就没了。随着自卑的消失,极端的自信也消失了,简单的说,我心态变得正常了。这时候,虽然还有点小迷茫,我开始思考以后干什么的问题了,听课,做作业也比以前认真不少,成绩也上去了不少。

和我叔叔不能算是遇到,算是再发现吧。我叔叔是个很有冒险精神的人,具有不折不扣的企业家精神。 我非常小的时候, 他帮人家修电视, 然后迅速就搞了计算机,买了我们全市第一台 486。搞了很多年计算机以后, 又自学了单片机,以写汇编为乐。我对叔叔一直的映像是“善于抓住机会”, 倒没有把他和 “耐得寂寞” 很紧密的联系在一起。所以大二升大三的暑假,当我在看 8051 单片机的指令的时候,我叔叔突然告诉我说,他现在就是做这个的,还立即送了我一个编程器,你可以想象我那时候因为惊讶眼睛瞪得比灯泡还大。我那会儿,已经被 Linux 内核折腾得不行了,觉得汇编更加难。若是要在资源受限的系统上做出工业级强度的东西,我觉得就更加远超过我能力范围了。而叔叔,完全半路出家,通过自学,一个人,几年时间,就把这条路走通了。他现在写的汇编程序,运行在千家万户的水表中,完全是积累出来的硬功夫。我叔叔给我的震撼是巨大的,因为我一度怀疑过自己的自学能力,觉得有些事情,我永远没法做,就像童年想做的柴油机一样,只是幻想。我叔叔给了我一剂强心针。

有获鼎和我叔叔这样两个踏实勤奋的人的影响,我也一改以前轻浮的习惯,给自己定了三个简单的要求: 1. 更加多看书,看好书,并且一定一定要做笔记 2. 多编程 3. 开始背 GRE 单词。 就这样, 我就开始了疯狂学习的大三。

大三,深度迷茫和深度积累

大三是我看书最多,思考最多,积累最多的时候。大三我并没有做任何其他事情,主要就是沉稳冷静的做事情,用不断的做事情看书和思考,压抑心底深处的对前途的迷茫。其实整个大三,我都不知道自己要干什么,在干什么,只知道就像一个运动员一直往前奔。大三我们班很多同学都开始准备 GRE 了,我也就跟风准备 GRE。说实话,当时我捧起红宝书的时候,出国的动机并不强烈。那时候我并没有对美国和中国在各方面的差距有清晰的认识,且过于小看环境对人的影响。潜意识中,我想读计算机,但是考研比出国转计算机要简单多了,学长也告诉我,申请计算机专业很难,我们数学系也鲜有先例。因为正方面没有很强的激励,反方面又觉得困难重重,我就不是太把出国当回事,除了背背单词,我把主要的精力放在了读计算机书上。我专门扫荡 TP.312 (计算机理论和编程)那个分类,同时看了很多英文原版书。TP312 中的大部分书,我都是囫囵吞枣的看,做一些总结性的笔记;只有少数几本,如《计算机程序设计艺术》,《编程珠玑》这几本书,是认认真真看的。这时候的我已经没有时间,或者说耐不下性子一条一条做题了,只能浏览一些题。即使这样浏览,也让我在后来大四的工作面试中占了很多优势。

我有一个从高中就开始的习惯,就是把每天胡思乱想的东西记在一个笔记本上,算是思维快照。我还常常翻回去自省,看看过去和现在的变化。大一大二的时候,这本笔记本上记载着的是和生活和感情有关的琐碎小事,或者宏大空泛的目标和叙事。而大三记录下的内容明显具体起来,比如这周看完了什么书,下周去图书馆借什么书等等。现在我回看这些记下的文字,明显就可以发现,我写下的这些计划之间是没有很具体的头绪的,这些要做的事情后面,并没有一个明确的线索串起来,而是向无头的苍蝇一样到处尝试,到处碰壁。举例来说,我的笔记本里清楚的记下某周要看操作系统,可是下周还没看完操作系统的时候,又记下这周不看操作系统了,看编译原理。就这样,好似饥饿的狗熊在掰玉米棒子,看上去很勤奋的在掰,掰下来,啃两口,扔掉。当时我也能感觉到,知识饥饿感永远在那里,永远填不满。不过,我又总觉得前方应该有那么一个玉米棒子,能够填满自己的饥饿感,所以就一直向前奔跑。其实这种奔跑,不管多勤奋多刻苦,因为不够深入踏实,永远都是事倍功半的。好在我在不求甚解的同时,很注意整理自己的既得知识,写在小本子上。后来我到大四的时候,写论文也好,考研和找工作也罢,很多知识我都是临时突击的,好在有这么一本小本子,我可以按图索骥的去深入强化当时无头苍蝇般乱看的一些书。如果用搜索引擎的工作原理打一个比方,我觉得我大三疯狂的读书和学习,就好比是在建索引,等大四要搜索结果的时候,就再也不需要每本书全文检索了,直接按照本子上的索引找到当时看的书。

踏实和勤奋这两个从我叔叔和获鼎身上借来的优秀品质,加上取之不尽的TP312书架和背不完的单词,使我并没有被深度迷茫拉入自信和自卑的反复中,相反,随着这些积累越来越多,我变得越来越自信了,虽然这种对积累的自信尚未被现实验证过。

大四,书到用时

大三的迷茫让我不确定以后的方向,未被现实验证的自信又让我蠢蠢欲动,所以,我就自然的产生了“赌一把”的心态。 如果以赌博为喻,我就是在所有的盘口上都了下注,要不全输光,要不总能赚,而我相信至少能赢一盘。

所以,大四甫一开始,我就拟了一个时间表,自信满满地想要在考研,找工作和出国的三条战线上都有所突破。我设想 11 月之前弄完出国材料,并且把简历弄漂亮,顺带找工作。1 月前寄材料,套磁,准备考研,4月前搞定一切,等 offer。 5-6 月我就写写论文,然后周游中国了,等我周游回来,至少三个机会让我碰到一个吧,我就从了那个就行了。从这个狂妄的计划中可以看到当时的我的自信,不过我这个自信倒是有一定根据的,因为我研究了考研的模拟题和找工作的不少案例,我当时想,好好准备,应该可以上南大,工作应该可以进腾讯,出国我没底,所以我也想用前面两个来保底。

大四只有一门课,所以我就四处乱跑,乱逛。学校有国际会议,我就跑去和老外搭讪;鼓楼有关于佛教的演讲,我也跑去听;IT 公司的宣讲会和笔试,遇到好的我就去参加参加。如果没事,我就上自习,继续读鼓楼图书馆的书。就这样,我遇到了一个又一个的机会,基本上不管成功失败,都算是有付出就有回报,当然运气成分也不少。

10月左右,微软(MSN)来我们学校面试。这是我第一次面试,很紧张,前一天看书看到1点多,第二天午觉就睡过了一点,加上箱子里唯一的一件衬衫皱巴巴的完全不能穿,所以干脆就穿着拖鞋和 T 恤冲去了。面试的人很友好,面试也很顺利,有的同学还在等第二轮的时候,我的四轮就结束了。我当时的感觉是,微软的面试题太简单了,除了问我南京市新街口周边有多少辆车外,其他题目都是中规中矩的计算机面试题。面试出来之后,我和一个软院的同学在食堂讨论题,他说,题怎么这么难啊?我就很奇怪,说,这些题《编程珠玑》上不都有的么? 后来我才知道,其实看过《编程珠玑》的人,不是我想像的那么多。我也是在书架上乱翻才偶然看到《编程珠玑》。在 2005 年的时候,没有Web 2.0 和社会化推荐,我的世界,就只有面前的书架那么大,我幸运的在那么大的书架上遇到了几本经典书,并且细读了,吸收了。

很快,微软给了我一个在上海做测试的职位。 当时我一心要去北京,就不大喜欢上海这个职位,就没要这个 offer。不过有了这一轮,我也知道面试怎么回事了,这次面试,更加强化了我的自信,于是,我又开始比较狂妄了,觉得自己能进当时互联网中最热的,宣称招 50 个李开复博士的关门弟子的公司, Google 中国。

找工作还没全展开的时候,我就要准备考研报名了。我选择了北大生物系的生物信息学专业。其实这是一个让我可以到北京的小聪明,而不是一个全面慎重思考的结果。当时我看到,这个专业只招两个人,而且试题是和计算机系一样,于是我想,除了我这样的一门心思想去北京的,哪个人会绕这么大一个弯子去学生物而不去学计算机呢?其实我自己也不敢挑战计算机系,因为我知道难度太大了,但是我又很想到北京去,就想了这个暗度陈仓的办法。我当时还想, 考上了,要是不爽,读一年俺就退学找工作。2005 年末的大环境和现在是不一样的,那时候 Web 2.0 的呼声很高,让我觉得搞创业比读研有前途多了。 不管怎样,我自认为很小聪明,就报名了,当然考完才知道,就为了这两个名额,有40多个人来考。

我要感谢当时同系的两个同学苗文建和王琨,他们都是准备考北大计算机,即和我考同样的试卷。他们资料很全,我就和他们一起上自习,蹭他们的看。大四我买书花钱很快,到了考研这时候是真的舍不得花七,八十块钱买自己看不上的辅导材料和教材,所以就借他的看。那时候考研的教材是北大的 《操作系统》和 《离散数学》。其中操作系统的教材,行家都知道这本教材参考了不少 Tanenbaum 的,我也看过 Tanenbaum,就不大愿意再买一本。前面我提到过,我大一大二做过一本离散数学教材上所有的习题,所以离散数学我没化太多精力。至于政治,我是经历过3+X 高考的人, 基本上考过政治的人都知道,考好考差和复习不复习无关,至于和什么有关我就不在这里多说了,总之就那么几句话翻来倒去的,命题套路很容易掌握,比揣摩圣意的命题者更加聪明,对于受过大学教育的考生,是个很简单的事情。我最后成绩还不错,考了个专业总分第一,其中数学完全是离散数学的功底,考了个 136, 英语也是靠准备 GRE 托福的底子,考了差不多80。政治也差不多 80,专业课运气很好,正好 90 分搭线,就这样糊里糊涂的考上了。

考研这个事情,我至今觉得运气远大于真正的付出,结果也非常出乎我的预料。记得结果刚出来,同学帮我查分的时候,我根本不相信自己考这么好,还放话说如果考这么好,请全宿舍吃饭(我记得兜里面当时只有200块钱,根本没法请人吃饭,后来还是借钱请客的)。考研结果出来之后,迷茫的我得到了一个非常好的保底,我就比较得陇望蜀了。其实在当时我的心里,我并没有认真想过以后要具体干什么,只是隐隐约约觉得要不去北京,要不就去美国。有了北大这个机会,我就调高了自己的心理标杆,定下了两个大的,具体的目标,或者说是圣杯,一个是进 Google 中国, 一个是到美国名校读计算机,有了考研这个保底,在2月份过完年,我就不慌不忙的认真准备这两件事情了。

我10月份的时候给 Google 投了一份简历,很快在11月份就被拒了。 而我的搭档李获鼎在签了 IBM offer 的第二天,却收到了 Google 的面试邀请(我相信凭他的实力,如果晚一天签约, 现在就在 Google了)。我听了之后觉得很奇怪,按说我们两个,做的项目是一样的, 学得科目也一样的,写的简历互相也看过,都差不多的,我被拒了,他被邀请了,这个好像不大对。 我心里的不服气,反应在行动上,就是每天上网看 Google 中国最近又招了几个人,怎么招的。那时候互联网上盛传的故事是一个人给李开复用很多不同的邮箱发邮件,以保证简历能够万无一失到达,结果瞬间被录用了。这个故事的内容和合理性放在一边,我对故事主人公的精神很感兴趣。我觉得我也可以再试试,说不定坚持就是胜利。正好那个时候,Google 的一些副总裁到北大有个宣讲活动, 说好了现场接受简历的。 我从当时在北大的女友那里得到了这个消息,回来把简历梳理了一下,让她帮打出来,又交了一次。这一次,简历直接交给了某个副总裁,成功了!几周后,HR 就给我打电话,安排机票和宾馆,让我去 Google 面试。

面试的过程平淡无奇,题目不是《编程珠玑》上的,就是《计算机程序设计艺术》上的,再不然就是网上贴出来的。我个人感觉,面试题就那么多,多做做基本上就了然于胸了。我从找工作一开始,就做了个有心人,每天都上网看面试题。这次面试前,我又把《编程珠玑》这些书复习了一遍。同时我知道自己在面向对象编程方面很欠缺,又看到有面试过的人说面向对象也考,就顺带看了《设计模式》。我还比较有心,花了几个晚上,捣鼓了一个移植于 Mac 的,基于 MVC 的可以当场演示的 Java 小游戏,面试当天我还给面试官演示了这个小游戏的架构和用到的设计模式,这样,我感觉,自己面向对象开发方面的弱点就让这个小游戏的演示给弥补了,面试官也一致说好玩。 很快,四轮面试就结束后, HR 把我带着去见李开复。李开复博士是个风趣的,或者说很善于观察人的人。他见到我的第一句话竟然是半调侃的 “小伙子, 我们 Google 不能解决北京户口啊”,我承认当时的确穿得很民工,因为网上说Google 是个很随意的公司,我是继续以凉鞋装备和鸟巢一样的头发去面试的。我也做了一些功课,所以谈话总的来说还比较和谐。说了一会儿后,我就抛出了为什么 Google 拒我一次又让我再面试这个问题,他说这事情还很罕见,要是我再网申,基本上简历是不可能的浮出水面的, 因为数据库里面已经有标记了,不过我这样二进宫算是精神可嘉。这时候我才回忆起面试的一个MM手上拿的简历,的确是我第二次提交书面简历的复印件,而不是网申的打印版,可见还是坚持再投一次好。(这个坚持,我也是和搭档李获鼎学到的, IBM 二面就有拒他的意思, 他要求 HR 再给一次终面的机会,终面刚结束,HR 就和他握手恭喜他加入 IBM 了,所以面试这个事情,坚持到最后的才是胜利者)。 当天和李开复谈完出来,HR 冲我笑笑,握握手,说,就你和他谈得时间最长。我基本上知道, 这个事情成了。

出国的事情也没闲。我觉得直接靠寄材料申请计算机希望渺茫(我先前直接申请了几家数学和计算机,都是拒信飞飞),所以我就押宝在套磁上。另外,我觉得得弄篇论文才能让材料有分量,就回忆以前乱读的一些论文,再找看有没有最新的值得跟的工作。就这样不着边际的乱找,还真的就碰到了一个感兴趣的题目,一个不大成熟的想法,和一个正在征稿的会议。于是,迅速的写论文。凭着数学功底,编程功底,和 LaTeX 熟练程度,几天敲玩了文章主要部分,然后就是不断的改,不断的语法检查,写程序,做实验。总的来说我运气很好,7天之后,压着截至日期,把文章交出去了。 2006 年的 LNCS 还是被 SCI-E 索引的,那时候我觉得自己一个本科生独立弄篇论文还是挺不容易的,很得意,于是拿着新的简历,一边准备考研,一边套磁。

我现在的导师 Yixin Chen 是一个非常杰出的年轻教授(科大少年班出身),我和他套磁的时候,他是刚刚从事教职,因此很需要学生。我之前也发了几封信,到了 4.15 左右的时候,他的另一个原来录取的学生因为某些原因去不了了,所谓就和我说,我可以过来。 那时候我还在等 Google 的 offer, 我的导师说, “Google 的 offer 不难,你读了书以后可以拿美国 Google 的 offer ,我也拿过。而来美国读书的机会就这么一次”。 那时候我想问题并没有现在这么深刻,加上比较想去北京,因此一直犹豫不决,还在催 Google 的 HR 快发 offer, 心想你们哪个 offer 先到我就从了哪个算了。我爸爸,我叔叔都不含糊,一个一个的轮番教育我。然后加上我导师说了上面这番话,我就毫不犹豫的答应了,说我一定过去。于是,我告诉 Google 的 HR, 我不去了。 就这样,我所有的自己认真谋划认真准备的路都没有走, 反而最后通过误打误撞和套磁的路,选择了美国。

其他闲话

总的来说,面试也好,考研也好,写论文写好,之所以能够比较顺利,我觉得都是大一大二一个键一个键敲出来的,也是大三一本书一本书读出来的。我写这篇文章的时候, 把相关的前因后果放到了一起,是为了解释有些事情的前因后果。 不过我不想给读者一个误解,即我恰好运气特别好,一路直行没有任何弯路。相反,我觉得我走了不少弯路,但是我很高兴走这些弯路。比如说,我上大学的时候,很多精力花在了做数论题上,《现代数论经典引论》这本书的习题我差不多一题一题都做完了,但是我出国申请学习数论没拿到中意的 offer, 现在也不从事相关的研究,所以这些积累至今没看到有什么直接的作用;我一度认为自己要做一个电子工程师,我大一大二还旁听了电子系的模拟电路,数字电路,还混到电子系实验室学 ARM 开发板,但是现在这些除了吹牛外也没什么作用,学到的一点皮毛也还给老师了。我是个兴趣很广泛的人,看过的杂书,做过的笔记,最后有用的,我觉得有十分之一就已经很好了。大学的时候,为了让自己精力不耗散,我限定自己每次借书,一定要保证四本计算机/数学,外带一本社科人文书,还有一本任意的书,而且那四本一定要做笔记精读。因为这样,我才能够最终没把有限的人生耗费在无限的浅尝辄止上。

即便这样,如果纯按照现在需要的知识看,我在“没用” 的东西上浪费的时间还是很多。不过我倒不愿意称这些为浪费, 在我看来,成长路径中有很多的偶然,没人知道在一些关键时候需要什么样的知识储备,所以踏实地多储备一些是好事。我在大四的经历和其他的一些经历都告诉我,以前通过看书,自学,彻底的弄懂的一件知识,会在某个不经意的时候,突然被用到。这时候对当年积累的庆幸和再发现的快乐,就像蓦然回首见到灯火阑珊处的秋水美人一样,是没法用文字描绘的。另外,我有个切身的教训,就是要踏实的积累。我读书涉猎很广,很多东西我都能大概知道怎么回事,但是就是学得不深刻,所以即使当时花了很多力气,需要的时候还要花大功夫重头捡起。 所以我的教训就是,与其两个半瓶水,不如一个满瓶水。 这个道理用在读书上就是说,一本好书读两次要胜过两本好书各读一次。要是大学能重新来过一次,我会少读一些书,多读透一些书,这可能是我觉得当年猛读书的唯一遗憾。

小时候我嗜书如命,我爸爸老是担心我会成为一个不懂人事的书呆子。大学中的我,几乎天天泡在图书馆,可以说是个不折不扣的书呆子。其实除了读书外,我的大学生活的其他方面也是很快乐的。我有非常玩得好的同学们;靠着帅哥室友们的魅力,我还常常和他们一起,和联谊寝室那些青春活泼的姑娘们打球,打牌。我还谈了一次恋爱,让我对感情的事情有了深刻的认识,这些事情,交替的穿插在我这个书呆子平淡无华的大学四年,让我的大学生活如此美好,但这些细碎的星星点点的人生经历,都不足为外人道了。

我就在自学和读书,乱读和乱逛中,过完了我的四年。博文视点的编辑和我约稿的时候,我就已经读了这个系列其他作者的一些文章, 很多作者都写了我没有的很多经历,很让我羡慕。自学和积累始终是我大学的一条主线,我也写不好那些支线的事情,因此文章平淡少趣味,只希望读者海涵了。我是个不合格的学生,我差不多忘了不少任课老师,忘了我的学号,忘了班上不少美丽的女同学的样子,却没有忘记某个夏天的中午,汗流浃背的我冲进图书馆,跳入一阵凉爽的书香;以及某个春天,我在草坪上读书入了迷,喷水龙头把我后背全打湿了还浑然不觉。这就是我的大学。

Aug 5, 2009 - ACLU 早期历史和领导人

Comments

(本文主要参考(本文主要参考 但经过了我的编译和总结, 也参考了其他一些资料)

没有什么事情是一帆风顺的, 100 年前的美国就是这样的例子.

1914 年, 欧洲爆发了第一次世界大战. 其实这是一场欧洲的战争, 美国只是在旁边看着. 到了1917年, 美国政府感觉到利益和胜利都向自己招手, 于是对德国宣战. 美国是一个传统上执行孤立主义的国家, 加上欧洲和美国的亲缘关系, 大部分的美国人是不愿意帮助任何一方的。 美国的共产党和社会主义者也将这场战争解读为帝国主义战争, 因此也宣传让美国不要介入, 让劳工阶层不要参军。

在美国国会已经宣战的情况下, 国内依然有反对意见, 美国政府自然很生气。 为了和谐反对意见, 美国政府和国会陆续通过了一系列严厉的法令, 如间谍法,  这些法律看上去是为惩罚通敌卖国的, 其实落实下来, 就是抓反战人士. 美国很多社会主义政党的全部的分支, 能够在一夜之间全部被司法部门的没有搜查证的执法人员捣毁. 当时美国的一些所谓的爱国商人, 还组织了一个爱国联盟, 其实就是私人武装, 宣扬爱国, 暴力迫害持有反对意见的人。 他们居然在1917年7月3日, 为了第二天国庆大典的和谐气氛, 在全国各地冲入剧院, 沙龙等人聚集的地方, 一举抓捕六千多可疑人士, 全部在未经正常程序审判的基础上投入监狱, 而这是美国宪法的人身保护条款明令禁止的。 美国的大学也失去了独立性, 不够”爱国”或者反战的教授不被允许任教. 以自由和独立著称的纽约时报, 在 CLB (ACLU前身) 成立的时候, 在报纸上写道: “监狱在等着这些人呢. 言论自由当然是重要的, 但是也是有限度的. 一个国家在卷入战争的时候, 好的国民应该为国家的好处和福利着想”. 华盛顿邮报也为政府的这些袭击打气, 说在此关键时候,对于对自由的侵犯的指控是吹毛求疵。 就这样,从上到下,全国一致的在迫害持有反对意见的人。

每天, 全国数不清的人被秘密警察和爱国私人武装逮捕, 报纸上充斥着支持战争的言论. 任何反对战争的人都和受共产国际这种外部势力挑唆划上等号。 就连非常支持战争非常爱国的某个导演, 因为在拍摄美国版开国大典的时候, 不小心把英国的形象塑造的高大了一点, 让美国军队不够光荣正确, 也按照间谍法被判刑.  美国邮政宣布审查邮件, 并拒绝邮寄任何有反战言论的出版物. 美国政府专门成立了一个公共信息部, 用现在的话说叫真理部, 用大家都知道的说一百次谎言就成了真理的方法, 向社会宣扬战争的好处. 国会也坚持多数人的民主的概念, 宣称只要有大多数人同意了, 国家意志就可以毫无障碍的强加给任何公民. 连因为宗教原因不愿参与战争的一些基督徒, 也被关押受审, 侵害了第一修正案规定的他们实践宗教的自由.

ACLU 的创始人 Roger Baldwin 原来是 St Louis 当地的一个律师, 当时我们学校社会学系的一名教授. 他到了东部海岸之后, 亲眼见到了这些情况, 决定成立一个旨在保护公民权力的机构. 当时这个机构的名字叫做 CLB, 公民自由局, 专门为那些因为违反间谍法而受到迫害的被告辩护. CLB 当时成立的宗旨就是要维护公民权力, 一方面, CLB 立志于从政府和狂热爱国分子手里, 争取异端的言论自由; 另一方面, CLB 又要和实用妥协主义做斗争 (有些进步党人和改革派, 认为赋予政府更多的权力让政府进行彻底的社会改革, 就可以制造一个完全美好的未来, 为此他们不惜牺牲少部分人的利益). 如读历史的大家所知, 第三帝国和当时的日本走了第一条路, 变成了法西斯和战争狂; 苏联和一些其他国家走了第二条路, 成了 1984  国, 一批一批的人被清洗. 只有美国好像天生受到上天的眷顾, 不偏不倚的走了中间这条路, 巧合乎?

或许因为 Roger Baldwin 和我们学校历史上的关系, 我可以在图书馆查阅到很多 ACLU 的书. 有本书这样写道: “Roger 认识到, 民主并不是自由的同义词, 多数人的意见并不能消除少数人拥有异端的权力, 他感到只有从美国宪法第一修正案出发, 才能改变现状. 因此, 他把维护宪法第一修正案中的言论自由当成 CLB 的宗旨, 而不考虑这些言论本身的内容和对错. ”  Baldwin 是一个温和的, 有较高社会地位的人. 创办 CLB 之后, 他要邮寄印刷材料, 还提前和美国司法部打招呼, 在确信材料没有违反上面说的间谍法之后,才开始印刷。 因为邮局拒绝邮寄一些邮件,他还事先问了邮局这样的出版物有没有问题,邮局说没有问题。 即使是这样的小心, 最后邮局还是偷偷的把他邮寄的 3500 份材料拦截了。 虽然 Baldwin 告上了邮局,但在当时,这种案子只能是不了了之。 就是这样的一个温和的推动公民权利的人,也被联邦政府看上了。 1918年,美国司法部门切断了 CLB 的电话, 并且胁迫房东驱逐 CLB。 八月,联邦执法人员持枪闯入办公室,开始抄家。 友善的 Baldwin 几乎是温和的协助了他们的抄捡,联邦公诉人如获至宝的在日后拿这些抄捡来的材料诉讼 CLB 颠覆国家政权,这是后话。 政府看不惯 Baldwin, 而Baldwin 却依然继续工作, 那么, 政府必定会找理由继续惩罚 Baldwin。 终于,他们发现按照征兵法, Baldwin 是一个应该到征兵局注册的人, 而 Baldwin 却没注册。 就这样,他们弹冠相庆,逮捕了 Baldwin, 在一场毫无理由的法庭辩论上,宣布胜利,并且把 Baldwin 关进了监狱, 时间是一年。 其实, 没有任何一个监狱能锁住一颗自由的心, Baldwin 把这段经历看作是“去政府度假”, 他在自己的 TODO 表上,写下了在监狱期间要做的事情, 要写的文章,直到一年后出狱。

Baldwin 在1919年出狱后,开始了组建 ACLU 的历程。  ACLU 成立的初期,有两种人,一种是坚决的自由斗士,在原则上决不妥协, 认为和当时混帐的司法部门协商简直是与虎谋皮; 另一种是坚定的渐进主义者,一次一次的把各种各样的 case 上诉到最高法院。 前一种,让 ACLU 在这么多年,即能够为共产主义者辩护,也能为3K党辩护,从不因为言论的内容而区别对待; 另一种,则不断的取得一些小的进步,解开冰冻三尺的严寒, 一次不行,两次,通过一个个著名的判例,让政府终于被宪法牢牢约束(ACLU是最高法院的老主顾, 每年,除了美国政府外,和最高法院打交道最多的,就是ACLU, 一年 ACLU 要处理数以千计的例子, 其中的核心案例,通常最后都是最高法院裁定)。 而 Baldwin 作为 ACLU 早期的领导,在原则和实践两个层面都能处理好, 实在是一位划时代的领导者。

(Update, 感谢细心的读者, 原文有一些笔误, 已经改正)

Aug 4, 2009 - 智能家庭设计的一些想法

Comments

以前我在博客里说过我用 Gtalk 控制我家的空调,这样我在回家之前就可以先开空调, 到家的时候正好家里凉爽起来了。 这个技术很简单, 只需要弄一个所谓的 X10 设备就行了。 我的朋友 Bao Sheng 做了一个视频, 有兴趣的可以看看他的演示和讲解。

[以前我在博客里说过我用 Gtalk 控制我家的空调,这样我在回家之前就可以先开空调, 到家的时候正好家里凉爽起来了。 这个技术很简单, 只需要弄一个所谓的 X10 设备就行了。 我的朋友 Bao Sheng 做了一个视频, 有兴趣的可以看看他的演示和讲解。

](http://en.wikipedia.org/wiki/X10_(industry_standard)) 是一种非常方便的协议, 所有的控制信号都通过家中的电源线传播, 所以设备一插到插座上, 就可以被控制,不需要另外布线, 即插即用,对于我这种租房的人来说非常方便。 X10 设备有很多控制的方式。 有一种 X10 设备, 可以连接在计算机上, 然后计算机就可以发送指令控制其他X10设备。 计算机和X10 之间的接口是串口,所以如果你觉得不爽,用单片机和一个 MAX232 芯片就可以控制了,不需要庞大的计算机。

如果家中的电灯等不是插在插座上,而是通过墙上开关控制,你只需要将家中原有的电灯开关换成支持 X10 的电灯开关就行了。这种 X10 的电灯开关, 和普通墙上开关大小一样,功能一样, 但在 eBay 上的售价比在 Home Depot 买的普通开关还便宜,所以完全可以把家中开关全部换掉。这样就可以用计算机控制家中原有的电灯。

空调, 电饭锅, 风扇, 电视机等电器都可以如此控制。 至于我说的网络控制,就更加简单了, Gtalk 协议都是公开的,只需要写个客户端挂机监听就行了。 如果想玩这套东西的, 我这里有源代码。 X10 还有无线射频接口, 所以可以在车上控制车库的门或者门口的灯, 在家也可以躺在床上一键关灯,都是无线接口能干的事情,这里面的技术,和电动车锁的原理是一样的,你甚至可以把家里面的锁换成车上那种,一有人撬,立即杀猪似的发出警报。

控制电器有很多应用, 比如看电影的时候,能够达到一键打开电视和DVD以及关掉大灯的效果。早晨也可以通过控制灯慢慢亮起来让人自然醒来。至于控制空调,电饭锅这些,都是完全看需要看想象力了。

以上这些玩意,属于第一代智能家庭,我家基本上都部署了。 我现在考虑把我们家往二代智能家庭进化, 具体来说要能做到以下几点, 有些技术细节我没想好, 所以写出来请各位读者大牛出主意。

**

  1. 在计算机上可视化控制一切电器**

这个不难,只要写一个 GUI 客户端就行了。 如果想做得比较好玩一点,可以像  Second Life 一样, 把家中做成一个虚拟现实系统, 人走到哪个房间, 哪个房间灯自动点亮。 这个需要一个人的定位机制, 而且人身上的传感器要很小, 便于携带。 这个目前还没想好怎么弄。 大家帮我出出主意? 虚拟现实有什么好的软件? 是不是在门口装个摄像头做一下 Motion Detection 比较好?

**

  1. 语音控制**

我想语音控制所有的家电。 我看到别人 hack 了一个无线对讲机,让这个对讲机的信号送到计算机里面,但是随身放一个对讲机好像太庞大了,目前正在考虑弄一个蓝牙耳机,这个蓝牙耳机和计算机连接起来,做语音识别,然后发送信号到家电。 计算机端的语音识别软件很多的,应该很好弄。

**

  1. 大脑直接控制和其他控制**

BCI 技术还不成熟, 不过带一两个传感器的检测眼球运动的东西早就有了,如果要控制的东西不复杂,可以使用 Ocz Nia,  如果要复杂一点, 可以使用 Emotiv. 唯一的不好就是要带个帽子到处走,倒没有一个随身的车钥匙大小的遥控器方便。 自从有了 WII, 我们可以 Hack 一个 WII Remote, 然后在家挥一下 WII Remote, 就可以让灯亮起来。 要是 WII Remote 再小一点,或者自己买一个加速传感器和位置传感器粘在筷子上, 就很有魔棒的感觉了,到时候对着灯一点,灯就亮了, 哈里波特保证拜你为师 :)

**

  1. 传感器通信**

我家现在卧室的门上面都装了一个红外发射器(垃圾堆上捡了个电视遥控器,用了里面的红外发光二极管)和一个接收器,人进入屋子的时候会切断红外线一次,我就自动打开屋子里的灯,本来是贴在地上的, 可是我们家的猫老是走来走去,干扰系统,所以我不得不放在半人高的地方,可是这些器件总是要拖很长的线才能把信号送回去,我现在放半人高的地方,线拖下来, 猫就老在我接出去的线上面蹭痒,搞得系统三天两头挂掉。 各位知道有没有什么便宜的无线协议,能够把这些小器件之间的无线通信问题解决? 市面上的 WIFI 传感器都要大几十美元一个,不够便宜,这些小器件走 X10 也不行,我家没那么多插口, 而且我还得投资 TTL 到 X10 的接口。 蓝牙和WIFI 模块都太贵,RF 技术我是白痴,而且也不知道怎么做一个不互相干扰的系统,各位有高人指点指点?

5. 微型化计算机

我最近找了一些不带风扇的,可以跑 Linux 的作为家庭媒体存储中心和控制中心的计算机, 我的要求是体积要小,耗能要低,可以放在客厅或者锁在锁在壁橱里面。 其实一个几十块钱的二手计算机就可以干这些事情了,但是噪音太大,长得难看,实在不适合放在客厅。

还有就是接口,至少要支持一些 USB 口,这样我外面才能接其他的外设。 我找了一顿没找到什么好的。 各位有什么建议? 我目前找到的包括 WD My Book World Edition, 中科梦龙盒子(太贵), Foxboard, 和 Marvell Plug Computer. 或者自己 DIY 一个 ATOM 芯片的机器, 或者买一个 ARM 开发版, 或者 Hack 一个  20 块钱的二手 TiVo. 我现在还在这些技术之间纠结,想要找性价比最好的。

同时我还想搞一块很节能的液晶面板,带触摸的,算是家庭控制中枢,可以看到所有的灯和传感器的工作情况,就是不知道有便宜的小触摸面板没有?

我的目标是建立一个智能的,让我安居乐业的家。 各位读着还有什么奇妙的想法?

Jul 27, 2009 - 六,七月所读书目

Comments

技术类:

[技术类:

](http://www.amazon.com/Principles-Programming-Languages-Evaluation-Implementation/dp/0195113063) Principles of Programming Languages: Design, Evaluation, and Implementation

讲了高级语言的历史,设计沿革。是写作编程珠玑番外篇的极好参考材料。

Dale Dougherty, Arnold Robbins: sed and awk and _Alfred V. Aho, Brian W. Kernighan, Peter J. Weinberger:  _The awk book

天天要数据处理,所以系统的学习了一下 sed 和 awk.

**

非技术类**

Letters to a Young Mathematician

类似于 Advice for a Young Investigator, 都是教年轻人怎么做科学研究的书。

China Road

这本书包含的内容很多,看了几遍。看得越多,越是感慨。我之前说过,再也不再博客上对贵国的事情发表任何看法,所以,就不写书评了。书中提到了一个人,我觉得值得提一下。 这个人叫做胡佳,在作者写作的那年,还冒着很大的危险,辛辛苦苦的救助和关心河南的艾滋病患者,时过境迁,他现如今却身在牢狱,老婆孩子全家几乎被软禁和监视,这就是现实。

Carl Jung: Psychology and Religion

Jung 可以称得上是精神分析之父, 也是心理人格测试发明人。这本从心理学看宗教的小册子帮助我厘清了很多以前不明白的宗教心理现象。越是了解宗教心理,越是害怕和有“信仰”没逻辑的人辩论。此外,这本书读起来非常舒服。

J.K. Rowling: Harry Potter and the Sorcerer’s Stone

我是个超级没文化的人,现在才开始看第一本。写得果然很好,我以前很鄙视这类奇幻小说的,现在读来,饶有趣味。

下月争取读完 The Elements of ProgrammingIn Defense of American Liberties: A History of the ACLU 两本书,并且读 Harry Potter 第二本。

Jul 22, 2009 - 完全用命令行工作-5: 完结篇

Comments

前几篇我已经提到了完全用命令行工作的妙处。 我提到了聊天用的 Freetalk, 查邮件用的 Mutt 等等。这篇完结篇中,我把以前没提到的零零碎碎的完全基于命令行/键盘的用法写出来.

在苹果下, 我用的 Launcher 自然是 Quicksilver. 在 Linux 下, 我一般是直接用命令行. 偶尔用用 GNOME Go, 不过基本上还是用命令行.

窗口管理器上, 我现在用的是 awesome windows manager. 这个窗口管理器支持多屏幕的纯键盘操作, 我强烈建议天天只用 Firefox 和一个编辑器一个命令行的程序员们尝试一下这个窗口管理器。 这个窗口管理器还有一个好处,就是所有的窗口控件都可以脚本化,所以,可以随意在状态栏加时间状态啊,按钮啊, 等等。 而且这些按钮啊,状态阿,都是可以在运行时用脚本修改的。比如你可以定时让状态栏闪动,只需要在 cron 脚本里面写一条就行了, 让控制闪动的脚本按时运行。

现在我聊天还是用 Freetalk. Freetalk 有一个非常好的特征,就是可以任意的加插件。 我写了一个插件,让我在工作的时候,除了爸妈,未婚妻或老板给我发消息触发一个“滴”,其他消息一概不响。这样非常集中精力。 有时候不得不上 MSN, 我就用 [前几篇我已经提到了完全用命令行工作的妙处。 我提到了聊天用的 Freetalk, 查邮件用的 Mutt 等等。这篇完结篇中,我把以前没提到的零零碎碎的完全基于命令行/键盘的用法写出来.

在苹果下, 我用的 Launcher 自然是 Quicksilver. 在 Linux 下, 我一般是直接用命令行. 偶尔用用 GNOME Go, 不过基本上还是用命令行.

窗口管理器上, 我现在用的是 awesome windows manager. 这个窗口管理器支持多屏幕的纯键盘操作, 我强烈建议天天只用 Firefox 和一个编辑器一个命令行的程序员们尝试一下这个窗口管理器。 这个窗口管理器还有一个好处,就是所有的窗口控件都可以脚本化,所以,可以随意在状态栏加时间状态啊,按钮啊, 等等。 而且这些按钮啊,状态阿,都是可以在运行时用脚本修改的。比如你可以定时让状态栏闪动,只需要在 cron 脚本里面写一条就行了, 让控制闪动的脚本按时运行。

现在我聊天还是用 Freetalk. Freetalk 有一个非常好的特征,就是可以任意的加插件。 我写了一个插件,让我在工作的时候,除了爸妈,未婚妻或老板给我发消息触发一个“滴”,其他消息一概不响。这样非常集中精力。 有时候不得不上 MSN, 我就用](http://www.centerim.org/index.php/Main_Page) 和 centerim-utf8 (后者支持汉字), 不过我极少用,一个主要原因就是我不知道怎么写插件。 这些不让我 hack 的软件基本上都不是太顺手的。

除了写程序和发邮件聊天,剩下的就是上网了。 自然,我上网是 Firefox。 我用了一个叫做 [前几篇我已经提到了完全用命令行工作的妙处。 我提到了聊天用的 Freetalk, 查邮件用的 Mutt 等等。这篇完结篇中,我把以前没提到的零零碎碎的完全基于命令行/键盘的用法写出来.

在苹果下, 我用的 Launcher 自然是 Quicksilver. 在 Linux 下, 我一般是直接用命令行. 偶尔用用 GNOME Go, 不过基本上还是用命令行.

窗口管理器上, 我现在用的是 awesome windows manager. 这个窗口管理器支持多屏幕的纯键盘操作, 我强烈建议天天只用 Firefox 和一个编辑器一个命令行的程序员们尝试一下这个窗口管理器。 这个窗口管理器还有一个好处,就是所有的窗口控件都可以脚本化,所以,可以随意在状态栏加时间状态啊,按钮啊, 等等。 而且这些按钮啊,状态阿,都是可以在运行时用脚本修改的。比如你可以定时让状态栏闪动,只需要在 cron 脚本里面写一条就行了, 让控制闪动的脚本按时运行。

现在我聊天还是用 Freetalk. Freetalk 有一个非常好的特征,就是可以任意的加插件。 我写了一个插件,让我在工作的时候,除了爸妈,未婚妻或老板给我发消息触发一个“滴”,其他消息一概不响。这样非常集中精力。 有时候不得不上 MSN, 我就用 [前几篇我已经提到了完全用命令行工作的妙处。 我提到了聊天用的 Freetalk, 查邮件用的 Mutt 等等。这篇完结篇中,我把以前没提到的零零碎碎的完全基于命令行/键盘的用法写出来.

在苹果下, 我用的 Launcher 自然是 Quicksilver. 在 Linux 下, 我一般是直接用命令行. 偶尔用用 GNOME Go, 不过基本上还是用命令行.

窗口管理器上, 我现在用的是 awesome windows manager. 这个窗口管理器支持多屏幕的纯键盘操作, 我强烈建议天天只用 Firefox 和一个编辑器一个命令行的程序员们尝试一下这个窗口管理器。 这个窗口管理器还有一个好处,就是所有的窗口控件都可以脚本化,所以,可以随意在状态栏加时间状态啊,按钮啊, 等等。 而且这些按钮啊,状态阿,都是可以在运行时用脚本修改的。比如你可以定时让状态栏闪动,只需要在 cron 脚本里面写一条就行了, 让控制闪动的脚本按时运行。

现在我聊天还是用 Freetalk. Freetalk 有一个非常好的特征,就是可以任意的加插件。 我写了一个插件,让我在工作的时候,除了爸妈,未婚妻或老板给我发消息触发一个“滴”,其他消息一概不响。这样非常集中精力。 有时候不得不上 MSN, 我就用](http://www.centerim.org/index.php/Main_Page) 和 centerim-utf8 (后者支持汉字), 不过我极少用,一个主要原因就是我不知道怎么写插件。 这些不让我 hack 的软件基本上都不是太顺手的。

除了写程序和发邮件聊天,剩下的就是上网了。 自然,我上网是 Firefox。 我用了一个叫做](http://vimperator.org/trac/wiki/Vimperator) 的插件,可以纯键盘的用 vim 的方式控制 Firefox. 这个插件可配置性极强,基本上日常用到的翻页,开关标签和搜索,都可以一键完成。 如果您是 vim 的超级粉丝,这个插件肯定让你觉得上网冲浪从来没这么爽过。 以前我常常用 ubiquity, 不过现在鼠标被我拔了,所以”选中一段文字”这样的操作我基本不用,所以 ubiquity 用的相对少了。

还有就是看 pdf 了,我要推荐一个中国人开发的软件,叫做 apvlv。 这个软件可以让你用vim 的方式看 pdf. 比如光标往下走,直接按 j 就行了, 非常方便。 我现在看 pdf 基本上就用这个了, 每次文件另存为的时候只要 :w, 实在是大大提高效率。

最后,我在文本字符下面也发现了一个类似于 awesome 的咚咚, 叫做 screenwm. 这个软件, 可以让你横着或者竖着切分屏幕成任意的组合, 在每一个小单元里面,相当于运行着一个 GNU Screen 窗口。 所以,在我的宽屏上,我的左边是 vim, 右上面是 mutt/gtalk/todo, 右下面是 shell, 工作起来不要反复切窗口, 非常舒服。

如果您有什么完全用键盘工作提高效率的妙招,不妨留言告诉我 :)