科比的谢幕

昨晚看完比赛,我在想,是什么让科比显得如此特殊?

他不是命中率最高的得分手,他不是最聪明的运动员,他不是一个好团队球员,也从来不曾是最受赞扬的NBA球员。然而他令所有的一切失色。没有人关心勇士的七十三胜或是库里的402个三分。哪怕从篮球的角度,他们要比一支放纵明星联盟垫底的球队看点多得多。还有什么东西比一支联盟史上最伟大的球队加冕来得更重要呢?

然而科比从来都是规则的挑战者。 没有人敢新秀出场尝试绝杀。没有人敢和沙克抢投篮机会。没有人敢赶走禅师。没有人敢在自己被三人包夹的时候不传球。没有人敢逼队友到开会求他传球的地步。然而科比都做了,而且做得出乎意料的好。

他拿到了总冠军,他拿到了81分,他拿到了赛季平均35分,他拿到了MVP。更重要的是,他让人相信,哪怕再不合理再不聪明,把球交给他,你总能看到奇迹。 这个世界上循规蹈矩打球的人很多,挑战规则的人很少,而挑战规则到如此偏执地步还能如此成功的,或许真的只有科比一个人。

一如昨晚,没有人敢出手五十次的时候,他敢。“为什么不呢?”。他说。当没有人相信他可以得五十分;没有人相信湖人能赢48分击败他们的球队;当没有人相信科比的出手是理智的时候;当所有人只期待一场没有太多亮点的比赛;科比做的,只是接着投篮。

投到所有人张大嘴巴,投到所有人相信或许真的就应该把球给他,投到解说的话题从“科比会出手多少次”变成“科比能得多少分”再变成“湖人能不能反超”,投到最后那记19尺的跳投锁定胜局。合理不合理,聪明不聪明?不重要。

他的结局一点都不完美,他拿到81分的时候只用了46次出手,而今天他只能带领一支乐透球队尴尬的离开,他再也没办法统治比赛。他没能拿到第六个总冠军来追上乔丹。在赛后发布会上他还对此念念不忘,“完美的结局是拿到总冠军退役”。他甚至不喜欢队友用香槟庆祝他的退役——“那是给冠军的”。然而他用最科比的方式结束了他的最后一场比赛。

一场仿佛浓缩了他的整个职业生涯的比赛。

当你一次次被击败;当世界都在非议你;当你自己都忍不住怀疑自己,咬咬牙,带着满身的伤痕继续任性战斗,直到你再也没有力气。 “我把一切都留在了场上”,赛后他说。

俗套点形容,恰如一个狂傲少年的中二梦想。

解构社交网络的社交网络:谈朋友圈

社交网络未曾如此深入人心;在前微信时代里社交网络是具有鲜明的群体特征的:人人网主要覆盖大学生,开心网主要覆盖白领,新浪微博主要覆盖关心新闻的人士,QZone主要覆盖二三线城市和低龄用户,Twitter主要覆盖****。而作为移动互联网时代最流行的社交工具,朋友圈改变了这一切,架构了一个包容几乎所有这些人群的巨大社交平台。而唯一的问题是,这个社交平台,似乎正在消解社交网络本身。为什么?让我们从社交网络相对于Web 1.0的意义谈起。

网络的元素归根到底,无非是信息。而社交网络的第一个重大的意义,便是帮助你和意想不到的人保持联系。你可以试着去联系平常或许没有机会认识的名人;你可以意外地从朋友的好友里发现许久不见的旧识;你也有机会因为一篇文章、一次讨论、一条评论、一张照片认识有价值的朋友。

一言蔽之,社交网络允许你拓展你的圈子,发现新朋旧友。而朋友圈的社交更像是电话号码:知道他人的微信才可能接触到他。这不仅仅是难以扩大社交圈的问题;连保持原有的社交圈都是一件困难的事:想要一个个搜寻『谁的微信我没加』是一个很困难的问题,他人也不太可能来问你『要XXX的微信号么』。常常发现大家明明都是很熟的朋友,却只有一两个人和某一个人是好友关系,他们之间的互动他人也毫不知情。于是原本在其他社交平台上保持联系、甚至现实中相熟的朋友慢慢又走回陌路,近在咫尺,变成了远在天涯。


