Nothing Ever Happened

很想说,却又没有什么话好说

A Dog Called Happiness

乐乐,男,三岁,未婚,无车无房无北京户口。乐乐之所以叫乐乐,是因为它叔叔叫欢欢。

都说狗是人类最好的朋友,这点我不能狗同。起码乐乐最好的朋友是一只来历不明公母不明品种不明的猫。那猫隔三差五来我家串门,每次明目张胆吃完乐乐碗里的饭之后,再明目张胆地到乐乐身边躺下,二人一起晒太阳。乐乐对它的所作所为持我靠谱你随意的态度。当然,更加可能的是全家人都宠它,没饭吃再来甩几下尾巴卖几下萌就好了。所以它乐得卖一些免费的人情。至于这人情有啥用场,它可能也没想明白。我猜想大概是它也有肌肤孤独症吧,盼的就是那猫吃饱喝足后的一个勇抱。

乐乐很乖,只吃放到它碗里的东西。上好的牛肉,哪怕是放在碗边上,它也只是闻闻。哈喇子流一地,也不会越雷池半步。也正因为如此,大家喜欢它喜欢地不得了。我谨慎猜测它看过《满城尽带黄金甲》,听过周润发说“这天下,我给你的才是你的,我不给,你不能抢”。

乐乐卖萌的方式很多,除了经典的大眼扮无辜之外,还有绕脚底画无穷大符号,侧身倒地打滚等等若干。可惜它的毛不是太顺,颜色又不是很纯,所以其实效果不是特别好。我对宠物的态度一向是要求召之即来挥之即去,对这种缠人的玩意儿,若赶上心情不好,一脚就踹过去了。乐乐同学不记仇,踹过了之后过了不到半分钟又摇头晃脑甩着尾巴过来了。对这种无赖,真是一点办法都没有。近几年家里条件不错,它吃的据说比我吃的还好。所以肥头大耳,看起来倒是带几分萌样,仔细看还有点像郝邵文。所以真是一点气都生不起来。

与城里的狗不同,乐乐不需要人遛。但它也是狗,也需要释放掉过剩的精力。于是它每天都自己跑到海边去,像哪吒一样冲着大海叫几声,再跑回来。它跑起来倒也不显臃肿,风一吹毛向后飘着,像给海飞丝拍广告。我有一天陪它去跑步,在它旁边看着毛飘来飘去,不知道怎么就哼起来”让青春吹动了你的长发让它牵引你的梦”。到了海边,我特别想坐在那里,然后让乐乐坐在我身边,从背后看来就是文艺青年和他的狗,夕阳西下,怎么看怎么有意境。可它无论如何安定不下来。我一坐下,它就扑,扑上来就亲就蹭,弄得我东倒西歪。于是变成了二逼青年和他二逼的狗。

乐乐是一条高尚的狗,一条纯粹的狗,一条有道德的狗,一条脱离了低级趣味的狗。一条有益于人民的狗。

又是一年

不知不觉,回国已一月有余。刚到北京那些天,心里非常紧张,一直处于“明天就要走了”的状态。做事情雷厉风行绝不拖沓。当然,所谓的事情,也不过是吃吃喝喝。好不容易这种情绪平复了下来——租了房子,养了猫子,稍微放了几个鸽子。终于接受了今后的若干年都要在这个城市里度过的事实。不好说是怎样的心情。不知道是《家》《春》《秋》还是《呐喊》《彷徨》《故事新编》。

兔年扑朔迷离地就过去了,印象非常不深刻。去年2月13日上的飞机,2月14日到了阿德莱德。之后就开始了一整年的毫不间断的三点一线生活。中午起床,洗澡穿衣打扮,抽烟,走路10分钟到学校,工作工作工作,凌晨12点走路10分钟回家,买麦当劳或者肯德基,吃一天的唯一一顿饭,工作,抽烟,工作,抽烟,工作工作,抽烟,上床,翻来覆去,看big bang,翻来覆去,看shameless,翻来覆去,早上七点终于睡着。周而复始,始而复周。其间去一次台湾,算是度假,但耻于独自一人,没情绪没兴致。我对一个人旅行是深恶痛绝。去年12月初交了论文但又不能走天天无所事事那段时间,很想去Fiji。计划做了数次,酒店机票最优化组合。结果最后还是想,自己去能有什么意思。于是cancel掉,换成天天在办公室写代码。

那段时间,晚上是最痛苦的时候。想睡睡不着,就想过去的事情。想我喜欢的姑娘。想自己做过的事,痛未定而思痛。心里的事情,不能对任何人讲。当然,事实上不光是这些事情。过去一年说过的话不超过100句。如果不是神神叨叨天天自己跟自己聊天,早就变成了哑巴。这个状态,若没有亲身经历过,是不会体会得到其痛苦的。在这个状态下,我一度以为,自己对所有事情都已经失去了兴趣。还好及时毕业回国。

