Categories
中文

Chinese Translation of Complexity is the enemy

I just came across a good article about software design written by a Google engineer. I have found a Chinese translation, but some parts, particularly the last paragraph, are not satisfactory enough. So I simply put up my own.

复杂是敌人
作者 Evan Martin
原文地址:http://neugierig.org/software/blog/2011/04/complexity.html

我来到谷歌都快要满七个年头呢。我在这里学会了许多,远比我能写下来的要多得多。我想我至少可以和你们分享一些经验。

复杂是软件的死敌。它非常难于定量描述,而且日积月累。它像一个逐渐变烂的脓包,通常发现它时为时以晚。另一方面,通常增加复杂度的好处显而易见:新的间接曾允许新的特性,另一个例子是,把运行在一个机器上的程序拆分成为两个,在两个机器上面分别运行来解决扩展的问题,但是你必须实现一个RPC层来管理这两个机器。

不论新手老手,上面这些好处都是显而易见的。通过这几年的工作,我认为我已经可以很好的平衡什么时候该加入新的复杂度,而什么时候不该。我经常回想我的一个朋友对Ken Tompson的Go编译器的评价:它很快,因为它做得很少,也正因此它的代码简洁明了。

写一篇长博客很容易,但是言简意赅的表达相同的观点就很难。同样,写简洁明了的代码也很难。最明显的例子就是程序语言设计;新手设计的语言总是有很多特性,但是缺乏c语言那样的清晰性。在现在的程序开发中有一种不好的风气,程序的优劣在于它用了多少对象,而在分布式系统中,在于有多少可以活动的部件。

另一个对于这个问题的描述是“过分聪明”。引用一位c大牛的话说: 调试比写代码难一倍,因此,如果你的代码写的太聪明,调试的时候你就得抓狂呢。

怎么才可以解决这个问题呢,我怀疑是不是只有通过痛苦的经验来解决---等你调完其他人用“元编程”写的程序你就明白呢。不过我发现如果加入一些设计目标用于评估新的代码,这个问题可以得到有效的缓解。因为这样你就可以更容易的判断新代码能否帮助解决开始的问题,从而决定是否应该拒绝。在谷歌内部的设计文档模板开头都有一个None Goals 列表:你需要合理拒绝的项目扩展。

具有讽刺意味的是,我发现使用较原始的工具能够有效的降低复杂读。你不太可能写一个很复杂的c语言程序,因为c语言所能做的不多。c语言倾向于使用数组这种原始的结构,因为数组确实很棒,紧凑的存储,O(1)的存取复杂度,很好的数据局部性。我这样说并不是倡导使用原始的工具。事实上,我的经验是:写python的时候最好将它当做c语言对待。

Reference

This is the translation I noted in the beginning of the article, thanks the translator, too.
http://photo.weibo.com/1915548291/wbphotos/large/photo_id/3520526301358418?refer=weibofeed

Categories
中文

杂论

最近眼睛一直不太舒服,应该是暑假对电脑时间太长了,平时Research一直要对着电脑,暑假做Google Summer of Code,要编程的时间就更多了。我从小都有弱视眼,长时间的面对电脑屏幕使我的眼睛不堪重负,被迫尽量多的远离电脑屏幕,工作虽然受到影响,但也多了一些思考的时间。

以前,我应该算是一个唯心主义者,觉得只要是下定决心做的事情就一定可以完成。但是随着年纪的增长,我越来越意识到任何食物都是有极限的,人也不例外。做什么事情都要顺应人的自然规律,硬来是没有好结果的。

中国有句谚语叫做“人贵有自知之明”。自知之明就是知道自己的极限,知道一件事情自己是能够做还是不能够做,如果实在是超出自己的能力范围或者外部条件不允许的,就不要犯傻劲。

当然,在更多的情况下,这句话充当了失败者的借口和挡箭牌。对于在自己能力范围之内的事情,就要义无反顾的去做。最忌讳的事情就是没有充分的调研和分析就轻易的放弃,这实际上就是“懒”筋在作祟。

最近在阅读哲学入门读物《苏菲的世界》。小的时候,我就看过同名电影,当时就觉得非常的震撼。前些日子听静雅思听的时候又听到了苏菲的世界的连载,勾起了我的兴趣,于是在Amazon上面买了Kindle的电子书。

我们中国人有一种特殊的自负情绪,大约就是虽然我们现在是第三世界,但是在古代我们是独步世界的。这在一定程度上也是事实。但是今日中国的落后的根源,是早在我们文明灿烂的古代就埋下了的。

