年关将近,不知道小伙伴们是不是忙到不可开交呢?又或者正是因为太忙,一日复一日,一睁眼上班一闭眼睡觉,突然发现,找不到人生的激情了呢?人人都称赞心如止水是何等高超的境界,可是,修行者自身一旦意识到了自己心如止水,产生了情绪,恐怕就已经偏离了这种状态吧,Shunryu Suzuki在《Zen Mind, Beginner’s Mind》便有类似的论述。电影《卧虎藏龙》中,大侠李慕白闭关修炼,一心求道而不得,也坦陈:

“这次闭关静坐的时候,我一度进入了一种很深的寂静,我的周围只有光,时间空间都不存在,我似乎触到了师傅从未指点过的境界”,“我并没有得道的喜悦,相反的却被一种寂灭的悲哀环绕。”

没有情绪的人应该会很无聊吧,就像没有灵魂的机器。《钢之炼金术士》中“等价交换”几乎可以帮助人们制造任何事物,但惟独无法复活生命,因为没有什么能够替代灵魂。记得有人曾经说过,情绪乃动力之源(Emotion is energy for motion)。“这个时代最杰出的心理医生” Scott Peck言,整个宇宙无可避免地走向混沌,是什么样伟大的动力才能够反熵呢?是爱。 《恋爱的犀牛》编剧廖一梅则反复强调杜拉斯的神句:“爱之于我,不是肌肤之亲,不是一蔬一饭,它是一种不死的欲望,是疲惫生活中的英雄梦想。”

是啊,让Sherlock Holmes never get bored的恐怕不是罪恶本身,而是与精妙犯罪斗智斗勇的乐趣而产生的爱吧,被Moriarty调戏的Sherlock暗地里应该会很开心。毛主席教导我们,与人斗其乐无穷。《纸牌屋》中Claire的追求者无数,却唯独选了最会“与人斗”Francis,为什么呢?

“You know what Francis said to me when he proposed? I remember his exact words. He said, ‘Claire if all you want is happiness, say no. I’m not going to give you a couple of kids and count the days until retirement. I promise you freedom from that. I promise you you’ll never be bored.’ You know, he was the only man—and there were a lot of others who proposed—who understood me.”

反念一想,驱动于情绪,never get bored,管它是好是坏。心中有了波澜,有了些动力,然后再“少想那些没用的,该干嘛干嘛去。”孔子先有了不舍昼夜的思考,才会说“吾尝终日不食,终夜不寝,以思,无益,不如学也。”

这样一来,波澜过后的平静,虽少了些宁谧,却反而多了几分禅的意味。

作者:Joel Spolsky

译者:Puncsky

总有些时候,我就是什么事都干不了。

当然了,我还是会去上班,走进办公室,磨磨洋工,每隔几十秒就查查电邮,上上网,甚至还做点儿不用动脑子的事情,比如付运通信用卡账单。但唯独没法回到写代码的状态。

这种毫无产出的异况通常会持续一两天,但在我作为软件开发者的职业生涯中,曾有数周持续如此,什么也干不了。正如他人所说,我百无聊赖、状态不佳、诸事不顺。

Tetris
诸事不顺的俄罗斯方块君

人人都会有情绪波动,有人来的平和、有人来得猛烈,甚至很崩裂。没有产出的状态似乎确实和低落的情绪有关。

这让我想到了,有研究者称,人们基本上是无法控制自己饮食的,所以任何节食的企图都注定夭折,体重也总是会波动回到正常水平。也许作为软件开发者,我真的是无法控制自己的产出,所以我不得不任其波动,只求快慢相抵,平均下来代码的行数足够让我有口饭吃。

Go read The Onion for a while.
来读读洋葱报吧

让人兴奋的是,自打第一份工作起,我就意识到,作为开发者,我平均下来每天只有两到三个小时的高效编程时间。当年我在微软暑期实习的时候,曾有个实习生告诉我,他实际上每天12点到、5点走。上班时间只有五小时,还包括吃午饭,但他的团队就是爱死他了,因为他仍能够顺利完成很多任务,远高出平均水平。我发现我也是这个状态,但难免稍感愧疚:其他人都好像是在忙忙碌碌的,我只不过每天花了两三个小时有效工作,却仍够久居团队中最有效率的成员之列。也许这正好解释了,为什么人件理论和极限编程一再坚持,要消灭加班,限定每周工作40小时,因为他们很清楚,这么做绝不会削减团队的产出。

