同性恋判决书多数意见片段翻译:民主过程与权利

http://www.supremecourt.gov/opinions/14pdf/14-556_3204.pdf

page 24-25

当然,宪法认定民主是改变(法律)的正当过程,只要这一过程不扼杀基本权利。在上一开庭期中,本庭的多数法官在Schuette诉BAMN一案中重新肯定了这一民主原则的重要性,即『公民通过辩论来学习、判断,并进而通过政治过程,共同形成他们时代的前进方向。』的确,我们的自由更多的通过民主得到保障。但像Schuette所示的那样,『宪法所保障自由中最基本的维度之一,就是个体不受政府权利的非法侵害。』因此,当个人权利被侵犯之时,即便考虑到民主的一般价值,『宪法也要求法庭予以救济。』。哪怕对于最为重要和敏感的问题,这一原则仍然适用。

我们宪法系统的活力在于,个体在确认基本权利之时,无需等待立法过程。国家的法庭对受到伤害的个体开放,允许他们通过我们的基本宪章中维护他们直接的、个人的权益。每个收到伤害的个体都可以寻求宪法的保护,哪怕多数公众舆论对此持有异议,甚至哪怕立法机关拒绝行动。宪法的思想在于『将特定的主题从政治争议的变迁中抽离,将他们置于多数人和官员的影响之外,使其成为在法庭中适用的原则』(West Virginia Bd. of Ed. v. Barnette)。这是『基本权利不可以被诉诸表决的原因,他们不应依赖于选举的结果』。因此,同性婚姻支持者享受或反对民主过程无关紧要,本院面对的,是宪法是否保护同性婚姻伴侣结婚权利的法律问题。

这不是本院第一次被要求在承认和保护基本权利(fundamental rights)时采取审慎态度。在Bowers案中,勉强多数法官维持了将鸡奸入罪的法律。那一途径或许可被看作是对民主过程的审慎认可,因为同性伴侣的权利才刚刚进入民主过程的视野。然而事实上,Bower案的判决维护了各州损害同性伴侣权利的行为,导致了他们的痛苦和屈辱。像反对意见所证实的那样,Bower案法庭了解支持正确决定的事实和原则。这正是Lawrence案判决认为,Bowers案『在宣判的时候就是错误的』的原因。虽然Bowers案因Lawrence案被推翻,但人们在期间受到了伤害。而毫无疑义,这些伤害的影响持续到Bower案被推翻之后很久。尊严的伤口并不总是可以被一纸判决治愈。

对同性伴侣不利的判决将产生相同的效果,并且像Bower案一样违反了第十四修正案,并不正当。起诉者的故事清晰的表明本庭所面对的这一问题的紧迫性。James Obergefell现在质疑,俄亥俄州是否可以抹去他一直以来与John Arthur的婚姻 (…) 法庭有责任去正视这些主张,并做出解答。

(…)

最后,应该强调,宗教和遵守教规的信徒可以继续真心实意的、最大限度的倡导,同性婚姻有罪而违反神谕,不应被允许。第一修正案保证宗教人士和组织在教授这一原则时的自由,(因为)这一原则对于他们的生命和信仰如此重要,而且植根于他们保持长久以来家庭结构的深刻愿望。对于其他反同人士也是如此。相应地,那些相信同性婚姻不管是否在教义或神谕下有罪,都是合适或必要的人士,可以与反对他们观点的人士进行公开和尖锐的辩论。然而,宪法并不允许各州禁止同性伴侣像异性伴侣一样结婚。

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

社交网络未曾如此深入人心;在前微信时代里社交网络是具有鲜明的群体特征的:人人网主要覆盖大学生,开心网主要覆盖白领,新浪微博主要覆盖关心新闻的人士,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

 

联合杯

 

『教练,我想打比赛。』

『哦?你的期望是什么?』

『当然是夺冠。』

『凭什么?』

 