社交网络的第二个重大意义是新的信息传播方式。在社交网络上,不同来源、不同类型信息的传播前所未有的平等:你可以看到BBC的新闻,也可以看到网友的段子;你可以看到婚礼的照片,也可以看到长篇的文章。在社交网络上,每个人是倾听者,同样也是分享者;草根的信息也有可能得到广泛的传播。当然,事实上名人的话语权总是更大,然而至少在机制上,草根拥有了名人相同的信息和传播途径。

然而在微信上并非如此。前有穹顶之下,后有拐卖死刑,朋友圈波及最广的传播事件都带有鲜明的营销特征。这和微信本身的特点紧密相关:朋友圈设计出来,就是内容的生产者和消费者泾渭分明的世界:从信息的生产到传播,两种角色的权利都极其不对称。

朋友圈的内容大致有五种:文字、图片、视频、图文消息、QQ音乐。个人用户不借助其他应用只能通过微信产生其中的前三种,而且所有输入都必须在窄小的手机触摸屏上完成,无法使用电脑上的丰富内容,图片被限制在九张,视频被限制在低清60s。

然而『微信公众平台』的用户则截然不同:它们的信息在电脑上生成,可以有多到看不完的图片,内嵌的高清视频;可以加入背景音乐,接入微信红包和支付服务,乃至访问用户的相关数据。有趣的是,和个人微信绑定的邮箱不能用来申请公众号。换而言之,在朋友圈的设计里,公众号才是内容生产者,个人微信用户不过是看客而已。

在传播上,这两种信息享受的方便程度也是截然不同的,对于链接形式的图文消息,用户简单的点击就可以实现传播,而对于文字信息,官方给出的分享方式是『复制然后再重发』,对于图片,干脆明言『暂不支持分享』,还建议用户可以『保存到手机再发』。实际上,微信压根就没考虑过用户因为『好友写的段子很有趣』或者是『女朋友的照片很好看』,需要转发的需求。

那么如果你自己制作好页面,分享到微信呢?想分享正在浏览的页面,需要把内容转发到微信里然后再用浏览器打开进行分享,而且显示效果很差。未备案的域名在朋友圈的分享会被限制频率,超过一定次数之后,用户分享内容将只有自己可以看到。而且只要同一域名下有违反腾讯『规则』的,整个域名都会被限制分享次数。

Screenshot_2

所以『穹顶之下』和『拐卖死刑』是营销内容其实不是新闻。朋友圈这样的分享方式和规则,实际上保障了能够大量分享的内容,几乎全部都是营销内容。你帅气的自拍照几乎不可能被很多人看到,而如果你帅气的自拍照其实是凯蒂推克的广告,就是另外一回事了。如果你打开今天的微信公众平台,你就会发现,几乎每一项的功能,诉求都是『品牌』和『营销』。

Screenshot_1

Screenshot_3

更进一步说,社交网络的魅力之一,在于它把人和信息有机的统一起来:你不仅仅知道信息本身,也知道信息是谁发出的,你的好友中有谁对这个信息关注,从而允许人和人之间更深的了解与互动。然而朋友圈上并非如此:人是人,信息是信息,你要么以个人用户的身份倾听,要么以公众号的姿态发布。朋友圈的评论设计也天生阻碍人和信息的互动。哪怕对于公开信息,你也难以看到非好友之间的意见,或是追踪所有的分享者的评论,而这些功能在其他平台上,并不罕见。


 

朋友圈这样的设计或许可以追溯到历史原因:它作为一个三五密友之间分享生活的工具被设计出来(直到前不久还存在的『长按发文字是临时功能』的提示可以作为佐证),却要服从腾讯的商业战略,拼接上了一个公众平台这样一个纯粹的商业系统。它本来不该是一个社交网络,只是一个被广告喧宾夺主的公开相簿而已。只不过大家很忙,容不下太多的社交网络,于是就留下了微信这样一个平台。

问题是,这样真的好吗?我当然喜欢保护隐私,但是我也同样喜欢结识朋友的朋友,或是意外的发现旧友的近况;我不反感营销,但也希望看到其他用户所产生的高质量内容,或是偶尔向大家分享一下我帅气同学的自拍;我不讨厌随时随地的吐槽,但也希望偶尔能有更长的篇幅,更舒适的输入,来分享更多的意见,更美的内容。社交网络本应该是将人拉近、让每个人发声的工具,不应该有更高的墙,和井然有序等级。