一天“只”干两小时的活不是问题,什么都干不了才是问题。

我一度反复斟酌过这类问题。我想起了职业生涯产出最丰硕的时候,那时我刚搬到微软一间光鲜奢华的新办公室。透过大大的落地窗,可以俯瞰一隅石庭,遍布樱桃树一树一树的花开。万物勃发。几个月来,我马不停蹄地在打造Excel Basic的详细设计规格书——一大摞纸,涉及了庞杂的对象模型及编程环境的方方面面。我还真就没罢手过。甚至连参加麦金塔世界大会(MacWord),不得不去波士顿的时候,我也带着笔记本电脑,坐在哈佛商学院风景怡人的露台上,为 Window 类写文档。

一旦你进入状态,要顺势连轴转并不困难。通常我的一天是这样子的:(1)上班。 (2)查邮件、上网等。 (3)决定开始干活前还是先吃个午饭吧。 (4)午饭归来。 (5)查邮件、上网等。 (6)终于决定得开始干活了。 (7)查邮件、上网等。 (8)决定真的得开始干活了 (9)打开该死的编辑器,然后 (10)不停地写代码,无视时间流逝,直到已然晚上七点半。

我并非总能逾越步骤8和步骤9之间那条鸿沟,那里似乎混进了奇怪的bug。对我来说,开始干活正是唯一困难之处。静止的物体在不受外力的作用时会保持静止。我的脑海里有个笨重的东西,极其难以加速,但是一旦全速运转,保持状态则毫不费力。正如单车越野自驾游时,全副武装的单车——刚开始骑,很难想象得费多大劲儿才能蹬转它,但是一旦骑起来,轻轻松松地就感觉不到这些装备的存在了。

bike trip
单车之旅

也许这就是高产出的关键:马上开工。也许结对编程之所以成功,是因为你得安排某段时间编程,和另一个哥们一起,互相敦促对方开始。

Joel in the Army
阿兵哥Joel

我在以色列当伞兵时,曾有一位将军造访,给我们讲授战术战略,他说,步兵战术其实只有一种:开火中前进。向敌人开火的同时接近敌人,开火迫使对方低下头来,而无法向你开火。(这也是士兵们大喊“掩护我”的原因,这话的意思是“这边,在我冲过街道的时候,向我们的敌人开火,迫使其躲入掩体,而无法向我射击。”就是这样。)你冲锋陷阵,越接近敌人,就越可能击中目标。如果你不前进,换做对方争得先手,你将大事不妙;如果你不开火,换做对方向你开火,你将寸步难行。

我对此记忆深刻。我注意到,几乎所有的军事策略,上至空军空战、下至海军演习,都基于开火中前进的理论。又过了十五年,我才意识到,开火中前进也是人生中做事的法门。你应当每天前进一小步。代码弱爆了、有bug、没人要,没有关系的。只要你一直前进,只要你一直写代码修bug,滴水也能穿石。当你的竞争对手向你开火的时候,要小心了,他们的目的,是不是仅仅是为了让你疲于应付,止步不前?

