Dawei Huang | Pieces

Assemble your Jigsaw.

和IOS6聊聊天

20120921-213527.jpg

首先,不要误会。我还没有空虚到那种程度,像生活大爆炸的 Rajesh 一样需要和 Siri 聊天来解闷。不过,新发布的 IOS 6 的语音输入,特别是支持了中文交互的 Siri,确实是很让人很惊喜的功能。

根据我目前的测试,Siri 发送信息到 Facebook,Twitter,短信,电子邮件,都没有问题。向新浪微博的发布功能有待加强。当然,目前这些功能需要以依赖网络来实现。这也许正是这个功能强大的基础——云端的语音处理。

于是,今天在上夜班的路上,我就一边走一边和手机聊天,写下了这些文字,来简单介绍一下我对语音输入的看法。这篇文字是我完全在手机上用语音输入的。当然输入之后,人共进行了错误的修改(包括所有的半角逗号转化为全角,以及在英文两侧添加空格)。

回到刚才走的路上,我一边走,一边在和手机说话。当然,这里所说的说话,并不是和 Siri 进行交互,我在用听写功能在随便记笔记。经过一路的使用,我发现:其实这个语音识别,对大段的文字的效率不是很好,比较适合两三句(以逗号为单位)为单位进行记录。除了语音识别的输入长度有限制之外(时间限制),另外的原因,可能是、我正在路上周围的噪音还是比较严重。好在路上没有什么行人,主要是汽车驶过的声音。

语音输入,对于懒人是个福音。由于 iPhone 的键盘被很多人诟病,这个结论仍然成立。另外的原因是出于安全,特别是在交通比较繁忙的路上,由于不必一直看着屏幕,用语音输入可以提高安全性。不用担心,一边走一边用手敲键盘,被车撞倒(相比国内,海外的车开得飞快)。

也许有人认为,在现在跨平台的写作软件很多,写作不一定非要在手机上。平时很多时候都在电脑上完成。自然,在一个大屏幕上面输入,舒适度是更好的。但是有以下几个问题。

第一个问题是,一些工作,还是需要在空闲时间来做,比如下班路上,下午茶的时间,吃饭前后,等等。而一些琐碎的工作,利用空闲的时间来完成,是很有效地利用零散时间的方法,比如发微博,写日记,等等。

另外一个问题就是,很多时候,灵感出现是随时随地的。比如,我在办公室的时候,思路常常集中在电脑上要处理的工作。灵光一现的时候,常常是发生在吃饭的时候,散步时候,在公交车上,等等。而这些时候,常常是手持设备发挥作用的重要时候。而传统的手持设备,不是一个快速输入工具(比如 iPhone 令人诟病的键盘)。相比较电脑键盘,我认为手机键盘完全不是一个有效的输入工具(只用拇指或食指输入,实在可笑)。相比较而言,有效的语音输入会是非常优雅、快速、而准确的输入工具(个人认为,OSX 系统的语音输入,已经超过了其内置的中文输入法)。当然,这也取决于开发商是否开发了一个有效的工具,它的准确率如何。

在大学的时候,我曾经使用过微软中国研究院开发的语音输入法。这种体验,简直可以用痛苦来形容。这次苹果显然交上了一个让人满意的答卷。

我对语音输入,主要有以下几点要求:第一,要有足够的连贯性,也就是用户不用考虑软件的输入速度完全可以依靠自己的思路直接进行叙述,类似于演讲的过程(自然,连珠炮似的语速是不现实的)。第二,用户可以依照自己的习惯使用,而不需要对软件来进行过多的适应(当年使用的微软中文语音输入法,其中一个重要的步骤,就是要先朗读一段文字,对你的语音来进行采样,让机器来学习你的使用习惯。我记得很清楚,一段文字是李开复的一段演讲。现在想想,这个设置实在有点洗脑的嫌疑)。其中包含的个人因素包括语速,发音,停顿,标点,等等。第三条,当然也是最重要的,就是准确度要高,对上下文的识别能力要比较强。第四,有足够的定制功能。一些特殊字符,比如“ @ ”,中文英文混排可以识别的;或者用户可以自行设置的。方便一些特殊领域的人员语音输入。而不只是象我,仅仅在这里写写日记。

