Category Archives: 打工日记

去Intel测试、下一版的昵称

  连续加班。筋疲力竭,死扛,晚上总做噩梦惊醒。今天全天开会,16人次讲PPT。晚上聚餐,算是告一段落了。

  前天应邀去Intel公司测试pFind并行版。是国贸旁边的那个实验室,就在央视新楼对面。公司的落地窗正是看焰火的好地方。ch博说,09年元月十五,他就在办公室。

  pFind表现正常。因为时间所限,测试参数不能设置得过“重”。以前提过,随着并行规模的扩大,pFind集群开始出现I/O密集型应用的特点。下一步的千核集群,Master节点应改成异步模式,很多步骤要用MapReduce。 

  从08年底开始做pFind并行计算,逐渐加深理解。现在看来,要兼顾“减少流程冗余”,“均衡负载”和“提高I/O效率”三个要素,才能获得好性能。其实,明确这三个问题,比解决它们更重要。如果RCM论文搞定了,就在BLOG里写写我们的解决方案。

  这次跟着高手学到不少。比如以前不知道用make -j参数,每次编译ACE,都得用三四十分钟。再如这次ch博推荐的paratera.com工具,对分析集群实时状态很有用。

  下一版的pFind内核还没规划,但是已经开始琢磨“昵称”了。按照我们的惯例,需要是科幻或动画角色。我强烈要求用Leonopteryx,《阿凡达》中的红色大鸟

hchi哥要请客

  实况直播中。

  hchi哥的de novo算法论文中了RECOMB Satellite Conference,很有可能推荐到JPR。在一个月之内连中两篇英文期刊,还让不让别人活了呀!强烈要求请客。目前大家都在列他去美国开会的代购清单,我在踅摸是不是让他给我背块雪板回来,哈哈。

  yb发邮件说:天道酬勤。真对。

醒过来了

  刚醒过来,吃了饭。好几年没通宵加班了。

  昨晚和文平在实验室一直干到早晨4:30,论文的Major Revision提交到网站,才打车回家。提交的时间美国那边差不多周末下午快下班了,估计要等到周一编辑才会处理。稿件不算100%完美,不过我和文平已经没有遗憾了。

  最近逼着文平在曙光5000A上大量跑实验,感谢他的勤勉。我也总是22:00后才回家。压力之下,效率并不高,不过心态保持得不错,没有给周围的人带来困扰。

  接下来稍微从容点等消息。周一JDL组织去UME看《阿凡达》的IMAX 3D。周五和合作伙伴去滑雪。

  昏天黑地睡过一整天,拿手机一看,有好多未接来电和短信。心里很感动,原来我这么重要呀。结果看到很多陌生号码,上网一查,全是推销保险的号码,晕。

  其实短信里还是有其他内容的,比如半夜朋友发来叮嘱,打的回家要注意安全。刚睡起来到客厅找吃的,老妈就冒出来,冲进厨房里热粥给我喝。到了这种纠结时刻,就能感受到谁真正在意你。年纪大了,开始特别在意这种感觉。又回忆起06年买房时代的愤怒、孤独疲惫

  腊八刚过,大家喝粥没?最冷的日子已经过去了。

原来生物的遗传密码表有不止一套呀

  昨晚开会开到23点,无论是BOSS H还是我们几个,都筋疲力竭了。打车到家已经过了0点。

  到最后才发现,原来基础概念有误:DNA翻译氨基酸序列的密码表不止一套,细菌的和人类的不一样。在一般教科书和维基百科上都用人类的密码表做例子,没提还有其他可能。晕。

  以前提过软件开发过程中的隐喻(Metaphors)。这是交叉学科最普遍的问题。往往,生物领域大学一年级的常识,计算机领域出身的人对此却毫无所知。

  难点并不在于你不知道,而是你不知道你不知道,合作伙伴也不知道你不知道(好绕啊)。所以,我们需要好的搜索引擎(不是坏的),还需要更智能更公平的推荐引擎。我们最不需要的,是围墙