『凭我们有最强的阵容。』

『阵容不足恃。湖人F4倒在活塞手下,银河战舰年年输给里昂。难道是因为他们的阵容不够强吗?』

『那,我们有最强的教练。』

『教练不足恃。上场的毕竟是队员,不是教练。强如拉里布朗,也没能拯救尼克斯于水火之中。』

『我们有最强的团队。』

『不错。可是你听说过「三个和尚没水喝」的故事吗?』

 

『……。那,凭我们有最充分的准备。』

『有点意思了。准备不足恃,比赛总有意外,开场三分钟的一个任意球就可能打破你的全盘计划。』

『我们有最娴熟的技战术。』

『战术不足恃。它是胜机也是枷锁。当你的套路被研究透,你还有什么东西可以拿来赢得比赛?看看贝尼特斯。』

『我们有最出色的配合。』

『恩。不足恃。有着华丽配合的队伍太多,可是它们往往不能一锤定音。』

 

『那,到底有什么制胜良方呢?』

『其实你知道的对不对,「阵容」「教练」「团队」「备赛」「技战术」「配合」,只是要防止一些小小的意外。』

『意外?』

『比如说教练没办法给出好的战术,比如说准备的时候找不到合适的资料,比如说在后半场队员体力不支,比如说你需要一个神来之笔打破局面……』

『啊……好可怕,那如何才能预防呢?』

『很难预防。哪场加时赛还没有几个抽筋的?』

『……』

『到那个时候,才是比赛的开始。面对身体的极限,解脱的诱惑,巨大的压力,你还能不能向前跑?还能跑得动,你就能夺冠。It ain’t over till the fat lady sings.』

『那,如何才能跑得动呢?』

『这,就要问你有多想赢了。如果你还记得曾经输了比赛的哭泣,记得自己当初踏上这片赛场的理由的话。』

『可是我还以为,只要阵容齐整,做好准备,冠军就是囊中之物。就没有办法轻轻松松夺冠吗?』

『孩子,这是竞技体育。如果夺冠那样简单的话,我们哪里会那样向往这个冠军呢。』

====================================================

各位,看上周的我是歌手了吗?有没有想过,以韩磊对音乐的追求和掌控,为什么还愿意把最后一首歌,留给听上去很俗套的《向天再借五百年》?

赛场上,我们想证明的事有千种万种,但是什么样的证明,都不如击败所有的对手来得实在。各位勉之。

How I met your mother[剧透]

本文地址: https://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都是一部好电视剧。结局成功也好,失败也罢,都只是几百个小时中的一个小时。

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

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

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

隔行如隔山

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

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

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

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

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

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

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

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

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

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

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

隔行如隔山。

对比的力量

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

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

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

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

 

 

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

Mac OS X不是unix

本文地址:https://blog.hoppinglife.com/?p=19

警告:这是一篇高度个人化的文章,不适者请跳过。

这篇文章不是要探讨OS X的可用性或者设计优劣:尽管那个题目很热闹。我要讲的话是:『Mac OS X不是unix』。

从字面角度上,这句话不太正确:OS X通过了SUSv3,这使得它成为地球上不超过十个可以自称自己是『UNIX』的操作系统之一。其他的成员包括AIX, HP-UX, Solaris等等。

但是Linux和BSD都不是这个家族的成员,而它们加起来占了Unix服务器的绝大部分,所以让我略加修改APUE的名言:

On the other hand, if it does not look like a duck, does not walk like a duck, and does not quack like a duck, then it’s probably not a duck.

所以我们来看看Mac OS X是不是unix:Again,这无关某个动物或者鸭子是好还是坏,我只想说明某只特定的动物是不是鸭子。

一 内核

『Mac的底层是Darwin,Darwin是BSD』大概是最常听到的关于Mac和BSD的关系的描述。但事实上不是这回事。