回到发微博这件事儿,我发现语音确实不是一个发 twitter 的好方法。因为很多时候, twitter 涉及到和网友进行交互,而 Siri 是不能完成这些工作的,很简单的“ @ ”这个功能都不能实现。只适合写感受这种纯文字的推,不能添加图片,链接,视频,等等。当然,也可以通过语音来输入文字,其他的附加功能,通过键盘来实现。但通过语音来实现大部分的完整的功能,是显而易见的发展方向。

如果只是写文章,我在路上写下这篇日记——感觉很舒服。形象地说,就是一边走,一边说,说到一段完成,就停下来看看输入是否正确。总体上来说,听写的功能的准确率较高。记得以前曾经有人说过,写作是最重要的就是,让自己写字的速度能跟上自己思考的速度。我认为,通过键盘来进行打字,并不是一个高效率的输入方法。除了输入速度的问题,还要经常考虑到错别字的修正,调整格式,等等(当然,这与个人习惯有关)。写作的思路经常会被一些因素干扰,而不能集中精神进行思考。而听写完全克服了这些问题,其实这个和用录音笔来进行记录非常相似。也类似于演讲(当然,你可以通过这个功能来锻炼自己演讲的能力,即口语和书面语的统一)。听写功能是否会成为作家主要的写作方式呢,我相信她会有很好的前景。

其实之前在路上走,尤其是上下班的路上,常常无所事事。有时候我会听歌。而更多的时候,耳朵里没有塞的什么东西的时候,我在神游,但这些思考的问题并不能及时的转化成文字记录下来。这是用录音笔进行记录,是一个很好的方法。但语音的问题在于,你需要回去之后,再听一遍,整理成文字,而浪费一定时间。有效的语音识别软件可以节省这人工录入的过程。

听写功能还是需要联网实现。可以看出这是一个云计算的服务。和传统的单机的语音识别软件不同(比如说微软开发的语音识别方法)。之前苹果有开发过类似的语音控制程序,例如 Chess,现在依然保留在山狮系统中(升级了新系统的朋友可以去电脑上体验一下)。这些程序,都不是依靠云端强大的服务器进行语音识别,它们功能有限的,精确度受机器硬件的影响,自我学习能力也不强(显然,对用户采样量有限)。因此用户的体验不光滑。在这个用户体验为王的时代,平滑度很重要。至少目前我对听写的平滑度很满意。

想象一下,一边散步,一边去写这么一段的文字,确实是有趣的体验。

此外另外一个重要的方面,就是同时思考和组织语言,有利于提高学习效率和培养思维习惯。同时也锻炼演讲的能力。这些对于学生来说实用的技能,恰恰可以通过听写来进行练习。

我最近也在听一些 Podcast ,发现牛人们出口成章的本领令人羡慕的。我也相信,他们并没有用很多的时间去准备稿子。很多时候,制作一个小时长度的 Podcast ,是一个完全凭兴趣的活动,也不盈利,投资成本应该和我一路自言自语差不多吧。从练习演讲的角度,录制 Podcast 和用听功能写文章,其实是殊途同归的。

也许以后,我会用英语听写,也会是练口语的好方式吧。

写了这么多,我发现自己一直在用意识流的方式在喃喃自语。那么,今天先写到这里吧。

发现的问题:

标点符号还是英文的半角而不是中文的全角。这个何在不同的说法下语音输入的语言自动变化的功能不太符合显然是苹果忽略了这个细节。也许在未来的语音输入设置中,可以手工设置输入标点符号的全角和我半角。

对专业词汇的输入需要加强。比如上文的全角和半角,有一处识别错误了,另外一处识别正确了,课间对上下文的理解能力还有待加强。在后期的手工校对还是需要一定工作量。不过,这个功能可以通过在口述的时候增加一些逗号来进行改进;或者等待苹果的服务器自己进行学习。

说了这么多,我觉得有 IOS 的朋友可以赶紧去试一试了,相信你会惊喜。

Instagram: Finding you is easy