无数的故事里写重逢。但我相信没有一个故事的重逢是发生在苏宁电器加湿器柜台的。送加湿器回家的路上,我发现自己恢复了死皮赖脸臭不要脸的妙语连珠状态。又惊又喜。其后的几天,明白了为什么自己在过去一年里没对任何人动过心。动力火车说,除了爱你还能爱谁。不知名诗人说,因为你,我不再爱了。大抵就是这么个意思吧。

龙年要去柏林,慕尼黑,汉堡,阿德莱德,佩斯,悉尼,墨尔本,大堡礁,黄金海岸。很高兴有人陪我一起,不用旅途中还要天天写代码了。

Just Hope That He Is Lucky

订好了十二月回北京的机票,再过一个月,这三年半的国外生活就告结束。在这个人人都想着办法出来的年代放弃在国外都算是高薪的工作回去,有人说是秀逗有人说是勇气,仿佛这是一个影响一生的决定。所以我要么是愚蠢地要么是勇敢地犯了错。总之,大家看来,这是错的。即便是K总,也说,理智上我觉得你应该留在澳洲,虽然感情上你回来我会很高兴。

四年之前我决定出国的时候,大概是为了一个不重要的小事。其实仔细回想,自己所做过的很多决定,都是漫不经心,随心所欲。以至于后来出了问题,J总安慰我的时候最常用的一句话就是“You followed your heart”。现在我再来想这些事情,也会问,为什么这么一件大事,你就那么不计后果不假思索地做了呢?我开始变得理智起来,对于这些问题,只好抱一种“谁知道,就那么发生了”的态度。可对于毕业之后的打算,理智的我还是选择了大家看起来并不是很理智的一条路。

伍迪艾伦的电影《Match Point》是我最喜欢的电影之一。故事情节略过不表。开头是男主角的独白,也可以说是整个电影的中心。他说“那个说I’d be rather lucky than good的人看得太透彻了。人们总是不敢承认他们生活中多大的一部分是依赖于运气的。想到生命里有那么多的东西不是你能控制的,就会让人不寒而栗。就像网球比赛时常有发生的触网的情况,在那个瞬间,球可能往前,也可能往后。运气好的话,球会往前,你就赢了,而运气不好,你就输了”。

四年前做决定出国的时候,并没有想到中间会发生那么多的事情。而发生的这些事情,虽然当时是折磨,然而每个事情产生的影响都很大,大到可以说改变了自己某些基本观念的程度。所以在我看来,那都是好事。这些,是四年前的我绝对想不到的,而且,更重要的是,四年前的我如果是理智地选择不辞职不出国,坚守着那点工资过无聊的生活,那这些改变可能永远都不会发生。在做决定的瞬间,是好或者是坏,是对或者是错,都没有任何意义。真正的意义在于是不是end up well, 是不是lucky enough。从这个角度,I am lucky enough to end up pretty damn well。而知道我故事的同学,相信或多或少也应该同意我这三年半并非是除了结果之外一无所得:基本游遍澳洲,走了小半个中国,甚至都去了台湾;认识了更多的朋友–比如青春可爱的阳光美少女。

所以我又做了一个”follow my heart”的选择,让那个在头顶上掷色子的人来决定是对还是错。

电影的结尾,杀了人脱了罪得了大胖小子的男主角站在泰晤士河畔的大房子里,身后他老婆的哥哥举着酒杯说,”You know what? I don’t care whether he is great. I just hope that he’s lucky.” 与君共勉。

Octopressed

刚用了大概俩小时把blog从wordpress迁移到了octopress。从此再也不依赖dreamhost这个杀千刀的主机供应商。

octopress是一个用Jekyll来生成静态页面的部落格系统。好处多多,列举若干如下:

  • 不需要用一套完整的LAMP就可以用:再也不用配数据库了。
  • 可以搭在heroku或者github上面。这真是要多爽有多爽。二者都有免费帐户,支持custom domain name,支持git。heroku上还有若干好用的addons,虽然大多都收费,但是其免费版本对于部落格来说绰绰有余了。
  • HTML5, mobile friendly。随机送一套很好的主题,当然我还是给改成原来部落格那样的了。
  • 自己折腾起来非常方便。装个POW, 本地调试几乎是labor free的(不过还是要自己rake generate…我基本上是用rake preview+rake watch来调试)。对我来说,折腾这个比折腾wordpress不知道方便了多少。

当然,事情都有两面。不好的地方呢:

  • 必须得会点编程。最最起码,哪怕你有个计算机系的凯子,也得自己git push,所以不是girl friendly。
  • 得用markdown,相信大部分少女是不会来学习这堪称史上最简单的格式化语言的。

你们这些女人,不动脑筋,不爱学习,迟早会被社会抛弃,过两年只能在家生孩子。 – K. Yang