leo和hchi的倒排索引的文章被接收了!

  昨天起的就很早,一整天都在会场上偷着和瓶子双人编程;今天上午又要去对外交流,所以起床比昨天还早;下午把曙光5000A上的pFind并行版内核代码升级做完。Aho- Corasick算法代码遇到BUG,拖住hchi哥帮忙调试,天黑才放他走。我和瓶子等到很晚,测试完全正常才去吃饭。回来路上感觉特累,地铁里站着,心脏开始不规律地跳。21:00到家给hchi哥打电话,他还在路上呢。

  刚收到邮件。leo和hchi的倒排索引加速pFind蛋白质搜索引擎的论文被Rapid Communications in Mass Spectrometry接收。从07年痛苦摸索逐渐清晰,08年代码重构海量测试,09年申请专利反复投稿……倒排索引技术的研发一步步走来,纠结很多,故事很多,做得真很出色。俺虽然只是端茶送水摇旗呐喊的第三作者,同样超有成就感,万岁!这也是dq老大的IndexToolkit之后,pFind搜索引擎在索引算法上的又一个重大进展。

  前一阵hchi很疲惫,有次开会时私下和我聊天说:早上咳醒后,觉得自己快死了。最近两天他连续有deadline,我总担心他被拖垮。生活很公平,终究会在你最需要的地方,设置一个加油站点。去年1月7日刚好这篇论文诞生,颇符合hchi这个宿命论者的观点。

  我和瓶子的Rapid Communications in Mass Spectrometry投稿遇到点小问题,编辑粗心,把其他论文的审稿意见错发给我了。大概是圣诞节心不在焉吧。争取在一期期刊上,同时出现pFind 蛋白质搜索引擎的两篇加速文章,互相印证,那可就帅了。

  不管怎么说,大家注意身体。健康是1,其他的都是0。还要走很远,把pFind做成。

里程碑收尾,论文,雪季开始,理想主义和Hadoop的调度算法

  里程碑接近完成。这一版pFind Studio除了增强搜索引擎内核,也针对用户易用性进行了改进。需求列表很长,但很多问题需要微妙的权衡取舍,没想清楚之前不宜动手。因此在有限时间内,主要是集中解决几个重点问题,减小智力负担,提高用户体验。好几个月没上一线写代码了,都有点生锈。

  leo和hchi的论文一年内被拒两次,终于有希望了。加油!工业级软件、发明专利、国际期刊……一个都不少,科研创新的过程很完整,赞。然而,zhch牛人的新一代后缀树组索引算法,又将取代pFind内核里现有的倒排索引。把前浪拍死在沙滩上。我的论文还在under review。

  最近心情略好,给自己买了条新的单板滑雪裤,去乔波玩了两次。今天听说出事故了,中级道关闭,警察来来回回勘察。阿弥陀佛,大家还是要注意安全,科学练习,初学者最好请教练,不要傻大胆强行冲坡,练单板的人要戴好头盔和护具。自从08年初受伤以后,滑单板变得很谨慎。今年春季dmq老板委婉地说:“忒平稳了”;雪场教练的评价就直接多了:“专拣最没激情的那种动作”;现在,又被总雪龄少于10小时的小朋友在初级道上鄙视了。没办法,十年怕井绳,三十岁的老胳膊老腿了,安全第一安全第一。

  不过,静下心来,就把左右脚的落叶飘和换刃都练熟了。认识了一位不错的专业教练。原来八一队练冬季两项的。年纪很轻、人很帅、脾气不错、技术当然很牛。只可惜受伤提前退役了。我打算上难度的时候,就雇他教一天。

  最新《程序员》里有一篇张岩的自述。讲到考研和求职,讲到亲人突然去世,讲到公司重组,讲到challenge和沟通。文字很朴实。有些话值得年轻人体会,例如“做工程师永远要记住细节是魔鬼,只有在细节上充分积累,技术上才有成长的空间”;又如“请保持理想主义,相信我们做的事能改变生活。我们每天起床和上班,不是为了赚钱糊口,而是因为兴趣和使命感。”

  技术上最引起我注意的是《Hadoop集群作业的调度算法》,正好是下一步工作的重点。豆瓣王守崑的《走进个性化推荐系统》讲的是近期热点,也很有意思。(Resys召集聚会,就在豆瓣公司举办,可惜报名晚了没抢上名额,哇哇哭)