中国自从董仲舒罢黜百家独尊儒术之后,实际上就没有了真正的哲学。儒家之思想,本质是“入世”的。所以儒家研究的修身齐家治国平天下归根结底,都只是御人之术。而欧洲一直都没有放弃哲学的本质,那就是思考“世界是什么,人是什么,人存在的意义与世界的关系”。顺着这一哲学的脉络,欧洲诞生了“民主的政治观念”和“科学的研究精神”。中国之所以没有德先生和赛先生,就在于中国没有如此这般“出世”的哲学。

古代希腊哲学三大家苏格拉底,柏拉图和亚里士多德系统的阐述了人与世界的关系。苏格拉底因为没有留下成文著作,思想主要是由柏拉图阐述。柏拉图人为,世界分为自然世界和超自然世界。超自然世界并不是我们通常所说的“神魔鬼怪”构成的世界,二十由万物的理想模型构成的世界。我们常常说一个东西是圆的,但是谁又见过真正的圆?可能你要说我们在数学课本的插图上面见过圆,但是那些插图实际上并不是圆,它们只是看起来像圆的图案而已。你用足够精确的尺子去量,它必定有一些地方宽一些,另一些地方窄一些。数学定义里面的圆是半径处处相等的图案。显然这样的图案不存在与我们的自然世界中,真实世界中的所有物体都是有缺陷的。圆作为所有圆形物体的理型,只存在于理想世界中,也就是柏拉图所说的超自然世界中。

柏拉图人为理型是独立并且先于真实世界的,也就是说我们这个世界中的所有物体,包括人自己,都是用理想世界中的理型制造出来的,就像姜饼人是用相应的模子制造出来的一样。

亚里士多德却不这样认为,亚里士多德认为只有一个世界,那就是我们所处于的真实世界。所以理想模型只是人在接触了许多类似事物之后抽象出来的,并没有独立于实体的理想模型。

古希腊的思想哲学深刻地影响了欧洲几千年,柏拉图依据他的哲学思想构建除了社会的理型,也就是他的理想国。后世的哲学家的哲学家在他的基础上总结出了自然法。自然法就是我们现在所说的人权和普适价值。为什么这些价值普适,因为它们适用于社会的理型。而亚里士多德注重于观察和实践的哲学思想催生了科学。科学就是自然哲学。这就是为什么所有的理工科的博士仍然被称为哲学博士。科学之用意就是要通过对自然之观察和人类与生俱来之理性总结出自然的规律。

2012年7月27日

Categories
中文

神舟猎鹰:谁是航天工业的希望

前两天美国的SpaceX实现了第一次私人太空船与国际空间站对接,今天中国的神舟九号将第一位“神女”送上了太空。两个相差不到十天。

上个世纪五六十年代是航天工业的全盛时期,美苏两国不惜血本投入航天工业,实现许多至今人们还无法超越的成就。但是短暂的辉煌之后,美苏两国的官员和人民都开始质疑:为什么我们要将人送入太空?接踵而至的预算紧缩导致了延续至今的航天工业萎靡阶段,如今的航天产业,基本上属于国家玩具,朝鲜金胖子花了几亿美元放了一个冲天炮,不知道他乐呵了没有。

回想五百年前哥伦布发现美洲新大陆的时候,当时人们也在问,为什么我们要去新大陆?多数人的答案很简单:金子。虽然事实上美洲并不盛产金子,但是信息流动的滞后还是让欧洲的许多人相信新大陆里遍地黄金。金子驱动了美洲东岸十三个殖民地的建立,驱动了美国的西部大开发,当最初淘金狂热淡去之后,人们发现美洲土地肥沃,气候远胜欧洲,随着数十代人的拓荒和开发,直至如今,新大陆已经远远超越了旧大陆,成为了人类文明的中心。

那么在开拓太空的时代,什么是我们的动力?不幸的是,绝大多数的人都没有找到答案。没有人愿意无休止的向一个无底洞里面砸钱。任何一个事业,只有产出大于投入才可能持续的发展。如何在太空中捞到真金白银是太空产业能否持续发展的至关重要的因素。

SpaceX已经走在了世界的前面。Elon Musk于2002创建了这家太空startup,短短八年的时间,自行研发出来可以将10吨货物送上低轨道的猎鹰火箭,八年总成本不超过八亿美元。虽然目前还没有实现载人航天,但基本上也只是时间问题。SpaceX作为一个美国公司,单次发射成本只有五千四百万美元,甚至低于中国的发射成本,而在技术层面上已经超越了中国。随着研发成本队的分摊和工艺的改进,成本还有可能进一步降低,SpaceX的目标是将载人航天的费用降低为50万美元每人,到那时去太空度假不是是可望不可及的梦想呢。