I use instagram for almost one year and I met a smart lady who has exactly the same taste of pictures to mine and, of course, she’s pretty. After beginning chat on kik for a few weeks, one day, I suggested a dinning together, talking and maybe taking some pictures after meal. I knew a pretty good restaurant with great view of the park near the Olympic center. So I suggested we met there at six.
“Have you taken a lot of good pictures on forest there?” She asked.
“Yeah. I remember you marked LIKE in some of them, also some comments.”
“So this is the place. OK~ See u at 6 pm.”
“You been there before? Let me tell you the route ”, I said.
“Never mind. I can tell from your tag of location in ur pictures”. She replied.
Then she added: “I can ever find your home by your location tag, haha”.
“…”

OK. I admit the story above is just my imagination of finding a date by the hottest picture social network, instagram. When we took pictures, we used to add location tag to our pictures and in such way, we organized them. People truly need the feeling of well organized. But in the same time, these pictures are describing our life, everyday life if your are a diligent photographer. In this way, you are on a show of the track of your daily life to all the followers at instagram.

Tracking you is pretty easy if my description on the location tag fits you. For example (see the following pictures), I work at KACST and I usually upload pictures after work time through the wifi of the lab. Thus most of the pictures are tag as KACST. My followers can easily find my work place by tapping the tag above my picture. And this will automatically take him/her to a page with google map installed on every iPhone, showing all the picture tagged around this. Tapping on the red pin in the map will take him/her to the Map app. Then zooming in/out , saving the bookmark or even getting a route to there is just in the palm of his/her hand.
This is just my work place or my temporal apartment. What will happened if you take a picture at home? What will happened if you are pretty and famous. I can ensure you that I will definitely tracking you down since you have a pretty face and so much beautiful pictures I preferred. Sometimes, the technology is so convenient that we can easily forget the threaten hidden in our careless tagging actions.

work place

All the photos posted here

open tag of the place where you posted it in Maps

fake location tag

So how to solve the problem? Just stop tagging your pictures’ location. “It’s that easy.” You also can take back control by creating fake tag by just typing the name of location on the address input box (DO NOT search it!) and the tag will just be connected to the place you posted the picture. 3G, wifi at work place or coffee house is good for posting photos. If you can just post photos at home, just stop tagging its location.

But if you don’t mind people know your location and neither have privacy control to your instagram account, just feel free to post your photos. Cause if you don’t mind, I can have fun finding you.

Reformat perl sub into *.pm file can save a lot of time in script maintenance

There were several days after I post the complain about the restriction from Chinese government on wordpress. Since my friends in my motherland can’t see my post anymore, then there is not need to write in Chinese which I really prefer to use writing this.
But trying to write on tech tip in English is new and interesting to me. Despite how terrible of my English in this piece, I just want try and have fun. Maybe I can make some progress in English writing.

This post is for those people on bioinformatics or genomics, using perl but without a lot of programming experience. If you are expert on perl programming, just give me some advice. Learning is of much fun!

Then let’s get started.

Sub is a good way to applied object-oriented programming in perl. Since some specific functions haven’t provided by any perl modules, writing a script of your own seems to be the only way. If your want to use it later in other script, your can copy and paste, or just write it in the sub format, then copy and pasta. The advantage of object-oriented programming will not be restated here.

But the problem came to me when I had the collection of a lot of sub, especially when some update was needed in some of my sub. In one case, four of my sub were required in three script or more, I needed to rewrite the original one, then replaced all the predecessors. To make thing even worse, I could’t remember all the sub carrying scripts’ location because some of them were scattered in project folder in the server!

I realized that I have to make change to my way of programming. So I took my time to learn a better way to organized my sub collection, the bioperl way. It turned out to cost me just 10 minutes. People do bioinformatics must know the good of bioperl. The installation and application in our own scripts are pretty easy. Just like other perl modules, the package is placed at one folder in your computer or server. We only need to tell perl the path of the function file we want to use by writing:

use lib "/path";
use bio::seqIO;

then use the function.

Updating bioperl is easy. You update the files, then the function of your scripts is update. This way can be applied to my sub collection.

So the solution is to reformat my sub into *.pm file. Here is an example:

package RevComp;
use strict;
use warnings;
require Exporter;
our @ISA = qw(Exporter);
our @EXPORT = qw(RevComp);
sub RevComp{
my ($string)=@_;
$string=~tr/ACGTUMRWSYKVHBacgtumrwsykvhb/TGCAAKYWSRMBDVtgcaakywsrmbdv/;
$string=reverse $string;
return $string;
}
1;
__END__