所以今天我越来越多的使用其他的社交网络,或许,你也可以试试。

值得担忧的反恐法

两会期间热点频发,也让一些原本应该成为焦点的新闻不再成为焦点。比如说《反恐怖主义法》这部很可能彻底改变中国互联网业界格局的法律的二审。

对于网友和从业者来说,最应该关切的,是其中第十五条,第十六条的相关规定(这里引述的,是去年十一月份公开征求意见的版本,根据近来的报道,新的法规加强了审批流程方面的规定):

http://www.npc.gov.cn/npc/xinwen/lfgz/flca/2014-11/03/content_1885027.htm

    第十五条 …

    电信业务经营者、互联网服务提供者应当在电信和互联网的设计、建设和运行中预设技术接口,将密码方案报密码主管部门审查。未预设技术接口,或者未报审密码方案的,相关产品或者技术不得投入使用。已经投入使用的,主管部门应当责令其立即停止使用。

    在中华人民共和国境内提供电信业务、互联网服务的,应当将相关设备、境内用户数据留存在中华人民共和国境内。拒不留存的,不得在中华人民共和国境内提供服务。

    第十六条 电信业务经营者、互联网服务提供者应当依照法律、行政法规规定,落实网络安全、信息内容监督制度和安全技术防范措施,防止含有恐怖主义内容的信息传播;发现含有恐怖主义内容的信息的,应当立即停止传输,删除相关信息,保存相关记录,并向公安机关或者有关主管部门报告。从事互联网加密传输服务的企业应当向网信部门、公安机关备案密码方案,配合主管部门调查工作。

我比较关心其中的几条规定,第十五条要求ISP/ICP在互联网架构中预留『后门』,并将后门向相关部门汇报;要求所有向境内提供互联网服务的设备和数据留存在境内。第十六条则要求从事互联网加密传输服务的企业向相关部门备案密码方案。

简而言之,这部法律构建了一个明确的白名单:只有服务器和数据留存境内,并且按规定预留后门,报备加密方案的互联网服务,才能够在中国境内生存。如果真的实施,这很可能是自从『墙』建立起来,对中国互联网生态产生最根本的影响。而老实说,这种影响很有可能是负面的。