相形之下,我们的神舟系列走的是苏联的老路,靠的是国家投入和民族荣誉,没有任何商业化。随着越来越多的航天员进入太空,民众敏感度降低,国家投入势必减少,神舟飞船或许那个时候连神舟电脑都不如。
虽然美国航空航天局目前失去了将人送上太空的能力,但是可以说,在新一轮的太空竞赛中,美国已经走在了前面。

美国的优势是完备的市场竞争环境、丰富的技术创新经验以及富于开拓精神的人文环境。三要素的齐备,使得美国的诞生了无数的改变世界的卓越人物,比如:

  • 希拉斯·菲尔德: 创办大西洋电报公司,接通了美国到大西洋第一条电缆,第一次实现了跨越地球的光速通信,
  • 亨利·福特:创办福特汽车公司,将汽车送入千家万户,极大的改变了世界的交通方式,
  • 爱迪生:创办通用电气公司。 普及了电灯,直流输电线路,
  • 尼古拉·特斯拉:创办西屋电气公司,交流输电线路,无线电传输技术
  • 肖克莱与八叛逆:仙童半导体公司,发明晶体管,开创了电脑工业时代
  • 拉里佩奇,谢尔盖布林:谷歌公司,改变了人类搜寻信息的方式

在不久的将来,Elon Musk的他的SpaceX很有可能也出现在这个名单里面。在同时代的人眼中,他们所解决的问题和和我们这个时代去太空周末双人游一样不可思议。正如Elon Musk自己所说,虽然中国是世界发展最快的经济体,但是美国优越的创新环境让美国在新的竞争中立于不败之地。国内普遍存在一种二十年内超越美国的乐观情绪,我只想说,要超越美国,我们要学习的东西还有太多。 只有等到有一天我们的体制也能培育出真正改变世界的卓越人物,我们才能说我们赶上了美国。

二零一二年六月十六日

Categories
中文

哈佛中国论坛笔记

今次哈佛中国论坛又可称作是亚布力中国企业家论坛波士顿分论坛.大会的主题是:一起向前看.主要的嘉宾都是92派的企业家。所谓92派,就是92邓小平南方讲话之后 下海经商的高级知识份子。论坛最遗憾的一点就是绝大多数企业家都是资本密集型行业出身的,没有技术型企业家,所以整个讨论都处于相对大而空的氛围中。尽管如此,还是有不少收获的:

主题keynote中比较有价值的是毛振华的keynote:
他先总结他自己的人生,觉得最大得经验就是要,顺势而为。跟对队伍,看准潮流,坚持走下去。接着他回顾了一下中国的经济改革历程,中国最重要的年份是1978到1992年。这些年是中国的政府领导自发的进行了自我的改革,统一了社会的思想认识,终于在1992年确立了发展市场经济的原则。1992年的时候邓小平可以通过“发展经济”来统一全社会的思想和认识,但是现在不行呢。中国的社会分歧已经很严重,不可能由一个领袖再来统一中国的思想呢。

我参加了三个panel。
panel 1是 城市的可持续发展:
这个panel我不是特别熟悉,就是冲着王石过去的。王石的观点:在中国,大城市是大的趋势,因为1.亚洲人口密集,2大城市有利于节省社会资源。城市会越来越高,越来越大,这是不可逆转的趋势,万科二十年前的平均楼层高度是12层,现在的平均楼层高度是25层。

panel 2 中国的经济改革

讨论阶段毛振华说到:国有企业 应当是狗 ,由国家养着,看家护院,做一些关乎国计民生的行业,而民营企业是猫,需要自己找食,创造新的社会财富。

而现在国有企业由很大的问题。问题一是现在国企都是资本密集型 ,由政府背书,无限制供给资金,与民争利但是又不解决就业问题。第二个问题是国企的强大不是因为国有企业是高效率资本,而是因为国有企业都是行政垄断型,强制消费型。最后就变成了劣币驱逐良币,整个社会生产效率降低。

国有企业也是一个独立个体,也有利益集团,国企的利润并没有为全民所有,而是被国企干部和国企职工先分配了。国有企业得问题实际上是一个政治问题。

田源提到了97年国企的改制,97年得国企改革实际上是世界上最大的企业并购重组M&A。当时他在物资部下面最大得国企,当时公司养着110个局级干部,2000处级干部。每年亏损60多个亿。国企改制过程中将所有的国有企业分为两个,好企业从各个部委划出,全部划入国资委,坏企业由四个资产管理公司买下所有的负债,进入破产程序,所有的破产公司被贱卖,多出来的窟窿由政府发行债券填补,有一两万亿的债务。实际上是用未来的税收填补了国企亏空的窟窿。剩下的国企无负债,是优质资产,而且这个国企从出生开始就有上市资格,接着上市吸收了大量资金,国企逐渐变强。另外一个重要得影响因素是 2008年得四万亿 一揽子刺激计划大部分资金进入了国企,导致国有企业无比强大。形成了国进民退的局面。

