八月 30, 2007

Getting Real的Human Solutions一节讲到:

Build software for general concepts and encourage people to create their own solutions.

我同意它在下文所说的“We kept the tool clean and uncluttered by letting people get creative.”。它举例说他们的Ta-Da List产品里,有意没有加“截止日期”,以及“分类”等,这样的generalization让有创意的人需要截止日期时就在标题前加个日期即可,需要分类时在标题前加个如“[Book]”之类的标签即可。这样可以无限灵活。

但这样的设计理念会不会造成oversimplify,以至于用户打开你的应用时不知所措。如果有个“截止日期”,“分类”什么的,对用户来说是一种指引,一种帮助,一种对话的方式。再者,过分的generalization会造成应用数据不够结构化,而没有给予数据适当的语义,因而不能进一步用这些数据为用户服务。比如,如果要想知道那些项目明天到期怎么办?用户只想找某一类别的条目又怎么办?

记在这里,知道自己思考过,矛盾过。Don’t let only one voice take over your mind.

七月 19, 2007

刚刚知道,重庆,我的家乡,正在遭遇百年不见的暴雨灾害。看着那些被冲毁的道路桥梁,看着那些被淹的房屋校园,看着奋力游泳过马路的孩童,看着那些熟悉的地名出现在一幅幅触目惊心的新闻图片旁,看着齐刷刷挽着裤管站在水中央没水没电的似曾相识的人们,想象着他们可能就是我的亲人我的朋友,呆呆地看了很久。

重庆,我的山灵水秀,物丰人美的家乡,你在接受什么样的煎熬啊?去年是百年不遇的高温和旱灾,今年又是百年不遇的暴雨灾害。高峡出平湖了,巫山云雨也截断了。神女现在醒过来,恐怕真的要“惊世界殊”了。

就算是这样的雷打雨泼,我可爱的重庆兄弟姐妹还是不忘调侃:

你想在家门口捉鱼吗?
你想在大马路上游泳吗?
你想在过街隧道里潜水吗?
你想近距离欣赏湿身美女吗?
那就报名参加重庆暴雨半日游吧!
雨量有限,预定从速!商机无限好!!!
现在全城都是江景房

这就是我所知道的重庆人。

七月 3, 2007

我的朋友圈到底有多大,从没仔细想过。但其实,每天,也都在不停审视着自己的朋友圈。谁谁谁转发一个笑话邮件过来,可乐,马上转发给地址簿里的所有人;又有人转发一个YouTube上的视频过来,讽刺联储局主席Ben Bernake的改编(用恶搞这个词太糟践)歌曲,嗯,国内的朋友可能不感兴趣,Jenny和Pierre不太喜欢这类严肃点的话题--滤掉;发现了一个小孩子夏令营的好地方,当然只发给有孩子的朋友罗。。。每次发送邮件的时候,其实都很辛苦地组织着,分类着各类信息,以及环绕着这些信息的各类朋友们。

最近在Ning.com上建了个社交网络Parent 2.0,供爸爸妈妈们分享为人父母的心得,交流学校以及孩子教育的信息。建好后,很辛苦地把朋友们的地址一个个敲进去,才能邀请他们参加。要知道,虽然我的兴趣不算广泛,但要是还想要建一些别的社交网络,比如“木工2.0”、“种花养草2.0”、“背包族2.0”,“高尔夫2.0”,“自由式飞盘2.0”,等等,还不得再一遍又一遍把朋友们分类,再把他们的地址一个个敲进去吗?

但如果Google,或者Yahoo,或者M$,他们在自己的邮件平台上就能很自然地提供社交网络的功能,我想我是很愿意用的。比如一个很简单的功能,就是给邮件地址加标签,而我在需要群发时,也加上标签,然后,不用选择一大堆地址,只要选择“自动匹配群发”,就能按照邮件的标签匹配我朋友们的标签,自动帮我群发给可能感兴趣的朋友。当然,别忘了反馈功能。比如,我手动在邮件里新加的朋友邮件地址会自动被加上标签。其他社交网络功能,还是Google,Yahoo,M$们自己想吧。