五星级秘书和职业理想

  最近招人面试,被老板临时抓去充当生物信息组的面试秘书。

  当秘书也要全力以赴。一直听到周围的年轻人议论所里的行政人员。例如那位姓宋的长者,口碑非常好,据说在BBS上排名第一,唯一一个“五星级”。所以,刚好看看自己的智商情商离“五星级”有多远。

  两周下来,压力很大,好多天23点打车回家,差点累死。服务水平受到认可。这两天陆续收到面试者、被面试者和行政秘书发来的称赞的邮件和短信,也有人当面冲我树大拇指。

  行政工作还算好应付,只要不太笨,认真负责就行了。而面试本身就更有挑战性了。戏剧性的过程,考验着每个参与者的情感和理智。团队里不止一个人声称这次“受了内伤”。尽管纠结,职业地应对下来,就感觉到自己的成长。

  当然,还是最喜欢和擅长技术研发。我的并行版论文明天第14稿应该就是最终版了,月底投英文期刊。下个月开始着手申请专利。

  职业理想是扮演“研发团队领袖”(Tech Lead,一般直译为技术主管)的角色。随着年纪增大,逐渐有些积累了。李开复说:兴趣和天赋可以相互激发。

  BTW 1:李开复在哥伦比亚大学最初学的是法律,同班有个不善言辞的黑人同学,叫奥巴马。

  BTW 2:阿弥陀佛,山东队又输了,罪过罪过

Joel 12条和2006年

  Tinyfool刚刚发了一篇关于著名的Joel 12条的BLOG。我很有成就感。

  一直用Joel 12条作为软件工程实践的基本底线。这12条很朴实,我也实践得很朴实:时不时在PPT里把这12条拿出来给现状打分,不停唠叨直到他们养成习惯,这样坚持了4年。刚开始只有3分。现在超过10分。

  事实证明效果很好。不谦虚的说,这个学生为主,还要兼顾大量科研任务的团队,工程效率超出了很多软件公司。双人编程、重构、代码审核等高级的软件工程实践,是建立在SVN版本管理这类基础设施之上的,这是常识。

  这些年pFind Studio各个软件不断上演龟兔赛跑的故事:刚进入某领域时总是显得缓慢笨拙,等过了2.0版,团队协同的平台效益就明显起来;而很多同行系统越大越纠结,一旦核心牛人的热情和投入减弱,很快就成了焦油坑,演进陷入停滞。

  说到水面以下的积累,前几天“超龙一号”评审,有个院士表扬我们组,举了一个美国国内的统计:持续专注少于8年,团队人数少于8人的科研团队,全部失败,没有一个团队能持续搞出牛的科研成果。

  到现在为止,pFind团队坚持了7年半。

  最难的时光?也许是2006年。那一年,整个组没发表一篇论文,没拿到一分钱,没申请专利和软件著作权,每次例会都有种沉重的气氛。

  但也是那一年,团队下了决心把pFind彻底推倒重来,静下来,老老实实打磨,一次次反复跑实验。现在回头看,个人记忆里,那是困惑挣扎的一年,也是幸福充实的一年。从那以后,开始对pFind变得自信,对自己变得自信。

  BTW:北京、山东、天津、上海又一次集体输球。这次我彻底服了,不知hchi哥服不服。

