Author Archives: wangleheng

准备拽着2.1怪兽出去吓人

  刚刚改进了pFind 2.0的N端可变修饰生成的递归部分的代码,发布2.0.003补丁。

  五月份主要工作就是用pFind 2.0和pFind 2.1(流程2)进行大规模的伴随测试。经过对答案,两者都修正了不少BUG。pFind 2.1 Alpha 2估计会于下周一19日发布。我们会带着2.1去用户那里进行Beta测试,这比原计划提前了将近10天。

  fy领导的pFind M版也有进展,M是面向未来的版本,已经实现了对ETD的支持,多母离子窗口等梦幻特性。马上就要展开M版和2.1版(流程1 )伴随测试。

  按照计划,6月发布pFind 2.1 Beta 1。到7月底,在至少两家生物实验室完成Beta测试,8月8日,正式发布pFind 2.1的final release,“奥运献礼版”。另外,pFind 2.2也会很快着手,预计在12月1日发布,这就是这么多年传说中的集群版。

  最近压力很重,hchi昨天请病假,我还一直欠着pLabel和pScan的设计审阅和双人编程没空展开。不过也很有成就感,pFind 2.0陪着pFind 2.1跑了接近百万张质谱数据,每张谱、每个候选肽、每个打分、每个EV值……一直精确到小数点后五位,确保完全一样。有一次,18万张谱里只有1张不同,结果是1.000007对0.999998,但是hchi穷追猛打,一口气追下去,最终修正了一个很隐秘的BUG。

  pFind 2.1 Alpha2 目前还没有界面,8万行C++代码;pFind 2.0经过大规模整理删除,11万行C++代码;正在彻底重写的pLabel 2万行C++;等待大规模重构的pBuild,2万5千行C++;pScan接近1万行C++。这些代码都是在将近18个月里完成的。

  接下来这个夏天,拽着2.1怪兽出去吓人,把Mascot打得满地找牙。

希望震区平安

  昨天捐款时,听说北京各献血点都排很长的队。今天早上,由于血库容量已满,不再接受无偿献血。

  我的家乡甘肃,是除四川以外伤亡人数最多的省区。陇南地区在地震中受到重创。

  希望所有受困和受伤的人平安,感谢所有提供帮助的人。

  最后一条短信。

  Dead was she, when the rescue team found her, overwhelmed by the landslide from crushed house. Through a gap of a pile of rubble, her position can be seen, kneeled down, entire upper body creeping with support from two arms pushing from ground, as in worship on bended knees. But the body was deformed by the pressure, somewhat looked weird. Rescue personnel reaching into the gap of the ruins has confirmed she had died. They still called toward inside, and hammered on the bricks, but no response. When people moved to the next building, the rescue team leader suddenly ran back, while shouting “come over here fast”. He once again came to her, searching underneath the body. “somebody, a baby, still alive” shouted he. After some effort, ruins were carefully removed, exploring her baby son, wrapped in a little red sheet dotted with yellow flowers. Only 3, 4 month-old, the baby is intact and still sleeping, thanks to the protection from his mom. He slept in the face of all the people at the very warm scene. Doctors found a cellphone inside the sheet, when they were about to inspect the baby. Found on the screen is an already-written message “Dear baby, if you can live along, don’t forget that I love you”.
  

刚刚发生了地震

  我在北京生命科学园。10分钟前有明显震感。

  在实验台旁看lz做实验,旁边同事说电子天平无法调平,总在跳,lz教她:去掉手套,用手掌放掉静电;另一个mm在液相前面配置设备,突然后退两步,问她怎么了,她说突然头晕站不稳,怀疑不慎吸入了甲醛……

冰激淋和B/S结构

  大一在jiuqi打工,喜欢带着冰激凌去找oyy,总架构师,他的屋里有舒服的空调和沙发。oyy爱吃冰激凌,但没几个人知道,大概是因为喝咖啡才符合程序员的职业形象。oyy很和 气,所以我经常在沙发上放肆地手舞足蹈。(曾经竭力模仿身边的职业程序员:昼夜颠倒,喝很浓的不加糖的咖啡,染红色的头发,甚至一边点鼠标一边心不在焉抓 起杯子喝水的神态……直到有一天发现oyy偷偷去买冰激凌,哈哈)

  当时刚学会CGI和ASP,觉得会有越来越多的软件采用WEB方式。身边的朋友说不明白,决定有机会问问oyy的看法。可是没说两句,老板闯进来,把我客气地轰出去:总架构师应该做些更重要的事。临走oyy说“有意思,但我猜不会很快变成主流”。

  跑到身份不符的地方胡闹,被老板当胸抓住,还有什么话好说,回工位老老实实写我的ETL代码,这才对得起薪水。

  没过多久,在展会上见到用友的新一代ERP,完全使用Web UI,宣传手册里有个新鲜的名词叫B/S结构。