事实上这个内核的核心还是mach:内存管理、进程管理都由mach负责,而mach不管从历史还是特征上都更像NT内核。部分Darwin kernel的源代码来自4.4BSD – 和Berkeley有关的最后一个版本。但是这部分代码运行在Mach的上层,几乎只负责提供SUS/POSIX子系统的API,而且被大规模的修改过. 除此以外,Darwin kernel拥有自己的Driver API和I/O Kit,(面向对象的),从这个角度上来说,与其说Darwin kernel像unix, 还不如说它像VMS/Windows。

二 API

让我从一个问题开始:『装着cygwin的Windows』是unix吗?

OS X的感觉与这个类似:你确实可以使用POSIX的API,但大多数OS X的GUI会基于闭源的cocoa,会使用特有的thread API,会使用launching API来运行daemon,会使用GCD来做消息处理,会使用不一样的动态链接库。

简而言之,除了使用了Posix的API,OS X和BSD/Linux并不share太多的共同点。你可能会使用一些POSIX的API,但你几乎同样必须使用Apple专有的API。

与其说你在开发unix软件,不如说你在开发OS X软件。

三 Look’n’Feel

OK,回到使用上,Mac OS X到底有多unix-y呢?

事实上,Apple在努力隐藏这个系统的unix部分:Apple有自己的路径规则和文件系统。用户使用Applescript来做自动化。时至今日,安装软件很多时候还是运行一个installer或者把文件copy到Application folder。App Store里找不到wget或者macvim,你可以清晰的区分出两类程序——一类装在/usr下面,一类装在/Applications里。

你的用户感受是『Mac OS』,不是『unix』。与其说Mac OS X像unix,不如说它更像Mac OS 9。

四 哲学

“Keep it simple and stupid”

“Do not reinvent the wheel”

“Write prog1rams that do one thing and do it well. Write programs to work together. Write programs to handle text streams, because that is a universal interface.”

unix的最核心的价值之一,在于它提供的模式:充分利用已有的成果,给最终用户以选择的机会,系统高度透明和模块化,高度可配置。

Mac OS X不是这样的一个系统。Apple搭建了一个自有的平台,通过限制功能和封闭来达到稳定性,通过复杂的封装来达到可用性。macports和homebrew能够很好的反映这一点:你要么选择冗余(重新安装所有文件),要么选择匮乏(被系统工具的版本限制).

五 

如果从内核,API,操作方式到哲学,Mac OS X都更像Mac OS 9而非unix的话,为什么我们还要叫它unix呢?

我对Mac OS X没有什么意见——出于个人的偏爱,我不会用它,但我相信它是一个出色的系统。

但我不喜欢Apple用Unix当商标来推广Mac OS X,unix不仅仅是一个『好用的shell』而已,它的价值,也在于『类似的系统路径和配置方式』,更重要的,在于『高度透明和可配置』,在于『充分利用既有的社区成果而非重新发明轮子』。对这些哲学的坚持,是unix社区成功的要素之一。

但OS X是一个和unix社区从理念到实践都相差甚远的OS。它有着特有的操作方式和配置规则,有着比Windows还厚的封装,重新发明了比Ubuntu还多的轮子。

它只是碰巧能兼容一部分BSD程序而已。认为『Mac OS X有Unix认证所以是unix』和认为『Windows + cygwin是POSIX兼容的所以是unix』没有什么本质不同。就算猩猩和老鼠99%的基因相同,猩猩也不是老鼠。

你可以喜欢unix,也可以讨厌它,但是希望你喜欢或讨厌unix的原因,不是因为你喜欢或者讨厌Mac OS X。

Several Thoughts

本文地址:https://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,进实验室。而当问起『你的兴趣是什么?』『你擅长什么?』的时候,往往很茫然:『其实我也没有什么特别的兴趣啦』。

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

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

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

 

 

 

交互设计这件事

本文地址:https://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新版里,怎么随机播放一个歌手所有的歌曲?