Monthly Archives: November 2007

参加SD2China

  刚参加完SD2China第一天的全部议程,终于见到了若干崇拜的牛人,现在通过宾馆房间的无盘工作站上网。回去以后详细记录感受。 从繁重甚至有点疯狂的工作里跳出来,听技术高手的分享,充电,也换换脑筋,舒服。

挺不住了挺不住了

  工作上压力太大了,上来发泄。怎么离pFind 2.0发布的时间越近,活反而越干越多了?挺不住了挺不住了。顾炎武说成功者大多“以兴趣始,以毅力终”,现在就想把“兴趣”啊“毅力”啊,都扔到太平洋里去,然后躲起来滑一个星期的单板。

  离deadline还有10天。 记录今天(应该是昨天)的声音:

  zf说:“发现了严重BUG。”

  合作的生化学家说:“给,这是我们上周点灯熬油重作的实验数据,3个G,38组,搜一下,顺便说一下,数据里fy发现的现象是@#$%^&这么一回事,你们的pFind和国外竞争对手软件从核心算法上都不支持这种电离模式。”

  合作的生化学家又说:“搞科学的就是有偏执;女孩子逛街看中什么,你这次不让她买,回去睡不着觉,也是偏执——两种现象属于同类生化反应。”

  Boss H说:“坚持过这一段,让你去上海待一个月,放松一下。”

  CSDN客服说:“请携带您的门票和证件,准时出席会议,谢谢。”

  某美女说:“你有很多优点。”

  另一个美女说:“原来生活可以这样,可以这样慢和放松,其实你们也可以。”

  老妈说:“晚上早点睡,不准熬夜了……我的腰椎一直没缓解。”

  许三多说:“就像死过一回。”

  姚明说:“球队需要我们带领度过难关。”

  钱文忠说:“玄奘,这个中国历史上最有名的留学生,终于通过有五百个著名教授参加的毕业答辩了。”

  俺爬俺爬,终点在哪里呀……

Google里的牛人

  很早以前看Joel on software讨论程序员招聘,里面提到宁缺勿滥,绝对不要招笨蛋,因为高手喜欢扎堆。对技术人员来说,和牛人混在一起是让自己变牛的捷径。

  Google之所以成为很多程序员梦想的地方,大概不仅仅是由于免费美食,看看它都收集了哪些大牛:

  Vinton Cerf(TCIP/IP协议合作设计者)、 Joshua Bloch(《Effective Java》作者,JSR175标准的leader,J2SE 1.5的主要开发者)、Guido Van Rossum(Python之父)、Andrew Morton(linux的二号人物,维护kernel 2.6)、Mark Lucovsky(Windows内核设计师)、Bram Moolenaar(Vim作者)、 Darin Fisher(Mozilla项目主力开发者)、Sean Egan(Gaim开发团队Leader)、Greg Stein(Apache项目主要开发者,Apache基金会主席)、Udi Manber(原Amazon的A9搜索团队总监)、Rob Pike(Plan 9主力开发者)、Adam Bosworth(原BEA首席架构师)、Andy Hertzfeld(Macintosh研发团队核心成员)、Louis Monier(Internet搜索引擎发明者,原eBay开发总监)、Ben Goodger(Firefox的主要设计者,但已由Google 加入微软)、Danny Thorpe(Delphi开发者,原Borland首席科学家)、Alexander Limi(plone创始人)、David Presotto(plan 9创始人)

条条大路通罗马

  开了一天会,合作伙伴、项目申请、科研基金、最新动态、工程测试、专利申请、域名抢注、软件版权、人员调整、财务状况、未来进度……一大堆问题搞得身心疲惫,快下班时,大伙无意间议论起一个算法问题,这才感觉好玩起来,放松起来,记录之。(晚上又是应酬,给领导敬酒啊什么的,似乎这一整天,就这个问题的思考是个快乐的瞬间)

  zf帮Boss H统计蛋白质数据库的数据分布情况,从上T数目的肽里,把拥有相同元素分子式的肽序列都归到一组(蛋白质或肽都是由碳、氢、氮、氧、硫五种元素组成的)。

  以往zf是用哈希表做的,最初用前两位当key,后来进一步优化,用五种元素原子个数组成的向量来降维,但这样对付海量数据,速度还是太慢,程序一跑好几天。Boss H希望干脆把哈希变成一个map,也就是说,设计一种key,相同的元素分子式,有且只对应唯一个key。

  Boss H是数学出身,所以首先想到一种很“数学”的办法,用五个素数作为基,例如2、3、5、7、11,然后取对应原子的个数的指数幂再连乘起来。例如,某个肽含有的碳、氢、氮、氧、硫原子数目依次有N1,N2,N3,N4,N5个,那么算出来的key就是2的N1次方,乘以3的N1次方,乘以5的N3次方,乘以7的N4次方,最后乘以11的N5次方。得到的每种不同的数字,自然就唯一代表着一种独特的元素组合方式。更妙的是,为防止这个数据过大,上溢,导致计算机无法处理,可以给它取log,连乘变成了连加,缺点是,对应的结果不再是整数,浮点判等会稍微麻烦一点。

  俺是软件工程师,自然用很“工程”的办法,就是把碳、氢、氮、氧、硫的个数都变成0101的二进制串,然后依次排列起来(本质上,就是把N1,N2,N3,N4,N5依次乘以2的32、64、96、128、160次方,或者说把他们各自对应的0101二进制串依次左移动到合适的位置,再加起来),类似IP地址那样,比对是否相等时,直接用二进制掩码方式就能处理了。存在的小问题是,需要预先进行一个统计,搞清楚自然界里蛋白质分子中,碳、氢、氮、氧、硫各元素的原子数目的最大上限是多少,蛋白质是大分子,动不动成千上万的氨基酸链起来,必须保证二进制位数足够,不过这不算什么大问题,不够加长二进制串的长度就是了。

  fy大侠匆忙间刚够听明白问题的确切意思,于是在最短时间里想出个最直观的办法,那就是用ASCII码文本连起来组成一个字符串作为 key,不同元素的原子个数之间用一个符号隔开,例如“31@24@11@13@1”,然后用字符串比对,现有的高效库和高效算法很多,还可以用后缀树这种经典的文本分析数据结构来进一步优化存储和增删改方式。

  这么一个小问题,原来有这么多不同的招数,条条大路通罗马。思考是一件非常有乐趣的事。