想想微软的历任数据接入方案:ODBC、RDO、DAO、ADO、OLEDB,到现在的ADO.NET,反复翻新,技术上有必要吗?还是因为某个设计组实在太渣太坑爹,不得不他娘的每过一年就重造一遍数据接入技术?(事实上,可能还当真如此。)但其终极目的,说白了仅仅是一道火力掩护,竞争对手别无他法,只能疲于奔命地移植代码,耗掉他们本可以用于开发新功能的宝贵时间。仔细观察软件业的天下大势,那些做得好的公司对大公司依赖最少,自然不必把自己一个个软件开发周期,都耗费在跟风、重写、修那些仅仅在 Windows XP上出现的bug上面。那些垮掉的公司则花费了太多时间占卜微软未来的方向。有些人见了.NET就发怵,要按.NET来重写自己的整个架构,以为自己别无选择。看清楚了,哥们儿!微软这是在向你开火呢,这仅仅是道火力掩护,以便他们大步向前,而却让你止步不前,因为这,就是游戏规则。想要支持Hailstorm? SOAP? RDF? 你支持它的原因,是你的客户当真需要它呢,还是说谁在向你开火,你不得不做出反应呢?大公司的销售部门深谙火力掩护的道理,他们见到客户就说,“好的,您不必从我这买。从最好的供应商那买。我们只是想提醒您,下单前最好确认一下产品对(XML / SOAP / CDE / J2EE)的支持,否则您将会被他们的技术套牢。”然后,当一些小公司向这些客户推销的时候,那些听话的CTO们就会喋喋不休“你们支持J2EE吗?”于是,小公司们回去埋头用J2EE构建产品,尽管这并不能够真的促进销量,连他们出类拔萃的机会也搭进去了。其实,这不过是一个复选框(checkbox)功能——你做它仅仅是因为复选框告诉你你要做,但没人真正用它、或需要它。这,就是火力掩护。

开火中前进,对像我们这样的小公司而言,意味着两点:第一,你要争取足够的时间;第二,你要每天向步步向前。如此这般,胜利女神就会迟早站在你身边。昨天,我做成的事情仅仅是把 FogBUGZ 的配色方案改好看了一点点,可是这没有关系,只要软件总是在向好的方向发展就行。每一天,我们的软件越来越好,每一天,我们的客户越来越多,这才是真正重要的。除非到了Oracle这种公司的规模,我们甚至都没必要有什么宏韬伟略、深谋远虑。我们需要做的仅仅是,每早来到公司,拼死拼活,打开编辑器。

最近,美帝著名软件工程师兼企业家、Stack Overflow的联合创始人Jeff Atwood写了一篇名为《You Don’t Need Millions of Dollars(你做了土豪又怎样?)》的博客,介绍了《Doom启世录》这本书。

我早年正是受到了这本书的激励,热血沸腾,走上了软件开发的道路。受到这本书和一位CS PhD的启发,你若问我的梦想是什么,我的梦想是在海边有所房子,面朝大海,春暖花开,每天躺在甲板上,望着湛蓝的天空,随着碧绿的海水飘荡,做点什么呢?写写代码写写诗…… 是不是颇有”浴乎沂,风乎舞雩,咏而归”的感觉?

如果你和我一样把Coding当做终身乐趣,那你一定能够在此书中找到强烈的共鸣 :D

以下是我的翻译。

你做了土豪又怎样?

作者:Jeff Atwood

译者:Puncsky

Doom启世录》讲述的是John Carmack和John Romero的故事,他们创造了大名鼎鼎的德军总部3D、毁灭战士、雷神之锤等游戏。此书在诸多方面皆属于上乘之作——但主要还是归功于作者详实的考据。

Masters of Doom

为了再现两位John的故事,我在这六年里采访了数百次,同一个人也可能在不同场合采访多次。2000年的夏天,为了这本书,我搬到Dallas,名扬全镇,被称为“写这本书的那个人”。John Romero和John Carmack各自与我当面交谈了数十个小时,回答了我大多零碎的问题:他们当时感觉如何,有什么样的想法,他们说过、听到过、看见过、或者玩过些什么。如果当事者无法回忆起来,我会发掘网站、新闻组、电子邮件、聊天记录、杂志(尽管我参考这些,但是我更加重视当事人自己的观点)。我也曾经沉迷在他们的游戏世界当中,(是的,无法自拔),在家联机、或者参加联赛。

我花了六个月将磁带录音转录成脚本,并据此撰写了文本,尽可能地详实有据地再现当时的情况。为了让读者更好地理解,本书经常以众人不同的角度来讲故事。