更新:R/WW名为“为什么iPhone可能真的很有用”的文章里有句话与我心有戚戚焉:What better social network can you wish for than a phone book?

十月 26, 2006

言多必得翻译任务清单里看到对于Guy Kawasaki开始的艺术”视频的翻译请求。翻译视频里的对话脚本很繁琐,尤其是演讲,更尤其是Guy Kawasaki的演讲--太多笑话,典故,译者必须花大力气来解释这些,而读者可能还是一头雾水。从自私的角度出发,我只是摘录了演讲视频中我认为有用的东西。如果言多必得的“雷声大雨点小”和“拙尘”认为有用,可以自由转载(保留署名即可)。

介绍

Guy Kawasaki,为Garage Technology Ventures的主席及总监。1983-1987,在Apple任软件布道师(evangelist,负责产品和品牌的传播,就好像福音布道者一样),1995-1997,任Apple的总布道师。后活跃在风险投资领域。这个演讲大致基于Guy的一本名叫开始的艺术的书。Guy总结了自己职业生涯中的经验教训,并藉次传递给现在的创业者们,希望他们能改变世界。

1. 做有意义的事(Make Meaning)

开创公司最好的理由是做有意义的事,是改变世界。 有三个方法做有意义的事:

  • 提高生命的质量。Macintosh部门的存在,就是为了帮助人们更有创造力,更有效率。
  • 改正错误。我们(Apple)认为MS DOS是不道德的,是错误的,是针对人性的犯罪(笑)。我们必须改正那个错误。
  • 不让好东西终结。

许多人认为开创公司的目的是“挣钱”。聚集人气,吸引眼球,然后把公司卖给Google,Yahoo之类大公司。 如果他们18个月内不买我们,没问题,我们上市。听到这种想法,我们(风投界的)觉得很压抑。如果你们想找风投,先想想怎么做有意义的事。如果你想好怎样做有意义的事,你会挣到钱。但如果你一开始就想的挣钱,你会吸引一帮错误的雇员。比较典型的,如果你说想要挣钱,你往往会吸引那些MBA和咨询公司(笑)。

2. 定个几字箴言真言(Make Mantra)

(Mantra,音译为“曼陀罗”,是印度密教的一种语言,通常跟宗教,精神,哲学有关的诗歌和典籍用它来书写。这里Guy用来借指简洁明了的公司宗旨宣言。)

你跟你的创业团队在Ritz Carlton(高级度假宾馆,为公司offsite会议的胜地)里闭关修炼制定出来的公司宗旨宣言不应该是这样冗长而面面俱到的(举例):

Wendy’s(美国一个快餐店)的宗旨是通过领导,创新,合伙,来为我们的客户和社区提供优质的产品和服务。 (笑)

(这恐怕是Guy从哪个IT公司的网站上抄来的,借以嘲笑其没有实质,随便套用到快餐店也八九不离十。)

别弄错了,我有四个孩子,我爱Wendy’s。但我在Wendy’s用餐这么久,从来没有感觉到我在参与领导,创新,或者合伙。Wendy’s的伙计恐怕没人能重复这句宗旨宣言。Wendy’s创始人Dave Thomas恐怕也不能记住这句话--因为他已过世。这是一句毫无意义的宣言。太长,不够独特,记不住。在创业阶段,你应该弄一个三到四个词的mantra。比如:

  • Wendy’s:健康快餐
  • Fedex(联邦快递):气定神闲(peace of mind)
  • Nike:真正的运动家的性能(authentic athletic performance,Just Do It是给用户看的)
  • Target(百货店):民主化设计(democratize design)

免费给你一个价值25000美金的宗旨宣言:上Dilbert Mission Statement Generator(笑,Dilbert是美国流行很久的漫画连载)。

3. 开始启动

有的创业者要先研究论证有这个市场之后来开始启动。让我说,就动手干吧。三个秘诀:

  • 别样思维(Apple的座右铭Think Different)
  • 极化人群:不要害怕极化人群。如果你想做出任何人,任何年龄段都满意的东西,你只会做出很平庸的东西。Harley-Davidson,Macintosh,Netflix,TiVo都因为极化人群获得成功。
  • 寻找几个灵魂伴侣。你需要人来帮你保持平衡。