pFind Studio 2.3 RC

  7月焦头烂额。居然连BLOG都耽误了。这很不好,写BLOG并不妨碍工作,然而对成长的记录却是一种不可缺少的自我投资,坚持得越久,回报越多。实际上,这个月发生了不少好玩的大事小情,当时不立刻记下来,很快就失去鲜活感了。

  突然有敲字的兴致,赶紧登录上来。有些内容先做索引,后面的blog陆续详述。内容散乱,理解精神吧:)

  pFind Studio 2.3发布了Release Candidate。以往,每个新软件或模块的主力作者有权利给作品命名一个昵称,组里惯例是动画片或科幻角色。例如:pFind 2.1内核,hchi哥命名为Doraemon,也就是机器猫的名字;组里两台服务器,hp命名,一个叫shark,《海底总动员》里的鲨鱼;一个叫donkey,《怪物史莱克》里的驴子;所向披靡的pLabel 2.0之父lyxiu,把它命名为Wall.E,《机器人总动员》里的主角。

  yjw mm给pFind 2.3内核起名为EVA,《机器人总动员》里帅帅的侦查机器人,这是组内产品序列的昵称里,首次出现女性名字。08年8月8日,hchi哥的Doraemon发布时,俺就感叹:完美,没想到不到1年,又被拍死在沙滩上了。

  (BTW:前两天30岁生日,怨念和纠结,请组里去钱柜唱K,收到惊喜礼物:一个EVA。你和她说话,她就表演电影里的台词、动作和眼神,一模一样。放在书房里,夜里上网,她就在那里“Wal…l…E”,“E…VA”地不停折腾)

  czh哥给新版索引模块命名为Simba,狮子王里面的主角。

  (BTW:利用pFind新索引的恐怖功能,rxsun大虾做了件很酷的事:对恐龙化石里的胶原蛋白,进行跨物种搜索。结果证明,鸟类的蛋白序列的确和恐龙最接近)

  瓶子哥给pFind并行版内核起名为Monsters,《怪物电力公司》里的主人公。这个月也就是为了它的论文纠结,英文写到吐。下半年还要申请一个发明专利。

  (BTW:在同一个大型集群上跑相同的鉴定任务,SEQUEST折腾了24小时,Monsters仅仅花费2800秒,鉴定准确性上也占压倒优势。牵着俺们的怪兽出去,真的吓坏了不少人)

  业界大事嘛,其实不太关心Google宣布要推出PC的操作系统。我感兴趣的新闻有:C++标准委员会居然否决了concepts;Apple发布新版iPhone SDK;Google发布simple编程语言;久其软件获准IPO,创造100位百万富翁(里面有大量北交大计算机系和通控系的校友,不少是我的好朋友,哈)。

pFind并行版定型

  里程碑。pFind并行版代码冻结,按期到站。今天彻底休息了一下,睡了一整天,半夜回魂,上网,来随便敲些文字,放松,没逻辑。(瓶子哥被我折磨得快断气了,所以deadline一完,就逃出北京城,找某人疗伤去了)

  最近一个月,除了并行版的研发工作,忽略了所有其他。活在自己的气场里,感觉非常独特。过山车:没进展时,回家的轻轨就显得特别久,疲惫沮丧,手指尖都懒得动;一旦有突破,又好像成了世界之王。

  接下来,做PPT、写技术报告、论文投稿、还想申请发明专利……停,今天不想这些。

  感谢CCTV、感谢MTV……特别赞一下新人,扛起搜索引擎的日常维护,让我省了不少心。组里工程水平已上轨道。每周定期review SVN提交代码,我可改的地方越来越少。

  提到这个,想起BOSS H以前说:“你的最大本事就是那些code style(编程风格)和design patten(设计模式)吧”。这话对也不对,其实关键在于如何培训和实行,让新人遵守规范,习惯双人编程,学会制定Todo List,懂得倾听,整个团队用统一的思路进行编码和架构。

  反过来,也夸夸自己。pFind Studio有十几万行C++,几十个模块。但进组几个月的新人就可以独立调试细节,重构全局流程。干活的人自然是能力出众,也多少显出一点儿我这架构师的本事,哈。