Google App Engine视频

  Google App Engine不顾俺三番五次申请,就是不给试用帐号。郁闷呀。

  这里有一段视频,演示了简单的Google App Engine开发步骤。尤其是用GQL调用传说中的MapReduce海量分布式存储,看得俺直掉口水。趋势不可逆转,很快多数软件都会以ASP(Application Service Provider)方式提供服务。我很想知道微软首席架构师Ray Ozzie看到这东西是什么感觉。

  按一般观点,类似俺们pFind这种计算密集型应用,核心模块必须使用C/C++ API,否则慢得难以忍受。然而,一旦基础架构的分布式规模达到Google所谓的“云计算”这种级别,就算有几十万张谱,也可以充分地分而治之,被分解到巨大的PC Farm里,让集群节点一对一PK,甚至进一步按蛋白数据库再细分任务。这种情况下,即使单个节点的线性效率稍差,也可以接受,可能用Python就够了(对比:按我们现在的经验,没经过精心优化的Matlab代码鉴定一张质谱大约5分钟,当然可以进一步采用各种优化加速手段,例如psyco)。到时候,最主要的速度限制也许就来自网络带宽,上传多少即时鉴定多少。

  未来某天的软件创业故事:逃课的小孩在大学宿舍里编写了一款网路游戏(比如,也许是跑在iPhone或Android上的多人联机MMORPG),上传到Google App Engine,再到常去的论坛发个帖子,邀请大家来试玩,结果这个游戏一炮而红,Google和中国电信作为基础服务提供商,对利润进行分成。这个故事不会很快变成现实,但是也不会很慢,技术演化总是被低估。

出色的软件工程师什么样?

  最近一期《程序员》开头有篇关于招聘的经验,第一条要求就是“对技术细节有激情”,赞同。其实也是老生常谈了。记得还看过一篇国外文章,提到很多网络创业失败的原因在于,发起者是不了解网络和软件技术的商人,没有接触过优秀的职业软件工程师,甚至根本不知道出色的程序员和架构师应该是什么样。他们仅仅想找人把自己的idea实现出来,这就注定招到的人没有判断和反馈能力。Google的招聘邮件说,“技术天才是喜欢扎堆的物种,别让哪怕一个二流货色混进你的团队”。

  类似的事,我们身边每天都在重复上演。作为老牌“人贩子”,我从大学二年级开始参与各种推荐、面试和考核。总见到招聘者出于各种原因(比如资金、关系、性格、印象、说辞)选择了不合适的人,给未来挖下大坑。

  《程序员》还有一篇MMORPG架构师的文章,里面提到“赞成某位同行的单线程多进程思路”,一看就知道说的是云风。文章提到“分布式对象系统VS自定义协议”的选择问题,不过他坚持认为,分布式对象系统是更好的选择,专门提到了ice。也许他参加了SDChina2.0,搞不好,我问云风为什么不考虑ice时,他也在场。

  一直感觉我和云风很像:年龄、经历、爱好和技术观点。云风刚发了一系列回忆职业生涯的BLOG,看了以后这种“相像感”更强了(这个,往牛人身上硬扯,实在有点傻)。“没有哪个程序员的代码一开始就能写的成熟稳健,我们都经过幼稚的年代”。选择太多,很多人无法坚持工程技术的积累,过早改变了职业生涯的方向。狐狸和刺猬最终谁会赢?

贴照片,列书单

  贴照片。跟着哥们自驾游,昨天在车里呆了11个小时,这是在盘山公路边上的观景台,临时停车休息。一起去的哥们是个火腿,一路上不停地折腾“CQ、超收、73”,别说,还真挺有意思。

  前些天太忙。现在有空列书单,最近两周买了勒庞的《乌合之众》、色诺芬的《会饮》、凯鲁亚克的《在路上》和尤金·菲尔德的《书痴的爱情事件》。

   

  买色诺芬的书,是因为之前对《长征记》超级迷恋

  下班路上逛五道口光合作用,发现这本《在路上》,在回去轻轨上读完了第1章。但之后就没机会再翻开。这次随身带着,今天早餐后坐在农家院子里一口气看到第9章,也许是因为阅读环境本来就on the road,感觉很好。推荐。

  BTW:那个时代,牛仔裤和爵士乐都是另类。昨日的叛逆,今天的经典。IBM的蓝衬衣曾经特立独行,挑战“白领”惯例;可是一旦成为时尚主流,“IT蓝”就显得陈腐。

验收通过

  憋了好久,今天出来吓人。刚刚抄送全组一封邮件:

各位:

  pFind 2.1 Alpha 1版刚刚通过验收,代码上传至SVN。测试性能大大高于计划指标,我们在短短4周内创造了奇迹:

  • 彻底重写内核引擎,15个模块,近三万行C++代码,开发中规范执行code review或pair programming;
  • 完整实现了两种不同的鉴定流程,其中流程2与pFind 2.0的鉴定结果进行了仔细对齐验证;
  • 在shark服务器上,对等条件下,鉴定速度是pFind 2.0的3~5倍,接近Mascot;
  • 流程1和流程2均初步实现多线程,4核机器上4线程比单线程方式加速比接近2.85;
  • 创建索引速度有了接近百倍的提高,大大超出SEQUEST建索引的速度;
  • 已测试的索引规模,达到pFind 2.0容量上限的10倍,也超出SEQUEST索引规模上限;
  • 移植到Linux下,为将来和曙光、龙芯的合作打下基础。

  感谢hchi、leo和llq的努力和热情。这是一次接近完美的开发经历。祝大家假期愉快。

joyfire  2008.4.30        

  从上午的述职报告开始就不断有人问,哪些招数带来了如此明显的性能改进?其实都是纯粹的工程手段,而算法流程方面并没有应用激进的创新思路,基本沿用了pFind 2.0里的成熟方案。

MYSQL和鲨鱼

   MYSQL被SUN收购,以及在此之前JBoss被Redhat收购,这段时间太忙没顾上点评。不过,两年前俺已经写了这篇足够好玩的BLOG,评价企业级软件市场的春秋争霸。

  提起这篇BLOG,俺又在考虑用孔子的学生们来命名pFind 2.1的各个模块,比如冒冒失失的“子路”和善于周旋的“子贡”。若有漫画高手帮忙创作几幅卡通肖像,就更有意思了。

  hp已经给两台服务器起好名字了,一台叫Donkey,一台叫Shark。都是兄弟们喜欢的动画电影角色。

>

pFind 2.0历程

  前两天做了一次报告,总结pFind 2.0。花了很大功夫准备Google Docs幻灯,熬到凌晨3:00。

  05年下半年,接手生物信息组工作,顶住干扰静下心着手工作。这一年的最后一天,首次跑通流程

  06年1月,对算法模块展开大规模测试,这只是之后漫长的重构、测试、再重构、再测试循环的序幕。(小插曲:BLOG里提到的那个缺根弦的家伙,是在纠缠我当时的女友,之后居然等在我加班回去的路上,拿电棍袭击我,反而被我打倒在地……现在想想,俺真是什么人生体验都没错过)测试结束时给全组发邮件,希望建立直接透明的工程氛围。

  06年2月,着手M2版。虽然有心理准备,但之后事实证明,“第二赛季”还是比预想的要困难得多。

  06年4月,搜索引擎核心完成最初调试,界面也很快做出来了,那时以为Alpha阶段能很快结束。接下来几个月,陷入反复修改和测试。除了各种BUG,涉及更多的是科研问题。亲身体验了“小数点后五位数据不精确导致性能大大降低”这种传说中的科学故事。那时pFind的鉴定效果着实好不到哪儿去

  06年12月pFind 2.0论文投稿,这十几页纸,真把这辈子的英语都写完了,最终发表在RCMS时,已经修改过32稿。

  07年1月开始Beta测试,我扮演工兵。从用户那里回来,马上力排众议安排pBuild开发。在一线眼巴巴“护送”软件运行是件滴汗的事,但过后增加底气。现场值班逐渐成了日常工作。原来Mascot并非遥不可及,许下一个愿望

  07年8月,为解决系统在修饰问题上的缺陷,不得不展开大规模重构,但遇到挫折。不过现在看来,这是一笔财富,理清了思路。

  07年9月,有机会投入生物一线的实际科研,这时候的pFind 2.0还不完善,遇到很多麻烦。差点迈不过这道坎,但最终fy大侠带领我们创造了奇迹。之后几个月,继续推进。这是一段激情时光通过不断努力,再次重构后的系统性能获得成倍提高

  08年1月,滑单板时摔断了胳膊,打着石膏坚持去上海出差推广pFind。 南方雪灾,差点留在上海过年。到春节为止,组里申请了11项软件著作权。专利方面,获得第1项专利授权,还有4项等待授权,今年还有3项打算申请。商标也 在申请中,去年10月在人类蛋白质组会议以后,我们的域名遭到恶意抢注,经过戏剧性的争夺,我幸运地抢回了pfind.net这个重要URL。

  08年4月,pFind 2.0 final Relese,同时pFind 2.1展开,还有3天,29日下午6:00,就是2.1 Alpha1版的deadline。计划8月8日推出“奥运献礼版”。

  pFind 2.0历经3年终于完满,但可能没多久就会被更出色的2.1所取代。心情有些复杂。感谢所有的同事和朋友。