4. 定义商业模型

三个关键:

  • 明确。(图片秀了一个美女)谁是我的客户?怎么才能从她钱包里拿走我的钱?你的钱,在她的钱包里,问题是怎么拿出来。
  • 简单明了。切勿在商业模型上创新!如果你的成本是一美金,卖了5美金,毛利是25美分,你将会成功。
  • 向女士征求关于你的商业模型的意见(笑)。我相信男人的遗传基因有问题:男人有杀手基因。我们想干掉植物,干掉动物,干掉其他公司,干掉其他产品。大多数情况下,这种杀手基因被社会所压制。但在创业板块,如果你问男人们,是否应该开个公司把Google干掉,把微软干掉,所有男人都会说“好!”。

5. 织席(席,MAT,是milestones, assumptions, tasks的合称)

我喜欢冰球。尤其是Zamboni(一个平整冰场的机器的牌子,代指这类机器)平整后的冰场,当你在上面滑时,你能看见你自己所有的轨迹。很好的感觉。一个新公司就象这样。但这样也让你很难制定优先级。第一件事就是要制定出几个里程碑,比如,“完成设计”,“产品发售”。

然后就得记下你的假设前提,比如,预期的销售额,客户ROI,存储你的产品的花费,等等。这些假设前提很可能改变你的商业模型。大多数公司把这些假设写下来并验证其正确性。

之后就是细化为任务,一一完成。

6. 把自己供在神龛上
我将用一张幻灯片解释关于市场营销的一切。这是市场营销的圣杯(Holy Grail),为你省下了读MBA的10万美金。 如图所示:

GuyKawasaki_ArtOfStart_Marketing.jpg
右下角,你没什么创新能力,但你做的东西对用户很有用。这时你用价格取胜,Dell正是这么做的。

左上角,没有人觉得你的东西有用,但幸运的是,只有你在这么做。那你只不过是个笨蛋。

左下角,不但没有人觉得你的东西有用,还有一大帮人在跟你做一样的东西。这就是那些dotcom所在的位置。

右上角,不但你的东西对用户非常有用,而且只有你知道该怎么做。就好像我们的布什总统,高高在上,走向右边(意谓布什为右翼)。

7. 10/20/30定律

这是Guy Kawasaki著名的关于如何向风险投资商演示PPT的10/20/30定律。 在这里简述一下:

  • PPT不能超过10页。我听了太多经常长达60页的PPT,耳朵都得中耳炎了。
  • PPT演讲不能超过20分钟。也许你有一小时的时间,但你用的是Windows,得花40分钟才能搞定投影仪(笑)。
  • PPT的最小字体为30号。一来你的演讲对象都上年纪了,二来这样强迫你把演讲的核心放在PPT上,自己也记得住自己的东西,三来听众不会在下面读你的PPT,心里想着我读得比这个笨蛋讲的还要快。或者用这个算法也行:找出你听众里最大年纪的人,把他的年纪除以二,就是你的最佳字号。

8. 雇佣受感染的人

意思是雇佣那些不但有经验,而且热爱你产品的人。大多数人指考虑两方面,教育背景和工作经验,我建议加第三个,他们是否因为对你产品的热爱而受感染。 别理那些不相关的人。有时候,人们是因为有这个背景而相关,有时候,人们是因为没有这个背景而相关。(接下来,Guy举了自己的例子,以前是做珠宝生意的,尽管没上过任何计算机课程,后来仍被挖到Apple做软件布道师,而且做的很成功,皆源于他对Apple产品的热爱。)

要雇佣那些比你更优秀的人才。A级选手雇佣A+级的选手。但B级选手雇佣C级选手,C级选手雇佣D级选手。如果你雇佣了一个B级选手,有一天你醒来,发现自己已经被Z级选手包围了。我们管这个叫“笨蛋爆炸”。