通常很难有一本书在讲述错综复杂的友谊与利益冲突的同时,能够得到当事人双方的认可;哪怕这本书已经风靡了十多年。这也证明了Kushner这本书之这本书正是行业人物传记之典范,考据详实,观点多元。从这点上来讲,跟《乔布斯传》恰恰相反。《乔布斯传》尽管我还挺喜欢,但是它观点单一,考据懒散。如果真有哪本写乔布斯的书能够像此书这么优秀,我也就能够心满意足地洗洗睡了

可以说,我跟这俩哥们是同一时代的人,我几乎与他们同岁。虽然我错过了德军总部3D,因为那个时候我还在上大学,但是到了1993年12月,我和所有早年的PC玩家一样,望眼欲穿毁灭战士的发售。那么,又是谁让毁灭战士家喻户晓的呢?说来诡异,是汤姆克鲁斯。

德军总部3D和毁灭战士让我成了第一人称射击的终身脑残粉——我死磕过每一款毁灭战士引擎的游戏作品,我甚至一度在拨号上网时代的线上游戏中心DWANGO遇到过Romero本人,并“跪舔”之。95年互联网浪潮开始后,我转战互联网,穷尽所能下载每一个雷神之锤的更新包,目睹了Remoro与Carmarck的分道扬镳,GLQuake和3D加速的异军突起,一路走到雷神之锤3。

同时,这本书更是振奋人心的励志故事。这是一堆屌丝极客码农们筚路蓝缕,从无到有,自力更生,创造一整个产业的故事。

共享软件,Remero对此并不陌生。这就得讲到Andrew Fluegelman,他是PC World杂志的创始主编。1980年,Fluegelman写了一款名为PC-Talk的软件,并将其发布在互联网上,宣称任何喜欢这款软件的人请不要客气随意送他一些辛苦钱。很快,他不得不雇佣员工帮他数支票。Fluegelman称之为“共享软件”,“一次经济学实验”。八十年代过后,其他黑客们接过共享软件的大旗,为苹果、PC和任何其他的设备写代码,遵循同样的模式:试一试,喜欢才给钱。支付的费用可以进一步给用户带来技术支持和产品升级。

共享软件专业协会估计,光在美国国内,就算只有10%的用户愿意支付,共享软件市场也在一两千万美元之间。1988年,福布斯杂志惊异于这一趋势,评价道,“如果你认为这都不算踏实的生意,请三思。”共享软件并不依靠狂轰滥炸的广告,而是在于口口相传,用销量说话。某顶级程序员Robert Wallace,写出共享软件PC-Write文字编辑器,竟然成就了一个百万级别的软件帝国(译者注:尽管最后还是被微软Office击败了。)但是,大多数的作者能够拿到上十万就不错了,一般还是每年获利略多于25,000美元。一年一千份的销量就可以算是很成功了,总的来说共享软件的概念当时仍旧新潮激进,多数为”实用软件”,比如用来记账、文字处理,尚未在游戏领域流行。

还有人记得共享软件么?我们这个年代与之类似的是什么?在互联网上发布软件么?算是,但我觉得答案更可能是各种应用商店:Google Play, Apple App Store, Windows Store。能够够直达用户。但是,他们发现,共享软件概念在游戏方面不管用,至少刚开始的情况是:

到了发布游戏的时候,Scott仔细研究了共享软件市场,感觉很好,完全可以绕过中间的发行商代理商,全部自己搞定。于是他放出了两款完整的文字游戏,坐等收钱。可惜钱并不赏脸,一个铜板也没有。他发现,游戏玩家与实用软件用户很不一样,后者愿意为实用软件付费,但前者更倾向于免费获取。Scott打听之下,发现他并不孤单,其他的共享游戏作者也都破产了。他想,人们也许会诚实守信,但大多懒惰,需要激励。

后来他想到,与其一次放出整个游戏,为什么不先放出一部分,让玩家来买剩下的部分呢?没有人这样做过,但也没有理由不成功。Scott制作的游戏也颇适合这种付费模式,因为这些游戏由很多幕故事、或者多个等级组成。先放出十五级的游戏,玩家寄支票,他就送出剩下的三十级。