从安全层面上来说,由政府管控一个安全后门和所有软件的设计方案是否有必要?抛去这些后门可能被不恰当使用的担忧,这些后门数据和政府存放的密码方案,本身就构成巨大的安全隐忧——这意味着所有使用这些服务的用户的数据、隐私都潜在的暴露在政府的审计下,而一旦出于疏忽或是缺陷被攻陷,所有境内的互联网和电信服务将都受到安全威胁,进而危及到每个人的用户。这并非危言耸听,互联网本就没有绝对安全可言,韩国实名制网络的泄密事件(http://news.imeigu.com/a/1325209797054.html), 近年来诸如heartbleed之类的严重漏洞频发,都向我们暗示着,一个统一的、包含所有互联网信息、服务后门和密码方案的数据库,很可能将会是一颗定时炸弹,一旦爆炸,后果不堪设想。

从市场层面来说,条款取消了所有服务器和数据在境外的互联网服务在中国的合法性,而这很可能影响中国用户享受最新科技成果的能力。云的魅力之一,就是它从一定意义上来说,打破了国境的界限——你无需在每个国家建立服务器,就可以为全世界的用户提供服务。而并不是所有的公司,特别是新兴的科技公司,都有能力、有意愿在中国设立服务器,而根据规定,政府有权屏蔽所有这样的服务。这样的屏蔽,很容易导致中国用户无法享受到新兴的,最好的科技服务。在最近的MWC 2015手机展上,华为推出的基于Android Wear的手表Huawei Watch赢得各家媒体交口称赞,可由于相关服务在中国难以访问,这款手表的发布地区并不包括中国,作为中国公民,却无法在中国享受中国自己的企业的先进产品,不由得让人感到遗憾。

从业界层面来说,这一规定将更加加剧中国IT业者采纳先进技术、参与全球竞争的难度。一方面,在云计算的时代,很多开发生产技术有赖于对国外服务的顺畅访问,而出于技术周期、成本的考量,在国内实现这类服务并不一定全部现实。对此类服务的进一步限制,和对国内用户数据留在境内的要求,很可能会导致我们无法使用类似Heroku的云服务构建产品;同时,在一个终身学习的时代,无法顺畅的访问国外的技术网站,和国外拥有不同的服务环境,也会增大技术人员与国外同行交流、学习、提高的难度。另一方面,类似后门的规定,很可能会增加注重安全和隐私的国外用户对中国互联网产品的担忧。国内的用户数据必须留在国内的规定,也很可能给国内国外用户的互联互通、在国外为国内用户提供流畅顺利的服务提供障碍。新法律的通过,很可能给中国创造的产品走出国门,增加进一步的难度和限制。

最后,这一规定并不一定真的能够防止恐怖活动。互联网巨大的数据量和流量,注定了传播比屏蔽简单、加密比破解简单、传输比审查简单。除非彻底屏蔽国际出口,否则这样的规定,恐怕给中国互联网公司和用户带来的麻烦,比给恐怖主义分子带来的麻烦大得多。这一规定甚至可能加剧中国的雾霾气候和碳排放——现代数据中心的耗电惊人,留在中国境内的服务器,将会给中国的电网增加新的负担。

众所周知,恐怖主义最可怕的地方,不在于他到底杀死多少人,而在于他致力于让人们的日常生活蒙上阴影,让人们自愿放弃方便、放弃权利、放弃自由。而这部法律,让人不由得有这种担心。或许,互联网界应该主动关切这样一部可能彻底改变中国互联网形态的法律。

『我们最需要恐惧的,是恐惧本身』

——富兰克林-D-罗斯福,1932

 

How I met your mother[剧透]

本文地址: http://blog.hoppinglife.com/?p=29 

 

 

Mixed feelings about it.

1

我能理解这个结局。

HIMYM其实不是一部关于幸福和温馨生活的剧,它是关于如何幸福和温馨的看待生活的真相。

整部剧可以在22集结束,几个闪回,几句温馨的话,就可以让我们含泪告别整部剧集:幸福,感人,CP们终于走到一起。

可这显然不是编剧的期望。

生活不完美,你和一见钟情的姑娘未必适合;你和你的初恋终会分离,你会为工作痛苦,会为感情纠结,会担心和铁哥们慢慢疏远,会爱上女友的闺蜜或者男友的铁磁,会在前任和现任之间摇摆不定;会和情侣吵架,会慢慢淡忘浪漫。

但是当你回顾这样不完美的生活的时候,你能从当时苦涩的味道品出甘甜:学到的经验,曾经的浪漫,从天真疯狂到慢慢成长,快乐和悲伤,相聚和别离,以及,曾经的记忆和遇到的人。你会发现,曾经的痛苦可能是命运的考验,也可能是老天赐予你的珍宝。

这才是胖瘦想要讲的故事,这才是寻妈记的主题——不是生活的温馨与甜蜜,也不是生活的痛苦与折磨。

寻妈记想讲的故事,是生活本身。

2

我不喜欢这个结局。

草率和匆忙吧。Barney花了三季的时间,从大男孩成长成男人,然后在半个小时的时间里倒退回过去,又在剩下的半个小时奇迹般的喜欢上刚出生的婴儿。Robin好不容易从女强人变成小姑娘,两集时间又奇迹般的变回去。老妈匆忙出现,又匆忙离开,美好的故事仿佛是Ted追求Robin的工具。

老实说,我们都知道Barney的Awesome说到底是因为他是个浪子,Robin还是那个女强人,Ted还是爱着Robin,每个人总有一刻要做回自己,情侣会分手,恋人会得病。从某种意义上来说,这些都没错,这些,和之前的九季一样,也是成长的一部分,生活的一部分。

但是这一切发生的太快了。

在三季的美好与温馨,在所有的期望与暗示,在一个冗长的周末之后,所有的迹象,都指向五人组幸福的生活在一起,这是一个美好的故事。

但是,Hey,你不能只用一个小时告诉观众:不是你想要的童话。

Barney和Robin终归会发现不合适。Ted深爱着老妈但是终究不得不接受现实。Ted心目中,Robin永远是喧闹酒吧里那个漂亮姑娘;Robin的心里也终归会有属于Ted的某块地方。没错,但是对于剧中人物这是很多很多个月,很多很多年才能慢慢接受的现实,对于观众也一样。

这应该是一个更长,更费时间的故事。把前因后果隐去,就会变得生硬而冷漠。应该有更多的篇幅给Robin和Barney的性格,给Ted与Tracy的爱情而非那个长长的周末——一定要结束在『met』,给了这个故事太大的限制。

在我的心里,这个故事不该讲在在Ted要和Robin之前,而是应该在很久之后,Ted坐在客厅里回忆五人组的快乐与悲伤,Robin在她身边。

——爱过,痛过,领悟过美好,感受过寂寥,终归回到原点,这才是生活。

3

不管怎么样,HIMYM都是一部好电视剧。结局成功也好,失败也罢,都只是几百个小时中的一个小时。

我无意去重复那些曾经让我心潮澎湃的台词,那些让我或悲或喜的瞬间。我没有那么出色的笔。

我只想说,无数次,我看完这部剧,关上电脑, 心中冒出一个念头。

『这,大概就是生活的力量。』

隔行如隔山

本文地址: http://blog.hoppinglife.com/?p=2

一般来说,要让程序能运行,除了你自己的代码之外,要有很多『现成的代码』来节省你的工作量,也就是所谓的『标准库』。可是光有代码还不够,我们还需要把接近英语的高级语言『编译』成机器语言的编译器,把一个大程序不同的部分『啮合』在一起的连接器。到了运行时,操作系统要分配有限的CPU和内存来处理不同程序和设备的请求,具体的指令要被CPU『解码分析』然后分配到『流水线』上执行。还有更多的细节,这里从略。

项目大了,编译的时间就会很长,于是偶尔会想,我在多大程度上,能够理解我所写下的几行代码在一台计算机上是怎么运行的呢?

『库』的部分,我大概知道该怎么写,但是真让我写,一定会『漏洞百出』且『效率极低』。至于其他的部分,编译器、操作系统和CPU的工作原理都是计算机专业最重要的核心课程。可是对于不负责设计这些的我来说,这些部分太复杂太庞大,只能了解一点点皮毛而已。更不要说集成电路如何实现这些功能,或者是如何构成集成电路——那是硬件工程师的工作了。

事实上,大多数时候,计算机对我来说就是一个『可以运行高级语言代码的黑盒子』。至于『进程调度』,『寄存器分配』,『中断处理』——我一点都不关心。这样的例子不难举:对于很多人来说,数学和物理,也只是『拿结论来用』的黑盒子。

从工业革命到如今不过数百年,现代文明已经发展到这样一个程度:全才不复存在,事实上,我们不仅无法理解别人的专长,甚至连自己的领域内的成果,也往往只能了解一个有限的梗概了。

这当然不是坏事。但是当我们享受这种『无需牵扯细节』的好处的时候,也很容易忘记,今天拿出手机就可以顺畅的让鸟撞上管子或者是看到心仪妹子的照片,蕴含着多少次的计算与多少距离的信息传递,而为了让这些计算和连接能力唾手可得,整个行业在50年间经历了多少次技术革新。

每次的性能提升,都意味着无数次的改动CPU的设计,意味着通过提高制造工艺来压榨出最后一点性能,意味着重写编译器的无数代码,意味着无数人的不分昼夜的努力工作。而对于一个外行人来说,说不定他会觉得『今年性能只增长了10%啊,比去年也没有很厉害嘛』。

这就是『专业』的含义。它意味着不同的知识架构,意味着不同的工作实践,意味着不同的能力偏重。是的,从某种意义上来说,理工科学生的『人文素养』就是比不上人文类专业的学生;文科生的『科学素养』也很难比得过理科生:这本来就是知识体系和教育背景决定的。或许有例外,但是以今天知识体系的复杂和庞大,就算有例外也很有限。而承认我们在知识结构和经验上和专业人士存在差距,尊重和信任专业人士,『让专业的人,做专业的事』是现代社会得以继续运转和创造财富的基础之一。

可是很遗憾,面对争议,往往揣测流言和廉价的质疑大行其道,仿佛专业分析遍地可见,真正的专业意见却湮没无闻——因为简单的图景和阴谋论永远受欢迎,而复杂的专业分析往往没有那么『爽』和『顺』。也因为,人人都喜欢参与感,喜欢『这些人忽悠不了我』的感觉。

可是如果一切以『常识』和好恶来做出判断,到底我们接近的是真相,还是想象呢?

隔行如隔山。

对比的力量

本文地址:http://blog.hoppinglife.com/?p=24 

韩磊的演唱,简直是『欲扬先抑』的范本。

从『慢』开始,从『弱』开始,一点点的加快,变强,换音色,一点点撩拨你的情绪,当你试图抓住它的时候,又悄悄的逃开,回归平静,哪怕是第一遍副歌,留着余地,留着空间,浅尝辄止.

终于,你被撩拨的心痒难耐,满身的情绪只期待一个出口的时候。他轻轻的按下开关。足够了。

 

 

如何掌握观众,如何点燃观众,是一门值得好好学习的学问。

Several Thoughts

本文地址:http://blog.hoppinglife.com/?p=13

最近有好几个小朋友跑来问我有关学习啊前途啊推荐导师方向啊的问题,我猜我的答案不是很让你们满意。正好,今天又看到一篇『ACM大牛太厉害怎么办』式的文章,有感而发,写一点我此刻的感触。个人意见,水平有限,仅供参考。

一 轨迹和距离

要讲的,大概就是乔布斯『dot』那个演讲的意思。你从来不知道自己的现在会以怎么样的方式影响未来。恩,这个话题很俗,但是在此时此刻,我希望我更早一些懂得这个道理。

我在大学里有几个领域不愿意碰:不喜欢数学,不喜欢Machine Learning,不喜欢并行编程。

结果是代数和概率没学好,Boss的一个很有趣的题目不敢接。前不久项目要用到基本的机器学习和MPI,翻出教材重看了好几天;课上讲到CUDA自己浅尝辄止,现在天天抱着Nvidia的资料啃。

专业课程的设置终究有它的原因,你永远都不知道,你不喜欢的那件事,在什么时候会挡住你的路。如果运气不好,说不定连是什么挡住了你的路都不知道。

二 游戏与现实

有一个很有名的段子,医学院的学生找老师去划重点,老师说,你打算跟将来的患者说,不好意思,这个病不是重点?

课堂、考试和大作业,终究是一种『游戏』。它不能太难以至于大多数人阵亡,它不能耗时太长以至于很多人饿死,它也不能太无趣,以至于大家觉得它很无聊。

但是教材那么厚,还有那么多参考书终究是有原因的,实践中的问题不会顾及你是否曾经对这个问题详加练习;不等式的难度是否超过了你算法课的习题;或者问题的规模是不是超出了你习惯的问题。

更何况,太多的问题书本上没有答案。C++书上,不太会讲到实践中tuple奇奇怪怪的用法或者是decay_copy对线程安全的意义,也不会讲到什么样的代码能内联什么样的代码不会被优化;算法课上,也不太会讨论B+树的节点插入的时候可以rebalance或者实践中B树的性能到底跟什么有关。

『考试内容』和『书本知识』天差地别,『书本内容』和『工程实践』又隔着鸿沟,想真正掌握一门学科,课堂讲义和教科书远远不够。

三 天赋与先发优势

最常听到的问题,是『成绩还行,编码不好怎么办』。

我就笑,因为我觉得,如果真的用心去『学』了相关的课而不是仅仅应付考试,编码应该有所提高才对:c++大作业让写链表的时候,有没有去翻翻std::list的实现?OS课上让写shell,有没有去翻翻类似的代码?做算法大作业的时候,有没有去查查工程实践中的代码是什么样的?做编译大作业的时候,有没有让自己的code尽量clean?学软工的时候,有没有仔细看看设计模式?

或许有人天生擅长coding,或许有人通过ACM的锻炼coding提高;但这绝非唯一的提高之途。作为一个工程师,对『先例』的熟悉和『自身经验』的累积,是远比天赋更宝贵的财富。

顺便说一句,在我ACM水平最高的时候,代码是变量乱飞作用域稀里糊涂的。很多ACMer编码水平高,是因为他们对待代码(和其他知识)比我认真。

四 结果与目的

别人看你的学生生涯,会有很多『评价因子』:成绩如何,奖学金和荣誉,科研,课外活动。加权平均一下,给你的学生生涯打个分数。

所以挺多小朋友从进大学开始,就开始奔着这个方向去努力:GPA,GT,进实验室。而当问起『你的兴趣是什么?』『你擅长什么?』的时候,往往很茫然:『其实我也没有什么特别的兴趣啦』。

但这些都是『结果』,不是『原因』。它们终究是衡量一个人的专业水平和综合素养的工具,而后者,才是大学应该给予你的东西。学数学也好,学编程也好,都是为了,当有一天用这些创造什么的机会摆在面前的时候,你可以把那份工作干得更漂亮,让自己更满意,幸运的话,惠及更多的人。

大学四年的意义,不仅仅是『换个敲门砖』,你可以做的多得多:认真寻找到一个自己擅长和感兴趣的领域;把基础知识认认真真学扎实;培养良好严谨的工程习惯;积累一些初步的经验。做好这些,那些你所在意的『敲门砖』,自然会水到渠成。

相信我,你今后不会有太多的机会做这些事的。

 

 

 

交互设计这件事

本文地址:http://blog.hoppinglife.com/?p=9

最近有两个客户端让我很闹心。

Android上的Twitter客户端Carbon更新了,新的Carbon有一个很漂亮的界面。(图片摘自Google Play)

问题?——我找不到我想要的功能在哪。

按Menu键没有反应,按返回键会退出程序,按那个加号是发新推。设定呢?帮助呢?为什么点twitter里的链接没有反应?

经过一段时间的研究,我发现打开菜单要点右下角你自己的头像——是的,那个加号和右边的头像不是一个按钮。是的,想要搜索、设定或者查看教程(教程藏在设定里面,如果你能找到教程,基本上你已经会用这个app了),你得猛击自己的头部——我的头很圆吗?和搜索功能有什么关系?

想要查看twitter的List,从边缘的右向左滑,但是要小心,如果你从中间滑,那你会来到conversation页面。用两个指头向上滑会跳到最新的tweet,但是要小心,如果你不小心用两个指头点中了一条twitter,那你会触发retweet功能。想要点击twitter里面的人名和链接?你要先点一下twitter,但不要点最左边发推人的图片——那会访问那个人的profile。——要想看到全部的对话,你要再点击一个按钮。

另外一个类似的应用是BeyondPod – 这是个podcast播放软件。在这个软件升级了新的版本之后我有两周都找不到怎么调整播放进度——没有提示,没有按钮;直到今天我不小心滑动了一下,发现『Now Playing』页面藏在播放列表右边。

这些软件坚定了我的判断——今天的app设计者,越来越把『酷』看得比『易用』来得重要。手势的滥用,就是最明显的例子。

其实,在我看来,今天的『手势』,其实和『命令行』没有什么不同:

-在GNU Screen的界面下,按<C-a><C-n>可以切换到下一个窗口
– 在Carbon主页的边缘从右向左滑动,可以调出list功能
-在FreeBSD下,ps aux会列出所有进程,包括它们是由谁调用的

有很大的区别吗?手势滑动看上去比命令行来得简单,但是它们同样要求用户记忆——哪个屏幕,哪个功能应该怎么调用。区别是,我愿意花时间学习shell来工作,我不想花时间学习怎么快速发推。而且在命令行下,我起码还有man page和–help可以救急。

我至今还记得第一次在展会上看到Windows 95——当时7岁的我只花了60s找到『扫雷』。除了『好看』,GUI的最大优点在于『易用』。这就是我们为什么愿意忍受繁多的菜单和按钮——当我需要一个功能的时候,我不用查阅500页的manpage就能找到它。

今天的交互设计师似乎早就忘了这件事——他们喜欢『最小化』和『直觉式』的设计,换个说法,他们喜欢把所有界面的功能都藏起来,让用户用第六感来找到它们。不幸的是,我的第六感和它们从来步调都没一致过。拜托,我的第六感有个名字,叫做Android Design

最后,对于有耐心看到这里的朋友,弱弱的问一句,Spotify新版里,怎么随机播放一个歌手所有的歌曲?

场外因素

本文地址:http://blog.hoppinglife.com/?p=4

(新网站缓慢建设中,尚无具体时间表。)

想了很久第一篇新Blog要写什么,现在想想就从天天在用的软件说起吧。

和很多同龄人一样,我开始接触编程的时候使用的是Turbo/Free Pascal/Lazarus的IDE, 后来转向C的时候用Dev C++/Code::Blocks, 接触Linux之后开始使用Emacs,用过一段时间的Eclipse写C/C++/Python/Java, 再后来开始长期使用vim/IDEA进行开发 – Java/前端代码用IDEA写,后端代码用vim写。

Coder总会不可避免的陷入圣战的泥潭 。 一开始是vim vs Emacs vs VS, 后来是Eclipse vs IDEA,再后来是vim vs sublime text, 总之有coder的地方就有江湖,有江湖的地方就有圣战。——这还只是文本编辑器。

不知道有没有像我一样的人,曾经觉得*nix下面没有一个出色的C/C++ IDE有那么一点奇怪(虽然Windows下大概也Visual Studio+Visual Assist X还活的比较好)。——几年之前最流行的组合包括vim/omni-complete和emacs/CEDET,用起来多少都有点奇怪,远远没有VS初上手来得正常。

大家似乎都这么想: 平均每3天我就会在不同场合看到论证Vim设计得很糟糕的文章。——反人类的设计,三十年前的键盘映射,糟糕的插件管理和界面,只是用来装X, 快点用acme/textmate/sublime什么的代替它吧。

但是大家还是在用vim/Emacs:如果有人问我做Linux下的C/C++开发用什么IDE, 我还是会说vim/emacs,十年之前是这样,十年之后还是这样。甚至今天的我,会费力把每个我会写字的地方都改成vim key-binding。

是的,我知道vim是很糟糕的设计,我知道配置它很麻烦(实际上有了vundle/janus/spf13之后并不复杂),我知道它的语法识别并不出色,但我还是会用vim, 哪怕我要专门写个脚本来生成我的.vimrc.

因为这个世界上,『最优秀产品』评选,有很多『场外因素』。

  • 通用
    有机器的地方就有vim——不管windows/Linux/BSD,不管是server还是树莓派,不管是android还是ios, 我都可以轻松的找到一个vim(至少是vi)来用。更重要的是,让这些vim长得用着都一样,并不花太多力气。
  • 社区大小
    成百上千的coder这么写代码——不管是配置、工具链都已经非常成熟了。毫不夸张的说,只要你想到的idea, 就有人或多或少的实现在vim里。每当想做一件什么事的时候,搜搜vim tips wiki就找到解决方法了:庞大的社区,能够相当程度的减低学习的难度,也能够轻易的让你体会到社区的最新成果。
  • 路径依赖
    是的,当你已经适应了一种工作方式了之后,你会懒得更改到另一种工作方式。
    毕竟,在ssh下工作,选择几乎只有vim/Emacs.
  • 免费/轻量
    是的,不用支付额外的费用,可以直接在ssh上工作,节省屏幕空间——大家都挺穷的。
  • It just works.
    大家已经这样写代码写了很多年了,至少说明它没有大问题,何必花精力改它——发掘一个更好用的toolchain的时间,很可能超出你的想象。

这并不是说vim/Emacs不优秀——实际上它们优秀到超乎想象,那部分内容和本文无关;但我相信如果今天再去设计vim/Emacs, 肯定不会长成它们现在这样子。但是这无关紧要。那些『场外因素』,已经或者弥补,或者让我们忽略了它们的缺点;也让我们离不开这些老家伙的『特性』。

 

同样的道理也适用于C/C++/Java/Unix/make/tex:如果今天重新设计这些东西,它们很可能会长成Go/Rust/D/Dart/Plan9/Scon/texmacs的样子。但是绝大多数情况下,这种关公战秦琼式的比较毫无意义:后者的优点和这些『场外因素』比起来,并不重要。更何况,让前者变得方便使用,比让后者变得成熟,要简单太多。

所以我从来不是很买『那个设计不好所以应该换』的帐。用户从来不傻:站在巨人的肩膀上或许不难,但是真正成为巨人远没有那么简单。