Its function is to change one sequence into its reverse complementary sequence. The code above must be in one file named RevComp.pm so that we can use:

use RevComp;

to use this sub and then use the following line.

my $reverse_complementary_seq = RevComp $originalSeq;

Here are some detail of the *.pm format:

#1.You must put the follow lines in the file subname.pm.
package subname;
#2.subname must be same in all the lines.
use strict;
use warnings;
require Exporter;
#3.Exporter is the basic module for input and output.
#4.Input and output is set by the following 2 lines.
our @ISA = qw(Exporter);
our @EXPORT = qw(subname);
sub subname
{
#5.Now we can write the function of the sub in here. I'm sure you already have a lot of practice.
}
#5.The following line is essential for perl module.
1;
__END__

After reformat all my sub collection into pm format, I place them in one folder at the server. I can mount the folder to my Mac when I am at work. And they can be used directly by this line:

use lib "/path of the subname.pm/";
use subname;

Also, time machine or dropbox can be used to backup them.

Finally, there is one more thing.
See this code:

package CV;
use strict;
use warnings;
require Exporter;
our @ISA = qw(Exporter);
our @EXPORT = qw(CV);
use lib "/path/";
use SD;
use Mean;
use round;
sub CV{
my @string = @_;
my $mean = Mean(@string);
my $sd = SD(@string);
return round($sd/$mean, 3);
}
1;
__END__

See my point? We can use our own pm in writing new ones. So when we have some basic function already written, we can make program with more complex function, just like playing Lego bricks.
Have fun!

How to install circos on Mac OS X lion (10.7.x)


Circos是个画圈图的好工具。在基因组相关文章里展示基因排列,同源性区段,duplication等,效果很好。由于现在高对平文章对图表的美观程度都有了更高的要求,所以转移到circos下来绘制圈图很有必要了(虽然有很多其他的软件和工具)。

Circos可以安装在unix based os上。由于Mac OS X是unix内核,于是就没有理由不研究一下circus的本地化。另外一个原因就是,做生物信息,如果完全把软件问题交给管理员,那么能学的技术问题就很有限。而且走人之后,服务器肯定是不能带走的。因此完全本地化工具包是很有必要的。

circus的安装其实很简单。下载解压后,cd ../circos-0.55/bin,运行 ./test.modules,就可以看到需要的包有那些已经安装,那些需要手动安装。比如:
ok Carp
ok Config::General
ok Data::Dumper
ok Digest::MD5
ok File::Basename
ok File::Spec::Functions
ok FindBin
ok GD
ok GD::Polyline
ok Getopt::Long
ok Graphics::ColorObject
ok IO::File
ok List::MoreUtils
ok List::Util
ok Math::Bezier
ok Math::BigFloat
ok Math::Round
ok Math::VecStat
ok Memoize
ok POSIX
ok Params::Validate
ok Pod::Usage
ok Readonly
ok Regexp::Common
ok Set::IntSpan
ok Storable
ok Time::HiRes

以上是全部安装正常的结果。如果第一次运行这个check脚本,显示有未安装的。可以尝试以下两种方法来安装:
1.fink
2.cpan

由于cirsos是个基于perl+svg编写的软件,所以大部分要安装的包都可以通过cpan。
在os x下,sudo perl -MCPAN -e shel,之后键入install + 包名称即可,如键入“install Math::Bezier”。

由于未知原因,GD无法用cpan安装,于是借助fink。
fink下移植了大部分的linux通用的软件,只是更新会比osx稍慢。不过象GD这种常用的包更新还很快。bioperl就没那么幸运了(bioperl我只能通过cpan来安装了,发现比fink的速度更快,只是perldoc无法调用)。
GD安装的日志竟然跑了1万多行。

配置
修改/bin/env
由于mac os x的默认路径和一般linux不同,因此要将程序的第一行中“/bin/env”修改为“/usr/bin/env”。
或者使用命令“ sudo ln -s /usr/bin/env /bin/en”建立一个镜像。

