Monthly Archives: December 2008

计算机、围棋和有鬼气的好诗

   这次到上海出差,特别喜欢看zds大侠下围棋。呜呼,俺的棋感和算路下降得厉害。

  小时候很淘:动不动就爬到别人家平房屋顶上,玩宇航员和太空基地游戏;要不就把家里窗户的纱窗剪下一大块,模仿建筑工人,用网眼过滤砂石;再不然,就在院子里挖土、和泥、生火,打算烧制一个陶器烟灰缸……于是就被送到少年宫围棋班,老老实实安安静静呆着,学了四年围棋。

  由于这个原因,高中时代接触软件编程的最初目的,就是想实现一个围棋算法,打败李昌镐。

  围棋中的弃子腾挪很频繁,落子必须在局部计算和全局战略上取得平衡。因此设计算法的决策就不能仅仅依赖局部搜索。例如国际象棋算法中广泛应用的Alpha-Beta减枝算法,在围棋里就不太灵光。前两年法国人首先尝试用UCT(Upper bound Confidence for Tree)结合蒙特卡罗方法,取得了不错的效果。这一期《程序员》杂志刚刚转载了Google Zurich研究人员的论文《蒙特卡罗方法在计算机围棋中的应用》。

  《程序员》还提到,加拿大人Albert于07年在Science上发表论文,用数学方法完全求解了国际跳棋算法,被评为当年10大科学进步。目前Albert也进入围棋领域,并在cgos评测中成绩靠前。紧随其后的,是我国的职业棋手余平六段开发的软件。排名第一的是微软的课题组,但他们利用了超级计算机硬件。

BTW:

The woods are lovely, dark and deep.

But I have promises to keep.

And miles to go before I sleep.

树林美丽、幽暗而深邃。

但我有诺言尚待实现。

还要奔行百里方可沉睡。

 

  突然记起以前转贴过这首诗,翻箱倒柜搜索出来,居然恰好是一年前,07年最后一天的BLOG

  上次刚贴出来,就有朋友在MSN上开玩笑说:这诗有鬼气,你小子要小心。结果没几天我就在滑雪时摔断了胳膊,又过了不到半个月,经历了更恐怖的事。现在回头看,如果真相信所谓“忌讳邪门”那一套,我还的确有故事可讲。

  可俺仍然是那个单细胞。就因为这诗还是很符合当下心境,偏要把它再贴一次;过两天,我还是会去滑雪。

  抱歉。最近私人抒情太多,大概突然闲下来在家养病,容易胡思乱想。俺保证这是最后一篇。新年新气象。祝所有的朋友,努力就有好结果。(连祝福都是去年的老一套,哈)

列书单2008.12.28

  回到北京以后,陆续参加各种年终总结会。剩下的就是在家休养。昨天去还房贷,顺路逛了逛中关村图书大厦。买了《绿野仙踪》《高卢战记》《漫长的告别》《蓝血十杰》

      

  《高卢战记》一直在找,这次终于拿回来塞书架。小时候看过《绿野仙踪》前三部。怀念与稻草人、铁皮人、胆小的狮子一起旅行的奇妙时光。《蓝血十杰》和一般的经管书籍的有点区别,没有描写像神一样完美的伟大形象,倒像是盖棺定论前的回顾和审判。

  最近有空看美剧,刚把The West Wing第一季看了一半,很喜欢幕僚长Leo McGarry这个角色。总统在去议会发表国情咨文前对留在白宫的农业部长说:“你有最亲密的朋友吗?他比你聪明吗?你可以把自己的生命托付给他吗?那么这个人就是你的幕僚长”。 

再见上海

  瓶子哥光芒四射,顺利完成了汇报,这个月的pFind 2.2 Beta实验效果得到认可。BOSS H邮件说:“就把这一件事情做好,我们pFind的全部工作就非常有意义,可以说值得我们每一个pFind会员一生为之自豪。”马上回北京参加年底总结,要准备滑雪了。

  今年三次出差上海,待了将近3个月,我非常喜欢这个城市,更喜欢新认识的朋友们。ss正忙着准备出国;tiger身为工程师在Nature上灌水。都是俺的偶像呀。

  当然,这里也留下了一些复杂的回忆。无论是对周围的世界,还是对我个人来说,08年都是非常特殊的一年。《舞!舞!舞!》里说:“一直以为人是慢慢变老的,其实不是,人是一瞬间变老的。”

  对于俺来说,最后几个月像经历一次敌众我寡的神奇突围

  瓶子哥前两天教训我说:“心里装了太多事,累死了。”晕,清理手机,贴点图。

  前两张是年初在上海照的:大雪,骨折,毫无准备的不念情份的电话,心情一片茫然。后面是更早前在乔波滑单板。期待再次带上头盔和滑雪眼镜。这个雪季复出,先慢慢热身,恢复到受伤前的状态,再逐渐向高级道努力,09年要给自己买块好板子。




