Tag Archives: pFind

pFind 2.2 Alpha 1诞生

  刚和瓶子对鉴定结果进行了检查,发了邮件,正在往SVN里check in。比原定deadline推迟了3天。

  2.2版内核不仅在功能上有革命性的加强,还重构了遗留的山寨代码。这次迭代出的6号发车流程,在架构方面让我很满意。浩哥即将在此基础上,进一步演进开发下一代流程。

  现在语无伦次中,心脏怦怦跳,骨头里都在冒泡。

  这10天的双人编程是一次令人激动的经历。每晚22点我去赶末班地铁,大伙儿留下来继续煎熬。昨天他们折腾到接近1点,直到Boss H看着手表勒令所有人回去睡觉。提一下新人吴美女,一周多搞定两种谱图索引算法,消灭了整个11月的todo list,战斗力之强悍超出男生们的想象。

  待会儿要和浩哥进行code review。先去饭饭。

AKA Linux内核开发者大会和pFind Team

  刚刚参加了AKA的Linux kernel开发者大会,主要关心的是多核并行和oprofile性能分析。近期pFind内核优化开始深入,需要用些更专业的优化技巧了。

  我在会上提了个问题:未来一段时间,多核和集群的性能瓶颈或编程难点在哪里?主讲人崔岩认为传统的系统总线在众核体系下已成为瓶颈。章峰老大补充说,他认为NUMA体系结构是方向。这种体系结构可以看作是多核和集群的混血杂交。按照Intel的Roadmap,到2013年家用电脑的CPU大约为256核。到时传统软硬件架构都要经受重大挑战。

  顺便也听了其他讲座。重温内核领域的很多技术,感觉好像见到老朋友。一个小细节是,讲座幻灯用是一台装了ubuntu的龙芯笔记本。

  回忆起大三时代,每周跑去听AKA的Linux系列技术讲座。有一讲的内容是阅读Linux kernel2.4的内存page管理部分,是在中关村附近一栋小破楼里讲的。当时四环没通,花了好多功夫摸过来。这次讲座激起了我阅读Linux内核的兴趣,可以说是“joyfire Linux笔记”的缘起吧。后来才知道这栋小楼就是计算所的老北楼。

  顺便贴一张俺们pFind帮派的全家福。在计算所新楼的11层拍的。

近在咫尺

  8月8日近在咫尺。

  旁白:软件行业的惯例,越接近deadline,越像恐怖片情节。《梦断代码》里提到一本叫The Limits of Software的回忆录,记录了美国航空管理局Advanced Automation System项目的悲惨过程。1500名IBM程序员,每天花掉政府百万美元。项目后期,巨大的压力带来严重的心理创伤,“没有人——哪怕作者——可以全身而退”。有人砸烂自己的汽车;有人疯掉;有人自杀;有个项目经理开始吃纸上瘾,项目拖后得越多,他在开会时嘴里的塞的纸就越多。该项目最终因为超出了技术和人力的极限而失败。

  我还好,没吃纸,只是每晚三点钟才能睡着。7月份的Beta测试中,BugFree里共登录了75个Bug,目前还剩12个待修正,4个推迟到下一版;Todo List里还有8件事没做,包括3个技术报告,1个软件著作权申请;hp忙得脚朝天,对donkey和shark进行全面清理。

  压力大,火气就大,总发恶狠狠的邮件:

  最出色的工程师都会主动追求细节和完美,绝不会摆出一副“别来烦我”的死样子,给提意见帮忙完善产品的人施加压力。“不怕神一样的对手,就怕猪一样的队友”。谁让我闻出来,有不肯追求自己产品完美的味道,就滚出团队,别给我拉后腿。  

  8月8日正式发布,世界各地任何崩溃信息或使用疑问,都会转给软件负责人进行客户支持。如果软件本身问题一堆,人机交互界面设计得很垃圾,你就等着处理潮水一样的客户支持邮件吧。

  05年我刚接手pFind工作时,发过一封邮件,重温一下……

  发几张图,到了8月8日,大家就可以到官方站点上注册并申请免费下载最新版本的pFind Studio了。

pScan启动界面,pFind Studio家族系列里最年轻的应用软件,首次公开亮相。

pLabel的主界面,接近两万行代码进行了彻底重构,与老版完全不同了。

把全世界竞争对手的软件打得满地找牙。