测试
现在可以用circos提供的测试文件来检查安装是否成功了。
cd /Applications/Bioinformatics/circos-0.55/example/
/Applications/Bioinformatics/circos-0.55/bin/circos -conf ./circos.conf

circos提供的tutorials需要跳转到tutorials这个文件夹而不是data下运行,这个在官方的手册里是错误的。

搞定。

WordPress被墙之后

我原本计划,校内以后只用来打广告,结果在wordpress被墙之后,决定还是再发一篇日志,不过本质还是发牢骚。

我同意全文转帖或者转载之类的行为是不利于互联网发展的。这种行为其实和剽窃没有本质的区别。有些转帖还注明个出处,作者;大多数直接全文复制粘贴。问题是人家原文好好排板的格式,字体,表格,命令,等等,是复制粘贴copy不过来的,就好比复制了人家的文字,却丢失了人家的风格。现在网上大量充斥的博文,论坛帖子,百度文库,很多是这种东西。

百度文库对中国文艺界的扼杀效果,相比盗版软件对中国软件产业的毒害,没有太大的差别。而上述的转帖的效果其实和百度文库如出一辙,只不过在法律界定上还没有明确的定义。在我国,法律没有界定的东西的确很多;而没有界定的下文就是无法用司法程序解决,这个是中国司法制度的漏洞,不多说。众多的文人,自己的作品已经被百度文库免费发放了,现在只能靠自己的博客赚取点点击,打打广告。连这个机会您都要剥夺,这还让不让人活了?于是有点名气的,只能效仿某些老师,去走穴作谈话节目~

不过以上可能只是个极端的例子。

对于转帖,其实是传播知识的很好方法。正确的形式应当是:提供帖子摘要,附加原文地址。不过GFW的存在让众多的博客群被阻挡在墙之外,所以众多的转帖者又多了一个全文复制的理由。要转播知识竟然要借助这样一个不合理的方式,这实在是很讽刺。鉴于目前海外的大多数中文博客的流量还要靠国内的点击赚取流量,所以自检就成了必须。不过GFW经常是不分青红皂白,先墙了再说。对于我这种,写博客连副业都不是的,其实完全可以放弃中文的写作了。

写到转帖,不能不说google reader。其实reader对于RSS资源的整合,其实是自动将博客全文转到google服务器里保存。但这种转载只提供给google帐户本人阅读,没有任何附加效应。无形中,其实google扮演了一个文化保管员的角色。依靠它在云端的技术,这些文字即使在源头被删除了,还是可以在google的服务器里找到的。即使你在google+(之前是google reader share)里分享了,也只是提供了通往原文的指针。但就是新浪博客之流,禁止google获取全文。于是韩寒之类“愤青”的文字,只能靠热心的网友,用我不赞成的方式——转帖,人工在网络上制造克隆。于是,我这个偶尔关注一下韩寒的人,还能看到一点。这个时代,保存的工作还是只能靠人工!google你道高一尺,新浪不让你获取全文,你也没治。

说道google reader,就可以回到wordpress了。由于提供了rss订阅的功能,其实国内的用户是可以获取wordpress上文章的全文的。鉴于reader还没有被墙,这扇通往外界的门还打开着。至于还能开放多久,不得而知。问题是很多博主喜欢学习新浪,不让google抓取全文。这个到底是技术问题还是刻意为之,我不太清楚。不过这确实造成很多不便。在这里的建议还是:如果您的技术水平已经高到可以自己独立搭建服务器,开博了,请放开让google抓取全文吧。毕竟现在wordpress被墙了,您的独立博客是否被墙也是人家拍脑袋的事。给国内的粉丝留条后门吧。加你的rss就是对您的认可。

个人一直认为wordpress上的文章,或者更确切地说,租用服务器搭建的博客的文章,平均都比公共的博客服务上的质量高一些,比论坛帖子更好一点。毕竟成本在那里,谁也不会自己烧钱去丢人。还有个原因是,独立博客的传播经常是在小圈子里进行。您是否勤奋,大家一目了然。有了压力,质量自然有一定的提升。这个和在论坛里匿名的复制粘贴行为,在背景上就不同。少而精,相对较长的篇幅,使得博文的信息量和实用性要比帖子高。对于博主本人的推广也比论坛要有效多了。你的服务器你做主,可没有斑竹删你的帖子。当然,这段的分析只凭逻辑推理。我现在还真没什么功夫去作统计。