本篇与技术无关

  被美女指责说写的东西太“挨踢”,有脱离群众之嫌。所以本篇BLOG与技术无关。全是八卦话题。

  今天又吃麻辣烫,看到有位老哥吃街边摊用LV钱包,大家争论是真是假,还告诉我BOSS Z用的是LV和Prada的包包。瓶子哥转过头对我说:这就是上海和北京的区别。北京人都大大咧咧的,哪里有这么精致。

  说到BOSS Z,混熟了以后,发现她也和手底下的小丫头们一样八卦。

  前天晚上加班,突然聊起男人长得帅这个话题。BOSS Z说,大学班上有个特帅特让女生着迷的小伙儿现在事业很一般。反倒是那些歪瓜劣枣一个个都混的不错,有个家伙以前总在女生宿舍门口赖着,死追她寝室的一个美女,结果没得手。现在这位老哥刚当上了副市长,不知女孩子有没有后悔自己不懂识别潜力股呢?

  俺高兴地说:“看来上帝真是公平呀。记得‘清华夜话’里也得出结论说,在北京,男人帅是最没用的。我太欣慰了,关键是,从小到大就没人说过我帅。”

  结果BOSS Z半响不语,叹息状,欲言又止,“你……还不知道会怎么样呢”,哄堂大笑。汗,好吧,心理承受能力一向出众:“俺是大器晚成,大器晚成”。

  大家在听宫崎骏电影钢琴合集,我插进去聊动漫,居然没找到一个人看过《银英传》,呜呜真的老了。不过听TJS大虾说田中芳树又有新作了,Google中