关键是,你知道吗,当今的游戏开发商花了近五年的时间才明白这样一个道理——纯免费游戏加百分百的内置购买才是最佳的(或许也是唯一的)游戏商业模式。人家id公司的这两个家伙二十七年前就明白了。远方飘来了历史重现的声音

id软件不仅仅贡献了这种革命性的商业模式,把权力之杖交还了程序员,更重要的是,一位天才程序员——John Carmack——就此横空出世,是他发明了PC游戏领域前所未有的新技术。今天听来,这或许耸人听闻、或许老生常谈,但是在Carmack创造出游戏引擎之前,横版游戏视角平滑滚动、墙面纹理贴图、灯光模型、高速3D渲染这些概念,其实是人们闻所未闻的。是他普及了这些概念。

John Carmack

Carmack就是编程界的传说,类似Abrash。这本书描述Carmack之神,老实说,近乎恐怖。他痴迷于机器的极限;每周工作80小时;所谓“放假”就是抱着计算机上旅馆开房一整周——纯粹是为了好玩放松一下。他的产出属于神的级别,但是他也很谦虚地意识到,他站在巨人的肩膀上。

Al(人名)从未在PC上见过横向卷轴游戏,他对Carmack说道,你应该申请专利。

Carmack怒了,如果你再提起任何申请专利的事情,他突兀道,我就不干了。Al原以为Carmack会维护他自己的经济利益,但是实际上这触碰到了Carmack愈发脆弱的神经,一颗年轻气盛的、理想主义的赤诚之心。少有事情能够真正触怒他,可这一次他真的愤怒了,骇客信条早已深深地刻到了他的骨子里。一切的科学、技术、文化、学习、学术本来就是建立在前人的基础之上,而专利却宣称,这个点子是我的点子,你无论如何都不能够拓展它,因为它是我的——这是如此荒谬。专利正深深地伤害着Carmack全部生命的核心——书写代码,解决问题。如果不触犯专利就不能解决问题,如果这个世界变成了这样一个世界,他会极为难过。

本着这样的精神,Carmack常常基于GPL发布旧的引擎,以供其他程序员学习。比如,不要错过Fabien Sanglard的这篇史诗级Doom3代码解析,这款引擎比现在最新的id引擎(即将应用在Rage和Doom 4)仅仅落后一代。

我最喜欢的格言便来自此书的结尾:

Carmack鄙视冠冕堂皇、夸夸其谈,但是非要他说些什么的话,他会说,“信息时代本无极限,障碍尽在人心。如果你打算扬帆起航、开发伟大的新产品,你不必拥有百万资本,你需要的仅仅是披萨和无糖可乐常驻冰箱、廉价PC伴你左右、以及为事业献身的决心。我们在地板上睡过,我们从河水中趟过。”

确实,他们做到了,如同此书所证明。@ID_AA_Carmack@romero两人仍旧是游戏和编程社区的终身成员,影响显赫,鼓舞人心,因为爱,所以常在。

《Doom启世录》的终极启示在于,时至今日,想要成功,你都没有必要像John Carmack那般聪明,John Carmack自己就是最好的证明,当时坐在德州Mesquite某小办公隔间的John,辛苦悲催,在勉强能用的破电脑上,从零开始写代码,每周工作80个小时。而如今,你口袋里装着超级计算机,桌上摆着超级计算机,有大把大把的开源框架、开源库能够帮你干90%的工作,你有Github、维基百科、Stack Overflow,你拥有整个互联网。

你所要做的仅仅是,开始写代码一直写代码

EOF

初识白先勇先生是源于三四年前北大的昆曲课,当时受挚友邀请,意图共赏如此高雅的艺术;可惜如我这般坐不住的男孩自然是对这等慢节奏的戏曲毫无兴趣、甚至是厌恶至极的,因此白先勇讲昆曲给我留下了极为深刻的印象。我至今还清楚得记得当时北大的某阶梯教室座无虚席,但是我却坐在那里百无聊奈,心中反复叨念着,真正属于年轻人的,应该是分秒必争的奋斗、高潮迭起的美剧、节奏欢快的摇滚。当然我也喜欢或舒缓唯美、或忧伤至死的New Age,但昆曲之缓慢、之细腻、之典雅,是我这种粗人极为不待见的:不要指望习惯川菜湘菜的年轻人会迷上过于原始的马赛鱼汤,尽管后者是那么的高雅。事有定期,物有定时,或许,等老到慢下来的时候,我才会去喜欢吧。