意识流写道这里,我觉得差不多了。

wordpress被墙之后,我的中文博客写作也可以停下来了。毕竟中文可能不会给我带来更多的点击。如果只是笔记的话,也就不用放到网络上去了。而在校内网打广告的日子也可以到此为止。我们生在这个时代是幸福的,可以足不出户获取信息,了解别人,被别人了解。但这份幸福是残缺的,因为有政府母亲大人来决定我们应该了解谁,和谁可以了解我们。在我这里的例子是,用中文,我自己的母语,无法让别人的了解我。我的文字,如果放在一个没有监管的服务器上,我的同胞就访问不到;而放到这个被监管的服务器上,那就是残缺的幸福了~于是,用非母语去体验完整的幸福吧,敬请期待我蹩脚的英文是如何慢慢变的不蹩脚的,哈哈~

A collection of phylogeny softwares

地址在:http://evolution.genetics.washington.edu/phylip/software.html

这个要收集全了,掌握所有的细微的用法,得需要多久啊?

Privacy control in iCloud

Apple release the new cloud service and I am sure every apple fun can feel the convenient. Although it is not a complete cloud disc, we can still make good use of the file service using apple mobile iWork package for their moderate price. For other file transmission, I think dropbox can provide the solution for the rest needs.
But one service got me confused at first. It’s the Photo Stream. It functioned great at first and I can push all my new photos to all my devices. But the problems came to me when I got some private photo. I think all of u have such photos. One example is Penny knew her motorcycle guy is married by the photo of his naked wife stored in his photo when he want to take the same kind of photo of her in the comedy TBBT. Others such as project data picture which is classified.
Maybe somebody will say that ur computer or mobile device is a private place. Just set up a password to protect it. For one who use laptop and iPad to do both work staff and personal project, u will always find a time to show other people ur photo album and I have to say that I need photo stream to provide the in app password service or at least provide the option to choose which photo folder to upload. But unfortunately, it just works, it is just that simple and automatically.
So, after think about this and google the problem for a while, I got the following solutions:
1. Take control of all ur devices. U don’t need to enable photo stream in all ur device. Just enable the service ur need. If we trust apple for all of our personal information, we can believe they are all safely stored in iCloud, but the switch is in ur hand. When u taking some photo, it maybe automatically be showing in one of ur unprotected device, with screen on facing a square with crowed people. This also means u have to protect ur iCloud user name and password because authorized a computer will leave all ur personal data downloading automatically.
2. Turn off photo stream before u want to take some issued photos. Since photo stream is still without upload control function, the switch and the only is still turn on/off. For these photo, u still need to use cable or wifi to sync them to the computer.
3. If ur did’t follow the solution 1 and 2, u can still reset all ur photo stream photo by the iCloud through ur browser. JUst go to iCloud and click ur user name at top, choose “Advanced” and then “reset photo stream”. Then all ur photo stream is delated along with the ones u don’t want to sync.

4. If u got a bad luck, these photos are already in the cloud, it mean u open any of the devices enabled photo stream, u will have the possibility to have them showed. So don’t open photo or iPhoto on ur device, turn off photo stream after ur have already done solution 3. This will erase all the stream photo on ur device. Then turn it on to re-download.
5. The photo will store ur latest 1000 photo. If u r not have all the authorized devices in ur hand, just drag 1000 photo to ur authorized iPhoto to push the unpleasant one out of the stream if ur r sure all the device can quickly sync with cloud. Maybe u can’t be sure. So just take control of ur devices and think about ur really what to sync sth before u input them to ur devices.

The solution above applied to all other information and service u r using in ur devices and iCloud.

P.S. That’s just annoying that some chinese people lived together with me will just pick up my device and play. There is no discrimination here and I am a chinese myself. I think our chinese need to learn how to behave when going abroad.

Steve make me want to change myself

I saw a small poem today.

20111007-234201.jpg
Steve Jobs changed by Jason F
He changed computers.
He changed software.
He changed design.
He changed publishing.
He changed film.
He changed music.
He changed advertising.
He changed retail.
He changed business.

He changed beige.