发布pFind 2.1 Beta 2

  欢迎大家访问pFind Studio官方站点,包括软件简介、用户手册、演示视频和发表论文。稍后会提供pFind 2.1版的注册和单机版下载。我的RCM论文也在网站上全文公开,欢迎多多引用

  pFind 2.1颇有突破,接下来几天的blog,总结一下这半年的经验。今天先说第一条:建立风险识别和控制机制。

  去年“软件开发2.0”大会,晚上参加胡百师主持的“项目管理”VIP沙龙,现场有不少项目经理和架构师,讨论话题很多。胡百师建议:“除了Todo List和Bug List,项目经理手里应该有一份Risk List。”

  插话一下,那时正是pFind 2.0压力最大,进度拖延,BUG丛生的阶段。偷闲参加“软件开发2.0”大会,跳出来换换脑筋,从技术架构上,从项目管理上,从产品设计思路上,彻底反思了之前的工作。除了本篇BLOG讲的软件工程问题。再举个技术上的例子:听Baidu的前任总工程师的讲座,谈到一个检索加速的案例,他随口说了一句: “大家都能猜到,这是倒排索引的设计出了问题”……回到组里再听ly重构索引的ppt,意识到必要性,马上把这个Feature加入pFind 2.1的Road Map。

  跑题了,回来接着说。4月pFind 2.1启动时,我在Google Doc建立项目手册,专门加上了“风险识别和对策”一章,列出各种想到的风险,按重要性进行排序,然后一一填上预防措施,还有最坏情况下的取舍方案,然后每周跟进。

  可能项目启动那天是黄道吉日,最让人睡不着觉的几条,都没真正造成威胁。进度比预计顺利得多。还有一大堆惊喜。

  俺的成功经历实在不多,尤其是这么完美的比赛过程,所以难免有些迷信。有些运动员总在关键比赛前换上同一双球鞋,俺也决定以后抱着“Risk List大法”不放手了

  我猜我的合作伙伴可不喜欢这样,因为这次开发我可能根本没干正事,就是忙着扮演一个政委、牧师或居委会大妈,不停地骚扰大家:时刻在人家耳朵边上唠叨一些政治正确的废话,比如“复用接口上移,复用功能外抽”;逼着每个人修改变量名和类名,加空格和缩进;像个秃鹫一样在别人工位后面露出头:“嘿……没事……就是……那个……你的代码还没上传到SVN上呢”;每过两三天就发一次邮件,强调里程碑和Bug List;在别人最忙的紧要关头,要求双人编程和code review……

  Joel on software说:“开发人员把不务正业的程序经理拿来当早餐吃掉”。老实说,绝对是因为ly、hchi、lqliu这帮家伙太神奇,折腾出好多变态的成果来(嗯,早就等着拉2.1出去吓人)。我这个所谓“产品经理”其实是蹭饭的角色(更喜欢临阵杀敌)。《最后期限》里说:“你可以不雇我,但一定要考虑一下我的团队,他们真的很棒”,Bingo。

停BLOG14天

  按进度计划,我们会在7月1日发布pFind 2.1 Beta 2,同时pLabel、pBuild和pScan也各自发布新版。这是重要的里程碑。也许是我进入生物信息组3年以来,最重要的一个。每天都感觉在不断接近“把Mascot打得满地找牙”的理想。组里打算为上半年大规模工程开发圆满完成好好庆祝一番(庆祝的事情交给我筹备,可我现在一点心情都没有)。

  未来10天,Todo list上还留着不少待处理事项,好多麻烦搞得人睡不好觉。感觉自己变得敏感易怒,刚刚还犯了一次偏头痛。

  需要集中精力,把pFind 2.1发布搞到尽量完美。所以不得不停BLOG两周,不好意思。

  那么我们7月5日再见。到时候我会邀请蛋白质组学方面的朋友试用pFind 2.1。

准备拽着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打得满地找牙。

验收通过

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

各位:

  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所取代。心情有些复杂。感谢所有的同事和朋友。

严谨和乐天

  只要和fy搭档干活,俺心里就有底,传说中的英雄总能在关键时刻准时出现,拯救万民于水火之中

  不过两个人性格差好远。fy是个严谨过头的家伙;而我大大咧咧,过于乐天派。这次分领M版和C版,这种差别大伙都看出来了:

  每次milestone,fy的总结都是“基本完成”;而我,恨不得在前一天晚上就把第二天的进度从todo list里划掉;

  M版攻城掠地一日千里,Boss H发邮件祝贺,fy却愁眉苦脸Re回来:“没啥可贺的,真正的测试还没做,流程可不可行、有没有隐藏的bug,还是未知数……”;再看俺这边,尽管C版已经比计划慢了4天,还在邮件里自吹自擂呢:“在坚决不降低工程标准的前提下,俺们定能赶在deadline搞出一件恐怖的终极武器,以便证明哥几个就是传说中的天才程序员团队”。