正如作者所说,这玩意儿是a blog framework for hackers。对hacker们的福音是,你装octopress以后,要是有人来让你帮忙搞wordpress,你就说”wordpress?不会,没用过”。要是她非要你也给她装个octopress,你就说“会markdown么?会git么?不会?不会装个屁octopress。”。最后条条大路都给她们指向新浪博客。你看,省多少事情。

废话不多说,简单说说咋从wordpress迁移过来。以下是基于heroku的,github也可以,请自己琢磨。 客户端操作部分是*nix的,win用户请继续用新浪博客。

heroku

  1. http://heroku.com申请一个免费帐户
  2. 按照这里一步步来: http://devcenter.heroku.com/articles/quickstart, 到第二步就可以了。
  3. 可以把自己的域名指过来,要装custom_domains:basic。这一步需要验证信用卡。不用自己的域名也行,但起码改个正常的好记的。关于custom domain详细请见这里

octopress

  1. 按照这里一步步来: http://octopress.org/docs/setup/,到最后一步就可以了。

wordpress->octopress

  1. 到你的wordpress admin界面,export一下。请看这里
  2. 下载下面这个脚本(从网上看到的一个脚本改的,原来那个不支持中文而且太老,不支持octopress 2.0),Jekyll本身是有一个converter的,不过太复杂了。还是这种傻瓜式的比较好用。
    converter.rb (convert.rb) download
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    
    require 'fileutils'
    require 'date'
    require 'yaml'
    require 'rexml/document'
    require "stringex"
    include REXML
    
    
    doc = Document.new File.new(ARGV[0])
    
    FileUtils.mkdir_p "posts"
    
    doc.elements.each("rss/channel/item[wp:status = 'publish' and wp:post_type = 'post']") do |e|
      post = e.elements
      slug = post['title'].text.to_url
      date = DateTime.parse(post['wp:post_date'].text)
      name = "%02d-%02d-%02d-%s.markdown" % [date.year, date.month, date.day, slug]
    
      content = post['content:encoded'].text
    
      content = content.gsub(/<code>(.?)<\/code>/, '\1')
    
      content = content.gsub(/<pre lang="(["])">(.?)<\/pre>/m<span class=”p”>, '')
    
      (1..3).each do |i|
        content = content.gsub(/<h#{i}>([<]*)<\/h<span class=”si”>#{i}>/, ('#'i) + ' \1')
      end
    
      puts "Converting: #{name}"
    
      data = {
        'layout' => 'post',
        'title' => post['title'].text,
        'excerpt' => post['excerpt:encoded'].text,
        'wordpress_id' => post['wp:post_id'].text,
        'wordpress_url' => post['guid'].text
        }.delete_if { |k,v| v.nil? || v == ''}.to_yaml
    
        File.open("posts/#{name}", "w") do |f|
          f.puts data
          f.puts "—"
          f.puts content
        end
    
      end
    
  3. 到convert.rb所在目录
1
2
$ ruby convert.rb <wordpress export file> 
$ cp _posts/* <octopress home>/source/_posts/

好了,现在就可以开始闯作了。至于怎么搞评论啊,RSS啊,请自己琢磨。再次推荐heroku,小气且懒惰的程序员的福音。

台北纪行 5

这次在台北呆了五天,总得来说还算喜欢这个城市,但跟我的期待还是有点差距。或许是自己的要求提高了吧。国内的城市里面,若让我挑一个定居,大概是非杭州莫属了。北京太脏,上海太外,厦门倒是不错,只是节奏太慢。只有杭州,可以说是集各地优点于一身而少有不足。只是吃的东西稍微不合我的口味,太淡太甜。

在机场看到了方文山写的歌词刻在墙上——场歌。真的很雷。这个人虽说写得还行,不过至于好到这个地步嘛!由此我觉得台湾的文化还是消费文化,没什么根底。而香港可能并不一样,起码没见林夕写的场歌。桃园机场很紧凑,但是大牌一个都不缺,我在Hermes和Prada逗留了一会儿然后就跑去吸烟室了。那吸烟室在室外——当时气温大概有40度,于是这成为我最不爽的一次抽烟经历。北京机场T2的吸烟室我很喜欢,因为它带点烟器。运气好的是每次飞都会被分到离那里不远的登机口。不过据说已经取消了。保护环境什么不是坏事,不过取消掉机场吸烟室是完全的歧视。吸烟本身是一种疾病,这不明摆着欺负老幼病残么。在这点上不得不再赞一次仁川机场,不超过20米就有一个吸烟室。

买了若干特产,凤梨酥什么的。不过惨剧的是我自己一个都没吃着。

然后就飞了,12小时后到达阿德莱德。出机场的时候阳光明媚。我觉得我还是很喜欢这个地方的。