He changed expectations.
He changed our minds.

He changed them.
He changed us.
He changed you.

“Don’t be sad because it’s over. Smile because it happened.” – Dr. Seuss

Now what are you going to change?

I think I should make some change. First, to myself.
Change yourself, then maybe you can change the world.

Think different

今天早上起来得知Steve去世的消息。之后上网看各种传闻和评论。到办公室写了一会程序,看了一集美剧。中午吃饭的时侯,师兄问我,Jobs去世了,你这个果粉打算用什么方式悼念一下啊?是否要买个iPhone4S(iphone for Steve)啊?我想方式可以有很多,但不一定和大家一样。

其实很难说我的心情有多悲痛。前不久我的同学英年早逝的时侯确实有悲痛了一阵。但一想到他生前乐观的神情,我就觉得自己没有理由什么事情也不做,光在这里悲痛了。

癌症确实剥夺很多人的生命。曹峰是我的同学,好友。而Steve是我敬佩的人,一个我希望从他身上学到一些东西,从来没有机会见一面的前辈。所以我能做的也只有每件跑FAH,希望斯坦福的项目能帮助人类更快地攻克癌症治疗的难关。此外就是翻看Steve之前的演讲,希望能从中学到一些研究的技巧了。

看到网上很多人以各种方式悼念Steve。其实很多人不一定用过苹果的产品。其实悼念活动的主要形式还是转发微博,而微博的从众倾向是不难理解的。但其中的确有很多人的生活被Steve所发布的产品改变(iPhone之前的手记的上网体验和UI设计确实相当糟糕)。至少对于精美的产品,如果人能感受到自己和它的情感联系,对于创造这些产品的人,产生某种情感联系也很自然。

我是大学三年级的时侯开始用上苹果的产品的。最开始是iPod nano。上研究生之后买了macbook,从此真正感受到了user friendness是什么概念。现在手头拥有的产品还有iPhone4和iPad2。我得说,作为一个技术控,对apple的产品的感情经常是很复杂的。正如喜欢linux的人大多数对apple的界面不会感到太感冒,而对apple提供的异常简便的系统维护体验也不会有太深的印象。很多windows的用户可能还会存在转换系统的不适应,从而产生Mac OS X不如win好用的论断。但如果从一个初次接触电脑的用户的角度考虑,苹果的产品确实做到的开机即可用。如果要普及电脑,用苹果机应该更适合。而对于技术控,埋藏在apple光鲜的UI下,有太多的东西可以挖掘,就看你是否是个名副其实的geek了(更多的信息用unix,max os x,smalltalk,objC做关键词进行搜索)。而最令我印象深刻的是,apple的工程师是如何从不用工程师思维而是从用户的角度考虑问题的。

工程师思维在很大程度上是解决问题的思维,而这个思维是建立在各种参数的基础上的。举个例子,如果你要买个笔记本,用来写文稿,上网,看电影,玩游戏。在选择机器的时候,第一跑到你脑子里的想法可能是我得买i5才够用,电池还的是6芯的,容量得在1000mA以上,这样才方便带出去。之后就是去网上调查一大堆的参数,比较…这些策略对笔记本电脑也许适用,但到了选择平板电脑的时候呢?比较iPad和那些上网本,使用这些参数还有意义么?你本来的目的是写看电影,真的需要把这个需求换算成显卡的型号然后再去选择电脑么?很多时候我们把选择的过程复杂化了。或者说这种复杂化的过程让一些不适应这种复杂化标准的人对产品望而生畏了。很多时候是我们强迫自己按照工程师思维去选择产品,而忽视了产品而应该带给我们的东西,而原因就在于工程师没有做好他们作为产品提供者的工作,把参数转化为对功能的承诺。再举个例子:很多人喜欢给windows定制皮肤,让系统看起来更漂亮(甚至有人想方法把自己的系统做成苹果风格),甚至番茄花园版的盛行也和这个有关系。当用上了mac os x的时候,有人会为自己不能定制外观而抱怨。其实mac os x的外观已经很漂亮了。让UI赏心悦目本来就是工程师应该做的工作。而让用户去研究如何让系统变漂亮而不是专注于用系统能创造什么,这不是很讽刺么?