运用购物中心测试。如果你在斯坦福购物中心(硅谷一个较高级购物中心)看到一个人,你有几种反应:才50码开外,你就想上去跟他打招呼,让他来面试;走到跟前面对面了,你才跟他打招呼;马上掉头开车去Valco购物中心(硅谷另一个购物中心)。你应该雇有第一种反应的人。

(30分,旁边有人提醒时间到了。Guy说,你要怎么的,下次不再请我来了?坚持要讲完。全场大笑。下一个演说者是Google的,他有无限多的钱,你管这么多干嘛。全场又大笑。)

9. 降低采用的门槛

  • 将学习曲线变平。
  • 不要让别人做你自己都不想做的事。(所谓己所不欲,勿施于人)
  • 拥抱你的布道者们。

10. 广种博收

  • 百花齐放(不是意译,Guy真的从毛主席那里借来的)。如果用户用你产品的方法并非你的初衷,许多人就害怕了:错误的人在大量购买我们的东西。如果这种事发生了,我的建议是,收钱吧您呐。
  • 允许试驾。下载,测试版。让用户明白,我们认为你足够聪明,因此可以试用我们的东西。
  • 找到真正的有影响力的人。不一定非得是CXO。我的体会是,走得越高,空气就越稀薄,空气越稀薄,智慧生物就越不容易存活。技术支持人员,秘书,办公室助理,他们是真正干事的人,是真正有影响力的人。

11. 别让笨蛋拖你后腿

有两种笨蛋:一种是一看就神经兮兮的那种,很容易就可以忽略他们的声音;另一种更危险,身材瘦瘦,穿黑西装,开德国车,戴亮手表 ,玩冰球,用Macintosh(好像说Guy自己呵呵)。因为你很容易相信这些笨蛋(举了几个历史上的笨蛋)。最后一个笨蛋是我自己。以前红杉问我愿不愿意面试做Yahoo的CEO的时候,我说“开车太远了,而且我不认为这个一个好的生意。”

(后面有一些笑话,跟主题关系不大。不写了。)

我没有去Yahoo。我想了10年后,我终于明白,我没有做错。我照顾了我的家人,和我的孩子在一起。这才是对我最重要的。

后记:终于写完了,用了4个小时。Guy的演讲相当精彩。很多的段子我根本没时间,也没办法表达出来。回头来想,如果只是把他PPT里那些条目一一列举,恐怕还更简洁明了,也省时间,你我的时间都省了。这只是一个尝试,不太满意的尝试。下不为例。

九月 27, 2006

5.3 子表服务

Bigtable_Figure5.jpg
图5:子表表示

子表的状态存放在GFS里,如图5所示。更新内容提交到存放redo记录的提交日志里{比较绕,看原文可能清楚点}。在这些更新中,最近提交的那些存放在内存里一个叫memtable的有序缓冲里;老一点的更新则存放在一系列SSTable里。若要恢复一个子表,子表服务器从METADATA表中读取元数据。元数据包括了由一个子表和一系列redo点{redo怎么翻好?}组成的SSTable列表,这些是指向可能含有该子表数据的提交日志的指针{烦死定语从句了}。 该服务器把这些SSTable的索引读进内存,并通过重复redo点之后提交的更新来重建memtable。

当一个写操作到达子表服务器时,该服务器检查确信这个操作完整无误,而且发送方有权执行所描述的变换。授权是通过从一个Chubby文件里读取具有写权限的操作者列表来进行的(几乎一定会存放在Chubby客户缓存里)。合法的变换会写到提交日志里。可以用成组提交来提高大量小变换的吞吐量[13,16]。写操作提交后,写的内容就插入到memtable里。

当一个读操作到达子表服务器时,会作类似的完整性和授权检查。合法的读操作在一个由SSTable系列和memtable合并的视图里执行。由于SSTable和memtable是字典序的数据结构,合并视图可以很有效地形成。

进来方向的{incoming}读写操作在子表分拆和合并时仍能继续。

5.4 紧缩{compaction}

