2012年5月11日星期五

《干儿祭》


注:这是自己以前写的一些东西,post出来,在这个新博客上与大家分享。

干儿祭

难过的时候我就用笔记录下我的感受。

昨天来了几个朋友,大家玩的很开心,而我就是感觉提不起精神来,总觉得是有什么事情。这个感觉被一个电话验证了:我在老家的干儿子,娃子,不幸去世了。当我听到这个消息,久久不能喘息过来,我太太难过地安慰我:这,是他的命。

也许吧。

娃子整整比我小十岁,在家中排行第二。娃子的父亲和我的父亲年纪相仿,所以我的童年有很多快乐是和娃子的父亲联系在一起的。依稀记得我的第一把可以用火柴打响的小手枪就是娃子的父亲做给我的。娃子自出生起,我就非常喜欢他。他开口说话非常晚,总是憨憨的,透着一股说不出的朴实。在我上初中,也就是娃子四岁的时候,两家决定把娃子作为我的干儿子。

每到春节,我和我的母亲就要忙碌起来。把家中老一辈留下来的铜钱,用几条墨汁染色的细线串起来,形成一条长长的项链,末端拴在一起,并牢牢的结住一个红色的布条,称之为“锁子”。通常大年初六,我和娘就在家等着娃子和他的父母的到来。远远的就能听到娃子憨憨的叫着:干爹。走近来,双膝跪倒,向我的母亲和我问安。然后我们就把这个长长的“锁子”挂在他的脖子上,祝福他长命百岁。到了娃子十二岁的时候,按照通俗,我们要举行“开锁”仪式。娃子把他每年得到的“锁子”带到我家。我母亲先是烧香祈愿,用很多纸钱烧掉“锁子”的穿线。随着一缕缕青烟升起,“锁子”上的铜钱纷纷落下。我和娃子赶快地收起来,放在两个盒子里面,一人一份。这个就是我们父子共同的生命祈福盒,祝福我们长命百岁。然而这个盒子终究没有留得住他年轻的生命。

在我上北京求学后,娃子经常来看我的父母。我父母也非常疼爱他。每次回来,娃子都要跑过来看我,憨憨的问我:干爹,北京你一个人在外面,是不是很苦。在他的头脑中,和父母在一起,才是最不苦,最快乐的。然而事实倒非他所愿。他早早的辍学回家帮助父母种地了。他的父亲是一个好赌的人,每次过年赌风盛的时候,他和他的母亲都坐立不安,天天盯住他的父亲,唯恐出事。日子一年一年的过去了,他的父亲又不幸得了中风,失去了劳动力,整个家庭的重担落在了小我十岁的干儿子身上。生计的落魄,在婚姻的道路上娃子也是走的异常艰辛。他的妻子是我们本家的一个侄女,为人很是泼辣。当时我母亲非常反对这门婚事,我也不太认可。娃子是一个很高大很有魅力的男孩子,而且脾气非常好,也许当时娃子可能被女孩的甜言蜜语所吸引,双方也就没有办法,只好办理了这桩婚事。然而后面的不幸接踵而来,先是婆妻不合,然后和娃子闪婚闪离,最后还是复婚。这中间能够听到的只是娃子憨憨的说:听俺娘的吧。

我太太,也就是娃子的干娘,仅仅见过娃子一次,就非常的认可这个干儿子了。娃子忠厚与朴实的性格算是我太太最认可的农村人性格。当时是我的新婚,娃子依然憨憨的对着我太太讲:干娘,美国是不是很苦,你要好好照顾我干爹。写到此处,我已经情不能自己。

如果有天堂的话,我希望天堂的路已经为他打开,天堂里已经多了一张憨憨的脸庞,剩下的就是现实中的、为生活之重而奔波的人。我数次幻想在头脑中把他拉出来,期望在大城市找一个他可以生存的空间,然而竟已经成为了不可能。更加伤心的是娃子婚后数年没有子嗣,让我这做长辈的更加多了一份无法承受的绝望。

这也许就是命运吧。


《门和窗》

注:这是自己以前写的一些东东,post出来,在这个新博客上与大家分享。

门和窗