apple让我们对电脑的关注从参数转移到了使用的目的。我为了这个方便的操作系统而选择mac,除此之外我只需要考虑屏幕的大小是否合适,因为会对重量有影响。电池的使用时间是苹果承诺好的,所有的产品一样的标准。而迁移助理让我不需要去考虑重装系统,分区等问题。我得承认,在使用了mac四年之后,我对window复杂得网络设置实在是无法适应了。

自由自在地飞吧,牛牛

昨天很晚才睡,发了消息出去,期待那只是一个玩笑。
早上起晚了,收到了噩耗的确认。默默地洗漱完,出门,看到阴云低沉的天空。我想,牛牛现在已经融入了空气,也许在笑著看着我这个心里还在惦记它的异类吧。
去实验室照例要穿过生活区和办公区之间地高速路。等待车少点了,跑到路中间地隔离带里,然后再等另一侧的车少了。这本是习以为常的,然而牛牛在,让我感觉前面呼啸而过地车流似乎是死神地大军,一个一个与我擦肩而过。
穿过干裂的戈壁沙地往实验室走,也不见往日觅食的鸽子。在手机上翻看SNS,有人翻出了旧日的合照,是为纪念,而我似乎连一张和你的照片也没有。即使有,可能也要去旧时的若干盒光盘里翻很久,而那些都被我落在北京或托运回承德了。
没有任何消息,如果不是某人一门心思想把你揪出来,我甚至连你今天火化都不知道;你化作了空气在我身边,我也不可能觉察。不过,也许现在你有更多的人想去看望,是那些在你生命中更重要的:在最后的日子里一直陪伴你的,然后带着破碎的心回到故乡的她;老来丧子,伤心欲绝的却一直坚强地鼓励你走到最后的父母;还有你身残志坚的兄长;还有和你一起打篮球的其他牛牛们。
其实我不该称呼你为牛牛的。你甚至比我还大,只是作为04级,还得叫我一声学长。04级属牛的很多,在这里叫你牛牛,我想其他牛牛一定能认出你来的。而不认识牛牛的人也不会把这里的八卦对号入座的。
第一眼看到噩耗后,我去SNS上翻看你的主页。基本没什么更新,但不知到多久之前的状态扑入眼睛。什么时候更新的?SNS已经给不出确切的时间。 也许是在你术后的某天早晨,挣扎着起来。想报告一下状态,又不想太娘娘腔。鼓励自己一下吧。但在这个每天有上千条状态更新,转载,八卦,微博的社交网络里,你的状态就默默地被洪水一般的信息淹没了。大家都在为生活打拼,为了理想而殚精竭虑。这最后一句问候的机会也就错过了。
这一年,经历了太多的变故了。同学们跳槽的跳槽,结婚生子的晒婚纱照或满月照,求学的陆陆续续飞走了,而牛牛变成空气了。在这里,这个离故土又几千公里的沙漠,如果你在眼前,我也看不到。然而你让我重新思索生命的意义,我的生活应当追求什么。为了让自己的生活更有意义而长久得活下去,不要为了追求一时的灿烂而迅速陨落。物质的享受又算得了什么?最后真正能自由的,也只是能化作空气的部分…
死者乃为生者开眼。当你穿越高速路的时候,注意看身前吧;当你通宵达旦的时候,当你喝酒到醉的时候,想着牛牛带着他不变的微笑,看着你呢。当你过年的时候想用奖金购进个新手机的时候,还是拿去做过体检吧,牛牛会很欣慰你这么做的。当你和伴侣或朋友不和,吵架的时候,想想牛牛是如何用他的微笑化解这一切的。
飞吧,牛牛。在另一个世界里,你一定找到了你所向往的自由。我想我们会让你被铭记,活在我们中间。

P.S.
牛牛是我们的一位好哥们的小名,这里用来称呼他们一级的我的好兄弟们。他们应该常叫他"大个子"。
他状态更新的时间是2011年2月15日,我来沙特三个月后。那时已有一年多没见他了。
纪念的最好方式就是精彩地活着,让他活在我们的回忆里。
如果你和我一样痛恨癌症,可以加入fah计划,为制服这个夺走我们朋友的病魔贡献一份力量(当然还有其他致力于医学研究的DC项目)。