中国的金融改革是落后的。领导人对于金融的把空很严。中国的四大银行象一个巨大的抽水机,抽取社会的资金,所有的资金进入了四大总行,总行是贯彻中央意志的。总行总是倾向于贷给国企,贷给大企业,这样对于民营企业,中小企业来说是非常不利的。为什么银行贷款偏向国有企业。因为国企由政府背书,比民企更加安全,贷款失误是终生追究责任的,贷给国有企业更佳保险。

还有一个原因是国家利率没有放开,贷款利率相差不大,贷给民企,中小企业,银行承担了高风险,但是没有随之而来的高收益。与之相比,美国的银行系统是非常的分散的。四大国有企业拥有90%的货币总量。而美国有很多的小银行,募集到的资金就地使用,而中国几乎所有的资金都是抽到北京再进行分配。

接着他们都谈到了吴英案和民间集资的问题。最近中央已经松口,将会放开民间集资,首先从温州开始试点,温州打开了中国金融改革的窗口。小银行应当是经营货币的企业,和其他企业无异,只要拥有足够的准备金,私人应当可以自由创建银行。从温州开始要发展社区性的银行。

最后泰康保险的陈东升做了一个总结。中国的金融问题,归根结底是利率的问题。中国的金融改革现在有四大问题:一是利率市场化。小型银行承担的更大的风险,应当可以收取更高的利率。二是人民币自由兑换。 三是资本市场放开。四是要有企业家精神。最后他补充到,过早的建立完善的工会和健保制度会毁了整个国家。这些需要建立,但是要等到发展到一定阶段才合适。

讨论过程中还提到了其他一些观点:中国的改革开放实际上是:1. 国企改制 2. 民企崛起 3. 外资进入。吴敬琏的观点:留住存量,放开增量。邓小平说,改革开放实际上是 1.政企分开 2 党政分开。中国现在在吃两个红利 1. 人口红利 2. 土地红利。两个红利吃完了怎么办,还没有良好的办法。

第三个panel是技术创新的,但是由于大多数嘉宾是传统行业的,所以讨论也不太深入,就略过不讲了。

Categories
中文

别了土豆

早上起床得知,土豆和优酷合并了,这对冤家终于还是走到了一起,难怪今天网上都是调侃的段子。今天对于王微来说可能是一种解脱,优酷给出的报价较土豆的当前股价溢价119%,而且古永襁给足了面子,虽然土豆实质上是被收购了,但是优酷坚持对外宣称是合并。这样的结果,已经是最好的结果了,从王微那段失败的婚姻开始,土豆注定了是一个悲剧。

我想王微应该是不愿放弃的吧,但是对于土豆来说,坚持已经没有意义。虽然流血上市成功,但是股价持续低靡,影响了土豆的融资能力,现金枯竭是迟早的事情,王微在土豆的股权已经很低,面对资本没有什么话语权。

优酷作了很大的让步,土豆的市值只有优酷的六分之一,在新公司的权益却达到了接近30%,但是这也是不得不作出的让步。虽然优酷抢先上市,占得了许多便宜,但是国内的视屏行业处于病态发展的阶段(类似的还有B2C电商),所有的公司都在大量烧钱,而且看不到盈利的希望,通过加强垄断,压低成本来拼死一博是独立视频企业唯一的出路。

虽然有奇艺,搜狐和腾讯视频的挑战,但是土豆和优酷实际上是垄断了网站类视频市场,尽管如此,合并之后应该并不会加重垄断趋势,新的优酷土豆公司的的市场份额相比各自份额的总和应当会略微变小,但是由于合并之后可以大量减少成本,提高购片的议价能力,合并会带来盈利的希望。

最近还有一个有意思的事情是Google的导航条上将Video选项移至more里面,对应位置替换为了Youtube选项。Google已经假定用户不再需要到别处去寻找视频了,事实上,Youtube已经占据世界范围内一半的视屏流量。视屏领域已经像搜索领域一样被google做死了。这个领域,注定走向垄断。

Categories
中文

《摩根财团》读后感一

现在读书笔记拖的时间越来越长了。三周前读完了《摩根财团-一代银行王朝和现代金融业的崛起》,一直想要写一个读后感却抽不出时间。只好在公车上面敲下这些文字。