在一个无聊的傍晚,等候同事闲来无事,我试图仿真实训一句名言的真谛。这句名言是初中课本伏契克同志《绞刑架下的报告二六七号牢房》中的一句:“从门到窗是七步,从窗到门是七步”,门当然是监狱牢房的门。我当时面对的环境也是一扇窗,一扇门,然而我的门是敞开的门。我试着从门口的边缘慢慢的踱过去,到窗口,十三步半;从窗口又慢慢的踱回来,十二步。如此反复仿真,很难逼近伏契克同志的理想实训状态,也就是往返的步调、步幅、步数的一致。我慢慢的思考着原因:从门口到窗,面对的是一堵墙,在临近墙时,我不自觉的放慢了脚步。从窗到门,面对的是一个敞开的门,在临近门时,我又不自觉的加大了脚步,为了一步到位;难道是我的眼睛蒙蔽了我自己?我试图闭上眼睛,再次度量,然而,我的心里面依然有墙的影子和门的开阔。正在这时,同事走了过来。我随便问:你知道我从门口到窗口的步数是多少吗?对方马上就努力的迈着大步试图量出这个数目。我当时立刻明白了问题所在:我们都被我们自己的心蒙蔽了自己。

同事心中对我有个默认的概念,就是人高所以步子要很大,所以要迈着大步去量。我自己在度量时,面对墙壁与面对空旷的门,完全是两个不同的心态。我立刻释然了,试着以一种黄老之术的无为而治的心态,悠闲地从门口走向窗口,从窗口走向门口,十三步!我想:在同一个事物面前,我们每天都需要反问自己:是我的眼睛蒙蔽了我的心,还是我的心蒙蔽了我的眼睛?你今天被蒙蔽了吗?

《Dad, I am your son》


注:这是自己以前写的一点东西,post出来, 与大家分享。


《Dad, I am your son》

在回家之前,和一个朋友逛店吃饭,正好碰到我一本期待已久的Dan Brown的书:《Lost Symbol》。熟悉《Davinci Code:达芬奇密码》的人应该不陌生Dan BrownWorldwide #1 novel bestseller)。《Lost Symbol》一如既往地传承了Dan Brown的特点,在一系列的符号秘密解读中,把读者慢慢带入了一个他想阐述的人性混沌之中。