在执行写操作时,memtable的大小不断增加。当memtable大小达到一定阈值时,memtable就会被冻结,然后创建一个新的memtable,冻结住的memtable则被转换成SSTable并写到GFS里。这种次要紧缩过程有两个目的:缩小了子表服务器的内存用度,以及减少了在服务器当机后恢复过程中必须从提交日志里读取的数据量。 进来方向的读写操作在紧缩进行当中仍能继续。

每一个次要紧缩会创建一个新的SSTable。如果这种行为一直继续没有停止的迹象,读操作可能需要合并来自任意多SSTable的更新。相反,我们通过定期在后台执行合并紧缩来限定这类文件的数量。合并紧缩读取一些SSTable和memtable的内容,并写成一个新的SSTable。一旦紧缩完成,作为输入的这些个SSTable和memtable就可以扔掉了。

把所有SSTable重写成唯一一个SSTable的合并紧缩叫作主要紧缩。 由非主要紧缩产生的SSTable可以含有特殊的删除条目,它们使得老一点但仍活跃的SSTable中已删除的数据不再出现。而主要紧缩则产生不包含删除信息或删除数据的SSTable。Bigtable在它所有的子表中循环,并且定期对它们执行主要紧缩。这些主要紧缩使得Bigtable可以回收已删除数据占有的资源,并且还能保证已删除数据及时从系统里小时,这对存放敏感数据的服务很重要。