这本书讲述的是整个摩根财团的历史。摩根公司的前身由乔治`皮博迪创建,后由朱尼厄斯摩根接手,并更名为摩根公司。接着摩根家族的三代人(包括朱尼厄斯的儿子皮尔庞特摩根,孙子杰克摩根)主导了摩根的发展。之后的摩根财团淡化了家族企业的印记,摩根家族成员对于摩根的影响力消失殆尽。

摩根的历史实际上就是美国的历史。在早期朱尼厄斯的时代,伦敦是世界金融的中心。当朱尼厄斯坐镇伦敦大本营的时候,作为儿子的皮尔庞特则在美国打点着华尔街的业务,那个时代的美国,虽然潜力无穷,但仍然只是新兴国家,资本市场并不大。摩根财团这个时期实际上扮演着英国资本在美国的掮客角色,可以说,此时的摩根更加像是一个英国公司。但是过了一代,美国就一跃成为一流的资本强国,华尔街不再需要伦敦来募集资金了,皮尔庞特坐镇华尔街22号,杰克则去打理着伦敦的摩根建富的业务。可以看出,这时的伦敦不再是摩根王国耀眼的都城了,摩根重心的转移正与世界权力中心的转移相契合,这不是偶然。

世界中心的转移给了摩根非常大的竞争优势。作为一个美国公司,摩根财团在与欧洲财团的竞争竞争中早期一直处于劣势,欧洲债券承销业务他们几乎无法染指,这一领地早被欧洲霸主罗斯柴尔德家族和英国贵族巴林家族瓜分。即使在美国债券的承销中,他们也时常竞争不过罗斯柴尔德家族和巴林家族。当时在后二者眼里,摩根公司不过是一个来自新大陆的暴发户,根本算不上是一流的债券承销商。

但是随着美国经济的发展,形式发生的很大的逆转。美国工业蓬勃发展,急需大量资金,而美国的资本市场也逐渐发展起来,相比半个地球之隔的欧洲财团,华尔街22号显然更加容易打交道。摩根财团逐渐雄霸整个美国资本市场,和欧洲财团隔洋对峙。第一次世界大战给欧洲财团以沉重打击,而对摩根来说确实绝佳的机会。当时摩根扮演了美国政府角色,为协约国提供了大量贷款,将自己的势力伸进了欧洲。亲德奥的罗斯柴尔德家族随着同盟国的战败受到极大打击,而战后英国限制了本国银行在国外的贷款,导致了巴林银行业务的快速萎缩。经过一战,摩根恍然发现自己已经成为世界最一流的银行了。

公司不可能脱离市场存在。摩根在早期之所以处于劣势,就在于当时主要的资本活动不管是融资还是借贷都发生在欧洲。罗斯柴尔德和巴林家族在欧洲大陆经营数代,关系盘根错节,而摩根作为一个美国公司,离这个市场实在是太远,确实没有太多机会。而当时的美国资本市场,根本支撑不起一个世界一流的大财团,所以虽然摩根在美国举足轻重,但在世界范围还属二流。但是到了20世纪情况就不一样了,美国成为了世界最大的工业过和最大的市场,摩根仅凭美国市场的成绩就足以傲视群雄。而摩根的国际化(向欧洲大陆的渗透),是随着美国的国际化一并完成的,当世界市场开始跟随着美国市场的步调时,美国金融业的王者摩根在世界上就举足轻重呢。

(未完待续)

2011年12月18日


Categories
中文

研究与编程

开学之后一直就非常的忙。尤其是最近的几周过得都特别的辛苦。基本上是周一开始赶research,周一周二晚上都睡得很少,然后周三中午和导师Meeting。Meeting完毕了之后就开始赶功课,一直赶到周日。这个学期有两门课,一门课巨难无比,另一门课虽然不难但是每周都有作业,也很耗时间,这样留给research的时间本来就减少了。最近又从Robot Control的项目转到了Cyber Security的项目。新项目开始一时无从下手,也走了很多的弯路。

虽然每周开始的时候会弄一下research,这是这几个星期的进度都不好,也没有做出导师需要的结果,每次meeting完了都看得出他比较失望。其实我的导师人很好,也不push,周围的师兄们也过得都挺好的,一周做两三天research应该是足够了的。

觉得其实是造成我现在很辛苦的原因是自身定位的偏差。因为我很明确毕业了之后会进工业界,所以我更加看重开发能力,而不是发表论文。而且我本人也很喜欢编程,所以我总是会深深的陷入到“编程思维”中去。

每当遇到一个问题,我的思维总是围绕这“程序”展开的。使用面向对象还是面向过程,什么样的抽象层次,什么样的数据结构。但是研究其实需要着眼的是理论和方法,而不是程序。

比如说是在做Robot Control的项目的时候。前面学生的代码丢失,我需要重新编写代码。我没有使用我已经很熟悉的Matlab,而且转而使用我不太熟悉的Python,因为Python有更好的执行效率,扩展性和对于面向对象更好的支持。这导致我浪费了很多的时间去熟悉Python的语言特性。

在编写的时候我下意识的将它作为一个应用程序程序来写,分离出了仿真的部分和实际控制的部分。这样只需要对控制部分做少量的修改就成为一个真正的控制器呢。同时还考虑了以后的可扩展性,为以后增加功能都留足了空间,这导致了过份复杂的抽象,代码量也随之增加。我没能在预计的时间内完成。

而到了Cyber Security这个project之后也出现了同样的问题。导师让我在一个只有十个节点的网络里面验证一种方法。因为节点数目很少,我完全可以手动写配置文件,也不过五六十行的样子。但是我却首先去写了一个配置文件自动生成程序,这样可以自动生成大规模网络的配置文件。然后用这个配置程序去自动生成配置文件。这个程序浪费我很多的时间,从周一写到周二的深夜才写完,留给仿真对比的时间很少。最终的结果是我虽然做出了结果,但是实在没有时间去写一篇Well-Documented Report,只好打印出几张图片就过去了。在和导师讨论的时候,导师也不关心这个是自动生成的还是手动生成的。而是着力问我模型上面的问题,和结果的解释,这部分我却没有怎么花费时间。最后的结果可想而知呢。

这些做法都是没有问题的,事实上,这都是一个良好的“程序员”应当考虑的。但是问题的关键是作为“研究者”的导师并不关心这些问题,他需要的是在特定的场景下能够得到合理结果,并且有良好的解释,这些才是可以发表的。即使这些代码离开这个场景就不能运行也无所谓,因为论文里面也不会去讨论这些。

事实上,随着我转换项目,我在Robot Control前期花费大量时间做出最终都付之一炬。因为我基本上再也用不到了这些代码了,根本不需要扩展的程序考虑可扩展性有什么意义呢?而Cyber Security项目中,很有可能可能导师明天就换了idea和model,那个自动生成配置文件的程序可能就可以直接丢到回收站里面呢。

以前就听说过,做研究和做开发是有天壤之别的,现在有了切身的体会。在工业界做开发碰到的基本上都是老问题,而且问题都是会被经常碰到的。所以代码是一种产品,需要反复的打磨和抛光。而在学术界则不同,研究人员的产品是新理论和新方法,程序不过是验证这个方法的一个手段。研究人员需要的是提出想法,用最短的时间去编写程序验证,然后再提出新的想法。所以学术界的程序都是”throwable prototype”。这也是为什么在工业界有嘲笑烂代码的说法叫”University Code”。

以一个开发者的心态来做学术肯定不是一个明智的选择,这样会导致大量的时间浪费,这也就是我这么累的原因。但是由于我以后肯定不会留在学术界,我也不可能仅仅走学术路线。我想我应当做的是将两者分开。研究的时候就应当摆正研究心态,如果有空闲再用课外project锻炼开发能力。

最近读到一篇叫<Software is not science>文章,讲的也是这个问题,读完之后很有启发,也在这里一并分享吧。

http://matt-welsh.blogspot.com/2011/11/software-is-not-science.html

王晶
二零一一年十一月三日夜

Categories
中文

Boston Startup Weekend参赛有感

上周参加了波士顿的一个创业训练营,叫作Boston Starup Weekend。我现在到还不准备开始创业,毕竟还早着的,此行仅仅想去见识一下,毕竟每天闷在实验室里面做research实在是颇为无聊,这也是一个不错的和美国人交朋友的机会。

比赛的形式是这样的:周五下午五点开始,五点到七点是social和networking的时间,social的时候我认识了一个人,他是加拿大第一大社交网站的founder,十八岁开始创业,今年二十七岁,看起来还一脸稚气。七点到八点会有几个人做presentation。 然后八点之后会有人上去做elevator pitch(就是在60s内推销自己的idea,然后拉人一起做)。会场气氛相当的活跃,有三十多个人上去做pitch,每人一分钟。内容大多数都是网站或者移动App,反正是各种各样的建网站。有大学生社交网站,专门服务西班牙裔的网站,短期实习网站,艺术品二手市场网站。。五花八门。

九点到十一点大家会开始选择自己的团队。每个团队需要在两天内完成一份商业计划,一个产品的原型,并在周日的demo大会上面做demo。来的人被分为三类,Tech People, Biz People and Design People, 注册的时候你需要选择自己的类别,然后去寻找合适的团队。

我开始想加入一个做吉他教学器的团队,他们的产品是一组夹在吉他上面的LED灯,通过LED灯的闪烁来显示你应该談那一首曲子。无奈他们只需要硬件方向的人,我对此又一窍不通。最后我加入了一个杂志出售的团队。团队的主题是Itune for Articles. Itune将现有的专辑打散,使得用户可以单独购买一首歌曲,从而开发了音乐市场的长尾。这个团队要做的就是将杂志打散成为一篇篇文章,然后放在网站或者移动应用商店上面出售,从而发掘杂志市场的长尾。

这个团队总共有13个人,是规模最大的参赛团队。但是其中有九个人是商科背景的。只有四个技术人员。Business People过多使得我们在无关紧要的细节上面花费过多的时间。比如,我们花费了四个小时才确定名字,大家对于名字相持不下。接着注册域名加上把域名弄好花费了一天,而且从仅有四人的Tech Team里面抽调了一个人去弄这个。

接着Business People分为两拨,几个女生负责去做PR,就是在社交网络上面发布各种信息,像是微薄小秘书之内的。然后几个男生去做biz model。

Tech Team从开始就遇到了不少的困难。我们就是临时拼凑的杂牌军。一个是Hacker只会黑客技术不会写网站,一个人只会使用GO语言而我们其他人都不会。而我和剩下一个哈佛的小伙子之前既没有写过网站也没有写过App。

所以决定用决定开发环境都用了很久。会Go语言的Tech Guy坚持使用Google App Engine,但是得使用Go。我个人prefer python。哈佛的小伙子不想写Iphone App,但是business people坚持Iphone App是必须的。最后商量的结果是我使用python编写Recommendation System,输入输入通过文件进行。网站使用GAE,用GO语言,全力做网站部分,不开发iphone app。

于是我周五的晚上就回去查了一下Recommedation System的文献,在心里面大致构建了一下Recommendation System. 并且让几个队友去收集足够多的数据。第二天早上八点不到我就到了比赛地点,开始写推荐系统。到了中午的时候,另外一个人加入,我们讨论了一下系统的实现并且简化到可以实现的地步。下午继续开始。大概到了晚上五六点的时候,我这边的code就大体完成了。

然后我去打听其他Tech Member的进度怎么样了。发现情况不是很妙,因为GAE的配置不知何故没弄好,域名跳转也没有弄成。然后所有的Code都是用Go语言编写的,其他的Tech member完全看不懂。更重要的是TechTeam里面出现内讧。hacker大叔觉得坚持用Go语言的那个member是个Bullshit。开始罢工不干了,坚持把那个人撵走再说,内斗持续了几个小时,接着新加入的Tech Guy也觉得用Go语言不靠谱。于是他和hacker大叔合力把使用Go语言的member架空了。我看到无力回天,还是回去做自己的recommedation System去呢。

而Biz Team做完了一个survey,然后三五成群在聊天,時不时过来鼓励一下我们,显得非常的闲。我们团队的Biz People实在是太多了。。不过话说回来,biz people都很caring,跟他们说话都比较舒服。不像Tech People火药味那么浓。

到了周日的早上,我就无事可做了。因为在撵走了Go语言的那个techMember之后我们对于到底用什么来开发都完全混乱了。而我的推荐系统部分已经写完呢。于是我去询问了一下marking Team的Biz Model是什么。听完了之后我就觉得这个Biz Model没有仿真支撑。他们想的是对杂志收费,然后将所有收到的费用交给杂志社,然后还在文章里面插放广告。广告费用归我们。

我感觉到杂志社倾向于将价格定在较高水品,减少对于纸质杂志的影响,而这就意味着较少流量,势必影响收入,要增加收入着必须和杂志社对着来。而用户付费还要看广告,从心里上面来说就比较难接受,所以在用户那边也不讨好。两头不讨好这个商业模式就很难让人信服。这些都不是问题的关键,关键是marketing没有设计一个定量的模型来分析我们未来的营收支出。没有数据的支撑这个模型是非常的不convincing的。

于是我简单的建立了一个user model。分析了一下用户量随price的变化,和预计的营收。时间有限,我并没有采用他们的model,而是简单的使用收费无广告的model。不过还是有一些仿真图可以用。Leader看到了很高兴,于是将Simulation的结构加到了PPT里面呢。

等我抽身回来的时候,Tech Team的进度已经大大落后呢。他们最后决定放弃所有的后台,只做前台部分,将界面做好就可以呢。然后因为域名绑定和服务器托管的问题,最后决定网页托管在dropbox上面。

到了周五下午四点钟的时候,网站的界面终于弄好呢,这样我们至少可以去demo。大家知道了这个消息都非常的高兴。五点钟的时候demo开始。总共有19个team,我们是第16个。大家一个个上去讲。两分钟的简介,包括Biz Model。还有三分钟的demo。最后是五分钟左右的问答环节。

我们主要都是Biz Team在讲,但是因为时间有限,Biz Team将我的Simulation Result那一部分略过呢。等到问答环节的时候正好一个judge问我们的产品相对与Competitior来说有什么优势,我就接过来说了一下我的recommedation System和仿真的结果。demo完毕了之后还有个social的晚餐会。因为我得回去看第二天的Homework的due,所以我就没参加直接回去呢。最后我们团队获得了The most comerical potential 和 the 2nd place at the technology use.

这是一个很有意义的活动,我觉得收获颇丰。见识了这种Cofounder Dating的活动。很多时候会怯场的原因就是因为见的不够多,见得多呢就自然见怪不怪呢。我原来在国内的时候刚开始不太喜欢在公众场合,后来慢慢的适应习惯了做公众演说就没什么问题呢。刚来美国的时候也是见到美国人就发怵,尤其是这种social和networking的活动。实际上真正参与进来就很自然呢。

在国内团队中会碰到了问题在这边团队都会碰到。比如团队的构成不合理,分工不明确,相互推诿。这次我们的团队实际上就是存在很多这样的问题。多见识些这样的问题有利于以后进行克服和避免。还有一个感触就是做技术和做科研差别很大,而做research的时候虽然很多理论推得花里胡哨,但是实际上并不实用,但是用太简单的东西又没有research的价值,所以researcher有使问题复杂化的倾向。做技术的时候是越简单越好,够用就行,不要求最优,越复杂越容易出错。有的时候科研的思维在真正做技术的时候是很有害的,容易将问题复杂化。

波士顿地区的科技创业公司大多比较传统,大多是生物制药和机械物流。不过这次看到了绝大多数都还是Web或者App相关的,可见互联网,和移动互联网之火热。美国风险投资和技术创业最多的两个地区就是加州和波士顿。从Tec Transfer Center这样的学校组织到像Boston Startup Weekend的社会活动,这边确实有很多接触到这些信息的机会,也使得很多的人被鼓动到从事这个行业。为什么Microsoft,Akarmai和Facebook能够发轫与波士顿,很大程度和这边的环境是有关系。

Categories
中文

Mac OS Lion 编译ctags

我是Mac OS Snow Leopead. 前两天升级到lion。因为升级完成了,/Developer/ 目录的东西都还在,所以我直接将/Developer/usr/bin 加到path里面了,然后就可以在系统命令行里面使用gcc了,开始我觉得这样就可以了,不需要重新安装xcode。事实证明不是的。
 
昨天在使用mvim的时候发现Taglist无法使用了。查看了一下,应该是Excuberant Ctags 没有安装。于是到网上去下了一个ctags的源代码进行编译。但是不停的报如下的错误

Darwin 11.1.0 Darwin Kernel Version 11.1.0: Tue Jul 26 16:07:11 PDT 2011; root:xnu-1699.22.81~1/RELEASE_X86_64 x86_64
checking whether to install link to etags… no
checking whether to install readtags object file… no
checking for gcc… gcc
checking for C compiler default output file name…
configure: error: C compiler cannot create executables
See `config.log’ for more details.
Jing-Wangs-MacBook-Pro:ctags-5.8 jingwang$ cd ..
Jing-Wangs-MacBook-Pro:Apps jingwang$ ls