Robert Langdon是故事的主人公,一个电话突然把他涉入到一个叫FreeMason神秘组织的漩涡中。Free Mason组织的大主教Peter,被他同级别(33 Degree)的兄弟(brotherMal绑架了。Mal唯一的目的是希望PeterRobert帮他破解FreeMason组织的最大秘密:一个包含了人类至高无上智慧与权利的秘密。Peter万万没有想到,绑架他的竟是是他天天信任、日日呵护的Mal

伴随着FreeMason组织充满了symbol的秘密一步步被RobertPeter的妹妹Catherine破解,Peter终于认出了这个天天make up掩饰身份的Mal,居然有着第二重身份:杀手!他就是有一天突然闯入Peter的家园,为了夺取这个秘密,而杀害他母亲后逃脱的凶手。而令人悲愤的是,Mal之所以知道Free Mason的秘密,是Peter的亲生儿子告诉他。

故事在Peter与他儿子之间的恩怨深入了下去。儿子是一个很叛逆、在Soloman家族的强大背景下成长起来的teenager。在Peter的苦苦教育与规劝下,儿子轻易的放弃了Peter希望他继承的FreeMason组织的智慧,毅然选择了让Peter所鄙视的Soloman家族的财产,带着对Peter的愤怒离开了Peter。然而财产带来的确实杀身之祸,一次与drug dealer的交易,儿子落入了监狱。

Peter的妻子苦苦哀求,希望Peter把儿子从监狱中搭救出来,然而Peter没有这样做,他告诉狱卒长:希望儿子在监狱好好反省,通过磨练,认识到只有FreeMason才是他唯一的归宿。不幸却发生了,监狱里面一个人把儿子残暴的打死,尸体令人发指的模糊难辨。该凶犯同时盗窃了儿子的所有财富,出逃至今毫无音讯。

Peter在家庭面前,痛苦挣扎,儿子的惨死,妻子的愤怒离去,使得他紧紧剩下了母亲与妹妹Catherine。然而突然的一天,一个杀手来到了他的家园,告诉Peter,是他听到了Peter与狱卒长的谈话,为了得到Freemason的秘密,在监狱杀害了他的儿子。面对儿子的杀害凶手,Peter奋起反抗,然而凶手又残暴的在Peter家中杀害了母亲,夺走了他的第二个至爱。

现在,被绑架的Peter,面对这个毁容混入FreeMasonbrother Mal,儿子与母亲的惨死、唯一的亲人妹妹也被他绑架生命危在旦夕,Peter心中充满了愤怒。更加令人窒息的是, FreeMason的多个大主教是美国政府的高官,包括美国总统。FreeMason令人恐怖的入职仪式,被Mal拍成了录像,威胁要放到网上。

最后的时刻,决战开始了。FreeMason的秘密通过Robert的努力,终于被揭开了。这个秘密就是一个lost symbol,通过一个神圣的方式刻在肉体上,最后肉体的sacrifice(灵魂通过死亡脱离肉体),实现无限至高的权利。

这时,Mal轻轻的为Peter松绑,把一把古老的匕首交到Peter手里,轻轻的说道:Peter,来吧,把我杀死!让我sacrifice来实现FreeMason埋藏已久的秘密!Peter满腔的怒火冲了出来,闪亮的匕首高高举起,寒光透漏着悲愤、绝望、痛苦、挣扎、反思、儿子、母亲、妹妹、兄弟:我要为我儿子、母亲、妹妹、兄弟报仇!然而Mal淡淡地告诉Peter:是你抛弃了你的儿子,你有机会把他搭救出来的,但是你把他抛弃在了监狱。Peter内心的深深歉疚一下子激发了出来。高高举起的匕首,在寒冷的夜色中,迸发出了命运的呐喊,愤怒的向Mal刺去。然而,Mal在灵魂即将进入所谓的FreeMason的最高境界的临界点时,面带微笑轻轻的说了一句:DAD I am your son!,然后慢慢的倒了下去……

Mal正是peter的儿子,他当时用钱买通了狱卒长,用一具假的尸体骗过了所有人,逃脱出来,满怀着对peter的仇恨,毁容,开始了他的复仇之路,震撼的悲剧由此开始了……

读完之后,久久不能掩卷。这个故事,是什么地方拨动了我的心!

人性的丑恶?不!我已经看到了太多! 人性的挣扎?不!我已经聆听了许久! 是什么?

是那令人窒息的、对命运抗拒的挣扎,在命运决战面前,所抛出的脆弱的轰然倒下!

《反思RTL工程师的培养之路》

2012年的5月4日,我受邀去了一趟UIUC(university of Illinois at Urbana Champaign),并会见了电子与计算机工程系(Electrical and Computer Engineering简称 ECE)主管研究生、本科生的领导以及多个教授与行政人员。

众所周知,ECE@UIUC在美国电子与计算机工程的排名在2-4名左右,一起竞争的学校也就三个:Stanford,Berkeley和MIT。该系名人辈出,譬如,唯一一个两次获得诺贝尔物理奖的 John Barteen(发明了晶体管和超导理论),Jack Killby (平面集成电路),目前主管美国205M USD、面向下一代computer architecture研究的 Wen-Mei Hwu教授,信息领域的牛人 Thomas Huang教授等等。站在ECE的主楼门口,看着名人堂里的画像,自己倍感羞愧,已经奔向40岁的人,竟一事无成,四处漂泊流浪,形同乞丐…..

系里面主管实验室的一个manager叫Dan Mast,带领我参观了所有的ECE lab。其中一个实验室引起了我的注意。这个实验室用来给四年级本科生教学ECE385,主题内容是RTL design。实验室采用了Altera的QII FPGA和VHDL。Dan Mast还告诉我:通常他们会把不同厂商的类似产品放到同一个实验室。譬如,他们把Tek和Agilent设计的逻辑分析仪随机的放在不同的实验平台上,这样实验课上,有的学生会用Tek的仪器,有的学生会用Agilent的仪器。然而遗憾的是:FPGA他们仅仅采用了Altera。这门课的目的和我们国内的培训机构真是很像:就是希望学生在走出校门之前,能够懂得一些基本的硬件设计知识,能够较好的应对RTL工程师面试人员的提问,为日后做一名合格的硬件工程师做准备。

我和ECE的几位老师、行政人员谈论了几个小时,收获颇丰。返回家的路程上,在芝加哥转机,由于天下暴雨,不幸在机场滞留了几个小时。这次旅行让我思考了很多的问题。由于和Xilinx XUP,Digilent,国内的一些培训机构打过很多的交道,这些公司都希望基于Xilinx的FPGA平台培养FPGA或者RTL人才,但是在参观了ECE@UIUC之后,我有了一些困惑的问题:

(1)ECE@UIUC,全美国最为出色的电子工程师培养摇篮,可是Xilinx却在这个殿堂里面没有声音,倒是非常令我吃惊。这令我反思了两个问题:第一,在学校和企业里面,Altera和Xilinx,究竟谁的占有率高?具体数据没有,但是我知道去年Altera被评为了增长最快个一个Fabless公司,相信市场对Xilinx是不利的,从股票市场上也可以看到一些端倪,此外美国著名网站GlassDoor对xilinx的新任CEO带来的Xilinx环境变化,也有较多负面信息。第二,无论是Altera还是Xilinx,他们倡导的University Program是否对该公司的产品销售有重要贡献?如果有贡献,这些program的代价有多少?一个显而易见的问题是:公司的hiring manager 基本上不关心你究竟是懂得Verilog和Xilinx,还是懂得VHDL和Altera的编程环境。因为只要你懂得一种,从一门语言转换到另外一门语言,从一种工具转到另外一种工具,是非常容易的事情。So, No Bodoy Care! 我想对这些基本问题的研究,应该是University Program的一个重要内容。

(2)这个世界真小,你所碰到的难题,地球的另外一端也在上演着同样的问题。无论是Xilinx XUP,还是Digilent,都想通过提供教育服务,解决本科生学习RTL设计或者学习FPGA的困难,使得他们毕业之后能够成为一个初级的RTL、FPGA工程师,但是思路很好,现实很困难。美国的ECE @UIUC也面临了同样的困难。ECE 385 也想通过强化的、project式的训练,强化学生的RTLdesign能力,他们提供了一系列的项目供学生选择,譬如一些类似Digilent超级玛丽、吉他英雄的case,但是学生很痛苦,培养效果不理想。这就促使我们思考:要想培养一个合格的RTL初级工程师,我们应该选择哪个level的学生作为培养对象。国内的某些培训公司招聘一些大专、二本、三本、一本的一些本科生进行培养,希望成为RTl工程师的摇篮,我想这个想法挺好,但是不现实。在美国,RTL工程师或者招聘刚刚毕业的硕士生,或者是5-10年工作经验的高级工程师,本科生基本没戏。为什么这样?原因也很简单,RTL设计本身很复杂,本科生的课程对RTL的很多设计理论都没有touch到,譬如如何设计低功耗的RTL,如果解决on chip variation的问题,如何在sub65nm的设计中尽量减轻后端流程的设计难度与收敛时间,等等,这些topic我觉得应该在硕士阶段进行解决,对于四年的本科生来讲,还有一个台阶需要迈上去。一名硕士生如果完成了理论课程,写过一些RTL,他、她能否成功通过面试成为一名初级的RTL工程师呢?我觉得:很难。还需要进一步的加工,也就是培训。

(3)什么样的培训才可以让硕士毕业生顺利进入RTL 团队呢?我觉得需要两步走:第一步,可以采用一些XUP或者Digilen提供的一些小案例,这些小案例主要是提供硕士生对verilog代码读写能力、编程调试环境、仿真综合验证有个熟练的操作。第二步,是关键的一步,也是目前市场上最为缺乏的:有10年左右经验的人,针对几个难点,对你进行有效的调教与点播。这个世界什么都是要钱的,谁来调教呢?如何解决。我一直在思考这个问题。从UIUC返回之后,我去youtube,facebook,linkedin,等等网站检索,希望能够找到一些有用的内容,但是没有。那我就来create这些内容。

2012年5月10日星期四

《嵌入式教育的忧虑》


嵌入式系统设计是一个很热门的工作领域,它深入到了我们生活的方方面面,基本上你所见到的绝大部分电子系统都是一个简单或者复杂的嵌入式系统,小到你家里面的微波炉,大到一个波音787飞机,都需要嵌入式系统设计工程师、架构师的工作。从这一点看,嵌入式系统设计又是一个很难的问题,因为它要求设计者尤其是架构师对一个系统的软硬件都有一个较为深入的理解。面对这种市场的需求,越来越多的学校、企业界都加大了对嵌入式人才的培训,感觉热火朝天。在我们思考如何进行嵌入式培训的时候,美国最近在嵌入式的教育问题上也进行了一场激烈的辩论,主要观点是:
(1)Code size matters: 实际的嵌入式软件工程都是非常巨大的,尤其当硬件系统越发复杂以后。然而在嵌入式编程的教育中,老师通常面临的是1-2个学期,在这么短的时间内是无法让一个或者几个学生实现一个复杂嵌入式系统的软件工程。通常学校或者培训机构的做法是:找几个简单的、有代表性的问题让学生实现。然而这种做法是不充分的、甚至是误导的。完成一个可以工作的小程序与实现一个复杂的嵌入式软件工程是完全不同的事情,简单案例无法替代真实的复杂情况。一些观点认为,正确的做法:可以尝试让学生touch一个复杂的嵌入式软件工程,从宏观上理解很多重要的内容思想,而细节的内容可以尝试放一放。没有对嵌入式复杂度宏观的把握,很难成为一个合格的嵌入式工程师。
(2)Computer Science或者Computer Engineering专业缺乏对嵌入式的工程性训练:一个复杂的软件系统通常会基于不同的平台、硬件进行周期性的bug修订、版本release等。这个过程是一个软件团队的系统性工作:大家利用版本控制软件系统工作,每个软件模块的修订都尽量减少对其他的影响,同时要保证整体的质量。然而这些非常工程性的问题,在一个仅仅重视学术性的学校很难得到有效的训练保证。虽然学校重视team project,多个学生可以合作一个项目,然而在学生如何合理分配项目的工作量、有效设置milestone等等方面,老师通常是很难做到准确的监管,这就造成很多项目常常是以一个学生为主力完成的。
(3)数学问题:越来越多的学校把传统的数学课程让位于新科技、新技术、新编程语言等。然而,大家都知道,数学是科学的语言(language of science),数学能力的缺失使得计算机系的学生在处理软件工程,特别是嵌入式软件工程时遇到更多的麻烦。譬如很多计算机系仅仅教授离散数学、概率论等,对于连续数学(譬如微积分、线性系统)等涉及很浅。我有一个新加坡的同学,从新加坡的computer science系转到我们学校的computer engineering系。我们系要求学习electronic circuit,里面用到微积分,这个时候该学生就很痛苦,而不动electronic circuit,如何做一个合格的嵌入式工程师呢?此外,嵌入式软件一个重要的问题就是软件的security问题。而security对数学的要求比较高,这个时候计算机系的同学在处理软件安全性问题上就显得力不从心。
(4)以Job Market为导向的教育思路:在美国越来越多的学校把编程语言从传统的C、C++转向了Java,因为懂得Java能够更好的找到工作。让我们引用美国学者与工业界同仁争论的一个观点“adopting Java to replace previous languages used in introductory programming courses – such as Pascal, Ada, C or C++ -- was a step backward pedagogically. Many universities went to Java because ‘that’s where the jobs are,’ but ironically may have produced a generation of programmers with over-specific but superficial skills who are now losing jobs to overseas competition with broader and deeper talents”。观点的基础是:如果你不懂的汇编语言,不懂得C语言,很难从较低的层面对系统的硬件与软件有一个深刻的理解,更谈不上编写出有效率的嵌入式程序,虽然Java给你带来了很多OOP的优势。
(5)嵌入式系统设计究竟是在computer science系进行教育,还是在computer engineering系进行教育。这个问题真是仁者见仁,智者见智。本身嵌入式设计就是一个软硬系统的设计问题。有一点是肯定的,无论在哪个系进行教育,基本的核心课程是必须要有的,譬如:C/C++,data structure,algorithm,computer architecture,logic design等等。
既然美国学术界和工业界在深度关注嵌入式的教育问题、在探讨和总结以往嵌入式教育的得失,我们中国的学者、教育工作者、培训力量也要反思这些问题,尽管这些问题的解决方案很棘手,但是如果不思考,不深度挖掘我们所面临的中国嵌入式劳工市场,不透析中国学校的教育现状,而仅仅是跟风美国学校或者公司推出的方案,这些方案无论是多么的fancy,多么的利用高科技(基于32-bit或者64-bit MCU、基于V5或者Q5的FPGA、基于ARM15或者其他等等),也许教育的结果都是徒劳的,因为嵌入式远远比你所解释的、训练的更为复杂。你的学生是否ready了?你的国家的教育infrastructure是否ready了?还是好好基于现状,总结经验,提出有效的、有针对性的教育培训思路。
在嵌入式教育问题的讨论上,大家可以高度关注ACM TECS (Transactions in Embedded Computing Systems) 和 ACM WESE (Workshop on Embedded System Education)。如果您有更好的意见,可以在网上留言。