再次结缘则是今年春天,那个时候我正在为毕业发愁,心绪苍凉无处排遣,极其迷恋范宗沛的曲子,其中一曲《戏水》出自《范宗沛与孽子》;而《孽子》正是白先勇先生唯一的长篇小说。

既然游学美帝,就不得不提到华人第一代移民。短篇小说集《纽约客》讲述的就是他们的故事。尽管十几年后的今天,白净的手套、丝滑的礼服、夸张的首饰、锃亮的银器早已不再常见,但是即便是今天,在我们读书的学校,学子们仍然是踩着木地板,关门的时候会有好听的吱呀的声音,一尘不染的老钢琴汩汩流淌纯净恬淡的音符,混合着咖啡的芬芳…… 我们似乎依稀还能够看到他们当年的背影,可惜早已物是人非,他们已经垂垂老矣:英雄末路、美人迟暮。而又一代的年轻人,又在同样的大礼堂、同样的角度、抬头欣赏同样的大吊灯映出的、同样的穹顶、同样的精美的花纹……

前不见古人

后不见来者

念天地之悠悠

独怆然而涕下

雄心壮志的年轻人独自在异国开启一段新的生活,偶有闲隙静下来想一想,上面这首诗竟然是如此地贴切。此诚古之人不余欺也。至于《谪仙记》那位孤傲得让人怜爱的公主,死亡或许是她最好的归宿。

上周末,白先勇先生来到华盛顿大学西雅图分校,讲述《父亲与民国: 白崇禧将军身影集》写作的心路历程(点此阅读该书)。我将他的演讲,加上流传在互联网《从台北人到父亲与民国》的公开资料,以及自己的理解,整理而成以下部分。考虑到这些都是白先生的一面之词,以及我个人的解读,难免有失偏颇、或者有所疏漏。

I felt a little under the weather last week, which prevented me from being productive. After a serious consideration over the last month (the first month I undertook a full-time job), I set up a new schedule for myself – get up earlier so that I can have at least four hours in the morning for my own work without any distractions. Hope I can persist with the amazing plan.

At the same time, as I have planned long ago, a new paper-reading project will be launched. Day after day, I find myself now soaked in technical details. It is good for improving my engineering skills, but not so good for seeing the big picture. Moreover, reading papers may be the best way to collect excellent ideas. At least, it is much better than reading newspapers, SNS feeds, and disappointing books (e.g. 淘宝技术这十年 ).

This paper comes from Facebook ( video, paper, slides ), and introduces how the KV store evolves at Facebook in these years.

Months ago, I posted a similar paper review, Dynamo: Amazon’s Highly Available Key-value Store (SOSP’07). Different from Amazon, Facebook built the KV store on the basis of existing open-source memcached (memcached refers to the source code, while memcache refers to the store system). One thing I notice to be in common is that both of them push complexity into the client whenever possible, because a lighter data store is more flexible. Both of them add additional marks along with the cached content for future processing.

This is the third and final part of my series of notes on learning C#.

  1. Essential C# 4.0: Basics
  2. Essential C# 4.0: Intermediate
  3. Essential C# 4.0: Advanced(this post)

In general, C# leaves me an unpleasant impression of redundancy and tyranny. The designers of the language seem to be always mocking “oh my stupid boy, we have to spare no effort to prevent you from making stupid mistakes~” However, this idea of design is good to some extend.

My passion on coding is mostly inspired by the colorful vim on Ubuntu. It is amazing fun. I love it!! So the first app I install on my new Windows workstation is, of course, cygwin. Now I have to use Visual Studio, so the first plugin I install on it is surely vsvim. Moreover, maybe I am not a guy of Eclipse. I can see no beauty and usability in it, although it is much more extensible than Visual Studio. The experience of configuring the build environment of Android and later Hadoop is awful and drives me crazy.