怎么弄也弄不好。后来我怀疑是Xcode的问题,于是写了一个c文件测试一下。发现无法进行链接,说不存在stdio.h文件。于是到Mac App Store上面安装Xcode 4.

但是进度条总是一点变化都没有,等一两个小时也是这样。后来重启试了几次也还是这样。
不知到Mac App Store出了什么问题。于是到网上去BT下载了一个Xcode4.2
http://www.osxtoy.com/?p=733
安装完毕之后再编译ctags,错误发生变化
Darwin 11.1.0 Darwin Kernel Version 11.1.0: Tue Jul 26 16:07:11 PDT 2011; root:xnu-1699.22.81~1/RELEASE_X86_64 x86_64
checking whether to install link to etags… yes
checking whether to install readtags object file… no
checking for gcc… gcc
checking whether the C compiler (gcc  /opt/local/lib) works… no
configure: error: installation or configuration problem: C compiler cannot create executables.

我去查看/opt发现里面是空的,于是我手动创建了/opt/local/lib 目录。这时错误信息又发生了变化gcc error: can’t map file, errno=22 or the case of the missing space

我试着用超级用户权限去configure。sudo ./configure 最终搞定.

都怪自己手贱去升级,Lion相比Snow Leopard基本没什么改进,浪费了三十美刀不说,还又多花出这许多功夫,我原来以为是升级之后所有的软件都可以直接使用的,结果好多都不行,前两天的用tex的时候也又问题,也重装了。

对于开发者,强烈不建议现在升级。

Categories
中文

这就是百度的精准营销

一直觉得百度推广不靠谱。看看上面的图,网页在讨论准王妃婚纱问题。推广冒出来个羊肉穿串机,这让设计人情何以刊