编译加速、分布式版本管理和IE7漏洞

  pFind代码慢慢变得庞大,每次make clean再make all,等待越来越漫长:喝咖啡、收邮件、伸懒腰、作体操、聊八卦……因此这两天在考虑引入distcc和ccache。

  总踅摸着用python写个make的替代品,今天刚刚接触到scons。不好意思,穿越了。

  一查Google Reader的starred items,发现很早就标过一篇BLOG,解释distcc、ccache和scons如何联用的。

  所以一线体会很重要,没有切身接触到实际问题,对技术方案就不会那么敏感。

  另一个例子:Eclipse CDT的团队负责人Doug Schaefer的BLOG上刚刚发了一篇Time for Distributed Source Control is Now

  好几年前Linus就在谈论内核代码如何利用Git进行分布式版本管理(Google Tech Talk视频)。但我们这里SVN用得还行,相安无事,感觉离那些太空武器还很遥远。然而最近一段时间,团队越来越大,逐渐分成几个方向,出现异地开发(比如到生物学家这里常驻),问题就多起来。

  回头再查,云风的BLOG早把我们面临的问题总结出来了

  若干年前我们淘汰了加锁的协作编码方式,到今天是时候再做一些改变了。或许,分布式的版本控制工具才是未来的发展方向。我想总有一天,CVS/SVN 这类集中式版本控制工具会被淘汰掉的。

  说说我的困扰吧,可能很多开发小组也遇到过。

  1. 我们禁止提交不能编译通过的代码,尽量不提交不能测试通过的代码。结果,对于很复杂的模块,有人几乎一个月都没提交过一次。他总是觉得程序还不太成熟,但几经修改的代码其实从来没有作版本控制。

  2. 有些模块由两个人合作编写,关系非常紧凑。有时候需要在两人之间交换一些代码,为了方便,大家通过代码仓库中转,结果在仓库中留下许多未完成的版本。

  3. 代码被用笔记本带回家,结果在家完成的部分无处可以提交。(为了安全,我们的代码仓库不能从外网访问)

  4. 某人写了一个模块,总是有 bug 没有修改完,而不敢提交。这个时候,另一个人希望协助他找问题,却没有合适的途径 share 那段完成了一半的模块。跑过去 XP 一下么?天哪,为什么我们这里每个人用的编辑器都不一样,还都爱用些特别个性的配色方案呢?

  当然也不是100%同意他的观点。比如第4条,对于我们来说,双人编程和Code Review是很频繁的。

  说到穿越、火星、反应慢,最近还有件事。

  一直患有打补丁强迫症,以前都第一时间升级Windows补丁。可是这次的IE7严重漏洞,直到昨天正在跑实验的机器被Windows Update强制重启后才注意到(微软太霸道,跑了两天的实验又得重新来过)。用惯Ubuntu以后就很少启动Windows,就算启动,一般也用Firefox浏览器。

  搜索了一下,Yahoo上有一篇:Chinese Team Mistakenly Released Unpatched IE7 Exploit。找到文中所提的中国的KnownSec team的BLOG,他们是这么解释的:

  鉴于此漏洞的危险性,作为微软的安全服务提供商,我们已第一时间发布公告,并提交给美国微软相关部门,这里不再公布具体细节。

  KnownSec team于近期捕获利用IE7一个内存越界的漏洞进行攻击的恶意代码。此漏洞于11月在小范围内泄露,于12月9日前后才完全出售流通,有人制出网马生成器,相信会在短期内十分流行。

  由于最初捕获时,在网络上发现了网马及代码帖子,误以为是已修补的漏洞,不是0DAY,便在内部共享粘贴,导致代码散布。这是我们的失误:(

不是天才,就是笨蛋

  非常认同Steve Paul Jobs的“天才——笨蛋”论

  招人,最重要的就是识别笨蛋,请神容易送神难。这里说的“笨蛋”,衡量标准不仅仅包含智力因素和专业素养,还有工作热情和情商。

  反过来,如果真是天才,就不必太担心简历和职位要求之间的overlap:技术研发不像传达室门卫,本来就会时时刻刻面临新挑战,必须不断调整,关键在于有效学习;另一方面,不同观点进行碰撞是创新的必要条件,团队成员的思维方式最好不要完全重合。

  很多诺奖获得者都是跨领域的非正规军。但这种人都很聪明,就算开饭馆也会赚得多些。(补,查了一下,发现巴菲特这么评价Big G:“If Bill had started a hot-dog stand he would have become the hot-dog king of the world. He will win in any game”)

  如何确保成功?谁都不知道,其实有很多运气因素。也许比较靠谱的办法就是借势,混进一个充满天才的圈子。混进去了,想不被踹出来,还得训练自己的竞争优势,对团队贡献独特价值,拥有不可替代性。说白了,把自己也磨练成天才,这才有点戏。最好再有点个人魅力,像舜一样“一年而所居成聚,二年成邑,三所成都”,吸引天才们跟着你混,那你就“不再是妖,是人妖”

  幻想完毕,回到现实。伍六一说:“做尖子,哪有那么容易”。慢慢煎熬吧小伙儿。

BTW:昨天晚饭去吃苏州羊肉面;23点下班,夜宵是枫林路上传说中全上海最好的麻辣烫。解馋。

中场休息

  动态分配策略一上线,就顺利超出了预想标准。回想一下从10月底到现在,从一点都没摸过的菜鸟,调通第一个hello world,到一个版本一个版本迭代,逐渐把pFind集群加速比提上来。小马过河,既没有想象中那么容易,也没有想象中那么难。

  松口气,然后就感到很累,像身体里某个开关被突然切断一样。

  今天早上喉咙肿了。索性偷懒,让瓶子哥自己去实验室,自己接着闷头大睡。间或收到瓶子哥的短消息,告知后续实验结果,我发了个“太好了,这样数据就全面了”,接着昏睡。13点,喉咙消肿了,才起来出去吃饭,脑袋还是犯迷糊。一整天下来,只是回复了几封email,给笔记本的ubuntu升级了操作系统内核补丁,听了点儿技术报告,没干什么正事。

  从北京临走时,买了一本村上春树的《舞!舞!舞!》。昨天终于从行李里找出来开始看。刚看到一半,爱死这本小说了。越来越觉得《挪威森林》在村上的书里,并不是最有趣的。

  原本没想买这本。11月初“光合作用”打电话通知雷蒙德·钱德勒的《漫长的告别》到货了。当时pFind 2.2正在紧要关头,把这事扔在一边,拖了一星期再去,又卖完了。郁闷。因为是《寻羊历险记》的后传,所以选了《舞!舞!舞!》。

  过两天找机会去一次上海书城。

  这只是中场休息,到年底还有不到3周,还有事情想做。明天重新披挂,按村上春树的说法,继续“与现实生活短兵相接”。

谁是技术先锋?

  世界经济论坛刚刚评选出“TECH PIONEERS OF 2009”。上榜的都是信息、生物和能源领域取得杰出成就的创业团队。Business Week就此发表了Special Report。其中开头的一篇Tech Leaders of Tomorrow这样说:

  Industry observers believe that many of those innovations also will end
up being embraced by the developed world, so the next Google—or the
next PayPal—could come from India or China.

  文中举的例子是Nivio,由一位25岁的印度裔工程师创立的软件公司。

  34支入选团队里有一个公司来自中国四川。Business Week特别发表了一篇报道,介绍qifang.com,一个为大学生提供小额贷款招标的在线服务站点。创始人之一陈国权,35岁,毕业于Yale。

  在技术创新方面,中印的确正展开竞争激烈。我们GDP多一倍,但不少领域的顶级学术论文、专利、创业团队都相对逊色。

  30周年了。每一代都有自己的历史任务。至于你我,就负责颠覆不善创新的呆头鸟形象。

Python 3.0 final release和找工作

  之前跟进了这么久,Python 3.0 final release总算发布了

  我和瓶子哥原以为赶不上milestone了,没想到今晚22点时,测试脚本终于报告diff两个调试结果文件完全相同。松口气。瓶子歌昨天就带病工作,一直没精神。我也状态一般,纯粹就是坚持。

  今晚请朋友们去徐家汇吃诸葛烤鱼。感觉还不错,不过觉得把如此多的菜前面加上刘关张赵的名字,实在有点傻乎乎。

  回宾馆喝酒聊天,说到应届生就业,年景不好,有压力。其实,第一份工作既重要又不重要。

  先说为什么不重要。也许你被Google拒了,而隔壁那个怎么看怎么比你差劲的小子却进去了。那就承认自己比人家笨或运气差。找个合适的地方踏实积累,两年后就会苦恼选择太多,无所适从。事业是长跑,晚两年而已。

  为何又重要呢?应该注意的不是公司名气、个人光鲜和钱多钱少,而是有没有遇到好团队好项目,有没有成长空间。就怕13个员工,除你外12个都是老板亲戚(别笑,我真有朋友遇到这种事,即使如此,他得到自己想要的,很快跳槽,现在照样混得不错)。当人贩子时,发现很多应聘者遗漏了关键问题:“招我来具体负责什么?和谁合作?将面对什么独特挑战?”。即使是好公司也总有毁人的烂项目,而小企业却有可能提供成长平台。

  感谢我自己第一份全职工作的雇主。那是家小软件公司,呆的时间不长,经历了挫折和成长。辞职后问老板(比我大不了几岁的自主创业的博士)有什么建议,他对我的缺点提出了坦率的忠告,让人受益匪浅。

大嘴

  好长时间没更新BLOG,总觉得有愧疚感。今天补上。

  每次到上海来最开心的事,就是能吃到各种美食,比如西餐牛排,再比如吴江路的小杨生煎包。

  前天去朋友屋子里聚餐,大闸蟹个个肥美还不太贵,吃法也很正宗:加蟹醋加姜加糖……作为北方人,以前对付螃蟹腿总是很笨拙,这次彻底学会了。俺们从北京带来的烤鸭也大受欢迎。肚子溜圆站不起来。

  很喜欢上海本地品牌的啤酒,比青岛和燕京都清爽些。上周和瓶子哥每天调程序到很晚,回到宾馆依然精神紧张。一边喝啤酒一边讨论下一步工作,就能放松下来。

  今天又有美女过生日,吃到精致的蛋糕。

  接下来几个周末,计划去扫荡奶酪、烧鹅和烤鱼。

  还别喊辛苦,这几天,上海这边的老板回家和我们一样晚。她这么认为:“别太笨,训练自己做什么事都能达到中上,然后挑个喜欢的方向努力,取得几次小胜利,有了成就感,就可以把激情保持下去。”