As to the last chapters of this book, I am not interested in muti-processing/multi-threading in Windows OS, which is much slower than *nix OS and thus somewhat boring. Windows was not designed to be a multiprocessing and multi-user platform in the first place; instead, it was originally intended for personal usage. So I just skimmed this chapter. Maybe I will revisit it someday when I have to exhaust the computing power on Windows. May that not happen.

At last, C# is not designed for manipulating pointers and addresses directly. Why do we bother to study it? We have C/C++ already. So I also just skimmed the last two chapters. :D

The following is my notes.

H-Quincy implements the paper Quincy: Fair Scheduling for Distributed Computing Clusters on Hadoop, which improves the mapreduce scheduler by replacing the default queue-based one with a flow-based one. A min cost flow is calculated and updated to assign map tasks among the cluster, according to the size of the data split and the communication overhead in the cluster’s hierarchy.

Install

1
git clone https://github.com/puncsky/H-Quincy.git

You can either build from source code or user the JAR directly.

  • Build from Source Code. Replace your $HADOOP_HOME/src/mapred/org/apache/hadoop/mapred with files in src/. Enter $HADOOP_HOME and build with ant.
  • utilize the JAR directly. Replace your $HADOOP_HOME/hadoop-core-{version}.jar with hadoop-core-1.0.4-SNAPSHOT.jar

The Quincy paper is rather theoretical organized and involves a large number of mathematical details, which reasonably makes itself hard to understand. The following sections explains our implementation.

1. Architecture

Figure 1 displays an outline of our architecture. There exist three kinds of nodes and accordingly three levels of hierarchy in the cluster. Computing nodes are connected via a rack switch, and placed in the same rack. Rack switches are connected via a core switch. Core switches and rack switches do not undertake computing works but can still be presented in the Hadoop system as nodes.

architecture

Figure 1: A sample architecture with simplified preferred lists.

Travel in person is of no importance to me at all.

Surely I have already known that the world is wonderful and full of unexpected surprises. Like many other groups of people, traveling around the world is also one of my childhood dreams. Wandering around leads to stumbling upon. Travel is admittedly the right way to discover “the black swan”, in which an unpredictable slight event can make a significant difference.

However, for an Internet guy like me, of course, Internet is exactly the greatest treasure and playground. Everything I read and work on everyday comes from it – books, papers, SNS news feed, blogs, source code, etc. So, how dare I still shamelessly claim that I would love to travel?

It is the person I travel with that really matters to me. Reading is a personal issue. Thinking is a personal issue. Deep love is also a personal issue. Like the Protoss (a kind of aliens) in Starcraft, it seems that the highest state of human society tends to be highly independent. And even better or worse, loneliness seems to be our final fate. Hardly are there a chance like this for friends to get together and enjoy a journey in life.

Personally, exhausted with my CS profession, I have little friends in the US. My social life in Yale is almost zero. It is a trade-off, so you know my choice under my weak CS background.

Last week, we visited Mt. Rainer and San Juan Islands. I had long admired the breathtaking beauty of the Emerald City, and with a unforgettable view of the space needle accompanied by the Mt. Rainier in the far-away background. Actually, that is one of my postcards serving as bookmarks for my GRE-related materials. Years later, Hmm, doesn’t it taste so nice to have a small dream come true? :D

Thank you my friends, not for the wonderful trip, but for you.

Day 1 Mt. Rainer

It is better to reach the visitor center early for a better parking position. Otherwise, the queue will be meandering down the hill… It sounds funny, but trust me; you won’t like it.

Mt Rainier

The Reflection Lake

This is the second part of my serials of notes on learning C#.

  1. Essential C# 4.0: Basics
  2. Essential C# 4.0: Intermediate (this post)
  3. Essential C# 4.0: Advanced

A productive-focused language like C# has so much syntax sugar that I feel not so comfortable with, because I used to be a C++ programmer and everything in the C++ kingdom appears to be straight forward, although, at the same time, tend to be fallible.

