善其事

[elisp]用elisp编译解释当前的buffer

运行当前的buffer,就是说编译或解释当前的buferr。比如在编辑的是python文件”hello.py”,那么运行它的命令就是”python hello.py”,一般的python-mode用”C-c C-c”来处理这个问题,在编辑过程中可以调用这个快捷键来运行。当然你也可以使用”M-!”来打开shell command的mini buffer来输入命令。
诚然,很多语言的mode里面实际上都内置了这一功能,但我觉得,一方面不同的mode可能定义不同快捷键,造成了额外的记忆负担,另一方面并不能要求所有的mode都提供这一功能,在mode不完整的情况下你大概也需要自己定义的能力。
要做这事儿,当然是自定义一个函数。那么最直观的想法,就是在elisp里面写一行调用shell来执行命令的代码。是的,有这种东西,示例如下:

(shell-command “python hello.py”)

这一行代码的相当于在终端中执行”python hello.py”。
我们的目的是执行当前buffer,所以下一步要做的是得到当前buffer所对应的文件名。在上一篇blog中介绍过相关方法,就是”buffer-file-name”。
于是代码就变成了这样。

(shell-command (concat “python ” (buffer-file-name)))

用concat把”python “和当前buffer的文件名连起来作为要执行的命令。
至此,就完成了.py文件的执行函数,那推广之,需要对不同的文件进行编译/解释时,就需要扩展这个命令。
我们知道对.sh文件要用bash命令执行,对.py要用python,对.htm要调用firefox。现在要做的就是让机器知道这件事。很明显的,我们需要一个map,把它们对应地存下来。
完整的代码和注释如下:

(defun run-current-file ()
(interactive)
(let (ext-map file-name file-ext prog-name cmd-str
(setq ext-map
‘(
(”py” . “python”)
[...]

[elisp]EmacsLisp 基础

来源:李杀网
李杀网有一枚elisp教程我很喜欢,原因是它不解释太多的名词,而从实际动作方面入手,对我的胃口。
以下是相关的笔记。
运行方式:
作为一个实践的手册,第一件事当然是告诉如果运行一行代码,让你在看指南的过程中可以方便地动手尝试。

eval-last-sexp
输入后把光标移到表达式后面,如“(+ 3 4)”后面,然后输入”Alt+x eval-last-sexp”或者使用快捷键”C-x C-e”,就可以在mini buffer看到这一句的运行结果”7″。
eval-region
解释选中的区域。
ielm
打开一个交互式的elips命令行解释器。

寻找帮助:
可以使用”Alt + x describe-function”(快捷键”C-h f”)来查找一个函数的用法。也可以使用”Alt+x elisp-index-search”在手参考手册中查询。
常用函数
打印

(message “hi”)
(message “her age is:%d” 16) ;%d 数字
(message “her name is: %s” “Vicky”) ;%s 字符串
(message “her min init is: %c” 86) ;%c 字符

注意:你可以在*message* buffer中看到打印出来的结果。
运算函数

(+ 4 5 1 ) ;=10
(- 9 2) ;=7
(* [...]

新人在团队中应该问什么样的问题

最近团队中来一个外包,一起搞一个要得很急的项目,大概是年底发。
新人最近提的问题,让我总是忍不住想扔给他一篇《提问的智慧》,砸砸他的脑袋。
此君动不动就咬死了原来的代码行不通,这倒没什么,问题是在此基础上,他并不会提出自己的办法,而是拼命地问你怎么办怎么办怎么办,要求你给出一个方案来实行。
我觉得这样的问题不如不问,对谁都没有好处。
那么刚到团队的新人应该怎么问问题呢?
我个人觉得,如果团队有文档,那当然最重要的是先RTFM,没文档的团队免不了要问问题,其实我们喜欢新人问问题多过新人把代码弄得一团糟。但要注意的是,新人应该问的是老人能够几十秒之内回答的问题。
比如说,作为新人,不应该直接问为什么调用这个功能是为什么弹出提示说“没有权限”,而应该跟代码跟到相关的数据表,然后问在这种情况下为什么这个数据库表的值不对。
因为,一个团队,加进一个程序员,本质上来说目的只有一个:加快团队开发的效率,而前少项目交付的时间。
新人来问我问题,如果这个问题我知道,很好,我乐意告诉你。这样节省了走弯路的时间,有利于整个团队的效率。如果我不知道,那么这个问题应该打住,请君自己去看代码,而不是要求我帮忙看代码,或者要求我去思考出一个方案由你来执行。
因为不管是让我去帮忙读代码或让我出方案,都是一个时间浪费的问题。一方面,我得停下手头的工作,另一方面,在我帮忙的这段时间,新人实际上是闲着的。
并且,团队招一个新人,并不是为了写代码,而是为了解决问题。我们招一个人来,应该是看中其独立思考解决问题的能力,而不是为了得到一个编写代码的工具。如果只是一个按给定方案来写代码的工具的话,相比于人类,某些二进制代码组成的工具说不定是更好的选择。
而且,这样的问题并不能培养一个人的编码能力,天天从天上掉下来大鱼的话,人是会懒地,他必然学不会渔的能力。

Emacs的orgmode [remember]

Inbox,在GTD的定义里面是收集材料的工具。最好的Inbox工具是纸和笔。而Remember在Orgmode里面算是较好的Inbox工具。它比每次打开org文件来写好非常非常多。它提供的是在emacs启动的情况下,快速的录入工具。如果你的emacs没启动,那用便箋或纸笔会好得多。原因很简单,emacs什么都好,就是启动太龟了。
配置和基本使用
remember.el在emacs23以上版本是自带的,emacs22及以下版本如果发现没有自带,请自行放狗搜。

(setq org-default-notes-file “~/.notes”)

在.emacs中作如上设置,表示你希望将remember产生的note存放在~/.notes中,要我说这可一点也不重要,重要的是下面这一行:

(define-key global-map [f12] ‘org-remember)

快键键。当然,快捷键从来很重要。不过在remember模式中,它显得尤其重要。因为本身remember是随时需要的东西,用完后又应该随时忘掉。所以调用remember应该越不影响当前的思路又好。一个要键入”M-x org-remember”这么多字符才能调出来的remember又有什么用?
我觉得remeber的用法应该是这样的:
现在我想起来晚上海贼王的汉化应该出新的了,接F12调出remember,输入OP,然后“C-c C-c”保存(C-c C-k是取消),remember buffer自动消失,整个emacs又恢复成写这篇blog的界面。
现在的问题是,我一天可能乱七八糟的出现不少想法,每次都按F12来记录是好的,晚上回家一看,~/.noet里面充满了记录,一条一条分门另类地复制了不同的org文件中。我承认这是重要的工作,无可避免。可是有些想法我在记录的时候就知道它应该是todo还是普通的笔记,能不能让它们自动归位呢?
于是我们应该开始介绍:
模版
模版的配置文件如下:

(setq org-remember-templates
‘((”TODO” ?t “* TODO %?\n %x\n %a” “~/doc/org/home.org” “Tasks”)
(”IDEA” ?i “* IDEA %?\n %i\n %a” “~/doc/org/home.org” “Idea”)
))

它的参数是这样的,”TODO”是这个模版的名,”?t”是快捷键,”* TODO %?\n %x\n %a”是整个模版体,然后是该模版要保存的文件,保存后的项目在文件中处于哪个父节点下面(如果没有会自动新建)。
我们以第一个模版为例说一下使用中会发生什么?
当你按下F12(这是我的快捷键)时,会看到buffer被切分成两块,下面出现一个rememeber fuffer。以及一个输入提示,按我们之前的设定,出现两个快捷提示。

这时按下“t”,在remember buffer中,会自动接模版体的格式显示出补好的TODO,第一行是“* TODO”,第二行是%x,%x是你触发remember时kill ring(类似于剪贴板)中的内容。最后一行是%a,一个指向你触发remember的地方的link。
这时如果你按下”C-c C-c”保存,这一条TODO项目将会被送到”~/doc/org/home.org”文件中的”Tasks”条目下面。
模版还有一些好玩的用法,比如说写日记。
关于模版参数的更详细说明,可以在这里找到
参考资料
org手册remember
Remembering to Org and [...]

修复ubuntu系统grub错误的非正常方式

昨日手贱,乱改分区表,结果ubuntu9.10进不去了。
开机黑屏,显示grub rescure: error unknown filesystem.试过google来的方法,无用。
用9.04的安装盘启动live CD(当时手上没有9.10的盘),准备把9.10 /home和其它目录的配置文件拷出一份再重做系统。
结果在安装时发现9.04安装程序提示系统中装有9.10,忽然想起在linux安装时都会重做grub,于是一个2.5G的小分区装了9.04,重启,果然看到开机系统选择中出现了9.10.
选择进入,一切正常。

用Dropbox搭配MoinMoin建立个人的Wiki

什么是MoinMoin
MoinMoin是一个基于python的wiki程序,有一个可利用的特点是不用数据库,所有数据都是文本。
它的desktop版本安装和介绍如下:
http://moinmo.in/DesktopEdition
什么是Dropbox
Dropbox是一个好用的文件备份和共享工具,现在有for win,mac和linux版本。它的用法是在系统中建立一个共享文件夹。你对这个文件夹的所有修改都会被同步到Dropbox提供的网络空间上,这个同 步的过程是自动的,不需要用户插手。现在Dropbox给初级用户的空间是2G。
https://www.dropbox.com/
怎么用?
简单的说,就是利用Dropbox的文件同步功能,将moinmoin的数据文件放到Dropbox共享文件夹中,以实现多台机器上的moinmoin DeskTop共享同一个数据源的目的。
实现起来也很简单,moinmoin的配置文件wikiconfig.py中,直接将data_dir,data_underlay_dir两个参数修改为Dropbox的共享文件夹即可。

这样,当你在一台机器上修改了你的wiki之后,本机的Dropbox共享文件夹先被修改,然后这个修改会被即时同步到Dropbox上,之后其它所有共享了这个文件夹的机器上的相应文件就会同时修改。于是在那台机器上打开wiki,就可以看到最新的修改了。
Dropbox 本身是一个非常好的同步工具。所有跟文件相关的东西都可以同步,比如firefox的profile文件夹,使用这样方法,同样可以实现不同机器上的 firefox配置同步的问题。比如同步书签,当然,firefox有delicious.com和Xmarks可用,但是由于众所周知的原因,它们并不 是什么时候都可以访问的。

[Founders At Work] Yahoo -5

Livingston: 记得你参与过的最大的一场讨论吗?
 
Brady: 相对于look-and-feel总是有很多讨论。试图建立一个品牌,有很多事需要讨论,同样也需要实做,所以这通常是一种平衡动作。跟Filo争论图形的必要要性总是一个很大的争论,我永远不会忘记我们长达八年的辩论。
 
怎么处理成人问题是另一个讨论。非常多的讨论,没有人站出来说他肯定地抱持某一观点。在最初的几年,有很多互联网相关的法律,在我看来,国会对发生的事并没有一个清晰的概念。传统媒介的陈情者影响非常明显,他们有一个特别的议程:保护互联网开发者的最大利益不是必须的.“我们应该说什么?我们应该作何反应?”当然有这些想法。有段时间,我们把我们的网站整个转黑了——黑色的背景,白色的文字——来抗议,我不记得我们抗议的法令是什么了。
 
Livingston:新法律引起了很大的焦虑?
 
Brady: 绝对的。只要这里或哪里的一点点东西——版权,数字版权有一点点轻微改变——我们就会拥有一个完全不同的互联网。
Livingston: 记得其他一些有意思的新转折吗?
Brady: 我记得有那么一年,以色列的首相Rabin被枪击了。在第一时间我们将新闻做在首页上。因为我们觉得让我们的站点变成公共服务——在网上找到事件,传播新闻——在某种程度上是一个大事情。“Rabin被刺”是我们第一次侵入新闻领域,而我们从每个人那里收到的有关使用Yahoo来看新闻的反应都是压倒性的好。
Livingston: 荣耀时刻?
Brady: 盖茨的备忘录是一个很酷的时候——害怕和骄傲并存。上市是一个骄傲的时刻。被加入到NASDAQ 100是一个更骄傲的时刻。
Livingston: 对早期的Yahoo来说,拒绝投资要求是不是一件很难的事?
Brady: 很明显我并没有足够的权利参与这些决定。那始终是Jerry和Dave决定的,我也不知道所有有意投资者的列表。我知道AOL是,LA Tiems也是,我也知道他们得到过微软的非正式意向,没什么具体的。大部份都是在很早期的时候,在他们拿过风投之前。对Jerry和Dave(他们并不在宽裕的环境里长大)来说,去拒绝一大笔不需要公司对此后的发展做出任何承诺的钱是一件大事。他们对自己所做的有很大信心。
Livingston: 早期最有趣的事情是什么?
Brady: 我记得的最有意思的事情是在95年5月有一场巨大的风暴,停了几天电。我们必然去租一个发电机,为它注满柴油以工作4天。7天24小时地全程工作。我们笑道:“今天有多少页面要耗油?”那是一场疯狂的风暴,它开始撕裂我们的房子了。我们有很多会要开,无法停止。我们跟很多先进的合作者一起就着烛光开会。他们走进来,没有光,电线到处都是,指向后面的发电机,雨水从天花板上滴下来。我们试着安慰他们:“噢耶,我们是真正的生意人。” 然后你说:“等等,我去把油箱加满。”所以我总是对那些天保有生动的记忆。
Livingston: 你们有没有耍一些小计谋让你们看起来比实际上更大?
Brady: 对此我没有什么太好的故事要讲,不过我沮楚地记得Jeff Mallett刚来的那一刻。当时我累得像狗一年而他只是刚刚到来。除了其它事情之后,我也试着承包所有的公关事务。尽管我拥有我们专业的公关工具,它们是一个创业公司的公关工具。他刚从Novell来,看了看我,脸上看起来像是:“这活儿只能打C+。”我已经很多天没睡了,看着他都有点摇晃。可是他绝对是对的。“如果我们要变大,我们最好做一些大公司的动作。这些就是我们要给出的?你不能就把这个送出去。”我很清楚得记得这些,这对我来说真是很好的一课 ——“我知道你累,我知道你做得很辛苦,但那不是把这些看起来就像小公司做的东西送出去的借口。”
Jeff来的时候,我已经努力工和8个月了,我真的有一点累,我想他也不能持续。那时候我还不了解他,可他有两倍于常人的精力。我们在纽约的工作每周有两个夜班。 “OK,我们明天要去见MTV。通宵。开会。几天后回来。”我们这样工作了三四个月,我只记得他进门的时候,我想我没有办法工作得更卖力了。但最终我们工作得更卖力,更快速,更聪明。在努力程度和专业程度上都有一个提升。
每时每刻都使我们看起来比实际的更大。“噢耶,我们会在纽约,我们会去哪儿。”我说:“Jeff,所有这些都在我的图板里。”然后他总是回应说:“不,我们会去。”这是一个来自大公司的人,他知道大公司会怎么做,即使身后的公司只是一个创业公司。
Livingston: 有没有想退出的时候?
Brady: 不。有那么几天我很不高兴,但从来没有接近过我想辞职的点。那儿太有意思了。最实的4到5个月之后,你要以看出到来的是什么,你知道你在浪潮的哪一部分;事情只是不断增长。
在最初的几个月有那么几天我觉得:“我离开学校就是为了这个”因为当时我离开学校的时候并不确定我可以毕业——我只是离开了。我有70%的肯定我将会获得学位,可是另外30%都还在风里。我父亲为些付了账,所以要告诉他我没有获得学位,去的公司又倒闭了是一种“很烂的剧本。”
Livingston: 你父亲支持吗?
Brady:非常支持。在大学时他就知道Jerry 了。
Livingston: 你对将要开始创业的人有什么建议?
Brady:其中一部分是“了解你自己”。首先要尽可以地思考你的突破点是什么。我觉得我得的很不错的事情之一是我从来没有花时间去思考退出或者编写失败的成果本,“上帝啊,如果它没有成功会怎么样。”
 
在我加入之前,就知道底线在哪里,如果我要退出,在哪个点退出。所以当然还在里面的时候,它从来没有经过我的脑海。我也知道为什么我会被选中,我的动机是什么,我从来没有花很多时间来思考这些。在最后,它并不会给你任何好处。它是一种原因,不过想比于一天一天地完成工作,是在很抽像的层面上。把这些东西都提前想清楚:我为什么加入,什么时候离开,如果我要离开是为了什么,在早晨是什么促使我起床?我见过很多人因为一时兴起开始某个事业,后来就很苦恼。他们总在做业务时再去想这些事,然后,当然事情进展得不好,你无法理性地对待。这样的事情很多,因为你会变累,工作一堆一堆,而你又投资了,它们真的会使你变得情绪化。所有这些个人动机问题——在开始之前就弄清楚它们。
在我们开始这个公司之前Jerry是我最好的朋友之一,那是他的公司,所以跟朋友做生意……你总是听说:“不要跟朋友做生意,这是坏主意。”所以,有一件真正帮助我的事情是在我加入之前我们有一个交流:“OKlahoma,这里是规则。”这真的让我想道:“OK,如果这个发生了,我就离开。”我们用那个交流来保护我们的友情,虽然当时不知道会发生些什么,可是那个交流令我开始考虑,还知道我为什么被选中。
Livingston: 还有什么是人们应该知道的Yahoo早期故事吗?
Brady: 我知道这有点老套,但是开始综的人是很棒的。在这个词的每一个方面,不仅仅是努力,处理他们被赋于的责任,也是一些很好的人,为正确的理由从事它。你可以从产品和我们开发的形为中看到它。

[Founders At Work] Yahoo -4

Livingston: 那就是你们对待Goggle的办法?
Brady: 对的。策略上来说,在Google出现之前是完全正确的。因为我们始终认为那是一个跳跃游戏。没有人曾经可以在全文搜索引擎上领先那么多,让我们处于战略上的危机,因为那就是没办法做到这一点。最终Google完全做到了。那时候,2000到2001年之前,我们最终使用Open Text,然后是AltaVista,Inktomi。我们只是不断地换到已出现的最好的技术。我们只是用新的,有更好的搜索技术的合作者来替换旧的那个。
Livingston: 这些对用户都是不可见的?
Brady: 是的,那对我们的用户几乎是不可见的。即使他们的牌子在那儿,你来到Yahoo的首面,搜索,搜索结果的左上方是一个Yahoor的牌子和技术提供商的一个小牌子。我们总是把它做得尽可能小。
Livingston: 当你写最初的商业计划书时,有没有想到在得到投资的一年后就上市?
Brady: 没有。Jerry和Dave也没有。他们也许有所期望,但我不知道他们的希望是什么。那个时候你并不知道互联网会变得多大。那多数取决于互联网成长得多快和互联网成长的时候我们服务到什么程度的事实,而少数取决于我们做了些什么。
Livingston: 你记不记得上市背后的基本原则,还是你们的风投要你们上市的?
Brady: 不,它真的不是风投驱动的。有很多不同的理由——而我并不对所有的这些会议都知情。但是,是有很多考虑的。第一,IPO的窗口并不会永远开着。市场冷热交替。如果你要上市,你只能在市场火热的时候去IPO。Netscape为我们点燃了市场。另一个考虑是我们看出让我们变得更有竞争力的方法之一是获得合作者。而做到这一点的最好方法拥有一种除银行里的现金之后的通货——为他们的合作支付股票。所以,为了我们觉得需要的快速成长,我们必须发行股票。那可能是最大的理由。然后,筹钱很明显是我们要做的第三重要的事。
Livingston:斯坦福声称拥有Yahoo是否让你们紧张?它是否运行在他们的服务器上?
Brady: 是的。我从没参与这些讨论。我当然紧张,我还问过这事,Jerry 和 Dave,“没事,它被应付过去了。别担心。”它确实被应付过去了。
斯坦福在这方面非常先进。Yahoo远不是发源在那里的第一个创业公司,也将不是最后一个。它很新,并不是特殊技术;它是一个品牌,而不是真正的发明;它并不是技术的一部分。他们很聪明,知道任何一个抑止它的举动都会扼杀它,所以他们最好的指望就是随它去,希望Jerry和Dave之后取赚到钱回来。他们对结果很乐观,相信我。
Livingston: 斯坦福是不是关心Yahoo会毁掉他们的服务器。
Brady: 是的,那是他们告诉我们要离开的原因。那是强制的。Yahoo变得很大,它开始堵塞斯坦福的网络管道了,所以他们说:“你们这些家伙该离开了。”
Livingston: 我听说你们当时用了Netscape的办公室。
Brady: 是的。Mark Andreessen喜欢Jerry和Dave的作品,他听说斯坦福将我们踢出来了,就为Yahoo提供了30-60天的主机。
Livingston: 商业和工程的混合背景是否对你有帮助?
Brady: 很难讲,因为你不知道另一面是什么样。也许相对于其它事来说,商业教育给了我了解我所知和所不知的信心。我了解我的工作领域,我知道我擅长的事,当我不了解我所做的事的时候,我知道我应该去提问。
Livingston: 有没有什么事你做的比你想象中好?
Brady: 我知道我喜欢做某种类型的事情。跟多数人一样,你喜欢的事情你总会千方百计地做好。我擅长于给事物建模,特别是产品。创新营销,产品营销都是我最终从事的工作,这些我在东西的第一份工作中就完成的很好。
Livingston: 回想一下第一年,在一个创业公司中生活,你是否记得有哪些惊喜?
Brady: 很少有时间去回想。它改变得非常快,所以我从还没有时间停下来思考,“它跟我想象中的它不一样。” 它当然是一个惊奇,因为没有人对互联网的未来有任何想法。
回首过去,我想我还是不能完全理解在时间和情感上对它的付出有哪些使事情顺利开始了。不管事情如何进展,它只是一个要在互联网的大潮中保留位置的任务。非常,非常长的时间。我们组织起来的人非常好,所以工作时间从来不难捱。你会享受工作,即使有时那会花去一天出的16,18小时。那是我回想的时候唯一觉得特别的事。
Livingston: 我想知道是否那是因为它处于泡沫的早期,并不是所有人都捱过了那个时期?
Brady: 真正的原因是它是令人兴奋的。随着互联网越来越大,我们对自己说:“我们处于风暴的中心。”当大事件发生时,大部分人并没有知道他们处于中心的特权。我们处于一切的中心,但是我们知道当它发生的时候,我们将会度过它,带着加在其它的乐趣,和责任。
Livingston: 你记得你们第一年犯了的错误吗?
Brady:没什么大错误。因为任何我们发现自己搞砸的事都被纠正到它能纠正到的程度。这里没有太多的自负,所以大家都会为仅因为一个烂主意是他们的就一力维护。但是有一个当然的合作者我们错过了,我们错过了Hotmail。
我和Jerry与Sabeer Bhatia和Jack Smith一起吃了个晚饭,他们向我们介绍它,而我们——我讨厌承认这一点——说:“我看到了,可我不觉得它有什么前途。”我们在那艘火箭上,他们在谈论的是还没有流行起来的东西。
我们所知的一切就是你在工作中收到email。它们有点像这样的:“不,所有人都不喜欢他们的工作邮件,因为它满屏都是。”普遍的想法是,“在家拨号,任何地方接入”依然是一件相当遥远的事情,我们认为它并不会像它后来显现的那样很快流行起来。明显的,我们并没有付出我们应该付出的努力来追逐它。
我们搞砸了。但是,我们找到了第二号,Rocketmail,让它运营起来,现在Yahoo比Hotmail大。是我们的错,但我们弥补了。
Livingston:你是否记得Yahoo有没有什么大创意是主流公众没有理解的?
Brady: 我们对互联网的核心理解是:它是一个开放的系统,你不能在这里筑一堵墙。我觉得Filo所做的最伟大的工作之一就是使以下的事实发生:当一个人作搜索的时候,他没有在Yahoo找到他正在找的东西,相对于只是说说“它不在这儿”或是“再看看这里的其它东西。”,他放了一个指向我们竞争对手的链接,然后填入查询物权法件,所以你需点击 Excite,就可以在Excite搜索同样的东西。
当然,在商学院他们不会教你去放一个指向竞争对手的链接,但是它向我们的用户传递了正确的信息,那就是:“这全是为了你。我们将给你你想要的数据。如果它存在于互联网,我们将会为你找出来,即使我们无法直接靠它赚钱。” 但是它使得人们总是回到Yahoo,因为他们知道,我们这里有他们脑中最好的互联网。
我想这是一个大创意。它承认了你自己,作为单个公司,无法给每个人所有的东西。我们不是一个像AOL那样的筑墙小花园。我们是连接点,带你到任何你想去的地方是我们的工作。
Livingston: 早期最流行的链接目录是什么?
Brady: “性”可是拥有当时网络上四分之一的内容。不仅是Yahoo,而是整个网络。就像家用录像刚开始的时候一样,互联网在这方面并没有什么不同。
同样也有很多产品信息。人们在开始大宗购买之前先搜集信息——汽车或类似的东西。在头六个月之中的我们做的大事件之一是使路透社上线了。我想CNN也是在那个时候上线的,但成品很糟糕——很慢,充满图片,它们不理解互联网。路透社当时拥有很丰富的新闻,他们没有地方展示,只是卖给人们一些零碎的东西去读,没有人曾完整的看到它们。这在后来被证明是巨大的。
Livingston: 你们怎么处理成人内容?
Brady: 这是一个很难回答的主题,它总是被提起,从未被解决。但我们支持言论自由。这是我们始终在考虑的事:“这是谁的责任?” 人们来我们这儿查找信息,本质上我们并不显示图片。在我们将信息显示出来之前,查出用户的年龄是不是我们的责任?那些内容是否应该在网站上?等等等等。
最终我们移除了所有指向那一类站点的链接,在那之前有大约一年半的时候我们一直努力寻找一种适当和负责的方法来处理这个问题。在那个时候儿童保护法刚好出来,但是我相信在那之前我们就把那些东西拿下来了。

[Founders At Work] Yahoo -3

Livingston: 在那六个月之间发生了什么转折点?
Brady:那个时候Netscape是 IE之前唯一的浏览器。在浏览器的一部份他们放了一个文件夹按钮,通过这个按钮他们免费地让人们链接到我们。Netscape最终发展了互联网——他们赚钱的方式是让每一个人都上网,然后再卖给他们服务。所以任何以吸引人们上网为目的的事情都会帮到他们。他们觉得Yahoo是那里最好的东西,所以给了我们一个链接。这在当时对他们是有意义的,大意义。它将我们的流量带到顶峰。
我们雇用了一个外部的销售公司来帮我们开始做广告。我们将五个包卖给五个大公司,MasterCard 是其中之一。在Koogle到来之前我们就得到了我们最早的广告。
我们贴上了图片,那是一个大事件。也许现在听起来很荒谬,但是那个时候Yahoo完全是文字的。当时连接速度慢到任何站点只要使用了大量图片就会瘫痪的程度。大部分的传统媒体无法理解这些,因为它们看不到人们是通过一个多么慢的猫来拨号。不过我们知道,如果我们想要打出一点品牌,那就必须使用图形。所以我们在放广告的时候,就打开了图片开关。
我们在没有CEO的情况下就雇人并建立了组织。我们有一个Sequoia帮我们找到到的临时管理者——一个CEO和一个CFO。因为我们还没有成功地找到一个CEO,Sequoia坚持让我们雇用那些经理人。这并不是太好,他们并不像我们一样长期为Yahoo工作。在那些临时工作的人和另一些(比如我自己)完全投入的人之间有明显的分别。我为它将我的整个生活从西海岸搬过来,我的未来跟这个联系在一起,然而他们则无此必要。
在我看来,他们即没有帮到我们也没有伤到我们。他们只是帮我们将这船稳定了6月月,直到我们请来了Tim Koogle。
Livingston: 因为它是新行业,说服人们加入Yahoo是不是很难?
Brady: 是的,很难。我们雇用了很多朋友,和朋友的朋友。你总是听人们说“永远不要跟朋友做生意”。但是最初的20个雇员,他们都彼此认识。所以有高层次的信任,每个人都是年轻的。它是很多人的第一份工作,除了临时的经理人之外。所以人们并不担必互联网将走向中何方,他们只是找一些有意思的事情来做,并有资格加入Yahoo。
互联网真正的起步是在95年七月。Netscap流行起来,还催生了一系列的公关反应。互联网不仅仅是酷,而且能令人赚钱。媒体总是围着Jerry和 Dave,于是我们得花很多时间来搞定他们。我们雇了一个临时的公关公司,但他们干得并不太好。我们甚至不需要它,因为媒体总是直接打电话来,Jerry 在应付媒体方面简直是个天生好手,所以事情就很平常地进展着。
然后Tim来了,他一个月之间就雇了Jeff Mallett,而Jeff Mallett的两三个月的时间就建立了他的班子。
Livingston: 你个人的关注点是哪?
Brady: 产品。我为Jeff Mallett工作,他是TimKoogle下来实质的COO。我是Jeff团队的一员,运行产品。在Jeff下面还有业务开发,销售和市场。
Livingston: 你们是否担心过竞争对手的事?
Brady: 有一些事件让我们想到我们将会受到竞争对手的冲击。第一件就是Netscape把浏览器上的文件夹按钮变成搜索按钮,并开始卖那个按钮链接的权利。 Kleiner Perkins投资的的Architext(后来改变叫Excite)有很多斯坦福大学生。他们用风投资金购买了Netscape的搜索按钮。 Netscape同样是Kleiner Perkins投资的。
Livingston: 你们为那个按钮出过价吗?
Brady: 我们在某个价格上出过价,那个价格是我们觉得可以赚回来的。在那个价格点之后,我们知道它已经是“品牌投资了。”我认为我们当时并不觉得那是投资器牌的合适时间。因为那时我们还不知道互联网将会变得多大。虽然媒体已经疯狂了,但相对了其它媒介来说,数理还是很少的。我想Excite为那个按钮付出了5百万。
我们确实对Excite感到焦虑,我们也担心微软。在95年夏天,Bill Gates发出了他关于互联网的著名备忘录。我想那是最初一些中的一个。它说微软要介入这个游戏,他是这样结束那个备忘录的:“我最喜欢的站点:Yahoo。酷,酷,酷。”
我们的第一反应是:”耶,酷,酷,酷。”,然后接下去的想法就是 “噢不。这是否意味着我们在Bill的准星之内,是否意味的我们仅仅是酷?” 任何时候你说起微软,就是他们做生意的方式,他们拥有在任何他们想要的领域搞事的潜力。所以一旦接近他们,他们的心态经常是这样的:“我们可以跟你合作,否则我们自己做。”
我们对他们做的任何动作都很担心。那个时候,我想IE快出来了,它是一个糟糕的努力,他们在浏览器上的努力,但持续了下来,你知道他们会继续发展,他们始终在后面威胁着我们。
还有一堆其它的竞争者:Lycos, WebCrawler。同样,AOL有段时间取得了比互联网更快的增长。每一个人都听说过“互联网”,可是当他们想上网的时候都会注岫AOL,因为它是上网最容易的方式。尽管我们觉得那很疯狂,有那么几个月,AOL的小花园比整个互联网都大,那使我们无计可施。确实是一个大威胁。
Livingston: 你有没有在竞争者的网站上看到这样的地方,让你说:“他们运行了这个功能,我们必须现在就实现它!”
Brady:在最初的时间,并不多。Jerry和Dave在潮流前头。他们早期的那些想法在战略性和创造性方面都是极好的。所以在97年中期,我们所做的每一件事情,都一定是首创并且做得很好。
有一件我们所有的竞争对手都花了大量时间去做而我们不做的事就是搜索。他们爬遍了整个网络来做全文搜索,而我们的策略则是:“看啊,那是一个技术游戏。而我们不是技术公司,我们是媒体公司。因为那有这么多公司,所以当我们需要的时候总是可以租用它。”那就是当时的想法,而在Google出现之前这一策略一直是完美的。 Because, as things playedout, that’s exactly what happened.
我们有一个可搜索的目录。它很大,它拥有所有流行的站点,所以你可以在上面搜任何东西。但是并没有所有东西。如果你真的需要在一个干草跺里寻找一根针,那我们满足不了。但是我们拥有很多这样的人,他们想读一篇文章,然后连上网络想道:“我可以在Yahoo找到任何东西。” 他们来到Yahoo时的期望是他们可以找到任何东西,但是我们并不需要实现草里寻针的需求。
所以我们所做的是,我们先在自己的目录里搜索,然后给你那些结果,然后,如果我们什么也不找到,就将你踢向一个全文搜索。所以,当我说我们“租用”那些技术,我们与全文搜索公司真正的合作是为了减少我们的搜索。

[Founders At Work] Yahoo -2

Livingston: 你是Yahoo的创始人招进去的第一个雇员。你是怎么样被选择的?
Brady: 我在还没从斯坦福毕业时就遇到了Jerry,我们一起学习电子工程。我们住在同一个新生宿舍,并且在后面的时间里一直是好朋友。后来他继续学业(他比我更适合电子工程),而我去了日本为Motorola做工程和市场方面的工作。
斯坦福在东京有个项目,Jerry在那里做了一个季度的研究,并且在东京边上找了一份暑期工。我已在那些呆了一些年,于是我们又联系上了。当我要回去上商学院的时候,他也回去完成他的PhD学业,我们一直有联系。甚至在还没毕业的时候,我们就一直在谈论梦想的工作和我们希望达成的事业。“如果。。。。,那会是多么美好的日子啊。”
于是,在我的商学院二年级的时候,Jerry 给我打了个电话:“我和我的同事创立了这个,它现在开始爆发了,我想让你看一看。”他并不是来寻求建议的,他只是告诉我他在忙些什么。我看了一眼,感到吃惊极了——完整的门户网站。我在AOL工作过,知道一些Internet,但那跟网站无关.它当时真的非常原始。
我只是看看,然后说:“哇,这太酷了。”他说:“嗯,事情与我们一起变得伟大在。” 我说,“伟大?是什么意思?” 他差不多表达了这样的意思:“ 这个事儿做大了,如果它能持续做大,那也许你可以在学习之余为它做些兼差或者其他什么。” 我想,“是的,它看起来很有趣,而且我喜欢小公司,我喜欢跟Jerry一起做事,这听起来不错。” 那是94年的年末。在我完全不知情的情况下,他们已经干了8个月了。
Livingston: 他们就自己在做从事它,在网站上为有趣的事情做素引,对吗?
Brady: 我从Jerry和Dave那听来的故事是他们都在上PhD,所有他们需要引用的技术论文都在网络上,所以他们试用去跟踪它们。他们有了这个大列表,然后电子工程研究学会——不仅是斯坦福,而是所有主要的电子工作学位项目——发现了它,然后给他们发了个email,说:“你们能增加这些吗?”
在他们的业余时间,Jerry和Dave会加入他们感兴趣的类目。Jerry刚刚从日本回来,他对相扑选手十分感兴趣,所以他有一人很大的相扑类别。在网络上所有与电子工程相关的的都在他们的列表里,后来又有了其它有趣的领域。总之,那是很早的时候,当时它是唯一一个那样的东西。有一些小列表,但没有大的,所以人们一直持续发邮件要求他们:“把这个加到列表里面,我朋友告诉我有这个列表,我想要加上这些。”
于是Jerry和Dave就加上去了,他们不断添加类目和其它东西,每天八小时,他们从毕业设计到添加网站,不断工作。凑巧的是,他们的指导老师休候了,所以就没人监督他们的,于是它运行起来。假如他们的老师一直在,那它可能不会发现。他们一天八小时完全用来维护它,也许更多,就这样每天工作了8个月。他们创造了这个巨大的列表,在对的时间和对的地点。所以它开始起飞了。
我第一次跟他们讨论时候就有很多动力。第一次的时候,交流的主旨是这样的:“嘿,也许明年夏天你毕业的时候,你可以来这里,在硅谷找一份朝九晚五的工作,然后在业余时间与我们一起。” 三个月之后后,交流更像是这样:“事情搞大了,快来这里。”他们都不知道他们背后,94年10月和95年1月之间有多少流量——我也记不清楚具体的统计了,但是只是那几个月间,流量增加了十倍。
突然,VC圈发现了他们的事情。其他人——当时每个人都要考虑新媒体——也意识到了那些。所以他们接到很多电话,来自LA Times, AOL和Microsoft,想让他们加入公司。那些谈论都是这样的:“你们不什么不带着项目一起来。我们提供主机,让你们发展它。”这些都让他们开始考虑把他们的项目转成一个生意,而不仅仅只是爱好。当时一个文章在Newsweek发表了——我想那是94年11月或类似的时间。那3到4个月是爱好变成成熟业余的关键时期。
他们考虑了筹钱的问题并做了决定,“我们不想出售自己,让我们自己来经营吧,为什么不呢?” 虽然人们都很乐意投资给他们,他们想,“我们需要带一个商业计划去拜访我们的VC们。即使我们没带它去的话也可以与他们讨论,他们也可能给我们钱,我们如果我们带着商业计划肯定会更好些。” 我说,“很好,因为我为创作商业计划上了很多课。为什么你不给我一些你的想法叱,我会把它们联系起来。” 他们给我发来了他们的东西,我写了一个商业计划,他们带着他拜访了很多VC,最终我把它作为一些课程的期末作品。
95年2月,很幸运的是由于商业计划书他们说:“我们现在就需要你,而不是等到6月份你毕业了才需要你。”我的回复是:“我还在上学,我爸为此付了费。你是否建议我去告诉我爸说我不再为了学位继续了?”于是Jerry说:“我没有告诉你去做任何事,你不是必须要做什么事,但是我们需要你。” 于是我去跟我的一些教授谈了谈,在哈佛,你可以在学习过程中在某些课上不及格——那是一个通过/不及格的等级系统。我还没有不及格过,所以我可以在三门课上不及格,然后技术性地毕业。我有五门课,所以我将我的商业计划书作为其中两门的最终论文,通过了。
那是在95年的三月底,我们四个人:Jerry; Dave;Dave的朋友 Donald Lobo和我。我们充满了热情,但对要做什么就不是那么知道了。
Livingston: 在写你计划书的时候,Internet还是全新的。你记得当时你们的策略是什么吗?
Brady: 当时没人知道Internet是多大的东西,但基本模式就是广告,广告是尽人皆知的,并不是我们创造了广告。HotWired,Wired杂志的在线版本,当时就上线了,他们就在卖广告。所以当是就有这种模式了,当然并没有搜索引擎或目录在卖广告。我只是用了基本的商业计划书格式,结合Jerry和Dave的主意,加入一些我自己的。
Livingston: 所以你很早就离开商学院搬到加利福利亚,你有办公室吗?刚开始你们在做什么?
Brady: 95 任何三月,在圣何塞有一场电子消费展,于是Yahoo在那里有一个展位。那个展览上多数是硬件和软件公司。没有其它的互联网公司了,只有我们。那像是每个人工作的第一天。我们在Jerry和Dave的拖车里做大部分事情——在斯坦福进他们的桌子就在这个临时拖车中,还有一些是在Jerry的公寓做的。那个展会几周后,我们在Mountain View找到了地方搬进去。我们得到了投资,于是有钱去找办公室了。
Livingston: Sequoia 是你们的风投商?
Brady: 是的。
Livingston: 你们拿到了多少钱、
Brady: 百万美元。
Livingston: 那在当时是一大笔钱,特别是对从事这么新的行业的公司.
Brady: 绝对的。两个从未工作过的毕来生,另一个程序员,我,在美国没有存过的的行业,并且没有任何经验。是的,那是一大笔钱。
Livingston: 开始时你们的主要目标是什么?你们是不是要在Internet获得更多的用户?
Brady:我们已经有了足够卖广告的流量。我们知道如果在所有的页面上投放广告,然后接每千次展示20美元计算,我们就可以覆盖我们的成本。很难回忆起来你不费心记住的东西,但我知道它不是我,”让每一个人都上网。”那是属于我们自己的路。不用费心的是:“别让公司倒闲,让它继续经营。” 而做到这些的一部分就是赚钱,所以我们做了很多疯狂的事来加入广告,试着带来利润。我们做图书交易和一大堆其它的小事情,它们最终都没有什么补益。但是在我们寻找合适的管理期间,以赚钱的名义几乎尝试了所有事情。因为我们都知道,我们不适合管理。
“如果事情变得跟我们期望的一样大,我们并不是可以掌控它的人。”——虽然我们很喜欢。所以我们开始找CEO找了六个月。那都是六月的艰难时不我,直到我们找到了Tim Koogle。