{第六节待译

九月 26, 2006

大表(Bigtable):结构化数据的分布存储系统

http://labs.google.com/papers/bigtable-osdi06.pdf
{}中是译者评论
第一节 介绍

第二节 数据模型

BT是一个稀疏的,长期存储的{存在硬盘上},多维度的,排序的映射表.这张表的下标是行键,列键和时间戳.每个值是一个不解释的字符数组.{数据都是字符串,没类型,客户要解释就自力更生吧}.

(row:string, column:string,time:int64)->string {能编程序的都能读懂,不翻译了}

接着翻:

我们仔细查看过好些类似bigtable的系统之后定下了这个数据模型。举一个具体例子(它促使我们做出某些设计决定), 比如我们想要存储大量网页及相关信息,以用于很多不同的项目;我们姑且叫它Webtable。在Webtable里,我们将用URL作为行关键字,用网页的某些属性作为列名,把网页内容存在contents:列中并用获取该网页的时间戳作为标识,如图一所示。

Photobucket - Video and Image Hosting

图一:一个存储Web网页的范例列表片断。行名是一个反向URL{即com.cnn.www}。contents列族{原文用 family,译为族,详见列族}存放网页内容,anchor列族存放引用该网页的锚链接文本。CNN的主页被Sports Illustrated{即所谓SI,CNN的王牌体育节目}和MY-look的主页引用,因此该行包含了名叫“anchor:cnnsi.com”和 “anchhor:my.look.ca”的列。每个锚链接只有一个版本{由时间戳标识,如t9,t8};而contents列则有三个版本,分别由时间 戳t3,t5,和t6标识。

表中的行关键字可以是任意字符串(目前支持最多64KB,多数情况下10-100字节足够了)。在一个行关键字下的每一个读写操作都是原子操作(不管读写这一行里多少个不同列),这是一个设计决定,这样在对同一行进行并发操作时,用户对于系统行为更容易理解和掌控。

Bigtable通过行关键字的字典序来维护数据。一张表可以动态划分成多个连续行。连续行在这里叫做“子表”{tablet},是数据分布和负载均衡的单位。这样一来,读较少的连续行就比较有效率,通常只需要较少机器之间的通信即可。用户可以利用这个属性来选择行关键字,从而达到较好数据访问地域性{locality}。举例来说,在Webtable里,通过反转URL中主机名的方式,可以把同一个域名下的网页组织成连续行。具体来说,可以把maps.google.com/index.html中的数据存放在关键字com.google.maps/index.html下。按照相同或属性相近的域名来存放网页可以让基于主机和基于域名的分析更加有效。

列族

一组列关键字组成了“列族”,这是访问控制的基本单位。同一列族下存放的所有数据通常都是同一类型(同一列族下的数据可压缩在一起)。列族必须先创建,然后在能在其中的列关键字下存放数据;列族创建后,族中任何一个列关键字均可使用。我们希望,一张表中的不同列族不能太多(最多几百个),并且列族在运作中绝少改变。作为对比,一张表可以有无限列。

列关键字用如下语法命名:列族:限定词。 列族名必须是看得懂{printable}的字串,而限定词可以是任意字符串。比如,Webtable可以有个列族叫language,存放撰写网页的语言。我们在language列族中只用一个列关键字,用来存放每个网页的语言标识符。该表的另一个有用的列族是anchor;给列族的每一个列关键字代表一个锚链接,如图一所示。而这里的限定词则是引用该网页的站点名;表中一个表项存放的是链接文本。

访问控制,磁盘使用统计,内存使用统计,均可在列族这个层面进行。在Webtable举例中,我们可以用这些控制来管理不同应用:有的应用添加新的基本数据,有的读取基本数据并创建引申的列族,有的则只能浏览数据(甚至可能因为隐私权原因不能浏览所有数据)。

时间戳

Bigtable表中每一个表项都可以包含同一数据的多个版本,由时间戳来索引。Bigtable的时间戳是64位整型。可以由Bigtable来赋值,表示准确到毫秒的“实时”;或者由用户应用程序来赋值。需要避免冲突的应用程序必须自己产生具有唯一性的时间戳。不同版本的表项内容按时间戳倒序排列,即最新的排在前面。

为了简化对于不同数据版本的数据的管理,我们对每一个列族支持两个设定,以便于Bigtable对表项的版本自动进行垃圾清除。用户可以指明只保留表项的最后n个版本,或者只保留足够新的版本(比如,只保留最近7天的内容)。

在Webtable举例中,我们在contents:列中存放确切爬行一个网页的时间戳。如上所述的垃圾清除机制可以让我们只保留每个网页的最近三个版本。

{第二节完}

{美人他爹将翻译第三,四节}

九月 23, 2006

OneWebDay
看到报道说,今天,9月22日,是第一个OneWebDay(姑且叫它作“互联网日”)。这个全球性的推广活动的宗旨是“建立,维护,提高和推广一个用以庆祝网上生存的全球节日”。它由纽约Cardozo法学院的副教授Susan Crawford成立,并且得到了包括互联网创始人Tim Berners-Lee爵士,以及Craigslist创始人Craig Newmark等重量级人物的背书。届时会有Second Life虚拟世界的庆祝,也由全球各地真是世界里的庆祝。

OneWebDay的出发点是“讲述在世界各地互联网是怎样改变了我们的生活”。“我们正使互联网呈现在每个人面前,这样我们才不会认为这是理所当然的(而不去重视珍视它)。”

Fred Wilson打了个比喻:“互联网就想我们的行星-地球。它是一个我们需要珍视,尊重,保护,和庆祝的资源。”

建议的OneWebDay活动包括(但不局限于):

  • 在Flickr上贡献一张人们做OneWebDay手势的照片,最后做成幻灯。
  • 教你祖母如何建立自己的博客(很想用奶奶这个可亲一点的词,可是不知什么时候起,这个词一旦跟“你”,“他”在一起就成了不雅之词,这算是互联网的一个悲哀)。
  • 为你的俱乐部,沙龙,教堂,学校等等建立一个网站。
  • 打工仔:教你的老板如何用IM。
  • 医生:为你的病人设立网上的自助预约系统。
  • 我如何在网上找到了工作。
  • 我如何在网上找到志同道合的朋友。
  • 。。。

我觉得似乎还应该加上这些活动(作为另一类的思考):

  • 我如何在网上找到一夜情对象/How did I find one-night-stand online
  • 网游如何使我走上犯罪道路/How did the online game teach me to steal?
  • 我经常光顾的色情网站/My favorate porn sites
  • 我是如何黑掉某某网站的/How did I hack that site
  • 我的信用卡被盗用的故事/Tons of hassles after my credit card number got stolen online
  • 垃圾邮件的艺术/The art of spamming
  • 你封、封、封、封ID,我换、换、换、换马甲/The beauty of anonymity
  • 。。。