The most serious problem I find about Microsoft’s tools is that up there exist so many auto-generated codes that I cannot know them all in details. I mean, that is good, you can ship as much stuff as possible within limited time. The problem is, it is not good for curious people like me, nor for the beginner. Back in school, when we build something, we build it from scratch. Perhaps, reinvent the wheel is the best way to learn the wheel. IEDs such as Visual Studio and Eclipse make people so lazy and forget to remember and to think.

Consequently, in my spare time, I would do write every code with VIM.

The following is my notes from Chapter 9 through Chapter 13.

我是电子设备阅读控,曾经使用过Kindle 3, Kindle DXG, Meizu 1, Motorola Milestone 1, Macbook Pro, AOC USB Portable Monitor,文曲星 等等一系列不同尺寸的设备阅读各色书籍。但是迄今为止,还从未有一款能够像iPad mini这般赏心悦目。为什么?因为我也同几乎所有人一样,都喜欢控制的感觉,都喜欢色彩丰富的体验;而iPad mini正是如此的流畅(responsive),小巧,绚丽。流畅之处在于,轻轻一划便可做笔记、摘录、翻页、查词典;小巧之处在于,在保证舒适阅读的前提,尽可能地缩小尺寸,你可以在任何地方享受阅读的乐趣。

至于色彩,不要开玩笑LCD屏幕伤眼睛了,盯着过于明亮或者过于晦暗的事物过久都会伤眼睛;而绝大多数人可以用电脑屏幕目不转睛地看一整天视频,却抱怨不过几小时的阅读伤眼睛……真滑稽。

iPad不适合严肃阅读?阅读行为从来就和阅读手段没有直接的关系。认为平板游戏让人分心的人们或许从未体验过电子游戏的真正魅力。当然,对于论文这种需要前后高频率反复对照、有大量图表公式、需要用不同尺寸颜色的笔来即时标注的读物,尤其当这篇论文是双栏排版(在计算机各大会议中最为流行)的时候,打印机仍旧是最佳选择。

据称,人们绝大多数使用的应用只有七个,所以在此我强烈推荐我最喜欢的七个应用:

1. Duokan (Free)

书籍购买与阅读的一体化解决方案,你所想象得到的阅读需求它几乎都能够满足:买正版书、讨论、整理、摘录、笔记、阅读数据统计等等一系列贴心的设计。数据排版精美、价格合理,整个应用赏心悦目。最重要的是,多看书城支持国际行用卡支付,对于我们这些海外游子而言,着实是一处令人热泪盈眶的存在。唯一可惜的是,阅读器没有网页浏览器的版本,尽管它支持iOS/Android/Kindle等移动设备。

2. GoodReader (Free/$4.99)

既然阅读,就必然需要对任何文本格式做任何可能的处理,GoodReader似乎支持绝大部分的文本格式。而对我而言,PDF足矣。此前还从未有任何体验会让我惊呼:这货在PDF上做标注如有神助!

3. Kindle (Free)

某些资源在互联网上死也搜不到开放的版本,这时候只能求助于亚马逊了;尽管设计体验一般,书籍略贵,但是全平台支持,绝对够用。

4. 豆瓣阅读 HD (Free)

与豆瓣无缝衔接,与Duokan(多看)书城互为补充。有比较强大的网页版本的阅读器,尽管iOS的应用暂时不好用,不支持笔记等操作。不支持国际信用卡支付。

5. 读知乎 (Free)

尝试了解“我不知道自己不知道什么事情”对我来说很重要,而知乎能够帮助我发现更大的世界。

6. TeamViewer (Free)

极为方便的远程桌面应用,无论是自己在多台电脑间交互、还是远程协助他人,这个都是不二之选。

7. StumbleUpon (Free)

原理同5,同样是为了尝试了解“我不知道自己不知道什么事情”。人生往往需要不期而遇的惊喜!

最后,我已经放弃了阅读新闻的习惯:几乎所有人都知道的新闻99%对我是没有价值的,不看也罢。至于Google Reader的替代品,Feedly原来做得极差,最新版本的好了许多,Digg Reader和the Old Reader都不错.

EOF