钻石王老五的婚礼、star engineer和demo software

  周末,给自己放了一天假,整个下午都在睡觉,现在上来随便敲点东西,形散神也散。

  1. 最近Google Fans关心的八卦问题是Larry Page结婚,网上到处都是漂亮新娘子的照片。Sergey Brin和Larry Page果然像传说中那么默契,连结婚都是前脚接后脚,而且娶的都是搞生物信息的女孩。

  2. 老板Boss H昨天重读了Robert E. Kelley的How to be a star engineer这里是中文版),几分钟前刚收到他抄送全组的邮件:“根据我昨天的阅读经验,joyfire是个star engineer”,好吧,俺承认这是笼络人的手段,不过俺心里还是乐滋滋的。

  3. 周一有个很正式的活动,俺负责给重要领导演示我们的pFind蛋白质鉴定引擎,正打算复习卡内基训练的内容,发现Joel Spolsky刚在自己blog上发了一篇:How to demo software

Google Android发布了

  Android Linux SDK发布了,技术文档和源代码在Google Code。Google的知名服务都集成进去了,例如Google Earth(+GPS)和Google Talk,当然少不了还有搜索引擎,可以想到未来能集成的还有更多,例如Gmail、Google Reader、Google Doc、Google Notepad等等。

  Android还是偏向于传统。其实Google把软件Web服务化的技术路线很适合手持设备,未来肯定有更激进的Web OS。当然这架空了操作系统,触动了微软的根本。

  谷歌中国只有研发出这种东西,而不仅限于汉化,质疑声才能减少。

进入2.0时代

  刚接手pFind 1.5版时就提过,软件的2.0研发是个危险路段, 前方路况复杂,但既有架构又往往需要大动干戈甚至推倒重来,就好象给高速行驶的火车换轮子。反过来说,微软的很多著名软件,例如DOS、Windows、 Word、Excell、IE等,在最初阶段都被嘲笑为拙劣的模仿者。但这些软件一到3.0版,总能把原来的市场领跑者打得满地找牙,这体现了微软出色的 执行能力,把握细节的设计和竞争中的韧劲。

  所谓Web 2.0概念,就是商业上形容那种感觉:网络创业开始成熟,开始总结套路,为后面3.0、4.0、5.0……打基础。对玩家来说,千头万绪之中找到方向和走法至关重要。

  回过来再说自己的事,经过漫长的Beta,12月初,pFind Studio 2.0套件终于计划正式Release了,包括质谱和数据库预处理软件、搜索引擎、后处理平台和谱峰图形化标注界面等一整套鉴定工具。这几个月的痛苦前所 未有:海量数据测试,现场调试,打电话发邮件开会,重构,Features取舍,修改方案,熬夜加班,咳嗽两个月不好……总感觉快扛不住了。自我安慰:等 正式发布那一天,俺就是“世界上最棒的蛋白质鉴定软件系统”的Architect了,到时候充实地好好歇几天,阿弥陀佛,一定要爬到那一天呀。

  下面记录点具体案例,等俺老了,可以借此回忆激情燃烧的岁月(说别人都没意思,俺们现在的战况是:大老板H都上阵肉搏了):

  上周六临晨2点,BOSS H给我打电话报喜:“解候选肽理论库的不定方程组的代码编出来了!”昨晚,这一幕惨剧再次发生,11点多BOSS H又来电:“通过各种生化条件限制,我把理论候选肽数据库的数字从两千万缩减到六百了”,他兴奋地描述组合生成深度优先算法中的小招数,一直打到手机没钱 为止。

  这还不够疯狂,和BOSS H电话断了,打着哈欠收邮件,我靠,fy大侠也没闲着,半夜00:40邮件:“有线索了!”,看了好久的谱,他有个惊人发现……

  于是今天打乱私人安排去加班(幸亏没耽误晚上的蓝色宝石周年聚会)。BOSS H和fy先PK,排优先级,决定先写fy这边……明早新程序跑出结果,刚好赶上生物学家们过来开会,希望可以把鉴定出的糖修饰谱个数提高一倍。

  最后预告一下,刚好在pFind 2.0发布前,我计划参加2007软件开发2.0大会,我主要关注系统开发的这个Track,希望多交流。